@nlabs/metropolisjs 0.3.4 → 0.3.5

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 (117) hide show
  1. package/.github/copilot-instructions.md +55 -167
  2. package/AGENTS.md +52 -10
  3. package/README.md +52 -2
  4. package/docs/ACTIONS.md +84 -22
  5. package/docs/assets/metropolisjs-logo.png +0 -0
  6. package/examples/factory-pattern-usage.ts +15 -10
  7. package/lex.config.mjs +5 -8
  8. package/lib/actions/appActions/appActions.d.ts.map +1 -1
  9. package/lib/actions/appActions/appActions.js +77 -6
  10. package/lib/actions/crmActions/crmActions.d.ts +87 -0
  11. package/lib/actions/crmActions/crmActions.d.ts.map +1 -0
  12. package/lib/actions/crmActions/crmActions.js +338 -0
  13. package/lib/actions/index.d.ts +2 -0
  14. package/lib/actions/index.d.ts.map +1 -1
  15. package/lib/actions/index.js +3 -1
  16. package/lib/actions/restActions/restActions.d.ts +19 -0
  17. package/lib/actions/restActions/restActions.d.ts.map +1 -0
  18. package/lib/actions/restActions/restActions.js +40 -0
  19. package/lib/actions/userActions/userActions.d.ts +12 -0
  20. package/lib/actions/userActions/userActions.d.ts.map +1 -1
  21. package/lib/actions/userActions/userActions.js +20 -4
  22. package/lib/adapters/appAdapter/appAdapter.d.ts +2 -2
  23. package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -1
  24. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +2 -2
  25. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -1
  26. package/lib/adapters/contentAdapter/contentAdapter.d.ts +2 -2
  27. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -1
  28. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +2 -2
  29. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -1
  30. package/lib/adapters/eventAdapter/eventAdapter.d.ts +2 -2
  31. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -1
  32. package/lib/adapters/fileAdapter/fileAdapter.d.ts +2 -2
  33. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -1
  34. package/lib/adapters/groupAdapter/groupAdapter.d.ts +2 -2
  35. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -1
  36. package/lib/adapters/imageAdapter/imageAdapter.d.ts +2 -2
  37. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -1
  38. package/lib/adapters/locationAdapter/locationAdapter.d.ts +2 -2
  39. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -1
  40. package/lib/adapters/messageAdapter/messageAdapter.d.ts +2 -2
  41. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -1
  42. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +2 -2
  43. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -1
  44. package/lib/adapters/personaAdapter/personaAdapter.d.ts +2 -2
  45. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -1
  46. package/lib/adapters/postAdapter/postAdapter.d.ts +2 -2
  47. package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -1
  48. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +2 -2
  49. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -1
  50. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +2 -2
  51. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -1
  52. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +2 -2
  53. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -1
  54. package/lib/adapters/tagAdapter/tagAdapter.d.ts +2 -2
  55. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -1
  56. package/lib/adapters/translationAdapter/translationAdapter.d.ts +2 -2
  57. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -1
  58. package/lib/adapters/userAdapter/userAdapter.d.ts +2 -2
  59. package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -1
  60. package/lib/adapters/videoAdapter/videoAdapter.d.ts +2 -2
  61. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -1
  62. package/lib/config/index.d.ts +1 -0
  63. package/lib/config/index.d.ts.map +1 -1
  64. package/lib/config/index.js +1 -1
  65. package/lib/constants/Collections.d.ts +16 -0
  66. package/lib/constants/Collections.d.ts.map +1 -1
  67. package/lib/constants/Collections.js +17 -1
  68. package/lib/index.d.ts +4 -2
  69. package/lib/index.d.ts.map +1 -1
  70. package/lib/index.js +5 -3
  71. package/lib/stores/appStore.d.ts +10 -0
  72. package/lib/stores/appStore.d.ts.map +1 -1
  73. package/lib/stores/appStore.js +12 -2
  74. package/lib/tests/actionTestScenarios.d.ts +20 -0
  75. package/lib/tests/actionTestScenarios.d.ts.map +1 -0
  76. package/lib/tests/actionTestScenarios.js +851 -0
  77. package/lib/tests/testGraphQLServer.d.ts.map +1 -0
  78. package/lib/tests/testGraphQLServer.js +197 -0
  79. package/lib/tests/testGraphQLServerSimple.d.ts.map +1 -0
  80. package/lib/tests/testGraphQLServerSimple.js +52 -0
  81. package/lib/types/crm.types.d.ts +100 -0
  82. package/lib/types/crm.types.d.ts.map +1 -0
  83. package/lib/types/crm.types.js +6 -0
  84. package/lib/types/index.d.ts +1 -0
  85. package/lib/types/index.d.ts.map +1 -1
  86. package/lib/types/index.js +2 -1
  87. package/lib/utils/actionFactory.d.ts +6 -4
  88. package/lib/utils/actionFactory.d.ts.map +1 -1
  89. package/lib/utils/actionFactory.js +9 -1
  90. package/lib/utils/api.d.ts +14 -2
  91. package/lib/utils/api.d.ts.map +1 -1
  92. package/lib/utils/api.js +114 -32
  93. package/lib/utils/baseActionFactory.d.ts +2 -2
  94. package/lib/utils/dateUtils.d.ts +1 -1
  95. package/lib/utils/dateUtils.d.ts.map +1 -1
  96. package/lib/utils/index.d.ts +2 -2
  97. package/lib/utils/index.d.ts.map +1 -1
  98. package/lib/utils/index.js +3 -3
  99. package/lib/utils/location.d.ts +1 -1
  100. package/lib/utils/location.d.ts.map +1 -1
  101. package/lib/utils/requestCache.d.ts +1 -1
  102. package/lib/utils/requestCache.d.ts.map +1 -1
  103. package/lib/utils/useMetropolis.d.ts +2 -0
  104. package/lib/utils/useMetropolis.d.ts.map +1 -1
  105. package/lib/utils/useMetropolis.js +19 -1
  106. package/lib/utils/validatorFactory.d.ts +1 -1
  107. package/lib/utils/validatorFactory.d.ts.map +1 -1
  108. package/package.json +9 -9
  109. package/tsconfig.lint.json +2 -2
  110. package/tsconfig.test.json +3 -2
  111. package/jest.config.mjs +0 -28
  112. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +0 -1
  113. package/lib/__tests__/e2e/helpers/testGraphQLServer.js +0 -197
  114. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +0 -1
  115. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +0 -52
  116. /package/lib/{__tests__/e2e/helpers → tests}/testGraphQLServer.d.ts +0 -0
  117. /package/lib/{__tests__/e2e/helpers → tests}/testGraphQLServerSimple.d.ts +0 -0
@@ -4,7 +4,12 @@ export interface ApiOptions {
4
4
  readonly onSuccess?: (data: any) => Promise<FluxAction>;
5
5
  readonly variables?: Record<string, unknown>;
6
6
  }
7
- export type ReaktorDbCollection = 'apps' | 'connections' | 'contents' | 'conversations' | 'events' | 'files' | 'groups' | 'images' | 'locations' | 'messages' | 'notifications' | 'payments' | 'permissions' | 'posts' | 'personas' | 'reactions' | 'subscriptions' | 'tags' | 'translations' | 'users' | 'videos';
7
+ export type RestMethod = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT' | (string & {});
8
+ export interface RestApiOptions extends HunterOptionsType {
9
+ readonly authenticate?: boolean;
10
+ readonly onSuccess?: (data: any) => any;
11
+ }
12
+ export type ReaktorDbCollection = 'apps' | 'connections' | 'contents' | 'conversations' | 'crm' | 'events' | 'files' | 'groups' | 'images' | 'locations' | 'messages' | 'notifications' | 'payments' | 'permissions' | 'posts' | 'personas' | 'reactions' | 'subscriptions' | 'tags' | 'translations' | 'users' | 'videos';
8
13
  export interface ApiQueryVariableType {
9
14
  readonly type: string;
10
15
  readonly value: unknown;
@@ -16,7 +21,12 @@ export interface ApiResultsType {
16
21
  readonly [key: string]: unknown;
17
22
  }
18
23
  export interface RetryType {
19
- readonly query: HunterQueryType | HunterQueryType[];
24
+ readonly query?: HunterQueryType | HunterQueryType[];
25
+ readonly request?: {
26
+ readonly method: string;
27
+ readonly params?: unknown;
28
+ readonly url: string;
29
+ };
20
30
  readonly responseMethod: (results: ApiResultsType) => void;
21
31
  }
22
32
  export interface SessionType {
@@ -27,6 +37,8 @@ export interface SessionType {
27
37
  readonly username?: string;
28
38
  }
29
39
  export declare const getGraphql: (flux: FluxFramework, url: string, authenticate: boolean, query: HunterQueryType | HunterQueryType[], options: ApiOptions) => Promise<ApiResultsType>;
40
+ export declare const resolveRestEndpoint: (flux: FluxFramework, endpoint: string) => string;
41
+ export declare const restRequest: <T = ApiResultsType>(flux: FluxFramework, endpoint: string, method?: RestMethod, params?: unknown, options?: RestApiOptions) => Promise<T>;
30
42
  export declare const createQuery: (name: string, dataType: ReaktorDbCollection, variables?: ApiQueryVariables, returnProperties?: string[], type?: string) => {
31
43
  query: string;
32
44
  variables: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
package/lib/utils/api.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ApiError, graphqlQuery, post } from '@nlabs/rip-hunter';
1
+ import { ApiError, ajax, del, get, graphqlQuery, post, put } from '@nlabs/rip-hunter';
2
2
  import { camelCase, isEmpty, upperFirst } from '@nlabs/utils';
3
3
  import { APP_CONSTANTS } from '../stores/appStore.js';
4
4
  import { USER_CONSTANTS } from '../stores/userStore.js';
@@ -15,6 +15,39 @@ const clearInvalidSessionState = async (flux)=>{
15
15
  type: USER_CONSTANTS.SIGN_OUT_SUCCESS
16
16
  });
17
17
  };
18
+ const resolveAuthToken = async (flux)=>{
19
+ const stateSession = flux.getState('user.session') || {};
20
+ const hydratedSession = stateSession.token ? stateSession : await hydrateSessionFromStorage(flux);
21
+ const { expires: authExpires = 0, issued: authIssued = 0, token: hydratedToken } = hydratedSession || {};
22
+ let token = hydratedToken || stateSession.token;
23
+ if (!token) {
24
+ throw new ApiError([
25
+ 'invalid_session'
26
+ ], 'invalid_session');
27
+ }
28
+ const tokenExpiresAt = parseJwtExpiryMs(token);
29
+ if (tokenExpiresAt > 0 && Date.now() >= tokenExpiresAt) {
30
+ throw new ApiError([
31
+ 'expired_session'
32
+ ], 'expired_session');
33
+ }
34
+ const config = getConfigFromFlux(flux);
35
+ const minutesUntilExpiry = getMinutesUntil(Number(authExpires || 0));
36
+ const sessionLifetimeMinutes = Math.round((authExpires - authIssued) / (1000 * 60));
37
+ const refreshWindowMinutes = getRefreshWindowMinutes(sessionLifetimeMinutes || DEFAULT_SESSION_MAX_MINUTES, config.app?.session || {});
38
+ const refreshExpiresMinutes = Math.max(1, Number(config.app?.session?.maxMinutes || sessionLifetimeMinutes || DEFAULT_SESSION_MAX_MINUTES));
39
+ if (minutesUntilExpiry > 0 && minutesUntilExpiry <= refreshWindowMinutes) {
40
+ const { session: updatedSession = {} } = await refreshSession(flux, token, refreshExpiresMinutes) || {};
41
+ const { token: newToken } = updatedSession || {};
42
+ if (!newToken) {
43
+ throw new ApiError([
44
+ 'invalid_session'
45
+ ], 'invalid_session');
46
+ }
47
+ token = newToken;
48
+ }
49
+ return token;
50
+ };
18
51
  export const getGraphql = async (flux, url, authenticate, query, options)=>{
19
52
  try {
20
53
  const { onSuccess } = options;
@@ -29,38 +62,9 @@ export const getGraphql = async (flux, url, authenticate, query, options)=>{
29
62
  type: APP_CONSTANTS.API_NETWORK_ERROR
30
63
  });
31
64
  }
32
- const stateSession = flux.getState('user.session') || {};
33
65
  let token;
34
66
  if (authenticate) {
35
- const hydratedSession = stateSession.token ? stateSession : await hydrateSessionFromStorage(flux);
36
- const { expires: authExpires = 0, issued: authIssued = 0, token: hydratedToken } = hydratedSession || {};
37
- token = hydratedToken || stateSession.token;
38
- if (!token) {
39
- throw new ApiError([
40
- 'invalid_session'
41
- ], 'invalid_session');
42
- }
43
- const tokenExpiresAt = parseJwtExpiryMs(token);
44
- if (tokenExpiresAt > 0 && Date.now() >= tokenExpiresAt) {
45
- throw new ApiError([
46
- 'expired_session'
47
- ], 'expired_session');
48
- }
49
- const config = getConfigFromFlux(flux);
50
- const minutesUntilExpiry = getMinutesUntil(Number(authExpires || 0));
51
- const sessionLifetimeMinutes = Math.round((authExpires - authIssued) / (1000 * 60));
52
- const refreshWindowMinutes = getRefreshWindowMinutes(sessionLifetimeMinutes || DEFAULT_SESSION_MAX_MINUTES, config.app?.session || {});
53
- const refreshExpiresMinutes = Math.max(1, Number(config.app?.session?.maxMinutes || sessionLifetimeMinutes || DEFAULT_SESSION_MAX_MINUTES));
54
- if (minutesUntilExpiry > 0 && minutesUntilExpiry <= refreshWindowMinutes) {
55
- const { session: updatedSession = {} } = await refreshSession(flux, token, refreshExpiresMinutes) || {};
56
- const { token: newToken } = updatedSession || {};
57
- if (!newToken) {
58
- throw new ApiError([
59
- 'invalid_session'
60
- ], 'invalid_session');
61
- }
62
- token = newToken;
63
- }
67
+ token = await resolveAuthToken(flux);
64
68
  }
