@payloadcms/next 3.0.0-alpha.15 → 3.0.0-alpha.17

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 (202) hide show
  1. package/dist/bin/index.js +5 -14
  2. package/dist/bin/install.js +16 -31
  3. package/dist/config.js +2 -12
  4. package/dist/elements/LeaveWithoutSaving/index.js +26 -76
  5. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +11 -29
  6. package/dist/exports/index.js +2 -17
  7. package/dist/graphql/registerSchema.js +0 -1
  8. package/dist/index.js +6 -33
  9. package/dist/layouts/Admin/index.js +9 -32
  10. package/dist/layouts/Root/index.d.ts.map +1 -1
  11. package/dist/layouts/Root/index.js +38 -53
  12. package/dist/next-fileupload/fileFactory.js +9 -19
  13. package/dist/next-fileupload/handlers.js +25 -89
  14. package/dist/next-fileupload/index.js +10 -25
  15. package/dist/next-fileupload/isEligibleRequest.js +2 -12
  16. package/dist/next-fileupload/processMultipart.js +30 -45
  17. package/dist/next-fileupload/processNested.js +4 -14
  18. package/dist/next-fileupload/uploadTimer.js +2 -12
  19. package/dist/next-fileupload/utilities.js +31 -76
  20. package/dist/next-stream-file/index.js +6 -32
  21. package/dist/routes/graphql/handler.js +12 -35
  22. package/dist/routes/graphql/index.js +3 -21
  23. package/dist/routes/graphql/playground.js +6 -16
  24. package/dist/routes/index.js +4 -37
  25. package/dist/routes/rest/RouteError.js +10 -25
  26. package/dist/routes/rest/[collection]/file/[filename]/route.js +23 -38
  27. package/dist/routes/rest/auth/access.js +6 -21
  28. package/dist/routes/rest/auth/forgotPassword.js +6 -21
  29. package/dist/routes/rest/auth/init.js +4 -14
  30. package/dist/routes/rest/auth/login.js +10 -25
  31. package/dist/routes/rest/auth/logout.js +9 -24
  32. package/dist/routes/rest/auth/me.js +8 -23
  33. package/dist/routes/rest/auth/refresh.js +11 -25
  34. package/dist/routes/rest/auth/registerFirstUser.js +8 -23
  35. package/dist/routes/rest/auth/resetPassword.js +8 -23
  36. package/dist/routes/rest/auth/unlock.js +6 -21
  37. package/dist/routes/rest/auth/verifyEmail.js +6 -21
  38. package/dist/routes/rest/buildFormState.js +10 -33
  39. package/dist/routes/rest/checkEndpoints.js +4 -19
  40. package/dist/routes/rest/collections/create.js +8 -23
  41. package/dist/routes/rest/collections/delete.js +14 -29
  42. package/dist/routes/rest/collections/deleteByID.js +9 -24
  43. package/dist/routes/rest/collections/docAccess.js +6 -21
  44. package/dist/routes/rest/collections/find.js +12 -27
  45. package/dist/routes/rest/collections/findByID.js +8 -23
  46. package/dist/routes/rest/collections/findVersionByID.js +8 -23
  47. package/dist/routes/rest/collections/findVersions.js +12 -27
  48. package/dist/routes/rest/collections/restoreVersion.js +8 -23
  49. package/dist/routes/rest/collections/update.js +14 -29
  50. package/dist/routes/rest/collections/updateByID.js +8 -23
  51. package/dist/routes/rest/globals/docAccess.js +6 -21
  52. package/dist/routes/rest/globals/findOne.js +8 -23
  53. package/dist/routes/rest/globals/findVersionByID.js +8 -23
  54. package/dist/routes/rest/globals/findVersions.js +12 -27
  55. package/dist/routes/rest/globals/restoreVersion.js +8 -23
  56. package/dist/routes/rest/globals/update.js +8 -23
  57. package/dist/routes/rest/index.js +91 -120
  58. package/dist/routes/rest/types.js +2 -5
  59. package/dist/utilities/auth.js +7 -17
  60. package/dist/utilities/createPayloadRequest.js +22 -31
  61. package/dist/utilities/getDataAndFile.js +4 -14
  62. package/dist/utilities/getNextI18n.js +11 -21
  63. package/dist/utilities/getNextT.js +11 -21
  64. package/dist/utilities/getPayload.js +8 -23
  65. package/dist/utilities/getRequestLanguage.js +4 -14
  66. package/dist/utilities/getRequestLocales.js +2 -12
  67. package/dist/utilities/initPage.js +22 -37
  68. package/dist/utilities/meta.js +5 -15
  69. package/dist/utilities/timestamp.js +2 -12
  70. package/dist/views/API/RenderJSON/index.js +16 -67
  71. package/dist/views/API/index.client.js +47 -103
  72. package/dist/views/API/index.js +7 -22
  73. package/dist/views/API/meta.js +4 -14
  74. package/dist/views/Account/Settings/index.js +13 -28
  75. package/dist/views/Account/ToggleTheme/index.js +9 -59
  76. package/dist/views/Account/index.js +17 -76
  77. package/dist/views/Account/meta.js +4 -14
  78. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  79. package/dist/views/CreateFirstUser/index.client.js +8 -22
  80. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  81. package/dist/views/CreateFirstUser/index.js +13 -38
  82. package/dist/views/CreateFirstUser/meta.js +4 -14
  83. package/dist/views/Dashboard/Default/index.client.d.ts +2 -0
  84. package/dist/views/Dashboard/Default/index.client.d.ts.map +1 -1
  85. package/dist/views/Dashboard/Default/index.client.js +27 -78
  86. package/dist/views/Dashboard/Default/index.d.ts +2 -0
  87. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  88. package/dist/views/Dashboard/Default/index.js +16 -30
  89. package/dist/views/Dashboard/index.d.ts.map +1 -1
  90. package/dist/views/Dashboard/index.js +16 -79
  91. package/dist/views/Dashboard/meta.js +4 -14
  92. package/dist/views/Document/getCustomViewByKey.js +2 -12
  93. package/dist/views/Document/getCustomViewByPath.js +2 -12
  94. package/dist/views/Document/getMetaBySegment.js +21 -31
  95. package/dist/views/Document/getViewsFromConfig.js +35 -45
  96. package/dist/views/Document/index.js +23 -87
  97. package/dist/views/Document/meta.js +3 -13
  98. package/dist/views/Edit/Default/Auth/APIKey.js +24 -75
  99. package/dist/views/Edit/Default/Auth/index.js +31 -87
  100. package/dist/views/Edit/Default/Auth/types.js +2 -5
  101. package/dist/views/Edit/Default/RenderCustomView.js +0 -1
  102. package/dist/views/Edit/Default/SetDocumentTitle/index.js +11 -21
  103. package/dist/views/Edit/Default/SetStepNav/index.js +12 -22
  104. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  105. package/dist/views/Edit/Default/index.js +32 -84
  106. package/dist/views/Edit/Default/types.js +2 -5
  107. package/dist/views/Edit/index.client.d.ts.map +1 -1
  108. package/dist/views/Edit/index.client.js +16 -66
  109. package/dist/views/Edit/index.js +7 -22
  110. package/dist/views/Edit/meta.js +11 -21
  111. package/dist/views/Edit/sanitizeEditViewProps.js +2 -12
  112. package/dist/views/ForgotPassword/index.js +14 -81
  113. package/dist/views/ForgotPassword/meta.js +4 -14
  114. package/dist/views/List/Default/Cell/cellTypes.spec.js +21 -30
  115. package/dist/views/List/Default/Cell/fields/Array/index.js +8 -23
  116. package/dist/views/List/Default/Cell/fields/Blocks/index.js +11 -26
  117. package/dist/views/List/Default/Cell/fields/Checkbox/index.js +5 -20
  118. package/dist/views/List/Default/Cell/fields/Code/index.js +6 -21
  119. package/dist/views/List/Default/Cell/fields/Date/index.js +7 -22
  120. package/dist/views/List/Default/Cell/fields/File/index.js +8 -23
  121. package/dist/views/List/Default/Cell/fields/JSON/index.js +6 -21
  122. package/dist/views/List/Default/Cell/fields/Relationship/index.js +19 -70
  123. package/dist/views/List/Default/Cell/fields/Richtext/index.js +0 -1
  124. package/dist/views/List/Default/Cell/fields/Select/index.js +10 -25
  125. package/dist/views/List/Default/Cell/fields/Textarea/index.js +4 -19
  126. package/dist/views/List/Default/Cell/fields/index.js +24 -34
  127. package/dist/views/List/Default/Cell/index.js +22 -37
  128. package/dist/views/List/Default/RelationshipProvider/index.js +19 -83
  129. package/dist/views/List/Default/RelationshipProvider/reducer.js +2 -12
  130. package/dist/views/List/Default/index.js +48 -104
  131. package/dist/views/List/Default/types.js +2 -5
  132. package/dist/views/List/index.js +16 -75
  133. package/dist/views/List/meta.js +6 -16
  134. package/dist/views/LivePreview/Context/collisionDetection.js +6 -14
  135. package/dist/views/LivePreview/Context/context.js +4 -22
  136. package/dist/views/LivePreview/Context/index.js +25 -76
  137. package/dist/views/LivePreview/Context/sizeReducer.js +2 -12
  138. package/dist/views/LivePreview/Device/index.js +10 -61
  139. package/dist/views/LivePreview/DeviceContainer/index.js +6 -21
  140. package/dist/views/LivePreview/IFrame/index.js +7 -58
  141. package/dist/views/LivePreview/Preview/index.js +21 -72
  142. package/dist/views/LivePreview/Toolbar/Controls/index.js +22 -37
  143. package/dist/views/LivePreview/Toolbar/SizeInput/index.js +10 -61
  144. package/dist/views/LivePreview/Toolbar/index.js +17 -32
  145. package/dist/views/LivePreview/ToolbarArea/index.js +7 -22
  146. package/dist/views/LivePreview/index.client.js +35 -86
  147. package/dist/views/LivePreview/index.js +6 -21
  148. package/dist/views/LivePreview/meta.js +11 -21
  149. package/dist/views/LivePreview/usePopupWindow.js +11 -21
  150. package/dist/views/Login/LoginForm/index.js +17 -32
  151. package/dist/views/Login/index.js +15 -77
  152. package/dist/views/Login/meta.js +4 -14
  153. package/dist/views/Logout/LogoutClient.js +13 -69
  154. package/dist/views/Logout/index.js +12 -38
  155. package/dist/views/Logout/meta.js +4 -14
  156. package/dist/views/NotFound/index.js +14 -28
  157. package/dist/views/ResetPassword/index.js +20 -46
  158. package/dist/views/ResetPassword/meta.js +4 -14
  159. package/dist/views/Root/index.js +51 -74
  160. package/dist/views/Root/meta.js +28 -38
  161. package/dist/views/Unauthorized/UnauthorizedClient.js +8 -23
  162. package/dist/views/Unauthorized/index.js +6 -29
  163. package/dist/views/Unauthorized/meta.js +4 -14
  164. package/dist/views/Verify/index.js +13 -39
  165. package/dist/views/Verify/meta.js +4 -14
  166. package/dist/views/Version/Default/SetStepNav.js +13 -23
  167. package/dist/views/Version/Default/index.js +35 -91
  168. package/dist/views/Version/Default/types.js +2 -5
  169. package/dist/views/Version/RenderFieldsToDiff/Label/index.js +5 -20
  170. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +16 -31
  171. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +11 -26
  172. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +17 -32
  173. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +6 -62
  174. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +14 -29
  175. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +9 -24
  176. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +6 -62
  177. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +12 -27
  178. package/dist/views/Version/RenderFieldsToDiff/fields/diffMethods.js +2 -12
  179. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +25 -40
  180. package/dist/views/Version/RenderFieldsToDiff/fields/styles.js +2 -12
  181. package/dist/views/Version/RenderFieldsToDiff/fields/types.js +2 -5
  182. package/dist/views/Version/RenderFieldsToDiff/index.js +16 -31
  183. package/dist/views/Version/RenderFieldsToDiff/types.js +2 -5
  184. package/dist/views/Version/Restore/index.js +21 -71
  185. package/dist/views/Version/Restore/types.js +2 -5
  186. package/dist/views/Version/SelectComparison/index.js +25 -80
  187. package/dist/views/Version/SelectComparison/types.js +2 -5
  188. package/dist/views/Version/SelectLocales/index.js +11 -25
  189. package/dist/views/Version/SelectLocales/types.js +2 -5
  190. package/dist/views/Version/index.js +9 -24
  191. package/dist/views/Version/meta.js +9 -19
  192. package/dist/views/Version/shared.js +3 -21
  193. package/dist/views/Versions/buildColumns.js +13 -28
  194. package/dist/views/Versions/cells/AutosaveCell/index.js +8 -59
  195. package/dist/views/Versions/cells/CreatedAt/index.js +10 -25
  196. package/dist/views/Versions/cells/ID/index.js +6 -57
  197. package/dist/views/Versions/index.client.js +19 -70
  198. package/dist/views/Versions/index.js +18 -41
  199. package/dist/views/Versions/meta.js +7 -17
  200. package/dist/views/Versions/types.js +2 -5
  201. package/dist/withPayload.js +2 -3
  202. package/package.json +6 -6
