velocious 1.0.209 → 1.0.210
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/configuration-types.d.ts +5 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +2 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +12 -0
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +38 -9
- package/package.json +1 -1
|
@@ -143,6 +143,7 @@
|
|
|
143
143
|
/**
|
|
144
144
|
* @typedef {object} BackendProjectConfiguration
|
|
145
145
|
* @property {string} path - Path to the backend project.
|
|
146
|
+
* @property {string} [frontendModelsOutputPath] - Optional output project path where `src/frontend-models` should be generated.
|
|
146
147
|
* @property {Record<string, FrontendModelResourceConfiguration>} [frontendModels] - Frontend model definitions keyed by model class name.
|
|
147
148
|
* @property {Record<string, FrontendModelResourceConfiguration>} [resources] - Alias for `frontendModels`.
|
|
148
149
|
*/
|
|
@@ -565,6 +566,10 @@ export type BackendProjectConfiguration = {
|
|
|
565
566
|
* - Path to the backend project.
|
|
566
567
|
*/
|
|
567
568
|
path: string;
|
|
569
|
+
/**
|
|
570
|
+
* - Optional output project path where `src/frontend-models` should be generated.
|
|
571
|
+
*/
|
|
572
|
+
frontendModelsOutputPath?: string;
|
|
568
573
|
/**
|
|
569
574
|
* - Frontend model definitions keyed by model class name.
|
|
570
575
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-types.d.ts","sourceRoot":"","sources":["../../src/configuration-types.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;GAEG;AAEH;;GAEG;AAEH;;;;;;GAMG;AAEH;;GAEG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;GAEG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AAEH;;;;GAIG;AAEH;;GAEG;AAEH;;;;;;;;;;GAUG;AAEH;;;GAGG;AAEH;;;;;GAKG;AAEH;;;GAGG;AAGH;;GAEG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AAEH
|
|
1
|
+
{"version":3,"file":"configuration-types.d.ts","sourceRoot":"","sources":["../../src/configuration-types.js"],"names":[],"mappings":"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"}
|
|
@@ -144,6 +144,7 @@
|
|
|
144
144
|
/**
|
|
145
145
|
* @typedef {object} BackendProjectConfiguration
|
|
146
146
|
* @property {string} path - Path to the backend project.
|
|
147
|
+
* @property {string} [frontendModelsOutputPath] - Optional output project path where `src/frontend-models` should be generated.
|
|
147
148
|
* @property {Record<string, FrontendModelResourceConfiguration>} [frontendModels] - Frontend model definitions keyed by model class name.
|
|
148
149
|
* @property {Record<string, FrontendModelResourceConfiguration>} [resources] - Alias for `frontendModels`.
|
|
149
150
|
*/
|
|
@@ -181,4 +182,4 @@
|
|
|
181
182
|
* @property {WebsocketMessageHandlerResolverType} [websocketMessageHandlerResolver] - Resolve a raw websocket message handler for each connection.
|
|
182
183
|
*/
|
|
183
184
|
export const nothing = {};
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uLXR5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUVIOztHQUVHO0FBRUg7O0dBRUc7QUFFSDs7Ozs7O0dBTUc7QUFFSDs7R0FFRztBQUVIOzs7Ozs7OztHQVFHO0FBRUg7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUg7O0dBRUc7QUFFSDs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBRUg7Ozs7R0FJRztBQUVIOztHQUVHO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUVIOzs7R0FHRztBQUVIOzs7OztHQUtHO0FBRUg7OztHQUdHO0FBR0g7O0dBRUc7QUFFSDs7Ozs7Ozs7R0FRRztBQUVIOzs7Ozs7O0dBT0c7QUFFSDs7Ozs7Ozs7R0FRRztBQUVIOzs7OztHQUtHO0FBRUg7O0dBRUc7QUFFSDs7R0FFRztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUVILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBAbW9kdWxlIHR5cGVzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24oe3JlcXVlc3Q6IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHQsIHJlc3BvbnNlOiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9yZXNwb25zZS5qc1wiKS5kZWZhdWx0fSk6IFByb21pc2U8dm9pZD59IENvcnNUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24oe3JlcXVlc3Q6IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWQsIHN1YnNjcmlwdGlvbj86IHtjaGFubmVsOiBzdHJpbmcsIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+fSwgY2xpZW50OiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9pbmRleC5qc1wiKS5kZWZhdWx0LCB3ZWJzb2NrZXRTZXNzaW9uOiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtc2Vzc2lvbi5qc1wiKS5kZWZhdWx0LCBjb25maWd1cmF0aW9uOiBpbXBvcnQoXCIuL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0pOiB0eXBlb2YgaW1wb3J0KFwiLi9odHRwLXNlcnZlci93ZWJzb2NrZXQtY2hhbm5lbC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi9odHRwLXNlcnZlci93ZWJzb2NrZXQtY2hhbm5lbC5qc1wiKS5kZWZhdWx0IHwgdm9pZCB8IFByb21pc2U8dHlwZW9mIGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvd2Vic29ja2V0LWNoYW5uZWwuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvd2Vic29ja2V0LWNoYW5uZWwuanNcIikuZGVmYXVsdCB8IHZvaWQ+fSBXZWJzb2NrZXRDaGFubmVsUmVzb2x2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBXZWJzb2NrZXRNZXNzYWdlSGFuZGxlclxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7bWVzc2FnZTogYW55LCBzZXNzaW9uOiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtc2Vzc2lvbi5qc1wiKS5kZWZhdWx0fSkgOiBQcm9taXNlPHZvaWQ+IHwgdm9pZH0gW29uTWVzc2FnZV0gLSBIYW5kbGVyIGZvciBpbmNvbWluZyB3ZWJzb2NrZXQgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHtzZXNzaW9uOiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtc2Vzc2lvbi5qc1wiKS5kZWZhdWx0fSkgOiBQcm9taXNlPHZvaWQ+IHwgdm9pZH0gW29uT3Blbl0gLSBIYW5kbGVyIHdoZW4gdGhlIHdlYnNvY2tldCBzZXNzaW9uIG9wZW5zLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7c2Vzc2lvbjogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXNlc3Npb24uanNcIikuZGVmYXVsdH0pIDogUHJvbWlzZTx2b2lkPiB8IHZvaWR9IFtvbkNsb3NlXSAtIEhhbmRsZXIgd2hlbiB0aGUgd2Vic29ja2V0IHNlc3Npb24gY2xvc2VzLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7ZXJyb3I6IEVycm9yLCBzZXNzaW9uOiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtc2Vzc2lvbi5qc1wiKS5kZWZhdWx0fSkgOiBQcm9taXNlPHZvaWQ+IHwgdm9pZH0gW29uRXJyb3JdIC0gSGFuZGxlciB3aGVuIGEgd2Vic29ja2V0IG1lc3NhZ2UgZXJyb3JzLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKHtyZXF1ZXN0OiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkLCBjbGllbnQ6IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L2luZGV4LmpzXCIpLmRlZmF1bHQsIGNvbmZpZ3VyYXRpb246IGltcG9ydChcIi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSk6IFdlYnNvY2tldE1lc3NhZ2VIYW5kbGVyIHwgdm9pZCB8IFByb21pc2U8V2Vic29ja2V0TWVzc2FnZUhhbmRsZXIgfCB2b2lkPn0gV2Vic29ja2V0TWVzc2FnZUhhbmRsZXJSZXNvbHZlclR5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoaWQ6IHN0cmluZykgPT4ge2RlZmF1bHQ6IHR5cGVvZiBpbXBvcnQoXCIuL2luaXRpYWxpemVyLmpzXCIpLmRlZmF1bHR9fSBJbml0aWFsaXplcnNSZXF1aXJlQ29udGV4dFR5cGVcbiAqIEB0eXBlZGVmIHtJbml0aWFsaXplcnNSZXF1aXJlQ29udGV4dFR5cGUgJiB7XG4gKiAgIGtleXM6ICgpID0+IHN0cmluZ1tdLFxuICogICBpZDogc3RyaW5nXG4gKiB9fSBXZWJwYWNrUmVxdWlyZUNvbnRleHRcbiAqIEB0eXBlZGVmIHt7cmVxdWlyZUNvbnRleHQ6IFdlYnBhY2tSZXF1aXJlQ29udGV4dH19IEluaXRpYWxpemVyc0V4cG9ydFR5cGVcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbih7Y29uZmlndXJhdGlvbjogaW1wb3J0KFwiLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9KSA6IFByb21pc2U8SW5pdGlhbGl6ZXJzRXhwb3J0VHlwZT59IEluaXRpYWxpemVyc1R5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFNxbENvbmZpZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkYXRhYmFzZV0gLSBEYXRhYmFzZSBuYW1lIGZvciB0aGUgU1FMIGRyaXZlci5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbb3B0aW9uc10gLSBEcml2ZXItc3BlY2lmaWMgY29ubmVjdGlvbiBvcHRpb25zLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbb3B0aW9ucy5lbmNyeXB0XSAtIFdoZXRoZXIgdG8gZW5jcnlwdCB0aGUgY29ubmVjdGlvbiAoTVNTUUwpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtvcHRpb25zLnNjaGVtYV0gLSBEZWZhdWx0IHNjaGVtYSBmb3IgdW5xdWFsaWZpZWQgdGFibGUgbG9va3VwcyAoTVNTUUwpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtvcHRpb25zLnNlcnZlck5hbWVdIC0gVExTIFNOSSBzZXJ2ZXIgbmFtZSBvdmVycmlkZSBmb3IgTVNTUUwgKGVtcHR5IHN0cmluZyBkaXNhYmxlcyBTTkkpLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbb3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlXSAtIFdoZXRoZXIgdG8gdHJ1c3QgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSAoTVNTUUwpLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYXNzd29yZF0gLSBQYXNzd29yZCBmb3IgdGhlIFNRTCB1c2VyLlxuICogQHByb3BlcnR5IHtvYmplY3R9IFtwb29sXSAtIENvbm5lY3Rpb24gcG9vbCBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwb29sLm1heF0gLSBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcG9vbC5taW5dIC0gTWluaW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3Bvb2wuaWRsZVRpbWVvdXRNaWxsaXNdIC0gSWRsZSB0aW1lb3V0IGJlZm9yZSByZWxlYXNpbmcgYSBjb25uZWN0aW9uLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzZXJ2ZXJdIC0gU1FMIHNlcnZlciBob3N0bmFtZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdXNlcl0gLSBTUUwgdXNlcm5hbWUuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBEYXRhYmFzZUNvbmZpZ3VyYXRpb25UeXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2RhdGFiYXNlXSAtIERhdGFiYXNlIG5hbWUgZm9yIHRoaXMgY29ubmVjdGlvbi5cbiAqIEBwcm9wZXJ0eSB7dHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IFtkcml2ZXJdIC0gRHJpdmVyIGNsYXNzIHRvIHVzZSBmb3IgdGhpcyBkYXRhYmFzZS5cbiAqIEBwcm9wZXJ0eSB7dHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvcG9vbC9iYXNlLmpzXCIpLmRlZmF1bHR9IFtwb29sVHlwZV0gLSBQb29sIGNsYXNzIHRvIHVzZSBmb3IgdGhpcyBkYXRhYmFzZS5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oKSA6IHVua25vd259IFtnZXRDb25uZWN0aW9uXSAtIEN1c3RvbSBjb25uZWN0aW9uIGZhY3Rvcnkgb3ZlcnJpZGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hvc3RdIC0gRGF0YWJhc2UgaG9zdC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW21pZ3JhdGlvbnNdIC0gV2hldGhlciBtaWdyYXRpb25zIGFyZSBlbmFibGVkIGZvciB0aGlzIGRhdGFiYXNlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYXNzd29yZF0gLSBQYXNzd29yZCBmb3IgdGhlIGRhdGFiYXNlIHVzZXIuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3BvcnRdIC0gRGF0YWJhc2UgcG9ydC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbmFtZV0gLSBGcmllbmRseSBuYW1lIGZvciB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3JlYWRPbmx5XSAtIFdoZXRoZXIgd3JpdGVzIHNob3VsZCBiZSBibG9ja2VkIGZvciB0aGlzIGRhdGFiYXNlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzY2hlbWFdIC0gRGVmYXVsdCBzY2hlbWEgZm9yIHVucXVhbGlmaWVkIHRhYmxlIGxvb2t1cHMgKE1TU1FMKS5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbcmVjb3JkXSAtIFJlY29yZC1sZXZlbCBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbcmVjb3JkLnRyYW5zYWN0aW9uc10gLSBXaGV0aGVyIHJlY29yZCBvcGVyYXRpb25zIHNob3VsZCB1c2UgdHJhbnNhY3Rpb25zLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbcmVzZXRdIC0gV2hldGhlciB0byByZXNldCB0aGUgZGF0YWJhc2Ugb24gc3RhcnR1cC5cbiAqIEBwcm9wZXJ0eSB7U3FsQ29uZmlnfSBbc3FsQ29uZmlnXSAtIERyaXZlci1zcGVjaWZpYyBTUUwgY29uZmlnLlxuICogQHByb3BlcnR5IHtcIm1zc3FsXCIgfCBcIm15c3FsXCIgfCBcInBnc3FsXCIgfCBcInNxbGl0ZVwifSBbdHlwZV0gLSBEYXRhYmFzZSB0eXBlIGlkZW50aWZpZXIuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3VzZURhdGFiYXNlXSAtIERhdGFiYXNlIHRvIHN3aXRjaCB0byBhZnRlciBjb25uZWN0aW5nLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt1c2VybmFtZV0gLSBVc2VybmFtZSBmb3IgZGF0YWJhc2UgYXV0aGVudGljYXRpb24uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7XCJkZWJ1Zy1sb3ctbGV2ZWxcIiB8IFwiZGVidWdcIiB8IFwiaW5mb1wiIHwgXCJ3YXJuXCIgfCBcImVycm9yXCJ9IExvZ0xldmVsXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBMb2dnaW5nT3V0cHV0UGF5bG9hZFxuICogQHByb3BlcnR5IHtMb2dMZXZlbH0gbGV2ZWwgLSBMb2cgbGV2ZWwuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWVzc2FnZSAtIEZvcm1hdHRlZCBtZXNzYWdlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHN1YmplY3QgLSBMb2cgc3ViamVjdC5cbiAqIEBwcm9wZXJ0eSB7RGF0ZX0gdGltZXN0YW1wIC0gVGltZXN0YW1wLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gTG9nZ2luZ091dHB1dFxuICogQHByb3BlcnR5IHtmdW5jdGlvbihMb2dnaW5nT3V0cHV0UGF5bG9hZCk6IFByb21pc2U8dm9pZD4gfCB2b2lkfSB3cml0ZSAtIFdyaXRlIGEgbG9nIGVudHJ5LlxuICogQHByb3BlcnR5IHtMb2dMZXZlbFtdfSBbbGV2ZWxzXSAtIERlZmF1bHQgbGV2ZWxzIGZvciB0aGlzIG91dHB1dC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IExvZ2dpbmdPdXRwdXRDb25maWdcbiAqIEBwcm9wZXJ0eSB7TG9nZ2luZ091dHB1dH0gb3V0cHV0IC0gT3V0cHV0IGluc3RhbmNlLlxuICogQHByb3BlcnR5IHtBcnJheTxMb2dMZXZlbD59IFtsZXZlbHNdIC0gTGV2ZWxzIGVuYWJsZWQgZm9yIHRoaXMgb3V0cHV0LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0xvZ2dpbmdPdXRwdXRDb25maWcgfCBMb2dnaW5nT3V0cHV0IHwgaW1wb3J0KFwiLi9sb2dnZXIvYmFzZS1sb2dnZXIuanNcIikuZGVmYXVsdH0gTG9nZ2VyQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBMb2dnaW5nQ29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtib29sZWFufSBbY29uc29sZV0gLSBFbmFibGUvZGlzYWJsZSBjb25zb2xlIGxvZ2dpbmcgZm9yIHJlcXVlc3QgbG9nZ2luZy4gRGVmYXVsdHMgdG8gdHJ1ZSBvdXRzaWRlIG9mIFwidGVzdFwiIGFuZCBmb3IgSFRUUCBzZXJ2ZXIgbG9ncy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2ZpbGVdIC0gRW5hYmxlL2Rpc2FibGUgd3JpdGluZyBsb2dzIHRvIGEgZmlsZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGlyZWN0b3J5XSAtIERpcmVjdG9yeSB3aGVyZSBsb2cgZmlsZXMgYXJlIHN0b3JlZC4gRGVmYXVsdHMgdG8gXCI8cHJvamVjdD4vbG9nXCIuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ZpbGVQYXRoXSAtIEV4cGxpY2l0IHBhdGggZm9yIHRoZSBsb2cgZmlsZS4gRGVmYXVsdHMgdG8gXCI8ZGlyZWN0b3J5Pi88ZW52aXJvbm1lbnQ+LmxvZ1wiLlxuICogQHByb3BlcnR5IHtBcnJheTxcImRlYnVnLWxvdy1sZXZlbFwiIHwgXCJkZWJ1Z1wiIHwgXCJpbmZvXCIgfCBcIndhcm5cIiB8IFwiZXJyb3JcIj59IFtsZXZlbHNdIC0gT3ZlcnJpZGUgd2hpY2ggbG9nIGxldmVscyBhcmUgZW1pdHRlZC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2RlYnVnTG93TGV2ZWxdIC0gQ29udmVuaWVuY2UgZmxhZyB0byBpbmNsdWRlIHZlcnkgbG93LWxldmVsIGRlYnVnIGxvZ3MuXG4gKiBAcHJvcGVydHkge0xvZ2dlckNvbmZpZ1tdfSBbbG9nZ2Vyc10gLSBMb2dnZXIgaW5zdGFuY2VzIChjb252ZXJ0ZWQgdG8gb3V0cHV0cyB3aGVuIGNvbmZpZ3VyZWQpLlxuICogQHByb3BlcnR5IHtMb2dnaW5nT3V0cHV0Q29uZmlnW119IFtvdXRwdXRzXSAtIEV4cGxpY2l0IGxvZ2dlciBvdXRwdXRzIChvdmVycmlkZXMgY29uc29sZS9maWxlIGRlZmF1bHRzIHdoZW4gcHJvdmlkZWQpLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gU3RydWN0dXJlU3FsQ29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2Rpc2FibGVkRW52aXJvbm1lbnRzXSAtIEVudmlyb25tZW50cyB0aGF0IHNob3VsZCBza2lwIHdyaXRpbmcgc3RydWN0dXJlIHNxbCBmaWxlcy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JzQ29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtob3N0XSAtIEhvc3RuYW1lIGZvciB0aGUgYmFja2dyb3VuZCBqb2JzIG1haW4gcHJvY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcG9ydF0gLSBQb3J0IGZvciB0aGUgYmFja2dyb3VuZCBqb2JzIG1haW4gcHJvY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGF0YWJhc2VJZGVudGlmaWVyXSAtIERhdGFiYXNlIGlkZW50aWZpZXIgdXNlZCB0byBzdG9yZSBiYWNrZ3JvdW5kIGpvYnMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBNYWlsZXJCYWNrZW5kXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHtwYXlsb2FkOiBpbXBvcnQoXCIuL21haWxlci5qc1wiKS5NYWlsZXJEZWxpdmVyeVBheWxvYWQsIGNvbmZpZ3VyYXRpb246IGltcG9ydChcIi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSkgOiBQcm9taXNlPHVua25vd24+IHwgdW5rbm93bn0gZGVsaXZlciAtIERlbGl2ZXIgYSBtYWlsZXIgcGF5bG9hZC5cbiAqL1xuXG5cbi8qKlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gTG9jYWxlRmFsbGJhY2tzVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIGFueT59IGF0dHJpYnV0ZXMgLSBBdHRyaWJ1dGVzIHRvIGV4cG9zZSBvbiB0aGUgZnJvbnRlbmQgbW9kZWwuXG4gKiBAcHJvcGVydHkge0Zyb250ZW5kTW9kZWxSZXNvdXJjZUFiaWxpdGllc0NvbmZpZ3VyYXRpb259IGFiaWxpdGllcyAtIEFiaWxpdHkgYWN0aW9ucyBrZXllZCBieSBmcm9udGVuZCBjb21tYW5kIChgaW5kZXhgLCBgZmluZGAsIGBjcmVhdGVgLCBgdXBkYXRlYCwgYGRlc3Ryb3lgKS5cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gW2NvbW1hbmRzXSAtIENvbW1hbmQgbmFtZXMga2V5ZWQgYnkgYWN0aW9uIChgaW5kZXhgLCBgZmluZGAsIGB1cGRhdGVgLCBgZGVzdHJveWApLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYXRoXSAtIEhUVFAgcGF0aCBwcmVmaXggdXNlZCBieSBmcm9udGVuZCBtb2RlbCBjb21tYW5kcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcHJpbWFyeUtleV0gLSBQcmltYXJ5IGtleSBhdHRyaWJ1dGUgbmFtZS5cbiAqIEBwcm9wZXJ0eSB7RnJvbnRlbmRNb2RlbFJlc291cmNlU2VydmVyQ29uZmlndXJhdGlvbn0gW3NlcnZlcl0gLSBPcHRpb25hbCBiYWNrZW5kIGJlaGF2aW9yIG92ZXJyaWRlcyBmb3IgYnVpbHQtaW4gZnJvbnRlbmQgYWN0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEZyb250ZW5kTW9kZWxSZXNvdXJjZUFiaWxpdGllc0NvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaW5kZXhdIC0gQWJpbGl0eSBhY3Rpb24gZm9yIGZyb250ZW5kIGluZGV4LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmaW5kXSAtIEFiaWxpdHkgYWN0aW9uIGZvciBmcm9udGVuZCBmaW5kLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjcmVhdGVdIC0gQWJpbGl0eSBhY3Rpb24gZm9yIGZyb250ZW5kIGNyZWF0ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdXBkYXRlXSAtIEFiaWxpdHkgYWN0aW9uIGZvciBmcm9udGVuZCB1cGRhdGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Rlc3Ryb3ldIC0gQWJpbGl0eSBhY3Rpb24gZm9yIGZyb250ZW5kIGRlc3Ryb3kuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBGcm9udGVuZE1vZGVsUmVzb3VyY2VTZXJ2ZXJDb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHthY3Rpb246IFwiaW5kZXhcIiB8IFwiZmluZFwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCBjb250cm9sbGVyOiBpbXBvcnQoXCIuL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdCwgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0pIDogKGJvb2xlYW4gfCB2b2lkIHwgUHJvbWlzZTxib29sZWFuIHwgdm9pZD4pfSBbYmVmb3JlQWN0aW9uXSAtIE9wdGlvbmFsIGNhbGxiYWNrIHJ1biBiZWZvcmUgYnVpbHQtaW4gZnJvbnRlbmQgYWN0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe2FjdGlvbjogXCJpbmRleFwiLCBjb250cm9sbGVyOiBpbXBvcnQoXCIuL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdCwgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0pIDogUHJvbWlzZTxpbXBvcnQoXCIuL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10+fSBbcmVjb3Jkc10gLSBSZWNvcmRzIGxvYWRlciBmb3IgZnJvbnRlbmRJbmRleC5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe2FjdGlvbjogXCJpbmRleFwiIHwgXCJmaW5kXCIgfCBcInVwZGF0ZVwiLCBjb250cm9sbGVyOiBpbXBvcnQoXCIuL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdCwgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCwgbW9kZWw6IGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+fSBbc2VyaWFsaXplXSAtIFJlY29yZCBzZXJpYWxpemVyIGZvciByZXNwb25zZSBwYXlsb2Fkcy5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe2FjdGlvbjogXCJmaW5kXCIgfCBcInVwZGF0ZVwiIHwgXCJkZXN0cm95XCIsIGNvbnRyb2xsZXI6IGltcG9ydChcIi4vY29udHJvbGxlci5qc1wiKS5kZWZhdWx0LCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIG1vZGVsQ2xhc3M6IHR5cGVvZiBpbXBvcnQoXCIuL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0LCBpZDogc3RyaW5nIHwgbnVtYmVyfSkgOiBQcm9taXNlPGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCBudWxsPn0gW2ZpbmRdIC0gUmVjb3JkIGxvYWRlciBmb3IgZmluZC91cGRhdGUvZGVzdHJveSBhY3Rpb25zLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7YWN0aW9uOiBcInVwZGF0ZVwiLCBjb250cm9sbGVyOiBpbXBvcnQoXCIuL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdCwgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCwgbW9kZWw6IGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQsIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIGFueT59KSA6IFByb21pc2U8aW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCB8IHZvaWQ+fSBbdXBkYXRlXSAtIEN1c3RvbSB1cGRhdGUgY2FsbGJhY2suXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHthY3Rpb246IFwiZGVzdHJveVwiLCBjb250cm9sbGVyOiBpbXBvcnQoXCIuL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdCwgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCwgbW9kZWw6IGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA6IFByb21pc2U8dm9pZD59IFtkZXN0cm95XSAtIEN1c3RvbSBkZXN0cm95IGNhbGxiYWNrLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2VuZFByb2plY3RDb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGF0aCAtIFBhdGggdG8gdGhlIGJhY2tlbmQgcHJvamVjdC5cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgRnJvbnRlbmRNb2RlbFJlc291cmNlQ29uZmlndXJhdGlvbj59IFtmcm9udGVuZE1vZGVsc10gLSBGcm9udGVuZCBtb2RlbCBkZWZpbml0aW9ucyBrZXllZCBieSBtb2RlbCBjbGFzcyBuYW1lLlxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBGcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uPn0gW3Jlc291cmNlc10gLSBBbGlhcyBmb3IgYGZyb250ZW5kTW9kZWxzYC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHt0eXBlb2YgaW1wb3J0KFwiLi9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanNcIikuZGVmYXVsdH0gQWJpbGl0eVJlc291cmNlQ2xhc3NUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24oe2NvbmZpZ3VyYXRpb246IGltcG9ydChcIi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0LCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHJlcXVlc3Q6IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHQsIHJlc3BvbnNlOiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9yZXNwb25zZS5qc1wiKS5kZWZhdWx0fSkgOiBpbXBvcnQoXCIuL2F1dGhvcml6YXRpb24vYWJpbGl0eS5qc1wiKS5kZWZhdWx0IHwgdm9pZCB8IFByb21pc2U8aW1wb3J0KFwiLi9hdXRob3JpemF0aW9uL2FiaWxpdHkuanNcIikuZGVmYXVsdCB8IHZvaWQ+fSBBYmlsaXR5UmVzb2x2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBDb25maWd1cmF0aW9uQXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7Q29yc1R5cGV9IFtjb3JzXSAtIENPUlMgY29uZmlndXJhdGlvbiBmb3IgdGhlIEhUVFAgc2VydmVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjb29raWVTZWNyZXRdIC0gU2VjcmV0IGZvciBlbmNyeXB0aW5nIGNvb2tpZXMuXG4gKiBAcHJvcGVydHkge0FiaWxpdHlSZXNvdXJjZUNsYXNzVHlwZVtdfSBbYWJpbGl0eVJlc291cmNlc10gLSBSZXNvdXJjZSBjbGFzc2VzIHVzZWQgdG8gZGVmaW5lIGFiaWxpdGllcyBwZXIgbW9kZWwuXG4gKiBAcHJvcGVydHkge0FiaWxpdHlSZXNvbHZlclR5cGV9IFthYmlsaXR5UmVzb2x2ZXJdIC0gUmVzb2x2ZXIgZm9yIGNyZWF0aW5nIHJlcXVlc3Qtc2NvcGVkIGFiaWxpdHkgaW5zdGFuY2VzLlxuICogQHByb3BlcnR5IHtCYWNrZW5kUHJvamVjdENvbmZpZ3VyYXRpb25bXX0gW2JhY2tlbmRQcm9qZWN0c10gLSBCYWNrZW5kIHByb2plY3QgZGVmaW5pdGlvbnMgdXNlZCBmb3IgZnJvbnRlbmQgbW9kZWwgZ2VuZXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7e1trZXk6IHN0cmluZ106IHtba2V5OiBzdHJpbmddOiBEYXRhYmFzZUNvbmZpZ3VyYXRpb25UeXBlfX19IGRhdGFiYXNlIC0gRGF0YWJhc2UgY29uZmlndXJhdGlvbnMga2V5ZWQgYnkgZW52aXJvbm1lbnQgYW5kIGlkZW50aWZpZXIuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtkZWJ1Z10gLSBFbmFibGUgZGVidWcgbG9nZ2luZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGlyZWN0b3J5XSAtIEJhc2UgZGlyZWN0b3J5IGZvciB0aGUgcHJvamVjdC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZW52aXJvbm1lbnRdIC0gQ3VycmVudCBlbnZpcm9ubWVudCBuYW1lLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2Vudmlyb25tZW50LWhhbmRsZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gZW52aXJvbm1lbnRIYW5kbGVyIC0gRW52aXJvbm1lbnQgaGFuZGxlciBpbnN0YW5jZS5cbiAqIEBwcm9wZXJ0eSB7TG9nZ2luZ0NvbmZpZ3VyYXRpb259IFtsb2dnaW5nXSAtIExvZ2dpbmcgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYnNDb25maWd1cmF0aW9ufSBbYmFja2dyb3VuZEpvYnNdIC0gQmFja2dyb3VuZCBqb2JzIGNvbmZpZ3VyYXRpb24uXG4gKiBAcHJvcGVydHkge01haWxlckJhY2tlbmR9IFttYWlsZXJCYWNrZW5kXSAtIE1haWwgZGVsaXZlcnkgYmFja2VuZC5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe2NvbmZpZ3VyYXRpb246IGltcG9ydChcIi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0LCB0eXBlOiBzdHJpbmd9KSA6IHZvaWR9IGluaXRpYWxpemVNb2RlbHMgLSBIb29rIHRvIHJlZ2lzdGVyIG1vZGVscyBmb3IgYSBnaXZlbiBpbml0aWFsaXphdGlvbiB0eXBlLlxuICogQHByb3BlcnR5IHtJbml0aWFsaXplcnNUeXBlfSBbaW5pdGlhbGl6ZXJzXSAtIEluaXRpYWxpemVyIGxvYWRlciBmb3IgZW52aXJvbm1lbnQgYm9vdHN0cmFwcGluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgZnVuY3Rpb24oKSA6IHN0cmluZ30gbG9jYWxlIC0gRGVmYXVsdCBsb2NhbGUgb3IgbG9jYWxlIHJlc29sdmVyLlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gbG9jYWxlcyAtIFN1cHBvcnRlZCBsb2NhbGVzLlxuICogQHByb3BlcnR5IHtMb2NhbGVGYWxsYmFja3NUeXBlfSBsb2NhbGVGYWxsYmFja3MgLSBMb2NhbGUgZmFsbGJhY2sgbWFwLlxuICogQHByb3BlcnR5IHtTdHJ1Y3R1cmVTcWxDb25maWd1cmF0aW9ufSBbc3RydWN0dXJlU3FsXSAtIFN0cnVjdHVyZSBTUUwgZ2VuZXJhdGlvbiBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt0ZXN0aW5nXSAtIFBhdGggdG8gdGhlIHRlc3RpbmcgY29uZmlndXJhdGlvbiBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCAoKCkgPT4gbnVtYmVyKX0gW3RpbWV6b25lT2Zmc2V0TWludXRlc10gLSBEZWZhdWx0IHRpbWV6b25lIG9mZnNldCBpbiBtaW51dGVzLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCAoKCkgPT4gbnVtYmVyKX0gW3JlcXVlc3RUaW1lb3V0TXNdIC0gVGltZW91dCBpbiBzZWNvbmRzIGZvciBjb21wbGV0aW5nIGEgSFRUUCByZXF1ZXN0LlxuICogQHByb3BlcnR5IHtXZWJzb2NrZXRDaGFubmVsUmVzb2x2ZXJUeXBlfSBbd2Vic29ja2V0Q2hhbm5lbFJlc29sdmVyXSAtIFJlc29sdmUgYSB3ZWJzb2NrZXQgY2hhbm5lbCBjbGFzcy9pbnN0YW5jZSBmb3IgZWFjaCBjb25uZWN0aW9uLlxuICogQHByb3BlcnR5IHtXZWJzb2NrZXRNZXNzYWdlSGFuZGxlclJlc29sdmVyVHlwZX0gW3dlYnNvY2tldE1lc3NhZ2VIYW5kbGVyUmVzb2x2ZXJdIC0gUmVzb2x2ZSBhIHJhdyB3ZWJzb2NrZXQgbWVzc2FnZSBoYW5kbGVyIGZvciBlYWNoIGNvbm5lY3Rpb24uXG4gKi9cblxuZXhwb3J0IGNvbnN0IG5vdGhpbmcgPSB7fVxuIl19
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWd1cmF0aW9uLXR5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUVIOztHQUVHO0FBRUg7O0dBRUc7QUFFSDs7Ozs7O0dBTUc7QUFFSDs7R0FFRztBQUVIOzs7Ozs7OztHQVFHO0FBRUg7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUg7O0dBRUc7QUFFSDs7Ozs7O0dBTUc7QUFFSDs7OztHQUlHO0FBRUg7Ozs7R0FJRztBQUVIOztHQUVHO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUVIOzs7R0FHRztBQUVIOzs7OztHQUtHO0FBRUg7OztHQUdHO0FBR0g7O0dBRUc7QUFFSDs7Ozs7Ozs7R0FRRztBQUVIOzs7Ozs7O0dBT0c7QUFFSDs7Ozs7Ozs7R0FRRztBQUVIOzs7Ozs7R0FNRztBQUVIOztHQUVHO0FBRUg7O0dBRUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFFSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQG1vZHVsZSB0eXBlc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKHtyZXF1ZXN0OiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0LCByZXNwb25zZTogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvcmVzcG9uc2UuanNcIikuZGVmYXVsdH0pOiBQcm9taXNlPHZvaWQ+fSBDb3JzVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKHtyZXF1ZXN0OiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC93ZWJzb2NrZXQtcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkLCBzdWJzY3JpcHRpb24/OiB7Y2hhbm5lbDogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0sIGNsaWVudDogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvaW5kZXguanNcIikuZGVmYXVsdCwgd2Vic29ja2V0U2Vzc2lvbjogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXNlc3Npb24uanNcIikuZGVmYXVsdCwgY29uZmlndXJhdGlvbjogaW1wb3J0KFwiLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9KTogdHlwZW9mIGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvd2Vic29ja2V0LWNoYW5uZWwuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvd2Vic29ja2V0LWNoYW5uZWwuanNcIikuZGVmYXVsdCB8IHZvaWQgfCBQcm9taXNlPHR5cGVvZiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL3dlYnNvY2tldC1jaGFubmVsLmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL3dlYnNvY2tldC1jaGFubmVsLmpzXCIpLmRlZmF1bHQgfCB2b2lkPn0gV2Vic29ja2V0Q2hhbm5lbFJlc29sdmVyVHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gV2Vic29ja2V0TWVzc2FnZUhhbmRsZXJcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe21lc3NhZ2U6IGFueSwgc2Vzc2lvbjogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXNlc3Npb24uanNcIikuZGVmYXVsdH0pIDogUHJvbWlzZTx2b2lkPiB8IHZvaWR9IFtvbk1lc3NhZ2VdIC0gSGFuZGxlciBmb3IgaW5jb21pbmcgd2Vic29ja2V0IG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7c2Vzc2lvbjogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXNlc3Npb24uanNcIikuZGVmYXVsdH0pIDogUHJvbWlzZTx2b2lkPiB8IHZvaWR9IFtvbk9wZW5dIC0gSGFuZGxlciB3aGVuIHRoZSB3ZWJzb2NrZXQgc2Vzc2lvbiBvcGVucy5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe3Nlc3Npb246IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1zZXNzaW9uLmpzXCIpLmRlZmF1bHR9KSA6IFByb21pc2U8dm9pZD4gfCB2b2lkfSBbb25DbG9zZV0gLSBIYW5kbGVyIHdoZW4gdGhlIHdlYnNvY2tldCBzZXNzaW9uIGNsb3Nlcy5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe2Vycm9yOiBFcnJvciwgc2Vzc2lvbjogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXNlc3Npb24uanNcIikuZGVmYXVsdH0pIDogUHJvbWlzZTx2b2lkPiB8IHZvaWR9IFtvbkVycm9yXSAtIEhhbmRsZXIgd2hlbiBhIHdlYnNvY2tldCBtZXNzYWdlIGVycm9ycy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbih7cmVxdWVzdDogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXJlcXVlc3QuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZCwgY2xpZW50OiBpbXBvcnQoXCIuL2h0dHAtc2VydmVyL2NsaWVudC9pbmRleC5qc1wiKS5kZWZhdWx0LCBjb25maWd1cmF0aW9uOiBpbXBvcnQoXCIuL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0pOiBXZWJzb2NrZXRNZXNzYWdlSGFuZGxlciB8IHZvaWQgfCBQcm9taXNlPFdlYnNvY2tldE1lc3NhZ2VIYW5kbGVyIHwgdm9pZD59IFdlYnNvY2tldE1lc3NhZ2VIYW5kbGVyUmVzb2x2ZXJUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KGlkOiBzdHJpbmcpID0+IHtkZWZhdWx0OiB0eXBlb2YgaW1wb3J0KFwiLi9pbml0aWFsaXplci5qc1wiKS5kZWZhdWx0fX0gSW5pdGlhbGl6ZXJzUmVxdWlyZUNvbnRleHRUeXBlXG4gKiBAdHlwZWRlZiB7SW5pdGlhbGl6ZXJzUmVxdWlyZUNvbnRleHRUeXBlICYge1xuICogICBrZXlzOiAoKSA9PiBzdHJpbmdbXSxcbiAqICAgaWQ6IHN0cmluZ1xuICogfX0gV2VicGFja1JlcXVpcmVDb250ZXh0XG4gKiBAdHlwZWRlZiB7e3JlcXVpcmVDb250ZXh0OiBXZWJwYWNrUmVxdWlyZUNvbnRleHR9fSBJbml0aWFsaXplcnNFeHBvcnRUeXBlXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24oe2NvbmZpZ3VyYXRpb246IGltcG9ydChcIi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSkgOiBQcm9taXNlPEluaXRpYWxpemVyc0V4cG9ydFR5cGU+fSBJbml0aWFsaXplcnNUeXBlXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTcWxDb25maWdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGF0YWJhc2VdIC0gRGF0YWJhc2UgbmFtZSBmb3IgdGhlIFNRTCBkcml2ZXIuXG4gKiBAcHJvcGVydHkge29iamVjdH0gW29wdGlvbnNdIC0gRHJpdmVyLXNwZWNpZmljIGNvbm5lY3Rpb24gb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW29wdGlvbnMuZW5jcnlwdF0gLSBXaGV0aGVyIHRvIGVuY3J5cHQgdGhlIGNvbm5lY3Rpb24gKE1TU1FMKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbb3B0aW9ucy5zY2hlbWFdIC0gRGVmYXVsdCBzY2hlbWEgZm9yIHVucXVhbGlmaWVkIHRhYmxlIGxvb2t1cHMgKE1TU1FMKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbb3B0aW9ucy5zZXJ2ZXJOYW1lXSAtIFRMUyBTTkkgc2VydmVyIG5hbWUgb3ZlcnJpZGUgZm9yIE1TU1FMIChlbXB0eSBzdHJpbmcgZGlzYWJsZXMgU05JKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW29wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZV0gLSBXaGV0aGVyIHRvIHRydXN0IHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgKE1TU1FMKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGFzc3dvcmRdIC0gUGFzc3dvcmQgZm9yIHRoZSBTUUwgdXNlci5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbcG9vbF0gLSBDb25uZWN0aW9uIHBvb2wgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbcG9vbC5tYXhdIC0gTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3Bvb2wubWluXSAtIE1pbmltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwb29sLmlkbGVUaW1lb3V0TWlsbGlzXSAtIElkbGUgdGltZW91dCBiZWZvcmUgcmVsZWFzaW5nIGEgY29ubmVjdGlvbi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2VydmVyXSAtIFNRTCBzZXJ2ZXIgaG9zdG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3VzZXJdIC0gU1FMIHVzZXJuYW1lLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRGF0YWJhc2VDb25maWd1cmF0aW9uVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkYXRhYmFzZV0gLSBEYXRhYmFzZSBuYW1lIGZvciB0aGlzIGNvbm5lY3Rpb24uXG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuL2RhdGFiYXNlL2RyaXZlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBbZHJpdmVyXSAtIERyaXZlciBjbGFzcyB0byB1c2UgZm9yIHRoaXMgZGF0YWJhc2UuXG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuL2RhdGFiYXNlL3Bvb2wvYmFzZS5qc1wiKS5kZWZhdWx0fSBbcG9vbFR5cGVdIC0gUG9vbCBjbGFzcyB0byB1c2UgZm9yIHRoaXMgZGF0YWJhc2UuXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKCkgOiB1bmtub3dufSBbZ2V0Q29ubmVjdGlvbl0gLSBDdXN0b20gY29ubmVjdGlvbiBmYWN0b3J5IG92ZXJyaWRlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtob3N0XSAtIERhdGFiYXNlIGhvc3QuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFttaWdyYXRpb25zXSAtIFdoZXRoZXIgbWlncmF0aW9ucyBhcmUgZW5hYmxlZCBmb3IgdGhpcyBkYXRhYmFzZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGFzc3dvcmRdIC0gUGFzc3dvcmQgZm9yIHRoZSBkYXRhYmFzZSB1c2VyLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwb3J0XSAtIERhdGFiYXNlIHBvcnQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtyZWFkT25seV0gLSBXaGV0aGVyIHdyaXRlcyBzaG91bGQgYmUgYmxvY2tlZCBmb3IgdGhpcyBkYXRhYmFzZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2NoZW1hXSAtIERlZmF1bHQgc2NoZW1hIGZvciB1bnF1YWxpZmllZCB0YWJsZSBsb29rdXBzIChNU1NRTCkuXG4gKiBAcHJvcGVydHkge29iamVjdH0gW3JlY29yZF0gLSBSZWNvcmQtbGV2ZWwgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3JlY29yZC50cmFuc2FjdGlvbnNdIC0gV2hldGhlciByZWNvcmQgb3BlcmF0aW9ucyBzaG91bGQgdXNlIHRyYW5zYWN0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3Jlc2V0XSAtIFdoZXRoZXIgdG8gcmVzZXQgdGhlIGRhdGFiYXNlIG9uIHN0YXJ0dXAuXG4gKiBAcHJvcGVydHkge1NxbENvbmZpZ30gW3NxbENvbmZpZ10gLSBEcml2ZXItc3BlY2lmaWMgU1FMIGNvbmZpZy5cbiAqIEBwcm9wZXJ0eSB7XCJtc3NxbFwiIHwgXCJteXNxbFwiIHwgXCJwZ3NxbFwiIHwgXCJzcWxpdGVcIn0gW3R5cGVdIC0gRGF0YWJhc2UgdHlwZSBpZGVudGlmaWVyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt1c2VEYXRhYmFzZV0gLSBEYXRhYmFzZSB0byBzd2l0Y2ggdG8gYWZ0ZXIgY29ubmVjdGluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdXNlcm5hbWVdIC0gVXNlcm5hbWUgZm9yIGRhdGFiYXNlIGF1dGhlbnRpY2F0aW9uLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1wiZGVidWctbG93LWxldmVsXCIgfCBcImRlYnVnXCIgfCBcImluZm9cIiB8IFwid2FyblwiIHwgXCJlcnJvclwifSBMb2dMZXZlbFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gTG9nZ2luZ091dHB1dFBheWxvYWRcbiAqIEBwcm9wZXJ0eSB7TG9nTGV2ZWx9IGxldmVsIC0gTG9nIGxldmVsLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBGb3JtYXR0ZWQgbWVzc2FnZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdWJqZWN0IC0gTG9nIHN1YmplY3QuXG4gKiBAcHJvcGVydHkge0RhdGV9IHRpbWVzdGFtcCAtIFRpbWVzdGFtcC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IExvZ2dpbmdPdXRwdXRcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oTG9nZ2luZ091dHB1dFBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZH0gd3JpdGUgLSBXcml0ZSBhIGxvZyBlbnRyeS5cbiAqIEBwcm9wZXJ0eSB7TG9nTGV2ZWxbXX0gW2xldmVsc10gLSBEZWZhdWx0IGxldmVscyBmb3IgdGhpcyBvdXRwdXQuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBMb2dnaW5nT3V0cHV0Q29uZmlnXG4gKiBAcHJvcGVydHkge0xvZ2dpbmdPdXRwdXR9IG91dHB1dCAtIE91dHB1dCBpbnN0YW5jZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8TG9nTGV2ZWw+fSBbbGV2ZWxzXSAtIExldmVscyBlbmFibGVkIGZvciB0aGlzIG91dHB1dC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtMb2dnaW5nT3V0cHV0Q29uZmlnIHwgTG9nZ2luZ091dHB1dCB8IGltcG9ydChcIi4vbG9nZ2VyL2Jhc2UtbG9nZ2VyLmpzXCIpLmRlZmF1bHR9IExvZ2dlckNvbmZpZ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gTG9nZ2luZ0NvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NvbnNvbGVdIC0gRW5hYmxlL2Rpc2FibGUgY29uc29sZSBsb2dnaW5nIGZvciByZXF1ZXN0IGxvZ2dpbmcuIERlZmF1bHRzIHRvIHRydWUgb3V0c2lkZSBvZiBcInRlc3RcIiBhbmQgZm9yIEhUVFAgc2VydmVyIGxvZ3MuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtmaWxlXSAtIEVuYWJsZS9kaXNhYmxlIHdyaXRpbmcgbG9ncyB0byBhIGZpbGUuIERlZmF1bHRzIHRvIHRydWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2RpcmVjdG9yeV0gLSBEaXJlY3Rvcnkgd2hlcmUgbG9nIGZpbGVzIGFyZSBzdG9yZWQuIERlZmF1bHRzIHRvIFwiPHByb2plY3Q+L2xvZ1wiLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmaWxlUGF0aF0gLSBFeHBsaWNpdCBwYXRoIGZvciB0aGUgbG9nIGZpbGUuIERlZmF1bHRzIHRvIFwiPGRpcmVjdG9yeT4vPGVudmlyb25tZW50Pi5sb2dcIi5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8XCJkZWJ1Zy1sb3ctbGV2ZWxcIiB8IFwiZGVidWdcIiB8IFwiaW5mb1wiIHwgXCJ3YXJuXCIgfCBcImVycm9yXCI+fSBbbGV2ZWxzXSAtIE92ZXJyaWRlIHdoaWNoIGxvZyBsZXZlbHMgYXJlIGVtaXR0ZWQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtkZWJ1Z0xvd0xldmVsXSAtIENvbnZlbmllbmNlIGZsYWcgdG8gaW5jbHVkZSB2ZXJ5IGxvdy1sZXZlbCBkZWJ1ZyBsb2dzLlxuICogQHByb3BlcnR5IHtMb2dnZXJDb25maWdbXX0gW2xvZ2dlcnNdIC0gTG9nZ2VyIGluc3RhbmNlcyAoY29udmVydGVkIHRvIG91dHB1dHMgd2hlbiBjb25maWd1cmVkKS5cbiAqIEBwcm9wZXJ0eSB7TG9nZ2luZ091dHB1dENvbmZpZ1tdfSBbb3V0cHV0c10gLSBFeHBsaWNpdCBsb2dnZXIgb3V0cHV0cyAob3ZlcnJpZGVzIGNvbnNvbGUvZmlsZSBkZWZhdWx0cyB3aGVuIHByb3ZpZGVkKS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN0cnVjdHVyZVNxbENvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtkaXNhYmxlZEVudmlyb25tZW50c10gLSBFbnZpcm9ubWVudHMgdGhhdCBzaG91bGQgc2tpcCB3cml0aW5nIHN0cnVjdHVyZSBzcWwgZmlsZXMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9ic0NvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaG9zdF0gLSBIb3N0bmFtZSBmb3IgdGhlIGJhY2tncm91bmQgam9icyBtYWluIHByb2Nlc3MuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3BvcnRdIC0gUG9ydCBmb3IgdGhlIGJhY2tncm91bmQgam9icyBtYWluIHByb2Nlc3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2RhdGFiYXNlSWRlbnRpZmllcl0gLSBEYXRhYmFzZSBpZGVudGlmaWVyIHVzZWQgdG8gc3RvcmUgYmFja2dyb3VuZCBqb2JzLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gTWFpbGVyQmFja2VuZFxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7cGF5bG9hZDogaW1wb3J0KFwiLi9tYWlsZXIuanNcIikuTWFpbGVyRGVsaXZlcnlQYXlsb2FkLCBjb25maWd1cmF0aW9uOiBpbXBvcnQoXCIuL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0pIDogUHJvbWlzZTx1bmtub3duPiB8IHVua25vd259IGRlbGl2ZXIgLSBEZWxpdmVyIGEgbWFpbGVyIHBheWxvYWQuXG4gKi9cblxuXG4vKipcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IExvY2FsZUZhbGxiYWNrc1R5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhdHRyaWJ1dGVzIC0gQXR0cmlidXRlcyB0byBleHBvc2Ugb24gdGhlIGZyb250ZW5kIG1vZGVsLlxuICogQHByb3BlcnR5IHtGcm9udGVuZE1vZGVsUmVzb3VyY2VBYmlsaXRpZXNDb25maWd1cmF0aW9ufSBhYmlsaXRpZXMgLSBBYmlsaXR5IGFjdGlvbnMga2V5ZWQgYnkgZnJvbnRlbmQgY29tbWFuZCAoYGluZGV4YCwgYGZpbmRgLCBgY3JlYXRlYCwgYHVwZGF0ZWAsIGBkZXN0cm95YCkuXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZz59IFtjb21tYW5kc10gLSBDb21tYW5kIG5hbWVzIGtleWVkIGJ5IGFjdGlvbiAoYGluZGV4YCwgYGZpbmRgLCBgdXBkYXRlYCwgYGRlc3Ryb3lgKS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGF0aF0gLSBIVFRQIHBhdGggcHJlZml4IHVzZWQgYnkgZnJvbnRlbmQgbW9kZWwgY29tbWFuZHMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ByaW1hcnlLZXldIC0gUHJpbWFyeSBrZXkgYXR0cmlidXRlIG5hbWUuXG4gKiBAcHJvcGVydHkge0Zyb250ZW5kTW9kZWxSZXNvdXJjZVNlcnZlckNvbmZpZ3VyYXRpb259IFtzZXJ2ZXJdIC0gT3B0aW9uYWwgYmFja2VuZCBiZWhhdmlvciBvdmVycmlkZXMgZm9yIGJ1aWx0LWluIGZyb250ZW5kIGFjdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBGcm9udGVuZE1vZGVsUmVzb3VyY2VBYmlsaXRpZXNDb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2luZGV4XSAtIEFiaWxpdHkgYWN0aW9uIGZvciBmcm9udGVuZCBpbmRleC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZmluZF0gLSBBYmlsaXR5IGFjdGlvbiBmb3IgZnJvbnRlbmQgZmluZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY3JlYXRlXSAtIEFiaWxpdHkgYWN0aW9uIGZvciBmcm9udGVuZCBjcmVhdGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3VwZGF0ZV0gLSBBYmlsaXR5IGFjdGlvbiBmb3IgZnJvbnRlbmQgdXBkYXRlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZXN0cm95XSAtIEFiaWxpdHkgYWN0aW9uIGZvciBmcm9udGVuZCBkZXN0cm95LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRnJvbnRlbmRNb2RlbFJlc291cmNlU2VydmVyQ29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7YWN0aW9uOiBcImluZGV4XCIgfCBcImZpbmRcIiB8IFwidXBkYXRlXCIgfCBcImRlc3Ryb3lcIiwgY29udHJvbGxlcjogaW1wb3J0KFwiLi9jb250cm9sbGVyLmpzXCIpLmRlZmF1bHQsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiwgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA6IChib29sZWFuIHwgdm9pZCB8IFByb21pc2U8Ym9vbGVhbiB8IHZvaWQ+KX0gW2JlZm9yZUFjdGlvbl0gLSBPcHRpb25hbCBjYWxsYmFjayBydW4gYmVmb3JlIGJ1aWx0LWluIGZyb250ZW5kIGFjdGlvbnMuXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHthY3Rpb246IFwiaW5kZXhcIiwgY29udHJvbGxlcjogaW1wb3J0KFwiLi9jb250cm9sbGVyLmpzXCIpLmRlZmF1bHQsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiwgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9KSA6IFByb21pc2U8aW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdPn0gW3JlY29yZHNdIC0gUmVjb3JkcyBsb2FkZXIgZm9yIGZyb250ZW5kSW5kZXguXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHthY3Rpb246IFwiaW5kZXhcIiB8IFwiZmluZFwiIHwgXCJ1cGRhdGVcIiwgY29udHJvbGxlcjogaW1wb3J0KFwiLi9jb250cm9sbGVyLmpzXCIpLmRlZmF1bHQsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiwgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQsIG1vZGVsOiBpbXBvcnQoXCIuL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSkgOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gW3NlcmlhbGl6ZV0gLSBSZWNvcmQgc2VyaWFsaXplciBmb3IgcmVzcG9uc2UgcGF5bG9hZHMuXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9uKHthY3Rpb246IFwiZmluZFwiIHwgXCJ1cGRhdGVcIiB8IFwiZGVzdHJveVwiLCBjb250cm9sbGVyOiBpbXBvcnQoXCIuL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdCwgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBtb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCwgaWQ6IHN0cmluZyB8IG51bWJlcn0pIDogUHJvbWlzZTxpbXBvcnQoXCIuL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgbnVsbD59IFtmaW5kXSAtIFJlY29yZCBsb2FkZXIgZm9yIGZpbmQvdXBkYXRlL2Rlc3Ryb3kgYWN0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb24oe2FjdGlvbjogXCJ1cGRhdGVcIiwgY29udHJvbGxlcjogaW1wb3J0KFwiLi9jb250cm9sbGVyLmpzXCIpLmRlZmF1bHQsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiwgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQsIG1vZGVsOiBpbXBvcnQoXCIuL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0LCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fSkgOiBQcm9taXNlPGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB2b2lkPn0gW3VwZGF0ZV0gLSBDdXN0b20gdXBkYXRlIGNhbGxiYWNrLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7YWN0aW9uOiBcImRlc3Ryb3lcIiwgY29udHJvbGxlcjogaW1wb3J0KFwiLi9jb250cm9sbGVyLmpzXCIpLmRlZmF1bHQsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiwgbW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQsIG1vZGVsOiBpbXBvcnQoXCIuL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSkgOiBQcm9taXNlPHZvaWQ+fSBbZGVzdHJveV0gLSBDdXN0b20gZGVzdHJveSBjYWxsYmFjay5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tlbmRQcm9qZWN0Q29uZmlndXJhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGggLSBQYXRoIHRvIHRoZSBiYWNrZW5kIHByb2plY3QuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Zyb250ZW5kTW9kZWxzT3V0cHV0UGF0aF0gLSBPcHRpb25hbCBvdXRwdXQgcHJvamVjdCBwYXRoIHdoZXJlIGBzcmMvZnJvbnRlbmQtbW9kZWxzYCBzaG91bGQgYmUgZ2VuZXJhdGVkLlxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBGcm9udGVuZE1vZGVsUmVzb3VyY2VDb25maWd1cmF0aW9uPn0gW2Zyb250ZW5kTW9kZWxzXSAtIEZyb250ZW5kIG1vZGVsIGRlZmluaXRpb25zIGtleWVkIGJ5IG1vZGVsIGNsYXNzIG5hbWUuXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIEZyb250ZW5kTW9kZWxSZXNvdXJjZUNvbmZpZ3VyYXRpb24+fSBbcmVzb3VyY2VzXSAtIEFsaWFzIGZvciBgZnJvbnRlbmRNb2RlbHNgLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge3R5cGVvZiBpbXBvcnQoXCIuL2F1dGhvcml6YXRpb24vYmFzZS1yZXNvdXJjZS5qc1wiKS5kZWZhdWx0fSBBYmlsaXR5UmVzb3VyY2VDbGFzc1R5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtmdW5jdGlvbih7Y29uZmlndXJhdGlvbjogaW1wb3J0KFwiLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHQsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiwgcmVxdWVzdDogaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXJlcXVlc3QuanNcIikuZGVmYXVsdCwgcmVzcG9uc2U6IGltcG9ydChcIi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3Jlc3BvbnNlLmpzXCIpLmRlZmF1bHR9KSA6IGltcG9ydChcIi4vYXV0aG9yaXphdGlvbi9hYmlsaXR5LmpzXCIpLmRlZmF1bHQgfCB2b2lkIHwgUHJvbWlzZTxpbXBvcnQoXCIuL2F1dGhvcml6YXRpb24vYWJpbGl0eS5qc1wiKS5kZWZhdWx0IHwgdm9pZD59IEFiaWxpdHlSZXNvbHZlclR5cGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IENvbmZpZ3VyYXRpb25BcmdzVHlwZVxuICogQHByb3BlcnR5IHtDb3JzVHlwZX0gW2NvcnNdIC0gQ09SUyBjb25maWd1cmF0aW9uIGZvciB0aGUgSFRUUCBzZXJ2ZXIuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Nvb2tpZVNlY3JldF0gLSBTZWNyZXQgZm9yIGVuY3J5cHRpbmcgY29va2llcy5cbiAqIEBwcm9wZXJ0eSB7QWJpbGl0eVJlc291cmNlQ2xhc3NUeXBlW119IFthYmlsaXR5UmVzb3VyY2VzXSAtIFJlc291cmNlIGNsYXNzZXMgdXNlZCB0byBkZWZpbmUgYWJpbGl0aWVzIHBlciBtb2RlbC5cbiAqIEBwcm9wZXJ0eSB7QWJpbGl0eVJlc29sdmVyVHlwZX0gW2FiaWxpdHlSZXNvbHZlcl0gLSBSZXNvbHZlciBmb3IgY3JlYXRpbmcgcmVxdWVzdC1zY29wZWQgYWJpbGl0eSBpbnN0YW5jZXMuXG4gKiBAcHJvcGVydHkge0JhY2tlbmRQcm9qZWN0Q29uZmlndXJhdGlvbltdfSBbYmFja2VuZFByb2plY3RzXSAtIEJhY2tlbmQgcHJvamVjdCBkZWZpbml0aW9ucyB1c2VkIGZvciBmcm9udGVuZCBtb2RlbCBnZW5lcmF0aW9uLlxuICogQHByb3BlcnR5IHt7W2tleTogc3RyaW5nXToge1trZXk6IHN0cmluZ106IERhdGFiYXNlQ29uZmlndXJhdGlvblR5cGV9fX0gZGF0YWJhc2UgLSBEYXRhYmFzZSBjb25maWd1cmF0aW9ucyBrZXllZCBieSBlbnZpcm9ubWVudCBhbmQgaWRlbnRpZmllci5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2RlYnVnXSAtIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkaXJlY3RvcnldIC0gQmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBwcm9qZWN0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtlbnZpcm9ubWVudF0gLSBDdXJyZW50IGVudmlyb25tZW50IG5hbWUuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vZW52aXJvbm1lbnQtaGFuZGxlcnMvYmFzZS5qc1wiKS5kZWZhdWx0fSBlbnZpcm9ubWVudEhhbmRsZXIgLSBFbnZpcm9ubWVudCBoYW5kbGVyIGluc3RhbmNlLlxuICogQHByb3BlcnR5IHtMb2dnaW5nQ29uZmlndXJhdGlvbn0gW2xvZ2dpbmddIC0gTG9nZ2luZyBjb25maWd1cmF0aW9uLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9ic0NvbmZpZ3VyYXRpb259IFtiYWNrZ3JvdW5kSm9ic10gLSBCYWNrZ3JvdW5kIGpvYnMgY29uZmlndXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7TWFpbGVyQmFja2VuZH0gW21haWxlckJhY2tlbmRdIC0gTWFpbCBkZWxpdmVyeSBiYWNrZW5kLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbih7Y29uZmlndXJhdGlvbjogaW1wb3J0KFwiLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHQsIHR5cGU6IHN0cmluZ30pIDogdm9pZH0gaW5pdGlhbGl6ZU1vZGVscyAtIEhvb2sgdG8gcmVnaXN0ZXIgbW9kZWxzIGZvciBhIGdpdmVuIGluaXRpYWxpemF0aW9uIHR5cGUuXG4gKiBAcHJvcGVydHkge0luaXRpYWxpemVyc1R5cGV9IFtpbml0aWFsaXplcnNdIC0gSW5pdGlhbGl6ZXIgbG9hZGVyIGZvciBlbnZpcm9ubWVudCBib290c3RyYXBwaW5nLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBmdW5jdGlvbigpIDogc3RyaW5nfSBsb2NhbGUgLSBEZWZhdWx0IGxvY2FsZSBvciBsb2NhbGUgcmVzb2x2ZXIuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBsb2NhbGVzIC0gU3VwcG9ydGVkIGxvY2FsZXMuXG4gKiBAcHJvcGVydHkge0xvY2FsZUZhbGxiYWNrc1R5cGV9IGxvY2FsZUZhbGxiYWNrcyAtIExvY2FsZSBmYWxsYmFjayBtYXAuXG4gKiBAcHJvcGVydHkge1N0cnVjdHVyZVNxbENvbmZpZ3VyYXRpb259IFtzdHJ1Y3R1cmVTcWxdIC0gU3RydWN0dXJlIFNRTCBnZW5lcmF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rlc3RpbmddIC0gUGF0aCB0byB0aGUgdGVzdGluZyBjb25maWd1cmF0aW9uIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlciB8ICgoKSA9PiBudW1iZXIpfSBbdGltZXpvbmVPZmZzZXRNaW51dGVzXSAtIERlZmF1bHQgdGltZXpvbmUgb2Zmc2V0IGluIG1pbnV0ZXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8ICgoKSA9PiBudW1iZXIpfSBbcmVxdWVzdFRpbWVvdXRNc10gLSBUaW1lb3V0IGluIHNlY29uZHMgZm9yIGNvbXBsZXRpbmcgYSBIVFRQIHJlcXVlc3QuXG4gKiBAcHJvcGVydHkge1dlYnNvY2tldENoYW5uZWxSZXNvbHZlclR5cGV9IFt3ZWJzb2NrZXRDaGFubmVsUmVzb2x2ZXJdIC0gUmVzb2x2ZSBhIHdlYnNvY2tldCBjaGFubmVsIGNsYXNzL2luc3RhbmNlIGZvciBlYWNoIGNvbm5lY3Rpb24uXG4gKiBAcHJvcGVydHkge1dlYnNvY2tldE1lc3NhZ2VIYW5kbGVyUmVzb2x2ZXJUeXBlfSBbd2Vic29ja2V0TWVzc2FnZUhhbmRsZXJSZXNvbHZlcl0gLSBSZXNvbHZlIGEgcmF3IHdlYnNvY2tldCBtZXNzYWdlIGhhbmRsZXIgZm9yIGVhY2ggY29ubmVjdGlvbi5cbiAqL1xuXG5leHBvcnQgY29uc3Qgbm90aGluZyA9IHt9XG4iXX0=
|
|
@@ -20,6 +20,18 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
20
20
|
frontendModels?: Record<string, any>;
|
|
21
21
|
resources?: Record<string, any>;
|
|
22
22
|
}): Record<string, any>;
|
|
23
|
+
/**
|
|
24
|
+
* @param {{frontendModelsOutputPath?: string}} backendProject - Backend project config.
|
|
25
|
+
* @returns {string} - Absolute frontend models output directory.
|
|
26
|
+
*/
|
|
27
|
+
frontendModelsDirectoryForBackendProject(backendProject: {
|
|
28
|
+
frontendModelsOutputPath?: string;
|
|
29
|
+
}): string;
|
|
30
|
+
/**
|
|
31
|
+
* @param {string} frontendModelsDir - Frontend models output directory.
|
|
32
|
+
* @returns {string} - Base class import path.
|
|
33
|
+
*/
|
|
34
|
+
importPathForFrontendModelsDirectory(frontendModelsDir: string): string;
|
|
23
35
|
/**
|
|
24
36
|
* @param {object} args - Method args.
|
|
25
37
|
* @param {string} args.className - Model class name.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-models.d.ts","sourceRoot":"","sources":["../../../../../../../src/environment-handlers/node/cli/commands/generate/frontend-models.js"],"names":[],"mappings":"AAIA,mGAAmG;AACnG;IACE,oEAAoE;IACpE,WADc,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"frontend-models.d.ts","sourceRoot":"","sources":["../../../../../../../src/environment-handlers/node/cli/commands/generate/frontend-models.js"],"names":[],"mappings":"AAIA,mGAAmG;AACnG;IACE,oEAAoE;IACpE,WADc,OAAO,CAAC,IAAI,CAAC,CAkD1B;IAED;;;;;OAKG;IACH,gDAJG;QAAqB,SAAS,EAAtB,MAAM;QACoB,WAAW,EAArC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;KAC3B,GAAU,IAAI,CAkBhB;IAED;;;OAGG;IACH,2CAHW;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAC,GACrE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAU/B;IAED;;;OAGG;IACH,yDAHW;QAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;KAAC,GACjC,MAAM,CAMlB;IAED;;;OAGG;IACH,wDAHW,MAAM,GACJ,MAAM,CAUlB;IAED;;;;;;OAMG;IACH,8DALG;QAAqB,SAAS,EAAtB,MAAM;QACO,UAAU,EAAvB,MAAM;QACoB,WAAW,EAArC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;KAC3B,GAAU,MAAM,CA4DlB;IAED;;;OAGG;IACH,oCAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,MAAM,EAAE,CAcpB;CACF;wBA5MuB,oCAAoC"}
|
|
@@ -10,14 +10,17 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
10
10
|
if (!Array.isArray(backendProjects) || backendProjects.length === 0) {
|
|
11
11
|
throw new Error("No backend projects configured. Configure 'backendProjects' in your configuration first");
|
|
12
12
|
}
|
|
13
|
-
const rootDirectory = this.directory();
|
|
14
|
-
const frontendModelsDir = `${rootDirectory}/src/frontend-models`;
|
|
15
|
-
const devMode = frontendModelsDir.includes("/spec/dummy/src/frontend-models");
|
|
16
|
-
const importPath = devMode ? "../../../../src/frontend-models/base.js" : "velocious/build/src/frontend-models/base.js";
|
|
17
|
-
await fs.mkdir(frontendModelsDir, { recursive: true });
|
|
18
13
|
/** @type {Set<string>} */
|
|
19
14
|
const generatedModelNames = new Set();
|
|
15
|
+
/** @type {Set<string>} */
|
|
16
|
+
const ensuredDirectories = new Set();
|
|
20
17
|
for (const backendProject of backendProjects) {
|
|
18
|
+
const frontendModelsDir = this.frontendModelsDirectoryForBackendProject(backendProject);
|
|
19
|
+
const importPath = this.importPathForFrontendModelsDirectory(frontendModelsDir);
|
|
20
|
+
if (!ensuredDirectories.has(frontendModelsDir)) {
|
|
21
|
+
await fs.mkdir(frontendModelsDir, { recursive: true });
|
|
22
|
+
ensuredDirectories.add(frontendModelsDir);
|
|
23
|
+
}
|
|
21
24
|
const resources = this.resourcesForBackendProject(backendProject);
|
|
22
25
|
for (const modelClassName in resources) {
|
|
23
26
|
const modelConfig = resources[modelClassName];
|
|
@@ -69,6 +72,25 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
69
72
|
}
|
|
70
73
|
return resources;
|
|
71
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* @param {{frontendModelsOutputPath?: string}} backendProject - Backend project config.
|
|
77
|
+
* @returns {string} - Absolute frontend models output directory.
|
|
78
|
+
*/
|
|
79
|
+
frontendModelsDirectoryForBackendProject(backendProject) {
|
|
80
|
+
const outputPath = backendProject.frontendModelsOutputPath || this.directory();
|
|
81
|
+
return `${outputPath}/src/frontend-models`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @param {string} frontendModelsDir - Frontend models output directory.
|
|
85
|
+
* @returns {string} - Base class import path.
|
|
86
|
+
*/
|
|
87
|
+
importPathForFrontendModelsDirectory(frontendModelsDir) {
|
|
88
|
+
const devMode = frontendModelsDir.includes("/spec/dummy/src/frontend-models");
|
|
89
|
+
if (devMode) {
|
|
90
|
+
return "../../../../src/frontend-models/base.js";
|
|
91
|
+
}
|
|
92
|
+
return "velocious/build/src/frontend-models/base.js";
|
|
93
|
+
}
|
|
72
94
|
/**
|
|
73
95
|
* @param {object} args - Method args.
|
|
74
96
|
* @param {string} args.className - Model class name.
|
|
@@ -78,6 +100,7 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
78
100
|
*/
|
|
79
101
|
buildModelFileContent({ className, importPath, modelConfig }) {
|
|
80
102
|
const attributes = this.attributeNamesForModel(modelConfig);
|
|
103
|
+
const attributesTypeName = `${className}Attributes`;
|
|
81
104
|
const commands = {
|
|
82
105
|
destroy: modelConfig.commands?.destroy || "destroy",
|
|
83
106
|
find: modelConfig.commands?.find || "find",
|
|
@@ -89,6 +112,12 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
89
112
|
}
|
|
90
113
|
let fileContent = "";
|
|
91
114
|
fileContent += `import FrontendModelBase from "${importPath}"\n\n`;
|
|
115
|
+
fileContent += "/**\n";
|
|
116
|
+
fileContent += ` * @typedef {object} ${attributesTypeName}\n`;
|
|
117
|
+
for (const attributeName of attributes) {
|
|
118
|
+
fileContent += ` * @property {any} ${attributeName} - Attribute value.\n`;
|
|
119
|
+
}
|
|
120
|
+
fileContent += " */\n";
|
|
92
121
|
fileContent += `/** Frontend model for ${className}. */\n`;
|
|
93
122
|
fileContent += `export default class ${className} extends FrontendModelBase {\n`;
|
|
94
123
|
fileContent += " /**\n";
|
|
@@ -107,13 +136,13 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
107
136
|
const camelizedAttributeUpper = inflection.camelize(attributeName);
|
|
108
137
|
fileContent += "\n";
|
|
109
138
|
fileContent += " /**\n";
|
|
110
|
-
fileContent +=
|
|
139
|
+
fileContent += ` * @returns {${attributesTypeName}[${JSON.stringify(attributeName)}]} - Attribute value.\n`;
|
|
111
140
|
fileContent += " */\n";
|
|
112
141
|
fileContent += ` ${camelizedAttribute}() { return this.readAttribute(${JSON.stringify(attributeName)}) }\n`;
|
|
113
142
|
fileContent += "\n";
|
|
114
143
|
fileContent += " /**\n";
|
|
115
|
-
fileContent +=
|
|
116
|
-
fileContent +=
|
|
144
|
+
fileContent += ` * @param {${attributesTypeName}[${JSON.stringify(attributeName)}]} newValue - New attribute value.\n`;
|
|
145
|
+
fileContent += ` * @returns {${attributesTypeName}[${JSON.stringify(attributeName)}]} - Assigned value.\n`;
|
|
117
146
|
fileContent += " */\n";
|
|
118
147
|
fileContent += ` set${camelizedAttributeUpper}(newValue) { return this.setAttribute(${JSON.stringify(attributeName)}, newValue) }\n`;
|
|
119
148
|
}
|
|
@@ -135,4 +164,4 @@ export default class DbGenerateFrontendModels extends BaseCommand {
|
|
|
135
164
|
return Object.keys(attributes);
|
|
136
165
|
}
|
|
137
166
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlbmQtbW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Vudmlyb25tZW50LWhhbmRsZXJzL25vZGUvY2xpL2NvbW1hbmRzL2dlbmVyYXRlL2Zyb250ZW5kLW1vZGVscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFdBQVcsTUFBTSxvQ0FBb0MsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDNUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFFeEMsbUdBQW1HO0FBQ25HLE1BQU0sQ0FBQyxPQUFPLE9BQU8sd0JBQXlCLFNBQVEsV0FBVztJQUMvRCxvRUFBb0U7SUFDcEUsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUM3QyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUUxRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQTtRQUM1RyxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxhQUFhLHNCQUFzQixDQUFBO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1FBQzdFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUMsQ0FBQyxDQUFDLDZDQUE2QyxDQUFBO1FBRXRILE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVB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SUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ3BGLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21tYW5kIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jbGkvYmFzZS1jb21tYW5kLmpzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbi8qKiBOb2RlIENMSSBjb21tYW5kIHRoYXQgZ2VuZXJhdGVzIGZyb250ZW5kIG1vZGVsIGNsYXNzZXMgZnJvbSBiYWNrZW5kIHByb2plY3QgcmVzb3VyY2UgY29uZmlnLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGJHZW5lcmF0ZUZyb250ZW5kTW9kZWxzIGV4dGVuZHMgQmFzZUNvbW1hbmQge1xuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBmaWxlcyBhcmUgZ2VuZXJhdGVkLiAqL1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmdldENvbmZpZ3VyYXRpb24oKVxuICAgIGNvbnN0IGJhY2tlbmRQcm9qZWN0cyA9IGNvbmZpZ3VyYXRpb24uZ2V0QmFja2VuZFByb2plY3RzKClcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShiYWNrZW5kUHJvamVjdHMpIHx8IGJhY2tlbmRQcm9qZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGJhY2tlbmQgcHJvamVjdHMgY29uZmlndXJlZC4gQ29uZmlndXJlICdiYWNrZW5kUHJvamVjdHMnIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaXJzdFwiKVxuICAgIH1cblxuICAgIGNvbnN0IHJvb3REaXJlY3RvcnkgPSB0aGlzLmRpcmVjdG9yeSgpXG4gICAgY29uc3QgZnJvbnRlbmRNb2RlbHNEaXIgPSBgJHtyb290RGlyZWN0b3J5fS9zcmMvZnJvbnRlbmQtbW9kZWxzYFxuICAgIGNvbnN0IGRldk1vZGUgPSBmcm9udGVuZE1vZGVsc0Rpci5pbmNsdWRlcyhcIi9zcGVjL2R1bW15L3NyYy9mcm9udGVuZC1tb2RlbHNcIilcbiAgICBjb25zdCBpbXBvcnRQYXRoID0gZGV2TW9kZSA/IFwiLi4vLi4vLi4vLi4vc3JjL2Zyb250ZW5kLW1vZGVscy9iYXNlLmpzXCIgOiBcInZlbG9jaW91cy9idWlsZC9zcmMvZnJvbnRlbmQtbW9kZWxzL2Jhc2UuanNcIlxuXG4gICAgYXdhaXQgZnMubWtkaXIoZnJvbnRlbmRNb2RlbHNEaXIsIHtyZWN1cnNpdmU6IHRydWV9KVxuXG4gICAgLyoqIEB0eXBlIHtTZXQ8c3RyaW5nPn0gKi9cbiAgICBjb25zdCBnZW5lcmF0ZWRNb2RlbE5hbWVzID0gbmV3IFNldCgpXG5cbiAgICBmb3IgKGNvbnN0IGJhY2tlbmRQcm9qZWN0IG9mIGJhY2tlbmRQcm9qZWN0cykge1xuICAgICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5yZXNvdXJjZXNGb3JCYWNrZW5kUHJvamVjdChiYWNrZW5kUHJvamVjdClcblxuICAgICAgZm9yIChjb25zdCBtb2RlbENsYXNzTmFtZSBpbiByZXNvdXJjZXMpIHtcbiAgICAgICAgY29uc3QgbW9kZWxDb25maWcgPSByZXNvdXJjZXNbbW9kZWxDbGFzc05hbWVdXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUobW9kZWxDbGFzc05hbWUucmVwbGFjZUFsbChcIi1cIiwgXCJfXCIpKVxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke2luZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShjbGFzc05hbWUpKX0uanNgXG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7ZnJvbnRlbmRNb2RlbHNEaXJ9LyR7ZmlsZU5hbWV9YFxuXG4gICAgICAgIHRoaXMudmFsaWRhdGVNb2RlbENvbmZpZyh7Y2xhc3NOYW1lLCBtb2RlbENvbmZpZ30pXG5cbiAgICAgICAgaWYgKGdlbmVyYXRlZE1vZGVsTmFtZXMuaGFzKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBmcm9udGVuZCBtb2RlbCBkZWZpbml0aW9uIGZvciAnJHtjbGFzc05hbWV9J2ApXG4gICAgICAgIH1cblxuICAgICAgICBnZW5lcmF0ZWRNb2RlbE5hbWVzLmFkZChjbGFzc05hbWUpXG5cbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSB0aGlzLmJ1aWxkTW9kZWxGaWxlQ29udGVudCh7XG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIGltcG9ydFBhdGgsXG4gICAgICAgICAgbW9kZWxDb25maWdcbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZVBhdGgsIGZpbGVDb250ZW50KVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBjcmVhdGUgc3JjL2Zyb250ZW5kLW1vZGVscy8ke2ZpbGVOYW1lfWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jbGFzc05hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3MubW9kZWxDb25maWcgLSBNb2RlbCBjb25maWd1cmF0aW9uLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICB2YWxpZGF0ZU1vZGVsQ29uZmlnKHtjbGFzc05hbWUsIG1vZGVsQ29uZmlnfSkge1xuICAgIGNvbnN0IGFiaWxpdGllcyA9IG1vZGVsQ29uZmlnLmFiaWxpdGllc1xuXG4gICAgaWYgKCFhYmlsaXRpZXMgfHwgdHlwZW9mIGFiaWxpdGllcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCAnJHtjbGFzc05hbWV9JyBpcyBtaXNzaW5nIHJlcXVpcmVkICdhYmlsaXRpZXMnIGNvbmZpZ2ApXG4gICAgfVxuXG4gICAgY29uc3QgcmVhZEFjdGlvbnMgPSBbXCJpbmRleFwiLCBcImZpbmRcIl1cblxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHJlYWRBY3Rpb25zKSB7XG4gICAgICBjb25zdCBhYmlsaXR5QWN0aW9uID0gYWJpbGl0aWVzW2FjdGlvbl1cblxuICAgICAgaWYgKHR5cGVvZiBhYmlsaXR5QWN0aW9uICE9PSBcInN0cmluZ1wiIHx8IGFiaWxpdHlBY3Rpb24ubGVuZ3RoIDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZGVsICcke2NsYXNzTmFtZX0nIGlzIG1pc3NpbmcgcmVxdWlyZWQgYWJpbGl0aWVzLiR7YWN0aW9ufSBjb25maWdgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3tmcm9udGVuZE1vZGVscz86IFJlY29yZDxzdHJpbmcsIGFueT4sIHJlc291cmNlcz86IFJlY29yZDxzdHJpbmcsIGFueT59fSBiYWNrZW5kUHJvamVjdCAtIEJhY2tlbmQgcHJvamVjdCBjb25maWcuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAtIFJlc291cmNlIGRlZmluaXRpb25zIGtleWVkIGJ5IG1vZGVsIGNsYXNzIG5hbWUuXG4gICAqL1xuICByZXNvdXJjZXNGb3JCYWNrZW5kUHJvamVjdChiYWNrZW5kUHJvamVjdCkge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IGJhY2tlbmRQcm9qZWN0LmZyb250ZW5kTW9kZWxzIHx8IGJhY2tlbmRQcm9qZWN0LnJlc291cmNlcyB8fCB7fVxuXG4gICAgaWYgKCFyZXNvdXJjZXMgfHwgdHlwZW9mIHJlc291cmNlcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiYWNrZW5kIHByb2plY3QgcmVzb3VyY2VzIG9iamVjdCBidXQgZ290OiAke3Jlc291cmNlc31gKVxuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE1ldGhvZCBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jbGFzc05hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5pbXBvcnRQYXRoIC0gQmFzZSBjbGFzcyBpbXBvcnQgcGF0aC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLm1vZGVsQ29uZmlnIC0gTW9kZWwgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBHZW5lcmF0ZWQgZmlsZSBjb250ZW50LlxuICAgKi9cbiAgYnVpbGRNb2RlbEZpbGVDb250ZW50KHtjbGFzc05hbWUsIGltcG9ydFBhdGgsIG1vZGVsQ29uZmlnfSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzRm9yTW9kZWwobW9kZWxDb25maWcpXG4gICAgY29uc3QgY29tbWFuZHMgPSB7XG4gICAgICBkZXN0cm95OiBtb2RlbENvbmZpZy5jb21tYW5kcz8uZGVzdHJveSB8fCBcImRlc3Ryb3lcIixcbiAgICAgIGZpbmQ6IG1vZGVsQ29uZmlnLmNvbW1hbmRzPy5maW5kIHx8IFwiZmluZFwiLFxuICAgICAgaW5kZXg6IG1vZGVsQ29uZmlnLmNvbW1hbmRzPy5pbmRleCB8fCBcImluZGV4XCIsXG4gICAgICB1cGRhdGU6IG1vZGVsQ29uZmlnLmNvbW1hbmRzPy51cGRhdGUgfHwgXCJ1cGRhdGVcIlxuICAgIH1cblxuICAgIGlmICghbW9kZWxDb25maWcucGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCAnJHtjbGFzc05hbWV9JyBpcyBtaXNzaW5nIHJlcXVpcmVkICdwYXRoJyBjb25maWdgKVxuICAgIH1cblxuICAgIGxldCBmaWxlQ29udGVudCA9IFwiXCJcblxuICAgIGZpbGVDb250ZW50ICs9IGBpbXBvcnQgRnJvbnRlbmRNb2RlbEJhc2UgZnJvbSBcIiR7aW1wb3J0UGF0aH1cIlxcblxcbmBcbiAgICBmaWxlQ29udGVudCArPSBgLyoqIEZyb250ZW5kIG1vZGVsIGZvciAke2NsYXNzTmFtZX0uICovXFxuYFxuICAgIGZpbGVDb250ZW50ICs9IGBleHBvcnQgZGVmYXVsdCBjbGFzcyAke2NsYXNzTmFtZX0gZXh0ZW5kcyBGcm9udGVuZE1vZGVsQmFzZSB7XFxuYFxuICAgIGZpbGVDb250ZW50ICs9IFwiICAvKipcXG5cIlxuICAgIGZpbGVDb250ZW50ICs9IFwiICAgKiBAcmV0dXJucyB7e2F0dHJpYnV0ZXM6IHN0cmluZ1tdLCBjb21tYW5kczoge2Rlc3Ryb3k6IHN0cmluZywgZmluZDogc3RyaW5nLCBpbmRleDogc3RyaW5nLCB1cGRhdGU6IHN0cmluZ30sIHBhdGg6IHN0cmluZywgcHJpbWFyeUtleTogc3RyaW5nfX0gLSBSZXNvdXJjZSBjb25maWcuXFxuXCJcbiAgICBmaWxlQ29udGVudCArPSBcIiAgICovXFxuXCJcbiAgICBmaWxlQ29udGVudCArPSBcIiAgc3RhdGljIHJlc291cmNlQ29uZmlnKCkge1xcblwiXG4gICAgZmlsZUNvbnRlbnQgKz0gXCIgICAgcmV0dXJuIHtcXG5cIlxuICAgIGZpbGVDb250ZW50ICs9IGAgICAgICBhdHRyaWJ1dGVzOiAke0pTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZXMpfSxcXG5gXG4gICAgZmlsZUNvbnRlbnQgKz0gYCAgICAgIGNvbW1hbmRzOiAke0pTT04uc3RyaW5naWZ5KGNvbW1hbmRzKX0sXFxuYFxuICAgIGZpbGVDb250ZW50ICs9IGAgICAgICBwYXRoOiAke0pTT04uc3RyaW5naWZ5KG1vZGVsQ29uZmlnLnBhdGgpfSxcXG5gXG4gICAgZmlsZUNvbnRlbnQgKz0gYCAgICAgIHByaW1hcnlLZXk6ICR7SlNPTi5zdHJpbmdpZnkobW9kZWxDb25maWcucHJpbWFyeUtleSB8fCBcImlkXCIpfVxcbmBcbiAgICBmaWxlQ29udGVudCArPSBcIiAgICB9XFxuXCJcbiAgICBmaWxlQ29udGVudCArPSBcIiAgfVxcblwiXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgb2YgYXR0cmlidXRlcykge1xuICAgICAgY29uc3QgY2FtZWxpemVkQXR0cmlidXRlID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShhdHRyaWJ1dGVOYW1lLCB0cnVlKVxuICAgICAgY29uc3QgY2FtZWxpemVkQXR0cmlidXRlVXBwZXIgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGF0dHJpYnV0ZU5hbWUpXG5cbiAgICAgIGZpbGVDb250ZW50ICs9IFwiXFxuXCJcbiAgICAgIGZpbGVDb250ZW50ICs9IFwiICAvKipcXG5cIlxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCIgICAqIEByZXR1cm5zIHthbnl9IC0gQXR0cmlidXRlIHZhbHVlLlxcblwiXG4gICAgICBmaWxlQ29udGVudCArPSBcIiAgICovXFxuXCJcbiAgICAgIGZpbGVDb250ZW50ICs9IGAgICR7Y2FtZWxpemVkQXR0cmlidXRlfSgpIHsgcmV0dXJuIHRoaXMucmVhZEF0dHJpYnV0ZSgke0pTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZU5hbWUpfSkgfVxcbmBcblxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCJcXG5cIlxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCIgIC8qKlxcblwiXG4gICAgICBmaWxlQ29udGVudCArPSBcIiAgICogQHBhcmFtIHthbnl9IG5ld1ZhbHVlIC0gTmV3IGF0dHJpYnV0ZSB2YWx1ZS5cXG5cIlxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCIgICAqIEByZXR1cm5zIHthbnl9IC0gQXNzaWduZWQgdmFsdWUuXFxuXCJcbiAgICAgIGZpbGVDb250ZW50ICs9IFwiICAgKi9cXG5cIlxuICAgICAgZmlsZUNvbnRlbnQgKz0gYCAgc2V0JHtjYW1lbGl6ZWRBdHRyaWJ1dGVVcHBlcn0obmV3VmFsdWUpIHsgcmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlKCR7SlNPTi5zdHJpbmdpZnkoYXR0cmlidXRlTmFtZSl9LCBuZXdWYWx1ZSkgfVxcbmBcbiAgICB9XG5cbiAgICBmaWxlQ29udGVudCArPSBcIn1cXG5cIlxuXG4gICAgcmV0dXJuIGZpbGVDb250ZW50XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBtb2RlbENvbmZpZyAtIE1vZGVsIGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBBdHRyaWJ1dGUgbmFtZXMuXG4gICAqL1xuICBhdHRyaWJ1dGVOYW1lc0Zvck1vZGVsKG1vZGVsQ29uZmlnKSB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IG1vZGVsQ29uZmlnLmF0dHJpYnV0ZXNcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0ZXMpKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRlc1xuICAgIH1cblxuICAgIGlmICghYXR0cmlidXRlcyB8fCB0eXBlb2YgYXR0cmlidXRlcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAnYXR0cmlidXRlcycgYXMgYXJyYXkgb3Igb2JqZWN0IGJ1dCBnb3Q6ICR7YXR0cmlidXRlc31gKVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKVxuICB9XG59XG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlbmQtbW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Vudmlyb25tZW50LWhhbmRsZXJzL25vZGUvY2xpL2NvbW1hbmRzL2dlbmVyYXRlL2Zyb250ZW5kLW1vZGVscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFdBQVcsTUFBTSxvQ0FBb0MsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDNUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFFeEMsbUdBQW1HO0FBQ25HLE1BQU0sQ0FBQyxPQUFPLE9BQU8sd0JBQXlCLFNBQVEsV0FBVztJQUMvRCxvRUFBb0U7SUFDcEUsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUM3QyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUUxRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQTtRQUM1RyxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQUNyQywwQkFBMEI7UUFDMUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBRXBDLEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFLENBQUM7WUFDN0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0NBQXdDLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDdkYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFFL0UsSUFBSSxDQUFDLGtC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QU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21tYW5kIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jbGkvYmFzZS1jb21tYW5kLmpzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbi8qKiBOb2RlIENMSSBjb21tYW5kIHRoYXQgZ2VuZXJhdGVzIGZyb250ZW5kIG1vZGVsIGNsYXNzZXMgZnJvbSBiYWNrZW5kIHByb2plY3QgcmVzb3VyY2UgY29uZmlnLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGJHZW5lcmF0ZUZyb250ZW5kTW9kZWxzIGV4dGVuZHMgQmFzZUNvbW1hbmQge1xuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBmaWxlcyBhcmUgZ2VuZXJhdGVkLiAqL1xuICBhc3luYyBleGVjdXRlKCkge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmdldENvbmZpZ3VyYXRpb24oKVxuICAgIGNvbnN0IGJhY2tlbmRQcm9qZWN0cyA9IGNvbmZpZ3VyYXRpb24uZ2V0QmFja2VuZFByb2plY3RzKClcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShiYWNrZW5kUHJvamVjdHMpIHx8IGJhY2tlbmRQcm9qZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGJhY2tlbmQgcHJvamVjdHMgY29uZmlndXJlZC4gQ29uZmlndXJlICdiYWNrZW5kUHJvamVjdHMnIGluIHlvdXIgY29uZmlndXJhdGlvbiBmaXJzdFwiKVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7U2V0PHN0cmluZz59ICovXG4gICAgY29uc3QgZ2VuZXJhdGVkTW9kZWxOYW1lcyA9IG5ldyBTZXQoKVxuICAgIC8qKiBAdHlwZSB7U2V0PHN0cmluZz59ICovXG4gICAgY29uc3QgZW5zdXJlZERpcmVjdG9yaWVzID0gbmV3IFNldCgpXG5cbiAgICBmb3IgKGNvbnN0IGJhY2tlbmRQcm9qZWN0IG9mIGJhY2tlbmRQcm9qZWN0cykge1xuICAgICAgY29uc3QgZnJvbnRlbmRNb2RlbHNEaXIgPSB0aGlzLmZyb250ZW5kTW9kZWxzRGlyZWN0b3J5Rm9yQmFja2VuZFByb2plY3QoYmFja2VuZFByb2plY3QpXG4gICAgICBjb25zdCBpbXBvcnRQYXRoID0gdGhpcy5pbXBvcnRQYXRoRm9yRnJvbnRlbmRNb2RlbHNEaXJlY3RvcnkoZnJvbnRlbmRNb2RlbHNEaXIpXG5cbiAgICAgIGlmICghZW5zdXJlZERpcmVjdG9yaWVzLmhhcyhmcm9udGVuZE1vZGVsc0RpcikpIHtcbiAgICAgICAgYXdhaXQgZnMubWtkaXIoZnJvbnRlbmRNb2RlbHNEaXIsIHtyZWN1cnNpdmU6IHRydWV9KVxuICAgICAgICBlbnN1cmVkRGlyZWN0b3JpZXMuYWRkKGZyb250ZW5kTW9kZWxzRGlyKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLnJlc291cmNlc0ZvckJhY2tlbmRQcm9qZWN0KGJhY2tlbmRQcm9qZWN0KVxuXG4gICAgICBmb3IgKGNvbnN0IG1vZGVsQ2xhc3NOYW1lIGluIHJlc291cmNlcykge1xuICAgICAgICBjb25zdCBtb2RlbENvbmZpZyA9IHJlc291cmNlc1ttb2RlbENsYXNzTmFtZV1cbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtb2RlbENsYXNzTmFtZS5yZXBsYWNlQWxsKFwiLVwiLCBcIl9cIikpXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7aW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGNsYXNzTmFtZSkpfS5qc2BcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBgJHtmcm9udGVuZE1vZGVsc0Rpcn0vJHtmaWxlTmFtZX1gXG5cbiAgICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsQ29uZmlnKHtjbGFzc05hbWUsIG1vZGVsQ29uZmlnfSlcblxuICAgICAgICBpZiAoZ2VuZXJhdGVkTW9kZWxOYW1lcy5oYXMoY2xhc3NOYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGZyb250ZW5kIG1vZGVsIGRlZmluaXRpb24gZm9yICcke2NsYXNzTmFtZX0nYClcbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1vZGVsTmFtZXMuYWRkKGNsYXNzTmFtZSlcblxuICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IHRoaXMuYnVpbGRNb2RlbEZpbGVDb250ZW50KHtcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgaW1wb3J0UGF0aCxcbiAgICAgICAgICBtb2RlbENvbmZpZ1xuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmaWxlUGF0aCwgZmlsZUNvbnRlbnQpXG5cbiAgICAgICAgY29uc29sZS5sb2coYGNyZWF0ZSBzcmMvZnJvbnRlbmQtbW9kZWxzLyR7ZmlsZU5hbWV9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNsYXNzTmFtZSAtIE1vZGVsIGNsYXNzIG5hbWUuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gYXJncy5tb2RlbENvbmZpZyAtIE1vZGVsIGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIHZhbGlkYXRlTW9kZWxDb25maWcoe2NsYXNzTmFtZSwgbW9kZWxDb25maWd9KSB7XG4gICAgY29uc3QgYWJpbGl0aWVzID0gbW9kZWxDb25maWcuYWJpbGl0aWVzXG5cbiAgICBpZiAoIWFiaWxpdGllcyB8fCB0eXBlb2YgYWJpbGl0aWVzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vZGVsICcke2NsYXNzTmFtZX0nIGlzIG1pc3NpbmcgcmVxdWlyZWQgJ2FiaWxpdGllcycgY29uZmlnYClcbiAgICB9XG5cbiAgICBjb25zdCByZWFkQWN0aW9ucyA9IFtcImluZGV4XCIsIFwiZmluZFwiXVxuXG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgcmVhZEFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFiaWxpdHlBY3Rpb24gPSBhYmlsaXRpZXNbYWN0aW9uXVxuXG4gICAgICBpZiAodHlwZW9mIGFiaWxpdHlBY3Rpb24gIT09IFwic3RyaW5nXCIgfHwgYWJpbGl0eUFjdGlvbi5sZW5ndGggPCAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kZWwgJyR7Y2xhc3NOYW1lfScgaXMgbWlzc2luZyByZXF1aXJlZCBhYmlsaXRpZXMuJHthY3Rpb259IGNvbmZpZ2ApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7e2Zyb250ZW5kTW9kZWxzPzogUmVjb3JkPHN0cmluZywgYW55PiwgcmVzb3VyY2VzPzogUmVjb3JkPHN0cmluZywgYW55Pn19IGJhY2tlbmRQcm9qZWN0IC0gQmFja2VuZCBwcm9qZWN0IGNvbmZpZy5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59IC0gUmVzb3VyY2UgZGVmaW5pdGlvbnMga2V5ZWQgYnkgbW9kZWwgY2xhc3MgbmFtZS5cbiAgICovXG4gIHJlc291cmNlc0ZvckJhY2tlbmRQcm9qZWN0KGJhY2tlbmRQcm9qZWN0KSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gYmFja2VuZFByb2plY3QuZnJvbnRlbmRNb2RlbHMgfHwgYmFja2VuZFByb2plY3QucmVzb3VyY2VzIHx8IHt9XG5cbiAgICBpZiAoIXJlc291cmNlcyB8fCB0eXBlb2YgcmVzb3VyY2VzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJhY2tlbmQgcHJvamVjdCByZXNvdXJjZXMgb2JqZWN0IGJ1dCBnb3Q6ICR7cmVzb3VyY2VzfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc291cmNlc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7e2Zyb250ZW5kTW9kZWxzT3V0cHV0UGF0aD86IHN0cmluZ319IGJhY2tlbmRQcm9qZWN0IC0gQmFja2VuZCBwcm9qZWN0IGNvbmZpZy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBBYnNvbHV0ZSBmcm9udGVuZCBtb2RlbHMgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICovXG4gIGZyb250ZW5kTW9kZWxzRGlyZWN0b3J5Rm9yQmFja2VuZFByb2plY3QoYmFja2VuZFByb2plY3QpIHtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gYmFja2VuZFByb2plY3QuZnJvbnRlbmRNb2RlbHNPdXRwdXRQYXRoIHx8IHRoaXMuZGlyZWN0b3J5KClcblxuICAgIHJldHVybiBgJHtvdXRwdXRQYXRofS9zcmMvZnJvbnRlbmQtbW9kZWxzYFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmcm9udGVuZE1vZGVsc0RpciAtIEZyb250ZW5kIG1vZGVscyBvdXRwdXQgZGlyZWN0b3J5LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIEJhc2UgY2xhc3MgaW1wb3J0IHBhdGguXG4gICAqL1xuICBpbXBvcnRQYXRoRm9yRnJvbnRlbmRNb2RlbHNEaXJlY3RvcnkoZnJvbnRlbmRNb2RlbHNEaXIpIHtcbiAgICBjb25zdCBkZXZNb2RlID0gZnJvbnRlbmRNb2RlbHNEaXIuaW5jbHVkZXMoXCIvc3BlYy9kdW1teS9zcmMvZnJvbnRlbmQtbW9kZWxzXCIpXG5cbiAgICBpZiAoZGV2TW9kZSkge1xuICAgICAgcmV0dXJuIFwiLi4vLi4vLi4vLi4vc3JjL2Zyb250ZW5kLW1vZGVscy9iYXNlLmpzXCJcbiAgICB9XG5cbiAgICByZXR1cm4gXCJ2ZWxvY2lvdXMvYnVpbGQvc3JjL2Zyb250ZW5kLW1vZGVscy9iYXNlLmpzXCJcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE1ldGhvZCBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jbGFzc05hbWUgLSBNb2RlbCBjbGFzcyBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5pbXBvcnRQYXRoIC0gQmFzZSBjbGFzcyBpbXBvcnQgcGF0aC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzLm1vZGVsQ29uZmlnIC0gTW9kZWwgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBHZW5lcmF0ZWQgZmlsZSBjb250ZW50LlxuICAgKi9cbiAgYnVpbGRNb2RlbEZpbGVDb250ZW50KHtjbGFzc05hbWUsIGltcG9ydFBhdGgsIG1vZGVsQ29uZmlnfSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWVzRm9yTW9kZWwobW9kZWxDb25maWcpXG4gICAgY29uc3QgYXR0cmlidXRlc1R5cGVOYW1lID0gYCR7Y2xhc3NOYW1lfUF0dHJpYnV0ZXNgXG4gICAgY29uc3QgY29tbWFuZHMgPSB7XG4gICAgICBkZXN0cm95OiBtb2RlbENvbmZpZy5jb21tYW5kcz8uZGVzdHJveSB8fCBcImRlc3Ryb3lcIixcbiAgICAgIGZpbmQ6IG1vZGVsQ29uZmlnLmNvbW1hbmRzPy5maW5kIHx8IFwiZmluZFwiLFxuICAgICAgaW5kZXg6IG1vZGVsQ29uZmlnLmNvbW1hbmRzPy5pbmRleCB8fCBcImluZGV4XCIsXG4gICAgICB1cGRhdGU6IG1vZGVsQ29uZmlnLmNvbW1hbmRzPy51cGRhdGUgfHwgXCJ1cGRhdGVcIlxuICAgIH1cblxuICAgIGlmICghbW9kZWxDb25maWcucGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCAnJHtjbGFzc05hbWV9JyBpcyBtaXNzaW5nIHJlcXVpcmVkICdwYXRoJyBjb25maWdgKVxuICAgIH1cblxuICAgIGxldCBmaWxlQ29udGVudCA9IFwiXCJcblxuICAgIGZpbGVDb250ZW50ICs9IGBpbXBvcnQgRnJvbnRlbmRNb2RlbEJhc2UgZnJvbSBcIiR7aW1wb3J0UGF0aH1cIlxcblxcbmBcbiAgICBmaWxlQ29udGVudCArPSBcIi8qKlxcblwiXG4gICAgZmlsZUNvbnRlbnQgKz0gYCAqIEB0eXBlZGVmIHtvYmplY3R9ICR7YXR0cmlidXRlc1R5cGVOYW1lfVxcbmBcbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgb2YgYXR0cmlidXRlcykge1xuICAgICAgZmlsZUNvbnRlbnQgKz0gYCAqIEBwcm9wZXJ0eSB7YW55fSAke2F0dHJpYnV0ZU5hbWV9IC0gQXR0cmlidXRlIHZhbHVlLlxcbmBcbiAgICB9XG4gICAgZmlsZUNvbnRlbnQgKz0gXCIgKi9cXG5cIlxuICAgIGZpbGVDb250ZW50ICs9IGAvKiogRnJvbnRlbmQgbW9kZWwgZm9yICR7Y2xhc3NOYW1lfS4gKi9cXG5gXG4gICAgZmlsZUNvbnRlbnQgKz0gYGV4cG9ydCBkZWZhdWx0IGNsYXNzICR7Y2xhc3NOYW1lfSBleHRlbmRzIEZyb250ZW5kTW9kZWxCYXNlIHtcXG5gXG4gICAgZmlsZUNvbnRlbnQgKz0gXCIgIC8qKlxcblwiXG4gICAgZmlsZUNvbnRlbnQgKz0gXCIgICAqIEByZXR1cm5zIHt7YXR0cmlidXRlczogc3RyaW5nW10sIGNvbW1hbmRzOiB7ZGVzdHJveTogc3RyaW5nLCBmaW5kOiBzdHJpbmcsIGluZGV4OiBzdHJpbmcsIHVwZGF0ZTogc3RyaW5nfSwgcGF0aDogc3RyaW5nLCBwcmltYXJ5S2V5OiBzdHJpbmd9fSAtIFJlc291cmNlIGNvbmZpZy5cXG5cIlxuICAgIGZpbGVDb250ZW50ICs9IFwiICAgKi9cXG5cIlxuICAgIGZpbGVDb250ZW50ICs9IFwiICBzdGF0aWMgcmVzb3VyY2VDb25maWcoKSB7XFxuXCJcbiAgICBmaWxlQ29udGVudCArPSBcIiAgICByZXR1cm4ge1xcblwiXG4gICAgZmlsZUNvbnRlbnQgKz0gYCAgICAgIGF0dHJpYnV0ZXM6ICR7SlNPTi5zdHJpbmdpZnkoYXR0cmlidXRlcyl9LFxcbmBcbiAgICBmaWxlQ29udGVudCArPSBgICAgICAgY29tbWFuZHM6ICR7SlNPTi5zdHJpbmdpZnkoY29tbWFuZHMpfSxcXG5gXG4gICAgZmlsZUNvbnRlbnQgKz0gYCAgICAgIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkobW9kZWxDb25maWcucGF0aCl9LFxcbmBcbiAgICBmaWxlQ29udGVudCArPSBgICAgICAgcHJpbWFyeUtleTogJHtKU09OLnN0cmluZ2lmeShtb2RlbENvbmZpZy5wcmltYXJ5S2V5IHx8IFwiaWRcIil9XFxuYFxuICAgIGZpbGVDb250ZW50ICs9IFwiICAgIH1cXG5cIlxuICAgIGZpbGVDb250ZW50ICs9IFwiICB9XFxuXCJcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlTmFtZSBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBjYW1lbGl6ZWRBdHRyaWJ1dGUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGF0dHJpYnV0ZU5hbWUsIHRydWUpXG4gICAgICBjb25zdCBjYW1lbGl6ZWRBdHRyaWJ1dGVVcHBlciA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXR0cmlidXRlTmFtZSlcblxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCJcXG5cIlxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCIgIC8qKlxcblwiXG4gICAgICBmaWxlQ29udGVudCArPSBgICAgKiBAcmV0dXJucyB7JHthdHRyaWJ1dGVzVHlwZU5hbWV9WyR7SlNPTi5zdHJpbmdpZnkoYXR0cmlidXRlTmFtZSl9XX0gLSBBdHRyaWJ1dGUgdmFsdWUuXFxuYFxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCIgICAqL1xcblwiXG4gICAgICBmaWxlQ29udGVudCArPSBgICAke2NhbWVsaXplZEF0dHJpYnV0ZX0oKSB7IHJldHVybiB0aGlzLnJlYWRBdHRyaWJ1dGUoJHtKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVOYW1lKX0pIH1cXG5gXG5cbiAgICAgIGZpbGVDb250ZW50ICs9IFwiXFxuXCJcbiAgICAgIGZpbGVDb250ZW50ICs9IFwiICAvKipcXG5cIlxuICAgICAgZmlsZUNvbnRlbnQgKz0gYCAgICogQHBhcmFtIHske2F0dHJpYnV0ZXNUeXBlTmFtZX1bJHtKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVOYW1lKX1dfSBuZXdWYWx1ZSAtIE5ldyBhdHRyaWJ1dGUgdmFsdWUuXFxuYFxuICAgICAgZmlsZUNvbnRlbnQgKz0gYCAgICogQHJldHVybnMgeyR7YXR0cmlidXRlc1R5cGVOYW1lfVske0pTT04uc3RyaW5naWZ5KGF0dHJpYnV0ZU5hbWUpfV19IC0gQXNzaWduZWQgdmFsdWUuXFxuYFxuICAgICAgZmlsZUNvbnRlbnQgKz0gXCIgICAqL1xcblwiXG4gICAgICBmaWxlQ29udGVudCArPSBgICBzZXQke2NhbWVsaXplZEF0dHJpYnV0ZVVwcGVyfShuZXdWYWx1ZSkgeyByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGUoJHtKU09OLnN0cmluZ2lmeShhdHRyaWJ1dGVOYW1lKX0sIG5ld1ZhbHVlKSB9XFxuYFxuICAgIH1cblxuICAgIGZpbGVDb250ZW50ICs9IFwifVxcblwiXG5cbiAgICByZXR1cm4gZmlsZUNvbnRlbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG1vZGVsQ29uZmlnIC0gTW9kZWwgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfSAtIEF0dHJpYnV0ZSBuYW1lcy5cbiAgICovXG4gIGF0dHJpYnV0ZU5hbWVzRm9yTW9kZWwobW9kZWxDb25maWcpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9kZWxDb25maWcuYXR0cmlidXRlc1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0cmlidXRlcykpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzXG4gICAgfVxuXG4gICAgaWYgKCFhdHRyaWJ1dGVzIHx8IHR5cGVvZiBhdHRyaWJ1dGVzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICdhdHRyaWJ1dGVzJyBhcyBhcnJheSBvciBvYmplY3QgYnV0IGdvdDogJHthdHRyaWJ1dGVzfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpXG4gIH1cbn1cbiJdfQ==
|