65
69
  return graphqlQuery(url, query, {
66
70
  token: token || ''
@@ -93,6 +97,84 @@ export const getGraphql = async (flux, url, authenticate, query, options)=>{
93
97
  throw error;
94
98
  }
95
99
  };
100
+ export const resolveRestEndpoint = (flux, endpoint)=>{
101
+ const targetEndpoint = String(endpoint || '').trim();
102
+ if (isEmpty(targetEndpoint)) {
103
+ throw new ApiError([
104
+ 'invalid_url'
105
+ ], 'rest_endpoint_required');
106
+ }
107
+ if (/^https?:\/\//i.test(targetEndpoint)) {
108
+ return targetEndpoint;
109
+ }
110
+ const config = getConfigFromFlux(flux);
111
+ const configuredEndpoint = config.app?.api?.endpoints?.[targetEndpoint] || '';
112
+ if (isEmpty(configuredEndpoint)) {
113
+ throw new ApiError([
114
+ 'invalid_url'
115
+ ], `rest_endpoint_not_configured:${targetEndpoint}`);
116
+ }
117
+ return configuredEndpoint;
118
+ };
119
+ export const restRequest = async (flux, endpoint, method = 'GET', params, options = {})=>{
120
+ const { authenticate = false, onSuccess, ...hunterOptions } = options;
121
+ const url = resolveRestEndpoint(flux, endpoint);
122
+ const requestMethod = String(method || 'GET').toUpperCase();
123
+ const retry = {
124
+ request: {
125
+ method: requestMethod,
126
+ params,
127
+ url
128
+ },
129
+ responseMethod: onSuccess || (()=>{})
130
+ };
131
+ try {
132
+ const networkType = flux.getState('app.networkType');
133
+ if (networkType === 'none') {
134
+ return flux.dispatch({
135
+ retry,
136
+ type: APP_CONSTANTS.API_NETWORK_ERROR
137
+ });
138
+ }
139
+ const token = authenticate ? await resolveAuthToken(flux) : hunterOptions.token;
140
+ const requestOptions = {
141
+ ...hunterOptions,
142
+ ...token ? {
143
+ token
144
+ } : {}
145
+ };
146
+ let data;
147
+ switch(requestMethod){
148
+ case 'DELETE':
149
+ data = await del(url, params, requestOptions);
150
+ break;
151
+ case 'GET':
152
+ data = await get(url, params, requestOptions);
153
+ break;
154
+ case 'POST':
155
+ data = await post(url, params, requestOptions);
156
+ break;
157
+ case 'PUT':
158
+ data = await put(url, params, requestOptions);
159
+ break;
160
+ default:
161
+ data = await ajax(url, requestMethod, params, requestOptions);
162
+ break;
163
+ }
164
+ await flux.dispatch({
165
+ type: APP_CONSTANTS.API_NETWORK_SUCCESS
166
+ });
167
+ return onSuccess ? onSuccess(data) : data;
168
+ } catch (error) {
169
+ const errors = error instanceof ApiError ? error.errors : [];
170
+ const message = error instanceof Error ? error.message : '';
171
+ if (errors.includes('invalid_session') || errors.includes('expired_session') || message === 'invalid_session' || message === 'expired_session') {
172
+ await clearInvalidSessionState(flux);
173
+ return {};
174
+ }
175
+ throw error;
176
+ }
177
+ };
96
178
  export const createQuery = (name, dataType, variables = {}, returnProperties = [], type = 'query')=>{
97
179
  const queryVariables = {
98
180
  ...variables || {}
@@ -250,4 +332,4 @@ export const refreshSession = async (flux, token, expires)=>{
250
332
  }
251
333
  };
252
334
 
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGdyYXBocWxRdWVyeSwgcG9zdH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVha3RvckRiQ29sbGVjdGlvbiA9XG4gICdhcHBzJyB8XG4gICdjb25uZWN0aW9ucycgfFxuICAnY29udGVudHMnIHxcbiAgJ2NvbnZlcnNhdGlvbnMnIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdzdWJzY3JpcHRpb25zJyB8XG4gICd0YWdzJyB8XG4gICd0cmFuc2xhdGlvbnMnIHxcbiAgJ3VzZXJzJyB8XG4gICd2aWRlb3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlRdWVyeVZhcmlhYmxlcyB7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEFwaVF1ZXJ5VmFyaWFibGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3VsdHNUeXBlIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXRyeVR5cGUge1xuICByZWFkb25seSBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlc3BvbnNlTWV0aG9kOiAocmVzdWx0czogQXBpUmVzdWx0c1R5cGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblR5cGUge1xuICByZWFkb25seSBleHBpcmVzPzogbnVtYmVyO1xuICByZWFkb25seSBpc3N1ZWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMgPSA1O1xuY29uc3QgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTID0gMTU7XG5cbmNvbnN0IGdldE1pbnV0ZXNVbnRpbCA9IChleHBpcmVzQXQ6IG51bWJlcik6IG51bWJlciA9PlxuICBNYXRoLnJvdW5kKChleHBpcmVzQXQgLSBEYXRlLm5vdygpKSAvICgxMDAwICogNjApKTtcblxuY29uc3QgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgY2xlYXJQZXJzaXN0ZWRTZXNzaW9uKGZsdXgpO1xuICBhd2FpdCBmbHV4LmNsZWFyQXBwRGF0YSgpO1xuICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtzZXNzaW9uOiB7fSwgdHlwZTogVVNFUl9DT05TVEFOVFMuU0lHTl9PVVRfU1VDQ0VTU30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyYXBocWwgPSBhc3luYyAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIHVybDogc3RyaW5nLFxuICBhdXRoZW50aWNhdGU6IGJvb2xlYW4sXG4gIHF1ZXJ5OiBIdW50ZXJRdWVyeVR5cGUgfCBIdW50ZXJRdWVyeVR5cGVbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9uc1xuKTogUHJvbWlzZTxBcGlSZXN1bHRzVHlwZT4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHtvblN1Y2Nlc3N9ID0gb3B0aW9ucztcbiAgICBjb25zdCByZXRyeTogUmV0cnlUeXBlID0ge3F1ZXJ5LCByZXNwb25zZU1ldGhvZDogb25TdWNjZXNzIHx8ICgoKSA9PiB7fSl9O1xuICAgIGNvbnN0IG5ldHdvcmtUeXBlOiBzdHJpbmcgPSBmbHV4LmdldFN0YXRlKCdhcHAubmV0d29ya1R5cGUnKSBhcyBzdHJpbmc7XG5cbiAgICBpZihuZXR3b3JrVHlwZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cmV0cnksIHR5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfRVJST1J9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVNlc3Npb246IFNlc3Npb25UeXBlID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpIHx8IHt9KSBhcyBTZXNzaW9uVHlwZTtcbiAgICBsZXQgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmKGF1dGhlbnRpY2F0ZSkge1xuICAgICAgY29uc3QgaHlkcmF0ZWRTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IHN0YXRlU2Vzc2lvbi50b2tlbiA/IHN0YXRlU2Vzc2lvbiA6IGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGV4cGlyZXM6IGF1dGhFeHBpcmVzID0gMCxcbiAgICAgICAgaXNzdWVkOiBhdXRoSXNzdWVkID0gMCxcbiAgICAgICAgdG9rZW46IGh5ZHJhdGVkVG9rZW5cbiAgICAgIH06IFNlc3Npb25UeXBlID0gaHlkcmF0ZWRTZXNzaW9uIHx8IHt9O1xuICAgICAgdG9rZW4gPSBoeWRyYXRlZFRva2VuIHx8IHN0YXRlU2Vzc2lvbi50b2tlbjtcblxuICAgICAgaWYoIXRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnaW52YWxpZF9zZXNzaW9uJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG5cbiAgICAgIGlmKHRva2VuRXhwaXJlc0F0ID4gMCAmJiBEYXRlLm5vdygpID49IHRva2VuRXhwaXJlc0F0KSB7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2V4cGlyZWRfc2Vzc2lvbiddLCAnZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICAgICAgY29uc3QgbWludXRlc1VudGlsRXhwaXJ5ID0gZ2V0TWludXRlc1VudGlsKE51bWJlcihhdXRoRXhwaXJlcyB8fCAwKSk7XG4gICAgICBjb25zdCBzZXNzaW9uTGlmZXRpbWVNaW51dGVzID0gTWF0aC5yb3VuZCgoYXV0aEV4cGlyZXMgLSBhdXRoSXNzdWVkKSAvICgxMDAwICogNjApKTtcbiAgICAgIGNvbnN0IHJlZnJlc2hXaW5kb3dNaW51dGVzID0gZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMoXG4gICAgICAgIHNlc3Npb25MaWZldGltZU1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTLFxuICAgICAgICBjb25maWcuYXBwPy5zZXNzaW9uIHx8IHt9XG4gICAgICApO1xuICAgICAgY29uc3QgcmVmcmVzaEV4cGlyZXNNaW51dGVzID0gTWF0aC5tYXgoXG4gICAgICAgIDEsXG4gICAgICAgIE51bWJlcihjb25maWcuYXBwPy5zZXNzaW9uPy5tYXhNaW51dGVzIHx8IHNlc3Npb25MaWZldGltZU1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTKVxuICAgICAgKTtcblxuICAgICAgaWYobWludXRlc1VudGlsRXhwaXJ5ID4gMCAmJiBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHNlc3Npb246IHVwZGF0ZWRTZXNzaW9uID0ge31cbiAgICAgICAgfTogQXBpUmVzdWx0c1R5cGUgPSAoYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcykpIHx8IHt9O1xuICAgICAgICBjb25zdCB7dG9rZW46IG5ld1Rva2VufTogU2Vzc2lvblR5cGUgPSAodXBkYXRlZFNlc3Npb24gfHwge30pO1xuXG4gICAgICAgIGlmKCFuZXdUb2tlbikge1xuICAgICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnaW52YWxpZF9zZXNzaW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbiA9IG5ld1Rva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncmFwaHFsUXVlcnkodXJsLCBxdWVyeSwge3Rva2VuOiB0b2tlbiB8fCAnJ30pXG4gICAgICAudGhlbihhc3luYyAocmVzdWx0cykgPT4ge1xuICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX1NVQ0NFU1N9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4gKG9uU3VjY2VzcyA/IG9uU3VjY2VzcyhkYXRhKSA6IGRhdGEpKVxuICAgICAgLmNhdGNoKGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCB7ZXJyb3JzID0gW119ID0gZXJyb3I7XG5cbiAgICAgICAgaWYob25TdWNjZXNzICYmIGVycm9ycy5pbmNsdWRlcygnbmV0d29ya19lcnJvcicpKSB7XG4gICAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7cmV0cnksIHR5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfRVJST1J9KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpKSB7XG4gICAgICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JzID0gZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciA/IGVycm9yLmVycm9ycyA6IFtdO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpIHx8IG1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IG1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVRdWVyeSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgdmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyA9IHt9LFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdLFxuICB0eXBlID0gJ3F1ZXJ5J1xuKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0gey4uLnZhcmlhYmxlcyB8fCB7fX07XG4gIGNvbnN0IHZhcmlhYmxlS2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5VmFyaWFibGVzKTtcbiAgY29uc3QgcXVlcnlOYW1lID0gbmFtZS5yZXBsYWNlKC8gL2csICcnKTtcbiAgbGV0IHF1ZXJ5OiBzdHJpbmc7XG5cbiAgaWYodHlwZSA9PT0gJ211dGF0aW9uJykge1xuICAgIGNvbnN0IG11dGF0aW9uTmFtZSA9IHVwcGVyRmlyc3QoY2FtZWxDYXNlKGRhdGFUeXBlKSkgKyB1cHBlckZpcnN0KGNhbWVsQ2FzZShxdWVyeU5hbWUpKTtcbiAgICBxdWVyeSA9IGAke3R5cGV9ICR7bXV0YXRpb25OYW1lfSR7XG4gICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCQke2tleX06ICR7cXVlcnlWYXJpYWJsZXNba2V5XS50eXBlfWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgOiAnJ1xuICAgIH0ge1xuICAgICAgJHtkYXRhVHlwZX0ge1xuICAgICAgICAke2NhbWVsQ2FzZShxdWVyeU5hbWUpfSR7XG4gICAgICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJHtrZXl9OiAkJHtrZXl9YCkuam9pbignLCAnKX0pYFxuICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9XG4gICAgICAgICR7cmV0dXJuUHJvcGVydGllcz8ubGVuZ3RoID8gYHske3JldHVyblByb3BlcnRpZXMuam9pbignLCAnKX19YCA6ICcnfVxuICAgICAgfVxuICAgIH1gO1xuICB9IGVsc2Uge1xuICAgIHF1ZXJ5ID0gYCR7dHlwZX0gJHtxdWVyeU5hbWV9JHtcbiAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJCR7a2V5fTogJHtxdWVyeVZhcmlhYmxlc1trZXldLnR5cGV9YCkuam9pbignLCAnKX0pYFxuICAgICAgICA6ICcnXG4gICAgfSB7XG4gICAgICAke2RhdGFUeXBlfSB7XG4gICAgICAgICR7Y2FtZWxDYXNlKHF1ZXJ5TmFtZSl9JHtcbiAgICAgICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAke2tleX06ICQke2tleX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgJHtyZXR1cm5Qcm9wZXJ0aWVzPy5sZW5ndGggPyBgeyR7cmV0dXJuUHJvcGVydGllcy5qb2luKCcsICcpfX1gIDogJyd9XG4gICAgICB9XG4gICAgfWA7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkVmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHZhcmlhYmxlS2V5cy5yZWR1Y2UoKHF1ZXJ5RGF0YSwga2V5KSA9PiB7XG4gICAgcXVlcnlEYXRhW2tleV0gPSBxdWVyeVZhcmlhYmxlc1trZXldLnZhbHVlO1xuICAgIHJldHVybiBxdWVyeURhdGE7XG4gIH0sIHt9KTtcblxuICByZXR1cm4ge3F1ZXJ5LCB2YXJpYWJsZXM6IHVwZGF0ZWRWYXJpYWJsZXN9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU11dGF0aW9uID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB2YXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzID0ge30sXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW11cbikgPT4gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcywgJ211dGF0aW9uJyk7XG5cbmV4cG9ydCBjb25zdCBhcHBRdWVyeSA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgYXBwVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnVybCB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgYXBwVXJsLCB0cnVlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBhcHBNdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgYXBwVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnVybCB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgYXBwVXJsLCB0cnVlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNRdWVyeSA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcHVibGljVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHB1YmxpY1VybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy5wdWJsaWMgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIHB1YmxpY1VybCwgZmFsc2UsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBpbWFnZSxcbiAgb3B0aW9uczogSHVudGVyT3B0aW9uc1R5cGUgPSB7fVxuKTogUHJvbWlzZTxBcGlSZXN1bHRzVHlwZT4gPT4ge1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgdXBsb2FkSW1hZ2VVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXBsb2FkSW1hZ2UgfHwgJyc7XG4gIGNvbnN0IHRva2VuID0gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJyk7XG5cbiAgaWYoaXNFbXB0eSh1cGxvYWRJbWFnZVVybCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKFsnaW52YWxpZF91cmwnXSwgJ3VwbG9hZF9lbmRwb2ludF9ub3RfY29uZmlndXJlZCcpKTtcbiAgfVxuXG4gIGlmKGlzRW1wdHkodG9rZW4pKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnbWlzc2luZ19hdXRoX3Rva2VuJykpO1xuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApO1xuXG4gIGlmKHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgaW1hZ2UgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgIGhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgcmV0dXJuIGZldGNoKHVwbG9hZEltYWdlVXJsLCB7XG4gICAgICBib2R5OiBpbWFnZSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0pLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZVR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgfHwgJyc7XG4gICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2VUeXBlLmluY2x1ZGVzKCdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAgICAgPyBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgOiBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG5cbiAgICAgIGlmKCFyZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIGRhdGEgJiYgJ2Vycm9yJyBpbiBkYXRhXG4gICAgICAgICAgPyBTdHJpbmcoKGRhdGEgYXMge2Vycm9yPzogc3RyaW5nfSkuZXJyb3IgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICAgICAgICA6IFN0cmluZyhkYXRhIHx8IHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgICB0aHJvdyBuZXcgQXBpRXJyb3IoWyd1cGxvYWRfZXJyb3InXSwgbWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhIGFzIEFwaVJlc3VsdHNUeXBlO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBvc3QodXBsb2FkSW1hZ2VVcmwsIGltYWdlLCB7aGVhZGVycywgLi4ub3B0aW9uc30pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hTZXNzaW9uID0gYXN5bmMgKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICB0b2tlbj86IHN0cmluZyxcbiAgZXhwaXJlcz86IG51bWJlclxuKTogUHJvbWlzZTxGbHV4QWN0aW9uIHwgbnVsbD4gPT4ge1xuICBjb25zdCByZWZyZXNoVG9rZW4gPSBpc0VtcHR5KHRva2VuKSA/IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbi50b2tlbicpIDogdG9rZW47XG5cbiAgaWYoaXNFbXB0eShyZWZyZXNoVG9rZW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB0b2tlbkV4cGlyZXNBdCA9IHBhcnNlSnd0RXhwaXJ5TXMoU3RyaW5nKHJlZnJlc2hUb2tlbikpO1xuXG4gIGlmKHRva2VuRXhwaXJlc0F0ID4gMCAmJiBEYXRlLm5vdygpID49IHRva2VuRXhwaXJlc0F0KSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ2V4cGlyZWRfc2Vzc2lvbicpO1xuICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVVNFUl9DT05TVEFOVFMuR0VUX1NFU1NJT05fRVJST1J9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gICAgY29uc3QgcmVxdWVzdGVkRXhwaXJlcyA9IE1hdGgubWF4KFxuICAgICAgMSxcbiAgICAgIE51bWJlcihleHBpcmVzIHx8IGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTKVxuICAgICk7XG4gICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICBleHBpcmVzOiB7XG4gICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICB2YWx1ZTogcmVxdWVzdGVkRXhwaXJlc1xuICAgICAgfSxcbiAgICAgIHRva2VuOiB7XG4gICAgICAgIHR5cGU6ICdTdHJpbmchJyxcbiAgICAgICAgdmFsdWU6IHJlZnJlc2hUb2tlblxuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgIGNvbnN0IHJhd1Nlc3Npb25EYXRhID0gKGRhdGEgYXMge3VzZXJzPzoge3JlZnJlc2hTZXNzaW9uPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj59fSk/LnVzZXJzPy5yZWZyZXNoU2Vzc2lvbjtcbiAgICAgIGNvbnN0IHNlc3Npb25EYXRhID0gcmF3U2Vzc2lvbkRhdGEgJiYgdHlwZW9mIHJhd1Nlc3Npb25EYXRhID09PSAnb2JqZWN0J1xuICAgICAgICA/IHJhd1Nlc3Npb25EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIDoge307XG4gICAgICBjb25zdCBjdXJyZW50U2Vzc2lvbiA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nLCB7fSkgfHwge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3QgbWVyZ2VkU2Vzc2lvbiA9IGF3YWl0IHN0b3JlU2Vzc2lvbihmbHV4LCB7Li4uY3VycmVudFNlc3Npb24sIC4uLnNlc3Npb25EYXRhfSk7XG4gICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7c2Vzc2lvbjogbWVyZ2VkU2Vzc2lvbiwgdHlwZTogVVNFUl9DT05TVEFOVFMuVVBEQVRFX1NFU1NJT05fU1VDQ0VTU30pO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgcHVibGljTXV0YXRpb24oZmx1eCwgJ3JlZnJlc2hTZXNzaW9uJywgJ3VzZXJzJywgcXVlcnlWYXJpYWJsZXMsIFsnZXhwaXJlcycsICdpc3N1ZWQnLCAndG9rZW4nXSwge1xuICAgICAgb25TdWNjZXNzXG4gICAgfSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9zZXNzaW9uJyB8fCBlcnJvck1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgfVxuXG4gICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFVTRVJfQ09OU1RBTlRTLkdFVF9TRVNTSU9OX0VSUk9SfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiQXBpRXJyb3IiLCJncmFwaHFsUXVlcnkiLCJwb3N0IiwiY2FtZWxDYXNlIiwiaXNFbXB0eSIsInVwcGVyRmlyc3QiLCJBUFBfQ09OU1RBTlRTIiwiVVNFUl9DT05TVEFOVFMiLCJnZXRDb25maWdGcm9tRmx1eCIsImNsZWFyUGVyc2lzdGVkU2Vzc2lvbiIsImdldFJlZnJlc2hXaW5kb3dNaW51dGVzIiwiaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZSIsInBhcnNlSnd0RXhwaXJ5TXMiLCJzdG9yZVNlc3Npb24iLCJERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMiLCJERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMiLCJnZXRNaW51dGVzVW50aWwiLCJleHBpcmVzQXQiLCJNYXRoIiwicm91bmQiLCJEYXRlIiwibm93IiwiY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlIiwiZmx1eCIsImNsZWFyQXBwRGF0YSIsImRpc3BhdGNoIiwic2Vzc2lvbiIsInR5cGUiLCJTSUdOX09VVF9TVUNDRVNTIiwiZ2V0R3JhcGhxbCIsInVybCIsImF1dGhlbnRpY2F0ZSIsInF1ZXJ5Iiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsInJldHJ5IiwicmVzcG9uc2VNZXRob2QiLCJuZXR3b3JrVHlwZSIsImdldFN0YXRlIiwiQVBJX05FVFdPUktfRVJST1IiLCJzdGF0ZVNlc3Npb24iLCJ0b2tlbiIsImh5ZHJhdGVkU2Vzc2lvbiIsImV4cGlyZXMiLCJhdXRoRXhwaXJlcyIsImlzc3VlZCIsImF1dGhJc3N1ZWQiLCJoeWRyYXRlZFRva2VuIiwidG9rZW5FeHBpcmVzQXQiLCJjb25maWciLCJtaW51dGVzVW50aWxFeHBpcnkiLCJOdW1iZXIiLCJzZXNzaW9uTGlmZXRpbWVNaW51dGVzIiwicmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJhcHAiLCJyZWZyZXNoRXhwaXJlc01pbnV0ZXMiLCJtYXgiLCJtYXhNaW51dGVzIiwidXBkYXRlZFNlc3Npb24iLCJyZWZyZXNoU2Vzc2lvbiIsIm5ld1Rva2VuIiwidGhlbiIsInJlc3VsdHMiLCJBUElfTkVUV09SS19TVUNDRVNTIiwiZGF0YSIsImNhdGNoIiwiZXJyb3IiLCJlcnJvcnMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZWplY3QiLCJyZXNvbHZlIiwibWVzc2FnZSIsIkVycm9yIiwiY3JlYXRlUXVlcnkiLCJuYW1lIiwiZGF0YVR5cGUiLCJ2YXJpYWJsZXMiLCJyZXR1cm5Qcm9wZXJ0aWVzIiwicXVlcnlWYXJpYWJsZXMiLCJ2YXJpYWJsZUtleXMiLCJPYmplY3QiLCJrZXlzIiwicXVlcnlOYW1lIiwicmVwbGFjZSIsIm11dGF0aW9uTmFtZSIsImxlbmd0aCIsIm1hcCIsImtleSIsImpvaW4iLCJ1cGRhdGVkVmFyaWFibGVzIiwicmVkdWNlIiwicXVlcnlEYXRhIiwidmFsdWUiLCJjcmVhdGVNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiYXBwVXJsIiwiYXBpIiwiYXBwTXV0YXRpb24iLCJwdWJsaWNRdWVyeSIsInB1YmxpY1VybCIsInB1YmxpYyIsInB1YmxpY011dGF0aW9uIiwidXBsb2FkSW1hZ2UiLCJpbWFnZSIsInVwbG9hZEltYWdlVXJsIiwiaGVhZGVycyIsIkhlYWRlcnMiLCJzZXQiLCJGb3JtRGF0YSIsImZldGNoIiwiYm9keSIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzcG9uc2VUeXBlIiwiZ2V0IiwianNvbiIsInRleHQiLCJvayIsIlN0cmluZyIsInN0YXR1c1RleHQiLCJyZWZyZXNoVG9rZW4iLCJHRVRfU0VTU0lPTl9FUlJPUiIsInJlcXVlc3RlZEV4cGlyZXMiLCJyYXdTZXNzaW9uRGF0YSIsInVzZXJzIiwic2Vzc2lvbkRhdGEiLCJjdXJyZW50U2Vzc2lvbiIsIm1lcmdlZFNlc3Npb24iLCJVUERBVEVfU0VTU0lPTl9TVUNDRVNTIiwiZXJyb3JNZXNzYWdlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxRQUFRLEVBQUVDLFlBQVksRUFBRUMsSUFBSSxRQUFPLG9CQUFvQjtBQUMvRCxTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFFNUQsU0FBUUMsYUFBYSxRQUFPLHdCQUF3QjtBQUNwRCxTQUFRQyxjQUFjLFFBQU8seUJBQXlCO0FBQ3RELFNBQVFDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxRQUFPLGVBQWU7QUEyRHZJLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyw4QkFBOEI7QUFFcEMsTUFBTUMsa0JBQWtCLENBQUNDLFlBQ3ZCQyxLQUFLQyxLQUFLLENBQUMsQUFBQ0YsQ0FBQUEsWUFBWUcsS0FBS0MsR0FBRyxFQUFDLElBQU0sQ0FBQSxPQUFPLEVBQUM7QUFFakQsTUFBTUMsMkJBQTJCLE9BQU9DO0lBQ3RDLE1BQU1kLHNCQUFzQmM7SUFDNUIsTUFBTUEsS0FBS0MsWUFBWTtJQUN2QixNQUFNRCxLQUFLRSxRQUFRLENBQUM7UUFBQ0MsU0FBUyxDQUFDO1FBQUdDLE1BQU1wQixlQUFlcUIsZ0JBQWdCO0lBQUE7QUFDekU7QUFFQSxPQUFPLE1BQU1DLGFBQWEsT0FDeEJOLE1BQ0FPLEtBQ0FDLGNBQ0FDLE9BQ0FDO0lBRUEsSUFBSTtRQUNGLE1BQU0sRUFBQ0MsU0FBUyxFQUFDLEdBQUdEO1FBQ3BCLE1BQU1FLFFBQW1CO1lBQUNIO1lBQU9JLGdCQUFnQkYsYUFBYyxDQUFBLEtBQU8sQ0FBQTtRQUFFO1FBQ3hFLE1BQU1HLGNBQXNCZCxLQUFLZSxRQUFRLENBQUM7UUFFMUMsSUFBR0QsZ0JBQWdCLFFBQVE7WUFDekIsT0FBT2QsS0FBS0UsUUFBUSxDQUFDO2dCQUFDVTtnQkFBT1IsTUFBTXJCLGNBQWNpQyxpQkFBaUI7WUFBQTtRQUNwRTtRQUVBLE1BQU1DLGVBQTZCakIsS0FBS2UsUUFBUSxDQUFDLG1CQUFtQixDQUFDO1FBQ3JFLElBQUlHO1FBRUosSUFBR1YsY0FBYztZQUNmLE1BQU1XLGtCQUErQkYsYUFBYUMsS0FBSyxHQUFHRCxlQUFlLE1BQU03QiwwQkFBMEJZO1lBQ3pHLE1BQU0sRUFDSm9CLFNBQVNDLGNBQWMsQ0FBQyxFQUN4QkMsUUFBUUMsYUFBYSxDQUFDLEVBQ3RCTCxPQUFPTSxhQUFhLEVBQ3JCLEdBQWdCTCxtQkFBbUIsQ0FBQztZQUNyQ0QsUUFBUU0saUJBQWlCUCxhQUFhQyxLQUFLO1lBRTNDLElBQUcsQ0FBQ0EsT0FBTztnQkFDVCxNQUFNLElBQUl6QyxTQUFTO29CQUFDO2lCQUFrQixFQUFFO1lBQzFDO1lBRUEsTUFBTWdELGlCQUFpQnBDLGlCQUFpQjZCO1lBRXhDLElBQUdPLGlCQUFpQixLQUFLNUIsS0FBS0MsR0FBRyxNQUFNMkIsZ0JBQWdCO2dCQUNyRCxNQUFNLElBQUloRCxTQUFTO29CQUFDO2lCQUFrQixFQUFFO1lBQzFDO1lBRUEsTUFBTWlELFNBQVN6QyxrQkFBa0JlO1lBQ2pDLE1BQU0yQixxQkFBcUJsQyxnQkFBZ0JtQyxPQUFPUCxlQUFlO1lBQ2pFLE1BQU1RLHlCQUF5QmxDLEtBQUtDLEtBQUssQ0FBQyxBQUFDeUIsQ0FBQUEsY0FBY0UsVUFBUyxJQUFNLENBQUEsT0FBTyxFQUFDO1lBQ2hGLE1BQU1PLHVCQUF1QjNDLHdCQUMzQjBDLDBCQUEwQnJDLDZCQUMxQmtDLE9BQU9LLEdBQUcsRUFBRTVCLFdBQVcsQ0FBQztZQUUxQixNQUFNNkIsd0JBQXdCckMsS0FBS3NDLEdBQUcsQ0FDcEMsR0FDQUwsT0FBT0YsT0FBT0ssR0FBRyxFQUFFNUIsU0FBUytCLGNBQWNMLDBCQUEwQnJDO1lBR3RFLElBQUdtQyxxQkFBcUIsS0FBS0Esc0JBQXNCRyxzQkFBc0I7Z0JBQ3ZFLE1BQU0sRUFDSjNCLFNBQVNnQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQzdCLEdBQW1CLEFBQUMsTUFBTUMsZUFBZXBDLE1BQU1rQixPQUFPYywwQkFBMkIsQ0FBQztnQkFDbkYsTUFBTSxFQUFDZCxPQUFPbUIsUUFBUSxFQUFDLEdBQWlCRixrQkFBa0IsQ0FBQztnQkFFM0QsSUFBRyxDQUFDRSxVQUFVO29CQUNaLE1BQU0sSUFBSTVELFNBQVM7d0JBQUM7cUJBQWtCLEVBQUU7Z0JBQzFDO2dCQUVBeUMsUUFBUW1CO1lBQ1Y7UUFDRjtRQUVBLE9BQU8zRCxhQUFhNkIsS0FBS0UsT0FBTztZQUFDUyxPQUFPQSxTQUFTO1FBQUUsR0FDaERvQixJQUFJLENBQUMsT0FBT0M7WUFDWCxNQUFNdkMsS0FBS0UsUUFBUSxDQUFDO2dCQUFDRSxNQUFNckIsY0FBY3lELG1CQUFtQjtZQUFBO1lBRTVELE9BQU9EO1FBQ1QsR0FDQ0QsSUFBSSxDQUFDLENBQUNHLE9BQVU5QixZQUFZQSxVQUFVOEIsUUFBUUEsTUFDOUNDLEtBQUssQ0FBQyxPQUFPQztZQUNaLE1BQU0sRUFBQ0MsU0FBUyxFQUFFLEVBQUMsR0FBR0Q7WUFFdEIsSUFBR2hDLGFBQWFpQyxPQUFPQyxRQUFRLENBQUMsa0JBQWtCO2dCQUNoRCxNQUFNN0MsS0FBS0UsUUFBUSxDQUFDO29CQUFDVTtvQkFBT1IsTUFBTXJCLGNBQWNpQyxpQkFBaUI7Z0JBQUE7Z0JBQ2pFLE9BQU84QixRQUFRQyxNQUFNLENBQUNKO1lBQ3hCLE9BQU8sSUFBR0MsT0FBT0MsUUFBUSxDQUFDLHNCQUFzQkQsT0FBT0MsUUFBUSxDQUFDLG9CQUFvQjtnQkFDbEYsTUFBTTlDLHlCQUF5QkM7Z0JBQy9CLE9BQU84QyxRQUFRRSxPQUFPLENBQUMsQ0FBQztZQUMxQjtZQUVBLE9BQU9GLFFBQVFDLE1BQU0sQ0FBQ0o7UUFDeEI7SUFDSixFQUFFLE9BQU1BLE9BQU87UUFDYixNQUFNQyxTQUFTRCxpQkFBaUJsRSxXQUFXa0UsTUFBTUMsTUFBTSxHQUFHLEVBQUU7UUFDNUQsTUFBTUssVUFBVU4saUJBQWlCTyxRQUFRUCxNQUFNTSxPQUFPLEdBQUc7UUFFekQsSUFBR0wsT0FBT0MsUUFBUSxDQUFDLHNCQUFzQkQsT0FBT0MsUUFBUSxDQUFDLHNCQUFzQkksWUFBWSxxQkFBcUJBLFlBQVksbUJBQW1CO1lBQzdJLE1BQU1sRCx5QkFBeUJDO1lBQy9CLE9BQU8sQ0FBQztRQUNWO1FBRUEsTUFBTTJDO0lBQ1I7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNUSxjQUFjLENBQ3pCQyxNQUNBQyxVQUNBQyxZQUErQixDQUFDLENBQUMsRUFDakNDLG1CQUE2QixFQUFFLEVBQy9CbkQsT0FBTyxPQUFPO0lBRWQsTUFBTW9ELGlCQUFpQjtRQUFDLEdBQUdGLGFBQWEsQ0FBQyxDQUFDO0lBQUE7SUFDMUMsTUFBTUcsZUFBZUMsT0FBT0MsSUFBSSxDQUFDSDtJQUNqQyxNQUFNSSxZQUFZUixLQUFLUyxPQUFPLENBQUMsTUFBTTtJQUNyQyxJQUFJcEQ7SUFFSixJQUFHTCxTQUFTLFlBQVk7UUFDdEIsTUFBTTBELGVBQWVoRixXQUFXRixVQUFVeUUsYUFBYXZFLFdBQVdGLFVBQVVnRjtRQUM1RW5ELFFBQVEsR0FBR0wsS0FBSyxDQUFDLEVBQUUwRCxlQUNqQkwsYUFBYU0sTUFBTSxHQUNmLENBQUMsQ0FBQyxFQUFFTixhQUFhTyxHQUFHLENBQUMsQ0FBQ0MsTUFBUSxDQUFDLENBQUMsRUFBRUEsSUFBSSxFQUFFLEVBQUVULGNBQWMsQ0FBQ1MsSUFBSSxDQUFDN0QsSUFBSSxFQUFFLEVBQUU4RCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FDbkYsR0FDTDtNQUNDLEVBQUViLFNBQVM7UUFDVCxFQUFFekUsVUFBVWdGLGFBQ1ZILGFBQWFNLE1BQU0sR0FDZixDQUFDLENBQUMsRUFBRU4sYUFBYU8sR0FBRyxDQUFDLENBQUNDLE1BQVEsR0FBR0EsSUFBSSxHQUFHLEVBQUVBLEtBQUssRUFBRUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQzlELEdBQ0w7UUFDRCxFQUFFWCxrQkFBa0JRLFNBQVMsQ0FBQyxDQUFDLEVBQUVSLGlCQUFpQlcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRzs7S0FFeEUsQ0FBQztJQUNKLE9BQU87UUFDTHpELFFBQVEsR0FBR0wsS0FBSyxDQUFDLEVBQUV3RCxZQUNqQkgsYUFBYU0sTUFBTSxHQUNmLENBQUMsQ0FBQyxFQUFFTixhQUFhTyxHQUFHLENBQUMsQ0FBQ0MsTUFBUSxDQUFDLENBQUMsRUFBRUEsSUFBSSxFQUFFLEVBQUVULGNBQWMsQ0FBQ1MsSUFBSSxDQUFDN0QsSUFBSSxFQUFFLEVBQUU4RCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FDbkYsR0FDTDtNQUNDLEVBQUViLFNBQVM7UUFDVCxFQUFFekUsVUFBVWdGLGFBQ1ZILGFBQWFNLE1BQU0sR0FDZixDQUFDLENBQUMsRUFBRU4sYUFBYU8sR0FBRyxDQUFDLENBQUNDLE1BQVEsR0FBR0EsSUFBSSxHQUFHLEVBQUVBLEtBQUssRUFBRUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQzlELEdBQ0w7UUFDRCxFQUFFWCxrQkFBa0JRLFNBQVMsQ0FBQyxDQUFDLEVBQUVSLGlCQUFpQlcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRzs7S0FFeEUsQ0FBQztJQUNKO0lBRUEsTUFBTUMsbUJBQTRDVixhQUFhVyxNQUFNLENBQUMsQ0FBQ0MsV0FBV0o7UUFDaEZJLFNBQVMsQ0FBQ0osSUFBSSxHQUFHVCxjQUFjLENBQUNTLElBQUksQ0FBQ0ssS0FBSztRQUMxQyxPQUFPRDtJQUNULEdBQUcsQ0FBQztJQUVKLE9BQU87UUFBQzVEO1FBQU82QyxXQUFXYTtJQUFnQjtBQUM1QyxFQUFFO0FBRUYsT0FBTyxNQUFNSSxpQkFBaUIsQ0FDNUJuQixNQUNBQyxVQUNBQyxZQUErQixDQUFDLENBQUMsRUFDakNDLG1CQUE2QixFQUFFLEdBQzVCSixZQUFZQyxNQUFNQyxVQUFVQyxXQUFXQyxrQkFBa0IsWUFBWTtBQUUxRSxPQUFPLE1BQU1pQixXQUFXLENBQ3RCeEUsTUFDQW9ELE1BQ0FDLFVBQ0FHLGdCQUNBRCxrQkFDQTdDLFVBQXNCLENBQUMsQ0FBQztJQUV4QixNQUFNRCxRQUFRMEMsWUFBWUMsTUFBTUMsVUFBVUcsZ0JBQWdCRDtJQUMxRCxNQUFNN0IsU0FBU3pDLGtCQUFrQmU7SUFDakMsTUFBTXlFLFNBQWlCL0MsT0FBT0ssR0FBRyxFQUFFMkMsS0FBS25FLE9BQU87SUFDL0MsT0FBT0QsV0FBV04sTUFBTXlFLFFBQVEsTUFBTWhFLE9BQU9DO0FBQy9DLEVBQUU7QUFFRixPQUFPLE1BQU1pRSxjQUFjLENBQ3pCM0UsTUFDQW9ELE1BQ0FDLFVBQ0FHLGdCQUNBRCxrQkFDQTdDLFVBQXNCLENBQUMsQ0FBQztJQUV4QixNQUFNRCxRQUFROEQsZUFBZW5CLE1BQU1DLFVBQVVHLGdCQUFnQkQ7SUFDN0QsTUFBTTdCLFNBQVN6QyxrQkFBa0JlO0lBQ2pDLE1BQU15RSxTQUFpQi9DLE9BQU9LLEdBQUcsRUFBRTJDLEtBQUtuRSxPQUFPO0lBQy9DLE9BQU9ELFdBQVdOLE1BQU15RSxRQUFRLE1BQU1oRSxPQUFPQztBQUMvQyxFQUFFO0FBRUYsT0FBTyxNQUFNa0UsY0FBYyxDQUN6QjVFLE1BQ0FvRCxNQUNBQyxVQUNBRyxnQkFDQUQsa0JBQ0E3QyxVQUFzQixDQUFDLENBQUM7SUFFeEIsTUFBTUQsUUFBUTBDLFlBQVlDLE1BQU1DLFVBQVVHLGdCQUFnQkQ7SUFDMUQsTUFBTTdCLFNBQVN6QyxrQkFBa0JlO0lBQ2pDLE1BQU02RSxZQUFvQm5ELE9BQU9LLEdBQUcsRUFBRTJDLEtBQUtJLFVBQVU7SUFDckQsT0FBT3hFLFdBQVdOLE1BQU02RSxXQUFXLE9BQU9wRSxPQUFPQztBQUNuRCxFQUFFO0FBRUYsT0FBTyxNQUFNcUUsaUJBQWlCLENBQzVCL0UsTUFDQW9ELE1BQ0FDLFVBQ0FHLGdCQUNBRCxrQkFDQTdDLFVBQXNCLENBQUMsQ0FBQztJQUV4QixNQUFNRCxRQUFROEQsZUFBZW5CLE1BQU1DLFVBQVVHLGdCQUFnQkQ7SUFDN0QsTUFBTTdCLFNBQVN6QyxrQkFBa0JlO0lBQ2pDLE1BQU02RSxZQUFvQm5ELE9BQU9LLEdBQUcsRUFBRTJDLEtBQUtJLFVBQVU7SUFDckQsT0FBT3hFLFdBQVdOLE1BQU02RSxXQUFXLE9BQU9wRSxPQUFPQztBQUNuRCxFQUFFO0FBRUYsT0FBTyxNQUFNc0UsY0FBYyxDQUN6QmhGLE1BQ0FpRixPQUNBdkUsVUFBNkIsQ0FBQyxDQUFDO0lBRS9CLE1BQU1nQixTQUFTekMsa0JBQWtCZTtJQUNqQyxNQUFNa0YsaUJBQXlCeEQsT0FBT0ssR0FBRyxFQUFFMkMsS0FBS00sZUFBZTtJQUMvRCxNQUFNOUQsUUFBUWxCLEtBQUtlLFFBQVEsQ0FBQztJQUU1QixJQUFHbEMsUUFBUXFHLGlCQUFpQjtRQUMxQixPQUFPcEMsUUFBUUMsTUFBTSxDQUFDLElBQUl0RSxTQUFTO1lBQUM7U0FBYyxFQUFFO0lBQ3REO0lBRUEsSUFBR0ksUUFBUXFDLFFBQVE7UUFDakIsT0FBTzRCLFFBQVFDLE1BQU0sQ0FBQyxJQUFJdEUsU0FBUztZQUFDO1NBQWtCLEVBQUU7SUFDMUQ7SUFFQSxNQUFNMEcsVUFBVSxJQUFJQztJQUNwQkQsUUFBUUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRW5FLE9BQU87SUFFOUMsSUFBRyxPQUFPb0UsYUFBYSxlQUFlTCxpQkFBaUJLLFVBQVU7UUFDL0RILFFBQVFFLEdBQUcsQ0FBQyxVQUFVO1FBRXRCLE9BQU9FLE1BQU1MLGdCQUFnQjtZQUMzQk0sTUFBTVA7WUFDTkU7WUFDQU0sUUFBUTtRQUNWLEdBQUduRCxJQUFJLENBQUMsT0FBT29EO1lBQ2IsTUFBTUMsZUFBZUQsU0FBU1AsT0FBTyxDQUFDUyxHQUFHLENBQUMsbUJBQW1CO1lBQzdELE1BQU1uRCxPQUFPa0QsYUFBYTlDLFFBQVEsQ0FBQyxzQkFDL0IsTUFBTTZDLFNBQVNHLElBQUksS0FDbkIsTUFBTUgsU0FBU0ksSUFBSTtZQUV2QixJQUFHLENBQUNKLFNBQVNLLEVBQUUsRUFBRTtnQkFDZixNQUFNOUMsVUFBVSxPQUFPUixTQUFTLFlBQVlBLFFBQVEsV0FBV0EsT0FDM0R1RCxPQUFPLEFBQUN2RCxLQUEwQkUsS0FBSyxJQUFJK0MsU0FBU08sVUFBVSxJQUM5REQsT0FBT3ZELFFBQVFpRCxTQUFTTyxVQUFVO2dCQUN0QyxNQUFNLElBQUl4SCxTQUFTO29CQUFDO2lCQUFlLEVBQUV3RTtZQUN2QztZQUVBLE9BQU9SO1FBQ1Q7SUFDRjtJQUVBLE9BQU85RCxLQUFLdUcsZ0JBQWdCRCxPQUFPO1FBQUNFO1FBQVMsR0FBR3pFLE9BQU87SUFBQTtBQUN6RCxFQUFFO0FBRUYsT0FBTyxNQUFNMEIsaUJBQWlCLE9BQzVCcEMsTUFDQWtCLE9BQ0FFO0lBRUEsTUFBTThFLGVBQWVySCxRQUFRcUMsU0FBU2xCLEtBQUtlLFFBQVEsQ0FBQyx3QkFBd0JHO0lBRTVFLElBQUdyQyxRQUFRcUgsZUFBZTtRQUN4QixPQUFPO0lBQ1Q7SUFFQSxNQUFNekUsaUJBQWlCcEMsaUJBQWlCMkcsT0FBT0U7SUFFL0MsSUFBR3pFLGlCQUFpQixLQUFLNUIsS0FBS0MsR0FBRyxNQUFNMkIsZ0JBQWdCO1FBQ3JELE1BQU1rQixRQUFRLElBQUlPLE1BQU07UUFDeEIsTUFBTW5ELHlCQUF5QkM7UUFDL0JBLEtBQUtFLFFBQVEsQ0FBQztZQUFDeUM7WUFBT3ZDLE1BQU1wQixlQUFlbUgsaUJBQWlCO1FBQUE7UUFDNUQsT0FBTztJQUNUO0lBRUEsSUFBSTtRQUNGLE1BQU16RSxTQUFTekMsa0JBQWtCZTtRQUNqQyxNQUFNb0csbUJBQW1CekcsS0FBS3NDLEdBQUcsQ0FDL0IsR0FDQUwsT0FBT1IsV0FBV00sT0FBT0ssR0FBRyxFQUFFNUIsU0FBUytCLGNBQWMxQztRQUV2RCxNQUFNZ0UsaUJBQWlCO1lBQ3JCcEMsU0FBUztnQkFDUGhCLE1BQU07Z0JBQ05rRSxPQUFPOEI7WUFDVDtZQUNBbEYsT0FBTztnQkFDTGQsTUFBTTtnQkFDTmtFLE9BQU80QjtZQUNUO1FBQ0Y7UUFDQSxNQUFNdkYsWUFBWSxPQUFPOEIsT0FBdUIsQ0FBQyxDQUFDO1lBQ2hELE1BQU00RCxpQkFBa0I1RCxNQUErRDZELE9BQU9sRTtZQUM5RixNQUFNbUUsY0FBY0Ysa0JBQWtCLE9BQU9BLG1CQUFtQixXQUM1REEsaUJBQ0EsQ0FBQztZQUNMLE1BQU1HLGlCQUFrQnhHLEtBQUtlLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDOUQsTUFBTTBGLGdCQUFnQixNQUFNbkgsYUFBYVUsTUFBTTtnQkFBQyxHQUFHd0csY0FBYztnQkFBRSxHQUFHRCxXQUFXO1lBQUE7WUFDakYsT0FBT3ZHLEtBQUtFLFFBQVEsQ0FBQztnQkFBQ0MsU0FBU3NHO2dCQUFlckcsTUFBTXBCLGVBQWUwSCxzQkFBc0I7WUFBQTtRQUMzRjtRQUVBLE9BQU8sTUFBTTNCLGVBQWUvRSxNQUFNLGtCQUFrQixTQUFTd0QsZ0JBQWdCO1lBQUM7WUFBVztZQUFVO1NBQVEsRUFBRTtZQUMzRzdDO1FBQ0Y7SUFDRixFQUFFLE9BQU1nQyxPQUFPO1FBQ2IsTUFBTWdFLGVBQWVoRSxpQkFBaUJPLFFBQVFQLE1BQU1NLE9BQU8sR0FBRztRQUU5RCxJQUFHMEQsaUJBQWlCLHFCQUFxQkEsaUJBQWlCLG1CQUFtQjtZQUMzRSxNQUFNNUcseUJBQXlCQztRQUNqQztRQUVBQSxLQUFLRSxRQUFRLENBQUM7WUFBQ3lDO1lBQU92QyxNQUFNcEIsZUFBZW1ILGlCQUFpQjtRQUFBO1FBQzVELE9BQU87SUFDVDtBQUNGLEVBQUUifQ==
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGFqYXgsIGRlbCwgZ2V0LCBncmFwaHFsUXVlcnksIHBvc3QsIHB1dH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVzdE1ldGhvZCA9ICdERUxFVEUnIHwgJ0dFVCcgfCAnUEFUQ0gnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RBcGlPcHRpb25zIGV4dGVuZHMgSHVudGVyT3B0aW9uc1R5cGUge1xuICByZWFkb25seSBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24gPVxuICAnYXBwcycgfFxuICAnY29ubmVjdGlvbnMnIHxcbiAgJ2NvbnRlbnRzJyB8XG4gICdjb252ZXJzYXRpb25zJyB8XG4gICdjcm0nIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdzdWJzY3JpcHRpb25zJyB8XG4gICd0YWdzJyB8XG4gICd0cmFuc2xhdGlvbnMnIHxcbiAgJ3VzZXJzJyB8XG4gICd2aWRlb3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlRdWVyeVZhcmlhYmxlcyB7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEFwaVF1ZXJ5VmFyaWFibGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3VsdHNUeXBlIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXRyeVR5cGUge1xuICByZWFkb25seSBxdWVyeT86IEh1bnRlclF1ZXJ5VHlwZSB8IEh1bnRlclF1ZXJ5VHlwZVtdO1xuICByZWFkb25seSByZXF1ZXN0Pzoge1xuICAgIHJlYWRvbmx5IG1ldGhvZDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBhcmFtcz86IHVua25vd247XG4gICAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IHJlc3BvbnNlTWV0aG9kOiAocmVzdWx0czogQXBpUmVzdWx0c1R5cGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblR5cGUge1xuICByZWFkb25seSBleHBpcmVzPzogbnVtYmVyO1xuICByZWFkb25seSBpc3N1ZWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMgPSA1O1xuY29uc3QgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTID0gMTU7XG5cbmNvbnN0IGdldE1pbnV0ZXNVbnRpbCA9IChleHBpcmVzQXQ6IG51bWJlcik6IG51bWJlciA9PlxuICBNYXRoLnJvdW5kKChleHBpcmVzQXQgLSBEYXRlLm5vdygpKSAvICgxMDAwICogNjApKTtcblxuY29uc3QgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgY2xlYXJQZXJzaXN0ZWRTZXNzaW9uKGZsdXgpO1xuICBhd2FpdCBmbHV4LmNsZWFyQXBwRGF0YSgpO1xuICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtzZXNzaW9uOiB7fSwgdHlwZTogVVNFUl9DT05TVEFOVFMuU0lHTl9PVVRfU1VDQ0VTU30pO1xufTtcblxuY29uc3QgcmVzb2x2ZUF1dGhUb2tlbiA9IGFzeW5jIChmbHV4OiBGbHV4RnJhbWV3b3JrKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3Qgc3RhdGVTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nKSB8fCB7fSkgYXMgU2Vzc2lvblR5cGU7XG4gIGNvbnN0IGh5ZHJhdGVkU2Vzc2lvbjogU2Vzc2lvblR5cGUgPSBzdGF0ZVNlc3Npb24udG9rZW4gPyBzdGF0ZVNlc3Npb24gOiBhd2FpdCBoeWRyYXRlU2Vzc2lvbkZyb21TdG9yYWdlKGZsdXgpO1xuICBjb25zdCB7XG4gICAgZXhwaXJlczogYXV0aEV4cGlyZXMgPSAwLFxuICAgIGlzc3VlZDogYXV0aElzc3VlZCA9IDAsXG4gICAgdG9rZW46IGh5ZHJhdGVkVG9rZW5cbiAgfTogU2Vzc2lvblR5cGUgPSBoeWRyYXRlZFNlc3Npb24gfHwge307XG4gIGxldCB0b2tlbiA9IGh5ZHJhdGVkVG9rZW4gfHwgc3RhdGVTZXNzaW9uLnRva2VuO1xuXG4gIGlmKCF0b2tlbikge1xuICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnaW52YWxpZF9zZXNzaW9uJyk7XG4gIH1cblxuICBjb25zdCB0b2tlbkV4cGlyZXNBdCA9IHBhcnNlSnd0RXhwaXJ5TXModG9rZW4pO1xuXG4gIGlmKHRva2VuRXhwaXJlc0F0ID4gMCAmJiBEYXRlLm5vdygpID49IHRva2VuRXhwaXJlc0F0KSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFsnZXhwaXJlZF9zZXNzaW9uJ10sICdleHBpcmVkX3Nlc3Npb24nKTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBtaW51dGVzVW50aWxFeHBpcnkgPSBnZXRNaW51dGVzVW50aWwoTnVtYmVyKGF1dGhFeHBpcmVzIHx8IDApKTtcbiAgY29uc3Qgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyA9IE1hdGgucm91bmQoKGF1dGhFeHBpcmVzIC0gYXV0aElzc3VlZCkgLyAoMTAwMCAqIDYwKSk7XG4gIGNvbnN0IHJlZnJlc2hXaW5kb3dNaW51dGVzID0gZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMoXG4gICAgc2Vzc2lvbkxpZmV0aW1lTWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMsXG4gICAgY29uZmlnLmFwcD8uc2Vzc2lvbiB8fCB7fVxuICApO1xuICBjb25zdCByZWZyZXNoRXhwaXJlc01pbnV0ZXMgPSBNYXRoLm1heChcbiAgICAxLFxuICAgIE51bWJlcihjb25maWcuYXBwPy5zZXNzaW9uPy5tYXhNaW51dGVzIHx8IHNlc3Npb25MaWZldGltZU1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTKVxuICApO1xuXG4gIGlmKG1pbnV0ZXNVbnRpbEV4cGlyeSA+IDAgJiYgbWludXRlc1VudGlsRXhwaXJ5IDw9IHJlZnJlc2hXaW5kb3dNaW51dGVzKSB7XG4gICAgY29uc3Qge1xuICAgICAgc2Vzc2lvbjogdXBkYXRlZFNlc3Npb24gPSB7fVxuICAgIH06IEFwaVJlc3VsdHNUeXBlID0gKGF3YWl0IHJlZnJlc2hTZXNzaW9uKGZsdXgsIHRva2VuLCByZWZyZXNoRXhwaXJlc01pbnV0ZXMpKSB8fCB7fTtcbiAgICBjb25zdCB7dG9rZW46IG5ld1Rva2VufTogU2Vzc2lvblR5cGUgPSAodXBkYXRlZFNlc3Npb24gfHwge30pO1xuXG4gICAgaWYoIW5ld1Rva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgQXBpRXJyb3IoWydpbnZhbGlkX3Nlc3Npb24nXSwgJ2ludmFsaWRfc2Vzc2lvbicpO1xuICAgIH1cblxuICAgIHRva2VuID0gbmV3VG9rZW47XG4gIH1cblxuICByZXR1cm4gdG9rZW47XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JhcGhxbCA9IGFzeW5jIChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgdXJsOiBzdHJpbmcsXG4gIGF1dGhlbnRpY2F0ZTogYm9vbGVhbixcbiAgcXVlcnk6IEh1bnRlclF1ZXJ5VHlwZSB8IEh1bnRlclF1ZXJ5VHlwZVtdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zXG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qge29uU3VjY2Vzc30gPSBvcHRpb25zO1xuICAgIGNvbnN0IHJldHJ5OiBSZXRyeVR5cGUgPSB7cXVlcnksIHJlc3BvbnNlTWV0aG9kOiBvblN1Y2Nlc3MgfHwgKCgpID0+IHt9KX07XG4gICAgY29uc3QgbmV0d29ya1R5cGU6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ2FwcC5uZXR3b3JrVHlwZScpIGFzIHN0cmluZztcblxuICAgIGlmKG5ldHdvcmtUeXBlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtyZXRyeSwgdHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19FUlJPUn0pO1xuICAgIH1cblxuICAgIGxldCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYoYXV0aGVudGljYXRlKSB7XG4gICAgICB0b2tlbiA9IGF3YWl0IHJlc29sdmVBdXRoVG9rZW4oZmx1eCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyYXBocWxRdWVyeSh1cmwsIHF1ZXJ5LCB7dG9rZW46IHRva2VuIHx8ICcnfSlcbiAgICAgIC50aGVuKGFzeW5jIChyZXN1bHRzKSA9PiB7XG4gICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe3R5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfU1VDQ0VTU30pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgfSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiAob25TdWNjZXNzID8gb25TdWNjZXNzKGRhdGEpIDogZGF0YSkpXG4gICAgICAuY2F0Y2goYXN5bmMgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IHtlcnJvcnMgPSBbXX0gPSBlcnJvcjtcblxuICAgICAgICBpZihvblN1Y2Nlc3MgJiYgZXJyb3JzLmluY2x1ZGVzKCduZXR3b3JrX2Vycm9yJykpIHtcbiAgICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtyZXRyeSwgdHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19FUlJPUn0pO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZihlcnJvcnMuaW5jbHVkZXMoJ2ludmFsaWRfc2Vzc2lvbicpIHx8IGVycm9ycy5pbmNsdWRlcygnZXhwaXJlZF9zZXNzaW9uJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvcnMgPSBlcnJvciBpbnN0YW5jZW9mIEFwaUVycm9yID8gZXJyb3IuZXJyb3JzIDogW107XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICBpZihlcnJvcnMuaW5jbHVkZXMoJ2ludmFsaWRfc2Vzc2lvbicpIHx8IGVycm9ycy5pbmNsdWRlcygnZXhwaXJlZF9zZXNzaW9uJykgfHwgbWVzc2FnZSA9PT0gJ2ludmFsaWRfc2Vzc2lvbicgfHwgbWVzc2FnZSA9PT0gJ2V4cGlyZWRfc2Vzc2lvbicpIHtcbiAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVSZXN0RW5kcG9pbnQgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGVuZHBvaW50OiBzdHJpbmdcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRhcmdldEVuZHBvaW50ID0gU3RyaW5nKGVuZHBvaW50IHx8ICcnKS50cmltKCk7XG5cbiAgaWYoaXNFbXB0eSh0YXJnZXRFbmRwb2ludCkpIHtcbiAgICB0aHJvdyBuZXcgQXBpRXJyb3IoWydpbnZhbGlkX3VybCddLCAncmVzdF9lbmRwb2ludF9yZXF1aXJlZCcpO1xuICB9XG5cbiAgaWYoL15odHRwcz86XFwvXFwvL2kudGVzdCh0YXJnZXRFbmRwb2ludCkpIHtcbiAgICByZXR1cm4gdGFyZ2V0RW5kcG9pbnQ7XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgY29uZmlndXJlZEVuZHBvaW50ID0gY29uZmlnLmFwcD8uYXBpPy5lbmRwb2ludHM/Llt0YXJnZXRFbmRwb2ludF0gfHwgJyc7XG5cbiAgaWYoaXNFbXB0eShjb25maWd1cmVkRW5kcG9pbnQpKSB7XG4gICAgdGhyb3cgbmV3IEFwaUVycm9yKFsnaW52YWxpZF91cmwnXSwgYHJlc3RfZW5kcG9pbnRfbm90X2NvbmZpZ3VyZWQ6JHt0YXJnZXRFbmRwb2ludH1gKTtcbiAgfVxuXG4gIHJldHVybiBjb25maWd1cmVkRW5kcG9pbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzdFJlcXVlc3QgPSBhc3luYyA8VCA9IEFwaVJlc3VsdHNUeXBlPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgZW5kcG9pbnQ6IHN0cmluZyxcbiAgbWV0aG9kOiBSZXN0TWV0aG9kID0gJ0dFVCcsXG4gIHBhcmFtcz86IHVua25vd24sXG4gIG9wdGlvbnM6IFJlc3RBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCB7YXV0aGVudGljYXRlID0gZmFsc2UsIG9uU3VjY2VzcywgLi4uaHVudGVyT3B0aW9uc30gPSBvcHRpb25zO1xuICBjb25zdCB1cmwgPSByZXNvbHZlUmVzdEVuZHBvaW50KGZsdXgsIGVuZHBvaW50KTtcbiAgY29uc3QgcmVxdWVzdE1ldGhvZCA9IFN0cmluZyhtZXRob2QgfHwgJ0dFVCcpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IHJldHJ5OiBSZXRyeVR5cGUgPSB7XG4gICAgcmVxdWVzdDoge21ldGhvZDogcmVxdWVzdE1ldGhvZCwgcGFyYW1zLCB1cmx9LFxuICAgIHJlc3BvbnNlTWV0aG9kOiBvblN1Y2Nlc3MgfHwgKCgpID0+IHt9KVxuICB9O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbmV0d29ya1R5cGU6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ2FwcC5uZXR3b3JrVHlwZScpIGFzIHN0cmluZztcblxuICAgIGlmKG5ldHdvcmtUeXBlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtyZXRyeSwgdHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19FUlJPUn0pIGFzIFByb21pc2U8VD47XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSBhdXRoZW50aWNhdGUgPyBhd2FpdCByZXNvbHZlQXV0aFRva2VuKGZsdXgpIDogaHVudGVyT3B0aW9ucy50b2tlbjtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogSHVudGVyT3B0aW9uc1R5cGUgPSB7XG4gICAgICAuLi5odW50ZXJPcHRpb25zLFxuICAgICAgLi4uKHRva2VuID8ge3Rva2VufSA6IHt9KVxuICAgIH07XG4gICAgbGV0IGRhdGE6IFQ7XG5cbiAgICBzd2l0Y2gocmVxdWVzdE1ldGhvZCkge1xuICAgICAgY2FzZSAnREVMRVRFJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IGRlbCh1cmwsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnR0VUJzpcbiAgICAgICAgZGF0YSA9IGF3YWl0IGdldCh1cmwsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnUE9TVCc6XG4gICAgICAgIGRhdGEgPSBhd2FpdCBwb3N0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQVVQnOlxuICAgICAgICBkYXRhID0gYXdhaXQgcHV0KHVybCwgcGFyYW1zLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBkYXRhID0gYXdhaXQgYWpheCh1cmwsIHJlcXVlc3RNZXRob2QsIHBhcmFtcywgcmVxdWVzdE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX1NVQ0NFU1N9KTtcblxuICAgIHJldHVybiBvblN1Y2Nlc3MgPyBvblN1Y2Nlc3MoZGF0YSkgOiBkYXRhO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JzID0gZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciA/IGVycm9yLmVycm9ycyA6IFtdO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpIHx8IG1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IG1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgICByZXR1cm4ge30gYXMgVDtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5ID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB2YXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzID0ge30sXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW10sXG4gIHR5cGUgPSAncXVlcnknXG4pID0+IHtcbiAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7Li4udmFyaWFibGVzIHx8IHt9fTtcbiAgY29uc3QgdmFyaWFibGVLZXlzID0gT2JqZWN0LmtleXMocXVlcnlWYXJpYWJsZXMpO1xuICBjb25zdCBxdWVyeU5hbWUgPSBuYW1lLnJlcGxhY2UoLyAvZywgJycpO1xuICBsZXQgcXVlcnk6IHN0cmluZztcblxuICBpZih0eXBlID09PSAnbXV0YXRpb24nKSB7XG4gICAgY29uc3QgbXV0YXRpb25OYW1lID0gdXBwZXJGaXJzdChjYW1lbENhc2UoZGF0YVR5cGUpKSArIHVwcGVyRmlyc3QoY2FtZWxDYXNlKHF1ZXJ5TmFtZSkpO1xuICAgIHF1ZXJ5ID0gYCR7dHlwZX0gJHttdXRhdGlvbk5hbWV9JHtcbiAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJCR7a2V5fTogJHtxdWVyeVZhcmlhYmxlc1trZXldLnR5cGV9YCkuam9pbignLCAnKX0pYFxuICAgICAgICA6ICcnXG4gICAgfSB7XG4gICAgICAke2RhdGFUeXBlfSB7XG4gICAgICAgICR7Y2FtZWxDYXNlKHF1ZXJ5TmFtZSl9JHtcbiAgICAgICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAke2tleX06ICQke2tleX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgJHtyZXR1cm5Qcm9wZXJ0aWVzPy5sZW5ndGggPyBgeyR7cmV0dXJuUHJvcGVydGllcy5qb2luKCcsICcpfX1gIDogJyd9XG4gICAgICB9XG4gICAgfWA7XG4gIH0gZWxzZSB7XG4gICAgcXVlcnkgPSBgJHt0eXBlfSAke3F1ZXJ5TmFtZX0ke1xuICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAkJHtrZXl9OiAke3F1ZXJ5VmFyaWFibGVzW2tleV0udHlwZX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgIDogJydcbiAgICB9IHtcbiAgICAgICR7ZGF0YVR5cGV9IHtcbiAgICAgICAgJHtjYW1lbENhc2UocXVlcnlOYW1lKX0ke1xuICAgICAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCR7a2V5fTogJCR7a2V5fWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfVxuICAgICAgICAke3JldHVyblByb3BlcnRpZXM/Lmxlbmd0aCA/IGB7JHtyZXR1cm5Qcm9wZXJ0aWVzLmpvaW4oJywgJyl9fWAgOiAnJ31cbiAgICAgIH1cbiAgICB9YDtcbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRWYXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gdmFyaWFibGVLZXlzLnJlZHVjZSgocXVlcnlEYXRhLCBrZXkpID0+IHtcbiAgICBxdWVyeURhdGFba2V5XSA9IHF1ZXJ5VmFyaWFibGVzW2tleV0udmFsdWU7XG4gICAgcmV0dXJuIHF1ZXJ5RGF0YTtcbiAgfSwge30pO1xuXG4gIHJldHVybiB7cXVlcnksIHZhcmlhYmxlczogdXBkYXRlZFZhcmlhYmxlc307XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTXV0YXRpb24gPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSB7fSxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10gPSBbXVxuKSA9PiBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgdmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzLCAnbXV0YXRpb24nKTtcblxuZXhwb3J0IGNvbnN0IGFwcFF1ZXJ5ID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBhcHBVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXJsIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFwcE11dGF0aW9uID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZU11dGF0aW9uKG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBhcHBVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXJsIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHB1YmxpY1F1ZXJ5ID0gPFQ+KFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICBxdWVyeVZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMsXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4gPT4ge1xuICBjb25zdCBxdWVyeSA9IGNyZWF0ZVF1ZXJ5KG5hbWUsIGRhdGFUeXBlLCBxdWVyeVZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcyk7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCBwdWJsaWNVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8ucHVibGljIHx8ICcnO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNNdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcHVibGljVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkSW1hZ2UgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGltYWdlLFxuICBvcHRpb25zOiBIdW50ZXJPcHRpb25zVHlwZSA9IHt9XG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICBjb25zdCB1cGxvYWRJbWFnZVVybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy51cGxvYWRJbWFnZSB8fCAnJztcbiAgY29uc3QgdG9rZW4gPSBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKTtcblxuICBpZihpc0VtcHR5KHVwbG9hZEltYWdlVXJsKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgQXBpRXJyb3IoWydpbnZhbGlkX3VybCddLCAndXBsb2FkX2VuZHBvaW50X25vdF9jb25maWd1cmVkJykpO1xuICB9XG5cbiAgaWYoaXNFbXB0eSh0b2tlbikpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKFsnaW52YWxpZF9zZXNzaW9uJ10sICdtaXNzaW5nX2F1dGhfdG9rZW4nKSk7XG4gIH1cblxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XG5cbiAgaWYodHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyAmJiBpbWFnZSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgaGVhZGVycy5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gZmV0Y2godXBsb2FkSW1hZ2VVcmwsIHtcbiAgICAgIGJvZHk6IGltYWdlLFxuICAgICAgaGVhZGVycyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSkudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSB8fCAnJztcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZVR5cGUuaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICA/IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICA6IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcblxuICAgICAgaWYoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAmJiAnZXJyb3InIGluIGRhdGFcbiAgICAgICAgICA/IFN0cmluZygoZGF0YSBhcyB7ZXJyb3I/OiBzdHJpbmd9KS5lcnJvciB8fCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICAgIDogU3RyaW5nKGRhdGEgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ3VwbG9hZF9lcnJvciddLCBtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGEgYXMgQXBpUmVzdWx0c1R5cGU7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcG9zdCh1cGxvYWRJbWFnZVVybCwgaW1hZ2UsIHtoZWFkZXJzLCAuLi5vcHRpb25zfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFNlc3Npb24gPSBhc3luYyAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIHRva2VuPzogc3RyaW5nLFxuICBleHBpcmVzPzogbnVtYmVyXG4pOiBQcm9taXNlPEZsdXhBY3Rpb24gfCBudWxsPiA9PiB7XG4gIGNvbnN0IHJlZnJlc2hUb2tlbiA9IGlzRW1wdHkodG9rZW4pID8gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJykgOiB0b2tlbjtcblxuICBpZihpc0VtcHR5KHJlZnJlc2hUb2tlbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyhTdHJpbmcocmVmcmVzaFRva2VuKSk7XG5cbiAgaWYodG9rZW5FeHBpcmVzQXQgPiAwICYmIERhdGUubm93KCkgPj0gdG9rZW5FeHBpcmVzQXQpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5HRVRfU0VTU0lPTl9FUlJPUn0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgICBjb25zdCByZXF1ZXN0ZWRFeHBpcmVzID0gTWF0aC5tYXgoXG4gICAgICAxLFxuICAgICAgTnVtYmVyKGV4cGlyZXMgfHwgY29uZmlnLmFwcD8uc2Vzc2lvbj8ubWF4TWludXRlcyB8fCBERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMpXG4gICAgKTtcbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgIGV4cGlyZXM6IHtcbiAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgIHZhbHVlOiByZXF1ZXN0ZWRFeHBpcmVzXG4gICAgICB9LFxuICAgICAgdG9rZW46IHtcbiAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICB2YWx1ZTogcmVmcmVzaFRva2VuXG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvblN1Y2Nlc3MgPSBhc3luYyAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgY29uc3QgcmF3U2Vzc2lvbkRhdGEgPSAoZGF0YSBhcyB7dXNlcnM/OiB7cmVmcmVzaFNlc3Npb24/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn19KT8udXNlcnM/LnJlZnJlc2hTZXNzaW9uO1xuICAgICAgY29uc3Qgc2Vzc2lvbkRhdGEgPSByYXdTZXNzaW9uRGF0YSAmJiB0eXBlb2YgcmF3U2Vzc2lvbkRhdGEgPT09ICdvYmplY3QnXG4gICAgICAgID8gcmF3U2Vzc2lvbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicsIHt9KSB8fCB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBjb25zdCBtZXJnZWRTZXNzaW9uID0gYXdhaXQgc3RvcmVTZXNzaW9uKGZsdXgsIHsuLi5jdXJyZW50U2Vzc2lvbiwgLi4uc2Vzc2lvbkRhdGF9KTtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtzZXNzaW9uOiBtZXJnZWRTZXNzaW9uLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfU0VTU0lPTl9TVUNDRVNTfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCBwdWJsaWNNdXRhdGlvbihmbHV4LCAncmVmcmVzaFNlc3Npb24nLCAndXNlcnMnLCBxdWVyeVZhcmlhYmxlcywgWydleHBpcmVzJywgJ2lzc3VlZCcsICd0b2tlbiddLCB7XG4gICAgICBvblN1Y2Nlc3NcbiAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICBpZihlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IGVycm9yTWVzc2FnZSA9PT0gJ2V4cGlyZWRfc2Vzc2lvbicpIHtcbiAgICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICB9XG5cbiAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVVNFUl9DT05TVEFOVFMuR0VUX1NFU1NJT05fRVJST1J9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJBcGlFcnJvciIsImFqYXgiLCJkZWwiLCJnZXQiLCJncmFwaHFsUXVlcnkiLCJwb3N0IiwicHV0IiwiY2FtZWxDYXNlIiwiaXNFbXB0eSIsInVwcGVyRmlyc3QiLCJBUFBfQ09OU1RBTlRTIiwiVVNFUl9DT05TVEFOVFMiLCJnZXRDb25maWdGcm9tRmx1eCIsImNsZWFyUGVyc2lzdGVkU2Vzc2lvbiIsImdldFJlZnJlc2hXaW5kb3dNaW51dGVzIiwiaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZSIsInBhcnNlSnd0RXhwaXJ5TXMiLCJzdG9yZVNlc3Npb24iLCJERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMiLCJERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMiLCJnZXRNaW51dGVzVW50aWwiLCJleHBpcmVzQXQiLCJNYXRoIiwicm91bmQiLCJEYXRlIiwibm93IiwiY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlIiwiZmx1eCIsImNsZWFyQXBwRGF0YSIsImRpc3BhdGNoIiwic2Vzc2lvbiIsInR5cGUiLCJTSUdOX09VVF9TVUNDRVNTIiwicmVzb2x2ZUF1dGhUb2tlbiIsInN0YXRlU2Vzc2lvbiIsImdldFN0YXRlIiwiaHlkcmF0ZWRTZXNzaW9uIiwidG9rZW4iLCJleHBpcmVzIiwiYXV0aEV4cGlyZXMiLCJpc3N1ZWQiLCJhdXRoSXNzdWVkIiwiaHlkcmF0ZWRUb2tlbiIsInRva2VuRXhwaXJlc0F0IiwiY29uZmlnIiwibWludXRlc1VudGlsRXhwaXJ5IiwiTnVtYmVyIiwic2Vzc2lvbkxpZmV0aW1lTWludXRlcyIsInJlZnJlc2hXaW5kb3dNaW51dGVzIiwiYXBwIiwicmVmcmVzaEV4cGlyZXNNaW51dGVzIiwibWF4IiwibWF4TWludXRlcyIsInVwZGF0ZWRTZXNzaW9uIiwicmVmcmVzaFNlc3Npb24iLCJuZXdUb2tlbiIsImdldEdyYXBocWwiLCJ1cmwiLCJhdXRoZW50aWNhdGUiLCJxdWVyeSIsIm9wdGlvbnMiLCJvblN1Y2Nlc3MiLCJyZXRyeSIsInJlc3BvbnNlTWV0aG9kIiwibmV0d29ya1R5cGUiLCJBUElfTkVUV09SS19FUlJPUiIsInRoZW4iLCJyZXN1bHRzIiwiQVBJX05FVFdPUktfU1VDQ0VTUyIsImRhdGEiLCJjYXRjaCIsImVycm9yIiwiZXJyb3JzIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVqZWN0IiwicmVzb2x2ZSIsIm1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVSZXN0RW5kcG9pbnQiLCJlbmRwb2ludCIsInRhcmdldEVuZHBvaW50IiwiU3RyaW5nIiwidHJpbSIsInRlc3QiLCJjb25maWd1cmVkRW5kcG9pbnQiLCJhcGkiLCJlbmRwb2ludHMiLCJyZXN0UmVxdWVzdCIsIm1ldGhvZCIsInBhcmFtcyIsImh1bnRlck9wdGlvbnMiLCJyZXF1ZXN0TWV0aG9kIiwidG9VcHBlckNhc2UiLCJyZXF1ZXN0IiwicmVxdWVzdE9wdGlvbnMiLCJjcmVhdGVRdWVyeSIsIm5hbWUiLCJkYXRhVHlwZSIsInZhcmlhYmxlcyIsInJldHVyblByb3BlcnRpZXMiLCJxdWVyeVZhcmlhYmxlcyIsInZhcmlhYmxlS2V5cyIsIk9iamVjdCIsImtleXMiLCJxdWVyeU5hbWUiLCJyZXBsYWNlIiwibXV0YXRpb25OYW1lIiwibGVuZ3RoIiwibWFwIiwia2V5Iiwiam9pbiIsInVwZGF0ZWRWYXJpYWJsZXMiLCJyZWR1Y2UiLCJxdWVyeURhdGEiLCJ2YWx1ZSIsImNyZWF0ZU11dGF0aW9uIiwiYXBwUXVlcnkiLCJhcHBVcmwiLCJhcHBNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicHVibGljVXJsIiwicHVibGljIiwicHVibGljTXV0YXRpb24iLCJ1cGxvYWRJbWFnZSIsImltYWdlIiwidXBsb2FkSW1hZ2VVcmwiLCJoZWFkZXJzIiwiSGVhZGVycyIsInNldCIsIkZvcm1EYXRhIiwiZmV0Y2giLCJib2R5IiwicmVzcG9uc2UiLCJyZXNwb25zZVR5cGUiLCJqc29uIiwidGV4dCIsIm9rIiwic3RhdHVzVGV4dCIsInJlZnJlc2hUb2tlbiIsIkdFVF9TRVNTSU9OX0VSUk9SIiwicmVxdWVzdGVkRXhwaXJlcyIsInJhd1Nlc3Npb25EYXRhIiwidXNlcnMiLCJzZXNzaW9uRGF0YSIsImN1cnJlbnRTZXNzaW9uIiwibWVyZ2VkU2Vzc2lvbiIsIlVQREFURV9TRVNTSU9OX1NVQ0NFU1MiLCJlcnJvck1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsWUFBWSxFQUFFQyxJQUFJLEVBQUVDLEdBQUcsUUFBTyxvQkFBb0I7QUFDcEYsU0FBUUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLFVBQVUsUUFBTyxlQUFlO0FBRTVELFNBQVFDLGFBQWEsUUFBTyx3QkFBd0I7QUFDcEQsU0FBUUMsY0FBYyxRQUFPLHlCQUF5QjtBQUN0RCxTQUFRQyxpQkFBaUIsUUFBTyxtQkFBbUI7QUFDbkQsU0FBUUMscUJBQXFCLEVBQUVDLHVCQUF1QixFQUFFQyx5QkFBeUIsRUFBRUMsZ0JBQWdCLEVBQUVDLFlBQVksUUFBTyxlQUFlO0FBd0V2SSxNQUFNQyxpQ0FBaUM7QUFDdkMsTUFBTUMsOEJBQThCO0FBRXBDLE1BQU1DLGtCQUFrQixDQUFDQyxZQUN2QkMsS0FBS0MsS0FBSyxDQUFDLEFBQUNGLENBQUFBLFlBQVlHLEtBQUtDLEdBQUcsRUFBQyxJQUFNLENBQUEsT0FBTyxFQUFDO0FBRWpELE1BQU1DLDJCQUEyQixPQUFPQztJQUN0QyxNQUFNZCxzQkFBc0JjO0lBQzVCLE1BQU1BLEtBQUtDLFlBQVk7SUFDdkIsTUFBTUQsS0FBS0UsUUFBUSxDQUFDO1FBQUNDLFNBQVMsQ0FBQztRQUFHQyxNQUFNcEIsZUFBZXFCLGdCQUFnQjtJQUFBO0FBQ3pFO0FBRUEsTUFBTUMsbUJBQW1CLE9BQU9OO0lBQzlCLE1BQU1PLGVBQTZCUCxLQUFLUSxRQUFRLENBQUMsbUJBQW1C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
@@ -8,9 +8,9 @@ export declare const createBaseActions: <T extends BaseAdapterOptions>(flux: Flu
8
8
  createMutationAction: <R = any>(mutationName: string, dataType: string, queryVariables: Record<string, any>, props: string[], successType: string, errorType: string, mutationFn: any) => (input?: unknown) => Promise<R>;
9
9
  createQueryAction: <R = any>(queryName: string, dataType: string, queryVariables: Record<string, any>, props: string[], successType: string, errorType: string, queryFn: any) => () => Promise<R>;
10
10
  flux: FluxFramework;
11
- updateAdapter: (adapter: (input: unknown, options?: T) => any) => void;
11
+ updateAdapter: (adapter: (input: unknown, options?: T | undefined) => any) => void;
12
12
  updateOptions: (options: T) => void;
13
13
  updateAdapterOptions: (options: T) => void;
14
- validator: (input: unknown, validatorOptions?: T) => any;
14
+ validator: (input: unknown, validatorOptions?: T | undefined) => any;
15
15
  };
16
16
  //# sourceMappingURL=baseActionFactory.d.ts.map
@@ -1,3 +1,3 @@
1
1
  import { DateTime } from 'luxon';
2
- export declare const parseDateTime: (value: string | number | DateTime) => any;
2
+ export declare const parseDateTime: (value: string | number | DateTime) => number;
3
3
  //# sourceMappingURL=dateUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../src/utils/dateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/B,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,QAAQ,QAQ9D,CAAC"}
1
+ {"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../src/utils/dateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/B,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,QAAQ,WAQ9D,CAAC"}
@@ -2,13 +2,13 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, refreshSession, uploadImage, type ApiResultsType, type ReaktorDbCollection, type SessionType } from './api.js';
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, refreshSession, resolveRestEndpoint, restRequest, uploadImage, type ApiResultsType, type ReaktorDbCollection, type RestApiOptions, type RestMethod, type SessionType } from './api.js';
6
6
  export { createAction, createActions, createAllActions, type ActionOptions, type ActionReturnType, type ActionType, type ActionTypes } from './actionFactory.js';