@@ -1,119 +1,90 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- DELETE: function() {
13
- return DELETE;
14
- },
15
- GET: function() {
16
- return GET;
17
- },
18
- PATCH: function() {
19
- return PATCH;
20
- },
21
- POST: function() {
22
- return POST;
23
- }
24
- });
25
- const _httpstatus = /*#__PURE__*/ _interop_require_default(require("http-status"));
26
- const _pathtoregexp = require("path-to-regexp");
27
- const _createPayloadRequest = require("../../utilities/createPayloadRequest");
28
- const _RouteError = require("./RouteError");
29
- const _access = require("./auth/access");
30
- const _forgotPassword = require("./auth/forgotPassword");
31
- const _init = require("./auth/init");
32
- const _login = require("./auth/login");
33
- const _logout = require("./auth/logout");
34
- const _me = require("./auth/me");
35
- const _refresh = require("./auth/refresh");
36
- const _registerFirstUser = require("./auth/registerFirstUser");
37
- const _resetPassword = require("./auth/resetPassword");
38
- const _unlock = require("./auth/unlock");
39
- const _verifyEmail = require("./auth/verifyEmail");
40
- const _buildFormState = require("./buildFormState");
41
- const _checkEndpoints = require("./checkEndpoints");
42
- const _create = require("./collections/create");
43
- const _delete = require("./collections/delete");
44
- const _deleteByID = require("./collections/deleteByID");
45
- const _docAccess = require("./collections/docAccess");
46
- const _find = require("./collections/find");
47
- const _findByID = require("./collections/findByID");
48
- const _findVersionByID = require("./collections/findVersionByID");
49
- const _findVersions = require("./collections/findVersions");
50
- const _restoreVersion = require("./collections/restoreVersion");
51
- const _update = require("./collections/update");
52
- const _updateByID = require("./collections/updateByID");
53
- const _docAccess1 = require("./globals/docAccess");
54
- const _findOne = require("./globals/findOne");
55
- const _findVersionByID1 = require("./globals/findVersionByID");
56
- const _findVersions1 = require("./globals/findVersions");
57
- const _restoreVersion1 = require("./globals/restoreVersion");
58
- const _update1 = require("./globals/update");
59
- function _interop_require_default(obj) {
60
- return obj && obj.__esModule ? obj : {
61
- default: obj
62
- };
63
- }
1
+ import httpStatus from 'http-status';
2
+ import { match } from 'path-to-regexp';
3
+ import { createPayloadRequest } from '../../utilities/createPayloadRequest';
4
+ import { RouteError } from './RouteError';
5
+ import { access } from './auth/access';
6
+ import { forgotPassword } from './auth/forgotPassword';
7
+ import { init } from './auth/init';
8
+ import { login } from './auth/login';
9
+ import { logout } from './auth/logout';
10
+ import { me } from './auth/me';
11
+ import { refresh } from './auth/refresh';
12
+ import { registerFirstUser } from './auth/registerFirstUser';
13
+ import { resetPassword } from './auth/resetPassword';
14
+ import { unlock } from './auth/unlock';
15
+ import { verifyEmail } from './auth/verifyEmail';
16
+ import { buildFormState } from './buildFormState';
17
+ import { endpointsAreDisabled } from './checkEndpoints';
18
+ import { create } from './collections/create';
19
+ import { deleteDoc } from './collections/delete';
20
+ import { deleteByID } from './collections/deleteByID';
21
+ import { docAccess } from './collections/docAccess';
22
+ import { find } from './collections/find';
23
+ import { findByID } from './collections/findByID';
24
+ import { findVersionByID } from './collections/findVersionByID';
25
+ import { findVersions } from './collections/findVersions';
26
+ import { restoreVersion } from './collections/restoreVersion';
27
+ import { update } from './collections/update';
28
+ import { updateByID } from './collections/updateByID';
29
+ import { docAccess as docAccessGlobal } from './globals/docAccess';
30
+ import { findOne } from './globals/findOne';
31
+ import { findVersionByID as findVersionByIdGlobal } from './globals/findVersionByID';
32
+ import { findVersions as findVersionsGlobal } from './globals/findVersions';
33
+ import { restoreVersion as restoreVersionGlobal } from './globals/restoreVersion';
34
+ import { update as updateGlobal } from './globals/update';
64
35
  const endpoints = {
65
36
  collection: {
66
37
  DELETE: {
67
- delete: _delete.deleteDoc,
68
- deleteByID: _deleteByID.deleteByID
38
+ delete: deleteDoc,
39
+ deleteByID
69
40
  },
70
41
  GET: {
71
- 'doc-access-by-id': _docAccess.docAccess,
72
- 'doc-versions-by-id': _findVersionByID.findVersionByID,
73
- find: _find.find,
74
- findByID: _findByID.findByID,
75
- init: _init.init,
76
- me: _me.me,
77
- versions: _findVersions.findVersions
42
+ 'doc-access-by-id': docAccess,
43
+ 'doc-versions-by-id': findVersionByID,
44
+ find,
45
+ findByID,
46
+ init,
47
+ me,
48
+ versions: findVersions
78
49
  },
79
50
  PATCH: {
80
- update: _update.update,
81
- updateByID: _updateByID.updateByID
51
+ update,
52
+ updateByID
82
53
  },
83
54
  POST: {
84
- access: _docAccess.docAccess,
85
- create: _create.create,
86
- 'doc-access-by-id': _docAccess.docAccess,
87
- 'doc-verify-by-id': _verifyEmail.verifyEmail,
88
- 'doc-versions-by-id': _restoreVersion.restoreVersion,
89
- 'first-register': _registerFirstUser.registerFirstUser,
90
- 'forgot-password': _forgotPassword.forgotPassword,
91
- login: _login.login,
92
- logout: _logout.logout,
93
- 'refresh-token': _refresh.refresh,
94
- 'reset-password': _resetPassword.resetPassword,
95
- unlock: _unlock.unlock
55
+ access: docAccess,
56
+ create,
57
+ 'doc-access-by-id': docAccess,
58
+ 'doc-verify-by-id': verifyEmail,
59
+ 'doc-versions-by-id': restoreVersion,
60
+ 'first-register': registerFirstUser,
61
+ 'forgot-password': forgotPassword,
62
+ login,
63
+ logout,
64
+ 'refresh-token': refresh,
65
+ 'reset-password': resetPassword,
66
+ unlock
96
67
  }
97
68
  },
98
69
  global: {
99
70
  GET: {
100
- 'doc-access': _docAccess1.docAccess,
101
- 'doc-versions': _findVersions1.findVersions,
102
- 'doc-versions-by-id': _findVersionByID1.findVersionByID,
103
- findOne: _findOne.findOne
71
+ 'doc-access': docAccessGlobal,
72
+ 'doc-versions': findVersionsGlobal,
73
+ 'doc-versions-by-id': findVersionByIdGlobal,
74
+ findOne
104
75
  },
105
76
  POST: {
106
- 'doc-access': _docAccess1.docAccess,
107
- 'doc-versions-by-id': _restoreVersion1.restoreVersion,
108
- update: _update1.update
77
+ 'doc-access': docAccessGlobal,
78
+ 'doc-versions-by-id': restoreVersionGlobal,
79
+ update: updateGlobal
109
80
  }
110
81
  },
111
82
  root: {
112
83
  GET: {
113
- access: _access.access
84
+ access
114
85
  },
115
86
  POST: {
116
- 'form-state': _buildFormState.buildFormState
87
+ 'form-state': buildFormState
117
88
  }
118
89
  }
119
90
  };
@@ -124,7 +95,7 @@ const handleCustomEndpoints = ({ endpoints, entitySlug, payloadRequest })=>{
124
95
  const pathPrefix = payloadRequest.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '');