7
7
  export { createBaseActions, type BaseActionOptions } from './baseActionFactory.js';
8
8
  export { createValidatorFactory, createValidatorManager, type BaseAdapterOptions } from './validatorFactory.js';
9
9
  export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
10
10
  export { PermissionGuard, PermissionLevel, usePermissions, type Permission, type PermissionGuardProps, type UsePermissionsReturn } from './permissionUtils.js';
11
- export { useMetropolis } from './useMetropolis.js';
11
+ export { useContentActions, useCrmActions, useEventActions, useGroupActions, useImageActions, useLocationActions, useMessageActions, useMetropolis, useMetropolisConfig, useMetropolisFlux, usePermissionActions, usePersonaActions, usePostActions, useReactionActions, useRestActions, useTagActions, useTranslationActions, useUserActions, useVideoActions, useWebsocketActions } from './useMetropolis.js';
12
12
  export { useConversationTyping, type ConversationTypingOptions, type UseConversationTypingOptions } from './useConversationTyping.js';
13
13
  export { useTranslations } from './useTranslations.js';
14
14
  export * from './app.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,KAAK,4BAA4B,EAAC,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAGrD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,KAAK,4BAA4B,EAAC,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAGrD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */ // Export API utilities
5
- export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, refreshSession, uploadImage } from './api.js';
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, refreshSession, resolveRestEndpoint, restRequest, uploadImage } from './api.js';
6
6
  // Export action factory
7
7
  export { createAction, createActions, createAllActions } from './actionFactory.js';
8
8
  // Export base action factory
@@ -12,7 +12,7 @@ export { createValidatorFactory, createValidatorManager } from './validatorFacto
12
12
  // Export React hooks
13
13
  export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
14
14
  export { PermissionGuard, PermissionLevel, usePermissions } from './permissionUtils.js';
15
- export { useMetropolis } from './useMetropolis.js';
15
+ export { useContentActions, useCrmActions, useEventActions, useGroupActions, useImageActions, useLocationActions, useMessageActions, useMetropolis, useMetropolisConfig, useMetropolisFlux, usePermissionActions, usePersonaActions, usePostActions, useReactionActions, useRestActions, useTagActions, useTranslationActions, useUserActions, useVideoActions, useWebsocketActions } from './useMetropolis.js';
16
16
  export { useConversationTyping } from './useConversationTyping.js';
17
17
  export { useTranslations } from './useTranslations.js';
18
18
  // Export utility functions
@@ -23,4 +23,4 @@ export * from './i18n.js';
23
23
  export * from './location.js';
24
24
  export * from './session.js';
25
25
 
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLy8gRXhwb3J0IEFQSSB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGFwcE11dGF0aW9uLFxuICBhcHBRdWVyeSxcbiAgZ2V0R3JhcGhxbCxcbiAgcHVibGljTXV0YXRpb24sXG4gIHB1YmxpY1F1ZXJ5LFxuICByZWZyZXNoU2Vzc2lvbixcbiAgdXBsb2FkSW1hZ2UsXG4gIHR5cGUgQXBpUmVzdWx0c1R5cGUsXG4gIHR5cGUgUmVha3RvckRiQ29sbGVjdGlvbixcbiAgdHlwZSBTZXNzaW9uVHlwZVxufSBmcm9tICcuL2FwaS5qcyc7XG5cbi8vIEV4cG9ydCBhY3Rpb24gZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlQWN0aW9uLFxuICBjcmVhdGVBY3Rpb25zLFxuICBjcmVhdGVBbGxBY3Rpb25zLFxuICB0eXBlIEFjdGlvbk9wdGlvbnMsXG4gIHR5cGUgQWN0aW9uUmV0dXJuVHlwZSxcbiAgdHlwZSBBY3Rpb25UeXBlLFxuICB0eXBlIEFjdGlvblR5cGVzXG59IGZyb20gJy4vYWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8vIEV4cG9ydCBiYXNlIGFjdGlvbiBmYWN0b3J5XG5leHBvcnQge1xuICBjcmVhdGVCYXNlQWN0aW9ucyxcbiAgdHlwZSBCYXNlQWN0aW9uT3B0aW9uc1xufSBmcm9tICcuL2Jhc2VBY3Rpb25GYWN0b3J5LmpzJztcblxuLy8gRXhwb3J0IHZhbGlkYXRvciBmYWN0b3J5XG5leHBvcnQge1xuICBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5LFxuICBjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyLFxuICB0eXBlIEJhc2VBZGFwdGVyT3B0aW9uc1xufSBmcm9tICcuL3ZhbGlkYXRvckZhY3RvcnkuanMnO1xuXG4vLyBFeHBvcnQgUmVhY3QgaG9va3NcbmV4cG9ydCB7TWV0cm9wb2xpc0NvbnRleHQsIE1ldHJvcG9saXNQcm92aWRlcn0gZnJvbSAnLi9NZXRyb3BvbGlzUHJvdmlkZXIuanMnO1xuZXhwb3J0IHtcbiAgUGVybWlzc2lvbkd1YXJkLFxuICBQZXJtaXNzaW9uTGV2ZWwsXG4gIHVzZVBlcm1pc3Npb25zLFxuICB0eXBlIFBlcm1pc3Npb24sXG4gIHR5cGUgUGVybWlzc2lvbkd1YXJkUHJvcHMsXG4gIHR5cGUgVXNlUGVybWlzc2lvbnNSZXR1cm5cbn0gZnJvbSAnLi9wZXJtaXNzaW9uVXRpbHMuanMnO1xuZXhwb3J0IHt1c2VNZXRyb3BvbGlzfSBmcm9tICcuL3VzZU1ldHJvcG9saXMuanMnO1xuZXhwb3J0IHt1c2VDb252ZXJzYXRpb25UeXBpbmcsIHR5cGUgQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9ucywgdHlwZSBVc2VDb252ZXJzYXRpb25UeXBpbmdPcHRpb25zfSBmcm9tICcuL3VzZUNvbnZlcnNhdGlvblR5cGluZy5qcyc7XG5leHBvcnQge3VzZVRyYW5zbGF0aW9uc30gZnJvbSAnLi91c2VUcmFuc2xhdGlvbnMuanMnO1xuXG4vLyBFeHBvcnQgdXRpbGl0eSBmdW5jdGlvbnNcbmV4cG9ydCAqIGZyb20gJy4vYXBwLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZVV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhdGlvbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb24uanMnO1xuXG4iXSwibmFtZXMiOlsiYXBwTXV0YXRpb24iLCJhcHBRdWVyeSIsImdldEdyYXBocWwiLCJwdWJsaWNNdXRhdGlvbiIsInB1YmxpY1F1ZXJ5IiwicmVmcmVzaFNlc3Npb24iLCJ1cGxvYWRJbWFnZSIsImNyZWF0ZUFjdGlvbiIsImNyZWF0ZUFjdGlvbnMiLCJjcmVhdGVBbGxBY3Rpb25zIiwiY3JlYXRlQmFzZUFjdGlvbnMiLCJjcmVhdGVWYWxpZGF0b3JGYWN0b3J5IiwiY3JlYXRlVmFsaWRhdG9yTWFuYWdlciIsIk1ldHJvcG9saXNDb250ZXh0IiwiTWV0cm9wb2xpc1Byb3ZpZGVyIiwiUGVybWlzc2lvbkd1YXJkIiwiUGVybWlzc2lvbkxldmVsIiwidXNlUGVybWlzc2lvbnMiLCJ1c2VNZXRyb3BvbGlzIiwidXNlQ29udmVyc2F0aW9uVHlwaW5nIiwidXNlVHJhbnNsYXRpb25zIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCx1QkFBdUI7QUFDdkIsU0FDRUEsV0FBVyxFQUNYQyxRQUFRLEVBQ1JDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLGNBQWMsRUFDZEMsV0FBVyxRQUlOLFdBQVc7QUFFbEIsd0JBQXdCO0FBQ3hCLFNBQ0VDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxnQkFBZ0IsUUFLWCxxQkFBcUI7QUFFNUIsNkJBQTZCO0FBQzdCLFNBQ0VDLGlCQUFpQixRQUVaLHlCQUF5QjtBQUVoQywyQkFBMkI7QUFDM0IsU0FDRUMsc0JBQXNCLEVBQ3RCQyxzQkFBc0IsUUFFakIsd0JBQXdCO0FBRS9CLHFCQUFxQjtBQUNyQixTQUFRQyxpQkFBaUIsRUFBRUMsa0JBQWtCLFFBQU8sMEJBQTBCO0FBQzlFLFNBQ0VDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxjQUFjLFFBSVQsdUJBQXVCO0FBQzlCLFNBQVFDLGFBQWEsUUFBTyxxQkFBcUI7QUFDakQsU0FBUUMscUJBQXFCLFFBQTBFLDZCQUE2QjtBQUNwSSxTQUFRQyxlQUFlLFFBQU8sdUJBQXVCO0FBRXJELDJCQUEyQjtBQUMzQixjQUFjLFdBQVc7QUFDekIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxZQUFZO0FBQzFCLGNBQWMsWUFBWTtBQUMxQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWUifQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLy8gRXhwb3J0IEFQSSB1dGlsaXRpZXNcbmV4cG9ydCB7XG4gIGFwcE11dGF0aW9uLFxuICBhcHBRdWVyeSxcbiAgZ2V0R3JhcGhxbCxcbiAgcHVibGljTXV0YXRpb24sXG4gIHB1YmxpY1F1ZXJ5LFxuICByZWZyZXNoU2Vzc2lvbixcbiAgcmVzb2x2ZVJlc3RFbmRwb2ludCxcbiAgcmVzdFJlcXVlc3QsXG4gIHVwbG9hZEltYWdlLFxuICB0eXBlIEFwaVJlc3VsdHNUeXBlLFxuICB0eXBlIFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHR5cGUgUmVzdEFwaU9wdGlvbnMsXG4gIHR5cGUgUmVzdE1ldGhvZCxcbiAgdHlwZSBTZXNzaW9uVHlwZVxufSBmcm9tICcuL2FwaS5qcyc7XG5cbi8vIEV4cG9ydCBhY3Rpb24gZmFjdG9yeVxuZXhwb3J0IHtcbiAgY3JlYXRlQWN0aW9uLFxuICBjcmVhdGVBY3Rpb25zLFxuICBjcmVhdGVBbGxBY3Rpb25zLFxuICB0eXBlIEFjdGlvbk9wdGlvbnMsXG4gIHR5cGUgQWN0aW9uUmV0dXJuVHlwZSxcbiAgdHlwZSBBY3Rpb25UeXBlLFxuICB0eXBlIEFjdGlvblR5cGVzXG59IGZyb20gJy4vYWN0aW9uRmFjdG9yeS5qcyc7XG5cbi8vIEV4cG9ydCBiYXNlIGFjdGlvbiBmYWN0b3J5XG5leHBvcnQge1xuICBjcmVhdGVCYXNlQWN0aW9ucyxcbiAgdHlwZSBCYXNlQWN0aW9uT3B0aW9uc1xufSBmcm9tICcuL2Jhc2VBY3Rpb25GYWN0b3J5LmpzJztcblxuLy8gRXhwb3J0IHZhbGlkYXRvciBmYWN0b3J5XG5leHBvcnQge1xuICBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5LFxuICBjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyLFxuICB0eXBlIEJhc2VBZGFwdGVyT3B0aW9uc1xufSBmcm9tICcuL3ZhbGlkYXRvckZhY3RvcnkuanMnO1xuXG4vLyBFeHBvcnQgUmVhY3QgaG9va3NcbmV4cG9ydCB7TWV0cm9wb2xpc0NvbnRleHQsIE1ldHJvcG9saXNQcm92aWRlcn0gZnJvbSAnLi9NZXRyb3BvbGlzUHJvdmlkZXIuanMnO1xuZXhwb3J0IHtcbiAgUGVybWlzc2lvbkd1YXJkLFxuICBQZXJtaXNzaW9uTGV2ZWwsXG4gIHVzZVBlcm1pc3Npb25zLFxuICB0eXBlIFBlcm1pc3Npb24sXG4gIHR5cGUgUGVybWlzc2lvbkd1YXJkUHJvcHMsXG4gIHR5cGUgVXNlUGVybWlzc2lvbnNSZXR1cm5cbn0gZnJvbSAnLi9wZXJtaXNzaW9uVXRpbHMuanMnO1xuZXhwb3J0IHtcbiAgdXNlQ29udGVudEFjdGlvbnMsXG4gIHVzZUNybUFjdGlvbnMsXG4gIHVzZUV2ZW50QWN0aW9ucyxcbiAgdXNlR3JvdXBBY3Rpb25zLFxuICB1c2VJbWFnZUFjdGlvbnMsXG4gIHVzZUxvY2F0aW9uQWN0aW9ucyxcbiAgdXNlTWVzc2FnZUFjdGlvbnMsXG4gIHVzZU1ldHJvcG9saXMsXG4gIHVzZU1ldHJvcG9saXNDb25maWcsXG4gIHVzZU1ldHJvcG9saXNGbHV4LFxuICB1c2VQZXJtaXNzaW9uQWN0aW9ucyxcbiAgdXNlUGVyc29uYUFjdGlvbnMsXG4gIHVzZVBvc3RBY3Rpb25zLFxuICB1c2VSZWFjdGlvbkFjdGlvbnMsXG4gIHVzZVJlc3RBY3Rpb25zLFxuICB1c2VUYWdBY3Rpb25zLFxuICB1c2VUcmFuc2xhdGlvbkFjdGlvbnMsXG4gIHVzZVVzZXJBY3Rpb25zLFxuICB1c2VWaWRlb0FjdGlvbnMsXG4gIHVzZVdlYnNvY2tldEFjdGlvbnNcbn0gZnJvbSAnLi91c2VNZXRyb3BvbGlzLmpzJztcbmV4cG9ydCB7dXNlQ29udmVyc2F0aW9uVHlwaW5nLCB0eXBlIENvbnZlcnNhdGlvblR5cGluZ09wdGlvbnMsIHR5cGUgVXNlQ29udmVyc2F0aW9uVHlwaW5nT3B0aW9uc30gZnJvbSAnLi91c2VDb252ZXJzYXRpb25UeXBpbmcuanMnO1xuZXhwb3J0IHt1c2VUcmFuc2xhdGlvbnN9IGZyb20gJy4vdXNlVHJhbnNsYXRpb25zLmpzJztcblxuLy8gRXhwb3J0IHV0aWxpdHkgZnVuY3Rpb25zXG5leHBvcnQgKiBmcm9tICcuL2FwcC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYXRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXNzaW9uLmpzJztcbiJdLCJuYW1lcyI6WyJhcHBNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiZ2V0R3JhcGhxbCIsInB1YmxpY011dGF0aW9uIiwicHVibGljUXVlcnkiLCJyZWZyZXNoU2Vzc2lvbiIsInJlc29sdmVSZXN0RW5kcG9pbnQiLCJyZXN0UmVxdWVzdCIsInVwbG9hZEltYWdlIiwiY3JlYXRlQWN0aW9uIiwiY3JlYXRlQWN0aW9ucyIsImNyZWF0ZUFsbEFjdGlvbnMiLCJjcmVhdGVCYXNlQWN0aW9ucyIsImNyZWF0ZVZhbGlkYXRvckZhY3RvcnkiLCJjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyIiwiTWV0cm9wb2xpc0NvbnRleHQiLCJNZXRyb3BvbGlzUHJvdmlkZXIiLCJQZXJtaXNzaW9uR3VhcmQiLCJQZXJtaXNzaW9uTGV2ZWwiLCJ1c2VQZXJtaXNzaW9ucyIsInVzZUNvbnRlbnRBY3Rpb25zIiwidXNlQ3JtQWN0aW9ucyIsInVzZUV2ZW50QWN0aW9ucyIsInVzZUdyb3VwQWN0aW9ucyIsInVzZUltYWdlQWN0aW9ucyIsInVzZUxvY2F0aW9uQWN0aW9ucyIsInVzZU1lc3NhZ2VBY3Rpb25zIiwidXNlTWV0cm9wb2xpcyIsInVzZU1ldHJvcG9saXNDb25maWciLCJ1c2VNZXRyb3BvbGlzRmx1eCIsInVzZVBlcm1pc3Npb25BY3Rpb25zIiwidXNlUGVyc29uYUFjdGlvbnMiLCJ1c2VQb3N0QWN0aW9ucyIsInVzZVJlYWN0aW9uQWN0aW9ucyIsInVzZVJlc3RBY3Rpb25zIiwidXNlVGFnQWN0aW9ucyIsInVzZVRyYW5zbGF0aW9uQWN0aW9ucyIsInVzZVVzZXJBY3Rpb25zIiwidXNlVmlkZW9BY3Rpb25zIiwidXNlV2Vic29ja2V0QWN0aW9ucyIsInVzZUNvbnZlcnNhdGlvblR5cGluZyIsInVzZVRyYW5zbGF0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsdUJBQXVCO0FBQ3ZCLFNBQ0VBLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsV0FBVyxFQUNYQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMsV0FBVyxFQUNYQyxXQUFXLFFBTU4sV0FBVztBQUVsQix3QkFBd0I7QUFDeEIsU0FDRUMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGdCQUFnQixRQUtYLHFCQUFxQjtBQUU1Qiw2QkFBNkI7QUFDN0IsU0FDRUMsaUJBQWlCLFFBRVoseUJBQXlCO0FBRWhDLDJCQUEyQjtBQUMzQixTQUNFQyxzQkFBc0IsRUFDdEJDLHNCQUFzQixRQUVqQix3QkFBd0I7QUFFL0IscUJBQXFCO0FBQ3JCLFNBQVFDLGlCQUFpQixFQUFFQyxrQkFBa0IsUUFBTywwQkFBMEI7QUFDOUUsU0FDRUMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGNBQWMsUUFJVCx1QkFBdUI7QUFDOUIsU0FDRUMsaUJBQWlCLEVBQ2pCQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLGtCQUFrQixFQUNsQkMsaUJBQWlCLEVBQ2pCQyxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLGNBQWMsRUFDZEMsYUFBYSxFQUNiQyxxQkFBcUIsRUFDckJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxtQkFBbUIsUUFDZCxxQkFBcUI7QUFDNUIsU0FBUUMscUJBQXFCLFFBQTBFLDZCQUE2QjtBQUNwSSxTQUFRQyxlQUFlLFFBQU8sdUJBQXVCO0FBRXJELDJCQUEyQjtBQUMzQixjQUFjLFdBQVc7QUFDekIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxZQUFZO0FBQzFCLGNBQWMsWUFBWTtBQUMxQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWUifQ==
@@ -5,6 +5,6 @@
5
5
  import { FluxFramework } from '@nlabs/arkhamjs';