125
96
  const customEndpoint = endpoints.find((endpoint)=>{
126
97
  if (endpoint.method === payloadRequest.method.toLowerCase()) {
127
- const pathMatchFn = (0, _pathtoregexp.match)(`${pathPrefix}${endpoint.path}`, {
98
+ const pathMatchFn = match(`${pathPrefix}${endpoint.path}`, {
128
99
  decode: decodeURIComponent
129
100
  });
130
101
  const tempParams = pathMatchFn(pathname);
@@ -144,29 +115,29 @@ const handleCustomEndpoints = ({ endpoints, entitySlug, payloadRequest })=>{
144
115
  const RouteNotFoundResponse = (slug)=>Response.json({
145
116
  message: `Route Not Found: "${slug.join('/')}"`
146
117
  }, {
147
- status: _httpstatus.default.NOT_FOUND
118
+ status: httpStatus.NOT_FOUND
148
119
  });
149
- const GET = (config)=>async (request, { params: { slug } })=>{
120
+ export const GET = (config)=>async (request, { params: { slug } })=>{
150
121
  const [slug1, slug2, slug3, slug4] = slug;
151
122
  let req;
152
123
  let res;
153
124
  let collection;
154
125
  try {
155
- req = await (0, _createPayloadRequest.createPayloadRequest)({
126
+ req = await createPayloadRequest({
156
127
  config,
157
128
  params: {
158
129
  collection: slug1
159
130
  },
160
131
  request
161
132
  });
162
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
133
+ const disableEndpoints = endpointsAreDisabled({
163
134
  endpoints: req.payload.config.endpoints,
164
135
  request
165
136
  });
166
137
  if (disableEndpoints) return disableEndpoints;
167
138
  collection = req.payload.collections?.[slug1];
168
139
  if (collection) {
169
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
140
+ const disableEndpoints = endpointsAreDisabled({
170
141
  endpoints: collection.config.endpoints,
171
142
  request
172
143
  });
@@ -217,7 +188,7 @@ const GET = (config)=>async (request, { params: { slug } })=>{
217
188
  }
218
189
  } else if (slug1 === 'globals') {
219
190
  const globalConfig = req.payload.config.globals.find((global)=>global.slug === slug2);
220
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
191
+ const disableEndpoints = endpointsAreDisabled({
221
192
  endpoints: globalConfig.endpoints,
222
193
  request
223
194
  });
@@ -271,20 +242,20 @@ const GET = (config)=>async (request, { params: { slug } })=>{
271
242
  if (customEndpointResponse) return customEndpointResponse;
272
243
  return RouteNotFoundResponse(slug);
273
244
  } catch (error) {
274
- return (0, _RouteError.RouteError)({
245
+ return RouteError({
275
246
  collection,
276
247
  err: error,
277
248
  req
278
249
  });
279
250
  }
280
251
  };
281
- const POST = (config)=>async (request, { params: { slug } })=>{
252
+ export const POST = (config)=>async (request, { params: { slug } })=>{
282
253
  const [slug1, slug2, slug3, slug4] = slug;
283
254
  let req;
284
255
  let res;
285
256
  let collection;
286
257
  try {
287
- req = await (0, _createPayloadRequest.createPayloadRequest)({
258
+ req = await createPayloadRequest({
288
259
  config,
289
260
  params: {
290
261
  collection: slug1
@@ -292,13 +263,13 @@ const POST = (config)=>async (request, { params: { slug } })=>{
292
263
  request
293
264
  });
294
265
  collection = req.payload.collections?.[slug1];
295
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
266
+ const disableEndpoints = endpointsAreDisabled({
296
267
  endpoints: req.payload.config.endpoints,
297
268
  request
298
269
  });
299
270
  if (disableEndpoints) return disableEndpoints;
300
271
  if (collection) {
301
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
272
+ const disableEndpoints = endpointsAreDisabled({
302
273
  endpoints: collection.config.endpoints,
303
274
  request
304
275
  });
@@ -348,7 +319,7 @@ const POST = (config)=>async (request, { params: { slug } })=>{
348
319
  }
349
320
  } else if (slug1 === 'globals' && slug2) {
350
321
  const globalConfig = req.payload.config.globals.find((global)=>global.slug === slug2);
351
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
322
+ const disableEndpoints = endpointsAreDisabled({
352
323
  endpoints: globalConfig.endpoints,
353
324
  request
354
325
  });
@@ -405,20 +376,20 @@ const POST = (config)=>async (request, { params: { slug } })=>{
405
376
  if (customEndpointResponse) return customEndpointResponse;
406
377
  return RouteNotFoundResponse(slug);
407
378
  } catch (error) {
408
- return (0, _RouteError.RouteError)({
379
+ return RouteError({
409
380
  collection,
410
381
  err: error,
411
382
  req
412
383
  });
413
384
  }
414
385
  };
415
- const DELETE = (config)=>async (request, { params: { slug } })=>{
386
+ export const DELETE = (config)=>async (request, { params: { slug } })=>{
416
387
  const [slug1, slug2] = slug;
417
388
  let req;
418
389
  let res;
419
390
  let collection;
420
391
  try {
421
- req = await (0, _createPayloadRequest.createPayloadRequest)({
392
+ req = await createPayloadRequest({
422
393
  config,
423
394
  params: {
424
395
  collection: slug1
@@ -426,13 +397,13 @@ const DELETE = (config)=>async (request, { params: { slug } })=>{
426
397
  request
427
398
  });
428
399
  collection = req.payload.collections?.[slug1];
429
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
400
+ const disableEndpoints = endpointsAreDisabled({
430
401
  endpoints: req.payload.config.endpoints,
431
402
  request
432
403
  });
433
404
  if (disableEndpoints) return disableEndpoints;
434
405
  if (collection) {
435
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
406
+ const disableEndpoints = endpointsAreDisabled({
436
407
  endpoints: collection.config.endpoints,
437
408
  request
438
409
  });
@@ -470,20 +441,20 @@ const DELETE = (config)=>async (request, { params: { slug } })=>{
470
441
  if (customEndpointResponse) return customEndpointResponse;
471
442
  return RouteNotFoundResponse(slug);
472
443
  } catch (error) {
473
- return (0, _RouteError.RouteError)({
444
+ return RouteError({
474
445
  collection,
475
446
  err: error,
476
447
  req
477
448
  });
478
449
  }
479
450
  };
480
- const PATCH = (config)=>async (request, { params: { slug } })=>{
451
+ export const PATCH = (config)=>async (request, { params: { slug } })=>{
481
452
  const [slug1, slug2] = slug;
482
453
  let req;
483
454
  let res;
484
455
  let collection;
485
456
  try {
486
- req = await (0, _createPayloadRequest.createPayloadRequest)({
457
+ req = await createPayloadRequest({
487
458
  config,
488
459
  params: {
489
460
  collection: slug1
@@ -491,13 +462,13 @@ const PATCH = (config)=>async (request, { params: { slug } })=>{
491
462
  request
492
463
  });
493
464
  collection = req.payload.collections?.[slug1];
494
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
465
+ const disableEndpoints = endpointsAreDisabled({
495
466
  endpoints: req.payload.config.endpoints,
496
467
  request
497
468
  });
498
469
  if (disableEndpoints) return disableEndpoints;
499
470
  if (collection) {
500
- const disableEndpoints = (0, _checkEndpoints.endpointsAreDisabled)({
471
+ const disableEndpoints = endpointsAreDisabled({
501
472
  endpoints: collection.config.endpoints,
502
473
  request
503
474
  });
@@ -535,7 +506,7 @@ const PATCH = (config)=>async (request, { params: { slug } })=>{
535
506
  if (customEndpointResponse) return customEndpointResponse;
536
507
  return RouteNotFoundResponse(slug);
537
508
  } catch (error) {
538
- return (0, _RouteError.RouteError)({
509
+ return RouteError({
539
510
  collection,
540
511
  err: error,
541
512
  req
@@ -543,4 +514,4 @@ const PATCH = (config)=>async (request, { params: { slug } })=>{
543
514
  }
544
515
  };
545
516
 
546
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0ZXMvcmVzdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50IH0gZnJvbSAncGF5bG9hZC9jb25maWcnXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb24sIEdsb2JhbENvbmZpZywgUGF5bG9hZFJlcXVlc3QsIFNhbml0aXplZENvbmZpZyB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCBodHRwU3RhdHVzIGZyb20gJ2h0dHAtc3RhdHVzJ1xuaW1wb3J0IHsgbWF0Y2ggfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCdcblxuaW1wb3J0IHR5cGUge1xuICBDb2xsZWN0aW9uUm91dGVIYW5kbGVyLFxuICBDb2xsZWN0aW9uUm91dGVIYW5kbGVyV2l0aElELFxuICBHbG9iYWxSb3V0ZUhhbmRsZXIsXG4gIEdsb2JhbFJvdXRlSGFuZGxlcldpdGhJRCxcbn0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgY3JlYXRlUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlUGF5bG9hZFJlcXVlc3QnXG5pbXBvcnQgeyBSb3V0ZUVycm9yIH0gZnJvbSAnLi9Sb3V0ZUVycm9yJ1xuaW1wb3J0IHsgYWNjZXNzIH0gZnJvbSAnLi9hdXRoL2FjY2VzcydcbmltcG9ydCB7IGZvcmdvdFBhc3N3b3JkIH0gZnJvbSAnLi9hdXRoL2ZvcmdvdFBhc3N3b3JkJ1xuaW1wb3J0IHsgaW5pdCB9IGZyb20gJy4vYXV0aC9pbml0J1xuaW1wb3J0IHsgbG9naW4gfSBmcm9tICcuL2F1dGgvbG9naW4nXG5pbXBvcnQgeyBsb2dvdXQgfSBmcm9tICcuL2F1dGgvbG9nb3V0J1xuaW1wb3J0IHsgbWUgfSBmcm9tICcuL2F1dGgvbWUnXG5pbXBvcnQgeyByZWZyZXNoIH0gZnJvbSAnLi9hdXRoL3JlZnJlc2gnXG5pbXBvcnQgeyByZWdpc3RlckZpcnN0VXNlciB9IGZyb20gJy4vYXV0aC9yZWdpc3RlckZpcnN0VXNlcidcbmltcG9ydCB7IHJlc2V0UGFzc3dvcmQgfSBmcm9tICcuL2F1dGgvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB7IHVubG9jayB9IGZyb20gJy4vYXV0aC91bmxvY2snXG5pbXBvcnQgeyB2ZXJpZnlFbWFpbCB9IGZyb20gJy4vYXV0aC92ZXJpZnlFbWFpbCdcbmltcG9ydCB7IGJ1aWxkRm9ybVN0YXRlIH0gZnJvbSAnLi9idWlsZEZvcm1TdGF0ZSdcbmltcG9ydCB7IGVuZHBvaW50c0FyZURpc2FibGVkIH0gZnJvbSAnLi9jaGVja0VuZHBvaW50cydcbmltcG9ydCB7IGNyZWF0ZSB9IGZyb20gJy4vY29sbGVjdGlvbnMvY3JlYXRlJ1xuaW1wb3J0IHsgZGVsZXRlRG9jIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9kZWxldGUnXG5pbXBvcnQgeyBkZWxldGVCeUlEIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9kZWxldGVCeUlEJ1xuaW1wb3J0IHsgZG9jQWNjZXNzIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9kb2NBY2Nlc3MnXG5pbXBvcnQgeyBmaW5kIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9maW5kJ1xuaW1wb3J0IHsgZmluZEJ5SUQgfSBmcm9tICcuL2NvbGxlY3Rpb25zL2ZpbmRCeUlEJ1xuaW1wb3J0IHsgZmluZFZlcnNpb25CeUlEIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9maW5kVmVyc2lvbkJ5SUQnXG5pbXBvcnQgeyBmaW5kVmVyc2lvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB7IHJlc3RvcmVWZXJzaW9uIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9yZXN0b3JlVmVyc2lvbidcbmltcG9ydCB7IHVwZGF0ZSB9IGZyb20gJy4vY29sbGVjdGlvbnMvdXBkYXRlJ1xuaW1wb3J0IHsgdXBkYXRlQnlJRCB9IGZyb20gJy4vY29sbGVjdGlvbnMvdXBkYXRlQnlJRCdcbmltcG9ydCB7IGRvY0FjY2VzcyBhcyBkb2NBY2Nlc3NHbG9iYWwgfSBmcm9tICcuL2dsb2JhbHMvZG9jQWNjZXNzJ1xuaW1wb3J0IHsgZmluZE9uZSB9IGZyb20gJy4vZ2xvYmFscy9maW5kT25lJ1xuaW1wb3J0IHsgZmluZFZlcnNpb25CeUlEIGFzIGZpbmRWZXJzaW9uQnlJZEdsb2JhbCB9IGZyb20gJy4vZ2xvYmFscy9maW5kVmVyc2lvbkJ5SUQnXG5pbXBvcnQgeyBmaW5kVmVyc2lvbnMgYXMgZmluZFZlcnNpb25zR2xvYmFsIH0gZnJvbSAnLi9nbG9iYWxzL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB7IHJlc3RvcmVWZXJzaW9uIGFzIHJlc3RvcmVWZXJzaW9uR2xvYmFsIH0gZnJvbSAnLi9nbG9iYWxzL3Jlc3RvcmVWZXJzaW9uJ1xuaW1wb3J0IHsgdXBkYXRlIGFzIHVwZGF0ZUdsb2JhbCB9IGZyb20gJy4vZ2xvYmFscy91cGRhdGUnXG5cbmNvbnN0IGVuZHBvaW50cyA9IHtcbiAgY29sbGVjdGlvbjoge1xuICAgIERFTEVURToge1xuICAgICAgZGVsZXRlOiBkZWxldGVEb2MsXG4gICAgICBkZWxldGVCeUlELFxuICAgIH0sXG4gICAgR0VUOiB7XG4gICAgICAnZG9jLWFjY2Vzcy1ieS1pZCc6IGRvY0FjY2VzcyxcbiAgICAgICdkb2MtdmVyc2lvbnMtYnktaWQnOiBmaW5kVmVyc2lvbkJ5SUQsXG4gICAgICBmaW5kLFxuICAgICAgZmluZEJ5SUQsXG4gICAgICBpbml0LFxuICAgICAgbWUsXG4gICAgICB2ZXJzaW9uczogZmluZFZlcnNpb25zLFxuICAgIH0sXG4gICAgUEFUQ0g6IHtcbiAgICAgIHVwZGF0ZSxcbiAgICAgIHVwZGF0ZUJ5SUQsXG4gICAgfSxcbiAgICBQT1NUOiB7XG4gICAgICBhY2Nlc3M6IGRvY0FjY2VzcyxcbiAgICAgIGNyZWF0ZSxcbiAgICAgICdkb2MtYWNjZXNzLWJ5LWlkJzogZG9jQWNjZXNzLFxuICAgICAgJ2RvYy12ZXJpZnktYnktaWQnOiB2ZXJpZnlFbWFpbCxcbiAgICAgICdkb2MtdmVyc2lvbnMtYnktaWQnOiByZXN0b3JlVmVyc2lvbixcbiAgICAgICdmaXJzdC1yZWdpc3Rlcic6IHJlZ2lzdGVyRmlyc3RVc2VyLFxuICAgICAgJ2ZvcmdvdC1wYXNzd29yZCc6IGZvcmdvdFBhc3N3b3JkLFxuICAgICAgbG9naW4sXG4gICAgICBsb2dvdXQsXG4gICAgICAncmVmcmVzaC10b2tlbic6IHJlZnJlc2gsXG4gICAgICAncmVzZXQtcGFzc3dvcmQnOiByZXNldFBhc3N3b3JkLFxuICAgICAgdW5sb2NrLFxuICAgIH0sXG4gIH0sXG4gIGdsb2JhbDoge1xuICAgIEdFVDoge1xuICAgICAgJ2RvYy1hY2Nlc3MnOiBkb2NBY2Nlc3NHbG9iYWwsXG4gICAgICAnZG9jLXZlcnNpb25zJzogZmluZFZlcnNpb25zR2xvYmFsLFxuICAgICAgJ2RvYy12ZXJzaW9ucy1ieS1pZCc6IGZpbmRWZXJzaW9uQnlJZEdsb2JhbCxcbiAgICAgIGZpbmRPbmUsXG4gICAgfSxcbiAgICBQT1NUOiB7XG4gICAgICAnZG9jLWFjY2Vzcyc6IGRvY0FjY2Vzc0dsb2JhbCxcbiAgICAgICdkb2MtdmVyc2lvbnMtYnktaWQnOiByZXN0b3JlVmVyc2lvbkdsb2JhbCxcbiAgICAgIHVwZGF0ZTogdXBkYXRlR2xvYmFsLFxuICAgIH0sXG4gIH0sXG4gIHJvb3Q6IHtcbiAgICBHRVQ6IHtcbiAgICAgIGFjY2VzcyxcbiAgICB9LFxuICAgIFBPU1Q6IHtcbiAgICAgICdmb3JtLXN0YXRlJzogYnVpbGRGb3JtU3RhdGUsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgaGFuZGxlQ3VzdG9tRW5kcG9pbnRzID0gKHtcbiAgZW5kcG9pbnRzLFxuICBlbnRpdHlTbHVnLFxuICBwYXlsb2FkUmVxdWVzdCxcbn06IHtcbiAgZW5kcG9pbnRzOiBFbmRwb2ludFtdIHwgR2xvYmFsQ29uZmlnWydlbmRwb2ludHMnXVxuICBlbnRpdHlTbHVnPzogc3RyaW5nXG4gIHBheWxvYWRSZXF1ZXN0OiBQYXlsb2FkUmVxdWVzdFxufSk6IFByb21pc2U8UmVzcG9uc2U+IHwgUmVzcG9uc2UgPT4ge1xuICBpZiAoZW5kcG9pbnRzICYmIGVuZHBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IGhhbmRsZXJQYXJhbXMgPSB7fVxuICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHBheWxvYWRSZXF1ZXN0XG4gICAgY29uc3QgcGF0aFByZWZpeCA9XG4gICAgICBwYXlsb2FkUmVxdWVzdC5wYXlsb2FkLmNvbmZpZy5yb3V0ZXMuYXBpICsgKGVudGl0eVNsdWcgPyBgLyR7ZW50aXR5U2x1Z31gIDogJycpXG5cbiAgICBjb25zdCBjdXN0b21FbmRwb2ludCA9IGVuZHBvaW50cy5maW5kKChlbmRwb2ludCkgPT4ge1xuICAgICAgaWYgKGVuZHBvaW50Lm1ldGhvZCA9PT0gcGF5bG9hZFJlcXVlc3QubWV0aG9kLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoRm4gPSBtYXRjaChgJHtwYXRoUHJlZml4fSR7ZW5kcG9pbnQucGF0aH1gLCB7XG4gICAgICAgICAgZGVjb2RlOiBkZWNvZGVVUklDb21wb25lbnQsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHRlbXBQYXJhbXMgPSBwYXRoTWF0Y2hGbihwYXRobmFtZSlcbiAgICAgICAgaWYgKHRlbXBQYXJhbXMpIHtcbiAgICAgICAgICBoYW5kbGVyUGFyYW1zID0gdGVtcFBhcmFtcy5wYXJhbXNcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmIChjdXN0b21FbmRwb2ludCkge1xuICAgICAgcGF5bG9hZFJlcXVlc3Qucm91dGVQYXJhbXMgPSBoYW5kbGVyUGFyYW1zXG4gICAgICByZXR1cm4gY3VzdG9tRW5kcG9pbnQuaGFuZGxlcihwYXlsb2FkUmVxdWVzdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBSb3V0ZU5vdEZvdW5kUmVzcG9uc2UgPSAoc2x1Zzogc3RyaW5nW10pID0+XG4gIFJlc3BvbnNlLmpzb24oXG4gICAge1xuICAgICAgbWVzc2FnZTogYFJvdXRlIE5vdCBGb3VuZDogXCIke3NsdWcuam9pbignLycpfVwiYCxcbiAgICB9LFxuICAgIHsgc3RhdHVzOiBodHRwU3RhdHVzLk5PVF9GT1VORCB9LFxuICApXG5cbmV4cG9ydCBjb25zdCBHRVQgPVxuICAoY29uZmlnOiBQcm9taXNlPFNhbml0aXplZENvbmZpZz4gfCBTYW5pdGl6ZWRDb25maWcpID0+XG4gIGFzeW5jIChyZXF1ZXN0OiBSZXF1ZXN0LCB7IHBhcmFtczogeyBzbHVnIH0gfTogeyBwYXJhbXM6IHsgc2x1Zzogc3RyaW5nW10gfSB9KSA9PiB7XG4gICAgY29uc3QgW3NsdWcxLCBzbHVnMiwgc2x1ZzMsIHNsdWc0XSA9IHNsdWdcbiAgICBsZXQgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICAgIGxldCByZXM6IFJlc3BvbnNlXG4gICAgbGV0IGNvbGxlY3Rpb246IENvbGxlY3Rpb25cblxuICAgIHRyeSB7XG4gICAgICByZXEgPSBhd2FpdCBjcmVhdGVQYXlsb2FkUmVxdWVzdCh7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgY29sbGVjdGlvbjogc2x1ZzEsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgIGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucz8uW3NsdWcxXVxuXG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChkaXNhYmxlRW5kcG9pbnRzKSByZXR1cm4gZGlzYWJsZUVuZHBvaW50c1xuXG4gICAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIGVudGl0eVNsdWc6IHNsdWcxLFxuICAgICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjdXN0b21FbmRwb2ludFJlc3BvbnNlKSByZXR1cm4gY3VzdG9tRW5kcG9pbnRSZXNwb25zZVxuXG4gICAgICAgIHN3aXRjaCAoc2x1Zy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb25cbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLkdFVC5maW5kKHsgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmIChzbHVnMiBpbiBlbmRwb2ludHMuY29sbGVjdGlvbi5HRVQpIHtcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2luaXRcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL21lXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi92ZXJzaW9uc1xuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoZW5kcG9pbnRzLmNvbGxlY3Rpb24uR0VUW3NsdWcyXSBhcyBDb2xsZWN0aW9uUm91dGVIYW5kbGVyKSh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vOmlkXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLkdFVC5maW5kQnlJRCh7IGlkOiBzbHVnMiwgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmIChgZG9jLSR7c2x1ZzJ9LWJ5LWlkYCBpbiBlbmRwb2ludHMuY29sbGVjdGlvbi5HRVQpIHtcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2FjY2Vzcy86aWRcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL3ZlcnNpb25zLzppZFxuXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICBlbmRwb2ludHMuY29sbGVjdGlvbi5HRVRbYGRvYy0ke3NsdWcyfS1ieS1pZGBdIGFzIENvbGxlY3Rpb25Sb3V0ZUhhbmRsZXJXaXRoSURcbiAgICAgICAgICAgICAgKSh7IGlkOiBzbHVnMywgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNsdWcxID09PSAnZ2xvYmFscycpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gcmVxLnBheWxvYWQuY29uZmlnLmdsb2JhbHMuZmluZCgoZ2xvYmFsKSA9PiBnbG9iYWwuc2x1ZyA9PT0gc2x1ZzIpXG5cbiAgICAgICAgY29uc3QgZGlzYWJsZUVuZHBvaW50cyA9IGVuZHBvaW50c0FyZURpc2FibGVkKHtcbiAgICAgICAgICBlbmRwb2ludHM6IGdsb2JhbENvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgICAgY29uc3QgY3VzdG9tRW5kcG9pbnRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZUN1c3RvbUVuZHBvaW50cyh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBnbG9iYWxDb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIGVudGl0eVNsdWc6IGAke3NsdWcxfS8ke3NsdWcyfWAsXG4gICAgICAgICAgcGF5bG9hZFJlcXVlc3Q6IHJlcSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgICAgc3dpdGNoIChzbHVnLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnXG4gICAgICAgICAgICByZXMgPSBhd2FpdCBlbmRwb2ludHMuZ2xvYmFsLkdFVC5maW5kT25lKHsgZ2xvYmFsQ29uZmlnLCByZXEgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaWYgKGBkb2MtJHtzbHVnM31gIGluIGVuZHBvaW50cy5nbG9iYWwuR0VUKSB7XG4gICAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnL2FjY2Vzc1xuICAgICAgICAgICAgICAvLyAvZ2xvYmFscy86c2x1Zy92ZXJzaW9uc1xuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoZW5kcG9pbnRzLmdsb2JhbC5HRVQ/LltgZG9jLSR7c2x1ZzN9YF0gYXMgR2xvYmFsUm91dGVIYW5kbGVyKSh7XG4gICAgICAgICAgICAgICAgZ2xvYmFsQ29uZmlnLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKGBkb2MtJHtzbHVnM30tYnktaWRgIGluIGVuZHBvaW50cy5nbG9iYWwuR0VUKSB7XG4gICAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnL3ZlcnNpb25zLzppZFxuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoXG4gICAgICAgICAgICAgICAgZW5kcG9pbnRzLmdsb2JhbC5HRVQ/LltgZG9jLSR7c2x1ZzN9LWJ5LWlkYF0gYXMgR2xvYmFsUm91dGVIYW5kbGVyV2l0aElEXG4gICAgICAgICAgICAgICkoe1xuICAgICAgICAgICAgICAgIGlkOiBzbHVnNCxcbiAgICAgICAgICAgICAgICBnbG9iYWxDb25maWcsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbHVnLmxlbmd0aCA9PT0gMSAmJiBzbHVnMSBpbiBlbmRwb2ludHMucm9vdC5HRVQpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgZW5kcG9pbnRzLnJvb3QuR0VUW3NsdWcxXSh7IHJlcSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5leHBvcnQgY29uc3QgUE9TVCA9XG4gIChjb25maWc6IFByb21pc2U8U2FuaXRpemVkQ29uZmlnPiB8IFNhbml0aXplZENvbmZpZykgPT5cbiAgYXN5bmMgKHJlcXVlc3Q6IFJlcXVlc3QsIHsgcGFyYW1zOiB7IHNsdWcgfSB9OiB7IHBhcmFtczogeyBzbHVnOiBzdHJpbmdbXSB9IH0pID0+IHtcbiAgICBjb25zdCBbc2x1ZzEsIHNsdWcyLCBzbHVnMywgc2x1ZzRdID0gc2x1Z1xuICAgIGxldCByZXE6IFBheWxvYWRSZXF1ZXN0XG4gICAgbGV0IHJlczogUmVzcG9uc2VcbiAgICBsZXQgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuXG4gICAgdHJ5IHtcbiAgICAgIHJlcSA9IGF3YWl0IGNyZWF0ZVBheWxvYWRSZXF1ZXN0KHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBwYXJhbXM6IHsgY29sbGVjdGlvbjogc2x1ZzEgfSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucz8uW3NsdWcxXVxuXG4gICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVFbmRwb2ludHMgPSBlbmRwb2ludHNBcmVEaXNhYmxlZCh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgICAgY29uc3QgY3VzdG9tRW5kcG9pbnRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZUN1c3RvbUVuZHBvaW50cyh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgZW50aXR5U2x1Zzogc2x1ZzEsXG4gICAgICAgICAgcGF5bG9hZFJlcXVlc3Q6IHJlcSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoY3VzdG9tRW5kcG9pbnRSZXNwb25zZSkgcmV0dXJuIGN1c3RvbUVuZHBvaW50UmVzcG9uc2VcblxuICAgICAgICBzd2l0Y2ggKHNsdWcubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uXG4gICAgICAgICAgICByZXMgPSBhd2FpdCBlbmRwb2ludHMuY29sbGVjdGlvbi5QT1NULmNyZWF0ZSh7IGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAoc2x1ZzIgaW4gZW5kcG9pbnRzLmNvbGxlY3Rpb24uUE9TVCkge1xuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vbG9naW5cbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2xvZ291dFxuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vdW5sb2NrXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi9hY2Nlc3NcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2ZpcnN0LXJlZ2lzdGVyXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi9mb3Jnb3QtcGFzc3dvcmRcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL3Jlc2V0LXBhc3N3b3JkXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi9yZWZyZXNoLXRva2VuXG5cbiAgICAgICAgICAgICAgcmVzID0gYXdhaXQgKGVuZHBvaW50cy5jb2xsZWN0aW9uLlBPU1Q/LltzbHVnMl0gYXMgQ29sbGVjdGlvblJvdXRlSGFuZGxlcikoe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAoYGRvYy0ke3NsdWcyfS1ieS1pZGAgaW4gZW5kcG9pbnRzLmNvbGxlY3Rpb24uUE9TVCkge1xuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vYWNjZXNzLzppZFxuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vdmVyc2lvbnMvOmlkXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi92ZXJpZnkvOnRva2VuIChcImRvYy12ZXJpZnktYnktaWRcIiB1c2VzIGlkIGFzIHRva2VuIGludGVybmFsbHkpXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICBlbmRwb2ludHMuY29sbGVjdGlvbi5QT1NUW2Bkb2MtJHtzbHVnMn0tYnktaWRgXSBhcyBDb2xsZWN0aW9uUm91dGVIYW5kbGVyV2l0aElEXG4gICAgICAgICAgICAgICkoeyBpZDogc2x1ZzMsIGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbHVnMSA9PT0gJ2dsb2JhbHMnICYmIHNsdWcyKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IHJlcS5wYXlsb2FkLmNvbmZpZy5nbG9iYWxzLmZpbmQoKGdsb2JhbCkgPT4gZ2xvYmFsLnNsdWcgPT09IHNsdWcyKVxuICAgICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICAgIGVuZHBvaW50czogZ2xvYmFsQ29uZmlnLmVuZHBvaW50cyxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoZGlzYWJsZUVuZHBvaW50cykgcmV0dXJuIGRpc2FibGVFbmRwb2ludHNcblxuICAgICAgICBjb25zdCBjdXN0b21FbmRwb2ludFJlc3BvbnNlID0gYXdhaXQgaGFuZGxlQ3VzdG9tRW5kcG9pbnRzKHtcbiAgICAgICAgICBlbmRwb2ludHM6IGdsb2JhbENvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgZW50aXR5U2x1ZzogYCR7c2x1ZzF9LyR7c2x1ZzJ9YCxcbiAgICAgICAgICBwYXlsb2FkUmVxdWVzdDogcmVxLFxuICAgICAgICB9KVxuICAgICAgICBpZiAoY3VzdG9tRW5kcG9pbnRSZXNwb25zZSkgcmV0dXJuIGN1c3RvbUVuZHBvaW50UmVzcG9uc2VcblxuICAgICAgICBzd2l0Y2ggKHNsdWcubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgLy8gL2dsb2JhbHMvOnNsdWdcbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5nbG9iYWwuUE9TVC51cGRhdGUoeyBnbG9iYWxDb25maWcsIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAoYGRvYy0ke3NsdWczfWAgaW4gZW5kcG9pbnRzLmdsb2JhbC5QT1NUKSB7XG4gICAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnL2FjY2Vzc1xuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoZW5kcG9pbnRzLmdsb2JhbC5QT1NUPy5bYGRvYy0ke3NsdWczfWBdIGFzIEdsb2JhbFJvdXRlSGFuZGxlcikoe1xuICAgICAgICAgICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmIChgZG9jLSR7c2x1ZzN9LWJ5LWlkYCBpbiBlbmRwb2ludHMuZ2xvYmFsLlBPU1QpIHtcbiAgICAgICAgICAgICAgLy8gL2dsb2JhbHMvOnNsdWcvdmVyc2lvbnMvOmlkXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICBlbmRwb2ludHMuZ2xvYmFsLlBPU1Q/LltgZG9jLSR7c2x1ZzN9LWJ5LWlkYF0gYXMgR2xvYmFsUm91dGVIYW5kbGVyV2l0aElEXG4gICAgICAgICAgICAgICkoe1xuICAgICAgICAgICAgICAgIGlkOiBzbHVnNCxcbiAgICAgICAgICAgICAgICBnbG9iYWxDb25maWcsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVzID0gbmV3IFJlc3BvbnNlKCdSb3V0ZSBOb3QgRm91bmQnLCB7IHN0YXR1czogNDA0IH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2x1Zy5sZW5ndGggPT09IDEgJiYgc2x1ZzEgaW4gZW5kcG9pbnRzLnJvb3QuUE9TVCkge1xuICAgICAgICByZXMgPSBhd2FpdCBlbmRwb2ludHMucm9vdC5QT1NUW3NsdWcxXSh7IHJlcSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5leHBvcnQgY29uc3QgREVMRVRFID1cbiAgKGNvbmZpZzogUHJvbWlzZTxTYW5pdGl6ZWRDb25maWc+IHwgU2FuaXRpemVkQ29uZmlnKSA9PlxuICBhc3luYyAocmVxdWVzdDogUmVxdWVzdCwgeyBwYXJhbXM6IHsgc2x1ZyB9IH06IHsgcGFyYW1zOiB7IHNsdWc6IHN0cmluZ1tdIH0gfSkgPT4ge1xuICAgIGNvbnN0IFtzbHVnMSwgc2x1ZzJdID0gc2x1Z1xuICAgIGxldCByZXE6IFBheWxvYWRSZXF1ZXN0XG4gICAgbGV0IHJlczogUmVzcG9uc2VcbiAgICBsZXQgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuXG4gICAgdHJ5IHtcbiAgICAgIHJlcSA9IGF3YWl0IGNyZWF0ZVBheWxvYWRSZXF1ZXN0KHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiBzbHVnMSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgIH0pXG4gICAgICBjb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29sbGVjdGlvbnM/LltzbHVnMV1cblxuICAgICAgY29uc3QgZGlzYWJsZUVuZHBvaW50cyA9IGVuZHBvaW50c0FyZURpc2FibGVkKHtcbiAgICAgICAgZW5kcG9pbnRzOiByZXEucGF5bG9hZC5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIGlmIChkaXNhYmxlRW5kcG9pbnRzKSByZXR1cm4gZGlzYWJsZUVuZHBvaW50c1xuXG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChkaXNhYmxlRW5kcG9pbnRzKSByZXR1cm4gZGlzYWJsZUVuZHBvaW50c1xuXG4gICAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIGVudGl0eVNsdWc6IHNsdWcxLFxuICAgICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjdXN0b21FbmRwb2ludFJlc3BvbnNlKSByZXR1cm4gY3VzdG9tRW5kcG9pbnRSZXNwb25zZVxuXG4gICAgICAgIHN3aXRjaCAoc2x1Zy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb25cbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLkRFTEVURS5kZWxldGUoeyBjb2xsZWN0aW9uLCByZXEgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uLzppZFxuICAgICAgICAgICAgcmVzID0gYXdhaXQgZW5kcG9pbnRzLmNvbGxlY3Rpb24uREVMRVRFLmRlbGV0ZUJ5SUQoeyBpZDogc2x1ZzIsIGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5leHBvcnQgY29uc3QgUEFUQ0ggPVxuICAoY29uZmlnOiBQcm9taXNlPFNhbml0aXplZENvbmZpZz4gfCBTYW5pdGl6ZWRDb25maWcpID0+XG4gIGFzeW5jIChyZXF1ZXN0OiBSZXF1ZXN0LCB7IHBhcmFtczogeyBzbHVnIH0gfTogeyBwYXJhbXM6IHsgc2x1Zzogc3RyaW5nW10gfSB9KSA9PiB7XG4gICAgY29uc3QgW3NsdWcxLCBzbHVnMl0gPSBzbHVnXG4gICAgbGV0IHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgICBsZXQgcmVzOiBSZXNwb25zZVxuICAgIGxldCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG5cbiAgICB0cnkge1xuICAgICAgcmVxID0gYXdhaXQgY3JlYXRlUGF5bG9hZFJlcXVlc3Qoe1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGNvbGxlY3Rpb246IHNsdWcxLFxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucz8uW3NsdWcxXVxuXG4gICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVFbmRwb2ludHMgPSBlbmRwb2ludHNBcmVEaXNhYmxlZCh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgICAgY29uc3QgY3VzdG9tRW5kcG9pbnRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZUN1c3RvbUVuZHBvaW50cyh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgZW50aXR5U2x1Zzogc2x1ZzEsXG4gICAgICAgICAgcGF5bG9hZFJlcXVlc3Q6IHJlcSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgICAgc3dpdGNoIChzbHVnLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvblxuICAgICAgICAgICAgcmVzID0gYXdhaXQgZW5kcG9pbnRzLmNvbGxlY3Rpb24uUEFUQ0gudXBkYXRlKHsgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi86aWRcbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLlBBVENILnVwZGF0ZUJ5SUQoeyBpZDogc2x1ZzIsIGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuIl0sIm5hbWVzIjpbIkRFTEVURSIsIkdFVCIsIlBBVENIIiwiUE9TVCIsImVuZHBvaW50cyIsImNvbGxlY3Rpb24iLCJkZWxldGUiLCJkZWxldGVEb2MiLCJkZWxldGVCeUlEIiwiZG9jQWNjZXNzIiwiZmluZFZlcnNpb25CeUlEIiwiZmluZCIsImZpbmRCeUlEIiwiaW5pdCIsIm1lIiwidmVyc2lvbnMiLCJmaW5kVmVyc2lvbnMiLCJ1cGRhdGUiLCJ1cGRhdGVCeUlEIiwiYWNjZXNzIiwiY3JlYXRlIiwidmVyaWZ5RW1haWwiLCJyZXN0b3JlVmVyc2lvbiIsInJlZ2lzdGVyRmlyc3RVc2VyIiwiZm9yZ290UGFzc3dvcmQiLCJsb2dpbiIsImxvZ291dCIsInJlZnJlc2giLCJyZXNldFBhc3N3b3JkIiwidW5sb2NrIiwiZ2xvYmFsIiwiZG9jQWNjZXNzR2xvYmFsIiwiZmluZFZlcnNpb25zR2xvYmFsIiwiZmluZFZlcnNpb25CeUlkR2xvYmFsIiwiZmluZE9uZSIsInJlc3RvcmVWZXJzaW9uR2xvYmFsIiwidXBkYXRlR2xvYmFsIiwicm9vdCIsImJ1aWxkRm9ybVN0YXRlIiwiaGFuZGxlQ3VzdG9tRW5kcG9pbnRzIiwiZW50aXR5U2x1ZyIsInBheWxvYWRSZXF1ZXN0IiwibGVuZ3RoIiwiaGFuZGxlclBhcmFtcyIsInBhdGhuYW1lIiwicGF0aFByZWZpeCIsInBheWxvYWQiLCJjb25maWciLCJyb3V0ZXMiLCJhcGkiLCJjdXN0b21FbmRwb2ludCIsImVuZHBvaW50IiwibWV0aG9kIiwidG9Mb3dlckNhc2UiLCJwYXRoTWF0Y2hGbiIsIm1hdGNoIiwicGF0aCIsImRlY29kZSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlbXBQYXJhbXMiLCJwYXJhbXMiLCJyb3V0ZVBhcmFtcyIsImhhbmRsZXIiLCJSb3V0ZU5vdEZvdW5kUmVzcG9uc2UiLCJzbHVnIiwiUmVzcG9uc2UiLCJqc29uIiwibWVzc2FnZSIsImpvaW4iLCJzdGF0dXMiLCJodHRwU3RhdHVzIiwiTk9UX0ZPVU5EIiwicmVxdWVzdCIsInNsdWcxIiwic2x1ZzIiLCJzbHVnMyIsInNsdWc0IiwicmVxIiwicmVzIiwiY3JlYXRlUGF5bG9hZFJlcXVlc3QiLCJkaXNhYmxlRW5kcG9pbnRzIiwiZW5kcG9pbnRzQXJlRGlzYWJsZWQiLCJjb2xsZWN0aW9ucyIsImN1c3RvbUVuZHBvaW50UmVzcG9uc2UiLCJpZCIsImdsb2JhbENvbmZpZyIsImdsb2JhbHMiLCJlcnJvciIsIlJvdXRlRXJyb3IiLCJlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBc2FhQSxNQUFNO2VBQU5BOztJQWxSQUMsR0FBRztlQUFIQTs7SUF1VkFDLEtB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
517
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0ZXMvcmVzdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50IH0gZnJvbSAncGF5bG9hZC9jb25maWcnXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb24sIEdsb2JhbENvbmZpZywgUGF5bG9hZFJlcXVlc3QsIFNhbml0aXplZENvbmZpZyB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCBodHRwU3RhdHVzIGZyb20gJ2h0dHAtc3RhdHVzJ1xuaW1wb3J0IHsgbWF0Y2ggfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCdcblxuaW1wb3J0IHR5cGUge1xuICBDb2xsZWN0aW9uUm91dGVIYW5kbGVyLFxuICBDb2xsZWN0aW9uUm91dGVIYW5kbGVyV2l0aElELFxuICBHbG9iYWxSb3V0ZUhhbmRsZXIsXG4gIEdsb2JhbFJvdXRlSGFuZGxlcldpdGhJRCxcbn0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgY3JlYXRlUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlUGF5bG9hZFJlcXVlc3QnXG5pbXBvcnQgeyBSb3V0ZUVycm9yIH0gZnJvbSAnLi9Sb3V0ZUVycm9yJ1xuaW1wb3J0IHsgYWNjZXNzIH0gZnJvbSAnLi9hdXRoL2FjY2VzcydcbmltcG9ydCB7IGZvcmdvdFBhc3N3b3JkIH0gZnJvbSAnLi9hdXRoL2ZvcmdvdFBhc3N3b3JkJ1xuaW1wb3J0IHsgaW5pdCB9IGZyb20gJy4vYXV0aC9pbml0J1xuaW1wb3J0IHsgbG9naW4gfSBmcm9tICcuL2F1dGgvbG9naW4nXG5pbXBvcnQgeyBsb2dvdXQgfSBmcm9tICcuL2F1dGgvbG9nb3V0J1xuaW1wb3J0IHsgbWUgfSBmcm9tICcuL2F1dGgvbWUnXG5pbXBvcnQgeyByZWZyZXNoIH0gZnJvbSAnLi9hdXRoL3JlZnJlc2gnXG5pbXBvcnQgeyByZWdpc3RlckZpcnN0VXNlciB9IGZyb20gJy4vYXV0aC9yZWdpc3RlckZpcnN0VXNlcidcbmltcG9ydCB7IHJlc2V0UGFzc3dvcmQgfSBmcm9tICcuL2F1dGgvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB7IHVubG9jayB9IGZyb20gJy4vYXV0aC91bmxvY2snXG5pbXBvcnQgeyB2ZXJpZnlFbWFpbCB9IGZyb20gJy4vYXV0aC92ZXJpZnlFbWFpbCdcbmltcG9ydCB7IGJ1aWxkRm9ybVN0YXRlIH0gZnJvbSAnLi9idWlsZEZvcm1TdGF0ZSdcbmltcG9ydCB7IGVuZHBvaW50c0FyZURpc2FibGVkIH0gZnJvbSAnLi9jaGVja0VuZHBvaW50cydcbmltcG9ydCB7IGNyZWF0ZSB9IGZyb20gJy4vY29sbGVjdGlvbnMvY3JlYXRlJ1xuaW1wb3J0IHsgZGVsZXRlRG9jIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9kZWxldGUnXG5pbXBvcnQgeyBkZWxldGVCeUlEIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9kZWxldGVCeUlEJ1xuaW1wb3J0IHsgZG9jQWNjZXNzIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9kb2NBY2Nlc3MnXG5pbXBvcnQgeyBmaW5kIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9maW5kJ1xuaW1wb3J0IHsgZmluZEJ5SUQgfSBmcm9tICcuL2NvbGxlY3Rpb25zL2ZpbmRCeUlEJ1xuaW1wb3J0IHsgZmluZFZlcnNpb25CeUlEIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9maW5kVmVyc2lvbkJ5SUQnXG5pbXBvcnQgeyBmaW5kVmVyc2lvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB7IHJlc3RvcmVWZXJzaW9uIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9yZXN0b3JlVmVyc2lvbidcbmltcG9ydCB7IHVwZGF0ZSB9IGZyb20gJy4vY29sbGVjdGlvbnMvdXBkYXRlJ1xuaW1wb3J0IHsgdXBkYXRlQnlJRCB9IGZyb20gJy4vY29sbGVjdGlvbnMvdXBkYXRlQnlJRCdcbmltcG9ydCB7IGRvY0FjY2VzcyBhcyBkb2NBY2Nlc3NHbG9iYWwgfSBmcm9tICcuL2dsb2JhbHMvZG9jQWNjZXNzJ1xuaW1wb3J0IHsgZmluZE9uZSB9IGZyb20gJy4vZ2xvYmFscy9maW5kT25lJ1xuaW1wb3J0IHsgZmluZFZlcnNpb25CeUlEIGFzIGZpbmRWZXJzaW9uQnlJZEdsb2JhbCB9IGZyb20gJy4vZ2xvYmFscy9maW5kVmVyc2lvbkJ5SUQnXG5pbXBvcnQgeyBmaW5kVmVyc2lvbnMgYXMgZmluZFZlcnNpb25zR2xvYmFsIH0gZnJvbSAnLi9nbG9iYWxzL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB7IHJlc3RvcmVWZXJzaW9uIGFzIHJlc3RvcmVWZXJzaW9uR2xvYmFsIH0gZnJvbSAnLi9nbG9iYWxzL3Jlc3RvcmVWZXJzaW9uJ1xuaW1wb3J0IHsgdXBkYXRlIGFzIHVwZGF0ZUdsb2JhbCB9IGZyb20gJy4vZ2xvYmFscy91cGRhdGUnXG5cbmNvbnN0IGVuZHBvaW50cyA9IHtcbiAgY29sbGVjdGlvbjoge1xuICAgIERFTEVURToge1xuICAgICAgZGVsZXRlOiBkZWxldGVEb2MsXG4gICAgICBkZWxldGVCeUlELFxuICAgIH0sXG4gICAgR0VUOiB7XG4gICAgICAnZG9jLWFjY2Vzcy1ieS1pZCc6IGRvY0FjY2VzcyxcbiAgICAgICdkb2MtdmVyc2lvbnMtYnktaWQnOiBmaW5kVmVyc2lvbkJ5SUQsXG4gICAgICBmaW5kLFxuICAgICAgZmluZEJ5SUQsXG4gICAgICBpbml0LFxuICAgICAgbWUsXG4gICAgICB2ZXJzaW9uczogZmluZFZlcnNpb25zLFxuICAgIH0sXG4gICAgUEFUQ0g6IHtcbiAgICAgIHVwZGF0ZSxcbiAgICAgIHVwZGF0ZUJ5SUQsXG4gICAgfSxcbiAgICBQT1NUOiB7XG4gICAgICBhY2Nlc3M6IGRvY0FjY2VzcyxcbiAgICAgIGNyZWF0ZSxcbiAgICAgICdkb2MtYWNjZXNzLWJ5LWlkJzogZG9jQWNjZXNzLFxuICAgICAgJ2RvYy12ZXJpZnktYnktaWQnOiB2ZXJpZnlFbWFpbCxcbiAgICAgICdkb2MtdmVyc2lvbnMtYnktaWQnOiByZXN0b3JlVmVyc2lvbixcbiAgICAgICdmaXJzdC1yZWdpc3Rlcic6IHJlZ2lzdGVyRmlyc3RVc2VyLFxuICAgICAgJ2ZvcmdvdC1wYXNzd29yZCc6IGZvcmdvdFBhc3N3b3JkLFxuICAgICAgbG9naW4sXG4gICAgICBsb2dvdXQsXG4gICAgICAncmVmcmVzaC10b2tlbic6IHJlZnJlc2gsXG4gICAgICAncmVzZXQtcGFzc3dvcmQnOiByZXNldFBhc3N3b3JkLFxuICAgICAgdW5sb2NrLFxuICAgIH0sXG4gIH0sXG4gIGdsb2JhbDoge1xuICAgIEdFVDoge1xuICAgICAgJ2RvYy1hY2Nlc3MnOiBkb2NBY2Nlc3NHbG9iYWwsXG4gICAgICAnZG9jLXZlcnNpb25zJzogZmluZFZlcnNpb25zR2xvYmFsLFxuICAgICAgJ2RvYy12ZXJzaW9ucy1ieS1pZCc6IGZpbmRWZXJzaW9uQnlJZEdsb2JhbCxcbiAgICAgIGZpbmRPbmUsXG4gICAgfSxcbiAgICBQT1NUOiB7XG4gICAgICAnZG9jLWFjY2Vzcyc6IGRvY0FjY2Vzc0dsb2JhbCxcbiAgICAgICdkb2MtdmVyc2lvbnMtYnktaWQnOiByZXN0b3JlVmVyc2lvbkdsb2JhbCxcbiAgICAgIHVwZGF0ZTogdXBkYXRlR2xvYmFsLFxuICAgIH0sXG4gIH0sXG4gIHJvb3Q6IHtcbiAgICBHRVQ6IHtcbiAgICAgIGFjY2VzcyxcbiAgICB9LFxuICAgIFBPU1Q6IHtcbiAgICAgICdmb3JtLXN0YXRlJzogYnVpbGRGb3JtU3RhdGUsXG4gICAgfSxcbiAgfSxcbn1cblxuY29uc3QgaGFuZGxlQ3VzdG9tRW5kcG9pbnRzID0gKHtcbiAgZW5kcG9pbnRzLFxuICBlbnRpdHlTbHVnLFxuICBwYXlsb2FkUmVxdWVzdCxcbn06IHtcbiAgZW5kcG9pbnRzOiBFbmRwb2ludFtdIHwgR2xvYmFsQ29uZmlnWydlbmRwb2ludHMnXVxuICBlbnRpdHlTbHVnPzogc3RyaW5nXG4gIHBheWxvYWRSZXF1ZXN0OiBQYXlsb2FkUmVxdWVzdFxufSk6IFByb21pc2U8UmVzcG9uc2U+IHwgUmVzcG9uc2UgPT4ge1xuICBpZiAoZW5kcG9pbnRzICYmIGVuZHBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IGhhbmRsZXJQYXJhbXMgPSB7fVxuICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHBheWxvYWRSZXF1ZXN0XG4gICAgY29uc3QgcGF0aFByZWZpeCA9XG4gICAgICBwYXlsb2FkUmVxdWVzdC5wYXlsb2FkLmNvbmZpZy5yb3V0ZXMuYXBpICsgKGVudGl0eVNsdWcgPyBgLyR7ZW50aXR5U2x1Z31gIDogJycpXG5cbiAgICBjb25zdCBjdXN0b21FbmRwb2ludCA9IGVuZHBvaW50cy5maW5kKChlbmRwb2ludCkgPT4ge1xuICAgICAgaWYgKGVuZHBvaW50Lm1ldGhvZCA9PT0gcGF5bG9hZFJlcXVlc3QubWV0aG9kLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoRm4gPSBtYXRjaChgJHtwYXRoUHJlZml4fSR7ZW5kcG9pbnQucGF0aH1gLCB7XG4gICAgICAgICAgZGVjb2RlOiBkZWNvZGVVUklDb21wb25lbnQsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHRlbXBQYXJhbXMgPSBwYXRoTWF0Y2hGbihwYXRobmFtZSlcbiAgICAgICAgaWYgKHRlbXBQYXJhbXMpIHtcbiAgICAgICAgICBoYW5kbGVyUGFyYW1zID0gdGVtcFBhcmFtcy5wYXJhbXNcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmIChjdXN0b21FbmRwb2ludCkge1xuICAgICAgcGF5bG9hZFJlcXVlc3Qucm91dGVQYXJhbXMgPSBoYW5kbGVyUGFyYW1zXG4gICAgICByZXR1cm4gY3VzdG9tRW5kcG9pbnQuaGFuZGxlcihwYXlsb2FkUmVxdWVzdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCBSb3V0ZU5vdEZvdW5kUmVzcG9uc2UgPSAoc2x1Zzogc3RyaW5nW10pID0+XG4gIFJlc3BvbnNlLmpzb24oXG4gICAge1xuICAgICAgbWVzc2FnZTogYFJvdXRlIE5vdCBGb3VuZDogXCIke3NsdWcuam9pbignLycpfVwiYCxcbiAgICB9LFxuICAgIHsgc3RhdHVzOiBodHRwU3RhdHVzLk5PVF9GT1VORCB9LFxuICApXG5cbmV4cG9ydCBjb25zdCBHRVQgPVxuICAoY29uZmlnOiBQcm9taXNlPFNhbml0aXplZENvbmZpZz4gfCBTYW5pdGl6ZWRDb25maWcpID0+XG4gIGFzeW5jIChyZXF1ZXN0OiBSZXF1ZXN0LCB7IHBhcmFtczogeyBzbHVnIH0gfTogeyBwYXJhbXM6IHsgc2x1Zzogc3RyaW5nW10gfSB9KSA9PiB7XG4gICAgY29uc3QgW3NsdWcxLCBzbHVnMiwgc2x1ZzMsIHNsdWc0XSA9IHNsdWdcbiAgICBsZXQgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICAgIGxldCByZXM6IFJlc3BvbnNlXG4gICAgbGV0IGNvbGxlY3Rpb246IENvbGxlY3Rpb25cblxuICAgIHRyeSB7XG4gICAgICByZXEgPSBhd2FpdCBjcmVhdGVQYXlsb2FkUmVxdWVzdCh7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgY29sbGVjdGlvbjogc2x1ZzEsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgIGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucz8uW3NsdWcxXVxuXG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChkaXNhYmxlRW5kcG9pbnRzKSByZXR1cm4gZGlzYWJsZUVuZHBvaW50c1xuXG4gICAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIGVudGl0eVNsdWc6IHNsdWcxLFxuICAgICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjdXN0b21FbmRwb2ludFJlc3BvbnNlKSByZXR1cm4gY3VzdG9tRW5kcG9pbnRSZXNwb25zZVxuXG4gICAgICAgIHN3aXRjaCAoc2x1Zy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb25cbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLkdFVC5maW5kKHsgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmIChzbHVnMiBpbiBlbmRwb2ludHMuY29sbGVjdGlvbi5HRVQpIHtcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2luaXRcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL21lXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi92ZXJzaW9uc1xuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoZW5kcG9pbnRzLmNvbGxlY3Rpb24uR0VUW3NsdWcyXSBhcyBDb2xsZWN0aW9uUm91dGVIYW5kbGVyKSh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vOmlkXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLkdFVC5maW5kQnlJRCh7IGlkOiBzbHVnMiwgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGlmIChgZG9jLSR7c2x1ZzJ9LWJ5LWlkYCBpbiBlbmRwb2ludHMuY29sbGVjdGlvbi5HRVQpIHtcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2FjY2Vzcy86aWRcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL3ZlcnNpb25zLzppZFxuXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICBlbmRwb2ludHMuY29sbGVjdGlvbi5HRVRbYGRvYy0ke3NsdWcyfS1ieS1pZGBdIGFzIENvbGxlY3Rpb25Sb3V0ZUhhbmRsZXJXaXRoSURcbiAgICAgICAgICAgICAgKSh7IGlkOiBzbHVnMywgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNsdWcxID09PSAnZ2xvYmFscycpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gcmVxLnBheWxvYWQuY29uZmlnLmdsb2JhbHMuZmluZCgoZ2xvYmFsKSA9PiBnbG9iYWwuc2x1ZyA9PT0gc2x1ZzIpXG5cbiAgICAgICAgY29uc3QgZGlzYWJsZUVuZHBvaW50cyA9IGVuZHBvaW50c0FyZURpc2FibGVkKHtcbiAgICAgICAgICBlbmRwb2ludHM6IGdsb2JhbENvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgICAgY29uc3QgY3VzdG9tRW5kcG9pbnRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZUN1c3RvbUVuZHBvaW50cyh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBnbG9iYWxDb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIGVudGl0eVNsdWc6IGAke3NsdWcxfS8ke3NsdWcyfWAsXG4gICAgICAgICAgcGF5bG9hZFJlcXVlc3Q6IHJlcSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgICAgc3dpdGNoIChzbHVnLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnXG4gICAgICAgICAgICByZXMgPSBhd2FpdCBlbmRwb2ludHMuZ2xvYmFsLkdFVC5maW5kT25lKHsgZ2xvYmFsQ29uZmlnLCByZXEgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgaWYgKGBkb2MtJHtzbHVnM31gIGluIGVuZHBvaW50cy5nbG9iYWwuR0VUKSB7XG4gICAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnL2FjY2Vzc1xuICAgICAgICAgICAgICAvLyAvZ2xvYmFscy86c2x1Zy92ZXJzaW9uc1xuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoZW5kcG9pbnRzLmdsb2JhbC5HRVQ/LltgZG9jLSR7c2x1ZzN9YF0gYXMgR2xvYmFsUm91dGVIYW5kbGVyKSh7XG4gICAgICAgICAgICAgICAgZ2xvYmFsQ29uZmlnLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaWYgKGBkb2MtJHtzbHVnM30tYnktaWRgIGluIGVuZHBvaW50cy5nbG9iYWwuR0VUKSB7XG4gICAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnL3ZlcnNpb25zLzppZFxuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoXG4gICAgICAgICAgICAgICAgZW5kcG9pbnRzLmdsb2JhbC5HRVQ/LltgZG9jLSR7c2x1ZzN9LWJ5LWlkYF0gYXMgR2xvYmFsUm91dGVIYW5kbGVyV2l0aElEXG4gICAgICAgICAgICAgICkoe1xuICAgICAgICAgICAgICAgIGlkOiBzbHVnNCxcbiAgICAgICAgICAgICAgICBnbG9iYWxDb25maWcsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbHVnLmxlbmd0aCA9PT0gMSAmJiBzbHVnMSBpbiBlbmRwb2ludHMucm9vdC5HRVQpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgZW5kcG9pbnRzLnJvb3QuR0VUW3NsdWcxXSh7IHJlcSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5leHBvcnQgY29uc3QgUE9TVCA9XG4gIChjb25maWc6IFByb21pc2U8U2FuaXRpemVkQ29uZmlnPiB8IFNhbml0aXplZENvbmZpZykgPT5cbiAgYXN5bmMgKHJlcXVlc3Q6IFJlcXVlc3QsIHsgcGFyYW1zOiB7IHNsdWcgfSB9OiB7IHBhcmFtczogeyBzbHVnOiBzdHJpbmdbXSB9IH0pID0+IHtcbiAgICBjb25zdCBbc2x1ZzEsIHNsdWcyLCBzbHVnMywgc2x1ZzRdID0gc2x1Z1xuICAgIGxldCByZXE6IFBheWxvYWRSZXF1ZXN0XG4gICAgbGV0IHJlczogUmVzcG9uc2VcbiAgICBsZXQgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuXG4gICAgdHJ5IHtcbiAgICAgIHJlcSA9IGF3YWl0IGNyZWF0ZVBheWxvYWRSZXF1ZXN0KHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBwYXJhbXM6IHsgY29sbGVjdGlvbjogc2x1ZzEgfSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucz8uW3NsdWcxXVxuXG4gICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVFbmRwb2ludHMgPSBlbmRwb2ludHNBcmVEaXNhYmxlZCh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgICAgY29uc3QgY3VzdG9tRW5kcG9pbnRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZUN1c3RvbUVuZHBvaW50cyh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgZW50aXR5U2x1Zzogc2x1ZzEsXG4gICAgICAgICAgcGF5bG9hZFJlcXVlc3Q6IHJlcSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoY3VzdG9tRW5kcG9pbnRSZXNwb25zZSkgcmV0dXJuIGN1c3RvbUVuZHBvaW50UmVzcG9uc2VcblxuICAgICAgICBzd2l0Y2ggKHNsdWcubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uXG4gICAgICAgICAgICByZXMgPSBhd2FpdCBlbmRwb2ludHMuY29sbGVjdGlvbi5QT1NULmNyZWF0ZSh7IGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBpZiAoc2x1ZzIgaW4gZW5kcG9pbnRzLmNvbGxlY3Rpb24uUE9TVCkge1xuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vbG9naW5cbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2xvZ291dFxuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vdW5sb2NrXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi9hY2Nlc3NcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL2ZpcnN0LXJlZ2lzdGVyXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi9mb3Jnb3QtcGFzc3dvcmRcbiAgICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uL3Jlc2V0LXBhc3N3b3JkXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi9yZWZyZXNoLXRva2VuXG5cbiAgICAgICAgICAgICAgcmVzID0gYXdhaXQgKGVuZHBvaW50cy5jb2xsZWN0aW9uLlBPU1Q/LltzbHVnMl0gYXMgQ29sbGVjdGlvblJvdXRlSGFuZGxlcikoe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAoYGRvYy0ke3NsdWcyfS1ieS1pZGAgaW4gZW5kcG9pbnRzLmNvbGxlY3Rpb24uUE9TVCkge1xuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vYWNjZXNzLzppZFxuICAgICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb24vdmVyc2lvbnMvOmlkXG4gICAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi92ZXJpZnkvOnRva2VuIChcImRvYy12ZXJpZnktYnktaWRcIiB1c2VzIGlkIGFzIHRva2VuIGludGVybmFsbHkpXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICBlbmRwb2ludHMuY29sbGVjdGlvbi5QT1NUW2Bkb2MtJHtzbHVnMn0tYnktaWRgXSBhcyBDb2xsZWN0aW9uUm91dGVIYW5kbGVyV2l0aElEXG4gICAgICAgICAgICAgICkoeyBpZDogc2x1ZzMsIGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzbHVnMSA9PT0gJ2dsb2JhbHMnICYmIHNsdWcyKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IHJlcS5wYXlsb2FkLmNvbmZpZy5nbG9iYWxzLmZpbmQoKGdsb2JhbCkgPT4gZ2xvYmFsLnNsdWcgPT09IHNsdWcyKVxuICAgICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICAgIGVuZHBvaW50czogZ2xvYmFsQ29uZmlnLmVuZHBvaW50cyxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoZGlzYWJsZUVuZHBvaW50cykgcmV0dXJuIGRpc2FibGVFbmRwb2ludHNcblxuICAgICAgICBjb25zdCBjdXN0b21FbmRwb2ludFJlc3BvbnNlID0gYXdhaXQgaGFuZGxlQ3VzdG9tRW5kcG9pbnRzKHtcbiAgICAgICAgICBlbmRwb2ludHM6IGdsb2JhbENvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgZW50aXR5U2x1ZzogYCR7c2x1ZzF9LyR7c2x1ZzJ9YCxcbiAgICAgICAgICBwYXlsb2FkUmVxdWVzdDogcmVxLFxuICAgICAgICB9KVxuICAgICAgICBpZiAoY3VzdG9tRW5kcG9pbnRSZXNwb25zZSkgcmV0dXJuIGN1c3RvbUVuZHBvaW50UmVzcG9uc2VcblxuICAgICAgICBzd2l0Y2ggKHNsdWcubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgLy8gL2dsb2JhbHMvOnNsdWdcbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5nbG9iYWwuUE9TVC51cGRhdGUoeyBnbG9iYWxDb25maWcsIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAoYGRvYy0ke3NsdWczfWAgaW4gZW5kcG9pbnRzLmdsb2JhbC5QT1NUKSB7XG4gICAgICAgICAgICAgIC8vIC9nbG9iYWxzLzpzbHVnL2FjY2Vzc1xuICAgICAgICAgICAgICByZXMgPSBhd2FpdCAoZW5kcG9pbnRzLmdsb2JhbC5QT1NUPy5bYGRvYy0ke3NsdWczfWBdIGFzIEdsb2JhbFJvdXRlSGFuZGxlcikoe1xuICAgICAgICAgICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmIChgZG9jLSR7c2x1ZzN9LWJ5LWlkYCBpbiBlbmRwb2ludHMuZ2xvYmFsLlBPU1QpIHtcbiAgICAgICAgICAgICAgLy8gL2dsb2JhbHMvOnNsdWcvdmVyc2lvbnMvOmlkXG4gICAgICAgICAgICAgIHJlcyA9IGF3YWl0IChcbiAgICAgICAgICAgICAgICBlbmRwb2ludHMuZ2xvYmFsLlBPU1Q/LltgZG9jLSR7c2x1ZzN9LWJ5LWlkYF0gYXMgR2xvYmFsUm91dGVIYW5kbGVyV2l0aElEXG4gICAgICAgICAgICAgICkoe1xuICAgICAgICAgICAgICAgIGlkOiBzbHVnNCxcbiAgICAgICAgICAgICAgICBnbG9iYWxDb25maWcsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVzID0gbmV3IFJlc3BvbnNlKCdSb3V0ZSBOb3QgRm91bmQnLCB7IHN0YXR1czogNDA0IH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2x1Zy5sZW5ndGggPT09IDEgJiYgc2x1ZzEgaW4gZW5kcG9pbnRzLnJvb3QuUE9TVCkge1xuICAgICAgICByZXMgPSBhd2FpdCBlbmRwb2ludHMucm9vdC5QT1NUW3NsdWcxXSh7IHJlcSB9KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5leHBvcnQgY29uc3QgREVMRVRFID1cbiAgKGNvbmZpZzogUHJvbWlzZTxTYW5pdGl6ZWRDb25maWc+IHwgU2FuaXRpemVkQ29uZmlnKSA9PlxuICBhc3luYyAocmVxdWVzdDogUmVxdWVzdCwgeyBwYXJhbXM6IHsgc2x1ZyB9IH06IHsgcGFyYW1zOiB7IHNsdWc6IHN0cmluZ1tdIH0gfSkgPT4ge1xuICAgIGNvbnN0IFtzbHVnMSwgc2x1ZzJdID0gc2x1Z1xuICAgIGxldCByZXE6IFBheWxvYWRSZXF1ZXN0XG4gICAgbGV0IHJlczogUmVzcG9uc2VcbiAgICBsZXQgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuXG4gICAgdHJ5IHtcbiAgICAgIHJlcSA9IGF3YWl0IGNyZWF0ZVBheWxvYWRSZXF1ZXN0KHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiBzbHVnMSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgIH0pXG4gICAgICBjb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29sbGVjdGlvbnM/LltzbHVnMV1cblxuICAgICAgY29uc3QgZGlzYWJsZUVuZHBvaW50cyA9IGVuZHBvaW50c0FyZURpc2FibGVkKHtcbiAgICAgICAgZW5kcG9pbnRzOiByZXEucGF5bG9hZC5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIGlmIChkaXNhYmxlRW5kcG9pbnRzKSByZXR1cm4gZGlzYWJsZUVuZHBvaW50c1xuXG4gICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChkaXNhYmxlRW5kcG9pbnRzKSByZXR1cm4gZGlzYWJsZUVuZHBvaW50c1xuXG4gICAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICAgIGVuZHBvaW50czogY29sbGVjdGlvbi5jb25maWcuZW5kcG9pbnRzLFxuICAgICAgICAgIGVudGl0eVNsdWc6IHNsdWcxLFxuICAgICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChjdXN0b21FbmRwb2ludFJlc3BvbnNlKSByZXR1cm4gY3VzdG9tRW5kcG9pbnRSZXNwb25zZVxuXG4gICAgICAgIHN3aXRjaCAoc2x1Zy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAvLyAvOmNvbGxlY3Rpb25cbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLkRFTEVURS5kZWxldGUoeyBjb2xsZWN0aW9uLCByZXEgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgLy8gLzpjb2xsZWN0aW9uLzppZFxuICAgICAgICAgICAgcmVzID0gYXdhaXQgZW5kcG9pbnRzLmNvbGxlY3Rpb24uREVMRVRFLmRlbGV0ZUJ5SUQoeyBpZDogc2x1ZzIsIGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG5leHBvcnQgY29uc3QgUEFUQ0ggPVxuICAoY29uZmlnOiBQcm9taXNlPFNhbml0aXplZENvbmZpZz4gfCBTYW5pdGl6ZWRDb25maWcpID0+XG4gIGFzeW5jIChyZXF1ZXN0OiBSZXF1ZXN0LCB7IHBhcmFtczogeyBzbHVnIH0gfTogeyBwYXJhbXM6IHsgc2x1Zzogc3RyaW5nW10gfSB9KSA9PiB7XG4gICAgY29uc3QgW3NsdWcxLCBzbHVnMl0gPSBzbHVnXG4gICAgbGV0IHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgICBsZXQgcmVzOiBSZXNwb25zZVxuICAgIGxldCBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG5cbiAgICB0cnkge1xuICAgICAgcmVxID0gYXdhaXQgY3JlYXRlUGF5bG9hZFJlcXVlc3Qoe1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGNvbGxlY3Rpb246IHNsdWcxLFxuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIGNvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb2xsZWN0aW9ucz8uW3NsdWcxXVxuXG4gICAgICBjb25zdCBkaXNhYmxlRW5kcG9pbnRzID0gZW5kcG9pbnRzQXJlRGlzYWJsZWQoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgIGlmIChjb2xsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVFbmRwb2ludHMgPSBlbmRwb2ludHNBcmVEaXNhYmxlZCh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGRpc2FibGVFbmRwb2ludHMpIHJldHVybiBkaXNhYmxlRW5kcG9pbnRzXG5cbiAgICAgICAgY29uc3QgY3VzdG9tRW5kcG9pbnRSZXNwb25zZSA9IGF3YWl0IGhhbmRsZUN1c3RvbUVuZHBvaW50cyh7XG4gICAgICAgICAgZW5kcG9pbnRzOiBjb2xsZWN0aW9uLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgICAgZW50aXR5U2x1Zzogc2x1ZzEsXG4gICAgICAgICAgcGF5bG9hZFJlcXVlc3Q6IHJlcSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgICAgc3dpdGNoIChzbHVnLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvblxuICAgICAgICAgICAgcmVzID0gYXdhaXQgZW5kcG9pbnRzLmNvbGxlY3Rpb24uUEFUQ0gudXBkYXRlKHsgY29sbGVjdGlvbiwgcmVxIH0pXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIC8vIC86Y29sbGVjdGlvbi86aWRcbiAgICAgICAgICAgIHJlcyA9IGF3YWl0IGVuZHBvaW50cy5jb2xsZWN0aW9uLlBBVENILnVwZGF0ZUJ5SUQoeyBpZDogc2x1ZzIsIGNvbGxlY3Rpb24sIHJlcSB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVzcG9uc2UpIHJldHVybiByZXNcblxuICAgICAgLy8gcm9vdCByb3V0ZXNcbiAgICAgIGNvbnN0IGN1c3RvbUVuZHBvaW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVDdXN0b21FbmRwb2ludHMoe1xuICAgICAgICBlbmRwb2ludHM6IHJlcS5wYXlsb2FkLmNvbmZpZy5lbmRwb2ludHMsXG4gICAgICAgIHBheWxvYWRSZXF1ZXN0OiByZXEsXG4gICAgICB9KVxuICAgICAgaWYgKGN1c3RvbUVuZHBvaW50UmVzcG9uc2UpIHJldHVybiBjdXN0b21FbmRwb2ludFJlc3BvbnNlXG5cbiAgICAgIHJldHVybiBSb3V0ZU5vdEZvdW5kUmVzcG9uc2Uoc2x1ZylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFJvdXRlRXJyb3Ioe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBlcnI6IGVycm9yLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuIl0sIm5hbWVzIjpbImh0dHBTdGF0dXMiLCJtYXRjaCIsImNyZWF0ZVBheWxvYWRSZXF1ZXN0IiwiUm91dGVFcnJvciIsImFjY2VzcyIsImZvcmdvdFBhc3N3b3JkIiwiaW5pdCIsImxvZ2luIiwibG9nb3V0IiwibWUiLCJyZWZyZXNoIiwicmVnaXN0ZXJGaXJzdFVzZXIiLCJyZXNldFBhc3N3b3JkIiwidW5sb2NrIiwidmVyaWZ5RW1haWwiLCJidWlsZEZvcm1TdGF0ZSIsImVuZHBvaW50c0FyZURpc2FibGVkIiwiY3JlYXRlIiwiZGVsZXRlRG9jIiwiZGVsZXRlQnlJRCIsImRvY0FjY2VzcyIsImZpbmQiLCJmaW5kQnlJRCIsImZpbmRWZXJzaW9uQnlJRCIsImZpbmRWZXJzaW9ucyIsInJlc3RvcmVWZXJzaW9uIiwidXBkYXRlIiwidXBkYXRlQnlJRCIsImRvY0FjY2Vzc0dsb2JhbCIsImZpbmRPbmUiLCJmaW5kVmVyc2lvbkJ5SWRHbG9iYWwiLCJmaW5kVmVyc2lvbnNHbG9iYWwiLCJyZXN0b3JlVmVyc2lvbkdsb2JhbCIsInVwZGF0ZUdsb2JhbCIsImVuZHBvaW50cyIsImNvbGxlY3Rpb24iLCJERUxFVEUiLCJkZWxldGUiLCJHRVQiLCJ2ZXJzaW9ucyIsIlBBVENIIiwiUE9TVCIsImdsb2JhbCIsInJvb3QiLCJoYW5kbGVDdXN0b21FbmRwb2ludHMiLCJlbnRpdHlTbHVnIiwicGF5bG9hZFJlcXVlc3QiLCJsZW5ndGgiLCJoYW5kbGVyUGFyYW1zIiwicGF0aG5hbWUiLCJwYXRoUHJlZml4IiwicGF5bG9hZCIsImNvbmZpZyIsInJvdXRlcyIsImFwaSIsImN1c3RvbUVuZHBvaW50IiwiZW5kcG9pbnQiLCJtZXRob2QiLCJ0b0xvd2VyQ2FzZSIsInBhdGhNYXRjaEZuIiwicGF0aCIsImRlY29kZSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlbXBQYXJhbXMiLCJwYXJhbXMiLCJyb3V0ZVBhcmFtcyIsImhhbmRsZXIiLCJSb3V0ZU5vdEZvdW5kUmVzcG9uc2UiLCJzbHVnIiwiUmVzcG9uc2UiLCJqc29uIiwibWVzc2FnZSIsImpvaW4iLCJzdGF0dXMiLCJOT1RfRk9VTkQiLCJyZXF1ZXN0Iiwic2x1ZzEiLCJzbHVnMiIsInNsdWczIiwic2x1ZzQiLCJyZXEiLCJyZXMiLCJkaXNhYmxlRW5kcG9pbnRzIiwiY29sbGVjdGlvbnMiLCJjdXN0b21FbmRwb2ludFJlc3BvbnNlIiwiaWQiLCJnbG9iYWxDb25maWciLCJnbG9iYWxzIiwiZXJyb3IiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUdBLE9BQU9BLGdCQUFnQixjQUFhO0FBQ3BDLFNBQVNDLEtBQUssUUFBUSxpQkFBZ0I7QUFTdEMs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
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
1
+ export { };
5
2
 
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0ZXMvcmVzdC90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbGxlY3Rpb24sIFBheWxvYWRSZXF1ZXN0LCBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBCYXNlUm91dGVIYW5kbGVyID0gKHsgcmVxIH06IHsgcmVxOiBQYXlsb2FkUmVxdWVzdCB9KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB8IFJlc3BvbnNlXG5cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25Sb3V0ZUhhbmRsZXIgPSAoe1xuICBjb2xsZWN0aW9uLFxuICByZXEsXG59OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxufSkgPT4gUHJvbWlzZTxSZXNwb25zZT4gfCBSZXNwb25zZVxuXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uUm91dGVIYW5kbGVyV2l0aElEID0gKHtcbiAgaWQsXG4gIGNvbGxlY3Rpb24sXG4gIHJlcSxcbn06IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuICBpZDogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pID0+IFByb21pc2U8UmVzcG9uc2U+IHwgUmVzcG9uc2VcblxuZXhwb3J0IHR5cGUgR2xvYmFsUm91dGVIYW5kbGVyID0gKHtcbiAgZ2xvYmFsQ29uZmlnLFxuICByZXEsXG59OiB7XG4gIGdsb2JhbENvbmZpZzogU2FuaXRpemVkR2xvYmFsQ29uZmlnXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pID0+IFByb21pc2U8UmVzcG9uc2U+IHwgUmVzcG9uc2VcblxuZXhwb3J0IHR5cGUgR2xvYmFsUm91dGVIYW5kbGVyV2l0aElEID0gKHtcbiAgaWQsXG4gIGdsb2JhbENvbmZpZyxcbiAgcmVxLFxufToge1xuICBnbG9iYWxDb25maWc6IFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICBpZDogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Rcbn0pID0+IFByb21pc2U8UmVzcG9uc2U+IHwgUmVzcG9uc2VcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4QkEsV0FRa0MifQ==
@@ -1,23 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "auth", {
6
- enumerable: true,
7
- get: function() {
8
- return auth;
9
- }
10
- });
11
- const _auth = require("payload/auth");
12
- const _react = require("react");
13
- const auth = (0, _react.cache)(async ({ headers, payload })=>{
14
- const cookies = (0, _auth.parseCookies)(headers);
15
- const user = await (0, _auth.getAuthenticatedUser)({
1
+ import { getAccessResults, getAuthenticatedUser, parseCookies } from 'payload/auth';
2
+ import { cache } from 'react';
3
+ export const auth = cache(async ({ headers, payload })=>{
4
+ const cookies = parseCookies(headers);
5
+ const user = await getAuthenticatedUser({
16
6
  cookies,
17
7
  headers,
18
8
  payload
19
9
  });
20
- const permissions = await (0, _auth.getAccessResults)({
10
+ const permissions = await getAccessResults({
21
11
  req: {
22
12
  context: {},
23
13
  headers,
@@ -35,4 +25,4 @@ const auth = (0, _react.cache)(async ({ headers, payload })=>{
35
25
  };
36
26
  });
37
27
 
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXV0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBheWxvYWQsIFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgZ2V0QWNjZXNzUmVzdWx0cywgZ2V0QXV0aGVudGljYXRlZFVzZXIsIHBhcnNlQ29va2llcyB9IGZyb20gJ3BheWxvYWQvYXV0aCdcbmltcG9ydCB7IGNhY2hlIH0gZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBhdXRoID0gY2FjaGUoXG4gIGFzeW5jICh7IGhlYWRlcnMsIHBheWxvYWQgfTogeyBoZWFkZXJzOiBSZXF1ZXN0WydoZWFkZXJzJ107IHBheWxvYWQ6IFBheWxvYWQgfSkgPT4ge1xuICAgIGNvbnN0IGNvb2tpZXMgPSBwYXJzZUNvb2tpZXMoaGVhZGVycylcblxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRBdXRoZW50aWNhdGVkVXNlcih7XG4gICAgICBjb29raWVzLFxuICAgICAgaGVhZGVycyxcbiAgICAgIHBheWxvYWQsXG4gICAgfSlcblxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgZ2V0QWNjZXNzUmVzdWx0cyh7XG4gICAgICByZXE6IHtcbiAgICAgICAgY29udGV4dDoge30sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGkxOG46IHVuZGVmaW5lZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgcGF5bG9hZEFQSTogJ1JFU1QnLFxuICAgICAgICB0OiB1bmRlZmluZWQsXG4gICAgICAgIHVzZXIsXG4gICAgICB9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY29va2llcyxcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgdXNlcixcbiAgICB9XG4gIH0sXG4pXG4iXSwibmFtZXMiOlsiYXV0aCIsImNhY2hlIiwiaGVhZGVycyIsInBheWxvYWQiLCJjb29raWVzIiwicGFyc2VDb29raWVzIiwidXNlciIsImdldEF1dGhlbnRpY2F0ZWRVc2VyIiwicGVybWlzc2lvbnMiLCJnZXRBY2Nlc3NSZXN1bHRzIiwicmVxIiwiY29udGV4dCIsImkxOG4iLCJ1bmRlZmluZWQiLCJwYXlsb2FkQVBJIiwidCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFLYUE7OztlQUFBQTs7O3NCQUh3RDt1QkFDL0M7QUFFZixNQUFNQSxPQUFPQyxJQUFBQSxZQUFLLEVBQ3ZCLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQXFEO0lBQzVFLE1BQU1DLFVBQVVDLElBQUFBLGtCQUFZLEVBQUNIO0lBRTdCLE1BQU1JLE9BQU8sTUFBTUMsSUFBQUEsMEJBQW9CLEVBQUM7UUFDdENIO1FBQ0FGO1FBQ0FDO0lBQ0Y7SUFFQSxNQUFNSyxjQUFjLE1BQU1DLElBQUFBLHNCQUFnQixFQUFDO1FBQ3pDQyxLQUFLO1lBQ0hDLFNBQVMsQ0FBQztZQUNWVDtZQUNBVSxNQUFNQztZQUNOVjtZQUNBVyxZQUFZO1lBQ1pDLEdBQUdGO1lBQ0hQO1FBQ0Y7SUFDRjtJQUVBLE9BQU87UUFDTEY7UUFDQUk7UUFDQUY7SUFDRjtBQUNGIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXV0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBheWxvYWQsIFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgZ2V0QWNjZXNzUmVzdWx0cywgZ2V0QXV0aGVudGljYXRlZFVzZXIsIHBhcnNlQ29va2llcyB9IGZyb20gJ3BheWxvYWQvYXV0aCdcbmltcG9ydCB7IGNhY2hlIH0gZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjb25zdCBhdXRoID0gY2FjaGUoXG4gIGFzeW5jICh7IGhlYWRlcnMsIHBheWxvYWQgfTogeyBoZWFkZXJzOiBSZXF1ZXN0WydoZWFkZXJzJ107IHBheWxvYWQ6IFBheWxvYWQgfSkgPT4ge1xuICAgIGNvbnN0IGNvb2tpZXMgPSBwYXJzZUNvb2tpZXMoaGVhZGVycylcblxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRBdXRoZW50aWNhdGVkVXNlcih7XG4gICAgICBjb29raWVzLFxuICAgICAgaGVhZGVycyxcbiAgICAgIHBheWxvYWQsXG4gICAgfSlcblxuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gYXdhaXQgZ2V0QWNjZXNzUmVzdWx0cyh7XG4gICAgICByZXE6IHtcbiAgICAgICAgY29udGV4dDoge30sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICAgIGkxOG46IHVuZGVmaW5lZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgcGF5bG9hZEFQSTogJ1JFU1QnLFxuICAgICAgICB0OiB1bmRlZmluZWQsXG4gICAgICAgIHVzZXIsXG4gICAgICB9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY29va2llcyxcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgdXNlcixcbiAgICB9XG4gIH0sXG4pXG4iXSwibmFtZXMiOlsiZ2V0QWNjZXNzUmVzdWx0cyIsImdldEF1dGhlbnRpY2F0ZWRVc2VyIiwicGFyc2VDb29raWVzIiwiY2FjaGUiLCJhdXRoIiwiaGVhZGVycyIsInBheWxvYWQiLCJjb29raWVzIiwidXNlciIsInBlcm1pc3Npb25zIiwicmVxIiwiY29udGV4dCIsImkxOG4iLCJ1bmRlZmluZWQiLCJwYXlsb2FkQVBJIiwidCJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsZ0JBQWdCLEVBQUVDLG9CQUFvQixFQUFFQyxZQUFZLFFBQVEsZUFBYztBQUNuRixTQUFTQyxLQUFLLFFBQVEsUUFBTztBQUU3QixPQUFPLE1BQU1DLE9BQU9ELE1BQ2xCLE9BQU8sRUFBRUUsT0FBTyxFQUFFQyxPQUFPLEVBQXFEO0lBQzVFLE1BQU1DLFVBQVVMLGFBQWFHO0lBRTdCLE1BQU1HLE9BQU8sTUFBTVAscUJBQXFCO1FBQ3RDTTtRQUNBRjtRQUNBQztJQUNGO0lBRUEsTUFBTUcsY0FBYyxNQUFNVCxpQkFBaUI7UUFDekNVLEtBQUs7WUFDSEMsU0FBUyxDQUFDO1lBQ1ZOO1lBQ0FPLE1BQU1DO1lBQ05QO1lBQ0FRLFlBQVk7WUFDWkMsR0FBR0Y7WUFDSEw7UUFDRjtJQUNGO0lBRUEsT0FBTztRQUNMRDtRQUNBRTtRQUNBRDtJQUNGO0FBQ0YsR0FDRCJ9