6
6
  import { parseLocation } from '../adapters/locationAdapter/locationAdapter.js';
7
7
  import type { LocationType } from '../adapters/locationAdapter/locationAdapter.js';
8
- export declare const autoCompleteLocation: (this: unknown, flux: FluxFramework, address: string, latitude?: number, longitude?: number, locationProps?: string[], CustomClass?: (location: LocationType) => LocationType) => Promise<LocationType[]>;
8
+ export declare const autoCompleteLocation: (this: unknown, flux: FluxFramework, address: string, latitude?: number | undefined, longitude?: number | undefined, locationProps?: string[] | undefined, CustomClass?: ((location: LocationType) => LocationType) | undefined) => Promise<LocationType[]>;
9
9
  export declare const searchLocations: (flux: FluxFramework, address: string, latitude?: number, longitude?: number, locationProps?: string[], CustomClass?: typeof parseLocation) => Promise<LocationType[]>;
10
10
  //# sourceMappingURL=location.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../src/utils/location.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAG/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAKnF,eAAO,MAAM,oBAAoB,2MA4C1B,CAAC;AAER,eAAO,MAAM,eAAe,GAC1B,MAAM,aAAa,EACnB,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,YAAY,MAAM,EAClB,gBAAe,MAAM,EAAO,EAC5B,cAAa,OAAO,aAA6B,KAChD,OAAO,CAAC,YAAY,EAAE,CAqCxB,CAAC"}
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../src/utils/location.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAG/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAKnF,eAAO,MAAM,oBAAoB,6PA4C1B,CAAC;AAER,eAAO,MAAM,eAAe,GAC1B,MAAM,aAAa,EACnB,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,YAAY,MAAM,EAClB,gBAAe,MAAM,EAAO,EAC5B,cAAa,OAAO,aAA6B,KAChD,OAAO,CAAC,YAAY,EAAE,CAqCxB,CAAC"}
@@ -3,6 +3,6 @@ export interface ActionRequestOptions {
3
3
  readonly cacheTimeout?: number;
4
4
  }
5
5
  export declare const getCachedRequest: <T>(flux: FluxFramework, scope: string, payload?: Record<string, unknown>, options?: ActionRequestOptions) => T | undefined;
6
- export declare const setCachedRequest: <T>(flux: FluxFramework, scope: string, payload: Record<string, unknown>, data: T, options?: ActionRequestOptions) => Promise<T>;
6
+ export declare const setCachedRequest: <T>(flux: FluxFramework, scope: string, payload: Record<string, unknown> | undefined, data: T, options?: ActionRequestOptions) => Promise<T>;
7
7
  export declare const clearCachedRequest: (flux: FluxFramework, scope: string) => Promise<void>;
8
8
  //# sourceMappingURL=requestCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestCache.d.ts","sourceRoot":"","sources":["../../src/utils/requestCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAiCD,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,MAAM,aAAa,EACnB,OAAO,MAAM,EACb,UAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,UAAS,oBAAyB,KACjC,CAAC,GAAG,SAsBN,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,CAAC,EACtC,MAAM,aAAa,EACnB,OAAO,MAAM,EACb,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,MAAM,CAAC,EACP,UAAS,oBAAyB,KACjC,OAAO,CAAC,CAAC,CAeX,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,MAAM,aAAa,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAMzF,CAAC"}
1
+ {"version":3,"file":"requestCache.d.ts","sourceRoot":"","sources":["../../src/utils/requestCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAiCD,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,MAAM,aAAa,EACnB,OAAO,MAAM,EACb,UAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,UAAS,oBAAyB,KACjC,CAAC,GAAG,SAsBN,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,CAAC,EACtC,MAAM,aAAa,EACnB,OAAO,MAAM,EACb,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAK,EACrC,MAAM,CAAC,EACP,UAAS,oBAAyB,KACjC,OAAO,CAAC,CAAC,CAeX,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,MAAM,aAAa,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAMzF,CAAC"}
@@ -49,6 +49,7 @@ export declare const useMetropolisFlux: () => FluxFramework;
49
49
  * These hooks only create the specific action type, improving performance.
50
50
  */
51
51
  export declare const useContentActions: () => any;
52
+ export declare const useCrmActions: () => any;
52
53
  export declare const useEventActions: () => any;
53
54
  export declare const useGroupActions: () => any;
54
55
  export declare const useImageActions: () => any;
@@ -59,6 +60,7 @@ export declare const usePermissionActions: () => any;
59
60
  export declare const usePostActions: () => any;
60
61
  export declare const usePersonaActions: () => any;
61
62
  export declare const useReactionActions: () => any;
63
+ export declare const useRestActions: () => any;
62
64
  export declare const useTagActions: () => any;
63
65
  export declare const useVideoActions: () => any;
64
66
  export declare const useTranslationActions: () => any;
@@ -1 +1 @@
1
- {"version":3,"file":"useMetropolis.d.ts","sourceRoot":"","sources":["../../src/utils/useMetropolis.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,kCAAkC,EAAC,MAAM,oBAAoB,CAAC;AAI3E,OAAO,KAAK,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAmHzE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,EACjE,cAAc,CAAC,wBA0BhB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,QAAO,kCAWtC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,QAAO,aAMpC,CAAC;AAEF;;;GAGG;AAEH,eAAO,MAAM,iBAAiB,WAG7B,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAG9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAG7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,WAGlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAGhC,CAAC;AAEF,eAAO,MAAM,cAAc,WAG1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAG7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAG9B,CAAC;AAEF,eAAO,MAAM,aAAa,WAGzB,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,WAGjC,CAAC;AAEF,eAAO,MAAM,cAAc,WAG1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,WAG/B,CAAC"}
1
+ {"version":3,"file":"useMetropolis.d.ts","sourceRoot":"","sources":["../../src/utils/useMetropolis.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,kCAAkC,EAAC,MAAM,oBAAoB,CAAC;AAI3E,OAAO,KAAK,EAAgB,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAyHzE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,EACjE,cAAc,CAAC,wBA0BhB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,QAAO,kCAWtC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,QAAO,aAMpC,CAAC;AAEF;;;GAGG;AAEH,eAAO,MAAM,iBAAiB,WAG7B,CAAC;AAEF,eAAO,MAAM,aAAa,WAGzB,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAG9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAG7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,WAGlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAGhC,CAAC;AAEF,eAAO,MAAM,cAAc,WAG1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAG7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAG9B,CAAC;AAEF,eAAO,MAAM,cAAc,WAG1B,CAAC;AAEF,eAAO,MAAM,aAAa,WAGzB,CAAC;AAEF,eAAO,MAAM,eAAe,WAG3B,CAAC;AAEF,eAAO,MAAM,qBAAqB,WAGjC,CAAC;AAEF,eAAO,MAAM,cAAc,WAG1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,WAG/B,CAAC"}