@pipeline-builder/api-core 3.4.94 → 3.4.96
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/lib/constants/ai-providers.d.ts +0 -7
- package/lib/constants/ai-providers.js +1 -10
- package/lib/index.d.ts +4 -4
- package/lib/index.js +5 -5
- package/lib/services/cache-service.js +7 -2
- package/lib/types/common.d.ts +0 -20
- package/lib/types/common.js +1 -26
- package/lib/types/feature-flags.d.ts +0 -13
- package/lib/types/feature-flags.js +1 -16
- package/lib/utils/aws-scrub.js +7 -1
- package/lib/utils/identity.d.ts +0 -21
- package/lib/utils/identity.js +1 -30
- package/lib/utils/params.d.ts +0 -19
- package/lib/utils/params.js +1 -35
- package/lib/utils/response.d.ts +0 -38
- package/lib/utils/response.js +1 -41
- package/lib/utils/ssrf.js +20 -3
- package/lib/validation/middleware.d.ts +2 -6
- package/lib/validation/middleware.js +3 -9
- package/package.json +1 -1
|
@@ -32,10 +32,3 @@ export declare const AI_PROVIDER_ENV_VARS: Record<string, string>;
|
|
|
32
32
|
* @returns Array of models, or empty array if the provider is unknown
|
|
33
33
|
*/
|
|
34
34
|
export declare function getAIProviderModels(providerId: string): AIModelInfo[];
|
|
35
|
-
/**
|
|
36
|
-
* Get the display name for a provider ID.
|
|
37
|
-
*
|
|
38
|
-
* @param providerId - Provider identifier (e.g. "anthropic")
|
|
39
|
-
* @returns Display name, or the raw ID if the provider is unknown
|
|
40
|
-
*/
|
|
41
|
-
export declare function getAIProviderName(providerId: string): string;
|
|
@@ -71,13 +71,4 @@ export const AI_PROVIDER_ENV_VARS = {
|
|
|
71
71
|
export function getAIProviderModels(providerId) {
|
|
72
72
|
return AI_PROVIDER_CATALOG[providerId]?.models ?? [];
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
* Get the display name for a provider ID.
|
|
76
|
-
*
|
|
77
|
-
* @param providerId - Provider identifier (e.g. "anthropic")
|
|
78
|
-
* @returns Display name, or the raw ID if the provider is unknown
|
|
79
|
-
*/
|
|
80
|
-
export function getAIProviderName(providerId) {
|
|
81
|
-
return AI_PROVIDER_CATALOG[providerId]?.name ?? providerId;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktcHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9haS1wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXNCdEMsVUFBVTtBQUVWOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBbUM7SUFDakUsV0FBVyxFQUFFO1FBQ1gsRUFBRSxFQUFFLFdBQVc7UUFDZixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0QsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1NBQzlEO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsUUFBUTtRQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDM0M7S0FDRjtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxRQUFRO1FBQ1osSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDcEQsRUFBRSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1NBQy9EO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSxZQUFZO1FBQ2xCLE1BQU0sRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQzNDO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixFQUFFLEVBQUUsZ0JBQWdCO1FBQ3BCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsMkNBQTJDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pGLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUMxRCxFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7U0FDN0Q7S0FDRjtDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBMkI7SUFDMUQsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0NBQ3RDLENBQUM7QUFFRixVQUFVO0FBRVY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDcEQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3ZELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxVQUFrQjtJQUNsRCxPQUFPLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksSUFBSSxVQUFVLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vLyBUeXBlc1xuXG4vKiogTWV0YWRhdGEgZm9yIGEgc2luZ2xlIEFJIG1vZGVsLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBSU1vZGVsSW5mbyB7XG4gIC8qKiBNb2RlbCBpZGVudGlmaWVyIHVzZWQgaW4gQVBJIGNhbGxzIChlLmcuIFwiY2xhdWRlLXNvbm5ldC00LTIwMjUwNTE0XCIpLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIChlLmcuIFwiQ2xhdWRlIFNvbm5ldCA0XCIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBNZXRhZGF0YSBmb3IgYW4gQUkgcHJvdmlkZXIgd2l0aCBpdHMgYXZhaWxhYmxlIG1vZGVscy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlQcm92aWRlckluZm8ge1xuICAvKiogUHJvdmlkZXIgaWRlbnRpZmllciAoZS5nLiBcImFudGhyb3BpY1wiLCBcIm9wZW5haVwiLCBcImdvb2dsZVwiKS4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRpc3BsYXkgbmFtZSAoZS5nLiBcIkFudGhyb3BpY1wiKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWxzIGF2YWlsYWJsZSBmb3IgdGhpcyBwcm92aWRlci4gKi9cbiAgbW9kZWxzOiBBSU1vZGVsSW5mb1tdO1xufVxuXG4vLyBDYXRhbG9nXG5cbi8qKlxuICogU3RhbmRhcmQgQUkgcHJvdmlkZXIgY2F0YWxvZyDigJQgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgYWxsIHN1cHBvcnRlZFxuICogcHJvdmlkZXJzIGFuZCB0aGVpciBtb2RlbHMuIFVzZWQgYnkgYm90aCBiYWNrZW5kIHNlcnZpY2VzIGFuZCBmcm9udGVuZFxuICogY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFJX1BST1ZJREVSX0NBVEFMT0c6IFJlY29yZDxzdHJpbmcsIEFJUHJvdmlkZXJJbmZvPiA9IHtcbiAgJ2FudGhyb3BpYyc6IHtcbiAgICBpZDogJ2FudGhyb3BpYycsXG4gICAgbmFtZTogJ0FudGhyb3BpYycsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnY2xhdWRlLXNvbm5ldC00LTIwMjUwNTE0JywgbmFtZTogJ0NsYXVkZSBTb25uZXQgNCcgfSxcbiAgICAgIHsgaWQ6ICdjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxJywgbmFtZTogJ0NsYXVkZSBIYWlrdSA0LjUnIH0sXG4gICAgXSxcbiAgfSxcbiAgJ29wZW5haSc6IHtcbiAgICBpZDogJ29wZW5haScsXG4gICAgbmFtZTogJ09wZW5BSScsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnZ3B0LTRvJywgbmFtZTogJ0dQVC00bycgfSxcbiAgICAgIHsgaWQ6ICdncHQtNG8tbWluaScsIG5hbWU6ICdHUFQtNG8gTWluaScgfSxcbiAgICBdLFxuICB9LFxuICAnZ29vZ2xlJzoge1xuICAgIGlkOiAnZ29vZ2xlJyxcbiAgICBuYW1lOiAnR29vZ2xlJyxcbiAgICBtb2RlbHM6IFtcbiAgICAgIHsgaWQ6ICdnZW1pbmktMi4wLWZsYXNoJywgbmFtZTogJ0dlbWluaSAyLjAgRmxhc2gnIH0sXG4gICAgICB7IGlkOiAnZ2VtaW5pLTIuNS1wcm8tcHJldmlldy0wNi0wNScsIG5hbWU6ICdHZW1pbmkgMi41IFBybycgfSxcbiAgICBdLFxuICB9LFxuICAneGFpJzoge1xuICAgIGlkOiAneGFpJyxcbiAgICBuYW1lOiAneEFJIChHcm9rKScsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnZ3Jvay0zJywgbmFtZTogJ0dyb2sgMycgfSxcbiAgICAgIHsgaWQ6ICdncm9rLTMtZmFzdCcsIG5hbWU6ICdHcm9rIDMgRmFzdCcgfSxcbiAgICAgIHsgaWQ6ICdncm9rLTMtbWluaScsIG5hbWU6ICdHcm9rIDMgTWluaScgfSxcbiAgICBdLFxuICB9LFxuICAnYW1hem9uLWJlZHJvY2snOiB7XG4gICAgaWQ6ICdhbWF6b24tYmVkcm9jaycsXG4gICAgbmFtZTogJ0FtYXpvbiBCZWRyb2NrJyxcbiAgICBtb2RlbHM6IFtcbiAgICAgIHsgaWQ6ICdhbnRocm9waWMuY2xhdWRlLTMtNS1zb25uZXQtMjAyNDEwMjItdjI6MCcsIG5hbWU6ICdDbGF1ZGUgMy41IFNvbm5ldCB2MicgfSxcbiAgICAgIHsgaWQ6ICd1cy5hbWF6b24ubm92YS1wcm8tdjE6MCcsIG5hbWU6ICdBbWF6b24gTm92YSBQcm8nIH0sXG4gICAgICB7IGlkOiAndXMuYW1hem9uLm5vdmEtbGl0ZS12MTowJywgbmFtZTogJ0FtYXpvbiBOb3ZhIExpdGUnIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbi8qKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgZm9yIGVhY2ggQUkgcHJvdmlkZXIncyBBUEkga2V5LlxuICogVXNlZCBieSBiYWNrZW5kIHNlcnZpY2VzIHRvIGluaXRpYWxpemUgdGhlIHByb3ZpZGVyIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgY29uc3QgQUlfUFJPVklERVJfRU5WX1ZBUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdhbnRocm9waWMnOiAnQU5USFJPUElDX0FQSV9LRVknLFxuICAnb3BlbmFpJzogJ09QRU5BSV9BUElfS0VZJyxcbiAgJ2dvb2dsZSc6ICdHT09HTEVfR0VORVJBVElWRV9BSV9BUElfS0VZJyxcbiAgJ3hhaSc6ICdYQUlfQVBJX0tFWScsXG4gICdhbWF6b24tYmVkcm9jayc6ICdBV1NfQUNDRVNTX0tFWV9JRCcsXG59O1xuXG4vLyBIZWxwZXJzXG5cbi8qKlxuICogR2V0IHRoZSBtb2RlbCBsaXN0IGZvciBhIGdpdmVuIHByb3ZpZGVyIElELlxuICpcbiAqIEBwYXJhbSBwcm92aWRlcklkIC0gUHJvdmlkZXIgaWRlbnRpZmllciAoZS5nLiBcImFudGhyb3BpY1wiKVxuICogQHJldHVybnMgQXJyYXkgb2YgbW9kZWxzLCBvciBlbXB0eSBhcnJheSBpZiB0aGUgcHJvdmlkZXIgaXMgdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QUlQcm92aWRlck1vZGVscyhwcm92aWRlcklkOiBzdHJpbmcpOiBBSU1vZGVsSW5mb1tdIHtcbiAgcmV0dXJuIEFJX1BST1ZJREVSX0NBVEFMT0dbcHJvdmlkZXJJZF0/Lm1vZGVscyA/PyBbXTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYSBwcm92aWRlciBJRC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlkZXJJZCAtIFByb3ZpZGVyIGlkZW50aWZpZXIgKGUuZy4gXCJhbnRocm9waWNcIilcbiAqIEByZXR1cm5zIERpc3BsYXkgbmFtZSwgb3IgdGhlIHJhdyBJRCBpZiB0aGUgcHJvdmlkZXIgaXMgdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QUlQcm92aWRlck5hbWUocHJvdmlkZXJJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIEFJX1BST1ZJREVSX0NBVEFMT0dbcHJvdmlkZXJJZF0/Lm5hbWUgPz8gcHJvdmlkZXJJZDtcbn1cbiJdfQ==
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktcHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9haS1wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXNCdEMsVUFBVTtBQUVWOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBbUM7SUFDakUsV0FBVyxFQUFFO1FBQ1gsRUFBRSxFQUFFLFdBQVc7UUFDZixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0QsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1NBQzlEO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsUUFBUTtRQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDM0M7S0FDRjtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxRQUFRO1FBQ1osSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDcEQsRUFBRSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1NBQy9EO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSxZQUFZO1FBQ2xCLE1BQU0sRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQzNDO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixFQUFFLEVBQUUsZ0JBQWdCO1FBQ3BCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsMkNBQTJDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pGLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUMxRCxFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7U0FDN0Q7S0FDRjtDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBMkI7SUFDMUQsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0NBQ3RDLENBQUM7QUFFRixVQUFVO0FBRVY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDcEQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLy8gVHlwZXNcblxuLyoqIE1ldGFkYXRhIGZvciBhIHNpbmdsZSBBSSBtb2RlbC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlNb2RlbEluZm8ge1xuICAvKiogTW9kZWwgaWRlbnRpZmllciB1c2VkIGluIEFQSSBjYWxscyAoZS5nLiBcImNsYXVkZS1zb25uZXQtNC0yMDI1MDUxNFwiKS4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRpc3BsYXkgbmFtZSAoZS5nLiBcIkNsYXVkZSBTb25uZXQgNFwiKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKiogTWV0YWRhdGEgZm9yIGFuIEFJIHByb3ZpZGVyIHdpdGggaXRzIGF2YWlsYWJsZSBtb2RlbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFJUHJvdmlkZXJJbmZvIHtcbiAgLyoqIFByb3ZpZGVyIGlkZW50aWZpZXIgKGUuZy4gXCJhbnRocm9waWNcIiwgXCJvcGVuYWlcIiwgXCJnb29nbGVcIikuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkaXNwbGF5IG5hbWUgKGUuZy4gXCJBbnRocm9waWNcIikuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIE1vZGVscyBhdmFpbGFibGUgZm9yIHRoaXMgcHJvdmlkZXIuICovXG4gIG1vZGVsczogQUlNb2RlbEluZm9bXTtcbn1cblxuLy8gQ2F0YWxvZ1xuXG4vKipcbiAqIFN0YW5kYXJkIEFJIHByb3ZpZGVyIGNhdGFsb2cg4oCUIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGFsbCBzdXBwb3J0ZWRcbiAqIHByb3ZpZGVycyBhbmQgdGhlaXIgbW9kZWxzLiBVc2VkIGJ5IGJvdGggYmFja2VuZCBzZXJ2aWNlcyBhbmQgZnJvbnRlbmRcbiAqIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBBSV9QUk9WSURFUl9DQVRBTE9HOiBSZWNvcmQ8c3RyaW5nLCBBSVByb3ZpZGVySW5mbz4gPSB7XG4gICdhbnRocm9waWMnOiB7XG4gICAgaWQ6ICdhbnRocm9waWMnLFxuICAgIG5hbWU6ICdBbnRocm9waWMnLFxuICAgIG1vZGVsczogW1xuICAgICAgeyBpZDogJ2NsYXVkZS1zb25uZXQtNC0yMDI1MDUxNCcsIG5hbWU6ICdDbGF1ZGUgU29ubmV0IDQnIH0sXG4gICAgICB7IGlkOiAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMScsIG5hbWU6ICdDbGF1ZGUgSGFpa3UgNC41JyB9LFxuICAgIF0sXG4gIH0sXG4gICdvcGVuYWknOiB7XG4gICAgaWQ6ICdvcGVuYWknLFxuICAgIG5hbWU6ICdPcGVuQUknLFxuICAgIG1vZGVsczogW1xuICAgICAgeyBpZDogJ2dwdC00bycsIG5hbWU6ICdHUFQtNG8nIH0sXG4gICAgICB7IGlkOiAnZ3B0LTRvLW1pbmknLCBuYW1lOiAnR1BULTRvIE1pbmknIH0sXG4gICAgXSxcbiAgfSxcbiAgJ2dvb2dsZSc6IHtcbiAgICBpZDogJ2dvb2dsZScsXG4gICAgbmFtZTogJ0dvb2dsZScsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnZ2VtaW5pLTIuMC1mbGFzaCcsIG5hbWU6ICdHZW1pbmkgMi4wIEZsYXNoJyB9LFxuICAgICAgeyBpZDogJ2dlbWluaS0yLjUtcHJvLXByZXZpZXctMDYtMDUnLCBuYW1lOiAnR2VtaW5pIDIuNSBQcm8nIH0sXG4gICAgXSxcbiAgfSxcbiAgJ3hhaSc6IHtcbiAgICBpZDogJ3hhaScsXG4gICAgbmFtZTogJ3hBSSAoR3JvayknLFxuICAgIG1vZGVsczogW1xuICAgICAgeyBpZDogJ2dyb2stMycsIG5hbWU6ICdHcm9rIDMnIH0sXG4gICAgICB7IGlkOiAnZ3Jvay0zLWZhc3QnLCBuYW1lOiAnR3JvayAzIEZhc3QnIH0sXG4gICAgICB7IGlkOiAnZ3Jvay0zLW1pbmknLCBuYW1lOiAnR3JvayAzIE1pbmknIH0sXG4gICAgXSxcbiAgfSxcbiAgJ2FtYXpvbi1iZWRyb2NrJzoge1xuICAgIGlkOiAnYW1hem9uLWJlZHJvY2snLFxuICAgIG5hbWU6ICdBbWF6b24gQmVkcm9jaycsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnYW50aHJvcGljLmNsYXVkZS0zLTUtc29ubmV0LTIwMjQxMDIyLXYyOjAnLCBuYW1lOiAnQ2xhdWRlIDMuNSBTb25uZXQgdjInIH0sXG4gICAgICB7IGlkOiAndXMuYW1hem9uLm5vdmEtcHJvLXYxOjAnLCBuYW1lOiAnQW1hem9uIE5vdmEgUHJvJyB9LFxuICAgICAgeyBpZDogJ3VzLmFtYXpvbi5ub3ZhLWxpdGUtdjE6MCcsIG5hbWU6ICdBbWF6b24gTm92YSBMaXRlJyB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzIGZvciBlYWNoIEFJIHByb3ZpZGVyJ3MgQVBJIGtleS5cbiAqIFVzZWQgYnkgYmFja2VuZCBzZXJ2aWNlcyB0byBpbml0aWFsaXplIHRoZSBwcm92aWRlciByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFJX1BST1ZJREVSX0VOVl9WQVJTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYW50aHJvcGljJzogJ0FOVEhST1BJQ19BUElfS0VZJyxcbiAgJ29wZW5haSc6ICdPUEVOQUlfQVBJX0tFWScsXG4gICdnb29nbGUnOiAnR09PR0xFX0dFTkVSQVRJVkVfQUlfQVBJX0tFWScsXG4gICd4YWknOiAnWEFJX0FQSV9LRVknLFxuICAnYW1hem9uLWJlZHJvY2snOiAnQVdTX0FDQ0VTU19LRVlfSUQnLFxufTtcblxuLy8gSGVscGVyc1xuXG4vKipcbiAqIEdldCB0aGUgbW9kZWwgbGlzdCBmb3IgYSBnaXZlbiBwcm92aWRlciBJRC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlkZXJJZCAtIFByb3ZpZGVyIGlkZW50aWZpZXIgKGUuZy4gXCJhbnRocm9waWNcIilcbiAqIEByZXR1cm5zIEFycmF5IG9mIG1vZGVscywgb3IgZW1wdHkgYXJyYXkgaWYgdGhlIHByb3ZpZGVyIGlzIHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFJUHJvdmlkZXJNb2RlbHMocHJvdmlkZXJJZDogc3RyaW5nKTogQUlNb2RlbEluZm9bXSB7XG4gIHJldHVybiBBSV9QUk9WSURFUl9DQVRBTE9HW3Byb3ZpZGVySWRdPy5tb2RlbHMgPz8gW107XG59XG4iXX0=
|
package/lib/index.d.ts
CHANGED
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
*
|
|
19
19
|
* **Utilities**
|
|
20
20
|
* - createLogger — Winston-based structured logger factory
|
|
21
|
-
* - sendSuccess, sendError,
|
|
22
|
-
* - getParam, getOrgId
|
|
23
|
-
* -
|
|
24
|
-
* - getIdentity
|
|
21
|
+
* - sendSuccess, sendError, sendPaginatedNested, sendBadRequest, sendInternalError — HTTP response helpers
|
|
22
|
+
* - getParam, getOrgId — request parameter extraction
|
|
23
|
+
* - parseQueryInt, parseQueryString — query string parsing
|
|
24
|
+
* - getIdentity — identity extraction from requests
|
|
25
25
|
* - errorMessage — safe error-to-string conversion
|
|
26
26
|
*
|
|
27
27
|
* **Constants**
|
package/lib/index.js
CHANGED
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
*
|
|
21
21
|
* **Utilities**
|
|
22
22
|
* - createLogger — Winston-based structured logger factory
|
|
23
|
-
* - sendSuccess, sendError,
|
|
24
|
-
* - getParam, getOrgId
|
|
25
|
-
* -
|
|
26
|
-
* - getIdentity
|
|
23
|
+
* - sendSuccess, sendError, sendPaginatedNested, sendBadRequest, sendInternalError — HTTP response helpers
|
|
24
|
+
* - getParam, getOrgId — request parameter extraction
|
|
25
|
+
* - parseQueryInt, parseQueryString — query string parsing
|
|
26
|
+
* - getIdentity — identity extraction from requests
|
|
27
27
|
* - errorMessage — safe error-to-string conversion
|
|
28
28
|
*
|
|
29
29
|
* **Constants**
|
|
@@ -68,4 +68,4 @@ export * from './errors/index.js';
|
|
|
68
68
|
export * from './validation/index.js';
|
|
69
69
|
// OpenAPI
|
|
70
70
|
export * from './openapi/index.js';
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFFSCxRQUFRO0FBQ1IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxZQUFZO0FBQ1osY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxRQUFRO0FBQ1IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQztBQUVuQyxXQUFXO0FBQ1gsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxhQUFhO0FBQ2IsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxTQUFTO0FBQ1QsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxTQUFTO0FBQ1QsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxhQUFhO0FBQ2IsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEBtb2R1bGUgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmVcbiAqXG4gKiBDb3JlIEFQSSB1dGlsaXRpZXMgc2hhcmVkIGFjcm9zcyBhbGwgc2VydmljZXMuXG4gKlxuICogKipNaWRkbGV3YXJlKipcbiAqIC0gcmVxdWlyZUF1dGgsIHJlcXVpcmVTeXN0ZW1BZG1pbiwgcmVxdWlyZUZlYXR1cmUg4oCUIEpXVCBhdXRoZW50aWNhdGlvblxuICogLSBpc1N5c3RlbUFkbWluLCBpc1NlcnZpY2VQcmluY2lwYWwg4oCUIGF1dGhvcml6YXRpb24gaGVscGVycyAoaXNTeXN0ZW1PcmdJZCByZW1haW5zIGFzIGEgY29udGVudC1vd25lciBjaGVjaywgbm90IGEgcHJpdmlsZWdlIGdhdGUpXG4gKiAtIHNpZ25TZXJ2aWNlVG9rZW4sIGdldFNlcnZpY2VBdXRoSGVhZGVyIOKAlCBpbnRlci1zZXJ2aWNlIEpXVCBtaW50aW5nXG4gKlxuICogKipUeXBlcyoqXG4gKiAtIEVycm9yQ29kZSwgRXJyb3JDb2RlU3RhdHVzIOKAlCBzdGFuZGFyZGl6ZWQgZXJyb3IgY29kZSBlbnVtIGFuZCBzdGF0dXMgbWFwcGluZ1xuICogLSBSZXF1ZXN0SWRlbnRpdHkg4oCUIHBhcnNlZCBKV1QgaWRlbnRpdHlcbiAqIC0gU2VydmljZUNvbmZpZywgUmVxdWVzdE9wdGlvbnMg4oCUIEhUVFAgY2xpZW50IHR5cGVzXG4gKiAtIFF1b3RhVHlwZSwgUXVvdGFDaGVja1Jlc3VsdCDigJQgcXVvdGEgc2VydmljZSB0eXBlc1xuICogLSBQaXBlbGluZVR5cGUsIENvbXB1dGVUeXBlLCBBY2Nlc3NNb2RpZmllciDigJQgcGlwZWxpbmUgZG9tYWluIHR5cGVzXG4gKiAtIEZlYXR1cmVGbGFncyDigJQgZmVhdHVyZSBmbGFnIHR5cGVzXG4gKlxuICogKipVdGlsaXRpZXMqKlxuICogLSBjcmVhdGVMb2dnZXIg4oCUIFdpbnN0b24tYmFzZWQgc3RydWN0dXJlZCBsb2dnZXIgZmFjdG9yeVxuICogLSBzZW5kU3VjY2Vzcywgc2VuZEVycm9yLCBzZW5kUGFnaW5hdGVkTmVzdGVkLCBzZW5kQmFkUmVxdWVzdCwgc2VuZEludGVybmFsRXJyb3Ig4oCUIEhUVFAgcmVzcG9uc2UgaGVscGVyc1xuICogLSBnZXRQYXJhbSwgZ2V0T3JnSWQg4oCUIHJlcXVlc3QgcGFyYW1ldGVyIGV4dHJhY3Rpb25cbiAqIC0gcGFyc2VRdWVyeUludCwgcGFyc2VRdWVyeVN0cmluZyDigJQgcXVlcnkgc3RyaW5nIHBhcnNpbmdcbiAqIC0gZ2V0SWRlbnRpdHkg4oCUIGlkZW50aXR5IGV4dHJhY3Rpb24gZnJvbSByZXF1ZXN0c1xuICogLSBlcnJvck1lc3NhZ2Ug4oCUIHNhZmUgZXJyb3ItdG8tc3RyaW5nIGNvbnZlcnNpb25cbiAqXG4gKiAqKkNvbnN0YW50cyoqXG4gKiAtIEhUVFAgc3RhdHVzIGNvZGVzLCBBSSBwcm92aWRlciBpZGVudGlmaWVycywgdGltZSBjb25zdGFudHNcbiAqXG4gKiAqKlNlcnZpY2VzKipcbiAqIC0gSW50ZXJuYWxIdHRwQ2xpZW50LCBjcmVhdGVTYWZlQ2xpZW50IOKAlCBpbnRlcm5hbCBzZXJ2aWNlLXRvLXNlcnZpY2UgSFRUUCBjbGllbnRcbiAqIC0gY3JlYXRlUXVvdGFTZXJ2aWNlIOKAlCBxdW90YSBlbmZvcmNlbWVudCBjbGllbnQgZmFjdG9yeVxuICogLSBDYWNoZVNlcnZpY2Ug4oCUIGluLW1lbW9yeSBUVEwgY2FjaGVcbiAqIC0gQ29tcGxpYW5jZUNsaWVudCDigJQgY29tcGxpYW5jZSBzZXJ2aWNlIGNsaWVudFxuICogLSBFbnRpdHlFdmVudEVtaXR0ZXIg4oCUIGRvbWFpbiBldmVudCBwdWIvc3ViXG4gKlxuICogKipFcnJvcnMqKlxuICogLSBBcHBFcnJvciwgTm90Rm91bmRFcnJvciwgRm9yYmlkZGVuRXJyb3Ig4oCUIHR5cGVkIEhUVFAgZXJyb3IgY2xhc3Nlc1xuICpcbiAqICoqVmFsaWRhdGlvbioqXG4gKiAtIFpvZC1iYXNlZCByZXF1ZXN0IHZhbGlkYXRpb24gc2NoZW1hcyBhbmQgbWlkZGxld2FyZVxuICpcbiAqICoqUm91dGVzKipcbiAqIC0gSGVhbHRoIGNoZWNrIHJvdXRlIGZhY3RvcnlcbiAqXG4gKiAqKk9wZW5BUEkqKlxuICogLSBTY2hlbWEgcmVnaXN0cnkgYW5kIHNwZWMgZ2VuZXJhdGlvblxuICovXG5cbi8vIFR5cGVzXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2luZGV4LmpzJztcblxuLy8gQ29uc3RhbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9pbmRleC5qcyc7XG5cbi8vIFV0aWxzXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2luZGV4LmpzJztcblxuLy8gSGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2luZGV4LmpzJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaW5kZXguanMnO1xuXG4vLyBNaWRkbGV3YXJlXG5leHBvcnQgKiBmcm9tICcuL21pZGRsZXdhcmUvaW5kZXguanMnO1xuXG4vLyBSb3V0ZXNcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVzL2luZGV4LmpzJztcblxuLy8gRXJyb3JzXG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycy9pbmRleC5qcyc7XG5cbi8vIFZhbGlkYXRpb25cbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGlvbi9pbmRleC5qcyc7XG5cbi8vIE9wZW5BUElcbmV4cG9ydCAqIGZyb20gJy4vb3BlbmFwaS9pbmRleC5qcyc7XG4iXX0=
|
|
@@ -231,7 +231,12 @@ export class CacheService {
|
|
|
231
231
|
const flight = (async () => {
|
|
232
232
|
const value = await factory();
|
|
233
233
|
await this.set(key, value, ttlSeconds);
|
|
234
|
-
|
|
234
|
+
// Hand callers an INDEPENDENT clone, matching get()'s clone-on-read
|
|
235
|
+
// contract. Without this the first caller (and every coalesced concurrent
|
|
236
|
+
// caller) would get a mutable reference to the same object the memory
|
|
237
|
+
// backend just stored, so mutating the result corrupts the cached entry.
|
|
238
|
+
// The redis backend is unaffected (set serializes and get JSON.parses).
|
|
239
|
+
return cloneValue(value);
|
|
235
240
|
})();
|
|
236
241
|
this.inflight.set(fk, flight);
|
|
237
242
|
try {
|
|
@@ -267,4 +272,4 @@ export class CacheService {
|
|
|
267
272
|
export function createCacheService(prefix, defaultTtlSeconds = 300, redis) {
|
|
268
273
|
return new CacheService({ prefix, defaultTtlSeconds, redis });
|
|
269
274
|
}
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUEwQnRDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFJLEtBQVE7SUFDN0IsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQU0sQ0FBQztJQUNoRCxDQUFDO0FBQ0gsQ0FBQztBQTBCRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ2YsTUFBTSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBQ3hEOzs7O09BSUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDdEMsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBUztJQUNuQixLQUFLLENBQW9CO0lBRTFDLDhEQUE4RDtJQUNyRCxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFckUsWUFBWSxNQUFtQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdB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dCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIExpZ2h0d2VpZ2h0IGNhY2hpbmcgc2VydmljZSB3aXRoIFRUTCBzdXBwb3J0LlxuICpcbiAqIFR3byBpbXBsZW1lbnRhdGlvbnM6XG4gKiAtIEluLW1lbW9yeSAoZGVmYXVsdCk6IHRydWUtTFJVIE1hcCBjYWNoZSwgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKiAtIFJlZGlzOiBXaGVuIGEgUmVkaXMgY2xpZW50IGlzIHByb3ZpZGVkLCB1c2VzIFJlZGlzIGZvciBjcm9zcy1wcm9jZXNzIGNhY2hpbmdcbiAqXG4gKiBEZXNpZ246XG4gKiAtIEFsbCBvcGVyYXRpb25zIGFyZSBmYWlsLXNhZmU6IGNhY2hlIG1pc3Nlcy9lcnJvcnMgcmV0dXJuIG51bGwsIG5ldmVyIHRocm93XG4gKiAtIEpTT04gc2VyaWFsaXphdGlvbiBmb3IgUmVkaXM7IHRoZSBpbi1tZW1vcnkgYmFja2VuZCBkZWVwLWNsb25lcyBvbiByZWFkIHNvXG4gKiAgIGJvdGggYmFja2VuZHMgcmV0dXJuIGFuIGluZGVwZW5kZW50IGNvcHkgKG11dGF0aW5nIGEgcmVzdWx0IGlzIGFsd2F5cyBzYWZlKVxuICogLSBgZ2V0T3JTZXRgIGlzIHNpbmdsZS1mbGlnaHQ6IGNvbmN1cnJlbnQgbWlzc2VzIHNoYXJlIG9uZSBmYWN0b3J5KCkgY2FsbFxuICogLSBLZXkgbmFtZXNwYWNlIHByZWZpeGluZyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gc2VydmljZXNcbiAqL1xuXG5cbi8qKlxuICogQ2FjaGUgZW50cnkgd2l0aCB2YWx1ZSBhbmQgZXhwaXJhdGlvbiB0aW1lLlxuICovXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeTxUPiB7XG4gIHZhbHVlOiBUO1xuICBleHBpcmVzQXQ6IG51bWJlcjsgLy8gVW5peCB0aW1lc3RhbXAgaW4gbXNcbn1cblxuLyoqXG4gKiBEZWVwLWNsb25lIGEgdmFsdWUgc28gdGhlIGluLW1lbW9yeSBiYWNrZW5kIGhhbmRzIGJhY2sgYW4gSU5ERVBFTkRFTlQgY29weSBvblxuICogZXZlcnkgcmVhZCDigJQgbWF0Y2hpbmcgdGhlIFJlZGlzIGJhY2tlbmQsIHdoaWNoIHJldHVybnMgYSBmcmVzaCBgSlNPTi5wYXJzZWBcbiAqIGNsb25lIGVhY2ggdGltZS4gV2l0aG91dCB0aGlzIHRoZSBpbi1tZW1vcnkgY2FjaGUgcmV0dXJucyB0aGUgc2FtZSBzdG9yZWRcbiAqIG9iamVjdCByZWZlcmVuY2UsIHNvIGEgY29uc3VtZXIgbXV0YXRpbmcgYSBcImNhY2hlZFwiIG9iamVjdCBzaWxlbnRseSBjb3JydXB0c1xuICogdGhlIHNoYXJlZCBjYWNoZSAoYSBmb290Z3VuIHRoYXQgb25seSBiaXRlcyB1bmRlciB0aGUgbWVtb3J5IGJhY2tlbmQpLlxuICpcbiAqIFByaW1pdGl2ZXMgYXJlIHJldHVybmVkIGFzLWlzLiBQcmVmZXJzIHRoZSBzdHJ1Y3R1cmVkLWNsb25lIGFsZ29yaXRobTsgZmFsbHNcbiAqIGJhY2sgdG8gYSBKU09OIHJvdW5kLXRyaXAgb24gb2xkZXIgcnVudGltZXMgb3IgZXhvdGljIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVWYWx1ZTxUPih2YWx1ZTogVCk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHZhbHVlO1xuICB0cnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpIGFzIFQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNaW5pbWFsIFJlZGlzLWxpa2UgY2xpZW50IGludGVyZmFjZSAoc3Vic2V0IG9mIGlvcmVkaXMpLlxuICogU2VydmljZXMgcGFzcyB0aGVpciBvd24gUmVkaXMgY2xpZW50IGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzQ2FjaGVDbGllbnQge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGRlbCguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAga2V5cyhwYXR0ZXJuOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgLyoqIFNDQU4tYmFzZWQgaXRlcmF0aW9uIChwcmVmZXJyZWQgb3ZlciBLRVlTIGZvciBwcm9kdWN0aW9uKS4gKi9cbiAgc2NhblN0cmVhbT8ob3B0aW9uczogeyBtYXRjaDogc3RyaW5nOyBjb3VudD86IG51bWJlciB9KTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlQ29uZmlnIHtcbiAgLyoqIEtleSBwcmVmaXggZm9yIG5hbWVzcGFjZSBpc29sYXRpb24gKGUuZy4sICdwbHVnaW46JywgJ2NvbXBsaWFuY2U6JykgKi9cbiAgcHJlZml4OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzICovXG4gIGRlZmF1bHRUdGxTZWNvbmRzOiBudW1iZXI7XG4gIC8qKiBNYXggZW50cmllcyBmb3IgaW4tbWVtb3J5IGNhY2hlIChkZWZhdWx0IDEwMDApICovXG4gIG1heEVudHJpZXM/OiBudW1iZXI7XG4gIC8qKiBPcHRpb25hbCBSZWRpcyBjbGllbnQg4oCUIHVzZXMgaW4tbWVtb3J5IGNhY2hlIGlmIG5vdCBwcm92aWRlZCAqL1xuICByZWRpcz86IFJlZGlzQ2FjaGVDbGllbnQ7XG59XG5cbi8qKlxuICogQ2FjaGUgc2VydmljZSB3aXRoIGdldC9zZXQvZGVsIG9wZXJhdGlvbnMgYW5kIGF1dG9tYXRpYyBUVEwgZXhwaXJ5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYWNoZSA9IG5ldyBDYWNoZVNlcnZpY2UoeyBwcmVmaXg6ICdwbHVnaW46JywgZGVmYXVsdFR0bFNlY29uZHM6IDMwMCB9KTtcbiAqXG4gKiAvLyBTZXQgd2l0aCBkZWZhdWx0IFRUTFxuICogYXdhaXQgY2FjaGUuc2V0KCdvcmcxMjM6bGlzdCcsIHBsdWdpbnMpO1xuICpcbiAqIC8vIEdldCAocmV0dXJucyBudWxsIG9uIG1pc3MpXG4gKiBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZS5nZXQ8UGx1Z2luW10+KCdvcmcxMjM6bGlzdCcpO1xuICpcbiAqIC8vIEludmFsaWRhdGVcbiAqIGF3YWl0IGNhY2hlLmRlbCgnb3JnMTIzOmxpc3QnKTtcbiAqXG4gKiAvLyBJbnZhbGlkYXRlIGJ5IHBhdHRlcm5cbiAqIGF3YWl0IGNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdvcmcxMjM6KicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIG1lbW9yeSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUVudHJ5PHVua25vd24+PigpO1xuICAvKipcbiAgICogSW4tZmxpZ2h0IGBnZXRPclNldGAgZmFjdG9yeSBwcm9taXNlcywga2V5ZWQgYnkgZnVsbCBjYWNoZSBrZXkuIENvYWxlc2Nlc1xuICAgKiBjb25jdXJyZW50IGNvbGQgY2FsbGVycyBvbnRvIGEgc2luZ2xlIGBmYWN0b3J5KClgIGludm9jYXRpb24gKHNpbmdsZS1mbGlnaHRcbiAgICogLyBzdGFtcGVkZSBwcm90ZWN0aW9uKTsgZW50cmllcyBhcmUgY2xlYXJlZCBvbmNlIHRoZSBwcm9taXNlIHNldHRsZXMuXG4gICAqL1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dW5rbm93bj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFR0bE1zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cmllczogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZGlzPzogUmVkaXNDYWNoZUNsaWVudDtcblxuICAvKiogQ2FjaGUgbWV0cmljcyDigJQgdHJhY2tzIGhpdHMsIG1pc3NlcywgYW5kIGludmFsaWRhdGlvbnMuICovXG4gIHJlYWRvbmx5IG1ldHJpY3MgPSB7IGhpdHM6IDAsIG1pc3NlczogMCwgc2V0czogMCwgaW52YWxpZGF0aW9uczogMCB9O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ2FjaGVDb25maWcpIHtcbiAgICB0aGlzLnByZWZpeCA9IGNvbmZpZy5wcmVmaXg7XG4gICAgdGhpcy5kZWZhdWx0VHRsTXMgPSBjb25maWcuZGVmYXVsdFR0bFNlY29uZHMgKiAxMDAwO1xuICAgIHRoaXMubWF4RW50cmllcyA9IGNvbmZpZy5tYXhFbnRyaWVzID8/IDEwMDA7XG4gICAgdGhpcy5yZWRpcyA9IGNvbmZpZy5yZWRpcztcbiAgfVxuXG4gIHByaXZhdGUgZnVsbEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucHJlZml4fSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgY2FjaGVkIHZhbHVlLiBSZXR1cm5zIG51bGwgb24gbWlzcyBvciBlcnJvci5cbiAgICpcbiAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIElOREVQRU5ERU5UIGRlZXAgY29weSDigJQgbXV0YXRpbmcgaXQgbmV2ZXIgYWZmZWN0c1xuICAgKiB0aGUgY2FjaGVkIGVudHJ5ICh0aGUgaW4tbWVtb3J5IGJhY2tlbmQgY2xvbmVzIG9uIHJlYWQgZm9yIHBhcml0eSB3aXRoXG4gICAqIFJlZGlzLCB3aGljaCByZXR1cm5zIGEgZnJlc2ggSlNPTiBjbG9uZSkuIENhbGxlcnMgbWF5IHN0aWxsIHRyZWF0IHJlc3VsdHMgYXNcbiAgICogaW1tdXRhYmxlLCBidXQgZG9pbmcgc28gaXMgbm8gbG9uZ2VyIGxvYWQtYmVhcmluZyBmb3IgY2FjaGUgaW50ZWdyaXR5LlxuICAgKi9cbiAgYXN5bmMgZ2V0PFQ+KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMucmVkaXMpIHtcbiAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgdGhpcy5yZWRpcy5nZXQoZmspO1xuICAgICAgICBpZiAoIXJhdykgeyB0aGlzLm1ldHJpY3MubWlzc2VzKys7IHJldHVybiBudWxsOyB9XG4gICAgICAgIHRoaXMubWV0cmljcy5oaXRzKys7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdykgYXMgVDtcbiAgICAgIH1cblxuICAgICAgLy8gSW4tbWVtb3J5XG4gICAgICBjb25zdCBlbnRyeSA9IHRoaXMubWVtb3J5LmdldChmayk7XG4gICAgICBpZiAoIWVudHJ5KSB7IHRoaXMubWV0cmljcy5taXNzZXMrKzsgcmV0dXJuIG51bGw7IH1cbiAgICAgIGlmIChEYXRlLm5vdygpID4gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICAgIHRoaXMubWV0cmljcy5taXNzZXMrKztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyBMUlUgdG91Y2g6IGRlbGV0ZSArIHJlLWluc2VydCBtb3ZlcyB0aGlzIGtleSB0byB0aGUgbmV3ZXN0IHBvc2l0aW9uXG4gICAgICAvLyAoTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIpLCBzbyBgc2V0YCdzIG9sZGVzdC1maXJzdCBldmljdGlvbiBpcyBhXG4gICAgICAvLyB0cnVlIGxlYXN0LXJlY2VudGx5LVVTRUQgZXZpY3Rpb24gcmF0aGVyIHRoYW4gZmlyc3QtaW5zZXJ0ZWQgKEZJRk8pLlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIHRoaXMubWVtb3J5LnNldChmaywgZW50cnkpO1xuICAgICAgdGhpcy5tZXRyaWNzLmhpdHMrKztcbiAgICAgIC8vIENsb25lIHNvIGEgY2FsbGVyIG11dGF0aW5nIHRoZSByZXN1bHQgY2FuJ3QgY29ycnVwdCB0aGUgc2hhcmVkIGVudHJ5LlxuICAgICAgcmV0dXJuIGNsb25lVmFsdWUoZW50cnkudmFsdWUpIGFzIFQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm1ldHJpY3MubWlzc2VzKys7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgY2FjaGVkIHZhbHVlIHdpdGggb3B0aW9uYWwgVFRMIG92ZXJyaWRlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gQ2FjaGUga2V5IChwcmVmaXggaXMgYWRkZWQgYXV0b21hdGljYWxseSlcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2FjaGUgKG11c3QgYmUgSlNPTi1zZXJpYWxpemFibGUgZm9yIFJlZGlzKVxuICAgKiBAcGFyYW0gdHRsU2Vjb25kcyAtIFRUTCBvdmVycmlkZSAodXNlcyBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZClcbiAgICovXG4gIGFzeW5jIHNldDxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQsIHR0bFNlY29uZHM/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmayA9IHRoaXMuZnVsbEtleShrZXkpO1xuICAgIGNvbnN0IHR0bCA9IHR0bFNlY29uZHMgPz8gdGhpcy5kZWZhdWx0VHRsTXMgLyAxMDAwO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubWV0cmljcy5zZXRzKys7XG4gICAgICBpZiAodGhpcy5yZWRpcykge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZGlzLnNldChmaywgSlNPTi5zdHJpbmdpZnkodmFsdWUpLCAnRVgnLCB0dGwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEluLW1lbW9yeSDigJQgYSB3cml0ZSBjb3VudHMgYXMgYSB1c2UsIHNvIGRyb3AgYW55IGV4aXN0aW5nIGVudHJ5IGZpcnN0XG4gICAgICAvLyBhbmQgcmUtaW5zZXJ0IGJlbG93IGFzIHRoZSBuZXdlc3QgKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKS4gVGhpc1xuICAgICAgLy8ga2VlcHMgdGhlIE1hcCBvcmRlcmVkIG9sZGVzdC1VU0VEIOKGkiBuZXdlc3QtVVNFRCBzbyB0aGUgZXZpY3Rpb24gYmVsb3cgaXNcbiAgICAgIC8vIHRydWUgTFJVLCBhbmQgYXZvaWRzIGV2aWN0aW5nIGEgdmljdGltIHdoZW4gbWVyZWx5IHVwZGF0aW5nIGEga2V5LlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIGlmICh0aGlzLm1lbW9yeS5zaXplID49IHRoaXMubWF4RW50cmllcykge1xuICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMubWVtb3J5LmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgIGlmIChmaXJzdEtleSkgdGhpcy5tZW1vcnkuZGVsZXRlKGZpcnN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZW1vcnkuc2V0KGZrLCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGwgKiAxMDAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDYWNoZSBzZXQgZmFpbHVyZSBpcyBub24tZmF0YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgY2FjaGVkIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgZGVsKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5yZWRpcykge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZGlzLmRlbChmayk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDYWNoZSBkZWxldGUgZmFpbHVyZSBpcyBub24tZmF0YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW52YWxpZGF0ZSBhbGwga2V5cyBtYXRjaGluZyBhIHBhdHRlcm4gKGUuZy4sICdvcmcxMjM6KicpLlxuICAgKiBVc2VzIFNDQU4gZm9yIFJlZGlzIChub24tYmxvY2tpbmcpIHdpdGggS0VZUyBmYWxsYmFjaywgb3IgcmVnZXggZm9yIGluLW1lbW9yeS5cbiAgICovXG4gIGFzeW5jIGludmFsaWRhdGVQYXR0ZXJuKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZnAgPSB0aGlzLmZ1bGxLZXkocGF0dGVybik7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMucmVkaXMpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IHRoaXMucmVkaXMuc2NhblN0cmVhbVxuICAgICAgICAgID8gYXdhaXQgdGhpcy5zY2FuS2V5cyhmcClcbiAgICAgICAgICA6IGF3YWl0IHRoaXMucmVkaXMua2V5cyhmcCk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJlZGlzLmRlbCguLi5rZXlzKTtcbiAgICAgICAgICB0aGlzLm1ldHJpY3MuaW52YWxpZGF0aW9ucyArPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5cy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIC8vIEluLW1lbW9yeSDigJQgbWF0Y2ggZ2xvYi1zdHlsZSBwYXR0ZXJuLiBFc2NhcGUgcmVnZXggbWV0YWNoYXJhY3RlcnMgZmlyc3RcbiAgICAgIC8vIHNvIGEgbGl0ZXJhbCBgLmAvYChgL2BbYCBpbiBhIGtleSBwcmVmaXggKGUuZy4gYG9yZzp2MS4yOipgKSBjYW4ndFxuICAgICAgLy8gb3Zlci1tYXRjaCBvciB0aHJvdyAoYSB0aHJvdyBoZXJlIGlzIHN3YWxsb3dlZCDihpIgbm90aGluZyBpbnZhbGlkYXRlZCDihpJcbiAgICAgIC8vIHN0YWxlIHJlYWRzKTsgb25seSBgKmAgaXMgdHJlYXRlZCBhcyBhIHdpbGRjYXJkLlxuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdeJyArIGZwLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJykucmVwbGFjZSgvXFxcXFxcKi9nLCAnLionKSArICckJyk7XG4gICAgICBsZXQgZGVsZXRlZCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLm1lbW9yeS5rZXlzKCkpIHtcbiAgICAgICAgaWYgKHJlZ2V4LnRlc3Qoa2V5KSkge1xuICAgICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShrZXkpO1xuICAgICAgICAgIGRlbGV0ZWQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5tZXRyaWNzLmludmFsaWRhdGlvbnMgKz0gZGVsZXRlZDtcbiAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqIENvbGxlY3Qga2V5cyB2aWEgUmVkaXMgU0NBTiAobm9uLWJsb2NraW5nIGFsdGVybmF0aXZlIHRvIEtFWVMpLiAqL1xuICBwcml2YXRlIHNjYW5LZXlzKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5yZWRpcyEuc2NhblN0cmVhbSEoeyBtYXRjaDogcGF0dGVybiwgY291bnQ6IDEwMCB9KTtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAoYmF0Y2g6IHN0cmluZ1tdKSA9PiBrZXlzLnB1c2goLi4uYmF0Y2gpKTtcbiAgICAgIHN0cmVhbS5vbmNlKCdlbmQnLCAoKSA9PiByZXNvbHZlKGtleXMpKTtcbiAgICAgIHN0cmVhbS5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG9yIGNvbXB1dGU6IHJldHVybnMgY2FjaGVkIHZhbHVlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNhbGxzIHRoZVxuICAgKiBmYWN0b3J5IGZ1bmN0aW9uLCBjYWNoZXMgdGhlIHJlc3VsdCwgYW5kIHJldHVybnMgaXQuXG4gICAqXG4gICAqIFNpbmdsZS1mbGlnaHQgLyBzdGFtcGVkZSBwcm90ZWN0aW9uOiB3aGVuIE4gY2FsbGVycyBtaXNzIGNvbmN1cnJlbnRseSBmb3JcbiAgICogdGhlIHNhbWUga2V5LCBvbmx5IE9ORSBgZmFjdG9yeSgpYCBydW5zIOKAlCB0aGUgcmVzdCBhd2FpdCBpdHMgc2hhcmVkIHByb21pc2UuXG4gICAqIFRoZSBpbi1mbGlnaHQgZW50cnkgaXMgY2xlYXJlZCBvbmNlIGl0IHNldHRsZXMgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSksIHNvIGFcbiAgICogZmFpbGVkIGZhY3RvcnkgZG9lc24ndCBwb2lzb24gbGF0ZXIgY2FsbHMuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBDYWNoZSBrZXlcbiAgICogQHBhcmFtIGZhY3RvcnkgLSBBc3luYyBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSB2YWx1ZSBvbiBjYWNoZSBtaXNzXG4gICAqIEBwYXJhbSB0dGxTZWNvbmRzIC0gT3B0aW9uYWwgVFRMIG92ZXJyaWRlXG4gICAqIEByZXR1cm5zIFRoZSBjYWNoZWQgb3IgY29tcHV0ZWQgdmFsdWVcbiAgICovXG4gIGFzeW5jIGdldE9yU2V0PFQ+KGtleTogc3RyaW5nLCBmYWN0b3J5OiAoKSA9PiBQcm9taXNlPFQ+LCB0dGxTZWNvbmRzPzogbnVtYmVyKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5nZXQ8VD4oa2V5KTtcbiAgICBpZiAoY2FjaGVkICE9PSBudWxsKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcbiAgICAvLyBDb2FsZXNjZSBjb25jdXJyZW50IGNvbGQgY2FsbGVycyBvbnRvIGEgc2luZ2xlIGZhY3RvcnkoKSBpbnZvY2F0aW9uLlxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5pbmZsaWdodC5nZXQoZmspO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nIGFzIFByb21pc2U8VD47XG5cbiAgICBjb25zdCBmbGlnaHQgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBmYWN0b3J5KCk7XG4gICAgICBhd2FpdCB0aGlzLnNldChrZXksIHZhbHVlLCB0dGxTZWNvbmRzKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KSgpO1xuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGZrLCBmbGlnaHQpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZmxpZ2h0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmluZmxpZ2h0LmRlbGV0ZShmayk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBlbnRyaWVzICh1c2VmdWwgZm9yIHRlc3RpbmcpLlxuICAgKi9cbiAgYXN5bmMgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMucmVkaXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW52YWxpZGF0ZVBhdHRlcm4oJyonKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZW1vcnkuY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ3VycmVudCBpbi1tZW1vcnkgY2FjaGUgc2l6ZSAoZm9yIGRpYWdub3N0aWNzKS4gKi9cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tZW1vcnkuc2l6ZTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlIHNlcnZpY2UgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHByZWZpeCAtIE5hbWVzcGFjZSBwcmVmaXggKGUuZy4sICdjb21wbGlhbmNlOicsICdwbHVnaW46JylcbiAqIEBwYXJhbSBkZWZhdWx0VHRsU2Vjb25kcyAtIERlZmF1bHQgVFRMIGluIHNlY29uZHMgKGRlZmF1bHQgMzAwID0gNSBtaW4pXG4gKiBAcGFyYW0gcmVkaXMgLSBPcHRpb25hbCBSZWRpcyBjbGllbnQgZm9yIGNyb3NzLXByb2Nlc3MgY2FjaGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FjaGVTZXJ2aWNlKFxuICBwcmVmaXg6IHN0cmluZyxcbiAgZGVmYXVsdFR0bFNlY29uZHMgPSAzMDAsXG4gIHJlZGlzPzogUmVkaXNDYWNoZUNsaWVudCxcbik6IENhY2hlU2VydmljZSB7XG4gIHJldHVybiBuZXcgQ2FjaGVTZXJ2aWNlKHsgcHJlZml4LCBkZWZhdWx0VHRsU2Vjb25kcywgcmVkaXMgfSk7XG59XG4iXX0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUEwQnRDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsVUFBVSxDQUFJLEtBQVE7SUFDN0IsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQU0sQ0FBQztJQUNoRCxDQUFDO0FBQ0gsQ0FBQztBQTBCRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ2YsTUFBTSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBQ3hEOzs7O09BSUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDdEMsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBUztJQUNuQixLQUFLLENBQW9CO0lBRTFDLDhEQUE4RDtJQUNyRCxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFckUsWUFBWSxNQUFtQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBVztRQUN6QixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUksR0FBVztRQUN0QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUFDLE9BQU8sSUFBSSxDQUFDO2dCQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQU0sQ0FBQztZQUM5QixDQUFDO1lBRUQsWUFBWTtZQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUFDLE9BQU8sSUFBSSxDQUFDO1lBQUMsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxzRUFBc0U7WUFDdEUseUVBQXlFO1lBQ3pFLHVFQUF1RTtZQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQix3RUFBd0U7WUFDeEUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBTSxDQUFDO1FBQ3RDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFJLEdBQVcsRUFBRSxLQUFRLEVBQUUsVUFBbUI7UUFDckQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFbkQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDM0QsT0FBTztZQUNULENBQUM7WUFFRCx3RUFBd0U7WUFDeEUsMEVBQTBFO1lBQzFFLDJFQUEyRTtZQUMzRSxxRUFBcUU7WUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNqRCxJQUFJLFFBQVE7b0JBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDbEIsS0FBSztnQkFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJO2FBQ25DLENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxpQ0FBaUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLG9DQUFvQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFlO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO29CQUNoQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDekIsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNyQixDQUFDO1lBRUQsMEVBQTBFO1lBQzFFLHFFQUFxRTtZQUNyRSx5RUFBeUU7WUFDekUsbURBQW1EO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDdkcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDO1lBQ3RDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsc0VBQXNFO0lBQzlELFFBQVEsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQU0sQ0FBQyxVQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUksR0FBVyxFQUFFLE9BQXlCLEVBQUUsVUFBbUI7UUFDM0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksTUFBTSxLQUFLLElBQUk7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUVuQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLHVFQUF1RTtRQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLFFBQVE7WUFBRSxPQUFPLFFBQXNCLENBQUM7UUFFNUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLG9FQUFvRTtZQUNwRSwwRUFBMEU7WUFDMUUsc0VBQXNFO1lBQ3RFLHlFQUF5RTtZQUN6RSx3RUFBd0U7WUFDeEUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sTUFBTSxDQUFDO1FBQ3RCLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxNQUFjLEVBQ2QsaUJBQWlCLEdBQUcsR0FBRyxFQUN2QixLQUF3QjtJQUV4QixPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIExpZ2h0d2VpZ2h0IGNhY2hpbmcgc2VydmljZSB3aXRoIFRUTCBzdXBwb3J0LlxuICpcbiAqIFR3byBpbXBsZW1lbnRhdGlvbnM6XG4gKiAtIEluLW1lbW9yeSAoZGVmYXVsdCk6IHRydWUtTFJVIE1hcCBjYWNoZSwgbm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzXG4gKiAtIFJlZGlzOiBXaGVuIGEgUmVkaXMgY2xpZW50IGlzIHByb3ZpZGVkLCB1c2VzIFJlZGlzIGZvciBjcm9zcy1wcm9jZXNzIGNhY2hpbmdcbiAqXG4gKiBEZXNpZ246XG4gKiAtIEFsbCBvcGVyYXRpb25zIGFyZSBmYWlsLXNhZmU6IGNhY2hlIG1pc3Nlcy9lcnJvcnMgcmV0dXJuIG51bGwsIG5ldmVyIHRocm93XG4gKiAtIEpTT04gc2VyaWFsaXphdGlvbiBmb3IgUmVkaXM7IHRoZSBpbi1tZW1vcnkgYmFja2VuZCBkZWVwLWNsb25lcyBvbiByZWFkIHNvXG4gKiAgIGJvdGggYmFja2VuZHMgcmV0dXJuIGFuIGluZGVwZW5kZW50IGNvcHkgKG11dGF0aW5nIGEgcmVzdWx0IGlzIGFsd2F5cyBzYWZlKVxuICogLSBgZ2V0T3JTZXRgIGlzIHNpbmdsZS1mbGlnaHQ6IGNvbmN1cnJlbnQgbWlzc2VzIHNoYXJlIG9uZSBmYWN0b3J5KCkgY2FsbFxuICogLSBLZXkgbmFtZXNwYWNlIHByZWZpeGluZyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gc2VydmljZXNcbiAqL1xuXG5cbi8qKlxuICogQ2FjaGUgZW50cnkgd2l0aCB2YWx1ZSBhbmQgZXhwaXJhdGlvbiB0aW1lLlxuICovXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeTxUPiB7XG4gIHZhbHVlOiBUO1xuICBleHBpcmVzQXQ6IG51bWJlcjsgLy8gVW5peCB0aW1lc3RhbXAgaW4gbXNcbn1cblxuLyoqXG4gKiBEZWVwLWNsb25lIGEgdmFsdWUgc28gdGhlIGluLW1lbW9yeSBiYWNrZW5kIGhhbmRzIGJhY2sgYW4gSU5ERVBFTkRFTlQgY29weSBvblxuICogZXZlcnkgcmVhZCDigJQgbWF0Y2hpbmcgdGhlIFJlZGlzIGJhY2tlbmQsIHdoaWNoIHJldHVybnMgYSBmcmVzaCBgSlNPTi5wYXJzZWBcbiAqIGNsb25lIGVhY2ggdGltZS4gV2l0aG91dCB0aGlzIHRoZSBpbi1tZW1vcnkgY2FjaGUgcmV0dXJucyB0aGUgc2FtZSBzdG9yZWRcbiAqIG9iamVjdCByZWZlcmVuY2UsIHNvIGEgY29uc3VtZXIgbXV0YXRpbmcgYSBcImNhY2hlZFwiIG9iamVjdCBzaWxlbnRseSBjb3JydXB0c1xuICogdGhlIHNoYXJlZCBjYWNoZSAoYSBmb290Z3VuIHRoYXQgb25seSBiaXRlcyB1bmRlciB0aGUgbWVtb3J5IGJhY2tlbmQpLlxuICpcbiAqIFByaW1pdGl2ZXMgYXJlIHJldHVybmVkIGFzLWlzLiBQcmVmZXJzIHRoZSBzdHJ1Y3R1cmVkLWNsb25lIGFsZ29yaXRobTsgZmFsbHNcbiAqIGJhY2sgdG8gYSBKU09OIHJvdW5kLXRyaXAgb24gb2xkZXIgcnVudGltZXMgb3IgZXhvdGljIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVWYWx1ZTxUPih2YWx1ZTogVCk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHZhbHVlO1xuICB0cnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpIGFzIFQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNaW5pbWFsIFJlZGlzLWxpa2UgY2xpZW50IGludGVyZmFjZSAoc3Vic2V0IG9mIGlvcmVkaXMpLlxuICogU2VydmljZXMgcGFzcyB0aGVpciBvd24gUmVkaXMgY2xpZW50IGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzQ2FjaGVDbGllbnQge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGRlbCguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAga2V5cyhwYXR0ZXJuOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgLyoqIFNDQU4tYmFzZWQgaXRlcmF0aW9uIChwcmVmZXJyZWQgb3ZlciBLRVlTIGZvciBwcm9kdWN0aW9uKS4gKi9cbiAgc2NhblN0cmVhbT8ob3B0aW9uczogeyBtYXRjaDogc3RyaW5nOyBjb3VudD86IG51bWJlciB9KTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlQ29uZmlnIHtcbiAgLyoqIEtleSBwcmVmaXggZm9yIG5hbWVzcGFjZSBpc29sYXRpb24gKGUuZy4sICdwbHVnaW46JywgJ2NvbXBsaWFuY2U6JykgKi9cbiAgcHJlZml4OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzICovXG4gIGRlZmF1bHRUdGxTZWNvbmRzOiBudW1iZXI7XG4gIC8qKiBNYXggZW50cmllcyBmb3IgaW4tbWVtb3J5IGNhY2hlIChkZWZhdWx0IDEwMDApICovXG4gIG1heEVudHJpZXM/OiBudW1iZXI7XG4gIC8qKiBPcHRpb25hbCBSZWRpcyBjbGllbnQg4oCUIHVzZXMgaW4tbWVtb3J5IGNhY2hlIGlmIG5vdCBwcm92aWRlZCAqL1xuICByZWRpcz86IFJlZGlzQ2FjaGVDbGllbnQ7XG59XG5cbi8qKlxuICogQ2FjaGUgc2VydmljZSB3aXRoIGdldC9zZXQvZGVsIG9wZXJhdGlvbnMgYW5kIGF1dG9tYXRpYyBUVEwgZXhwaXJ5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYWNoZSA9IG5ldyBDYWNoZVNlcnZpY2UoeyBwcmVmaXg6ICdwbHVnaW46JywgZGVmYXVsdFR0bFNlY29uZHM6IDMwMCB9KTtcbiAqXG4gKiAvLyBTZXQgd2l0aCBkZWZhdWx0IFRUTFxuICogYXdhaXQgY2FjaGUuc2V0KCdvcmcxMjM6bGlzdCcsIHBsdWdpbnMpO1xuICpcbiAqIC8vIEdldCAocmV0dXJucyBudWxsIG9uIG1pc3MpXG4gKiBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZS5nZXQ8UGx1Z2luW10+KCdvcmcxMjM6bGlzdCcpO1xuICpcbiAqIC8vIEludmFsaWRhdGVcbiAqIGF3YWl0IGNhY2hlLmRlbCgnb3JnMTIzOmxpc3QnKTtcbiAqXG4gKiAvLyBJbnZhbGlkYXRlIGJ5IHBhdHRlcm5cbiAqIGF3YWl0IGNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdvcmcxMjM6KicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIG1lbW9yeSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUVudHJ5PHVua25vd24+PigpO1xuICAvKipcbiAgICogSW4tZmxpZ2h0IGBnZXRPclNldGAgZmFjdG9yeSBwcm9taXNlcywga2V5ZWQgYnkgZnVsbCBjYWNoZSBrZXkuIENvYWxlc2Nlc1xuICAgKiBjb25jdXJyZW50IGNvbGQgY2FsbGVycyBvbnRvIGEgc2luZ2xlIGBmYWN0b3J5KClgIGludm9jYXRpb24gKHNpbmdsZS1mbGlnaHRcbiAgICogLyBzdGFtcGVkZSBwcm90ZWN0aW9uKTsgZW50cmllcyBhcmUgY2xlYXJlZCBvbmNlIHRoZSBwcm9taXNlIHNldHRsZXMuXG4gICAqL1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dW5rbm93bj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFR0bE1zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cmllczogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZGlzPzogUmVkaXNDYWNoZUNsaWVudDtcblxuICAvKiogQ2FjaGUgbWV0cmljcyDigJQgdHJhY2tzIGhpdHMsIG1pc3NlcywgYW5kIGludmFsaWRhdGlvbnMuICovXG4gIHJlYWRvbmx5IG1ldHJpY3MgPSB7IGhpdHM6IDAsIG1pc3NlczogMCwgc2V0czogMCwgaW52YWxpZGF0aW9uczogMCB9O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ2FjaGVDb25maWcpIHtcbiAgICB0aGlzLnByZWZpeCA9IGNvbmZpZy5wcmVmaXg7XG4gICAgdGhpcy5kZWZhdWx0VHRsTXMgPSBjb25maWcuZGVmYXVsdFR0bFNlY29uZHMgKiAxMDAwO1xuICAgIHRoaXMubWF4RW50cmllcyA9IGNvbmZpZy5tYXhFbnRyaWVzID8/IDEwMDA7XG4gICAgdGhpcy5yZWRpcyA9IGNvbmZpZy5yZWRpcztcbiAgfVxuXG4gIHByaXZhdGUgZnVsbEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucHJlZml4fSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgY2FjaGVkIHZhbHVlLiBSZXR1cm5zIG51bGwgb24gbWlzcyBvciBlcnJvci5cbiAgICpcbiAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIElOREVQRU5ERU5UIGRlZXAgY29weSDigJQgbXV0YXRpbmcgaXQgbmV2ZXIgYWZmZWN0c1xuICAgKiB0aGUgY2FjaGVkIGVudHJ5ICh0aGUgaW4tbWVtb3J5IGJhY2tlbmQgY2xvbmVzIG9uIHJlYWQgZm9yIHBhcml0eSB3aXRoXG4gICAqIFJlZGlzLCB3aGljaCByZXR1cm5zIGEgZnJlc2ggSlNPTiBjbG9uZSkuIENhbGxlcnMgbWF5IHN0aWxsIHRyZWF0IHJlc3VsdHMgYXNcbiAgICogaW1tdXRhYmxlLCBidXQgZG9pbmcgc28gaXMgbm8gbG9uZ2VyIGxvYWQtYmVhcmluZyBmb3IgY2FjaGUgaW50ZWdyaXR5LlxuICAgKi9cbiAgYXN5bmMgZ2V0PFQ+KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMucmVkaXMpIHtcbiAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgdGhpcy5yZWRpcy5nZXQoZmspO1xuICAgICAgICBpZiAoIXJhdykgeyB0aGlzLm1ldHJpY3MubWlzc2VzKys7IHJldHVybiBudWxsOyB9XG4gICAgICAgIHRoaXMubWV0cmljcy5oaXRzKys7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdykgYXMgVDtcbiAgICAgIH1cblxuICAgICAgLy8gSW4tbWVtb3J5XG4gICAgICBjb25zdCBlbnRyeSA9IHRoaXMubWVtb3J5LmdldChmayk7XG4gICAgICBpZiAoIWVudHJ5KSB7IHRoaXMubWV0cmljcy5taXNzZXMrKzsgcmV0dXJuIG51bGw7IH1cbiAgICAgIGlmIChEYXRlLm5vdygpID4gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICAgIHRoaXMubWV0cmljcy5taXNzZXMrKztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyBMUlUgdG91Y2g6IGRlbGV0ZSArIHJlLWluc2VydCBtb3ZlcyB0aGlzIGtleSB0byB0aGUgbmV3ZXN0IHBvc2l0aW9uXG4gICAgICAvLyAoTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIpLCBzbyBgc2V0YCdzIG9sZGVzdC1maXJzdCBldmljdGlvbiBpcyBhXG4gICAgICAvLyB0cnVlIGxlYXN0LXJlY2VudGx5LVVTRUQgZXZpY3Rpb24gcmF0aGVyIHRoYW4gZmlyc3QtaW5zZXJ0ZWQgKEZJRk8pLlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIHRoaXMubWVtb3J5LnNldChmaywgZW50cnkpO1xuICAgICAgdGhpcy5tZXRyaWNzLmhpdHMrKztcbiAgICAgIC8vIENsb25lIHNvIGEgY2FsbGVyIG11dGF0aW5nIHRoZSByZXN1bHQgY2FuJ3QgY29ycnVwdCB0aGUgc2hhcmVkIGVudHJ5LlxuICAgICAgcmV0dXJuIGNsb25lVmFsdWUoZW50cnkudmFsdWUpIGFzIFQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm1ldHJpY3MubWlzc2VzKys7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgY2FjaGVkIHZhbHVlIHdpdGggb3B0aW9uYWwgVFRMIG92ZXJyaWRlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gQ2FjaGUga2V5IChwcmVmaXggaXMgYWRkZWQgYXV0b21hdGljYWxseSlcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2FjaGUgKG11c3QgYmUgSlNPTi1zZXJpYWxpemFibGUgZm9yIFJlZGlzKVxuICAgKiBAcGFyYW0gdHRsU2Vjb25kcyAtIFRUTCBvdmVycmlkZSAodXNlcyBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZClcbiAgICovXG4gIGFzeW5jIHNldDxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQsIHR0bFNlY29uZHM/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmayA9IHRoaXMuZnVsbEtleShrZXkpO1xuICAgIGNvbnN0IHR0bCA9IHR0bFNlY29uZHMgPz8gdGhpcy5kZWZhdWx0VHRsTXMgLyAxMDAwO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubWV0cmljcy5zZXRzKys7XG4gICAgICBpZiAodGhpcy5yZWRpcykge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZGlzLnNldChmaywgSlNPTi5zdHJpbmdpZnkodmFsdWUpLCAnRVgnLCB0dGwpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEluLW1lbW9yeSDigJQgYSB3cml0ZSBjb3VudHMgYXMgYSB1c2UsIHNvIGRyb3AgYW55IGV4aXN0aW5nIGVudHJ5IGZpcnN0XG4gICAgICAvLyBhbmQgcmUtaW5zZXJ0IGJlbG93IGFzIHRoZSBuZXdlc3QgKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKS4gVGhpc1xuICAgICAgLy8ga2VlcHMgdGhlIE1hcCBvcmRlcmVkIG9sZGVzdC1VU0VEIOKGkiBuZXdlc3QtVVNFRCBzbyB0aGUgZXZpY3Rpb24gYmVsb3cgaXNcbiAgICAgIC8vIHRydWUgTFJVLCBhbmQgYXZvaWRzIGV2aWN0aW5nIGEgdmljdGltIHdoZW4gbWVyZWx5IHVwZGF0aW5nIGEga2V5LlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIGlmICh0aGlzLm1lbW9yeS5zaXplID49IHRoaXMubWF4RW50cmllcykge1xuICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMubWVtb3J5LmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgIGlmIChmaXJzdEtleSkgdGhpcy5tZW1vcnkuZGVsZXRlKGZpcnN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZW1vcnkuc2V0KGZrLCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGwgKiAxMDAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDYWNoZSBzZXQgZmFpbHVyZSBpcyBub24tZmF0YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgY2FjaGVkIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgZGVsKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5yZWRpcykge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZGlzLmRlbChmayk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDYWNoZSBkZWxldGUgZmFpbHVyZSBpcyBub24tZmF0YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW52YWxpZGF0ZSBhbGwga2V5cyBtYXRjaGluZyBhIHBhdHRlcm4gKGUuZy4sICdvcmcxMjM6KicpLlxuICAgKiBVc2VzIFNDQU4gZm9yIFJlZGlzIChub24tYmxvY2tpbmcpIHdpdGggS0VZUyBmYWxsYmFjaywgb3IgcmVnZXggZm9yIGluLW1lbW9yeS5cbiAgICovXG4gIGFzeW5jIGludmFsaWRhdGVQYXR0ZXJuKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZnAgPSB0aGlzLmZ1bGxLZXkocGF0dGVybik7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMucmVkaXMpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IHRoaXMucmVkaXMuc2NhblN0cmVhbVxuICAgICAgICAgID8gYXdhaXQgdGhpcy5zY2FuS2V5cyhmcClcbiAgICAgICAgICA6IGF3YWl0IHRoaXMucmVkaXMua2V5cyhmcCk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJlZGlzLmRlbCguLi5rZXlzKTtcbiAgICAgICAgICB0aGlzLm1ldHJpY3MuaW52YWxpZGF0aW9ucyArPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5cy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIC8vIEluLW1lbW9yeSDigJQgbWF0Y2ggZ2xvYi1zdHlsZSBwYXR0ZXJuLiBFc2NhcGUgcmVnZXggbWV0YWNoYXJhY3RlcnMgZmlyc3RcbiAgICAgIC8vIHNvIGEgbGl0ZXJhbCBgLmAvYChgL2BbYCBpbiBhIGtleSBwcmVmaXggKGUuZy4gYG9yZzp2MS4yOipgKSBjYW4ndFxuICAgICAgLy8gb3Zlci1tYXRjaCBvciB0aHJvdyAoYSB0aHJvdyBoZXJlIGlzIHN3YWxsb3dlZCDihpIgbm90aGluZyBpbnZhbGlkYXRlZCDihpJcbiAgICAgIC8vIHN0YWxlIHJlYWRzKTsgb25seSBgKmAgaXMgdHJlYXRlZCBhcyBhIHdpbGRjYXJkLlxuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdeJyArIGZwLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJykucmVwbGFjZSgvXFxcXFxcKi9nLCAnLionKSArICckJyk7XG4gICAgICBsZXQgZGVsZXRlZCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLm1lbW9yeS5rZXlzKCkpIHtcbiAgICAgICAgaWYgKHJlZ2V4LnRlc3Qoa2V5KSkge1xuICAgICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShrZXkpO1xuICAgICAgICAgIGRlbGV0ZWQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5tZXRyaWNzLmludmFsaWRhdGlvbnMgKz0gZGVsZXRlZDtcbiAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqIENvbGxlY3Qga2V5cyB2aWEgUmVkaXMgU0NBTiAobm9uLWJsb2NraW5nIGFsdGVybmF0aXZlIHRvIEtFWVMpLiAqL1xuICBwcml2YXRlIHNjYW5LZXlzKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5yZWRpcyEuc2NhblN0cmVhbSEoeyBtYXRjaDogcGF0dGVybiwgY291bnQ6IDEwMCB9KTtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAoYmF0Y2g6IHN0cmluZ1tdKSA9PiBrZXlzLnB1c2goLi4uYmF0Y2gpKTtcbiAgICAgIHN0cmVhbS5vbmNlKCdlbmQnLCAoKSA9PiByZXNvbHZlKGtleXMpKTtcbiAgICAgIHN0cmVhbS5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG9yIGNvbXB1dGU6IHJldHVybnMgY2FjaGVkIHZhbHVlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNhbGxzIHRoZVxuICAgKiBmYWN0b3J5IGZ1bmN0aW9uLCBjYWNoZXMgdGhlIHJlc3VsdCwgYW5kIHJldHVybnMgaXQuXG4gICAqXG4gICAqIFNpbmdsZS1mbGlnaHQgLyBzdGFtcGVkZSBwcm90ZWN0aW9uOiB3aGVuIE4gY2FsbGVycyBtaXNzIGNvbmN1cnJlbnRseSBmb3JcbiAgICogdGhlIHNhbWUga2V5LCBvbmx5IE9ORSBgZmFjdG9yeSgpYCBydW5zIOKAlCB0aGUgcmVzdCBhd2FpdCBpdHMgc2hhcmVkIHByb21pc2UuXG4gICAqIFRoZSBpbi1mbGlnaHQgZW50cnkgaXMgY2xlYXJlZCBvbmNlIGl0IHNldHRsZXMgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSksIHNvIGFcbiAgICogZmFpbGVkIGZhY3RvcnkgZG9lc24ndCBwb2lzb24gbGF0ZXIgY2FsbHMuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBDYWNoZSBrZXlcbiAgICogQHBhcmFtIGZhY3RvcnkgLSBBc3luYyBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSB2YWx1ZSBvbiBjYWNoZSBtaXNzXG4gICAqIEBwYXJhbSB0dGxTZWNvbmRzIC0gT3B0aW9uYWwgVFRMIG92ZXJyaWRlXG4gICAqIEByZXR1cm5zIFRoZSBjYWNoZWQgb3IgY29tcHV0ZWQgdmFsdWVcbiAgICovXG4gIGFzeW5jIGdldE9yU2V0PFQ+KGtleTogc3RyaW5nLCBmYWN0b3J5OiAoKSA9PiBQcm9taXNlPFQ+LCB0dGxTZWNvbmRzPzogbnVtYmVyKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5nZXQ8VD4oa2V5KTtcbiAgICBpZiAoY2FjaGVkICE9PSBudWxsKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcbiAgICAvLyBDb2FsZXNjZSBjb25jdXJyZW50IGNvbGQgY2FsbGVycyBvbnRvIGEgc2luZ2xlIGZhY3RvcnkoKSBpbnZvY2F0aW9uLlxuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5pbmZsaWdodC5nZXQoZmspO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nIGFzIFByb21pc2U8VD47XG5cbiAgICBjb25zdCBmbGlnaHQgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBmYWN0b3J5KCk7XG4gICAgICBhd2FpdCB0aGlzLnNldChrZXksIHZhbHVlLCB0dGxTZWNvbmRzKTtcbiAgICAgIC8vIEhhbmQgY2FsbGVycyBhbiBJTkRFUEVOREVOVCBjbG9uZSwgbWF0Y2hpbmcgZ2V0KCkncyBjbG9uZS1vbi1yZWFkXG4gICAgICAvLyBjb250cmFjdC4gV2l0aG91dCB0aGlzIHRoZSBmaXJzdCBjYWxsZXIgKGFuZCBldmVyeSBjb2FsZXNjZWQgY29uY3VycmVudFxuICAgICAgLy8gY2FsbGVyKSB3b3VsZCBnZXQgYSBtdXRhYmxlIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBvYmplY3QgdGhlIG1lbW9yeVxuICAgICAgLy8gYmFja2VuZCBqdXN0IHN0b3JlZCwgc28gbXV0YXRpbmcgdGhlIHJlc3VsdCBjb3JydXB0cyB0aGUgY2FjaGVkIGVudHJ5LlxuICAgICAgLy8gVGhlIHJlZGlzIGJhY2tlbmQgaXMgdW5hZmZlY3RlZCAoc2V0IHNlcmlhbGl6ZXMgYW5kIGdldCBKU09OLnBhcnNlcykuXG4gICAgICByZXR1cm4gY2xvbmVWYWx1ZSh2YWx1ZSk7XG4gICAgfSkoKTtcbiAgICB0aGlzLmluZmxpZ2h0LnNldChmaywgZmxpZ2h0KTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZsaWdodDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pbmZsaWdodC5kZWxldGUoZmspO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgZW50cmllcyAodXNlZnVsIGZvciB0ZXN0aW5nKS5cbiAgICovXG4gIGFzeW5jIGNsZWFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnJlZGlzKSB7XG4gICAgICBhd2FpdCB0aGlzLmludmFsaWRhdGVQYXR0ZXJuKCcqJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVtb3J5LmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEN1cnJlbnQgaW4tbWVtb3J5IGNhY2hlIHNpemUgKGZvciBkaWFnbm9zdGljcykuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5LnNpemU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZSBzZXJ2aWNlIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSBwcmVmaXggLSBOYW1lc3BhY2UgcHJlZml4IChlLmcuLCAnY29tcGxpYW5jZTonLCAncGx1Z2luOicpXG4gKiBAcGFyYW0gZGVmYXVsdFR0bFNlY29uZHMgLSBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzIChkZWZhdWx0IDMwMCA9IDUgbWluKVxuICogQHBhcmFtIHJlZGlzIC0gT3B0aW9uYWwgUmVkaXMgY2xpZW50IGZvciBjcm9zcy1wcm9jZXNzIGNhY2hpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNhY2hlU2VydmljZShcbiAgcHJlZml4OiBzdHJpbmcsXG4gIGRlZmF1bHRUdGxTZWNvbmRzID0gMzAwLFxuICByZWRpcz86IFJlZGlzQ2FjaGVDbGllbnQsXG4pOiBDYWNoZVNlcnZpY2Uge1xuICByZXR1cm4gbmV3IENhY2hlU2VydmljZSh7IHByZWZpeCwgZGVmYXVsdFR0bFNlY29uZHMsIHJlZGlzIH0pO1xufVxuIl19
|
package/lib/types/common.d.ts
CHANGED
|
@@ -48,26 +48,6 @@ export declare const VALID_QUOTA_TYPES: readonly ["plugins", "pipelines", "apiCa
|
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
50
|
export declare function isValidQuotaType(value: unknown): value is QuotaType;
|
|
51
|
-
/**
|
|
52
|
-
* Validate and assert that a value is a valid QuotaType.
|
|
53
|
-
* Throws an error if validation fails.
|
|
54
|
-
*
|
|
55
|
-
* @param value - Value to validate
|
|
56
|
-
* @param fieldName - Name of the field being validated (for error messages)
|
|
57
|
-
* @returns The validated QuotaType
|
|
58
|
-
* @throws Error if value is not a valid QuotaType
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* try {
|
|
63
|
-
* const quotaType = validateQuotaType(req.body.quotaType, 'quotaType');
|
|
64
|
-
* // Use quotaType safely
|
|
65
|
-
* } catch (err) {
|
|
66
|
-
* return sendError(res, 400, err.message);
|
|
67
|
-
* }
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
export declare function validateQuotaType(value: unknown, fieldName?: string): QuotaType;
|
|
71
51
|
/**
|
|
72
52
|
* Result from quota check operation.
|
|
73
53
|
*/
|
package/lib/types/common.js
CHANGED
|
@@ -23,31 +23,6 @@ export const VALID_QUOTA_TYPES = [
|
|
|
23
23
|
export function isValidQuotaType(value) {
|
|
24
24
|
return typeof value === 'string' && VALID_QUOTA_TYPES.includes(value);
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Validate and assert that a value is a valid QuotaType.
|
|
28
|
-
* Throws an error if validation fails.
|
|
29
|
-
*
|
|
30
|
-
* @param value - Value to validate
|
|
31
|
-
* @param fieldName - Name of the field being validated (for error messages)
|
|
32
|
-
* @returns The validated QuotaType
|
|
33
|
-
* @throws Error if value is not a valid QuotaType
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* ```typescript
|
|
37
|
-
* try {
|
|
38
|
-
* const quotaType = validateQuotaType(req.body.quotaType, 'quotaType');
|
|
39
|
-
* // Use quotaType safely
|
|
40
|
-
* } catch (err) {
|
|
41
|
-
* return sendError(res, 400, err.message);
|
|
42
|
-
* }
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export function validateQuotaType(value, fieldName = 'quotaType') {
|
|
46
|
-
if (!isValidQuotaType(value)) {
|
|
47
|
-
throw new Error(`Invalid ${fieldName}: "${value}". Must be one of: ${VALID_QUOTA_TYPES.join(', ')}`);
|
|
48
|
-
}
|
|
49
|
-
return value;
|
|
50
|
-
}
|
|
51
26
|
/**
|
|
52
27
|
* The account boundary (root org) for a token's active org.
|
|
53
28
|
*
|
|
@@ -63,4 +38,4 @@ export function validateQuotaType(value, fieldName = 'quotaType') {
|
|
|
63
38
|
export function effectiveRootOrgId(payload) {
|
|
64
39
|
return payload.rootOrganizationId ?? payload.organizationId;
|
|
65
40
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBMEN0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjO0lBQzdELFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsWUFBWTtDQUNyRCxDQUFDO0FBRVg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQWtCLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjLEVBQUUsU0FBUyxHQUFHLFdBQVc7SUFDdkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLFNBQVMsTUFBTSxLQUFLLHNCQUFzQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDcEYsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUEwS0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQWtFO0lBRWxFLE9BQU8sT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb25zLmpzJztcbmltcG9ydCB0eXBlIHsgUXVvdGFUaWVyIH0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5cbi8qKlxuICogQ2FwYWJpbGl0eSBzY29wZSBjYXRhbG9nIGZvciBtYWNoaW5lL2F1dG9tYXRpb24gdG9rZW5zLiBBIHNjb3BlZCB0b2tlbiBjYXJyaWVzXG4gKiBleGFjdGx5IG9uZSBvZiB0aGVzZSBpbnN0ZWFkIG9mIHJvbGUtYmFzZWQgcGVybWlzc2lvbnM7IGVuZHBvaW50cyB0aGF0IGFjY2VwdCBhXG4gKiBzY29wZWQgaWRlbnRpdHkgY2hlY2sgaXQgdmlhIGBoYXNTY29wZWAuIEtlcHQgYSBjbG9zZWQgdW5pb24gKG1pcnJvcmluZ1xuICoge0BsaW5rIFBlcm1pc3Npb259KSBzbyBhIHR5cG8gb24gZWl0aGVyIHRoZSBtaW50IG9yIHRoZSBjaGVjayBzaWRlIGlzIGEgY29tcGlsZVxuICogZXJyb3IuIEFkZCBhIHZhbHVlIGhlcmUgd2hlbiBpbnRyb2R1Y2luZyBhIG5ldyBzY29wZWQtdG9rZW4gc3VyZmFjZS5cbiAqL1xuZXhwb3J0IHR5cGUgVG9rZW5TY29wZSA9ICdyZXBvcnRpbmc6aW5nZXN0JztcblxuLyoqXG4gKiBRdW90YSB0eXBlIGlkZW50aWZpZXJzLlxuICpcbiAqIC0gYHBsdWdpbnNgIC8gYHBpcGVsaW5lc2Ag4oCUIGNvdW50IG9mIGNyZWF0ZWQgZW50aXRpZXNcbiAqIC0gYGFwaUNhbGxzYCDigJQgZ2VuZXJpYyBBUEkgY2FsbCBjb3VudCAocmVhZC1oZWF2eSBwYXRocylcbiAqIC0gYGFpQ2FsbHNgIOKAlCBBSSBwcm92aWRlciBpbnZvY2F0aW9ucyAoY291bnRlZCBzZXBhcmF0ZWx5IGJlY2F1c2UgZWFjaCBjYWxsXG4gKiAgIGhhcyBleHRlcm5hbCBkb2xsYXIgY29zdDsgc2l6ZWQgc21hbGxlciB0aGFuIGFwaUNhbGxzIHBlciB0aWVyKVxuICogLSBgc3RvcmFnZUJ5dGVzYCDigJQgcmVnaXN0cnkgc3RvcmFnZSBidWRnZXQgcGVyIG9yZy4gVW5saWtlIHRoZSBvdGhlcnNcbiAqICAgKHdoaWNoIGNvdW50IGRpc2NyZXRlIGV2ZW50cyksIHRoaXMgaXMgYSBtZWFzdXJlZCB0b3RhbCByZWNvbXB1dGVkXG4gKiAgIG9uIGRlbWFuZC4gSW5jcmVtZW50ZWQgYnkgdGhlIGltYWdlLXJlZ2lzdHJ5J3MgcHVzaC1nYXRlIGJlZm9yZVxuICogICBpc3N1aW5nIGEgdG9rZW4gd2hvc2Ugc2NvcGUgaW5jbHVkZXMgYHB1c2hgOyB0aGUgR0Mgc2NoZWR1bGVyXG4gKiAgIGV2ZW50dWFsbHkgZnJlZXMgdGhlIGJ5dGVzLCB0aGVuIHRoZSBuZXh0IHB1c2gtZ2F0ZSBjaGVjayByZWFkc1xuICogICB0aGUgbG93ZXIgdmFsdWUuIE5PVCBhIGNvdW50ZXItc3R5bGUgcXVvdGEgaW4gdGhlIHNlbnNlIG9mXG4gKiAgIGBpbmNyZW1lbnRVc2FnZWAg4oCUIHRoZSByZWdpc3RyeSBwdXNoZXMgdGhlIG1lYXN1cmVkIHRvdGFsIHZpYVxuICogICBgdXBkYXRlTGltaXRzYC9gcmVzZXRVc2FnZWAgZmxvd3MuIFRpZXIgbGltaXRzIGFyZSBieXRlcy5cbiAqIC0gYGRhc2hib2FyZHNgIC8gYGFsZXJ0UnVsZXNgIC8gYGFsZXJ0RGVzdGluYXRpb25zYCAvIGBpZHBDb25maWdzYCDigJRcbiAqICAgcmVzb3VyY2UtY291bnQgcXVvdGFzIGFkZGVkIHRvIGNsb3NlIHBlci1vcmcgRG9TIHN1cmZhY2VzIGluIHRoZVxuICogICB1c2VyLWVkaXRhYmxlIGZlYXR1cmUgdGFibGVzLiBXaXRob3V0IHRoZXNlIGNhcHMgYSBzaW5nbGUgb3JnIGNvdWxkXG4gKiAgIHNwYW0gdGhvdXNhbmRzIG9mIGRhc2hib2FyZHMgLyBydWxlcyBhbmQgYmxvYXQgdGhlIHNoYXJlZCBQb3N0Z3JlcyAvXG4gKiAgIE1vbmdvIHdvcmtpbmcgc2V0cy4gQ291bnRlZCBhdCBjcmVhdGUgdGltZTsgZGVjcmVtZW50ZWQgb24gZGVsZXRlLlxuICovXG4vLyBOT1RFOiBgc2VhdHNgIGlzIGludGVudGlvbmFsbHkgTk9UIGhlcmUuIEl0J3MgYSB0aWVyIGxpbWl0IChRdW90YVRpZXJMaW1pdHMpXG4vLyBlbmZvcmNlZCBieSBjb21wYXJpbmcgdGhlIG9yZydzIExJVkUgbWVtYmVyIGNvdW50IGF0IGludml0ZSB0aW1lIOKAlCBub3QgYW5cbi8vIGluY3JlbWVudGluZyBwZXItcGVyaW9kIGNvdW50ZXIgbGlrZSB0aGUgY29uc3VtYWJsZSBxdW90YXMgYmVsb3cuXG5leHBvcnQgdHlwZSBRdW90YVR5cGUgPVxuICB8ICdwbHVnaW5zJyB8ICdwaXBlbGluZXMnIHwgJ2FwaUNhbGxzJyB8ICdhaUNhbGxzJyB8ICdzdG9yYWdlQnl0ZXMnXG4gIHwgJ2Rhc2hib2FyZHMnIHwgJ2FsZXJ0UnVsZXMnIHwgJ2FsZXJ0RGVzdGluYXRpb25zJyB8ICdpZHBDb25maWdzJztcblxuLyoqXG4gKiBWYWxpZCBxdW90YSB0eXBlIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFZBTElEX1FVT1RBX1RZUEVTID0gW1xuICAncGx1Z2lucycsICdwaXBlbGluZXMnLCAnYXBpQ2FsbHMnLCAnYWlDYWxscycsICdzdG9yYWdlQnl0ZXMnLFxuICAnZGFzaGJvYXJkcycsICdhbGVydFJ1bGVzJywgJ2FsZXJ0RGVzdGluYXRpb25zJywgJ2lkcENvbmZpZ3MnLFxuXSBhcyBjb25zdDtcblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBRdW90YVR5cGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIFRydWUgaWYgdmFsdWUgaXMgYSB2YWxpZCBRdW90YVR5cGVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaWYgKGlzVmFsaWRRdW90YVR5cGUocmVxLmJvZHkucXVvdGFUeXBlKSkge1xuICogICAvLyBxdW90YVR5cGUgaXMgZ3VhcmFudGVlZCB0byBiZSBRdW90YVR5cGVcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFF1b3RhVHlwZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFF1b3RhVHlwZSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIFZBTElEX1FVT1RBX1RZUEVTLmluY2x1ZGVzKHZhbHVlIGFzIFF1b3RhVHlwZSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIGFzc2VydCB0aGF0IGEgdmFsdWUgaXMgYSB2YWxpZCBRdW90YVR5cGUuXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlscy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byB2YWxpZGF0ZVxuICogQHBhcmFtIGZpZWxkTmFtZSAtIE5hbWUgb2YgdGhlIGZpZWxkIGJlaW5nIHZhbGlkYXRlZCAoZm9yIGVycm9yIG1lc3NhZ2VzKVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBRdW90YVR5cGVcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsdWUgaXMgbm90IGEgdmFsaWQgUXVvdGFUeXBlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRyeSB7XG4gKiAgIGNvbnN0IHF1b3RhVHlwZSA9IHZhbGlkYXRlUXVvdGFUeXBlKHJlcS5ib2R5LnF1b3RhVHlwZSwgJ3F1b3RhVHlwZScpO1xuICogICAvLyBVc2UgcXVvdGFUeXBlIHNhZmVseVxuICogfSBjYXRjaCAoZXJyKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsIGVyci5tZXNzYWdlKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVRdW90YVR5cGUodmFsdWU6IHVua25vd24sIGZpZWxkTmFtZSA9ICdxdW90YVR5cGUnKTogUXVvdGFUeXBlIHtcbiAgaWYgKCFpc1ZhbGlkUXVvdGFUeXBlKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkICR7ZmllbGROYW1lfTogXCIke3ZhbHVlfVwiLiBNdXN0IGJlIG9uZSBvZjogJHtWQUxJRF9RVU9UQV9UWVBFUy5qb2luKCcsICcpfWAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogUmVzdWx0IGZyb20gcXVvdGEgY2hlY2sgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1b3RhQ2hlY2tSZXN1bHQge1xuICAvKiogV2hldGhlciB0aGUgcmVxdWVzdCBpcyBhbGxvd2VkICovXG4gIGFsbG93ZWQ6IGJvb2xlYW47XG4gIC8qKiBNYXhpbXVtIHF1b3RhIGxpbWl0ICgtMSBmb3IgdW5saW1pdGVkKSAqL1xuICBsaW1pdDogbnVtYmVyO1xuICAvKiogQ3VycmVudCB1c2FnZSBjb3VudCAqL1xuICB1c2VkOiBudW1iZXI7XG4gIC8qKiBSZW1haW5pbmcgcXVvdGEgKC0xIGZvciB1bmxpbWl0ZWQpICovXG4gIHJlbWFpbmluZzogbnVtYmVyO1xuICAvKiogSVNPIHRpbWVzdGFtcCB3aGVuIHF1b3RhIHJlc2V0cyAqL1xuICByZXNldEF0OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHF1b3RhIGlzIHVubGltaXRlZCAqL1xuICB1bmxpbWl0ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIE9OTFkgd2hlbiB0aGlzIHJlc3VsdCBpcyB0aGUgZmFpbC1vcGVuIHNlbnRpbmVsIHJldHVybmVkIGJlY2F1c2UgdGhlXG4gICAqIHF1b3RhIHNlcnZpY2Ugd2FzIHVucmVhY2hhYmxlIC8gcmV0dXJuZWQgbm9uLW9rIChub3QgYSByZWFsIHF1b3RhIHJlYWRpbmcpLlxuICAgKiBMZXRzIGZhaWwtY2xvc2VkIGNhbGxlcnMgKGUuZy4gdGhlIHJlZ2lzdHJ5IHN0b3JhZ2UgcHVzaC1nYXRlKSBkaXN0aW5ndWlzaFxuICAgKiBhbiBvdXRhZ2UgZnJvbSBhIGdlbnVpbmUgYGxpbWl0OiAtMWAgKHVubGltaXRlZCkgb3JnLiBBYnNlbnQgb24gcmVhbCByZXN1bHRzLlxuICAgKi9cbiAgZmFpbE9wZW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFF1b3RhIGluZm9ybWF0aW9uIGZvciBlcnJvciByZXNwb25zZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGFJbmZvIHtcbiAgdHlwZTogUXVvdGFUeXBlO1xuICBsaW1pdDogbnVtYmVyO1xuICB1c2VkOiBudW1iZXI7XG4gIHJlbWFpbmluZzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkIEFQSSBzdWNjZXNzIHJlc3BvbnNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaVN1Y2Nlc3NSZXNwb25zZTxUID0gdW5rbm93bj4ge1xuICBzdWNjZXNzOiB0cnVlO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIGRhdGE/OiBUO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkIEFQSSBlcnJvciByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlFcnJvclJlc3BvbnNlIHtcbiAgc3VjY2VzczogZmFsc2U7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBjb2RlPzogc3RyaW5nO1xuICBkZXRhaWxzPzogdW5rbm93bjtcbiAgcXVvdGE/OiBRdW90YUluZm87XG59XG5cbi8qKlxuICogQ29tYmluZWQgQVBJIHJlc3BvbnNlIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIEFwaVJlc3BvbnNlPFQgPSB1bmtub3duPiA9IEFwaVN1Y2Nlc3NSZXNwb25zZTxUPiB8IEFwaUVycm9yUmVzcG9uc2U7XG5cbi8qKlxuICogSldUIHBheWxvYWQgZnJvbSBhY2Nlc3MgdG9rZW5zLlxuICpcbiAqIFVzZXJzIGNhbiBiZWxvbmcgdG8gbXVsdGlwbGUgb3JnYW5pemF0aW9ucy4gVGhlIHRva2VuIGlzIHNjb3BlZCB0byBvbmVcbiAqIGFjdGl2ZSBvcmdhbml6YXRpb24gYXQgYSB0aW1lLiBUaGUgYHJvbGVgIGZpZWxkIGlzIHRoZSB1c2VyJ3MgcGVyLW9yZ1xuICogcm9sZSBpbiB0aGF0IG9yZ2FuaXphdGlvbiAoZnJvbSB0aGUgVXNlck9yZ2FuaXphdGlvbiBqdW5jdGlvbiBjb2xsZWN0aW9uKSxcbiAqIGFuZCBgaXNBZG1pbmAgaXMgZGVyaXZlZCBhcyBgcm9sZSA9PT0gJ2FkbWluJyB8fCByb2xlID09PSAnb3duZXInYC5cbiAqXG4gKiBVc2UgYFBPU1QgL2F1dGgvc3dpdGNoLW9yZ2AgdG8gY2hhbmdlIHRoZSBhY3RpdmUgb3JnYW5pemF0aW9uLCB3aGljaFxuICogcmUtaXNzdWVzIHRva2VucyB3aXRoIHRoZSBuZXcgb3JnJ3Mgcm9sZSBhbmQgY29udGV4dC5cbiAqL1xuLyoqXG4gKiBDb2Fyc2UgcGVyLW9yZyBtZW1iZXJzaGlwIGxhYmVsLCBERVJJVkVEIGZyb20gdGhlIFJvbGVzIGEgdXNlciBpcyBhc3NpZ25lZFxuICogKHRoZSBoaWdoZXN0IGBncmFudHNSb2xlYCBhbW9uZyB0aGVtOyBgb3duZXJgIGlzIHNldCBvbmx5IGJ5IG93bmVyc2hpcFxuICogdHJhbnNmZXIpLiBJdCBpcyBhIGRpc3BsYXkvYXV0aG9yaXR5IGxhYmVsIOKAlCBkcml2aW5nIGBpc0FkbWluYCwgb3duZXJzaGlwLFxuICogYW5kIHNlYXQgYWNjb3VudGluZyDigJQgTk9UIGEgcGVybWlzc2lvbiBzb3VyY2UuIEVmZmVjdGl2ZSBwZXJtaXNzaW9ucyBjb21lXG4gKiBzb2xlbHkgZnJvbSB0aGUgdXNlcidzIGFzc2lnbmVkIFJvbGVzIChzZWUgYHJlc29sdmVVc2VyUGVybWlzc2lvbnNgKS4gTm90IGFcbiAqIGdsb2JhbCByb2xlLlxuICovXG5leHBvcnQgdHlwZSBPcmdSb2xlID0gJ293bmVyJyB8ICdhZG1pbicgfCAnbWVtYmVyJztcblxuZXhwb3J0IGludGVyZmFjZSBKd3RQYXlsb2FkIHtcbiAgLyoqIFVzZXIgSUQgKHN1YmplY3QpICovXG4gIHN1Yjogc3RyaW5nO1xuICAvKiogVXNlcm5hbWUgKi9cbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgLyoqIFVzZXIgZW1haWwgKi9cbiAgZW1haWw6IHN0cmluZztcbiAgLyoqIFBlci1vcmcgcm9sZSBpbiB0aGUgYWN0aXZlIG9yZ2FuaXphdGlvbiAoJ293bmVyJyB8ICdhZG1pbicgfCAnbWVtYmVyJykuIE5vdCBhIGdsb2JhbCByb2xlLiAqL1xuICByb2xlOiBPcmdSb2xlO1xuICAvKiogRGVyaXZlZDogdHJ1ZSB3aGVuIHJvbGUgaXMgJ2FkbWluJyBvciAnb3duZXInIGluIHRoZSBhY3RpdmUgb3JnYW5pemF0aW9uICovXG4gIGlzQWRtaW4/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVzb2x2ZWQgZmluZS1ncmFpbmVkIHBlcm1pc3Npb25zIGZvciB0aGUgYWN0aXZlIG9yZy90ZWFtIOKAlCB0aGUgdW5pb24gb2ZcbiAgICogdGhlIHBlcm1pc3Npb25zIGNhcnJpZWQgYnkgZXZlcnkgUm9sZSB0aGUgdXNlciBpcyBhc3NpZ25lZCAoc2VlXG4gICAqIGByZXNvbHZlVXNlclBlcm1pc3Npb25zYCkuIEFic2VudCBvbiBtYWNoaW5lL3Njb3BlZCB0b2tlbnMuIFN1cGVyYWRtaW5zIGFyZVxuICAgKiBncmFudGVkIGFsbCBwZXJtaXNzaW9ucyBpbXBsaWNpdGx5IGFuZCBtYXkgb21pdCB0aGlzLiBFbmRwb2ludHMgZW5mb3JjZSB2aWFcbiAgICogYHJlcXVpcmVQZXJtaXNzaW9uKC4uLilgLlxuICAgKi9cbiAgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uW107XG4gIC8qKlxuICAgKiBHbG9iYWwgc3VwZXItYWRtaW4gZmxhZyAoY3Jvc3Mtb3JnKS4gV2hlbiBgdHJ1ZWAsIHRoZSB1c2VyIGlzIHRyZWF0ZWRcbiAgICogYXMgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciByZWdhcmRsZXNzIG9mIHdoaWNoIG9yZyB0aGV5J3JlIGN1cnJlbnRseVxuICAgKiBhY3RpbmcgdW5kZXIuIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBzaWduYWwgZm9yIHN5c2FkbWluIGF1dGhvcml0eSDigJRcbiAgICogcHJldmlvdXNseSB0aGUgb25seSBwYXRoIHdhcyBtZW1iZXJzaGlwIGluIHRoZSB3ZWxsLWtub3duIFwic3lzdGVtXCIgb3JnXG4gICAqIHdpdGggcm9sZSBhZG1pbi9vd25lciwgd2hpY2ggY29uZmxhdGVkIFwiUGlwZWxpbmUgQnVpbGRlciBvcGVyYXRvclwiIHdpdGhcbiAgICogXCJyZWFsIGN1c3RvbWVyIHRlbmFudFwiIGluIHRoZSBkYXRhIG1vZGVsLiBFaXRoZXIgcGF0aCBzdGlsbCB3b3Jrc1xuICAgKiBkdXJpbmcgdGhlIHJvbGxvdXQ7IG5ldyB1c2VycyBzaG91bGQgYmUgZ3JhbnRlZCB2aWEgYGlzU3VwZXJBZG1pbmAuXG4gICAqL1xuICBpc1N1cGVyQWRtaW4/OiBib29sZWFuO1xuICAvKiogT3JnYW5pemF0aW9uJ3MgcXVvdGEgdGllci4gKi9cbiAgdGllcj86IFF1b3RhVGllcjtcbiAgLyoqIFJlc29sdmVkIGZlYXR1cmUgZmxhZ3MgZm9yIHRoaXMgdXNlci9vcmcgKi9cbiAgZmVhdHVyZXM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIE5hcnJvdyBjYXBhYmlsaXR5IHNjb3BlIGZvciBtYWNoaW5lL2F1dG9tYXRpb24gdG9rZW5zIChlLmcuXG4gICAqIGAncmVwb3J0aW5nOmluZ2VzdCdgKS4gQWJzZW50IG9uIG5vcm1hbCBpbnRlcmFjdGl2ZSB1c2VyIHRva2Vucy4gRW5kcG9pbnRzXG4gICAqIHRoYXQgYWNjZXB0IGEgc2NvcGVkIGlkZW50aXR5IGNoZWNrIHRoaXMgKHNlZSBgaGFzU2NvcGVgKSBpbnN0ZWFkIG9mIHJvbGU7XG4gICAqIGEgc2NvcGVkIHRva2VuIGlzIG1pbnRlZCB3aXRoIG1pbmltYWwgcm9sZSBmb3IgbGVhc3QtcHJpdmlsZWdlLlxuICAgKi9cbiAgc2NvcGU/OiBUb2tlblNjb3BlO1xuICAvKiogQWN0aXZlIG9yZ2FuaXphdGlvbiBJRCAoZnJvbSBVc2VyT3JnYW5pemF0aW9uIG1lbWJlcnNoaXApICovXG4gIG9yZ2FuaXphdGlvbklkPzogc3RyaW5nO1xuICAvKiogQWN0aXZlIG9yZ2FuaXphdGlvbiBuYW1lICovXG4gIG9yZ2FuaXphdGlvbk5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcmcg4oaSIHRlYW0gaGllcmFyY2h5IChvcmctdGVhbS1oaWVyYXJjaHkgcHJvcG9zYWwsIHBoYXNlIDEpLlxuICAgKiBgcGFyZW50T3JnYW5pemF0aW9uSWRgIGlzIHRoZSBhY3RpdmUgb3JnJ3MgZGlyZWN0IHBhcmVudDsgYHJvb3RPcmdhbml6YXRpb25JZGBcbiAgICogaXMgdGhlIHRvcCBvZiBpdHMgYW5jZXN0cnkgY2hhaW4uIEJvdGggYXJlICoqb21pdHRlZCBmb3IgZmxhdCAocm9vdCkgb3JncyoqIOKAlFxuICAgKiBjb25zdW1lcnMgc2hvdWxkIHRyZWF0IHRoZSBlZmZlY3RpdmUgcm9vdCBhcyBgcm9vdE9yZ2FuaXphdGlvbklkID8/IG9yZ2FuaXphdGlvbklkYFxuICAgKiAodXNlIHRoZSBzaGFyZWQge0BsaW5rIGVmZmVjdGl2ZVJvb3RPcmdJZH0gYWNjZXNzb3IgcmF0aGVyIHRoYW4gY29hbGVzY2luZyBpbmxpbmUpLlxuICAgKiBDdXJyZW50bHkgZXZlcnkgb3JnIGlzIGZsYXQsIHNvIHRoZXNlIGFyZSBhYnNlbnQgb24gYWxsIHRva2VucyB0b2RheS5cbiAgICovXG4gIHBhcmVudE9yZ2FuaXphdGlvbklkPzogc3RyaW5nO1xuICAvKiogUm9vdCBvcmdhbml6YXRpb24gSUQgb2YgdGhlIGFjdGl2ZSBvcmcncyBhbmNlc3RyeSBjaGFpbiAoc2VlIGBwYXJlbnRPcmdhbml6YXRpb25JZGApLiAqL1xuICByb290T3JnYW5pemF0aW9uSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZXQgb24gdG9rZW5zIGlzc3VlZCBieSB0aGUgc3lzYWRtaW4gaW1wZXJzb25hdGlvbiBmbG93XG4gICAqIChgUE9TVCAvYWRtaW4vaW1wZXJzb25hdGUvOnVzZXJJZGApLiBDYXJyaWVzIHRoZSBvcmlnaW5hbCBzeXNhZG1pbidzXG4gICAqIHVzZXIgaWQgc28gYXVkaXQgZXZlbnRzIHN0aWxsIGF0dHJpYnV0ZSBhY3Rpb25zIGNvcnJlY3RseS5cbiAgICovXG4gIGltcGVyc29uYXRvcklkPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGUgdG9rZW4gaXMgcmVhZC1vbmx5IOKAlCBhbnkgbm9uLUdFVCByZXF1ZXN0IGlzIHJlamVjdGVkXG4gICAqIHVwc3RyZWFtIGJ5IHRoZSBwbGF0Zm9ybSdzIHJlYWQtb25seSBpbXBlcnNvbmF0aW9uIGdhdGUuIExldHNcbiAgICogc3lzYWRtaW5zIFwidmlldyBhcyB1c2VyIFhcIiB3aXRob3V0IHJpc2tpbmcgYSBkZXN0cnVjdGl2ZSBhY3Rpb24uXG4gICAqL1xuICBpbXBlcnNvbmF0aW9uUmVhZE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHVzZXIncyBgdG9rZW5WZXJzaW9uYCBhdCB0aGUgbW9tZW50IHRoaXMgdG9rZW4gd2FzIGlzc3VlZC4gRXZlcnlcbiAgICogcHJpdmlsZWdlIGNoYW5nZSAoZGVhY3RpdmF0ZSAvIHJvbGUgb3IgdGllciBkb3duZ3JhZGUgLyBtZW1iZXJzaGlwIG9yXG4gICAqIG93bmVyc2hpcCBjaGFuZ2UgLyBwYXNzd29yZCBjaGFuZ2UgLyBsb2dvdXQtYWxsKSBpbmNyZW1lbnRzIHRoZSB1c2VyJ3NcbiAgICogc2VydmVyLXNpZGUgYHRva2VuVmVyc2lvbmAsIHNvIGEgdG9rZW4gd2hvc2UgZW1iZWRkZWQgdmVyc2lvbiBpcyBiZWhpbmQgdGhlXG4gICAqIGN1cnJlbnQgb25lIGhhcyBiZWVuIFJFVk9LRUQuIFBsYXRmb3JtIHZhbGlkYXRlcyB0aGlzIGFnYWluc3QgTW9uZ287IHRoZVxuICAgKiBzdGF0ZWxlc3Mgc2VydmljZXMgdmFsaWRhdGUgaXQgYWdhaW5zdCBhIFJlZGlzLXB1Ymxpc2hlZCBjdXJyZW50LXZlcnNpb25cbiAgICogc3RvcmUgKHNlZSBgc2V0VG9rZW5SZXZvY2F0aW9uU3RvcmVgKS4gQWJzZW50IG9uIG1hY2hpbmUvc2VydmljZSB0b2tlbnMuXG4gICAqL1xuICB0b2tlblZlcnNpb24/OiBudW1iZXI7XG4gIC8qKiBUb2tlbiB0eXBlICovXG4gIHR5cGU6ICdhY2Nlc3MnIHwgJ3JlZnJlc2gnO1xuICAvKiogSXNzdWVkIGF0IHRpbWVzdGFtcCAqL1xuICBpYXQ/OiBudW1iZXI7XG4gIC8qKiBFeHBpcmF0aW9uIHRpbWVzdGFtcCAqL1xuICBleHA/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGFjY291bnQgYm91bmRhcnkgKHJvb3Qgb3JnKSBmb3IgYSB0b2tlbidzIGFjdGl2ZSBvcmcuXG4gKlxuICogVGhlIGFjY291bnQgcm9vdCBpcyBgcm9vdE9yZ2FuaXphdGlvbklkID8/IG9yZ2FuaXphdGlvbklkYDogYSBmbGF0IChyb290KSBvcmdcbiAqIG9taXRzIGByb290T3JnYW5pemF0aW9uSWRgLCBzbyBpdCBJUyBpdHMgb3duIHJvb3Q7IGEgdGVhbSAoY2hpbGQpIG9yZyBjYXJyaWVzXG4gKiB0aGUgdG9wIG9mIGl0cyBhbmNlc3RyeSBjaGFpbi4gRXZlcnkgYWNjb3VudC1zY29wZWQgcmVhZCAocXVvdGEvc2VhdC9iaWxsaW5nXG4gKiBwb29saW5nKSBtdXN0IHJlc29sdmUgdGhyb3VnaCB0aGlzIGNvYWxlc2NlIHJhdGhlciB0aGFuIHJlYWRpbmdcbiAqIGBvcmdhbml6YXRpb25JZGAgZGlyZWN0bHkg4oCUIHRoZSBsYXR0ZXIgc2lsZW50bHkgd29ya3MgdG9kYXkgKGFsbCBvcmdzIGZsYXQpXG4gKiBidXQgd291bGQgYmluZCB0byB0aGUgdGVhbSBpbnN0ZWFkIG9mIHRoZSBhY2NvdW50IG9uY2UgdGVhbXMgZXhpc3QuXG4gKlxuICogQHJldHVybnMgdGhlIGVmZmVjdGl2ZSByb290IG9yZyBpZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBuZWl0aGVyIGZpZWxkIGlzIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVmZmVjdGl2ZVJvb3RPcmdJZChcbiAgcGF5bG9hZDogUGljazxKd3RQYXlsb2FkLCAnb3JnYW5pemF0aW9uSWQnIHwgJ3Jvb3RPcmdhbml6YXRpb25JZCc+LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHBheWxvYWQucm9vdE9yZ2FuaXphdGlvbklkID8/IHBheWxvYWQub3JnYW5pemF0aW9uSWQ7XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgRXhwcmVzcyBSZXF1ZXN0IHdpdGggdXNlciBwcm9wZXJ0eS5cbiAqL1xuZGVjbGFyZSBnbG9iYWwge1xuICBuYW1lc3BhY2UgRXhwcmVzcyB7XG4gICAgaW50ZXJmYWNlIFJlcXVlc3Qge1xuICAgICAgdXNlcj86IEp3dFBheWxvYWQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU2VydmljZSBjb25maWd1cmF0aW9uIGZvciBpbnRlcm5hbCBIVFRQIGNsaWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQ29uZmlnIHtcbiAgLyoqIFNlcnZpY2UgaG9zdG5hbWUgKi9cbiAgaG9zdDogc3RyaW5nO1xuICAvKiogU2VydmljZSBwb3J0ICovXG4gIHBvcnQ6IG51bWJlcjtcbiAgLyoqIFJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBIZWFsdGggY2hlY2sgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhbHRoQ2hlY2tSZXNwb25zZSB7XG4gIHN0YXR1czogJ2hlYWx0aHknIHwgJ3VuaGVhbHRoeSc7XG4gIHNlcnZpY2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIHVwdGltZTogbnVtYmVyO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBkZXBlbmRlbmNpZXM/OiBSZWNvcmQ8c3RyaW5nLCAnY29ubmVjdGVkJyB8ICdkaXNjb25uZWN0ZWQnIHwgJ3Vua25vd24nPjtcbn1cbiJdfQ==
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBMEN0Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxjQUFjO0lBQzdELFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsWUFBWTtDQUNyRCxDQUFDO0FBRVg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQWtCLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBMEtEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxPQUFrRTtJQUVsRSxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9uIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1b3RhVGllciB9IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuXG4vKipcbiAqIENhcGFiaWxpdHkgc2NvcGUgY2F0YWxvZyBmb3IgbWFjaGluZS9hdXRvbWF0aW9uIHRva2Vucy4gQSBzY29wZWQgdG9rZW4gY2Fycmllc1xuICogZXhhY3RseSBvbmUgb2YgdGhlc2UgaW5zdGVhZCBvZiByb2xlLWJhc2VkIHBlcm1pc3Npb25zOyBlbmRwb2ludHMgdGhhdCBhY2NlcHQgYVxuICogc2NvcGVkIGlkZW50aXR5IGNoZWNrIGl0IHZpYSBgaGFzU2NvcGVgLiBLZXB0IGEgY2xvc2VkIHVuaW9uIChtaXJyb3JpbmdcbiAqIHtAbGluayBQZXJtaXNzaW9ufSkgc28gYSB0eXBvIG9uIGVpdGhlciB0aGUgbWludCBvciB0aGUgY2hlY2sgc2lkZSBpcyBhIGNvbXBpbGVcbiAqIGVycm9yLiBBZGQgYSB2YWx1ZSBoZXJlIHdoZW4gaW50cm9kdWNpbmcgYSBuZXcgc2NvcGVkLXRva2VuIHN1cmZhY2UuXG4gKi9cbmV4cG9ydCB0eXBlIFRva2VuU2NvcGUgPSAncmVwb3J0aW5nOmluZ2VzdCc7XG5cbi8qKlxuICogUXVvdGEgdHlwZSBpZGVudGlmaWVycy5cbiAqXG4gKiAtIGBwbHVnaW5zYCAvIGBwaXBlbGluZXNgIOKAlCBjb3VudCBvZiBjcmVhdGVkIGVudGl0aWVzXG4gKiAtIGBhcGlDYWxsc2Ag4oCUIGdlbmVyaWMgQVBJIGNhbGwgY291bnQgKHJlYWQtaGVhdnkgcGF0aHMpXG4gKiAtIGBhaUNhbGxzYCDigJQgQUkgcHJvdmlkZXIgaW52b2NhdGlvbnMgKGNvdW50ZWQgc2VwYXJhdGVseSBiZWNhdXNlIGVhY2ggY2FsbFxuICogICBoYXMgZXh0ZXJuYWwgZG9sbGFyIGNvc3Q7IHNpemVkIHNtYWxsZXIgdGhhbiBhcGlDYWxscyBwZXIgdGllcilcbiAqIC0gYHN0b3JhZ2VCeXRlc2Ag4oCUIHJlZ2lzdHJ5IHN0b3JhZ2UgYnVkZ2V0IHBlciBvcmcuIFVubGlrZSB0aGUgb3RoZXJzXG4gKiAgICh3aGljaCBjb3VudCBkaXNjcmV0ZSBldmVudHMpLCB0aGlzIGlzIGEgbWVhc3VyZWQgdG90YWwgcmVjb21wdXRlZFxuICogICBvbiBkZW1hbmQuIEluY3JlbWVudGVkIGJ5IHRoZSBpbWFnZS1yZWdpc3RyeSdzIHB1c2gtZ2F0ZSBiZWZvcmVcbiAqICAgaXNzdWluZyBhIHRva2VuIHdob3NlIHNjb3BlIGluY2x1ZGVzIGBwdXNoYDsgdGhlIEdDIHNjaGVkdWxlclxuICogICBldmVudHVhbGx5IGZyZWVzIHRoZSBieXRlcywgdGhlbiB0aGUgbmV4dCBwdXNoLWdhdGUgY2hlY2sgcmVhZHNcbiAqICAgdGhlIGxvd2VyIHZhbHVlLiBOT1QgYSBjb3VudGVyLXN0eWxlIHF1b3RhIGluIHRoZSBzZW5zZSBvZlxuICogICBgaW5jcmVtZW50VXNhZ2VgIOKAlCB0aGUgcmVnaXN0cnkgcHVzaGVzIHRoZSBtZWFzdXJlZCB0b3RhbCB2aWFcbiAqICAgYHVwZGF0ZUxpbWl0c2AvYHJlc2V0VXNhZ2VgIGZsb3dzLiBUaWVyIGxpbWl0cyBhcmUgYnl0ZXMuXG4gKiAtIGBkYXNoYm9hcmRzYCAvIGBhbGVydFJ1bGVzYCAvIGBhbGVydERlc3RpbmF0aW9uc2AgLyBgaWRwQ29uZmlnc2Ag4oCUXG4gKiAgIHJlc291cmNlLWNvdW50IHF1b3RhcyBhZGRlZCB0byBjbG9zZSBwZXItb3JnIERvUyBzdXJmYWNlcyBpbiB0aGVcbiAqICAgdXNlci1lZGl0YWJsZSBmZWF0dXJlIHRhYmxlcy4gV2l0aG91dCB0aGVzZSBjYXBzIGEgc2luZ2xlIG9yZyBjb3VsZFxuICogICBzcGFtIHRob3VzYW5kcyBvZiBkYXNoYm9hcmRzIC8gcnVsZXMgYW5kIGJsb2F0IHRoZSBzaGFyZWQgUG9zdGdyZXMgL1xuICogICBNb25nbyB3b3JraW5nIHNldHMuIENvdW50ZWQgYXQgY3JlYXRlIHRpbWU7IGRlY3JlbWVudGVkIG9uIGRlbGV0ZS5cbiAqL1xuLy8gTk9URTogYHNlYXRzYCBpcyBpbnRlbnRpb25hbGx5IE5PVCBoZXJlLiBJdCdzIGEgdGllciBsaW1pdCAoUXVvdGFUaWVyTGltaXRzKVxuLy8gZW5mb3JjZWQgYnkgY29tcGFyaW5nIHRoZSBvcmcncyBMSVZFIG1lbWJlciBjb3VudCBhdCBpbnZpdGUgdGltZSDigJQgbm90IGFuXG4vLyBpbmNyZW1lbnRpbmcgcGVyLXBlcmlvZCBjb3VudGVyIGxpa2UgdGhlIGNvbnN1bWFibGUgcXVvdGFzIGJlbG93LlxuZXhwb3J0IHR5cGUgUXVvdGFUeXBlID1cbiAgfCAncGx1Z2lucycgfCAncGlwZWxpbmVzJyB8ICdhcGlDYWxscycgfCAnYWlDYWxscycgfCAnc3RvcmFnZUJ5dGVzJ1xuICB8ICdkYXNoYm9hcmRzJyB8ICdhbGVydFJ1bGVzJyB8ICdhbGVydERlc3RpbmF0aW9ucycgfCAnaWRwQ29uZmlncyc7XG5cbi8qKlxuICogVmFsaWQgcXVvdGEgdHlwZSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBWQUxJRF9RVU9UQV9UWVBFUyA9IFtcbiAgJ3BsdWdpbnMnLCAncGlwZWxpbmVzJywgJ2FwaUNhbGxzJywgJ2FpQ2FsbHMnLCAnc3RvcmFnZUJ5dGVzJyxcbiAgJ2Rhc2hib2FyZHMnLCAnYWxlcnRSdWxlcycsICdhbGVydERlc3RpbmF0aW9ucycsICdpZHBDb25maWdzJyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgUXVvdGFUeXBlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUcnVlIGlmIHZhbHVlIGlzIGEgdmFsaWQgUXVvdGFUeXBlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlmIChpc1ZhbGlkUXVvdGFUeXBlKHJlcS5ib2R5LnF1b3RhVHlwZSkpIHtcbiAqICAgLy8gcXVvdGFUeXBlIGlzIGd1YXJhbnRlZWQgdG8gYmUgUXVvdGFUeXBlXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRRdW90YVR5cGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBRdW90YVR5cGUge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBWQUxJRF9RVU9UQV9UWVBFUy5pbmNsdWRlcyh2YWx1ZSBhcyBRdW90YVR5cGUpO1xufVxuXG4vKipcbiAqIFJlc3VsdCBmcm9tIHF1b3RhIGNoZWNrIG9wZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdW90YUNoZWNrUmVzdWx0IHtcbiAgLyoqIFdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgYWxsb3dlZCAqL1xuICBhbGxvd2VkOiBib29sZWFuO1xuICAvKiogTWF4aW11bSBxdW90YSBsaW1pdCAoLTEgZm9yIHVubGltaXRlZCkgKi9cbiAgbGltaXQ6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnQgdXNhZ2UgY291bnQgKi9cbiAgdXNlZDogbnVtYmVyO1xuICAvKiogUmVtYWluaW5nIHF1b3RhICgtMSBmb3IgdW5saW1pdGVkKSAqL1xuICByZW1haW5pbmc6IG51bWJlcjtcbiAgLyoqIElTTyB0aW1lc3RhbXAgd2hlbiBxdW90YSByZXNldHMgKi9cbiAgcmVzZXRBdDogc3RyaW5nO1xuICAvKiogV2hldGhlciBxdW90YSBpcyB1bmxpbWl0ZWQgKi9cbiAgdW5saW1pdGVkOiBib29sZWFuO1xuICAvKipcbiAgICogVHJ1ZSBPTkxZIHdoZW4gdGhpcyByZXN1bHQgaXMgdGhlIGZhaWwtb3BlbiBzZW50aW5lbCByZXR1cm5lZCBiZWNhdXNlIHRoZVxuICAgKiBxdW90YSBzZXJ2aWNlIHdhcyB1bnJlYWNoYWJsZSAvIHJldHVybmVkIG5vbi1vayAobm90IGEgcmVhbCBxdW90YSByZWFkaW5nKS5cbiAgICogTGV0cyBmYWlsLWNsb3NlZCBjYWxsZXJzIChlLmcuIHRoZSByZWdpc3RyeSBzdG9yYWdlIHB1c2gtZ2F0ZSkgZGlzdGluZ3Vpc2hcbiAgICogYW4gb3V0YWdlIGZyb20gYSBnZW51aW5lIGBsaW1pdDogLTFgICh1bmxpbWl0ZWQpIG9yZy4gQWJzZW50IG9uIHJlYWwgcmVzdWx0cy5cbiAgICovXG4gIGZhaWxPcGVuPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdW90YSBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVzcG9uc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1b3RhSW5mbyB7XG4gIHR5cGU6IFF1b3RhVHlwZTtcbiAgbGltaXQ6IG51bWJlcjtcbiAgdXNlZDogbnVtYmVyO1xuICByZW1haW5pbmc6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBBUEkgc3VjY2VzcyByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlTdWNjZXNzUmVzcG9uc2U8VCA9IHVua25vd24+IHtcbiAgc3VjY2VzczogdHJ1ZTtcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBkYXRhPzogVDtcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBBUEkgZXJyb3IgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpRXJyb3JSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGZhbHNlO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbiAgZGV0YWlscz86IHVua25vd247XG4gIHF1b3RhPzogUXVvdGFJbmZvO1xufVxuXG4vKipcbiAqIENvbWJpbmVkIEFQSSByZXNwb25zZSB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBBcGlSZXNwb25zZTxUID0gdW5rbm93bj4gPSBBcGlTdWNjZXNzUmVzcG9uc2U8VD4gfCBBcGlFcnJvclJlc3BvbnNlO1xuXG4vKipcbiAqIEpXVCBwYXlsb2FkIGZyb20gYWNjZXNzIHRva2Vucy5cbiAqXG4gKiBVc2VycyBjYW4gYmVsb25nIHRvIG11bHRpcGxlIG9yZ2FuaXphdGlvbnMuIFRoZSB0b2tlbiBpcyBzY29wZWQgdG8gb25lXG4gKiBhY3RpdmUgb3JnYW5pemF0aW9uIGF0IGEgdGltZS4gVGhlIGByb2xlYCBmaWVsZCBpcyB0aGUgdXNlcidzIHBlci1vcmdcbiAqIHJvbGUgaW4gdGhhdCBvcmdhbml6YXRpb24gKGZyb20gdGhlIFVzZXJPcmdhbml6YXRpb24ganVuY3Rpb24gY29sbGVjdGlvbiksXG4gKiBhbmQgYGlzQWRtaW5gIGlzIGRlcml2ZWQgYXMgYHJvbGUgPT09ICdhZG1pbicgfHwgcm9sZSA9PT0gJ293bmVyJ2AuXG4gKlxuICogVXNlIGBQT1NUIC9hdXRoL3N3aXRjaC1vcmdgIHRvIGNoYW5nZSB0aGUgYWN0aXZlIG9yZ2FuaXphdGlvbiwgd2hpY2hcbiAqIHJlLWlzc3VlcyB0b2tlbnMgd2l0aCB0aGUgbmV3IG9yZydzIHJvbGUgYW5kIGNvbnRleHQuXG4gKi9cbi8qKlxuICogQ29hcnNlIHBlci1vcmcgbWVtYmVyc2hpcCBsYWJlbCwgREVSSVZFRCBmcm9tIHRoZSBSb2xlcyBhIHVzZXIgaXMgYXNzaWduZWRcbiAqICh0aGUgaGlnaGVzdCBgZ3JhbnRzUm9sZWAgYW1vbmcgdGhlbTsgYG93bmVyYCBpcyBzZXQgb25seSBieSBvd25lcnNoaXBcbiAqIHRyYW5zZmVyKS4gSXQgaXMgYSBkaXNwbGF5L2F1dGhvcml0eSBsYWJlbCDigJQgZHJpdmluZyBgaXNBZG1pbmAsIG93bmVyc2hpcCxcbiAqIGFuZCBzZWF0IGFjY291bnRpbmcg4oCUIE5PVCBhIHBlcm1pc3Npb24gc291cmNlLiBFZmZlY3RpdmUgcGVybWlzc2lvbnMgY29tZVxuICogc29sZWx5IGZyb20gdGhlIHVzZXIncyBhc3NpZ25lZCBSb2xlcyAoc2VlIGByZXNvbHZlVXNlclBlcm1pc3Npb25zYCkuIE5vdCBhXG4gKiBnbG9iYWwgcm9sZS5cbiAqL1xuZXhwb3J0IHR5cGUgT3JnUm9sZSA9ICdvd25lcicgfCAnYWRtaW4nIHwgJ21lbWJlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnd0UGF5bG9hZCB7XG4gIC8qKiBVc2VyIElEIChzdWJqZWN0KSAqL1xuICBzdWI6IHN0cmluZztcbiAgLyoqIFVzZXJuYW1lICovXG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIC8qKiBVc2VyIGVtYWlsICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiBQZXItb3JnIHJvbGUgaW4gdGhlIGFjdGl2ZSBvcmdhbml6YXRpb24gKCdvd25lcicgfCAnYWRtaW4nIHwgJ21lbWJlcicpLiBOb3QgYSBnbG9iYWwgcm9sZS4gKi9cbiAgcm9sZTogT3JnUm9sZTtcbiAgLyoqIERlcml2ZWQ6IHRydWUgd2hlbiByb2xlIGlzICdhZG1pbicgb3IgJ293bmVyJyBpbiB0aGUgYWN0aXZlIG9yZ2FuaXphdGlvbiAqL1xuICBpc0FkbWluPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFJlc29sdmVkIGZpbmUtZ3JhaW5lZCBwZXJtaXNzaW9ucyBmb3IgdGhlIGFjdGl2ZSBvcmcvdGVhbSDigJQgdGhlIHVuaW9uIG9mXG4gICAqIHRoZSBwZXJtaXNzaW9ucyBjYXJyaWVkIGJ5IGV2ZXJ5IFJvbGUgdGhlIHVzZXIgaXMgYXNzaWduZWQgKHNlZVxuICAgKiBgcmVzb2x2ZVVzZXJQZXJtaXNzaW9uc2ApLiBBYnNlbnQgb24gbWFjaGluZS9zY29wZWQgdG9rZW5zLiBTdXBlcmFkbWlucyBhcmVcbiAgICogZ3JhbnRlZCBhbGwgcGVybWlzc2lvbnMgaW1wbGljaXRseSBhbmQgbWF5IG9taXQgdGhpcy4gRW5kcG9pbnRzIGVuZm9yY2UgdmlhXG4gICAqIGByZXF1aXJlUGVybWlzc2lvbiguLi4pYC5cbiAgICovXG4gIHBlcm1pc3Npb25zPzogUGVybWlzc2lvbltdO1xuICAvKipcbiAgICogR2xvYmFsIHN1cGVyLWFkbWluIGZsYWcgKGNyb3NzLW9yZykuIFdoZW4gYHRydWVgLCB0aGUgdXNlciBpcyB0cmVhdGVkXG4gICAqIGFzIGEgc3lzdGVtIGFkbWluaXN0cmF0b3IgcmVnYXJkbGVzcyBvZiB3aGljaCBvcmcgdGhleSdyZSBjdXJyZW50bHlcbiAgICogYWN0aW5nIHVuZGVyLiBUaGlzIGlzIHRoZSBjYW5vbmljYWwgc2lnbmFsIGZvciBzeXNhZG1pbiBhdXRob3JpdHkg4oCUXG4gICAqIHByZXZpb3VzbHkgdGhlIG9ubHkgcGF0aCB3YXMgbWVtYmVyc2hpcCBpbiB0aGUgd2VsbC1rbm93biBcInN5c3RlbVwiIG9yZ1xuICAgKiB3aXRoIHJvbGUgYWRtaW4vb3duZXIsIHdoaWNoIGNvbmZsYXRlZCBcIlBpcGVsaW5lIEJ1aWxkZXIgb3BlcmF0b3JcIiB3aXRoXG4gICAqIFwicmVhbCBjdXN0b21lciB0ZW5hbnRcIiBpbiB0aGUgZGF0YSBtb2RlbC4gRWl0aGVyIHBhdGggc3RpbGwgd29ya3NcbiAgICogZHVyaW5nIHRoZSByb2xsb3V0OyBuZXcgdXNlcnMgc2hvdWxkIGJlIGdyYW50ZWQgdmlhIGBpc1N1cGVyQWRtaW5gLlxuICAgKi9cbiAgaXNTdXBlckFkbWluPzogYm9vbGVhbjtcbiAgLyoqIE9yZ2FuaXphdGlvbidzIHF1b3RhIHRpZXIuICovXG4gIHRpZXI/OiBRdW90YVRpZXI7XG4gIC8qKiBSZXNvbHZlZCBmZWF0dXJlIGZsYWdzIGZvciB0aGlzIHVzZXIvb3JnICovXG4gIGZlYXR1cmVzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYXJyb3cgY2FwYWJpbGl0eSBzY29wZSBmb3IgbWFjaGluZS9hdXRvbWF0aW9uIHRva2VucyAoZS5nLlxuICAgKiBgJ3JlcG9ydGluZzppbmdlc3QnYCkuIEFic2VudCBvbiBub3JtYWwgaW50ZXJhY3RpdmUgdXNlciB0b2tlbnMuIEVuZHBvaW50c1xuICAgKiB0aGF0IGFjY2VwdCBhIHNjb3BlZCBpZGVudGl0eSBjaGVjayB0aGlzIChzZWUgYGhhc1Njb3BlYCkgaW5zdGVhZCBvZiByb2xlO1xuICAgKiBhIHNjb3BlZCB0b2tlbiBpcyBtaW50ZWQgd2l0aCBtaW5pbWFsIHJvbGUgZm9yIGxlYXN0LXByaXZpbGVnZS5cbiAgICovXG4gIHNjb3BlPzogVG9rZW5TY29wZTtcbiAgLyoqIEFjdGl2ZSBvcmdhbml6YXRpb24gSUQgKGZyb20gVXNlck9yZ2FuaXphdGlvbiBtZW1iZXJzaGlwKSAqL1xuICBvcmdhbml6YXRpb25JZD86IHN0cmluZztcbiAgLyoqIEFjdGl2ZSBvcmdhbml6YXRpb24gbmFtZSAqL1xuICBvcmdhbml6YXRpb25OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogT3JnIOKGkiB0ZWFtIGhpZXJhcmNoeSAob3JnLXRlYW0taGllcmFyY2h5IHByb3Bvc2FsLCBwaGFzZSAxKS5cbiAgICogYHBhcmVudE9yZ2FuaXphdGlvbklkYCBpcyB0aGUgYWN0aXZlIG9yZydzIGRpcmVjdCBwYXJlbnQ7IGByb290T3JnYW5pemF0aW9uSWRgXG4gICAqIGlzIHRoZSB0b3Agb2YgaXRzIGFuY2VzdHJ5IGNoYWluLiBCb3RoIGFyZSAqKm9taXR0ZWQgZm9yIGZsYXQgKHJvb3QpIG9yZ3MqKiDigJRcbiAgICogY29uc3VtZXJzIHNob3VsZCB0cmVhdCB0aGUgZWZmZWN0aXZlIHJvb3QgYXMgYHJvb3RPcmdhbml6YXRpb25JZCA/PyBvcmdhbml6YXRpb25JZGBcbiAgICogKHVzZSB0aGUgc2hhcmVkIHtAbGluayBlZmZlY3RpdmVSb290T3JnSWR9IGFjY2Vzc29yIHJhdGhlciB0aGFuIGNvYWxlc2NpbmcgaW5saW5lKS5cbiAgICogQ3VycmVudGx5IGV2ZXJ5IG9yZyBpcyBmbGF0LCBzbyB0aGVzZSBhcmUgYWJzZW50IG9uIGFsbCB0b2tlbnMgdG9kYXkuXG4gICAqL1xuICBwYXJlbnRPcmdhbml6YXRpb25JZD86IHN0cmluZztcbiAgLyoqIFJvb3Qgb3JnYW5pemF0aW9uIElEIG9mIHRoZSBhY3RpdmUgb3JnJ3MgYW5jZXN0cnkgY2hhaW4gKHNlZSBgcGFyZW50T3JnYW5pemF0aW9uSWRgKS4gKi9cbiAgcm9vdE9yZ2FuaXphdGlvbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogU2V0IG9uIHRva2VucyBpc3N1ZWQgYnkgdGhlIHN5c2FkbWluIGltcGVyc29uYXRpb24gZmxvd1xuICAgKiAoYFBPU1QgL2FkbWluL2ltcGVyc29uYXRlLzp1c2VySWRgKS4gQ2FycmllcyB0aGUgb3JpZ2luYWwgc3lzYWRtaW4nc1xuICAgKiB1c2VyIGlkIHNvIGF1ZGl0IGV2ZW50cyBzdGlsbCBhdHRyaWJ1dGUgYWN0aW9ucyBjb3JyZWN0bHkuXG4gICAqL1xuICBpbXBlcnNvbmF0b3JJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgdGhlIHRva2VuIGlzIHJlYWQtb25seSDigJQgYW55IG5vbi1HRVQgcmVxdWVzdCBpcyByZWplY3RlZFxuICAgKiB1cHN0cmVhbSBieSB0aGUgcGxhdGZvcm0ncyByZWFkLW9ubHkgaW1wZXJzb25hdGlvbiBnYXRlLiBMZXRzXG4gICAqIHN5c2FkbWlucyBcInZpZXcgYXMgdXNlciBYXCIgd2l0aG91dCByaXNraW5nIGEgZGVzdHJ1Y3RpdmUgYWN0aW9uLlxuICAgKi9cbiAgaW1wZXJzb25hdGlvblJlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSB1c2VyJ3MgYHRva2VuVmVyc2lvbmAgYXQgdGhlIG1vbWVudCB0aGlzIHRva2VuIHdhcyBpc3N1ZWQuIEV2ZXJ5XG4gICAqIHByaXZpbGVnZSBjaGFuZ2UgKGRlYWN0aXZhdGUgLyByb2xlIG9yIHRpZXIgZG93bmdyYWRlIC8gbWVtYmVyc2hpcCBvclxuICAgKiBvd25lcnNoaXAgY2hhbmdlIC8gcGFzc3dvcmQgY2hhbmdlIC8gbG9nb3V0LWFsbCkgaW5jcmVtZW50cyB0aGUgdXNlcidzXG4gICAqIHNlcnZlci1zaWRlIGB0b2tlblZlcnNpb25gLCBzbyBhIHRva2VuIHdob3NlIGVtYmVkZGVkIHZlcnNpb24gaXMgYmVoaW5kIHRoZVxuICAgKiBjdXJyZW50IG9uZSBoYXMgYmVlbiBSRVZPS0VELiBQbGF0Zm9ybSB2YWxpZGF0ZXMgdGhpcyBhZ2FpbnN0IE1vbmdvOyB0aGVcbiAgICogc3RhdGVsZXNzIHNlcnZpY2VzIHZhbGlkYXRlIGl0IGFnYWluc3QgYSBSZWRpcy1wdWJsaXNoZWQgY3VycmVudC12ZXJzaW9uXG4gICAqIHN0b3JlIChzZWUgYHNldFRva2VuUmV2b2NhdGlvblN0b3JlYCkuIEFic2VudCBvbiBtYWNoaW5lL3NlcnZpY2UgdG9rZW5zLlxuICAgKi9cbiAgdG9rZW5WZXJzaW9uPzogbnVtYmVyO1xuICAvKiogVG9rZW4gdHlwZSAqL1xuICB0eXBlOiAnYWNjZXNzJyB8ICdyZWZyZXNoJztcbiAgLyoqIElzc3VlZCBhdCB0aW1lc3RhbXAgKi9cbiAgaWF0PzogbnVtYmVyO1xuICAvKiogRXhwaXJhdGlvbiB0aW1lc3RhbXAgKi9cbiAgZXhwPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBhY2NvdW50IGJvdW5kYXJ5IChyb290IG9yZykgZm9yIGEgdG9rZW4ncyBhY3RpdmUgb3JnLlxuICpcbiAqIFRoZSBhY2NvdW50IHJvb3QgaXMgYHJvb3RPcmdhbml6YXRpb25JZCA/PyBvcmdhbml6YXRpb25JZGA6IGEgZmxhdCAocm9vdCkgb3JnXG4gKiBvbWl0cyBgcm9vdE9yZ2FuaXphdGlvbklkYCwgc28gaXQgSVMgaXRzIG93biByb290OyBhIHRlYW0gKGNoaWxkKSBvcmcgY2Fycmllc1xuICogdGhlIHRvcCBvZiBpdHMgYW5jZXN0cnkgY2hhaW4uIEV2ZXJ5IGFjY291bnQtc2NvcGVkIHJlYWQgKHF1b3RhL3NlYXQvYmlsbGluZ1xuICogcG9vbGluZykgbXVzdCByZXNvbHZlIHRocm91Z2ggdGhpcyBjb2FsZXNjZSByYXRoZXIgdGhhbiByZWFkaW5nXG4gKiBgb3JnYW5pemF0aW9uSWRgIGRpcmVjdGx5IOKAlCB0aGUgbGF0dGVyIHNpbGVudGx5IHdvcmtzIHRvZGF5IChhbGwgb3JncyBmbGF0KVxuICogYnV0IHdvdWxkIGJpbmQgdG8gdGhlIHRlYW0gaW5zdGVhZCBvZiB0aGUgYWNjb3VudCBvbmNlIHRlYW1zIGV4aXN0LlxuICpcbiAqIEByZXR1cm5zIHRoZSBlZmZlY3RpdmUgcm9vdCBvcmcgaWQsIG9yIGB1bmRlZmluZWRgIHdoZW4gbmVpdGhlciBmaWVsZCBpcyBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlZmZlY3RpdmVSb290T3JnSWQoXG4gIHBheWxvYWQ6IFBpY2s8Snd0UGF5bG9hZCwgJ29yZ2FuaXphdGlvbklkJyB8ICdyb290T3JnYW5pemF0aW9uSWQnPixcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBwYXlsb2FkLnJvb3RPcmdhbml6YXRpb25JZCA/PyBwYXlsb2FkLm9yZ2FuaXphdGlvbklkO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIEV4cHJlc3MgUmVxdWVzdCB3aXRoIHVzZXIgcHJvcGVydHkuXG4gKi9cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgbmFtZXNwYWNlIEV4cHJlc3Mge1xuICAgIGludGVyZmFjZSBSZXF1ZXN0IHtcbiAgICAgIHVzZXI/OiBKd3RQYXlsb2FkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNlcnZpY2UgY29uZmlndXJhdGlvbiBmb3IgaW50ZXJuYWwgSFRUUCBjbGllbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNvbmZpZyB7XG4gIC8qKiBTZXJ2aWNlIGhvc3RuYW1lICovXG4gIGhvc3Q6IHN0cmluZztcbiAgLyoqIFNlcnZpY2UgcG9ydCAqL1xuICBwb3J0OiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogSGVhbHRoIGNoZWNrIHJlc3BvbnNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWx0aENoZWNrUmVzcG9uc2Uge1xuICBzdGF0dXM6ICdoZWFsdGh5JyB8ICd1bmhlYWx0aHknO1xuICBzZXJ2aWNlOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB1cHRpbWU6IG51bWJlcjtcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzPzogUmVjb3JkPHN0cmluZywgJ2Nvbm5lY3RlZCcgfCAnZGlzY29ubmVjdGVkJyB8ICd1bmtub3duJz47XG59XG4iXX0=
|
|
@@ -34,16 +34,3 @@ export declare function resolveUserFeatures(tier: QuotaTier, opts?: {
|
|
|
34
34
|
isSuperAdmin?: boolean;
|
|
35
35
|
accountFeatures?: readonly string[] | null;
|
|
36
36
|
}): FeatureFlag[];
|
|
37
|
-
/**
|
|
38
|
-
* Check if a specific feature is enabled for a user. Delegates to
|
|
39
|
-
* {@link resolveUserFeatures} so it stays in lockstep — including account-level
|
|
40
|
-
* entitlements purchased via add-on bundles (`accountFeatures`).
|
|
41
|
-
*
|
|
42
|
-
* @param tier - The organization's quota tier
|
|
43
|
-
* @param feature - The feature flag to check
|
|
44
|
-
* @param featureOverrides - Per-user overrides
|
|
45
|
-
* @param isSuperAdmin - Whether the user has the global super-admin flag
|
|
46
|
-
* @param accountFeatures - Account-level entitlements (e.g. bundle-granted)
|
|
47
|
-
* @returns true if the feature is enabled
|
|
48
|
-
*/
|
|
49
|
-
export declare function hasFeature(tier: QuotaTier, feature: FeatureFlag, featureOverrides?: Record<string, boolean> | null, isSuperAdmin?: boolean, accountFeatures?: readonly string[] | null): boolean;
|
|
@@ -107,19 +107,4 @@ export function resolveUserFeatures(tier, opts) {
|
|
|
107
107
|
// Return in canonical order
|
|
108
108
|
return ALL_FEATURE_FLAGS.filter(f => features.has(f));
|
|
109
109
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Check if a specific feature is enabled for a user. Delegates to
|
|
112
|
-
* {@link resolveUserFeatures} so it stays in lockstep — including account-level
|
|
113
|
-
* entitlements purchased via add-on bundles (`accountFeatures`).
|
|
114
|
-
*
|
|
115
|
-
* @param tier - The organization's quota tier
|
|
116
|
-
* @param feature - The feature flag to check
|
|
117
|
-
* @param featureOverrides - Per-user overrides
|
|
118
|
-
* @param isSuperAdmin - Whether the user has the global super-admin flag
|
|
119
|
-
* @param accountFeatures - Account-level entitlements (e.g. bundle-granted)
|
|
120
|
-
* @returns true if the feature is enabled
|
|
121
|
-
*/
|
|
122
|
-
export function hasFeature(tier, feature, featureOverrides, isSuperAdmin, accountFeatures) {
|
|
123
|
-
return resolveUserFeatures(tier, { overrides: featureOverrides, isSuperAdmin, accountFeatures }).includes(feature);
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUF5QnRDLGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDdkQsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxLQUFLO0lBQ0wsb0JBQW9CO0NBQ3JCLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWE7SUFDOUMsT0FBUSxpQkFBdUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELDBCQUEwQjtBQUUxQixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUE4QztJQUN0RSxTQUFTLEVBQUUsRUFBRTtJQUNiLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztJQUM3RCw4RUFBOEU7SUFDOUUsa0ZBQWtGO0lBQ2xGLCtFQUErRTtJQUMvRSwwRUFBMEU7SUFDMUUsSUFBSSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUM7SUFDbEYsVUFBVSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztDQUNuQyxDQUFDO0FBRUYsaUNBQWlDO0FBRWpDLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBZ0U7SUFDM0YsZ0JBQWdCLEVBQUU7UUFDaEIsS0FBSyxFQUFFLGtCQUFrQjtRQUN6QixXQUFXLEVBQUUsc0RBQXNEO0tBQ3BFO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsS0FBSyxFQUFFLGVBQWU7UUFDdEIsV0FBVyxFQUFFLDJDQUEyQztLQUN6RDtJQUNELGVBQWUsRUFBRTtRQUNmLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsV0FBVyxFQUFFLDREQUE0RDtLQUMxRTtJQUNELG1CQUFtQixFQUFFO1FBQ25CLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsV0FBVyxFQUFFLDJEQUEyRDtLQUN6RTtJQUNELFNBQVMsRUFBRTtRQUNULEtBQUssRUFBRSxXQUFXO1FBQ2xCLFdBQVcsRUFBRSxxREFBcUQ7S0FDbkU7SUFDRCxHQUFHLEVBQUU7UUFDSCxLQUFLLEVBQUUsV0FBVztRQUNsQixXQUFXLEVBQUUsOERBQThEO0tBQzVFO0lBQ0Qsa0JBQWtCLEVBQUU7UUFDbEIsS0FBSyxFQUFFLG9CQUFvQjtRQUMzQixXQUFXLEVBQUUsb0NBQW9DO0tBQ2xEO0NBQ0YsQ0FBQztBQUVGLG1CQUFtQjtBQUVuQjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsSUFBZSxFQUNmLElBSUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRWxGLCtDQUErQztJQUMvQyxJQUFJLFlBQVk7UUFBRSxPQUFPLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWhELDJCQUEyQjtJQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBYyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFakUsMEVBQTBFO0lBQzFFLDZFQUE2RTtJQUM3RSxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsU0FBUztZQUN2QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLElBQWUsRUFDZixPQUFvQixFQUNwQixnQkFBaUQsRUFDakQsWUFBc0IsRUFDdEIsZUFBMEM7SUFFMUMsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcblxuLy8gRmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzXG5cbi8qKiBDYW5vbmljYWwgZmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWcgPVxuICAvLyBgcHJpb3JpdHlfc3VwcG9ydGAgYW5kIGBjdXN0b21faW50ZWdyYXRpb25zYCBhcmUgRU5URVJQUklTRS1FWENMVVNJVkVcbiAgLy8gbWFya2V0aW5nL2VudGl0bGVtZW50IGZsYWdzOiBncmFudGVkIG9ubHkgYnkgdGhlIGVudGVycHJpc2UgdGllciAobm8gYWRkLW9uXG4gIC8vIGJ1bmRsZSBzZWxscyB0aGVtIHRvIGEgbG93ZXIgdGllciDigJQgaW50ZW50aW9uYWwsIHRoZXkgYW5jaG9yIHRoZSBFbnRlcnByaXNlXG4gIC8vIHBsYW4pIGFuZCBub3QgY3VycmVudGx5IGByZXF1aXJlRmVhdHVyZWAtZ2F0ZWQgb24gYW55IHJvdXRlICh0aGV5IHN1cmZhY2UgaW5cbiAgLy8gcGxhbiBtYXJrZXRpbmcgKyB0aGUgZW50aXRsZW1lbnQgc2V0OyBlbmZvcmNlbWVudCBpcyBhIGZ1dHVyZSBob29rKS4gVGhpcyBpc1xuICAvLyBieSBkZXNpZ24sIG5vdCBkZWFkIGNvZGUg4oCUIGRvIG5vdCBcImZpeFwiIGJ5IHdpcmluZyBhIGJ1bmRsZSB3aXRob3V0IGEgcHJpY2luZ1xuICAvLyBkZWNpc2lvbi4gQ29udHJhc3QgYGF1ZGl0X2xvZ2AvYHNzb2AvYGFkdmFuY2VkX3JlcG9ydGluZ2AsIHdoaWNoIEFSRSBzb2xkIGFzXG4gIC8vIGFkZC1vbiBidW5kbGVzIGFuZCBnYXRlZCAoc2VlIGJpbGxpbmctY29uZmlnIGBsb2FkQnVuZGxlc2AgKyBgcmVxdWlyZUZlYXR1cmVgKS5cbiAgfCAncHJpb3JpdHlfc3VwcG9ydCdcbiAgfCAnY3VzdG9tX2ludGVncmF0aW9ucydcbiAgfCAnYWlfZ2VuZXJhdGlvbidcbiAgfCAnYnVsa19vcGVyYXRpb25zJ1xuICB8ICdhdWRpdF9sb2cnXG4gIHwgJ3NzbydcbiAgLy8gRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcyAocGFpZCB0aWVycyBvbmx5KS5cbiAgfCAnYWR2YW5jZWRfcmVwb3J0aW5nJztcblxuLyoqIEFsbCB2YWxpZCBmZWF0dXJlIGZsYWdzIChvcmRlciBkZXRlcm1pbmVzIGRpc3BsYXkgb3JkZXIpLiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9GRUFUVVJFX0ZMQUdTOiByZWFkb25seSBGZWF0dXJlRmxhZ1tdID0gW1xuICAncHJpb3JpdHlfc3VwcG9ydCcsXG4gICdhaV9nZW5lcmF0aW9uJyxcbiAgJ2J1bGtfb3BlcmF0aW9ucycsXG4gICdjdXN0b21faW50ZWdyYXRpb25zJyxcbiAgJ2F1ZGl0X2xvZycsXG4gICdzc28nLFxuICAnYWR2YW5jZWRfcmVwb3J0aW5nJyxcbl07XG5cbi8qKiBDaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgRmVhdHVyZUZsYWcuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZlYXR1cmVGbGFnKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiAoQUxMX0ZFQVRVUkVfRkxBR1MgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuLy8gVGllci10by1mZWF0dXJlIG1hcHBpbmdcblxuLyoqIEZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgZWFjaCB0aWVyLiAqL1xuZXhwb3J0IGNvbnN0IFRJRVJfRkVBVFVSRVM6IFJlY29yZDxRdW90YVRpZXIsIHJlYWRvbmx5IEZlYXR1cmVGbGFnW10+ID0ge1xuICBkZXZlbG9wZXI6IFtdLFxuICBwcm86IFsncHJpb3JpdHlfc3VwcG9ydCcsICdhaV9nZW5lcmF0aW9uJywgJ2J1bGtfb3BlcmF0aW9ucyddLFxuICAvLyBUZWFtIGFkZHMgYXVkaXRfbG9nIChjb2xsYWJvcmF0aW9uL2dvdmVybmFuY2UpIGFuZCBzc28gKFNTTy9JZFAgaXMgSU5DTFVERURcbiAgLy8gaW4gVGVhbSwgbm90IGFuIGFkZC1vbikuIGFkdmFuY2VkX3JlcG9ydGluZyAoRE9SQSkgaXMgTk9UIGEgVGVhbSB0aWVyIGZlYXR1cmUg4oCUXG4gIC8vIGl0J3MgSU5DTFVERUQgb25seSBpbiBFbnRlcnByaXNlIGFuZCBzb2xkIGFzIGFuIGFkZC1vbiBidW5kbGUgdG8gZXZlcnkgb3RoZXJcbiAgLy8gdGllciAoc2VlIGJpbGxpbmctY29uZmlnIGBhZHZhbmNlZF9yZXBvcnRpbmdgKS4gRW50ZXJwcmlzZSB1bmxvY2tzIGFsbC5cbiAgdGVhbTogWydwcmlvcml0eV9zdXBwb3J0JywgJ2FpX2dlbmVyYXRpb24nLCAnYnVsa19vcGVyYXRpb25zJywgJ2F1ZGl0X2xvZycsICdzc28nXSxcbiAgZW50ZXJwcmlzZTogWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXSxcbn07XG5cbi8vIEZlYXR1cmUgbWV0YWRhdGEgKGZvciBkaXNwbGF5KVxuXG4vKiogSHVtYW4tcmVhZGFibGUgbWV0YWRhdGEgZm9yIGVhY2ggZmVhdHVyZSBmbGFnLiAqL1xuZXhwb3J0IGNvbnN0IEZFQVRVUkVfTUVUQURBVEE6IFJlY29yZDxGZWF0dXJlRmxhZywgeyBsYWJlbDogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+ID0ge1xuICBwcmlvcml0eV9zdXBwb3J0OiB7XG4gICAgbGFiZWw6ICdQcmlvcml0eSBTdXBwb3J0JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Zhc3RlciByZXNwb25zZSB0aW1lcyBhbmQgZGVkaWNhdGVkIHN1cHBvcnQgY2hhbm5lbHMnLFxuICB9LFxuICBhaV9nZW5lcmF0aW9uOiB7XG4gICAgbGFiZWw6ICdBSSBHZW5lcmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FJLXBvd2VyZWQgcGlwZWxpbmUgYW5kIHBsdWdpbiBnZW5lcmF0aW9uJyxcbiAgfSxcbiAgYnVsa19vcGVyYXRpb25zOiB7XG4gICAgbGFiZWw6ICdCdWxrIE9wZXJhdGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQmF0Y2ggY3JlYXRlLCB1cGRhdGUsIGFuZCBkZWxldGUgZm9yIHBpcGVsaW5lcyBhbmQgcGx1Z2lucycsXG4gIH0sXG4gIGN1c3RvbV9pbnRlZ3JhdGlvbnM6IHtcbiAgICBsYWJlbDogJ0N1c3RvbSBJbnRlZ3JhdGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29ubmVjdCB0byBleHRlcm5hbCBzZXJ2aWNlcyBhbmQgY3VzdG9tIHdlYmhvb2sgZW5kcG9pbnRzJyxcbiAgfSxcbiAgYXVkaXRfbG9nOiB7XG4gICAgbGFiZWw6ICdBdWRpdCBMb2cnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGV0YWlsZWQgYXVkaXQgdHJhaWwgb2YgYWxsIHVzZXIgYW5kIHN5c3RlbSBhY3Rpb25zJyxcbiAgfSxcbiAgc3NvOiB7XG4gICAgbGFiZWw6ICdTU08gLyBJZFAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2luZ2xlIHNpZ24tb24gYW5kIGV4dGVybmFsIGlkZW50aXR5LXByb3ZpZGVyIGNvbmZpZ3VyYXRpb25zJyxcbiAgfSxcbiAgYWR2YW5jZWRfcmVwb3J0aW5nOiB7XG4gICAgbGFiZWw6ICdBZHZhbmNlZCBSZXBvcnRpbmcnLFxuICAgIGRlc2NyaXB0aW9uOiAnRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcycsXG4gIH0sXG59O1xuXG4vLyBSZXNvbHV0aW9uIGxvZ2ljXG5cbi8qKlxuICogUmVzb2x2ZSBhIHVzZXIncyBlZmZlY3RpdmUgZmVhdHVyZSBzZXQuXG4gKlxuICogMS4gU3lzYWRtaW5zIChpc1N1cGVyQWRtaW4pIGFsd2F5cyBnZXQgQUxMIGZlYXR1cmVzLlxuICogMi4gU3RhcnQgd2l0aCB0aGUgdGllcidzIGRlZmF1bHQgZmVhdHVyZXMuXG4gKiAzLiBBcHBseSBwZXItdXNlciBvdmVycmlkZXM6IGB0cnVlYCBhZGRzIGEgZmVhdHVyZSwgYGZhbHNlYCByZW1vdmVzIGl0LlxuICogNC4gSW52YWxpZCBvdmVycmlkZSBrZXlzIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICpcbiAqIEBwYXJhbSB0aWVyIC0gVGhlIG9yZ2FuaXphdGlvbidzIHF1b3RhIHRpZXJcbiAqIEBwYXJhbSBvcHRzIC0gUmVzb2x1dGlvbiBvcHRpb25zOlxuICogICAtIGBvdmVycmlkZXNgOiBwZXItdXNlciBvdmVycmlkZXMgKGtleSA9IGZlYXR1cmUgZmxhZywgdmFsdWUgPSBlbmFibGVkKVxuICogICAtIGBpc1N1cGVyQWRtaW5gOiB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgZ2xvYmFsIHN1cGVyLWFkbWluIGZsYWdcbiAqICAgLSBgYWNjb3VudEZlYXR1cmVzYDogYWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKGUuZy4gcHVyY2hhc2VkIGFkZC1vblxuICogICAgIGJ1bmRsZXMpLiBBIE5BTUVEIGZpZWxkIHNvIGl0IGNhbiBuZXZlciBiZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGEgY2FsbGVyXG4gKiAgICAgdGhhdCBvbWl0cyBhIHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJnLlxuICogQHJldHVybnMgU29ydGVkIGFycmF5IG9mIGVuYWJsZWQgZmVhdHVyZSBmbGFnc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJGZWF0dXJlcyhcbiAgdGllcjogUXVvdGFUaWVyLFxuICBvcHRzPzoge1xuICAgIG92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHwgbnVsbDtcbiAgICBpc1N1cGVyQWRtaW4/OiBib29sZWFuO1xuICAgIGFjY291bnRGZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbDtcbiAgfSxcbik6IEZlYXR1cmVGbGFnW10ge1xuICBjb25zdCB7IG92ZXJyaWRlczogZmVhdHVyZU92ZXJyaWRlcywgaXNTdXBlckFkbWluLCBhY2NvdW50RmVhdHVyZXMgfSA9IG9wdHMgPz8ge307XG5cbiAgLy8gU3lzYWRtaW5zIGdldCBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgdGllci5cbiAgaWYgKGlzU3VwZXJBZG1pbikgcmV0dXJuIFsuLi5BTExfRkVBVFVSRV9GTEFHU107XG5cbiAgLy8gU3RhcnQgd2l0aCB0aWVyIGRlZmF1bHRzXG4gIGNvbnN0IGZlYXR1cmVzID0gbmV3IFNldDxGZWF0dXJlRmxhZz4oVElFUl9GRUFUVVJFU1t0aWVyXSA/PyBbXSk7XG5cbiAgLy8gQWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKHB1cmNoYXNlZCBmZWF0dXJlIGJ1bmRsZXMg4oCUIGF1ZGl0X2xvZy9zc28pLlxuICAvLyBBcHBsaWVkIGJlZm9yZSBwZXItdXNlciBvdmVycmlkZXMgc28gYW4gZXhwbGljaXQgdXNlciBvdmVycmlkZSBzdGlsbCB3aW5zLlxuICBpZiAoYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgICBpZiAoaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGZlYXR1cmVzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFwcGx5IHBlci11c2VyIG92ZXJyaWRlc1xuICBpZiAoZmVhdHVyZU92ZXJyaWRlcykge1xuICAgIGZvciAoY29uc3QgW2tleSwgZW5hYmxlZF0gb2YgT2JqZWN0LmVudHJpZXMoZmVhdHVyZU92ZXJyaWRlcykpIHtcbiAgICAgIGlmICghaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgZmVhdHVyZXMuYWRkKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZWF0dXJlcy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gaW4gY2Fub25pY2FsIG9yZGVyXG4gIHJldHVybiBBTExfRkVBVFVSRV9GTEFHUy5maWx0ZXIoZiA9PiBmZWF0dXJlcy5oYXMoZikpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3BlY2lmaWMgZmVhdHVyZSBpcyBlbmFibGVkIGZvciBhIHVzZXIuIERlbGVnYXRlcyB0b1xuICoge0BsaW5rIHJlc29sdmVVc2VyRmVhdHVyZXN9IHNvIGl0IHN0YXlzIGluIGxvY2tzdGVwIOKAlCBpbmNsdWRpbmcgYWNjb3VudC1sZXZlbFxuICogZW50aXRsZW1lbnRzIHB1cmNoYXNlZCB2aWEgYWRkLW9uIGJ1bmRsZXMgKGBhY2NvdW50RmVhdHVyZXNgKS5cbiAqXG4gKiBAcGFyYW0gdGllciAtIFRoZSBvcmdhbml6YXRpb24ncyBxdW90YSB0aWVyXG4gKiBAcGFyYW0gZmVhdHVyZSAtIFRoZSBmZWF0dXJlIGZsYWcgdG8gY2hlY2tcbiAqIEBwYXJhbSBmZWF0dXJlT3ZlcnJpZGVzIC0gUGVyLXVzZXIgb3ZlcnJpZGVzXG4gKiBAcGFyYW0gaXNTdXBlckFkbWluIC0gV2hldGhlciB0aGUgdXNlciBoYXMgdGhlIGdsb2JhbCBzdXBlci1hZG1pbiBmbGFnXG4gKiBAcGFyYW0gYWNjb3VudEZlYXR1cmVzIC0gQWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKGUuZy4gYnVuZGxlLWdyYW50ZWQpXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0ZlYXR1cmUoXG4gIHRpZXI6IFF1b3RhVGllcixcbiAgZmVhdHVyZTogRmVhdHVyZUZsYWcsXG4gIGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB8IG51bGwsXG4gIGlzU3VwZXJBZG1pbj86IGJvb2xlYW4sXG4gIGFjY291bnRGZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbCxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVzb2x2ZVVzZXJGZWF0dXJlcyh0aWVyLCB7IG92ZXJyaWRlczogZmVhdHVyZU92ZXJyaWRlcywgaXNTdXBlckFkbWluLCBhY2NvdW50RmVhdHVyZXMgfSkuaW5jbHVkZXMoZmVhdHVyZSk7XG59XG4iXX0=
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9mZWF0dXJlLWZsYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUF5QnRDLGdFQUFnRTtBQUNoRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkI7SUFDdkQsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLFdBQVc7SUFDWCxLQUFLO0lBQ0wsb0JBQW9CO0NBQ3JCLENBQUM7QUFFRixxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWE7SUFDOUMsT0FBUSxpQkFBdUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELDBCQUEwQjtBQUUxQixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUE4QztJQUN0RSxTQUFTLEVBQUUsRUFBRTtJQUNiLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztJQUM3RCw4RUFBOEU7SUFDOUUsa0ZBQWtGO0lBQ2xGLCtFQUErRTtJQUMvRSwwRUFBMEU7SUFDMUUsSUFBSSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUM7SUFDbEYsVUFBVSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztDQUNuQyxDQUFDO0FBRUYsaUNBQWlDO0FBRWpDLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBZ0U7SUFDM0YsZ0JBQWdCLEVBQUU7UUFDaEIsS0FBSyxFQUFFLGtCQUFrQjtRQUN6QixXQUFXLEVBQUUsc0RBQXNEO0tBQ3BFO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsS0FBSyxFQUFFLGVBQWU7UUFDdEIsV0FBVyxFQUFFLDJDQUEyQztLQUN6RDtJQUNELGVBQWUsRUFBRTtRQUNmLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsV0FBVyxFQUFFLDREQUE0RDtLQUMxRTtJQUNELG1CQUFtQixFQUFFO1FBQ25CLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsV0FBVyxFQUFFLDJEQUEyRDtLQUN6RTtJQUNELFNBQVMsRUFBRTtRQUNULEtBQUssRUFBRSxXQUFXO1FBQ2xCLFdBQVcsRUFBRSxxREFBcUQ7S0FDbkU7SUFDRCxHQUFHLEVBQUU7UUFDSCxLQUFLLEVBQUUsV0FBVztRQUNsQixXQUFXLEVBQUUsOERBQThEO0tBQzVFO0lBQ0Qsa0JBQWtCLEVBQUU7UUFDbEIsS0FBSyxFQUFFLG9CQUFvQjtRQUMzQixXQUFXLEVBQUUsb0NBQW9DO0tBQ2xEO0NBQ0YsQ0FBQztBQUVGLG1CQUFtQjtBQUVuQjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsSUFBZSxFQUNmLElBSUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRWxGLCtDQUErQztJQUMvQyxJQUFJLFlBQVk7UUFBRSxPQUFPLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWhELDJCQUEyQjtJQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBYyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFFakUsMEVBQTBFO0lBQzFFLDZFQUE2RTtJQUM3RSxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsU0FBUztZQUN2QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcblxuLy8gRmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzXG5cbi8qKiBDYW5vbmljYWwgZmVhdHVyZSBmbGFnIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IHR5cGUgRmVhdHVyZUZsYWcgPVxuICAvLyBgcHJpb3JpdHlfc3VwcG9ydGAgYW5kIGBjdXN0b21faW50ZWdyYXRpb25zYCBhcmUgRU5URVJQUklTRS1FWENMVVNJVkVcbiAgLy8gbWFya2V0aW5nL2VudGl0bGVtZW50IGZsYWdzOiBncmFudGVkIG9ubHkgYnkgdGhlIGVudGVycHJpc2UgdGllciAobm8gYWRkLW9uXG4gIC8vIGJ1bmRsZSBzZWxscyB0aGVtIHRvIGEgbG93ZXIgdGllciDigJQgaW50ZW50aW9uYWwsIHRoZXkgYW5jaG9yIHRoZSBFbnRlcnByaXNlXG4gIC8vIHBsYW4pIGFuZCBub3QgY3VycmVudGx5IGByZXF1aXJlRmVhdHVyZWAtZ2F0ZWQgb24gYW55IHJvdXRlICh0aGV5IHN1cmZhY2UgaW5cbiAgLy8gcGxhbiBtYXJrZXRpbmcgKyB0aGUgZW50aXRsZW1lbnQgc2V0OyBlbmZvcmNlbWVudCBpcyBhIGZ1dHVyZSBob29rKS4gVGhpcyBpc1xuICAvLyBieSBkZXNpZ24sIG5vdCBkZWFkIGNvZGUg4oCUIGRvIG5vdCBcImZpeFwiIGJ5IHdpcmluZyBhIGJ1bmRsZSB3aXRob3V0IGEgcHJpY2luZ1xuICAvLyBkZWNpc2lvbi4gQ29udHJhc3QgYGF1ZGl0X2xvZ2AvYHNzb2AvYGFkdmFuY2VkX3JlcG9ydGluZ2AsIHdoaWNoIEFSRSBzb2xkIGFzXG4gIC8vIGFkZC1vbiBidW5kbGVzIGFuZCBnYXRlZCAoc2VlIGJpbGxpbmctY29uZmlnIGBsb2FkQnVuZGxlc2AgKyBgcmVxdWlyZUZlYXR1cmVgKS5cbiAgfCAncHJpb3JpdHlfc3VwcG9ydCdcbiAgfCAnY3VzdG9tX2ludGVncmF0aW9ucydcbiAgfCAnYWlfZ2VuZXJhdGlvbidcbiAgfCAnYnVsa19vcGVyYXRpb25zJ1xuICB8ICdhdWRpdF9sb2cnXG4gIHwgJ3NzbydcbiAgLy8gRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcyAocGFpZCB0aWVycyBvbmx5KS5cbiAgfCAnYWR2YW5jZWRfcmVwb3J0aW5nJztcblxuLyoqIEFsbCB2YWxpZCBmZWF0dXJlIGZsYWdzIChvcmRlciBkZXRlcm1pbmVzIGRpc3BsYXkgb3JkZXIpLiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9GRUFUVVJFX0ZMQUdTOiByZWFkb25seSBGZWF0dXJlRmxhZ1tdID0gW1xuICAncHJpb3JpdHlfc3VwcG9ydCcsXG4gICdhaV9nZW5lcmF0aW9uJyxcbiAgJ2J1bGtfb3BlcmF0aW9ucycsXG4gICdjdXN0b21faW50ZWdyYXRpb25zJyxcbiAgJ2F1ZGl0X2xvZycsXG4gICdzc28nLFxuICAnYWR2YW5jZWRfcmVwb3J0aW5nJyxcbl07XG5cbi8qKiBDaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgRmVhdHVyZUZsYWcuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZlYXR1cmVGbGFnKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBGZWF0dXJlRmxhZyB7XG4gIHJldHVybiAoQUxMX0ZFQVRVUkVfRkxBR1MgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cblxuLy8gVGllci10by1mZWF0dXJlIG1hcHBpbmdcblxuLyoqIEZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgZWFjaCB0aWVyLiAqL1xuZXhwb3J0IGNvbnN0IFRJRVJfRkVBVFVSRVM6IFJlY29yZDxRdW90YVRpZXIsIHJlYWRvbmx5IEZlYXR1cmVGbGFnW10+ID0ge1xuICBkZXZlbG9wZXI6IFtdLFxuICBwcm86IFsncHJpb3JpdHlfc3VwcG9ydCcsICdhaV9nZW5lcmF0aW9uJywgJ2J1bGtfb3BlcmF0aW9ucyddLFxuICAvLyBUZWFtIGFkZHMgYXVkaXRfbG9nIChjb2xsYWJvcmF0aW9uL2dvdmVybmFuY2UpIGFuZCBzc28gKFNTTy9JZFAgaXMgSU5DTFVERURcbiAgLy8gaW4gVGVhbSwgbm90IGFuIGFkZC1vbikuIGFkdmFuY2VkX3JlcG9ydGluZyAoRE9SQSkgaXMgTk9UIGEgVGVhbSB0aWVyIGZlYXR1cmUg4oCUXG4gIC8vIGl0J3MgSU5DTFVERUQgb25seSBpbiBFbnRlcnByaXNlIGFuZCBzb2xkIGFzIGFuIGFkZC1vbiBidW5kbGUgdG8gZXZlcnkgb3RoZXJcbiAgLy8gdGllciAoc2VlIGJpbGxpbmctY29uZmlnIGBhZHZhbmNlZF9yZXBvcnRpbmdgKS4gRW50ZXJwcmlzZSB1bmxvY2tzIGFsbC5cbiAgdGVhbTogWydwcmlvcml0eV9zdXBwb3J0JywgJ2FpX2dlbmVyYXRpb24nLCAnYnVsa19vcGVyYXRpb25zJywgJ2F1ZGl0X2xvZycsICdzc28nXSxcbiAgZW50ZXJwcmlzZTogWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXSxcbn07XG5cbi8vIEZlYXR1cmUgbWV0YWRhdGEgKGZvciBkaXNwbGF5KVxuXG4vKiogSHVtYW4tcmVhZGFibGUgbWV0YWRhdGEgZm9yIGVhY2ggZmVhdHVyZSBmbGFnLiAqL1xuZXhwb3J0IGNvbnN0IEZFQVRVUkVfTUVUQURBVEE6IFJlY29yZDxGZWF0dXJlRmxhZywgeyBsYWJlbDogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nIH0+ID0ge1xuICBwcmlvcml0eV9zdXBwb3J0OiB7XG4gICAgbGFiZWw6ICdQcmlvcml0eSBTdXBwb3J0JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Zhc3RlciByZXNwb25zZSB0aW1lcyBhbmQgZGVkaWNhdGVkIHN1cHBvcnQgY2hhbm5lbHMnLFxuICB9LFxuICBhaV9nZW5lcmF0aW9uOiB7XG4gICAgbGFiZWw6ICdBSSBHZW5lcmF0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FJLXBvd2VyZWQgcGlwZWxpbmUgYW5kIHBsdWdpbiBnZW5lcmF0aW9uJyxcbiAgfSxcbiAgYnVsa19vcGVyYXRpb25zOiB7XG4gICAgbGFiZWw6ICdCdWxrIE9wZXJhdGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQmF0Y2ggY3JlYXRlLCB1cGRhdGUsIGFuZCBkZWxldGUgZm9yIHBpcGVsaW5lcyBhbmQgcGx1Z2lucycsXG4gIH0sXG4gIGN1c3RvbV9pbnRlZ3JhdGlvbnM6IHtcbiAgICBsYWJlbDogJ0N1c3RvbSBJbnRlZ3JhdGlvbnMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29ubmVjdCB0byBleHRlcm5hbCBzZXJ2aWNlcyBhbmQgY3VzdG9tIHdlYmhvb2sgZW5kcG9pbnRzJyxcbiAgfSxcbiAgYXVkaXRfbG9nOiB7XG4gICAgbGFiZWw6ICdBdWRpdCBMb2cnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGV0YWlsZWQgYXVkaXQgdHJhaWwgb2YgYWxsIHVzZXIgYW5kIHN5c3RlbSBhY3Rpb25zJyxcbiAgfSxcbiAgc3NvOiB7XG4gICAgbGFiZWw6ICdTU08gLyBJZFAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2luZ2xlIHNpZ24tb24gYW5kIGV4dGVybmFsIGlkZW50aXR5LXByb3ZpZGVyIGNvbmZpZ3VyYXRpb25zJyxcbiAgfSxcbiAgYWR2YW5jZWRfcmVwb3J0aW5nOiB7XG4gICAgbGFiZWw6ICdBZHZhbmNlZCBSZXBvcnRpbmcnLFxuICAgIGRlc2NyaXB0aW9uOiAnRE9SQSAvIGFkdmFuY2VkIGRlbGl2ZXJ5IGFuYWx5dGljcycsXG4gIH0sXG59O1xuXG4vLyBSZXNvbHV0aW9uIGxvZ2ljXG5cbi8qKlxuICogUmVzb2x2ZSBhIHVzZXIncyBlZmZlY3RpdmUgZmVhdHVyZSBzZXQuXG4gKlxuICogMS4gU3lzYWRtaW5zIChpc1N1cGVyQWRtaW4pIGFsd2F5cyBnZXQgQUxMIGZlYXR1cmVzLlxuICogMi4gU3RhcnQgd2l0aCB0aGUgdGllcidzIGRlZmF1bHQgZmVhdHVyZXMuXG4gKiAzLiBBcHBseSBwZXItdXNlciBvdmVycmlkZXM6IGB0cnVlYCBhZGRzIGEgZmVhdHVyZSwgYGZhbHNlYCByZW1vdmVzIGl0LlxuICogNC4gSW52YWxpZCBvdmVycmlkZSBrZXlzIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICpcbiAqIEBwYXJhbSB0aWVyIC0gVGhlIG9yZ2FuaXphdGlvbidzIHF1b3RhIHRpZXJcbiAqIEBwYXJhbSBvcHRzIC0gUmVzb2x1dGlvbiBvcHRpb25zOlxuICogICAtIGBvdmVycmlkZXNgOiBwZXItdXNlciBvdmVycmlkZXMgKGtleSA9IGZlYXR1cmUgZmxhZywgdmFsdWUgPSBlbmFibGVkKVxuICogICAtIGBpc1N1cGVyQWRtaW5gOiB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgZ2xvYmFsIHN1cGVyLWFkbWluIGZsYWdcbiAqICAgLSBgYWNjb3VudEZlYXR1cmVzYDogYWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKGUuZy4gcHVyY2hhc2VkIGFkZC1vblxuICogICAgIGJ1bmRsZXMpLiBBIE5BTUVEIGZpZWxkIHNvIGl0IGNhbiBuZXZlciBiZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGEgY2FsbGVyXG4gKiAgICAgdGhhdCBvbWl0cyBhIHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJnLlxuICogQHJldHVybnMgU29ydGVkIGFycmF5IG9mIGVuYWJsZWQgZmVhdHVyZSBmbGFnc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJGZWF0dXJlcyhcbiAgdGllcjogUXVvdGFUaWVyLFxuICBvcHRzPzoge1xuICAgIG92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHwgbnVsbDtcbiAgICBpc1N1cGVyQWRtaW4/OiBib29sZWFuO1xuICAgIGFjY291bnRGZWF0dXJlcz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbDtcbiAgfSxcbik6IEZlYXR1cmVGbGFnW10ge1xuICBjb25zdCB7IG92ZXJyaWRlczogZmVhdHVyZU92ZXJyaWRlcywgaXNTdXBlckFkbWluLCBhY2NvdW50RmVhdHVyZXMgfSA9IG9wdHMgPz8ge307XG5cbiAgLy8gU3lzYWRtaW5zIGdldCBldmVyeXRoaW5nIHJlZ2FyZGxlc3Mgb2YgdGllci5cbiAgaWYgKGlzU3VwZXJBZG1pbikgcmV0dXJuIFsuLi5BTExfRkVBVFVSRV9GTEFHU107XG5cbiAgLy8gU3RhcnQgd2l0aCB0aWVyIGRlZmF1bHRzXG4gIGNvbnN0IGZlYXR1cmVzID0gbmV3IFNldDxGZWF0dXJlRmxhZz4oVElFUl9GRUFUVVJFU1t0aWVyXSA/PyBbXSk7XG5cbiAgLy8gQWNjb3VudC1sZXZlbCBlbnRpdGxlbWVudHMgKHB1cmNoYXNlZCBmZWF0dXJlIGJ1bmRsZXMg4oCUIGF1ZGl0X2xvZy9zc28pLlxuICAvLyBBcHBsaWVkIGJlZm9yZSBwZXItdXNlciBvdmVycmlkZXMgc28gYW4gZXhwbGljaXQgdXNlciBvdmVycmlkZSBzdGlsbCB3aW5zLlxuICBpZiAoYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWNjb3VudEZlYXR1cmVzKSB7XG4gICAgICBpZiAoaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGZlYXR1cmVzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFwcGx5IHBlci11c2VyIG92ZXJyaWRlc1xuICBpZiAoZmVhdHVyZU92ZXJyaWRlcykge1xuICAgIGZvciAoY29uc3QgW2tleSwgZW5hYmxlZF0gb2YgT2JqZWN0LmVudHJpZXMoZmVhdHVyZU92ZXJyaWRlcykpIHtcbiAgICAgIGlmICghaXNWYWxpZEZlYXR1cmVGbGFnKGtleSkpIGNvbnRpbnVlO1xuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgZmVhdHVyZXMuYWRkKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZWF0dXJlcy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gaW4gY2Fub25pY2FsIG9yZGVyXG4gIHJldHVybiBBTExfRkVBVFVSRV9GTEFHUy5maWx0ZXIoZiA9PiBmZWF0dXJlcy5oYXMoZikpO1xufVxuIl19
|
package/lib/utils/aws-scrub.js
CHANGED
|
@@ -41,6 +41,12 @@ export function scrubAwsIdentifiers(value) {
|
|
|
41
41
|
return value.map((v) => scrubAwsIdentifiers(v));
|
|
42
42
|
}
|
|
43
43
|
if (value && typeof value === 'object') {
|
|
44
|
+
// Only recurse PLAIN objects. A Date/Buffer/Map/class instance is not a
|
|
45
|
+
// plain object, and walking it via Object.entries would clobber it to `{}`
|
|
46
|
+
// (or a byte map) — silently destroying e.g. a Date held in audit `details`
|
|
47
|
+
// or event `detail`. Leave any non-plain object untouched.
|
|
48
|
+
if (Object.getPrototypeOf(value) !== Object.prototype)
|
|
49
|
+
return value;
|
|
44
50
|
const out = {};
|
|
45
51
|
for (const [k, v] of Object.entries(value)) {
|
|
46
52
|
if (ACCOUNT_KEY_RE.test(k) && (typeof v === 'string' || typeof v === 'number')) {
|
|
@@ -54,4 +60,4 @@ export function scrubAwsIdentifiers(value) {
|
|
|
54
60
|
}
|
|
55
61
|
return value;
|
|
56
62
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNjcnViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2F3cy1zY3J1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7OztHQVdHO0FBRUgsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRTlCOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDO0FBRWpELG9GQUFvRjtBQUNwRixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFFbEMsbUdBQW1HO0FBQ25HLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUFhO0lBQ3pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxLQUFRO0lBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyw2QkFBNkIsQ0FBQyxLQUFLLENBQWlCLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7SUFDbEUsQ0FBQztJQUNELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLHdFQUF3RTtRQUN4RSwyRUFBMkU7UUFDM0UsNEVBQTRFO1FBQzVFLDJEQUEyRDtRQUMzRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNwRSxNQUFNLEdBQUcsR0FBNEIsRUFBRSxDQUFDO1FBQ3hDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdDLENBQUMsRUFBRSxDQUFDO1lBQ3RFLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUmVkYWN0IEFXUyBhY2NvdW50IGlkZW50aWZpZXJzIGZyb20gdmFsdWVzIGhlYWRlZCBmb3IgYSBEVVJBQkxFIHN0b3JlIG9yIGFuXG4gKiBvdXRib3VuZCBwYXlsb2FkIChhdWRpdCBgZGV0YWlsc2AsIGluZ2VzdGVkIGV2ZW50IGBkZXRhaWxgLCBlcnJvciBtZXNzYWdlcykuXG4gKlxuICogSEFSRCBDT05TVFJBSU5UOiBhbiBBV1MgYWNjb3VudCBpZCBtdXN0IE5FVkVSIGJlIHBlcnNpc3RlZCBhbnl3aGVyZSBpbiB0aGlzXG4gKiBzeXN0ZW0g4oCUIGBvcmdJZGAgaXMgdGhlIG1hcmtldHBsYWNlIGBjdXN0b21lcklkZW50aWZpZXJgLCBuZXZlciBhbiBBV1MgYWNjb3VudFxuICogaWQuIEFXUyBzdXJmYWNlcyAoQ29kZVBpcGVsaW5lL0NvZGVCdWlsZCBmYWlsdXJlIG1lc3NhZ2VzLCBLTVMvcm9sZSBBUk5zKSBsZWFrXG4gKiB0aGUgYWNjb3VudCBpZCBhcyB0aGUgNXRoIEFSTiBzZWdtZW50IG9yIGFzIGEgYmFyZSAxMi1kaWdpdCB0b2tlbiwgc28gc2NydWIgYXRcbiAqIGV2ZXJ5IGJvdW5kYXJ5IHRoYXQgd3JpdGVzIHVudHJ1c3RlZCBBV1MtZGVyaXZlZCB0ZXh0LiBEZWZlbnNlLWluLWRlcHRoOiBhcHBseVxuICogdGhpcyBldmVuIHdoZW4gYW4gdXBzdHJlYW0gKGUuZy4gdGhlIGV2ZW50cyBMYW1iZGEpIGlzIGV4cGVjdGVkIHRvIGhhdmVcbiAqIHN0cmlwcGVkIGl0IOKAlCB0aGUgcGVyc2lzdGVuY2UgYm91bmRhcnkgbXVzdCBub3QgdHJ1c3QgdXBzdHJlYW0uXG4gKi9cblxuY29uc3QgUkVEQUNURUQgPSAnW1JFREFDVEVEXSc7XG5cbi8qKlxuICogQSAxMi1kaWdpdCBydW4gaXMgdGhlIEFXUyBhY2NvdW50LWlkIHNoYXBlIChhbmQgdGhlIGFjY291bnQgc2VnbWVudCBvZiBldmVyeVxuICogQVJOKS4gQm91bmRlZCBieSBub24tZGlnaXRzIHNvIHdlIG5ldmVyIGNsaXAgaW5zaWRlIGEgbG9uZ2VyIG51bWJlciAoZS5nLiBhXG4gKiAxMy1kaWdpdCBtaWxsaXNlY29uZCB0aW1lc3RhbXAgaXMgbGVmdCBpbnRhY3QpLlxuICovXG5jb25zdCBBV1NfQUNDT1VOVF9JRF9SRSA9IC8oPzwhXFxkKVxcZHsxMn0oPyFcXGQpL2c7XG5cbi8qKiBLZXlzIHRoYXQgbmFtZSBhbiBBV1MgYWNjb3VudCBpZCBvdXRyaWdodCDigJQgdGhlaXIgdmFsdWUgaXMgZHJvcHBlZCB3aG9sZXNhbGUuICovXG5jb25zdCBBQ0NPVU5UX0tFWV9SRSA9IC9hY2NvdW50L2k7XG5cbi8qKiBSZWRhY3QgZXZlcnkgQVdTLWFjY291bnQtaWQtc2hhcGVkIHRva2VuIChpbmNsLiB0aGUgYWNjb3VudCBmaWVsZCBvZiBhbnkgQVJOKSBmcm9tIGEgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcnViQXdzSWRlbnRpZmllcnNGcm9tU3RyaW5nKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZShBV1NfQUNDT1VOVF9JRF9SRSwgUkVEQUNURUQpO1xufVxuXG4vKipcbiAqIERlZXAtc2NydWIgYSB2YWx1ZSAoc3RyaW5nIC8gYXJyYXkgLyBwbGFpbiBvYmplY3QpIG9mIEFXUyBhY2NvdW50IGlkZW50aWZpZXJzLFxuICogcmV0dXJuaW5nIGEgc2NydWJiZWQgY29weSDigJQgdGhlIGlucHV0IGlzIG5ldmVyIG11dGF0ZWQuIFN0cmluZyB2YWx1ZXMgaGF2ZVxuICogYWNjb3VudC1pZCB0b2tlbnMgcmVkYWN0ZWQ7IGFueSBrZXkgbWF0Y2hpbmcge0BsaW5rIEFDQ09VTlRfS0VZX1JFfSB3aXRoIGFcbiAqIHN0cmluZy9udW1iZXIgdmFsdWUgaXMgcmVkYWN0ZWQgd2hvbGVzYWxlLiBOb24tc3RyaW5nIHByaW1pdGl2ZXMgcGFzcyB0aHJvdWdoXG4gKiB1bmNoYW5nZWQgKGEgYmFyZSBudW1iZXIgaXMgb25seSByZWRhY3RlZCB3aGVuIGl0IHNpdHMgdW5kZXIgYW4gYWNjb3VudC1uYW1lZFxuICoga2V5LCB0byBhdm9pZCBjbG9iYmVyaW5nIGxlZ2l0aW1hdGUgbnVtZXJpYyBmaWVsZHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NydWJBd3NJZGVudGlmaWVyczxUPih2YWx1ZTogVCk6IFQge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzY3J1YkF3c0lkZW50aWZpZXJzRnJvbVN0cmluZyh2YWx1ZSkgYXMgdW5rbm93biBhcyBUO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoKHYpID0+IHNjcnViQXdzSWRlbnRpZmllcnModikpIGFzIHVua25vd24gYXMgVDtcbiAgfVxuICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIC8vIE9ubHkgcmVjdXJzZSBQTEFJTiBvYmplY3RzLiBBIERhdGUvQnVmZmVyL01hcC9jbGFzcyBpbnN0YW5jZSBpcyBub3QgYVxuICAgIC8vIHBsYWluIG9iamVjdCwgYW5kIHdhbGtpbmcgaXQgdmlhIE9iamVjdC5lbnRyaWVzIHdvdWxkIGNsb2JiZXIgaXQgdG8gYHt9YFxuICAgIC8vIChvciBhIGJ5dGUgbWFwKSDigJQgc2lsZW50bHkgZGVzdHJveWluZyBlLmcuIGEgRGF0ZSBoZWxkIGluIGF1ZGl0IGBkZXRhaWxzYFxuICAgIC8vIG9yIGV2ZW50IGBkZXRhaWxgLiBMZWF2ZSBhbnkgbm9uLXBsYWluIG9iamVjdCB1bnRvdWNoZWQuXG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgIT09IE9iamVjdC5wcm90b3R5cGUpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBpZiAoQUNDT1VOVF9LRVlfUkUudGVzdChrKSAmJiAodHlwZW9mIHYgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgb3V0W2tdID0gUkVEQUNURUQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRba10gPSBzY3J1YkF3c0lkZW50aWZpZXJzKHYpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0IGFzIFQ7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
package/lib/utils/identity.d.ts
CHANGED
|
@@ -38,24 +38,3 @@ export interface RequestIdentity {
|
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
40
|
export declare function getIdentity(req: HttpRequest): RequestIdentity;
|
|
41
|
-
/**
|
|
42
|
-
* Validate that required identity fields are present.
|
|
43
|
-
*
|
|
44
|
-
* @param identity - Identity object to validate
|
|
45
|
-
* @param required - Array of required field names
|
|
46
|
-
* @returns Object with isValid boolean and missing fields array
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```typescript
|
|
50
|
-
* const identity = getIdentity(req);
|
|
51
|
-
* const validation = validateIdentity(identity, ['orgId', 'userId']);
|
|
52
|
-
*
|
|
53
|
-
* if (!validation.isValid) {
|
|
54
|
-
* return sendError(res, 400, `Missing required headers: ${validation.missing.join(', ')}`);
|
|
55
|
-
* }
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export declare function validateIdentity(identity: RequestIdentity, required: (keyof RequestIdentity)[]): {
|
|
59
|
-
isValid: boolean;
|
|
60
|
-
missing: string[];
|
|
61
|
-
};
|
package/lib/utils/identity.js
CHANGED
|
@@ -39,33 +39,4 @@ export function getIdentity(req) {
|
|
|
39
39
|
role: user?.role || getHeaderString(req.headers['x-user-role']),
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
* Validate that required identity fields are present.
|
|
44
|
-
*
|
|
45
|
-
* @param identity - Identity object to validate
|
|
46
|
-
* @param required - Array of required field names
|
|
47
|
-
* @returns Object with isValid boolean and missing fields array
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* const identity = getIdentity(req);
|
|
52
|
-
* const validation = validateIdentity(identity, ['orgId', 'userId']);
|
|
53
|
-
*
|
|
54
|
-
* if (!validation.isValid) {
|
|
55
|
-
* return sendError(res, 400, `Missing required headers: ${validation.missing.join(', ')}`);
|
|
56
|
-
* }
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
export function validateIdentity(identity, required) {
|
|
60
|
-
const missing = [];
|
|
61
|
-
for (const field of required) {
|
|
62
|
-
if (!identity[field]) {
|
|
63
|
-
missing.push(`x-${field.replace(/([A-Z])/g, '-$1').toLowerCase()}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return {
|
|
67
|
-
isValid: missing.length === 0,
|
|
68
|
-
missing,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBaUIvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFnQjtJQUMxQyxvRUFBb0U7SUFDcEUsdUVBQXVFO0lBQ3ZFLHVFQUF1RTtJQUN2RSxvREFBb0Q7SUFDcEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN0QixPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUksRUFBRSxjQUFjLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUQsU0FBUyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLFFBQXlCLEVBQ3pCLFFBQW1DO0lBRW5DLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUU3QixLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDN0IsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGdldEhlYWRlclN0cmluZyB9IGZyb20gJy4vaGVhZGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IEh0dHBSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvaHR0cC5qcyc7XG5cbi8qKlxuICogSWRlbnRpdHkgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gcmVxdWVzdCBoZWFkZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RJZGVudGl0eSB7XG4gIC8qKiBPcmdhbml6YXRpb24gSUQgZnJvbSB4LW9yZy1pZCBoZWFkZXIgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG4gIC8qKiBVc2VyIElEIGZyb20geC11c2VyLWlkIGhlYWRlciAqL1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIC8qKiBSZXF1ZXN0IElEIGZyb20geC1yZXF1ZXN0LWlkIGhlYWRlciAqL1xuICByZWFkb25seSByZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gIC8qKiBVc2VyIHJvbGUgZnJvbSB4LXVzZXItcm9sZSBoZWFkZXIgKGRlY29kZWQgZnJvbSBKV1QpICovXG4gIHJlYWRvbmx5IHJvbGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0cmFjdCBpZGVudGl0eSBpbmZvcm1hdGlvbiBmcm9tIHJlcXVlc3QgaGVhZGVycy5cbiAqXG4gKiBFeHRyYWN0cyBjb21tb24gaWRlbnRpdHkgaGVhZGVycyB1c2VkIGZvciBtdWx0aS10ZW5hbnQgYXV0aGVudGljYXRpb246XG4gKiAtIHgtb3JnLWlkOiBPcmdhbml6YXRpb24gaWRlbnRpZmllclxuICogLSB4LXVzZXItaWQ6IFVzZXIgaWRlbnRpZmllclxuICogLSB4LXJlcXVlc3QtaWQ6IFJlcXVlc3QgdHJhY2UgaWRlbnRpZmllclxuICogLSB4LXVzZXItcm9sZTogVXNlciByb2xlXG4gKlxuICogQHBhcmFtIHJlcSAtIEhUVFAgcmVxdWVzdCBvYmplY3RcbiAqIEByZXR1cm5zIElkZW50aXR5IG9iamVjdCB3aXRoIG9yZ0lkLCB1c2VySWQsIHJlcXVlc3RJZCwgYW5kIHJvbGVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXBwLnBvc3QoJy9hcGkvcmVzb3VyY2UnLCByZXF1aXJlQXV0aCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gKiAgIGNvbnN0IGlkZW50aXR5ID0gZ2V0SWRlbnRpdHkocmVxKTtcbiAqXG4gKiAgIGlmICghaWRlbnRpdHkub3JnSWQpIHtcbiAqICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAneC1vcmctaWQgaGVhZGVyIHJlcXVpcmVkJyk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIFVzZSBpZGVudGl0eS5vcmdJZCwgaWRlbnRpdHkudXNlcklkLCBldGMuXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpdHkocmVxOiBIdHRwUmVxdWVzdCk6IFJlcXVlc3RJZGVudGl0eSB7XG4gIC8vIFByZWZlciBKV1QtdmVyaWZpZWQgY2xhaW1zIChyZXEudXNlcikgb3ZlciByYXcgaGVhZGVycyB0byBwcmV2ZW50XG4gIC8vIHNwb29maW5nLiBIZWFkZXJzIGFyZSBvbmx5IHVzZWQgYXMgZmFsbGJhY2sgb3IgZm9yIGZpZWxkcyBub3QgaW4gdGhlXG4gIC8vIEpXVCAoZS5nLiByZXF1ZXN0SWQpLiBUaGUgSldUIHBheWxvYWQgdXNlcyBgc3ViYCBmb3IgdGhlIHVzZXIgaWQgcGVyXG4gIC8vIE9JREMgY29udmVudGlvbjsgdGhhdCdzIG91ciBhdXRob3JpdGF0aXZlIHNvdXJjZS5cbiAgY29uc3QgdXNlciA9IHJlcS51c2VyO1xuICByZXR1cm4ge1xuICAgIG9yZ0lkOiB1c2VyPy5vcmdhbml6YXRpb25JZCB8fCBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtb3JnLWlkJ10pLFxuICAgIHVzZXJJZDogdXNlcj8uc3ViIHx8IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC11c2VyLWlkJ10pLFxuICAgIHJlcXVlc3RJZDogZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LXJlcXVlc3QtaWQnXSksXG4gICAgcm9sZTogdXNlcj8ucm9sZSB8fCBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtdXNlci1yb2xlJ10pLFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgcmVxdWlyZWQgaWRlbnRpdHkgZmllbGRzIGFyZSBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSBpZGVudGl0eSAtIElkZW50aXR5IG9iamVjdCB0byB2YWxpZGF0ZVxuICogQHBhcmFtIHJlcXVpcmVkIC0gQXJyYXkgb2YgcmVxdWlyZWQgZmllbGQgbmFtZXNcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGlzVmFsaWQgYm9vbGVhbiBhbmQgbWlzc2luZyBmaWVsZHMgYXJyYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaWRlbnRpdHkgPSBnZXRJZGVudGl0eShyZXEpO1xuICogY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlSWRlbnRpdHkoaWRlbnRpdHksIFsnb3JnSWQnLCAndXNlcklkJ10pO1xuICpcbiAqIGlmICghdmFsaWRhdGlvbi5pc1ZhbGlkKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsIGBNaXNzaW5nIHJlcXVpcmVkIGhlYWRlcnM6ICR7dmFsaWRhdGlvbi5taXNzaW5nLmpvaW4oJywgJyl9YCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlSWRlbnRpdHkoXG4gIGlkZW50aXR5OiBSZXF1ZXN0SWRlbnRpdHksXG4gIHJlcXVpcmVkOiAoa2V5b2YgUmVxdWVzdElkZW50aXR5KVtdLFxuKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtaXNzaW5nOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgbWlzc2luZzogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIHJlcXVpcmVkKSB7XG4gICAgaWYgKCFpZGVudGl0eVtmaWVsZF0pIHtcbiAgICAgIG1pc3NpbmcucHVzaChgeC0ke2ZpZWxkLnJlcGxhY2UoLyhbQS1aXSkvZywgJy0kMScpLnRvTG93ZXJDYXNlKCl9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpc1ZhbGlkOiBtaXNzaW5nLmxlbmd0aCA9PT0gMCxcbiAgICBtaXNzaW5nLFxuICB9O1xufVxuIl19
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBaUIvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFnQjtJQUMxQyxvRUFBb0U7SUFDcEUsdUVBQXVFO0lBQ3ZFLHVFQUF1RTtJQUN2RSxvREFBb0Q7SUFDcEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN0QixPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUksRUFBRSxjQUFjLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUQsU0FBUyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGdldEhlYWRlclN0cmluZyB9IGZyb20gJy4vaGVhZGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IEh0dHBSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvaHR0cC5qcyc7XG5cbi8qKlxuICogSWRlbnRpdHkgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gcmVxdWVzdCBoZWFkZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RJZGVudGl0eSB7XG4gIC8qKiBPcmdhbml6YXRpb24gSUQgZnJvbSB4LW9yZy1pZCBoZWFkZXIgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG4gIC8qKiBVc2VyIElEIGZyb20geC11c2VyLWlkIGhlYWRlciAqL1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIC8qKiBSZXF1ZXN0IElEIGZyb20geC1yZXF1ZXN0LWlkIGhlYWRlciAqL1xuICByZWFkb25seSByZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gIC8qKiBVc2VyIHJvbGUgZnJvbSB4LXVzZXItcm9sZSBoZWFkZXIgKGRlY29kZWQgZnJvbSBKV1QpICovXG4gIHJlYWRvbmx5IHJvbGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0cmFjdCBpZGVudGl0eSBpbmZvcm1hdGlvbiBmcm9tIHJlcXVlc3QgaGVhZGVycy5cbiAqXG4gKiBFeHRyYWN0cyBjb21tb24gaWRlbnRpdHkgaGVhZGVycyB1c2VkIGZvciBtdWx0aS10ZW5hbnQgYXV0aGVudGljYXRpb246XG4gKiAtIHgtb3JnLWlkOiBPcmdhbml6YXRpb24gaWRlbnRpZmllclxuICogLSB4LXVzZXItaWQ6IFVzZXIgaWRlbnRpZmllclxuICogLSB4LXJlcXVlc3QtaWQ6IFJlcXVlc3QgdHJhY2UgaWRlbnRpZmllclxuICogLSB4LXVzZXItcm9sZTogVXNlciByb2xlXG4gKlxuICogQHBhcmFtIHJlcSAtIEhUVFAgcmVxdWVzdCBvYmplY3RcbiAqIEByZXR1cm5zIElkZW50aXR5IG9iamVjdCB3aXRoIG9yZ0lkLCB1c2VySWQsIHJlcXVlc3RJZCwgYW5kIHJvbGVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXBwLnBvc3QoJy9hcGkvcmVzb3VyY2UnLCByZXF1aXJlQXV0aCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gKiAgIGNvbnN0IGlkZW50aXR5ID0gZ2V0SWRlbnRpdHkocmVxKTtcbiAqXG4gKiAgIGlmICghaWRlbnRpdHkub3JnSWQpIHtcbiAqICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAneC1vcmctaWQgaGVhZGVyIHJlcXVpcmVkJyk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIFVzZSBpZGVudGl0eS5vcmdJZCwgaWRlbnRpdHkudXNlcklkLCBldGMuXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpdHkocmVxOiBIdHRwUmVxdWVzdCk6IFJlcXVlc3RJZGVudGl0eSB7XG4gIC8vIFByZWZlciBKV1QtdmVyaWZpZWQgY2xhaW1zIChyZXEudXNlcikgb3ZlciByYXcgaGVhZGVycyB0byBwcmV2ZW50XG4gIC8vIHNwb29maW5nLiBIZWFkZXJzIGFyZSBvbmx5IHVzZWQgYXMgZmFsbGJhY2sgb3IgZm9yIGZpZWxkcyBub3QgaW4gdGhlXG4gIC8vIEpXVCAoZS5nLiByZXF1ZXN0SWQpLiBUaGUgSldUIHBheWxvYWQgdXNlcyBgc3ViYCBmb3IgdGhlIHVzZXIgaWQgcGVyXG4gIC8vIE9JREMgY29udmVudGlvbjsgdGhhdCdzIG91ciBhdXRob3JpdGF0aXZlIHNvdXJjZS5cbiAgY29uc3QgdXNlciA9IHJlcS51c2VyO1xuICByZXR1cm4ge1xuICAgIG9yZ0lkOiB1c2VyPy5vcmdhbml6YXRpb25JZCB8fCBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtb3JnLWlkJ10pLFxuICAgIHVzZXJJZDogdXNlcj8uc3ViIHx8IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC11c2VyLWlkJ10pLFxuICAgIHJlcXVlc3RJZDogZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LXJlcXVlc3QtaWQnXSksXG4gICAgcm9sZTogdXNlcj8ucm9sZSB8fCBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtdXNlci1yb2xlJ10pLFxuICB9O1xufVxuIl19
|
package/lib/utils/params.d.ts
CHANGED
|
@@ -36,25 +36,6 @@ export declare function getParam(params: Record<string, ParamValue>, key: string
|
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
38
|
export declare function getOrgId(req: Request): string | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* Get the authorization header from request.
|
|
41
|
-
*
|
|
42
|
-
* @param req - Express request object
|
|
43
|
-
* @returns Authorization header value or empty string
|
|
44
|
-
*/
|
|
45
|
-
export declare function getAuthHeader(req: Request): string;
|
|
46
|
-
/**
|
|
47
|
-
* Parse a query parameter as a boolean.
|
|
48
|
-
*
|
|
49
|
-
* @param value - Query parameter value
|
|
50
|
-
* @returns Parsed boolean or undefined
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```typescript
|
|
54
|
-
* const isActive = parseQueryBoolean(req.query.isActive);
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export declare function parseQueryBoolean(value: unknown): boolean | undefined;
|
|
58
39
|
/**
|
|
59
40
|
* Parse a query parameter as an integer.
|
|
60
41
|
*
|
package/lib/utils/params.js
CHANGED
|
@@ -60,40 +60,6 @@ export function getOrgId(req) {
|
|
|
60
60
|
}
|
|
61
61
|
return undefined;
|
|
62
62
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Get the authorization header from request.
|
|
65
|
-
*
|
|
66
|
-
* @param req - Express request object
|
|
67
|
-
* @returns Authorization header value or empty string
|
|
68
|
-
*/
|
|
69
|
-
export function getAuthHeader(req) {
|
|
70
|
-
return getHeaderString(req.headers.authorization) ?? '';
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Parse a query parameter as a boolean.
|
|
74
|
-
*
|
|
75
|
-
* @param value - Query parameter value
|
|
76
|
-
* @returns Parsed boolean or undefined
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```typescript
|
|
80
|
-
* const isActive = parseQueryBoolean(req.query.isActive);
|
|
81
|
-
* ```
|
|
82
|
-
*/
|
|
83
|
-
export function parseQueryBoolean(value) {
|
|
84
|
-
if (value === undefined || value === null || value === '')
|
|
85
|
-
return undefined;
|
|
86
|
-
if (typeof value === 'boolean')
|
|
87
|
-
return value;
|
|
88
|
-
if (typeof value === 'string') {
|
|
89
|
-
const lower = value.toLowerCase();
|
|
90
|
-
if (lower === 'true' || lower === '1')
|
|
91
|
-
return true;
|
|
92
|
-
if (lower === 'false' || lower === '0')
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
return undefined;
|
|
96
|
-
}
|
|
97
63
|
/**
|
|
98
64
|
* Parse a query parameter as an integer.
|
|
99
65
|
*
|
|
@@ -237,4 +203,4 @@ export function parseDateRange(query, options = {}) {
|
|
|
237
203
|
}
|
|
238
204
|
return { from: fromStr, to: toStr };
|
|
239
205
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPL0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBa0MsRUFDbEMsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVk7SUFDbkMsNkVBQTZFO0lBQzdFLDJFQUEyRTtJQUMzRSw2REFBNkQ7SUFDN0QseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUs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QUcsVUFBVSxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxpQ0FBaUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzRyxDQUFDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBnZXRIZWFkZXJTdHJpbmcgfSBmcm9tICcuL2hlYWRlcnMuanMnO1xuXG4vKipcbiAqIEV4cHJlc3MgNSBwYXJhbWV0ZXIgdHlwZS5cbiAqL1xudHlwZSBQYXJhbVZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogRXh0cmFjdCBhIHNpbmdsZSBzdHJpbmcgcGFyYW1ldGVyIGZyb20gRXhwcmVzcyA1IHJvdXRlIHBhcmFtcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUmVxdWVzdCBwYXJhbXMgb2JqZWN0XG4gKiBAcGFyYW0ga2V5IC0gUGFyYW1ldGVyIGtleVxuICogQHJldHVybnMgVGhlIHBhcmFtZXRlciB2YWx1ZSBhcyBhIHN0cmluZywgb3IgdW5kZWZpbmVkIGlmIG5vdCBwcmVzZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFJvdXRlOiBHRVQgL3BsdWdpbnMvOmlkXG4gKiBjb25zdCBpZCA9IGdldFBhcmFtKHJlcS5wYXJhbXMsICdpZCcpO1xuICogaWYgKCFpZCkge1xuICogICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAnTWlzc2luZyBpZCBwYXJhbWV0ZXInKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW0oXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgUGFyYW1WYWx1ZT4sXG4gIGtleTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlWzBdIDogdmFsdWU7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgb3JnYW5pemF0aW9uIElEIGZyb20gcmVxdWVzdC5cbiAqIENoZWNrcyBwYXJhbXMsIGhlYWRlcnMsIGFuZCB1c2VyIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcmVxIC0gRXhwcmVzcyByZXF1ZXN0IG9iamVjdFxuICogQHJldHVybnMgT3JnYW5pemF0aW9uIElEIG9yIHVuZGVmaW5lZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcmdJZCA9IGdldE9yZ0lkKHJlcSk7XG4gKiBpZiAoIW9yZ0lkKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICdPcmdhbml6YXRpb24gSUQgcmVxdWlyZWQnKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JnSWQocmVxOiBSZXF1ZXN0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gUHJlZmVyIHRoZSBWRVJJRklFRCBKV1QgaWRlbnRpdHkgZmlyc3QuIEEgc3Bvb2ZhYmxlIGB4LW9yZy1pZGAgaGVhZGVyIG11c3RcbiAgLy8gbmV2ZXIgb3ZlcnJpZGUgYW4gYXV0aGVudGljYXRlZCB1c2VyJ3Mgb3JnIChjcm9zcy10ZW5hbnQgZm9vdGd1bikuIEZvciBhXG4gIC8vIHN1cGVyYWRtaW4gYWN0aW5nIGNyb3NzLW9yZywgcmVxdWlyZUF1dGggYWxyZWFkeSByZS1wb2ludHNcbiAgLy8gYHJlcS51c2VyLm9yZ2FuaXphdGlvbklkYCB0byB0aGUgY2hvc2VuIG9yZyB2aWEgdGhlIGlzU3VwZXJBZG1pbi1nYXRlZFxuICAvLyBoZWFkZXIgb3ZlcnJpZGUsIHNvIHRoaXMgc3RpbGwgeWllbGRzIHRoZSBpbnRlbmRlZCBzY29wZS5cbiAgY29uc3QgdXNlck9yZ0lkID0gcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkPy50cmltKCk7XG4gIGlmICh1c2VyT3JnSWQpIHtcbiAgICByZXR1cm4gdXNlck9yZ0lkO1xuICB9XG5cbiAgLy8gUHJlLWF1dGggZmFsbGJhY2tzIG9ubHkgKHJlcS51c2VyIHVuc2V0KTogcm91dGUgcGFyYW0sIHRoZW4gaGVhZGVyLlxuICBjb25zdCBwYXJhbU9yZ0lkID0gZ2V0UGFyYW0ocmVxLnBhcmFtcywgJ29yZ0lkJyk7XG4gIGlmIChwYXJhbU9yZ0lkKSB7XG4gICAgcmV0dXJuIHBhcmFtT3JnSWQ7XG4gIH1cblxuICBjb25zdCBoZWFkZXJPcmdJZCA9IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC1vcmctaWQnXSk/LnRyaW0oKTtcbiAgaWYgKGhlYWRlck9yZ0lkKSB7XG4gICAgcmV0dXJuIGhlYWRlck9yZ0lkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIGZyb20gcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0gcmVxIC0gRXhwcmVzcyByZXF1ZXN0IG9iamVjdFxuICogQHJldHVybnMgQXV0aG9yaXphdGlvbiBoZWFkZXIgdmFsdWUgb3IgZW1wdHkgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBdXRoSGVhZGVyKHJlcTogUmVxdWVzdCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvbikgPz8gJyc7XG59XG5cbi8qKlxuICogUGFyc2UgYSBxdWVyeSBwYXJhbWV0ZXIgYXMgYSBib29sZWFuLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFF1ZXJ5IHBhcmFtZXRlciB2YWx1ZVxuICogQHJldHVybnMgUGFyc2VkIGJvb2xlYW4gb3IgdW5kZWZpbmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGlzQWN0aXZlID0gcGFyc2VRdWVyeUJvb2xlYW4ocmVxLnF1ZXJ5LmlzQWN0aXZlKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeUJvb2xlYW4odmFsdWU6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlciA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyID09PSAndHJ1ZScgfHwgbG93ZXIgPT09ICcxJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGxvd2VyID09PSAnZmFsc2UnIHx8IGxvd2VyID09PSAnMCcpIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgcGFyYW1ldGVyIGFzIGFuIGludGVnZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gUXVlcnkgcGFyYW1ldGVyIHZhbHVlXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIC0gRGVmYXVsdCB2YWx1ZSBpZiBwYXJzaW5nIGZhaWxzXG4gKiBAcmV0dXJucyBQYXJzZWQgaW50ZWdlclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsaW1pdCA9IHBhcnNlUXVlcnlJbnQocmVxLnF1ZXJ5LmxpbWl0LCAxMCk7XG4gKiBjb25zdCBvZmZzZXQgPSBwYXJzZVF1ZXJ5SW50KHJlcS5xdWVyeS5vZmZzZXQsIDApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVF1ZXJ5SW50KHZhbHVlOiB1bmtub3duLCBkZWZhdWx0VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQoU3RyaW5nKHZhbHVlKSwgMTApO1xuICByZXR1cm4gaXNOYU4ocGFyc2VkKSA/IGRlZmF1bHRWYWx1ZSA6IHBhcnNlZDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IHBhcmFtZXRlciBhcyBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBRdWVyeSBwYXJhbWV0ZXIgdmFsdWVcbiAqIEByZXR1cm5zIFN0cmluZyB2YWx1ZSBvciB1bmRlZmluZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2VhcmNoID0gcGFyc2VRdWVyeVN0cmluZyhyZXEucXVlcnkuc2VhcmNoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBzdHJpbmcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyLCByZXR1cm5pbmcgYSBmYWxsYmFjayBpZiBpbnZhbGlkLlxuICogVXNlZnVsIGZvciBwYXJzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIG51bWVyaWMgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBvc2l0aXZlSW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsbGJhY2s7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSAmJiBwYXJzZWQgPiAwID8gcGFyc2VkIDogZmFsbGJhY2s7XG59XG5cbi8qKlxuICogUGFyc2UgYSBxdWVyeSBpbnQsIHRoZW4gY2xhbXAgdG8gYFsxLCBtYXhdYC4gUmV0dXJucyBgZGVmYXVsdFZhbHVlYCAoYWZ0ZXJcbiAqIHRoZSBzYW1lIGNsYW1wKSB3aGVuIHRoZSBpbnB1dCBpcyBtaXNzaW5nL2ludmFsaWQuIFVzZSBmb3IgYGxpbWl0YC1zdHlsZVxuICogcXVlcnkgcGFyYW1ldGVycyB3aGVyZSBhbiB1bmJvdW5kZWQgdmFsdWUgd291bGQgY29zdCByZWFsIG1vbmV5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsaW1pdCA9IHBhcnNlUXVlcnlJbnRDbGFtcGVkKHJlcS5xdWVyeS5saW1pdCwgNTAsIDEwMDApO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeUludENsYW1wZWQoXG4gIHZhbHVlOiB1bmtub3duLFxuICBkZWZhdWx0VmFsdWU6IG51bWJlcixcbiAgbWF4OiBudW1iZXIsXG4pOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBwYXJzZVF1ZXJ5SW50KHZhbHVlLCBkZWZhdWx0VmFsdWUpO1xuICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5taW4ocmF3LCBtYXgpKTtcbn1cblxuLyoqXG4gKiBCdWxrLWFycmF5IHJlcXVlc3QgZ3VhcmQuIFZhbGlkYXRlcyB0aGF0IGB2YWx1ZWAgaXMgYW4gYXJyYXksIG5vbi1lbXB0eSxcbiAqIGFuZCB3aXRoaW4gdGhlIGNvbmZpZ3VyZWQgY2FwLiBSZXR1cm5zIHRoZSB0eXBlZCBhcnJheSBvciBhbiBlcnJvciBvYmplY3RcbiAqIHRoZSBjYWxsZXIgY2FuIGZvcndhcmQgdG8gYHNlbmRFcnJvcmAvYHNlbmRCYWRSZXF1ZXN0YC5cbiAqXG4gKiBSZXBsYWNlcyBhIGhhbmQtcm9sbGVkIGBpZiAoIUFycmF5LmlzQXJyYXkoLi4uKSkgeyAuLi4gfWAgKyBsZW5ndGggY2hlY2tcbiAqIGJsb2NrIHRoYXQgd2FzIGR1cGxpY2F0ZWQgYWNyb3NzIGJ1bGsgZW5kcG9pbnRzIGluIHBpcGVsaW5lLCBwbHVnaW4sXG4gKiBjb21wbGlhbmNlLCBldGMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlQnVsa0FycmF5KHJlcS5ib2R5LmlkcywgJ2lkcycpO1xuICogaWYgKCdlcnJvcicgaW4gcmVzdWx0KSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByZXN1bHQuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqIGNvbnN0IGlkcyA9IHJlc3VsdC52YWx1ZTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQnVsa0FycmF5PFQgPSB1bmtub3duPihcbiAgdmFsdWU6IHVua25vd24sXG4gIGZpZWxkTmFtZTogc3RyaW5nLFxuICBtYXhJdGVtcz86IG51bWJlcixcbik6IHsgdmFsdWU6IFRbXSB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IGVycm9yOiBgUmVxdWVzdCBib2R5IG11c3QgaW5jbHVkZSBhIG5vbi1lbXB0eSBcIiR7ZmllbGROYW1lfVwiIGFycmF5YCB9O1xuICB9XG4gIC8vIENvcmVDb25zdGFudHMuTUFYX0JVTEtfSVRFTVMgaXNuJ3QgaW1wb3J0ZWQgaGVyZSB0byBhdm9pZCBhIGNpcmN1bGFyXG4gIC8vIHBhdGggdGhyb3VnaCBjb25zdGFudHMvaW5kZXg7IGNhbGxlcnMgcGFzcyBpdCBleHBsaWNpdGx5IG9yIG9taXQgZm9yXG4gIC8vIG5vIHVwcGVyIGJvdW5kLlxuICBpZiAobWF4SXRlbXMgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhJdGVtcykge1xuICAgIHJldHVybiB7IGVycm9yOiBgTWF4aW11bSAke21heEl0ZW1zfSBpdGVtcyBwZXIgYnVsayBvcGVyYXRpb25gIH07XG4gIH1cbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlIGFzIFRbXSB9O1xufVxuXG4vKipcbiAqIFN1cHBvcnRlZCBpbnRlcnZhbHMgZm9yIHRpbWUtYnVja2V0ZWQgcmVwb3J0IHF1ZXJpZXMuIFVzZWQgYXMgdGhlXG4gKiBgREFURV9UUlVOQ2AgZmlyc3QgYXJndW1lbnQgaW4gUG9zdGdyZXM7IHJlc3RyaWN0ZWQgdG8gYSBmaXhlZCBlbnVtIHNvXG4gKiB0aGUgdmFsdWUgY2FuIG5ldmVyIGJlIGluamVjdGVkIGludG8gcmF3IFNRTC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9JTlRFUlZBTFMgPSBbJ2RheScsICd3ZWVrJywgJ21vbnRoJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSZXBvcnRJbnRlcnZhbCA9ICh0eXBlb2YgUkVQT1JUX0lOVEVSVkFMUylbbnVtYmVyXTtcblxuLyoqXG4gKiBQYXJzZSArIHZhbGlkYXRlIGEgYD9pbnRlcnZhbD1gIHJlcG9ydCBidWNrZXQgKGRlZmF1bHRzIHRvICd3ZWVrJykuIFJldHVybnMgdGhlXG4gKiB2YWxpZGF0ZWQgaW50ZXJ2YWwgb3IgYHsgZXJyb3IgfWAuIFNoYXJlZCBieSB0aGUgdGltZXNlcmllcyByZXBvcnQgcm91dGVzIHNvIHRoZVxuICogZGVmYXVsdCArIGFsbG93LWxpc3QgKyBlcnJvciBtZXNzYWdlIGxpdmUgaW4gb25lIHBsYWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBpbnRlcnZhbCA9IHBhcnNlUmVwb3J0SW50ZXJ2YWwocmVxLnF1ZXJ5KTtcbiAqIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdvYmplY3QnKSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCBpbnRlcnZhbC5lcnJvciwgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXBvcnRJbnRlcnZhbChxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZXBvcnRJbnRlcnZhbCB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBTdHJpbmcocXVlcnkuaW50ZXJ2YWwgPz8gJ3dlZWsnKTtcbiAgaWYgKCFSRVBPUlRfSU5URVJWQUxTLmluY2x1ZGVzKGludGVydmFsIGFzIFJlcG9ydEludGVydmFsKSkge1xuICAgIHJldHVybiB7IGVycm9yOiBgaW50ZXJ2YWwgbXVzdCBiZSBvbmUgb2Y6ICR7UkVQT1JUX0lOVEVSVkFMUy5qb2luKCcsICcpfWAgfTtcbiAgfVxuICByZXR1cm4gaW50ZXJ2YWwgYXMgUmVwb3J0SW50ZXJ2YWw7XG59XG5cbi8qKlxuICogUGFyc2UgYSBgP2Zyb209JnRvPWAgZGF0ZSByYW5nZSB3aXRoIGRlZmF1bHRzIG9mIFwiMzAgZGF5cyBhZ28g4oaSIG5vd1wiLlxuICogUmVqZWN0cyBub24tc3RyaW5nIGlucHV0cyAoRXhwcmVzcydzIHBhcnNlciBjYW4gcHJvZHVjZSBzdHJpbmdbXSBmb3JcbiAqIHJlcGVhdGVkIGtleXMpLCBpbnZhbGlkIElTTyB0aW1lc3RhbXBzLCBhbmQgaW52ZXJ0ZWQgcmFuZ2VzLlxuICpcbiAqIFJldHVybnMgZWl0aGVyIGB7IGZyb20sIHRvIH1gIElTTyBzdHJpbmdzIG9yIGB7IGVycm9yIH1gLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByYW5nZSA9IHBhcnNlRGF0ZVJhbmdlKHJlcS5xdWVyeSk7XG4gKiBpZiAoJ2Vycm9yJyBpbiByYW5nZSkgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmFuZ2UuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqIGNvbnN0IHJvd3MgPSBhd2FpdCBzdmMubGlzdChyYW5nZS5mcm9tLCByYW5nZS50byk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVSYW5nZShcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiB7IG1heFJhbmdlTXM/OiBudW1iZXI7IGRlZmF1bHREYXlzQmFjaz86IG51bWJlciB9ID0ge30sXG4pOiB7IGZyb206IHN0cmluZzsgdG86IHN0cmluZyB9IHwgeyBlcnJvcjogc3RyaW5nIH0ge1xuICBjb25zdCB7IG1heFJhbmdlTXMsIGRlZmF1bHREYXlzQmFjayA9IDMwIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHJhd0Zyb20gPSBxdWVyeS5mcm9tO1xuICBjb25zdCByYXdUbyA9IHF1ZXJ5LnRvO1xuXG4gIGlmIChyYXdGcm9tICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHJhd0Zyb20gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBtdXN0IGJlIGEgc2luZ2xlIElTTyB0aW1lc3RhbXAgc3RyaW5nJyB9O1xuICB9XG4gIGlmIChyYXdUbyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiByYXdUbyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBlcnJvcjogJ1widG9cIiBtdXN0IGJlIGEgc2luZ2xlIElTTyB0aW1lc3RhbXAgc3RyaW5nJyB9O1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZnJvbVN0ciA9IHJhd0Zyb20gPz8gbmV3IERhdGUobm93IC0gZGVmYXVsdERheXNCYWNrICogMjQgKiA2MCAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKTtcbiAgY29uc3QgdG9TdHIgPSByYXdUbyA/PyBuZXcgRGF0ZShub3cpLnRvSVNPU3RyaW5nKCk7XG5cbiAgY29uc3QgZnJvbU1zID0gRGF0ZS5wYXJzZShmcm9tU3RyKTtcbiAgY29uc3QgdG9NcyA9IERhdGUucGFyc2UodG9TdHIpO1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZShmcm9tTXMpKSByZXR1cm4geyBlcnJvcjogJ1wiZnJvbVwiIGlzIG5vdCBhIHZhbGlkIElTTyB0aW1lc3RhbXAnIH07XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHRvTXMpKSByZXR1cm4geyBlcnJvcjogJ1widG9cIiBpcyBub3QgYSB2YWxpZCBJU08gdGltZXN0YW1wJyB9O1xuICBpZiAoZnJvbU1zID4gdG9NcykgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBtdXN0IGJlIGVhcmxpZXIgdGhhbiBcInRvXCInIH07XG4gIGlmIChtYXhSYW5nZU1zICE9PSB1bmRlZmluZWQgJiYgdG9NcyAtIGZyb21NcyA+IG1heFJhbmdlTXMpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYERhdGUgcmFuZ2UgZXhjZWVkcyBtYXhpbXVtIG9mICR7TWF0aC5mbG9vcihtYXhSYW5nZU1zIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKX0gZGF5c2AgfTtcbiAgfVxuXG4gIHJldHVybiB7IGZyb206IGZyb21TdHIsIHRvOiB0b1N0ciB9O1xufVxuIl19
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmFtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPL0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBa0MsRUFDbEMsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVk7SUFDbkMsNkVBQTZFO0lBQzdFLDJFQUEyRTtJQUMzRSw2REFBNkQ7SUFDN0QseUVBQXlFO0lBQ3pFLDREQUE0RDtJQUM1RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHNFQUFzRTtJQUN0RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUs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QUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFDQUFxQyxFQUFFLENBQUM7SUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxDQUFDO0lBQ2xGLElBQUksTUFBTSxHQUFHLElBQUk7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFLENBQUM7SUFDeEUsSUFBSSxVQUFVLEtBQUssU0FBUyxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxpQ0FBaUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzRyxDQUFDO0lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBnZXRIZWFkZXJTdHJpbmcgfSBmcm9tICcuL2hlYWRlcnMuanMnO1xuXG4vKipcbiAqIEV4cHJlc3MgNSBwYXJhbWV0ZXIgdHlwZS5cbiAqL1xudHlwZSBQYXJhbVZhbHVlID0gc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogRXh0cmFjdCBhIHNpbmdsZSBzdHJpbmcgcGFyYW1ldGVyIGZyb20gRXhwcmVzcyA1IHJvdXRlIHBhcmFtcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUmVxdWVzdCBwYXJhbXMgb2JqZWN0XG4gKiBAcGFyYW0ga2V5IC0gUGFyYW1ldGVyIGtleVxuICogQHJldHVybnMgVGhlIHBhcmFtZXRlciB2YWx1ZSBhcyBhIHN0cmluZywgb3IgdW5kZWZpbmVkIGlmIG5vdCBwcmVzZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFJvdXRlOiBHRVQgL3BsdWdpbnMvOmlkXG4gKiBjb25zdCBpZCA9IGdldFBhcmFtKHJlcS5wYXJhbXMsICdpZCcpO1xuICogaWYgKCFpZCkge1xuICogICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAnTWlzc2luZyBpZCBwYXJhbWV0ZXInKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW0oXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgUGFyYW1WYWx1ZT4sXG4gIGtleTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlWzBdIDogdmFsdWU7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgb3JnYW5pemF0aW9uIElEIGZyb20gcmVxdWVzdC5cbiAqIENoZWNrcyBwYXJhbXMsIGhlYWRlcnMsIGFuZCB1c2VyIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcmVxIC0gRXhwcmVzcyByZXF1ZXN0IG9iamVjdFxuICogQHJldHVybnMgT3JnYW5pemF0aW9uIElEIG9yIHVuZGVmaW5lZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcmdJZCA9IGdldE9yZ0lkKHJlcSk7XG4gKiBpZiAoIW9yZ0lkKSB7XG4gKiAgIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICdPcmdhbml6YXRpb24gSUQgcmVxdWlyZWQnKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JnSWQocmVxOiBSZXF1ZXN0KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gUHJlZmVyIHRoZSBWRVJJRklFRCBKV1QgaWRlbnRpdHkgZmlyc3QuIEEgc3Bvb2ZhYmxlIGB4LW9yZy1pZGAgaGVhZGVyIG11c3RcbiAgLy8gbmV2ZXIgb3ZlcnJpZGUgYW4gYXV0aGVudGljYXRlZCB1c2VyJ3Mgb3JnIChjcm9zcy10ZW5hbnQgZm9vdGd1bikuIEZvciBhXG4gIC8vIHN1cGVyYWRtaW4gYWN0aW5nIGNyb3NzLW9yZywgcmVxdWlyZUF1dGggYWxyZWFkeSByZS1wb2ludHNcbiAgLy8gYHJlcS51c2VyLm9yZ2FuaXphdGlvbklkYCB0byB0aGUgY2hvc2VuIG9yZyB2aWEgdGhlIGlzU3VwZXJBZG1pbi1nYXRlZFxuICAvLyBoZWFkZXIgb3ZlcnJpZGUsIHNvIHRoaXMgc3RpbGwgeWllbGRzIHRoZSBpbnRlbmRlZCBzY29wZS5cbiAgY29uc3QgdXNlck9yZ0lkID0gcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkPy50cmltKCk7XG4gIGlmICh1c2VyT3JnSWQpIHtcbiAgICByZXR1cm4gdXNlck9yZ0lkO1xuICB9XG5cbiAgLy8gUHJlLWF1dGggZmFsbGJhY2tzIG9ubHkgKHJlcS51c2VyIHVuc2V0KTogcm91dGUgcGFyYW0sIHRoZW4gaGVhZGVyLlxuICBjb25zdCBwYXJhbU9yZ0lkID0gZ2V0UGFyYW0ocmVxLnBhcmFtcywgJ29yZ0lkJyk7XG4gIGlmIChwYXJhbU9yZ0lkKSB7XG4gICAgcmV0dXJuIHBhcmFtT3JnSWQ7XG4gIH1cblxuICBjb25zdCBoZWFkZXJPcmdJZCA9IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC1vcmctaWQnXSk/LnRyaW0oKTtcbiAgaWYgKGhlYWRlck9yZ0lkKSB7XG4gICAgcmV0dXJuIGhlYWRlck9yZ0lkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHF1ZXJ5IHBhcmFtZXRlciBhcyBhbiBpbnRlZ2VyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFF1ZXJ5IHBhcmFtZXRlciB2YWx1ZVxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIERlZmF1bHQgdmFsdWUgaWYgcGFyc2luZyBmYWlsc1xuICogQHJldHVybnMgUGFyc2VkIGludGVnZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGltaXQgPSBwYXJzZVF1ZXJ5SW50KHJlcS5xdWVyeS5saW1pdCwgMTApO1xuICogY29uc3Qgb2Zmc2V0ID0gcGFyc2VRdWVyeUludChyZXEucXVlcnkub2Zmc2V0LCAwKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VRdWVyeUludCh2YWx1ZTogdW5rbm93biwgZGVmYXVsdFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KFN0cmluZyh2YWx1ZSksIDEwKTtcbiAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyBkZWZhdWx0VmFsdWUgOiBwYXJzZWQ7XG59XG5cbi8qKlxuICogUGFyc2UgYSBxdWVyeSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gUXVlcnkgcGFyYW1ldGVyIHZhbHVlXG4gKiBAcmV0dXJucyBTdHJpbmcgdmFsdWUgb3IgdW5kZWZpbmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlYXJjaCA9IHBhcnNlUXVlcnlTdHJpbmcocmVxLnF1ZXJ5LnNlYXJjaCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgc3RyaW5nIHRvIGEgcG9zaXRpdmUgaW50ZWdlciwgcmV0dXJuaW5nIGEgZmFsbGJhY2sgaWYgaW52YWxpZC5cbiAqIFVzZWZ1bCBmb3IgcGFyc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBudW1lcmljIGRlZmF1bHRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3NpdGl2ZUludCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbGxiYWNrO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgJiYgcGFyc2VkID4gMCA/IHBhcnNlZCA6IGZhbGxiYWNrO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgaW50LCB0aGVuIGNsYW1wIHRvIGBbMSwgbWF4XWAuIFJldHVybnMgYGRlZmF1bHRWYWx1ZWAgKGFmdGVyXG4gKiB0aGUgc2FtZSBjbGFtcCkgd2hlbiB0aGUgaW5wdXQgaXMgbWlzc2luZy9pbnZhbGlkLiBVc2UgZm9yIGBsaW1pdGAtc3R5bGVcbiAqIHF1ZXJ5IHBhcmFtZXRlcnMgd2hlcmUgYW4gdW5ib3VuZGVkIHZhbHVlIHdvdWxkIGNvc3QgcmVhbCBtb25leS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGltaXQgPSBwYXJzZVF1ZXJ5SW50Q2xhbXBlZChyZXEucXVlcnkubGltaXQsIDUwLCAxMDAwKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnlJbnRDbGFtcGVkKFxuICB2YWx1ZTogdW5rbm93bixcbiAgZGVmYXVsdFZhbHVlOiBudW1iZXIsXG4gIG1heDogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgY29uc3QgcmF3ID0gcGFyc2VRdWVyeUludCh2YWx1ZSwgZGVmYXVsdFZhbHVlKTtcbiAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGgubWluKHJhdywgbWF4KSk7XG59XG5cbi8qKlxuICogQnVsay1hcnJheSByZXF1ZXN0IGd1YXJkLiBWYWxpZGF0ZXMgdGhhdCBgdmFsdWVgIGlzIGFuIGFycmF5LCBub24tZW1wdHksXG4gKiBhbmQgd2l0aGluIHRoZSBjb25maWd1cmVkIGNhcC4gUmV0dXJucyB0aGUgdHlwZWQgYXJyYXkgb3IgYW4gZXJyb3Igb2JqZWN0XG4gKiB0aGUgY2FsbGVyIGNhbiBmb3J3YXJkIHRvIGBzZW5kRXJyb3JgL2BzZW5kQmFkUmVxdWVzdGAuXG4gKlxuICogUmVwbGFjZXMgYSBoYW5kLXJvbGxlZCBgaWYgKCFBcnJheS5pc0FycmF5KC4uLikpIHsgLi4uIH1gICsgbGVuZ3RoIGNoZWNrXG4gKiBibG9jayB0aGF0IHdhcyBkdXBsaWNhdGVkIGFjcm9zcyBidWxrIGVuZHBvaW50cyBpbiBwaXBlbGluZSwgcGx1Z2luLFxuICogY29tcGxpYW5jZSwgZXRjLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZUJ1bGtBcnJheShyZXEuYm9keS5pZHMsICdpZHMnKTtcbiAqIGlmICgnZXJyb3InIGluIHJlc3VsdCkgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmVzdWx0LmVycm9yLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gKiBjb25zdCBpZHMgPSByZXN1bHQudmFsdWU7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJ1bGtBcnJheTxUID0gdW5rbm93bj4oXG4gIHZhbHVlOiB1bmtub3duLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgbWF4SXRlbXM/OiBudW1iZXIsXG4pOiB7IHZhbHVlOiBUW10gfSB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBlcnJvcjogYFJlcXVlc3QgYm9keSBtdXN0IGluY2x1ZGUgYSBub24tZW1wdHkgXCIke2ZpZWxkTmFtZX1cIiBhcnJheWAgfTtcbiAgfVxuICAvLyBDb3JlQ29uc3RhbnRzLk1BWF9CVUxLX0lURU1TIGlzbid0IGltcG9ydGVkIGhlcmUgdG8gYXZvaWQgYSBjaXJjdWxhclxuICAvLyBwYXRoIHRocm91Z2ggY29uc3RhbnRzL2luZGV4OyBjYWxsZXJzIHBhc3MgaXQgZXhwbGljaXRseSBvciBvbWl0IGZvclxuICAvLyBubyB1cHBlciBib3VuZC5cbiAgaWYgKG1heEl0ZW1zICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoID4gbWF4SXRlbXMpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYE1heGltdW0gJHttYXhJdGVtc30gaXRlbXMgcGVyIGJ1bGsgb3BlcmF0aW9uYCB9O1xuICB9XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSBhcyBUW10gfTtcbn1cblxuLyoqXG4gKiBTdXBwb3J0ZWQgaW50ZXJ2YWxzIGZvciB0aW1lLWJ1Y2tldGVkIHJlcG9ydCBxdWVyaWVzLiBVc2VkIGFzIHRoZVxuICogYERBVEVfVFJVTkNgIGZpcnN0IGFyZ3VtZW50IGluIFBvc3RncmVzOyByZXN0cmljdGVkIHRvIGEgZml4ZWQgZW51bSBzb1xuICogdGhlIHZhbHVlIGNhbiBuZXZlciBiZSBpbmplY3RlZCBpbnRvIHJhdyBTUUwuXG4gKi9cbmV4cG9ydCBjb25zdCBSRVBPUlRfSU5URVJWQUxTID0gWydkYXknLCAnd2VlaycsICdtb250aCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmVwb3J0SW50ZXJ2YWwgPSAodHlwZW9mIFJFUE9SVF9JTlRFUlZBTFMpW251bWJlcl07XG5cbi8qKlxuICogUGFyc2UgKyB2YWxpZGF0ZSBhIGA/aW50ZXJ2YWw9YCByZXBvcnQgYnVja2V0IChkZWZhdWx0cyB0byAnd2VlaycpLiBSZXR1cm5zIHRoZVxuICogdmFsaWRhdGVkIGludGVydmFsIG9yIGB7IGVycm9yIH1gLiBTaGFyZWQgYnkgdGhlIHRpbWVzZXJpZXMgcmVwb3J0IHJvdXRlcyBzbyB0aGVcbiAqIGRlZmF1bHQgKyBhbGxvdy1saXN0ICsgZXJyb3IgbWVzc2FnZSBsaXZlIGluIG9uZSBwbGFjZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgaW50ZXJ2YWwgPSBwYXJzZVJlcG9ydEludGVydmFsKHJlcS5xdWVyeSk7XG4gKiBpZiAodHlwZW9mIGludGVydmFsID09PSAnb2JqZWN0JykgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgaW50ZXJ2YWwuZXJyb3IsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVwb3J0SW50ZXJ2YWwocXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVwb3J0SW50ZXJ2YWwgfCB7IGVycm9yOiBzdHJpbmcgfSB7XG4gIGNvbnN0IGludGVydmFsID0gU3RyaW5nKHF1ZXJ5LmludGVydmFsID8/ICd3ZWVrJyk7XG4gIGlmICghUkVQT1JUX0lOVEVSVkFMUy5pbmNsdWRlcyhpbnRlcnZhbCBhcyBSZXBvcnRJbnRlcnZhbCkpIHtcbiAgICByZXR1cm4geyBlcnJvcjogYGludGVydmFsIG11c3QgYmUgb25lIG9mOiAke1JFUE9SVF9JTlRFUlZBTFMuam9pbignLCAnKX1gIH07XG4gIH1cbiAgcmV0dXJuIGludGVydmFsIGFzIFJlcG9ydEludGVydmFsO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgYD9mcm9tPSZ0bz1gIGRhdGUgcmFuZ2Ugd2l0aCBkZWZhdWx0cyBvZiBcIjMwIGRheXMgYWdvIOKGkiBub3dcIi5cbiAqIFJlamVjdHMgbm9uLXN0cmluZyBpbnB1dHMgKEV4cHJlc3MncyBwYXJzZXIgY2FuIHByb2R1Y2Ugc3RyaW5nW10gZm9yXG4gKiByZXBlYXRlZCBrZXlzKSwgaW52YWxpZCBJU08gdGltZXN0YW1wcywgYW5kIGludmVydGVkIHJhbmdlcy5cbiAqXG4gKiBSZXR1cm5zIGVpdGhlciBgeyBmcm9tLCB0byB9YCBJU08gc3RyaW5ncyBvciBgeyBlcnJvciB9YC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmFuZ2UgPSBwYXJzZURhdGVSYW5nZShyZXEucXVlcnkpO1xuICogaWYgKCdlcnJvcicgaW4gcmFuZ2UpIHJldHVybiBzZW5kQmFkUmVxdWVzdChyZXMsIHJhbmdlLmVycm9yLCBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUik7XG4gKiBjb25zdCByb3dzID0gYXdhaXQgc3ZjLmxpc3QocmFuZ2UuZnJvbSwgcmFuZ2UudG8pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEYXRlUmFuZ2UoXG4gIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0aW9uczogeyBtYXhSYW5nZU1zPzogbnVtYmVyOyBkZWZhdWx0RGF5c0JhY2s/OiBudW1iZXIgfSA9IHt9LFxuKTogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSB8IHsgZXJyb3I6IHN0cmluZyB9IHtcbiAgY29uc3QgeyBtYXhSYW5nZU1zLCBkZWZhdWx0RGF5c0JhY2sgPSAzMCB9ID0gb3B0aW9ucztcblxuICBjb25zdCByYXdGcm9tID0gcXVlcnkuZnJvbTtcbiAgY29uc3QgcmF3VG8gPSBxdWVyeS50bztcblxuICBpZiAocmF3RnJvbSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiByYXdGcm9tICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7IGVycm9yOiAnXCJmcm9tXCIgbXVzdCBiZSBhIHNpbmdsZSBJU08gdGltZXN0YW1wIHN0cmluZycgfTtcbiAgfVxuICBpZiAocmF3VG8gIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcmF3VG8gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6ICdcInRvXCIgbXVzdCBiZSBhIHNpbmdsZSBJU08gdGltZXN0YW1wIHN0cmluZycgfTtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZyb21TdHIgPSByYXdGcm9tID8/IG5ldyBEYXRlKG5vdyAtIGRlZmF1bHREYXlzQmFjayAqIDI0ICogNjAgKiA2MCAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHRvU3RyID0gcmF3VG8gPz8gbmV3IERhdGUobm93KS50b0lTT1N0cmluZygpO1xuXG4gIGNvbnN0IGZyb21NcyA9IERhdGUucGFyc2UoZnJvbVN0cik7XG4gIGNvbnN0IHRvTXMgPSBEYXRlLnBhcnNlKHRvU3RyKTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZnJvbU1zKSkgcmV0dXJuIHsgZXJyb3I6ICdcImZyb21cIiBpcyBub3QgYSB2YWxpZCBJU08gdGltZXN0YW1wJyB9O1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0b01zKSkgcmV0dXJuIHsgZXJyb3I6ICdcInRvXCIgaXMgbm90IGEgdmFsaWQgSVNPIHRpbWVzdGFtcCcgfTtcbiAgaWYgKGZyb21NcyA+IHRvTXMpIHJldHVybiB7IGVycm9yOiAnXCJmcm9tXCIgbXVzdCBiZSBlYXJsaWVyIHRoYW4gXCJ0b1wiJyB9O1xuICBpZiAobWF4UmFuZ2VNcyAhPT0gdW5kZWZpbmVkICYmIHRvTXMgLSBmcm9tTXMgPiBtYXhSYW5nZU1zKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGBEYXRlIHJhbmdlIGV4Y2VlZHMgbWF4aW11bSBvZiAke01hdGguZmxvb3IobWF4UmFuZ2VNcyAvICgyNCAqIDYwICogNjAgKiAxMDAwKSl9IGRheXNgIH07XG4gIH1cblxuICByZXR1cm4geyBmcm9tOiBmcm9tU3RyLCB0bzogdG9TdHIgfTtcbn1cbiJdfQ==
|
package/lib/utils/response.d.ts
CHANGED
|
@@ -46,44 +46,6 @@ export declare function sendError(res: Response, statusCode: number, message: st
|
|
|
46
46
|
* ```
|
|
47
47
|
*/
|
|
48
48
|
export declare function sendQuotaExceeded(res: Response, quotaType: string, quota: QuotaInfo, resetAt?: string): void;
|
|
49
|
-
/**
|
|
50
|
-
* Paginated response interface.
|
|
51
|
-
*/
|
|
52
|
-
export interface PaginatedResponse<T> {
|
|
53
|
-
success: true;
|
|
54
|
-
statusCode: number;
|
|
55
|
-
message?: string;
|
|
56
|
-
data: T[];
|
|
57
|
-
count: number;
|
|
58
|
-
limit: number;
|
|
59
|
-
offset: number;
|
|
60
|
-
total?: number;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Send a paginated list response.
|
|
64
|
-
*
|
|
65
|
-
* @param res - Express response object
|
|
66
|
-
* @param data - Array of items to return
|
|
67
|
-
* @param options - Pagination options
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
* ```typescript
|
|
71
|
-
* const plugins = await db.query.plugins.findMany({ limit, offset });
|
|
72
|
-
* sendPaginated(res, plugins, {
|
|
73
|
-
* limit: 10,
|
|
74
|
-
* offset: 0,
|
|
75
|
-
* total: 50,
|
|
76
|
-
* message: 'Plugins retrieved successfully',
|
|
77
|
-
* });
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export declare function sendPaginated<T>(res: Response, data: T[], options: {
|
|
81
|
-
limit: number;
|
|
82
|
-
offset: number;
|
|
83
|
-
total?: number;
|
|
84
|
-
message?: string;
|
|
85
|
-
statusCode?: number;
|
|
86
|
-
}): void;
|
|
87
49
|
/**
|
|
88
50
|
* Send a paginated list response with the items nested under a named key.
|
|
89
51
|
* Use when the API contract is `{ <key>: [...], pagination: {...} }`
|
package/lib/utils/response.js
CHANGED
|
@@ -93,46 +93,6 @@ export function sendQuotaExceeded(res, quotaType, quota, resetAt) {
|
|
|
93
93
|
}
|
|
94
94
|
sendError(res, 429, `${quotaType} quota exceeded (${quota.used}/${quota.limit}). Please try again later.`, ErrorCode.QUOTA_EXCEEDED, { quota });
|
|
95
95
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Send a paginated list response.
|
|
98
|
-
*
|
|
99
|
-
* @param res - Express response object
|
|
100
|
-
* @param data - Array of items to return
|
|
101
|
-
* @param options - Pagination options
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* ```typescript
|
|
105
|
-
* const plugins = await db.query.plugins.findMany({ limit, offset });
|
|
106
|
-
* sendPaginated(res, plugins, {
|
|
107
|
-
* limit: 10,
|
|
108
|
-
* offset: 0,
|
|
109
|
-
* total: 50,
|
|
110
|
-
* message: 'Plugins retrieved successfully',
|
|
111
|
-
* });
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
export function sendPaginated(res, data, options) {
|
|
115
|
-
if (res.headersSent) {
|
|
116
|
-
logger.warn('Attempted to send paginated response after headers already sent');
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const { limit, offset, total, message, statusCode = 200 } = options;
|
|
120
|
-
const response = {
|
|
121
|
-
success: true,
|
|
122
|
-
statusCode,
|
|
123
|
-
data,
|
|
124
|
-
count: data.length,
|
|
125
|
-
limit,
|
|
126
|
-
offset,
|
|
127
|
-
};
|
|
128
|
-
if (message) {
|
|
129
|
-
response.message = message;
|
|
130
|
-
}
|
|
131
|
-
if (total !== undefined) {
|
|
132
|
-
response.total = total;
|
|
133
|
-
}
|
|
134
|
-
res.status(statusCode).json(response);
|
|
135
|
-
}
|
|
136
96
|
/**
|
|
137
97
|
* Send a paginated list response with the items nested under a named key.
|
|
138
98
|
* Use when the API contract is `{ <key>: [...], pagination: {...} }`
|
|
@@ -252,4 +212,4 @@ export function parsePaginationParams(query) {
|
|
|
252
212
|
const sortOrder = String(query.sortOrder || 'desc').toLowerCase() === 'asc' ? 'asc' : 'desc';
|
|
253
213
|
return { limit, offset, sortBy, sortOrder };
|
|
254
214
|
}
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixHQUFhLEVBQ2IsYUFBcUIsR0FBRyxFQUN4QixJQUFRLEVBQ1IsT0FBZ0I7SUFFaEIsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxzREFBc0QsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFFBQVEsR0FLVjtRQUNGLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVTtLQUNYLENBQUM7SUFFRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixHQUFhLEVBQ2IsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLElBQXlC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TUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU3RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1b3RhSW5mbyB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBNQVhfUEFHRV9MSU1JVCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vY29tbW9uLXNjaGVtYXMuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3Jlc3BvbnNlJyk7XG5cbi8qKlxuICogU2VuZCBhIHN0YW5kYXJkaXplZCBzdWNjZXNzIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlIChkZWZhdWx0OiAyMDApXG4gKiBAcGFyYW0gZGF0YSAtIFJlc3BvbnNlIGRhdGFcbiAqIEBwYXJhbSBtZXNzYWdlIC0gT3B0aW9uYWwgc3VjY2VzcyBtZXNzYWdlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAwLCB7IHBsdWdpbjogcGx1Z2luRGF0YSB9KTtcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAxLCB7IGlkOiBuZXdJZCB9LCAnUmVzb3VyY2UgY3JlYXRlZCcpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kU3VjY2VzczxUPihcbiAgcmVzOiBSZXNwb25zZSxcbiAgc3RhdHVzQ29kZTogbnVtYmVyID0gMjAwLFxuICBkYXRhPzogVCxcbiAgbWVzc2FnZT86IHN0cmluZyxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHN1Y2Nlc3MgYWZ0ZXIgaGVhZGVycyBhbHJlYWR5IHNlbnQnLCB7IHN0YXR1c0NvZGUgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IHtcbiAgICBzdWNjZXNzOiB0cnVlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBkYXRhPzogVDtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICB9ID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgc3RhdHVzQ29kZSxcbiAgfTtcblxuICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVzcG9uc2UuZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAobWVzc2FnZSkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG5cbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHJlc3BvbnNlKTtcbn1cblxuLyoqXG4gKiBTZW5kIGEgc3RhbmRhcmRpemVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSBjb2RlIC0gRXJyb3IgY29kZSBmcm9tIEVycm9yQ29kZSBlbnVtXG4gKiBAcGFyYW0gZGV0YWlscyAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGV0YWlsc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kRXJyb3IocmVzLCA0MDQsICdQbHVnaW4gbm90IGZvdW5kJywgRXJyb3JDb2RlLk5PVF9GT1VORCk7XG4gKiBzZW5kRXJyb3IocmVzLCA0MDAsICdJbnZhbGlkIGlucHV0JywgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsIHsgZmllbGQ6ICduYW1lJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEVycm9yKFxuICByZXM6IFJlc3BvbnNlLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZT86IEVycm9yQ29kZSB8IHN0cmluZyxcbiAgZGV0YWlscz86IHVua25vd24sXG4pOiB2b2lkIHtcbiAgaWYgKHJlcy5oZWFkZXJzU2VudCkge1xuICAgIGxvZ2dlci53YXJuKCdBdHRlbXB0ZWQgdG8gc2VuZCBlcnJvciBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcsIHsgc3RhdHVzQ29kZSwgbWVzc2FnZSB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXNwb25zZToge1xuICAgIHN1Y2Nlc3M6IGZhbHNlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBkZXRhaWxzPzogdW5rbm93bjtcbiAgfSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBzdGF0dXNDb2RlLFxuICAgIG1lc3NhZ2UsXG4gIH07XG5cbiAgaWYgKGNvZGUpIHtcbiAgICByZXNwb25zZS5jb2RlID0gY29kZTtcbiAgfVxuXG4gIGlmIChkZXRhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXNwb25zZS5kZXRhaWxzID0gZGV0YWlscztcbiAgfVxuXG4gIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuanNvbihyZXNwb25zZSk7XG59XG5cbi8qKlxuICogU2VuZCBhIHF1b3RhIGV4Y2VlZGVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHF1b3RhVHlwZSAtIFR5cGUgb2YgcXVvdGEgZXhjZWVkZWRcbiAqIEBwYXJhbSBxdW90YSAtIEN1cnJlbnQgcXVvdGEgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSByZXNldEF0IC0gSVNPIHRpbWVzdGFtcCB3aGVuIHF1b3RhIHJlc2V0c1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kUXVvdGFFeGNlZWRlZChyZXMsICdhcGlDYWxscycsIHsgdHlwZTogJ2FwaUNhbGxzJywgbGltaXQ6IDEwMDAwLCB1c2VkOiAxMDAwMCwgcmVtYWluaW5nOiAwIH0sIHJlc2V0QXQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kUXVvdGFFeGNlZWRlZChcbiAgcmVzOiBSZXNwb25zZSxcbiAgcXVvdGFUeXBlOiBzdHJpbmcsXG4gIHF1b3RhOiBRdW90YUluZm8sXG4gIHJlc2V0QXQ/OiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgcmVzZXREYXRlID0gcmVzZXRBdCA/IG5ldyBEYXRlKHJlc2V0QXQpIDogbmV3IERhdGUoKTtcbiAgY29uc3QgcmVzZXRJbiA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgocmVzZXREYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuXG4gIHJlcy5zZXRIZWFkZXIoJ1JldHJ5LUFmdGVyJywgcmVzZXRJbik7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtTGltaXQnLCBxdW90YS5saW1pdCk7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtVXNlZCcsIHF1b3RhLnVzZWQpO1xuICByZXMuc2V0SGVhZGVyKCdYLVF1b3RhLVJlbWFpbmluZycsIE1hdGgubWF4KDAsIHF1b3RhLnJlbWFpbmluZykpO1xuXG4gIGlmIChyZXNldEF0KSB7XG4gICAgcmVzLnNldEhlYWRlcignWC1RdW90YS1SZXNldCcsIHJlc2V0QXQpO1xuICB9XG5cbiAgc2VuZEVycm9yKFxuICAgIHJlcyxcbiAgICA0MjksXG4gICAgYCR7cXVvdGFUeXBlfSBxdW90YSBleGNlZWRlZCAoJHtxdW90YS51c2VkfS8ke3F1b3RhLmxpbWl0fSkuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuYCxcbiAgICBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQsXG4gICAgeyBxdW90YSB9LFxuICApO1xufVxuXG4vKipcbiAqIFBhZ2luYXRlZCByZXNwb25zZSBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkUmVzcG9uc2U8VD4ge1xuICBzdWNjZXNzOiB0cnVlO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGRhdGE6IFRbXTtcbiAgY291bnQ6IG51bWJlcjtcbiAgbGltaXQ6IG51bWJlcjtcbiAgb2Zmc2V0OiBudW1iZXI7XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNlbmQgYSBwYWdpbmF0ZWQgbGlzdCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0gcmVzIC0gRXhwcmVzcyByZXNwb25zZSBvYmplY3RcbiAqIEBwYXJhbSBkYXRhIC0gQXJyYXkgb2YgaXRlbXMgdG8gcmV0dXJuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFBhZ2luYXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwbHVnaW5zID0gYXdhaXQgZGIucXVlcnkucGx1Z2lucy5maW5kTWFueSh7IGxpbWl0LCBvZmZzZXQgfSk7XG4gKiBzZW5kUGFnaW5hdGVkKHJlcywgcGx1Z2lucywge1xuICogICBsaW1pdDogMTAsXG4gKiAgIG9mZnNldDogMCxcbiAqICAgdG90YWw6IDUwLFxuICogICBtZXNzYWdlOiAnUGx1Z2lucyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kUGFnaW5hdGVkPFQ+KFxuICByZXM6IFJlc3BvbnNlLFxuICBkYXRhOiBUW10sXG4gIG9wdGlvbnM6IHtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIG9mZnNldDogbnVtYmVyO1xuICAgIHRvdGFsPzogbnVtYmVyO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgfSxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHBhZ2luYXRlZCByZXNwb25zZSBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgbGltaXQsIG9mZnNldCwgdG90YWwsIG1lc3NhZ2UsIHN0YXR1c0NvZGUgPSAyMDAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgcmVzcG9uc2U6IFBhZ2luYXRlZFJlc3BvbnNlPFQ+ID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgc3RhdHVzQ29kZSxcbiAgICBkYXRhLFxuICAgIGNvdW50OiBkYXRhLmxlbmd0aCxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gIH07XG5cbiAgaWYgKG1lc3NhZ2UpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG4gIGlmICh0b3RhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVzcG9uc2UudG90YWwgPSB0b3RhbDtcbiAgfVxuXG4gIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuanNvbihyZXNwb25zZSk7XG59XG5cbi8qKlxuICogU2VuZCBhIHBhZ2luYXRlZCBsaXN0IHJlc3BvbnNlIHdpdGggdGhlIGl0ZW1zIG5lc3RlZCB1bmRlciBhIG5hbWVkIGtleS5cbiAqIFVzZSB3aGVuIHRoZSBBUEkgY29udHJhY3QgaXMgYHsgPGtleT46IFsuLi5dLCBwYWdpbmF0aW9uOiB7Li4ufSB9YFxuICogKHRoZSBkb21pbmFudCBzaGFwZSBhY3Jvc3MgYXBpLyogc2VydmljZXMpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kUGFnaW5hdGVkTmVzdGVkKHJlcywgJ3BpcGVsaW5lcycsIGl0ZW1zLCB7XG4gKiAgIHRvdGFsOiA1MCwgbGltaXQ6IDI1LCBvZmZzZXQ6IDAsIGhhc01vcmU6IHRydWUsXG4gKiB9KTtcbiAqIC8vIOKGkiB7IHBpcGVsaW5lczogWy4uLl0sIHBhZ2luYXRpb246IHsgdG90YWw6IDUwLCBsaW1pdDogMjUsIG9mZnNldDogMCwgaGFzTW9yZTogdHJ1ZSB9IH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZFBhZ2luYXRlZE5lc3RlZDxUPihcbiAgcmVzOiBSZXNwb25zZSxcbiAgZGF0YUtleTogc3RyaW5nLFxuICBkYXRhOiBUW10sXG4gIG9wdGlvbnM6IHtcbiAgICB0b3RhbD86IG51bWJlcjtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIG9mZnNldDogbnVtYmVyO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG4gICAgbmV4dEN1cnNvcj86IHN0cmluZztcbiAgICBzdGF0dXNDb2RlPzogbnVtYmVyO1xuICB9LFxuKTogdm9pZCB7XG4gIGlmIChyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICBsb2dnZXIud2FybignQXR0ZW1wdGVkIHRvIHNlbmQgcGFnaW5hdGVkIHJlc3BvbnNlIGFmdGVyIGhlYWRlcnMgYWxyZWFkeSBzZW50Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHsgc3RhdHVzQ29kZSA9IDIwMCwgdG90YWwsIGxpbWl0LCBvZmZzZXQsIGhhc01vcmUsIG5leHRDdXJzb3IgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHBhZ2luYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyBsaW1pdCwgb2Zmc2V0LCBoYXNNb3JlIH07XG4gIGlmICh0b3RhbCAhPT0gdW5kZWZpbmVkKSBwYWdpbmF0aW9uLnRvdGFsID0gdG90YWw7XG4gIGlmIChuZXh0Q3Vyc29yKSBwYWdpbmF0aW9uLm5leHRDdXJzb3IgPSBuZXh0Q3Vyc29yO1xuICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpLmpzb24oe1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgc3RhdHVzQ29kZSxcbiAgICBkYXRhOiB7IFtkYXRhS2V5XTogZGF0YSwgcGFnaW5hdGlvbiB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGRhdGFiYXNlIGVycm9yIGRldGFpbHMgZm9yIGxvZ2dpbmcvcmVzcG9uc2UuXG4gKlxuICogRXh0cmFjdHMgUG9zdGdyZVNRTCBlcnJvciBjb2RlcywgZGV0YWlscywgaGludHMsIGFuZCBjb25zdHJhaW50IG5hbWVzXG4gKiBmcm9tIGRhdGFiYXNlIGVycm9ycyBmb3IgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwYXJhbSBlcnJvciAtIEVycm9yIG9iamVjdCBmcm9tIGRhdGFiYXNlIG9wZXJhdGlvblxuICogQHJldHVybnMgT2JqZWN0IHdpdGggZXh0cmFjdGVkIGVycm9yIGRldGFpbHNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHJ5IHtcbiAqICAgYXdhaXQgZGIuaW5zZXJ0KHBsdWdpbnMpLnZhbHVlcyhuZXdQbHVnaW4pO1xuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgY29uc3QgZGJEZXRhaWxzID0gZXh0cmFjdERiRXJyb3IoZXJyb3IpO1xuICogICByZXR1cm4gc2VuZEVycm9yKHJlcywgNTAwLCAnRGF0YWJhc2UgZXJyb3InLCBFcnJvckNvZGUuREFUQUJBU0VfRVJST1IsIGRiRGV0YWlscyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REYkVycm9yKGVycm9yOiB1bmtub3duKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBpZiAoIWVycm9yIHx8IHR5cGVvZiBlcnJvciAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBEcml6emxlIE9STSB3cmFwcyB0aGUgb3JpZ2luYWwgcGcgZXJyb3IgaW4gZXJyb3IuY2F1c2Ug4oCUXG4gIC8vIGNoZWNrIHRoZSBjYXVzZSBmaXJzdCwgdGhlbiBmYWxsIGJhY2sgdG8gdGhlIGVycm9yIGl0c2VsZi5cbiAgY29uc3QgZXJyID0gZXJyb3IgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHNvdXJjZSA9IChlcnIuY2F1c2UgJiYgdHlwZW9mIGVyci5jYXVzZSA9PT0gJ29iamVjdCcgPyBlcnIuY2F1c2UgOiBlcnIpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBkZXRhaWxzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIGlmIChzb3VyY2UuY29kZSkgZGV0YWlscy5kYkNvZGUgPSBzb3VyY2UuY29kZTtcbiAgaWYgKHNvdXJjZS5kZXRhaWwpIGRldGFpbHMuZGJEZXRhaWwgPSBzb3VyY2UuZGV0YWlsO1xuICBpZiAoc291cmNlLmhpbnQpIGRldGFpbHMuZGJIaW50ID0gc291cmNlLmhpbnQ7XG4gIGlmIChzb3VyY2UuY29uc3RyYWludCkgZGV0YWlscy5jb25zdHJhaW50ID0gc291cmNlLmNvbnN0cmFpbnQ7XG4gIGlmIChzb3VyY2UudGFibGUpIGRldGFpbHMudGFibGUgPSBzb3VyY2UudGFibGU7XG4gIGlmIChzb3VyY2UuY29sdW1uKSBkZXRhaWxzLmNvbHVtbiA9IHNvdXJjZS5jb2x1bW47XG5cbiAgcmV0dXJuIGRldGFpbHM7XG59XG5cbi8vIENvbnZlbmllbmNlIGhlbHBlcnMgKHNoYXJlZCBhY3Jvc3MgcGx1Z2luLCBwaXBlbGluZSwgcXVvdGEgc2VydmljZXMpXG5cbi8qKlxuICogRXh0cmFjdCBhIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgZnJvbSBhbiB1bmtub3duIGNhdGNoIHZhbHVlLlxuICpcbiAqIEZhbGxzIGJhY2sgYmV5b25kIGAubWVzc2FnZWAgYmVjYXVzZSBzZXZlcmFsIGNvbW1vbiBOb2RlIGVycm9ycyBjYXJyeSBhblxuICogRU1QVFkgYC5tZXNzYWdlYDpcbiAqICAtIGR1YWwtc3RhY2sgKElQdjQrSVB2NikgY29ubmVjdCBmYWlsdXJlcyBzdXJmYWNlIGFzIGFuIGBBZ2dyZWdhdGVFcnJvcmBcbiAqICAgIHdob3NlIG93biBtZXNzYWdlIGlzIGJsYW5rIOKAlCB0aGUgY2F1c2UgbGl2ZXMgaW4gYC5jb2RlYCAoZS5nLlxuICogICAgYEVDT05OUkVGVVNFRGAvYEVUSU1FRE9VVGApIGFuZC9vciB0aGUgYC5lcnJvcnNbXWAgc3ViLWVycm9ycztcbiAqICAtIHJhdyBzb2NrZXQgYEVycm5vRXhjZXB0aW9uYHMgY2FuIGxpa2V3aXNlIGNhcnJ5IG9ubHkgYSBgLmNvZGVgLlxuICogV2l0aG91dCB0aGlzLCBhbiB1bnJlYWNoYWJsZSBpbnRlcm5hbCBzZXJ2aWNlIChlLmcuIGNvbXBsaWFuY2Ugc3RpbGxcbiAqIHN0YXJ0aW5nKSBwcm9kdWNlZCBibGFuayBwZXItaXRlbSBlcnJvcnMgaW4gYnVsayByZXNwb25zZXMgYW5kIGBlcnJvcjpcIlwiYFxuICogaW4gbG9ncyDigJQgYSBzaWxlbnQgYmxhY2sgYm94LiBPcmRlcjogbWVzc2FnZSDihpIgY29kZSDihpIgam9pbmVkIHN1Yi1lcnJvcnMg4oaSXG4gKiBlcnJvciBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHJldHVybiBTdHJpbmcoZXJyb3IpO1xuICBpZiAoZXJyb3IubWVzc2FnZSkgcmV0dXJuIGVycm9yLm1lc3NhZ2U7XG5cbiAgY29uc3QgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZTtcbiAgaWYgKGNvZGUpIHJldHVybiBjb2RlO1xuXG4gIGNvbnN0IGlubmVyID0gKGVycm9yIGFzIHsgZXJyb3JzPzogdW5rbm93bltdIH0pLmVycm9ycztcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5uZXIpICYmIGlubmVyLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBqb2luZWQgPSBpbm5lci5tYXAoZXJyb3JNZXNzYWdlKS5maWx0ZXIoQm9vbGVhbikuam9pbignOyAnKTtcbiAgICBpZiAoam9pbmVkKSByZXR1cm4gam9pbmVkO1xuICB9XG5cbiAgcmV0dXJuIGVycm9yLm5hbWUgfHwgJ1Vua25vd24gZXJyb3InO1xufVxuXG4vKiogU2VuZCBhIDQwMCBiYWQtcmVxdWVzdCByZXNwb25zZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kQmFkUmVxdWVzdChcbiAgcmVzOiBSZXNwb25zZSxcbiAgbWVzc2FnZTogc3RyaW5nLFxuICBjb2RlOiBFcnJvckNvZGUgfCBzdHJpbmcgPSBFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUixcbik6IHZvaWQge1xuICBzZW5kRXJyb3IocmVzLCA0MDAsIG1lc3NhZ2UsIGNvZGUpO1xufVxuXG4vKiogU2VuZCBhIDUwMCBpbnRlcm5hbCBlcnJvciByZXNwb25zZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kSW50ZXJuYWxFcnJvcihcbiAgcmVzOiBSZXNwb25zZSxcbiAgbWVzc2FnZTogc3RyaW5nLFxuICBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiB2b2lkIHtcbiAgc2VuZEVycm9yKHJlcywgNTAwLCBtZXNzYWdlLCBFcnJvckNvZGUuSU5URVJOQUxfRVJST1IsIGRldGFpbHMpO1xufVxuXG4vLyBQYWdpbmF0aW9uXG5cbi8qKiBDb21tb24gcGFnaW5hdGlvbiArIHNvcnRpbmcgcGFyYW1ldGVycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvblBhcmFtcyB7XG4gIGxpbWl0OiBudW1iZXI7XG4gIG9mZnNldDogbnVtYmVyO1xuICBzb3J0Qnk6IHN0cmluZztcbiAgc29ydE9yZGVyOiAnYXNjJyB8ICdkZXNjJztcbn1cblxuLyoqIFBhcnNlIHBhZ2luYXRpb24vc29ydCBwYXJhbXMgZnJvbSBxdWVyeSBzdHJpbmcsIGNsYW1waW5nIHRvIHNhZmUgZGVmYXVsdHMuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQYWdpbmF0aW9uUGFyYW1zKHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFBhZ2luYXRpb25QYXJhbXMge1xuICBjb25zdCBsaW1pdCA9IE1hdGgubWluKE1hdGgubWF4KHBhcnNlSW50KFN0cmluZyhxdWVyeS5saW1pdCksIDEwKSB8fCAxMCwgMSksIE1BWF9QQUdFX0xJTUlUKTtcbiAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5tYXgocGFyc2VJbnQoU3RyaW5nKHF1ZXJ5Lm9mZnNldCksIDEwKSB8fCAwLCAwKTtcbiAgY29uc3Qgc29ydEJ5ID0gU3RyaW5nKHF1ZXJ5LnNvcnRCeSB8fCAnY3JlYXRlZEF0Jyk7XG4gIGNvbnN0IHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYycgPVxuICAgIFN0cmluZyhxdWVyeS5zb3J0T3JkZXIgfHwgJ2Rlc2MnKS50b0xvd2VyQ2FzZSgpID09PSAnYXNjJyA/ICdhc2MnIDogJ2Rlc2MnO1xuXG4gIHJldHVybiB7IGxpbWl0LCBvZmZzZXQsIHNvcnRCeSwgc29ydE9yZGVyIH07XG59XG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixHQUFhLEVBQ2IsYUFBcUIsR0FBRyxFQUN4QixJQUFRLEVBQ1IsT0FBZ0I7SUFFaEIsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxzREFBc0QsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFFBQVEsR0FLVjtRQUNGLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVTtLQUNYLENBQUM7SUFFRixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QixRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRCxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUN2QixHQUFhLEVBQ2IsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLElBQXlC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R0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFZRCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQThCO0lBQ2xFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLENBQUM7SUFDbkQsTUFBTSxTQUFTLEdBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU3RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1b3RhSW5mbyB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBNQVhfUEFHRV9MSU1JVCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vY29tbW9uLXNjaGVtYXMuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3Jlc3BvbnNlJyk7XG5cbi8qKlxuICogU2VuZCBhIHN0YW5kYXJkaXplZCBzdWNjZXNzIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlIChkZWZhdWx0OiAyMDApXG4gKiBAcGFyYW0gZGF0YSAtIFJlc3BvbnNlIGRhdGFcbiAqIEBwYXJhbSBtZXNzYWdlIC0gT3B0aW9uYWwgc3VjY2VzcyBtZXNzYWdlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAwLCB7IHBsdWdpbjogcGx1Z2luRGF0YSB9KTtcbiAqIHNlbmRTdWNjZXNzKHJlcywgMjAxLCB7IGlkOiBuZXdJZCB9LCAnUmVzb3VyY2UgY3JlYXRlZCcpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kU3VjY2VzczxUPihcbiAgcmVzOiBSZXNwb25zZSxcbiAgc3RhdHVzQ29kZTogbnVtYmVyID0gMjAwLFxuICBkYXRhPzogVCxcbiAgbWVzc2FnZT86IHN0cmluZyxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHN1Y2Nlc3MgYWZ0ZXIgaGVhZGVycyBhbHJlYWR5IHNlbnQnLCB7IHN0YXR1c0NvZGUgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2U6IHtcbiAgICBzdWNjZXNzOiB0cnVlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBkYXRhPzogVDtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICB9ID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgc3RhdHVzQ29kZSxcbiAgfTtcblxuICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVzcG9uc2UuZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAobWVzc2FnZSkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG5cbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHJlc3BvbnNlKTtcbn1cblxuLyoqXG4gKiBTZW5kIGEgc3RhbmRhcmRpemVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlXG4gKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAqIEBwYXJhbSBjb2RlIC0gRXJyb3IgY29kZSBmcm9tIEVycm9yQ29kZSBlbnVtXG4gKiBAcGFyYW0gZGV0YWlscyAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGV0YWlsc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kRXJyb3IocmVzLCA0MDQsICdQbHVnaW4gbm90IGZvdW5kJywgRXJyb3JDb2RlLk5PVF9GT1VORCk7XG4gKiBzZW5kRXJyb3IocmVzLCA0MDAsICdJbnZhbGlkIGlucHV0JywgRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsIHsgZmllbGQ6ICduYW1lJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEVycm9yKFxuICByZXM6IFJlc3BvbnNlLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZT86IEVycm9yQ29kZSB8IHN0cmluZyxcbiAgZGV0YWlscz86IHVua25vd24sXG4pOiB2b2lkIHtcbiAgaWYgKHJlcy5oZWFkZXJzU2VudCkge1xuICAgIGxvZ2dlci53YXJuKCdBdHRlbXB0ZWQgdG8gc2VuZCBlcnJvciBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcsIHsgc3RhdHVzQ29kZSwgbWVzc2FnZSB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXNwb25zZToge1xuICAgIHN1Y2Nlc3M6IGZhbHNlO1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBkZXRhaWxzPzogdW5rbm93bjtcbiAgfSA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBzdGF0dXNDb2RlLFxuICAgIG1lc3NhZ2UsXG4gIH07XG5cbiAgaWYgKGNvZGUpIHtcbiAgICByZXNwb25zZS5jb2RlID0gY29kZTtcbiAgfVxuXG4gIGlmIChkZXRhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXNwb25zZS5kZXRhaWxzID0gZGV0YWlscztcbiAgfVxuXG4gIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuanNvbihyZXNwb25zZSk7XG59XG5cbi8qKlxuICogU2VuZCBhIHF1b3RhIGV4Y2VlZGVkIGVycm9yIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSByZXMgLSBFeHByZXNzIHJlc3BvbnNlIG9iamVjdFxuICogQHBhcmFtIHF1b3RhVHlwZSAtIFR5cGUgb2YgcXVvdGEgZXhjZWVkZWRcbiAqIEBwYXJhbSBxdW90YSAtIEN1cnJlbnQgcXVvdGEgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSByZXNldEF0IC0gSVNPIHRpbWVzdGFtcCB3aGVuIHF1b3RhIHJlc2V0c1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZW5kUXVvdGFFeGNlZWRlZChyZXMsICdhcGlDYWxscycsIHsgdHlwZTogJ2FwaUNhbGxzJywgbGltaXQ6IDEwMDAwLCB1c2VkOiAxMDAwMCwgcmVtYWluaW5nOiAwIH0sIHJlc2V0QXQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kUXVvdGFFeGNlZWRlZChcbiAgcmVzOiBSZXNwb25zZSxcbiAgcXVvdGFUeXBlOiBzdHJpbmcsXG4gIHF1b3RhOiBRdW90YUluZm8sXG4gIHJlc2V0QXQ/OiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgcmVzZXREYXRlID0gcmVzZXRBdCA/IG5ldyBEYXRlKHJlc2V0QXQpIDogbmV3IERhdGUoKTtcbiAgY29uc3QgcmVzZXRJbiA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgocmVzZXREYXRlLmdldFRpbWUoKSAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xuXG4gIHJlcy5zZXRIZWFkZXIoJ1JldHJ5LUFmdGVyJywgcmVzZXRJbik7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtTGltaXQnLCBxdW90YS5saW1pdCk7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtUXVvdGEtVXNlZCcsIHF1b3RhLnVzZWQpO1xuICByZXMuc2V0SGVhZGVyKCdYLVF1b3RhLVJlbWFpbmluZycsIE1hdGgubWF4KDAsIHF1b3RhLnJlbWFpbmluZykpO1xuXG4gIGlmIChyZXNldEF0KSB7XG4gICAgcmVzLnNldEhlYWRlcignWC1RdW90YS1SZXNldCcsIHJlc2V0QXQpO1xuICB9XG5cbiAgc2VuZEVycm9yKFxuICAgIHJlcyxcbiAgICA0MjksXG4gICAgYCR7cXVvdGFUeXBlfSBxdW90YSBleGNlZWRlZCAoJHtxdW90YS51c2VkfS8ke3F1b3RhLmxpbWl0fSkuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuYCxcbiAgICBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQsXG4gICAgeyBxdW90YSB9LFxuICApO1xufVxuXG4vKipcbiAqIFNlbmQgYSBwYWdpbmF0ZWQgbGlzdCByZXNwb25zZSB3aXRoIHRoZSBpdGVtcyBuZXN0ZWQgdW5kZXIgYSBuYW1lZCBrZXkuXG4gKiBVc2Ugd2hlbiB0aGUgQVBJIGNvbnRyYWN0IGlzIGB7IDxrZXk+OiBbLi4uXSwgcGFnaW5hdGlvbjogey4uLn0gfWBcbiAqICh0aGUgZG9taW5hbnQgc2hhcGUgYWNyb3NzIGFwaS8qIHNlcnZpY2VzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogc2VuZFBhZ2luYXRlZE5lc3RlZChyZXMsICdwaXBlbGluZXMnLCBpdGVtcywge1xuICogICB0b3RhbDogNTAsIGxpbWl0OiAyNSwgb2Zmc2V0OiAwLCBoYXNNb3JlOiB0cnVlLFxuICogfSk7XG4gKiAvLyDihpIgeyBwaXBlbGluZXM6IFsuLi5dLCBwYWdpbmF0aW9uOiB7IHRvdGFsOiA1MCwgbGltaXQ6IDI1LCBvZmZzZXQ6IDAsIGhhc01vcmU6IHRydWUgfSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRQYWdpbmF0ZWROZXN0ZWQ8VD4oXG4gIHJlczogUmVzcG9uc2UsXG4gIGRhdGFLZXk6IHN0cmluZyxcbiAgZGF0YTogVFtdLFxuICBvcHRpb25zOiB7XG4gICAgdG90YWw/OiBudW1iZXI7XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICBvZmZzZXQ6IG51bWJlcjtcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuICAgIG5leHRDdXJzb3I/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgfSxcbik6IHZvaWQge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgbG9nZ2VyLndhcm4oJ0F0dGVtcHRlZCB0byBzZW5kIHBhZ2luYXRlZCByZXNwb25zZSBhZnRlciBoZWFkZXJzIGFscmVhZHkgc2VudCcpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB7IHN0YXR1c0NvZGUgPSAyMDAsIHRvdGFsLCBsaW1pdCwgb2Zmc2V0LCBoYXNNb3JlLCBuZXh0Q3Vyc29yIH0gPSBvcHRpb25zO1xuICBjb25zdCBwYWdpbmF0aW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgbGltaXQsIG9mZnNldCwgaGFzTW9yZSB9O1xuICBpZiAodG90YWwgIT09IHVuZGVmaW5lZCkgcGFnaW5hdGlvbi50b3RhbCA9IHRvdGFsO1xuICBpZiAobmV4dEN1cnNvcikgcGFnaW5hdGlvbi5uZXh0Q3Vyc29yID0gbmV4dEN1cnNvcjtcbiAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5qc29uKHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIHN0YXR1c0NvZGUsXG4gICAgZGF0YTogeyBbZGF0YUtleV06IGRhdGEsIHBhZ2luYXRpb24gfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBkYXRhYmFzZSBlcnJvciBkZXRhaWxzIGZvciBsb2dnaW5nL3Jlc3BvbnNlLlxuICpcbiAqIEV4dHJhY3RzIFBvc3RncmVTUUwgZXJyb3IgY29kZXMsIGRldGFpbHMsIGhpbnRzLCBhbmQgY29uc3RyYWludCBuYW1lc1xuICogZnJvbSBkYXRhYmFzZSBlcnJvcnMgZm9yIGJldHRlciBlcnJvciBtZXNzYWdlcy5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBFcnJvciBvYmplY3QgZnJvbSBkYXRhYmFzZSBvcGVyYXRpb25cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGV4dHJhY3RlZCBlcnJvciBkZXRhaWxzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IGRiLmluc2VydChwbHVnaW5zKS52YWx1ZXMobmV3UGx1Z2luKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGNvbnN0IGRiRGV0YWlscyA9IGV4dHJhY3REYkVycm9yKGVycm9yKTtcbiAqICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDUwMCwgJ0RhdGFiYXNlIGVycm9yJywgRXJyb3JDb2RlLkRBVEFCQVNFX0VSUk9SLCBkYkRldGFpbHMpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RGJFcnJvcihlcnJvcjogdW5rbm93bik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgaWYgKCFlcnJvciB8fCB0eXBlb2YgZXJyb3IgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gRHJpenpsZSBPUk0gd3JhcHMgdGhlIG9yaWdpbmFsIHBnIGVycm9yIGluIGVycm9yLmNhdXNlIOKAlFxuICAvLyBjaGVjayB0aGUgY2F1c2UgZmlyc3QsIHRoZW4gZmFsbCBiYWNrIHRvIHRoZSBlcnJvciBpdHNlbGYuXG4gIGNvbnN0IGVyciA9IGVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBzb3VyY2UgPSAoZXJyLmNhdXNlICYmIHR5cGVvZiBlcnIuY2F1c2UgPT09ICdvYmplY3QnID8gZXJyLmNhdXNlIDogZXJyKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgZGV0YWlsczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBpZiAoc291cmNlLmNvZGUpIGRldGFpbHMuZGJDb2RlID0gc291cmNlLmNvZGU7XG4gIGlmIChzb3VyY2UuZGV0YWlsKSBkZXRhaWxzLmRiRGV0YWlsID0gc291cmNlLmRldGFpbDtcbiAgaWYgKHNvdXJjZS5oaW50KSBkZXRhaWxzLmRiSGludCA9IHNvdXJjZS5oaW50O1xuICBpZiAoc291cmNlLmNvbnN0cmFpbnQpIGRldGFpbHMuY29uc3RyYWludCA9IHNvdXJjZS5jb25zdHJhaW50O1xuICBpZiAoc291cmNlLnRhYmxlKSBkZXRhaWxzLnRhYmxlID0gc291cmNlLnRhYmxlO1xuICBpZiAoc291cmNlLmNvbHVtbikgZGV0YWlscy5jb2x1bW4gPSBzb3VyY2UuY29sdW1uO1xuXG4gIHJldHVybiBkZXRhaWxzO1xufVxuXG4vLyBDb252ZW5pZW5jZSBoZWxwZXJzIChzaGFyZWQgYWNyb3NzIHBsdWdpbiwgcGlwZWxpbmUsIHF1b3RhIHNlcnZpY2VzKVxuXG4vKipcbiAqIEV4dHJhY3QgYSBodW1hbi1yZWFkYWJsZSBtZXNzYWdlIGZyb20gYW4gdW5rbm93biBjYXRjaCB2YWx1ZS5cbiAqXG4gKiBGYWxscyBiYWNrIGJleW9uZCBgLm1lc3NhZ2VgIGJlY2F1c2Ugc2V2ZXJhbCBjb21tb24gTm9kZSBlcnJvcnMgY2FycnkgYW5cbiAqIEVNUFRZIGAubWVzc2FnZWA6XG4gKiAgLSBkdWFsLXN0YWNrIChJUHY0K0lQdjYpIGNvbm5lY3QgZmFpbHVyZXMgc3VyZmFjZSBhcyBhbiBgQWdncmVnYXRlRXJyb3JgXG4gKiAgICB3aG9zZSBvd24gbWVzc2FnZSBpcyBibGFuayDigJQgdGhlIGNhdXNlIGxpdmVzIGluIGAuY29kZWAgKGUuZy5cbiAqICAgIGBFQ09OTlJFRlVTRURgL2BFVElNRURPVVRgKSBhbmQvb3IgdGhlIGAuZXJyb3JzW11gIHN1Yi1lcnJvcnM7XG4gKiAgLSByYXcgc29ja2V0IGBFcnJub0V4Y2VwdGlvbmBzIGNhbiBsaWtld2lzZSBjYXJyeSBvbmx5IGEgYC5jb2RlYC5cbiAqIFdpdGhvdXQgdGhpcywgYW4gdW5yZWFjaGFibGUgaW50ZXJuYWwgc2VydmljZSAoZS5nLiBjb21wbGlhbmNlIHN0aWxsXG4gKiBzdGFydGluZykgcHJvZHVjZWQgYmxhbmsgcGVyLWl0ZW0gZXJyb3JzIGluIGJ1bGsgcmVzcG9uc2VzIGFuZCBgZXJyb3I6XCJcImBcbiAqIGluIGxvZ3Mg4oCUIGEgc2lsZW50IGJsYWNrIGJveC4gT3JkZXI6IG1lc3NhZ2Ug4oaSIGNvZGUg4oaSIGpvaW5lZCBzdWItZXJyb3JzIOKGklxuICogZXJyb3IgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSByZXR1cm4gU3RyaW5nKGVycm9yKTtcbiAgaWYgKGVycm9yLm1lc3NhZ2UpIHJldHVybiBlcnJvci5tZXNzYWdlO1xuXG4gIGNvbnN0IGNvZGUgPSAoZXJyb3IgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGU7XG4gIGlmIChjb2RlKSByZXR1cm4gY29kZTtcblxuICBjb25zdCBpbm5lciA9IChlcnJvciBhcyB7IGVycm9ycz86IHVua25vd25bXSB9KS5lcnJvcnM7XG4gIGlmIChBcnJheS5pc0FycmF5KGlubmVyKSAmJiBpbm5lci5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgam9pbmVkID0gaW5uZXIubWFwKGVycm9yTWVzc2FnZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJzsgJyk7XG4gICAgaWYgKGpvaW5lZCkgcmV0dXJuIGpvaW5lZDtcbiAgfVxuXG4gIHJldHVybiBlcnJvci5uYW1lIHx8ICdVbmtub3duIGVycm9yJztcbn1cblxuLyoqIFNlbmQgYSA0MDAgYmFkLXJlcXVlc3QgcmVzcG9uc2UuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEJhZFJlcXVlc3QoXG4gIHJlczogUmVzcG9uc2UsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgY29kZTogRXJyb3JDb2RlIHwgc3RyaW5nID0gRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsXG4pOiB2b2lkIHtcbiAgc2VuZEVycm9yKHJlcywgNDAwLCBtZXNzYWdlLCBjb2RlKTtcbn1cblxuLyoqIFNlbmQgYSA1MDAgaW50ZXJuYWwgZXJyb3IgcmVzcG9uc2UuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEludGVybmFsRXJyb3IoXG4gIHJlczogUmVzcG9uc2UsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbiAgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogdm9pZCB7XG4gIHNlbmRFcnJvcihyZXMsIDUwMCwgbWVzc2FnZSwgRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLCBkZXRhaWxzKTtcbn1cblxuLy8gUGFnaW5hdGlvblxuXG4vKiogQ29tbW9uIHBhZ2luYXRpb24gKyBzb3J0aW5nIHBhcmFtZXRlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25QYXJhbXMge1xuICBsaW1pdDogbnVtYmVyO1xuICBvZmZzZXQ6IG51bWJlcjtcbiAgc29ydEJ5OiBzdHJpbmc7XG4gIHNvcnRPcmRlcjogJ2FzYycgfCAnZGVzYyc7XG59XG5cbi8qKiBQYXJzZSBwYWdpbmF0aW9uL3NvcnQgcGFyYW1zIGZyb20gcXVlcnkgc3RyaW5nLCBjbGFtcGluZyB0byBzYWZlIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGFnaW5hdGlvblBhcmFtcyhxdWVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQYWdpbmF0aW9uUGFyYW1zIHtcbiAgY29uc3QgbGltaXQgPSBNYXRoLm1pbihNYXRoLm1heChwYXJzZUludChTdHJpbmcocXVlcnkubGltaXQpLCAxMCkgfHwgMTAsIDEpLCBNQVhfUEFHRV9MSU1JVCk7XG4gIGNvbnN0IG9mZnNldCA9IE1hdGgubWF4KHBhcnNlSW50KFN0cmluZyhxdWVyeS5vZmZzZXQpLCAxMCkgfHwgMCwgMCk7XG4gIGNvbnN0IHNvcnRCeSA9IFN0cmluZyhxdWVyeS5zb3J0QnkgfHwgJ2NyZWF0ZWRBdCcpO1xuICBjb25zdCBzb3J0T3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID1cbiAgICBTdHJpbmcocXVlcnkuc29ydE9yZGVyIHx8ICdkZXNjJykudG9Mb3dlckNhc2UoKSA9PT0gJ2FzYycgPyAnYXNjJyA6ICdkZXNjJztcblxuICByZXR1cm4geyBsaW1pdCwgb2Zmc2V0LCBzb3J0QnksIHNvcnRPcmRlciB9O1xufVxuIl19
|
package/lib/utils/ssrf.js
CHANGED
|
@@ -38,8 +38,25 @@ export function isPrivateAddress(ip) {
|
|
|
38
38
|
}
|
|
39
39
|
if (addr === '::1' || addr === '::')
|
|
40
40
|
return true;
|
|
41
|
-
if (addr.startsWith('::ffff:'))
|
|
42
|
-
|
|
41
|
+
if (addr.startsWith('::ffff:')) {
|
|
42
|
+
const suffix = addr.slice(7);
|
|
43
|
+
// Dotted form (`::ffff:127.0.0.1`) — recurse straight into the v4 checks.
|
|
44
|
+
if (suffix.includes('.'))
|
|
45
|
+
return isPrivateAddress(suffix);
|
|
46
|
+
// Hex form (`::ffff:7f00:1` = 127.0.0.1, `::ffff:c0a8:1` = 192.168.0.1):
|
|
47
|
+
// the low 32 bits are written as the last one/two hex groups. Fold them into
|
|
48
|
+
// a dotted quad and recurse so the v4 ranges below still catch it — without
|
|
49
|
+
// this the hex form slips past every check and reaches loopback/private space.
|
|
50
|
+
const groups = suffix.split(':');
|
|
51
|
+
const high = parseInt(groups[groups.length - 2] ?? '0', 16);
|
|
52
|
+
const low = parseInt(groups[groups.length - 1] ?? '0', 16);
|
|
53
|
+
if (Number.isNaN(high) || Number.isNaN(low))
|
|
54
|
+
return false;
|
|
55
|
+
// Fold each 16-bit half into two octets (arithmetic, not bitwise, to satisfy
|
|
56
|
+
// the no-bitwise lint): high → a.b, low → c.d.
|
|
57
|
+
const dotted = `${Math.floor(high / 256) % 256}.${high % 256}.${Math.floor(low / 256) % 256}.${low % 256}`;
|
|
58
|
+
return isPrivateAddress(dotted);
|
|
59
|
+
}
|
|
43
60
|
return addr.startsWith('fc') || addr.startsWith('fd') // unique-local
|
|
44
61
|
|| addr.startsWith('fe80'); // link-local
|
|
45
62
|
}
|
|
@@ -86,4 +103,4 @@ export const SSRF_FETCH_INIT = { redirect: 'manual' };
|
|
|
86
103
|
export function isRefusedRedirect(resp) {
|
|
87
104
|
return resp.type === 'opaqueredirect' || (resp.status >= 300 && resp.status < 400);
|
|
88
105
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zc3JmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUUzQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNQLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHO2VBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsNENBQTRDO2VBQ3JFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7ZUFDakMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7ZUFDeEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtJQUNuRCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUN2RixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlO1dBQ2hFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhO0FBQzdDLENBQUM7QUFRRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLE1BQWMsRUFBRSxPQUF1QixFQUFFO0lBQzNFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxJQUFJLENBQU0sQ0FBQztJQUNYLElBQUksQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzNGLElBQUksS0FBNEIsQ0FBQztJQUNqQyxJQUFJLENBQUM7UUFBQyxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN6RyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztBQUMzRyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFpQixFQUFFLENBQUM7QUFFL0Qsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUF1QztJQUN2RSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTaGFyZWQgU1NSRiBndWFyZCBmb3IgdXNlci90ZW5hbnQtc3VwcGxpZWQgb3V0Ym91bmQgVVJMcyAod2ViaG9vayB0YXJnZXRzLFxuICogY2FsbGJhY2tzLCDigKYpLiBQcm9tb3RlZCB0byBhcGktY29yZSBzbyBldmVyeSBzZXJ2aWNlIHRoYXQgbGV0cyBhbiBvcmcgcG9pbnRcbiAqIHRoZSBwbGF0Zm9ybSBhdCBhbiBhcmJpdHJhcnkgVVJMIGVuZm9yY2VzIHRoZSBTQU1FIGRlbnlsaXN0IGluc3RlYWQgb2YgZWFjaFxuICogcmUtZGVyaXZpbmcgaXQgKHRoZSBjb21wbGlhbmNlIG5vdGlmaWVyIGFuZCB0aGUgcGxhdGZvcm0gYWxlcnQgcmVsYXkgYm90aFxuICogY29uc3VtZSB0aGlzKS5cbiAqXG4gKiBUaGUgZ3VhcmQgcmVzb2x2ZXMgdGhlIGhvc3QgdXAgZnJvbnQgYW5kIHJlamVjdHMgYW55IGFkZHJlc3MgdGhhdCBpcyDigJQgb3JcbiAqIHJlc29sdmVzIHRvIOKAlCBhIGxvb3BiYWNrIC8gcHJpdmF0ZSAvIGxpbmstbG9jYWwgLyB1bmlxdWUtbG9jYWwgLyBjYXJyaWVyLWdyYWRlXG4gKiBOQVQgLyBjbG91ZC1tZXRhZGF0YSByYW5nZSwgc28gYSB0ZW5hbnQgY2FuJ3QgYWltIGEgd2ViaG9vayBhdFxuICogYDE2OS4yNTQuMTY5LjI1NGAgb3IgYW4gaW4tY2x1c3RlciBzZXJ2aWNlLlxuICpcbiAqIEROUy1yZWJpbmRpbmcgbm90ZTogdGhlIHVwLWZyb250IHJlc29sdmUgdmFsaWRhdGVzIHRoZSAqaW5pdGlhbCogaG9zdCBvbmx5LlxuICogTm9kZSdzIGdsb2JhbCBgZmV0Y2hgICh1bmRpY2kpIHJlLXJlc29sdmVzIEROUyBmb3IgYSByZWRpcmVjdCB0YXJnZXRcbiAqIGluZGVwZW5kZW50bHksIHNvIGNhbGxlcnMgTVVTVCBzZW5kIHdpdGggYHJlZGlyZWN0OiAnbWFudWFsJ2AgYW5kIHRyZWF0IGFueVxuICogM3h4IGFzIGEgZmFpbGVkIGRlbGl2ZXJ5IOKAlCBzZWUge0BsaW5rIFNTUkZfRkVUQ0hfSU5JVH0uIFBpbm5pbmcgdGhlIGV4YWN0XG4gKiByZXNvbHZlZCBJUCBmb3IgdGhlIGNvbm5lY3Rpb24gd291bGQgbmVlZCBhIGN1c3RvbSB1bmRpY2kgZGlzcGF0Y2hlciAobm90IGFcbiAqIGRlcGVuZGVuY3kgaGVyZSk7IHJlZnVzaW5nIHJlZGlyZWN0cyBjbG9zZXMgdGhlIHByYWN0aWNhbCByZWJpbmRpbmcgcGl2b3QuXG4gKi9cblxuaW1wb3J0IHsgbG9va3VwIH0gZnJvbSAnZG5zL3Byb21pc2VzJztcbmltcG9ydCB7IGlzSVAgfSBmcm9tICduZXQnO1xuXG4vKipcbiAqIFRydWUgZm9yIGxvb3BiYWNrIC8gcHJpdmF0ZSAvIGxpbmstbG9jYWwgLyBDR05BVCAvIGNsb3VkLW1ldGFkYXRhIC8gVUxBXG4gKiBhZGRyZXNzZXMg4oCUIHRoZSByYW5nZXMgYW4gb3V0Ym91bmQgdGVuYW50IHdlYmhvb2sgbXVzdCBuZXZlciByZWFjaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJpdmF0ZUFkZHJlc3MoaXA6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBhZGRyID0gaXAucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCB2NCA9IGFkZHIubWF0Y2goL14oXFxkezEsM30pXFwuKFxcZHsxLDN9KVxcLihcXGR7MSwzfSlcXC4oXFxkezEsM30pJC8pO1xuICBpZiAodjQpIHtcbiAgICBjb25zdCBhID0gTnVtYmVyKHY0WzFdKSwgYiA9IE51bWJlcih2NFsyXSk7XG4gICAgcmV0dXJuIGEgPT09IDAgfHwgYSA9PT0gMTAgfHwgYSA9PT0gMTI3XG4gICAgICB8fCAoYSA9PT0gMTY5ICYmIGIgPT09IDI1NCkgLy8gbGluay1sb2NhbCBpbmNsLiAxNjkuMjU0LjE2OS4yNTQgbWV0YWRhdGFcbiAgICAgIHx8IChhID09PSAxNzIgJiYgYiA+PSAxNiAmJiBiIDw9IDMxKVxuICAgICAgfHwgKGEgPT09IDE5MiAmJiBiID09PSAxNjgpXG4gICAgICB8fCAoYSA9PT0gMTAwICYmIGIgPj0gNjQgJiYgYiA8PSAxMjcpOyAvLyBDR05BVFxuICB9XG4gIGlmIChhZGRyID09PSAnOjoxJyB8fCBhZGRyID09PSAnOjonKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGFkZHIuc3RhcnRzV2l0aCgnOjpmZmZmOicpKSByZXR1cm4gaXNQcml2YXRlQWRkcmVzcyhhZGRyLnNsaWNlKDcpKTsgLy8gdjQtbWFwcGVkIHY2XG4gIHJldHVybiBhZGRyLnN0YXJ0c1dpdGgoJ2ZjJykgfHwgYWRkci5zdGFydHNXaXRoKCdmZCcpIC8vIHVuaXF1ZS1sb2NhbFxuICAgIHx8IGFkZHIuc3RhcnRzV2l0aCgnZmU4MCcpOyAvLyBsaW5rLWxvY2FsXG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgYXNzZXJ0U2FmZVVybH0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVVcmxPcHRpb25zIHtcbiAgLyoqIEFsbG93ZWQgVVJMIHByb3RvY29scyAoZGVmYXVsdDogYFsnaHR0cHM6J11gKS4gKi9cbiAgcHJvdG9jb2xzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVqZWN0IGEgVVJMIHRoYXQgaXMgbWFsZm9ybWVkLCB1c2VzIGEgZGlzYWxsb3dlZCBwcm90b2NvbCwgb3IgcG9pbnRzIGF0IGFcbiAqIHByaXZhdGUvbG9vcGJhY2svbGluay1sb2NhbC9tZXRhZGF0YSBhZGRyZXNzIChieSBJUCBsaXRlcmFsIG9yIGJ5IEROU1xuICogcmVzb2x1dGlvbikuIFRocm93cyBhIHBsYWluIGBFcnJvcmAgd2l0aCBhIGNhbGxlci1zYWZlIG1lc3NhZ2Ugb24gcmVqZWN0aW9uO1xuICogcmVzb2x2ZXMgc2lsZW50bHkgd2hlbiB0aGUgVVJMIGlzIHNhZmUgdG8gZmV0Y2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlcnRTYWZlVXJsKHJhd1VybDogc3RyaW5nLCBvcHRzOiBTYWZlVXJsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3RvY29scyA9IG9wdHMucHJvdG9jb2xzID8/IFsnaHR0cHM6J107XG4gIGxldCB1OiBVUkw7XG4gIHRyeSB7IHUgPSBuZXcgVVJMKHJhd1VybCk7IH0gY2F0Y2ggeyB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgdXJsJyk7IH1cbiAgaWYgKCFwcm90b2NvbHMuaW5jbHVkZXModS5wcm90b2NvbCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IHVzZSAke3Byb3RvY29scy5tYXAoKHApID0+IHAucmVwbGFjZSgvOiQvLCAnJykpLmpvaW4oJy8nKX1gKTtcbiAgfVxuICBjb25zdCBob3N0ID0gdS5ob3N0bmFtZTtcbiAgaWYgKGlzSVAoaG9zdCkgJiYgaXNQcml2YXRlQWRkcmVzcyhob3N0KSkgdGhyb3cgbmV3IEVycm9yKCd1cmwgdGFyZ2V0cyBhIHByaXZhdGUgYWRkcmVzcycpO1xuICBsZXQgYWRkcnM6IHsgYWRkcmVzczogc3RyaW5nIH1bXTtcbiAgdHJ5IHsgYWRkcnMgPSBhd2FpdCBsb29rdXAoaG9zdCwgeyBhbGw6IHRydWUgfSk7IH0gY2F0Y2ggeyB0aHJvdyBuZXcgRXJyb3IoJ3VybCBob3N0IGRpZCBub3QgcmVzb2x2ZScpOyB9XG4gIGlmIChhZGRycy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcigndXJsIGhvc3QgZGlkIG5vdCByZXNvbHZlJyk7XG4gIGlmIChhZGRycy5zb21lKChhKSA9PiBpc1ByaXZhdGVBZGRyZXNzKGEuYWRkcmVzcykpKSB0aHJvdyBuZXcgRXJyb3IoJ3VybCByZXNvbHZlcyB0byBhIHByaXZhdGUgYWRkcmVzcycpO1xufVxuXG4vKipcbiAqIGBmZXRjaGAgaW5pdCBmcmFnbWVudCBldmVyeSBTU1JGLWd1YXJkZWQgY2FsbCBNVVNUIHNwcmVhZCBzbyBhIHJlZGlyZWN0IGNhbid0XG4gKiBwaXZvdCB0byBhbiB1bnZhbGlkYXRlZCAoYW5kIHJlLXJlc29sdmVkKSBob3N0LiBDYWxsZXJzIHRyZWF0IGEgM3h4IC8gb3BhcXVlXG4gKiByZWRpcmVjdCByZXNwb25zZSBhcyBhIGZhaWxlZCBkZWxpdmVyeSByYXRoZXIgdGhhbiBmb2xsb3dpbmcgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTU1JGX0ZFVENIX0lOSVQgPSB7IHJlZGlyZWN0OiAnbWFudWFsJyBhcyBjb25zdCB9O1xuXG4vKiogVHJ1ZSB3aGVuIGEgYGZldGNoYCBSZXNwb25zZSBpcyAob3Igd2FzKSBhIHJlZGlyZWN0IHRoZSBjYWxsZXIgbXVzdCByZWZ1c2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZ1c2VkUmVkaXJlY3QocmVzcDogeyB0eXBlPzogc3RyaW5nOyBzdGF0dXM6IG51bWJlciB9KTogYm9vbGVhbiB7XG4gIHJldHVybiByZXNwLnR5cGUgPT09ICdvcGFxdWVyZWRpcmVjdCcgfHwgKHJlc3Auc3RhdHVzID49IDMwMCAmJiByZXNwLnN0YXR1cyA8IDQwMCk7XG59XG4iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NyZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zc3JmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztBQUUzQjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDdEUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNQLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHO2VBQ2xDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsNENBQTRDO2VBQ3JFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7ZUFDakMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7ZUFDeEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtJQUNuRCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QiwwRUFBMEU7UUFDMUUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQseUVBQXlFO1FBQ3pFLDZFQUE2RTtRQUM3RSw0RUFBNEU7UUFDNUUsK0VBQStFO1FBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFELDZFQUE2RTtRQUM3RSwrQ0FBK0M7UUFDL0MsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzNHLE9BQU8sZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWU7V0FDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWE7QUFDN0MsQ0FBQztBQVFEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUMsTUFBYyxFQUFFLE9BQXVCLEVBQUU7SUFDM0UsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLElBQUksQ0FBTSxDQUFDO0lBQ1gsSUFBSSxDQUFDO1FBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDM0YsSUFBSSxLQUE0QixDQUFDO0lBQ2pDLElBQUksQ0FBQztRQUFDLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUFDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFBQyxDQUFDO0lBQ3pHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQzNHLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQWlCLEVBQUUsQ0FBQztBQUUvRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQXVDO0lBQ3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBTU1JGIGd1YXJkIGZvciB1c2VyL3RlbmFudC1zdXBwbGllZCBvdXRib3VuZCBVUkxzICh3ZWJob29rIHRhcmdldHMsXG4gKiBjYWxsYmFja3MsIOKApikuIFByb21vdGVkIHRvIGFwaS1jb3JlIHNvIGV2ZXJ5IHNlcnZpY2UgdGhhdCBsZXRzIGFuIG9yZyBwb2ludFxuICogdGhlIHBsYXRmb3JtIGF0IGFuIGFyYml0cmFyeSBVUkwgZW5mb3JjZXMgdGhlIFNBTUUgZGVueWxpc3QgaW5zdGVhZCBvZiBlYWNoXG4gKiByZS1kZXJpdmluZyBpdCAodGhlIGNvbXBsaWFuY2Ugbm90aWZpZXIgYW5kIHRoZSBwbGF0Zm9ybSBhbGVydCByZWxheSBib3RoXG4gKiBjb25zdW1lIHRoaXMpLlxuICpcbiAqIFRoZSBndWFyZCByZXNvbHZlcyB0aGUgaG9zdCB1cCBmcm9udCBhbmQgcmVqZWN0cyBhbnkgYWRkcmVzcyB0aGF0IGlzIOKAlCBvclxuICogcmVzb2x2ZXMgdG8g4oCUIGEgbG9vcGJhY2sgLyBwcml2YXRlIC8gbGluay1sb2NhbCAvIHVuaXF1ZS1sb2NhbCAvIGNhcnJpZXItZ3JhZGVcbiAqIE5BVCAvIGNsb3VkLW1ldGFkYXRhIHJhbmdlLCBzbyBhIHRlbmFudCBjYW4ndCBhaW0gYSB3ZWJob29rIGF0XG4gKiBgMTY5LjI1NC4xNjkuMjU0YCBvciBhbiBpbi1jbHVzdGVyIHNlcnZpY2UuXG4gKlxuICogRE5TLXJlYmluZGluZyBub3RlOiB0aGUgdXAtZnJvbnQgcmVzb2x2ZSB2YWxpZGF0ZXMgdGhlICppbml0aWFsKiBob3N0IG9ubHkuXG4gKiBOb2RlJ3MgZ2xvYmFsIGBmZXRjaGAgKHVuZGljaSkgcmUtcmVzb2x2ZXMgRE5TIGZvciBhIHJlZGlyZWN0IHRhcmdldFxuICogaW5kZXBlbmRlbnRseSwgc28gY2FsbGVycyBNVVNUIHNlbmQgd2l0aCBgcmVkaXJlY3Q6ICdtYW51YWwnYCBhbmQgdHJlYXQgYW55XG4gKiAzeHggYXMgYSBmYWlsZWQgZGVsaXZlcnkg4oCUIHNlZSB7QGxpbmsgU1NSRl9GRVRDSF9JTklUfS4gUGlubmluZyB0aGUgZXhhY3RcbiAqIHJlc29sdmVkIElQIGZvciB0aGUgY29ubmVjdGlvbiB3b3VsZCBuZWVkIGEgY3VzdG9tIHVuZGljaSBkaXNwYXRjaGVyIChub3QgYVxuICogZGVwZW5kZW5jeSBoZXJlKTsgcmVmdXNpbmcgcmVkaXJlY3RzIGNsb3NlcyB0aGUgcHJhY3RpY2FsIHJlYmluZGluZyBwaXZvdC5cbiAqL1xuXG5pbXBvcnQgeyBsb29rdXAgfSBmcm9tICdkbnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgaXNJUCB9IGZyb20gJ25ldCc7XG5cbi8qKlxuICogVHJ1ZSBmb3IgbG9vcGJhY2sgLyBwcml2YXRlIC8gbGluay1sb2NhbCAvIENHTkFUIC8gY2xvdWQtbWV0YWRhdGEgLyBVTEFcbiAqIGFkZHJlc3NlcyDigJQgdGhlIHJhbmdlcyBhbiBvdXRib3VuZCB0ZW5hbnQgd2ViaG9vayBtdXN0IG5ldmVyIHJlYWNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcml2YXRlQWRkcmVzcyhpcDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFkZHIgPSBpcC5yZXBsYWNlKC9eXFxbfFxcXSQvZywgJycpLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IHY0ID0gYWRkci5tYXRjaCgvXihcXGR7MSwzfSlcXC4oXFxkezEsM30pXFwuKFxcZHsxLDN9KVxcLihcXGR7MSwzfSkkLyk7XG4gIGlmICh2NCkge1xuICAgIGNvbnN0IGEgPSBOdW1iZXIodjRbMV0pLCBiID0gTnVtYmVyKHY0WzJdKTtcbiAgICByZXR1cm4gYSA9PT0gMCB8fCBhID09PSAxMCB8fCBhID09PSAxMjdcbiAgICAgIHx8IChhID09PSAxNjkgJiYgYiA9PT0gMjU0KSAvLyBsaW5rLWxvY2FsIGluY2wuIDE2OS4yNTQuMTY5LjI1NCBtZXRhZGF0YVxuICAgICAgfHwgKGEgPT09IDE3MiAmJiBiID49IDE2ICYmIGIgPD0gMzEpXG4gICAgICB8fCAoYSA9PT0gMTkyICYmIGIgPT09IDE2OClcbiAgICAgIHx8IChhID09PSAxMDAgJiYgYiA+PSA2NCAmJiBiIDw9IDEyNyk7IC8vIENHTkFUXG4gIH1cbiAgaWYgKGFkZHIgPT09ICc6OjEnIHx8IGFkZHIgPT09ICc6OicpIHJldHVybiB0cnVlO1xuICBpZiAoYWRkci5zdGFydHNXaXRoKCc6OmZmZmY6JykpIHtcbiAgICBjb25zdCBzdWZmaXggPSBhZGRyLnNsaWNlKDcpO1xuICAgIC8vIERvdHRlZCBmb3JtIChgOjpmZmZmOjEyNy4wLjAuMWApIOKAlCByZWN1cnNlIHN0cmFpZ2h0IGludG8gdGhlIHY0IGNoZWNrcy5cbiAgICBpZiAoc3VmZml4LmluY2x1ZGVzKCcuJykpIHJldHVybiBpc1ByaXZhdGVBZGRyZXNzKHN1ZmZpeCk7XG4gICAgLy8gSGV4IGZvcm0gKGA6OmZmZmY6N2YwMDoxYCA9IDEyNy4wLjAuMSwgYDo6ZmZmZjpjMGE4OjFgID0gMTkyLjE2OC4wLjEpOlxuICAgIC8vIHRoZSBsb3cgMzIgYml0cyBhcmUgd3JpdHRlbiBhcyB0aGUgbGFzdCBvbmUvdHdvIGhleCBncm91cHMuIEZvbGQgdGhlbSBpbnRvXG4gICAgLy8gYSBkb3R0ZWQgcXVhZCBhbmQgcmVjdXJzZSBzbyB0aGUgdjQgcmFuZ2VzIGJlbG93IHN0aWxsIGNhdGNoIGl0IOKAlCB3aXRob3V0XG4gICAgLy8gdGhpcyB0aGUgaGV4IGZvcm0gc2xpcHMgcGFzdCBldmVyeSBjaGVjayBhbmQgcmVhY2hlcyBsb29wYmFjay9wcml2YXRlIHNwYWNlLlxuICAgIGNvbnN0IGdyb3VwcyA9IHN1ZmZpeC5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhpZ2ggPSBwYXJzZUludChncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDJdID8/ICcwJywgMTYpO1xuICAgIGNvbnN0IGxvdyA9IHBhcnNlSW50KGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0gPz8gJzAnLCAxNik7XG4gICAgaWYgKE51bWJlci5pc05hTihoaWdoKSB8fCBOdW1iZXIuaXNOYU4obG93KSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEZvbGQgZWFjaCAxNi1iaXQgaGFsZiBpbnRvIHR3byBvY3RldHMgKGFyaXRobWV0aWMsIG5vdCBiaXR3aXNlLCB0byBzYXRpc2Z5XG4gICAgLy8gdGhlIG5vLWJpdHdpc2UgbGludCk6IGhpZ2gg4oaSIGEuYiwgbG93IOKGkiBjLmQuXG4gICAgY29uc3QgZG90dGVkID0gYCR7TWF0aC5mbG9vcihoaWdoIC8gMjU2KSAlIDI1Nn0uJHtoaWdoICUgMjU2fS4ke01hdGguZmxvb3IobG93IC8gMjU2KSAlIDI1Nn0uJHtsb3cgJSAyNTZ9YDtcbiAgICByZXR1cm4gaXNQcml2YXRlQWRkcmVzcyhkb3R0ZWQpO1xuICB9XG4gIHJldHVybiBhZGRyLnN0YXJ0c1dpdGgoJ2ZjJykgfHwgYWRkci5zdGFydHNXaXRoKCdmZCcpIC8vIHVuaXF1ZS1sb2NhbFxuICAgIHx8IGFkZHIuc3RhcnRzV2l0aCgnZmU4MCcpOyAvLyBsaW5rLWxvY2FsXG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgYXNzZXJ0U2FmZVVybH0uICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVVcmxPcHRpb25zIHtcbiAgLyoqIEFsbG93ZWQgVVJMIHByb3RvY29scyAoZGVmYXVsdDogYFsnaHR0cHM6J11gKS4gKi9cbiAgcHJvdG9jb2xzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVqZWN0IGEgVVJMIHRoYXQgaXMgbWFsZm9ybWVkLCB1c2VzIGEgZGlzYWxsb3dlZCBwcm90b2NvbCwgb3IgcG9pbnRzIGF0IGFcbiAqIHByaXZhdGUvbG9vcGJhY2svbGluay1sb2NhbC9tZXRhZGF0YSBhZGRyZXNzIChieSBJUCBsaXRlcmFsIG9yIGJ5IEROU1xuICogcmVzb2x1dGlvbikuIFRocm93cyBhIHBsYWluIGBFcnJvcmAgd2l0aCBhIGNhbGxlci1zYWZlIG1lc3NhZ2Ugb24gcmVqZWN0aW9uO1xuICogcmVzb2x2ZXMgc2lsZW50bHkgd2hlbiB0aGUgVVJMIGlzIHNhZmUgdG8gZmV0Y2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlcnRTYWZlVXJsKHJhd1VybDogc3RyaW5nLCBvcHRzOiBTYWZlVXJsT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb3RvY29scyA9IG9wdHMucHJvdG9jb2xzID8/IFsnaHR0cHM6J107XG4gIGxldCB1OiBVUkw7XG4gIHRyeSB7IHUgPSBuZXcgVVJMKHJhd1VybCk7IH0gY2F0Y2ggeyB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgdXJsJyk7IH1cbiAgaWYgKCFwcm90b2NvbHMuaW5jbHVkZXModS5wcm90b2NvbCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IHVzZSAke3Byb3RvY29scy5tYXAoKHApID0+IHAucmVwbGFjZSgvOiQvLCAnJykpLmpvaW4oJy8nKX1gKTtcbiAgfVxuICBjb25zdCBob3N0ID0gdS5ob3N0bmFtZTtcbiAgaWYgKGlzSVAoaG9zdCkgJiYgaXNQcml2YXRlQWRkcmVzcyhob3N0KSkgdGhyb3cgbmV3IEVycm9yKCd1cmwgdGFyZ2V0cyBhIHByaXZhdGUgYWRkcmVzcycpO1xuICBsZXQgYWRkcnM6IHsgYWRkcmVzczogc3RyaW5nIH1bXTtcbiAgdHJ5IHsgYWRkcnMgPSBhd2FpdCBsb29rdXAoaG9zdCwgeyBhbGw6IHRydWUgfSk7IH0gY2F0Y2ggeyB0aHJvdyBuZXcgRXJyb3IoJ3VybCBob3N0IGRpZCBub3QgcmVzb2x2ZScpOyB9XG4gIGlmIChhZGRycy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcigndXJsIGhvc3QgZGlkIG5vdCByZXNvbHZlJyk7XG4gIGlmIChhZGRycy5zb21lKChhKSA9PiBpc1ByaXZhdGVBZGRyZXNzKGEuYWRkcmVzcykpKSB0aHJvdyBuZXcgRXJyb3IoJ3VybCByZXNvbHZlcyB0byBhIHByaXZhdGUgYWRkcmVzcycpO1xufVxuXG4vKipcbiAqIGBmZXRjaGAgaW5pdCBmcmFnbWVudCBldmVyeSBTU1JGLWd1YXJkZWQgY2FsbCBNVVNUIHNwcmVhZCBzbyBhIHJlZGlyZWN0IGNhbid0XG4gKiBwaXZvdCB0byBhbiB1bnZhbGlkYXRlZCAoYW5kIHJlLXJlc29sdmVkKSBob3N0LiBDYWxsZXJzIHRyZWF0IGEgM3h4IC8gb3BhcXVlXG4gKiByZWRpcmVjdCByZXNwb25zZSBhcyBhIGZhaWxlZCBkZWxpdmVyeSByYXRoZXIgdGhhbiBmb2xsb3dpbmcgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTU1JGX0ZFVENIX0lOSVQgPSB7IHJlZGlyZWN0OiAnbWFudWFsJyBhcyBjb25zdCB9O1xuXG4vKiogVHJ1ZSB3aGVuIGEgYGZldGNoYCBSZXNwb25zZSBpcyAob3Igd2FzKSBhIHJlZGlyZWN0IHRoZSBjYWxsZXIgbXVzdCByZWZ1c2UuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWZ1c2VkUmVkaXJlY3QocmVzcDogeyB0eXBlPzogc3RyaW5nOyBzdGF0dXM6IG51bWJlciB9KTogYm9vbGVhbiB7XG4gIHJldHVybiByZXNwLnR5cGUgPT09ICdvcGFxdWVyZWRpcmVjdCcgfHwgKHJlc3Auc3RhdHVzID49IDMwMCAmJiByZXNwLnN0YXR1cyA8IDQwMCk7XG59XG4iXX0=
|
|
@@ -15,8 +15,8 @@ export type ValidationResult<T> = {
|
|
|
15
15
|
* Validate arbitrary data against a Zod schema.
|
|
16
16
|
*
|
|
17
17
|
* This is the core validation function used by the Express-specific helpers
|
|
18
|
-
* (`validateBody`, `validateQuery
|
|
19
|
-
*
|
|
18
|
+
* (`validateBody`, `validateQuery`). It can also be called directly when
|
|
19
|
+
* validating data that doesn't come from a request object.
|
|
20
20
|
*
|
|
21
21
|
* @param data - Data to validate
|
|
22
22
|
* @param schema - Zod schema for validation
|
|
@@ -54,7 +54,3 @@ export declare function validateQuery<T>(req: Request, schema: ZodSchema<T>): Va
|
|
|
54
54
|
* ```
|
|
55
55
|
*/
|
|
56
56
|
export declare function validateBody<T>(req: Request, schema: ZodSchema<T>): ValidationResult<T>;
|
|
57
|
-
/**
|
|
58
|
-
* Validate request path parameters with a Zod schema.
|
|
59
|
-
*/
|
|
60
|
-
export declare function validateParams<T>(req: Request, schema: ZodSchema<T>): ValidationResult<T>;
|
|
@@ -5,8 +5,8 @@ import { ZodError } from 'zod';
|
|
|
5
5
|
* Validate arbitrary data against a Zod schema.
|
|
6
6
|
*
|
|
7
7
|
* This is the core validation function used by the Express-specific helpers
|
|
8
|
-
* (`validateBody`, `validateQuery
|
|
9
|
-
*
|
|
8
|
+
* (`validateBody`, `validateQuery`). It can also be called directly when
|
|
9
|
+
* validating data that doesn't come from a request object.
|
|
10
10
|
*
|
|
11
11
|
* @param data - Data to validate
|
|
12
12
|
* @param schema - Zod schema for validation
|
|
@@ -62,10 +62,4 @@ export function validateQuery(req, schema) {
|
|
|
62
62
|
export function validateBody(req, schema) {
|
|
63
63
|
return validate(req.body, schema);
|
|
64
64
|
}
|
|
65
|
-
|
|
66
|
-
* Validate request path parameters with a Zod schema.
|
|
67
|
-
*/
|
|
68
|
-
export function validateParams(req, schema) {
|
|
69
|
-
return validate(req.params, schema);
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLEtBQUssQ0FBQztBQVMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLElBQWEsRUFDYixNQUFvQjtJQUVwQixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksUUFBUSxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxNQUFNLE9BQU8sR0FBRyxVQUFVO2dCQUN4QixDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN2RCxDQUFDLENBQUMsbUJBQW1CLENBQUM7WUFDeEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxHQUFZLEVBQUUsTUFBb0I7SUFDakUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBSSxHQUFZLEVBQUUsTUFBb0I7SUFDaEUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLEdBQVksRUFBRSxNQUFvQjtJQUNsRSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBab2RFcnJvciwgdHlwZSBab2RTY2hlbWEgfSBmcm9tICd6b2QnO1xuXG4vKipcbiAqIFJlc3VsdCB0eXBlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdDxUPiA9XG4gIHwgeyBvazogdHJ1ZTsgdmFsdWU6IFQgfVxuICB8IHsgb2s6IGZhbHNlOyBlcnJvcjogc3RyaW5nOyB6b2RFcnJvcj86IFpvZEVycm9yIH07XG5cbi8qKlxuICogVmFsaWRhdGUgYXJiaXRyYXJ5IGRhdGEgYWdhaW5zdCBhIFpvZCBzY2hlbWEuXG4gKlxuICogVGhpcyBpcyB0aGUgY29yZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHVzZWQgYnkgdGhlIEV4cHJlc3Mtc3BlY2lmaWMgaGVscGVyc1xuICogKGB2YWxpZGF0ZUJvZHlgLCBgdmFsaWRhdGVRdWVyeWAsIGB2YWxpZGF0ZVBhcmFtc2ApLiBJdCBjYW4gYWxzbyBiZSBjYWxsZWRcbiAqIGRpcmVjdGx5IHdoZW4gdmFsaWRhdGluZyBkYXRhIHRoYXQgZG9lc24ndCBjb21lIGZyb20gYSByZXF1ZXN0IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSBzY2hlbWEgLSBab2Qgc2NoZW1hIGZvciB2YWxpZGF0aW9uXG4gKiBAcmV0dXJucyBWYWxpZGF0aW9uIHJlc3VsdCB3aXRoIHBhcnNlZCBkYXRhIG9yIGVycm9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlKHNvbWVEYXRhLCBNeVNjaGVtYSk7XG4gKiBpZiAoIXJlc3VsdC5vaykge1xuICogICByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByZXN1bHQuZXJyb3IpO1xuICogfVxuICogY29uc3QgcGFyc2VkID0gcmVzdWx0LnZhbHVlO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZTxUPihcbiAgZGF0YTogdW5rbm93bixcbiAgc2NoZW1hOiBab2RTY2hlbWE8VD4sXG4pOiBWYWxpZGF0aW9uUmVzdWx0PFQ+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdmFsdWU6IHNjaGVtYS5wYXJzZShkYXRhKSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaXJzdElzc3VlID0gZXJyb3IuaXNzdWVzWzBdO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGZpcnN0SXNzdWVcbiAgICAgICAgPyBgJHtmaXJzdElzc3VlLnBhdGguam9pbignLicpfTogJHtmaXJzdElzc3VlLm1lc3NhZ2V9YFxuICAgICAgICA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBtZXNzYWdlLCB6b2RFcnJvcjogZXJyb3IgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogJ1ZhbGlkYXRpb24gZmFpbGVkJyB9O1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgcmVxdWVzdCBxdWVyeSBwYXJhbWV0ZXJzIHdpdGggYSBab2Qgc2NoZW1hLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXJ5KHJlcSwgUGlwZWxpbmVGaWx0ZXJTY2hlbWEpO1xuICogaWYgKCFyZXN1bHQub2spIHJldHVybiBzZW5kQmFkUmVxdWVzdChyZXMsIHJlc3VsdC5lcnJvcik7XG4gKiBjb25zdCBmaWx0ZXIgPSByZXN1bHQudmFsdWU7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUXVlcnk8VD4ocmVxOiBSZXF1ZXN0LCBzY2hlbWE6IFpvZFNjaGVtYTxUPik6IFZhbGlkYXRpb25SZXN1bHQ8VD4ge1xuICByZXR1cm4gdmFsaWRhdGUocmVxLnF1ZXJ5LCBzY2hlbWEpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHJlcXVlc3QgYm9keSB3aXRoIGEgWm9kIHNjaGVtYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVCb2R5KHJlcSwgUGlwZWxpbmVDcmVhdGVTY2hlbWEpO1xuICogaWYgKCFyZXN1bHQub2spIHJldHVybiBzZW5kQmFkUmVxdWVzdChyZXMsIHJlc3VsdC5lcnJvcik7XG4gKiBjb25zdCBkYXRhID0gcmVzdWx0LnZhbHVlO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJvZHk8VD4ocmVxOiBSZXF1ZXN0LCBzY2hlbWE6IFpvZFNjaGVtYTxUPik6IFZhbGlkYXRpb25SZXN1bHQ8VD4ge1xuICByZXR1cm4gdmFsaWRhdGUocmVxLmJvZHksIHNjaGVtYSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgcmVxdWVzdCBwYXRoIHBhcmFtZXRlcnMgd2l0aCBhIFpvZCBzY2hlbWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBhcmFtczxUPihyZXE6IFJlcXVlc3QsIHNjaGVtYTogWm9kU2NoZW1hPFQ+KTogVmFsaWRhdGlvblJlc3VsdDxUPiB7XG4gIHJldHVybiB2YWxpZGF0ZShyZXEucGFyYW1zLCBzY2hlbWEpO1xufVxuIl19
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL21pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLEtBQUssQ0FBQztBQVMvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLElBQWEsRUFDYixNQUFvQjtJQUVwQixJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksUUFBUSxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxNQUFNLE9BQU8sR0FBRyxVQUFVO2dCQUN4QixDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUN2RCxDQUFDLENBQUMsbUJBQW1CLENBQUM7WUFDeEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxHQUFZLEVBQUUsTUFBb0I7SUFDakUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBSSxHQUFZLEVBQUUsTUFBb0I7SUFDaEUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgWm9kRXJyb3IsIHR5cGUgWm9kU2NoZW1hIH0gZnJvbSAnem9kJztcblxuLyoqXG4gKiBSZXN1bHQgdHlwZSBmb3IgdmFsaWRhdGlvbiBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQ8VD4gPVxuICB8IHsgb2s6IHRydWU7IHZhbHVlOiBUIH1cbiAgfCB7IG9rOiBmYWxzZTsgZXJyb3I6IHN0cmluZzsgem9kRXJyb3I/OiBab2RFcnJvciB9O1xuXG4vKipcbiAqIFZhbGlkYXRlIGFyYml0cmFyeSBkYXRhIGFnYWluc3QgYSBab2Qgc2NoZW1hLlxuICpcbiAqIFRoaXMgaXMgdGhlIGNvcmUgdmFsaWRhdGlvbiBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBFeHByZXNzLXNwZWNpZmljIGhlbHBlcnNcbiAqIChgdmFsaWRhdGVCb2R5YCwgYHZhbGlkYXRlUXVlcnlgKS4gSXQgY2FuIGFsc28gYmUgY2FsbGVkIGRpcmVjdGx5IHdoZW5cbiAqIHZhbGlkYXRpbmcgZGF0YSB0aGF0IGRvZXNuJ3QgY29tZSBmcm9tIGEgcmVxdWVzdCBvYmplY3QuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2NoZW1hIC0gWm9kIHNjaGVtYSBmb3IgdmFsaWRhdGlvblxuICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHQgd2l0aCBwYXJzZWQgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZShzb21lRGF0YSwgTXlTY2hlbWEpO1xuICogaWYgKCFyZXN1bHQub2spIHtcbiAqICAgcmV0dXJuIHNlbmRCYWRSZXF1ZXN0KHJlcywgcmVzdWx0LmVycm9yKTtcbiAqIH1cbiAqIGNvbnN0IHBhcnNlZCA9IHJlc3VsdC52YWx1ZTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGU8VD4oXG4gIGRhdGE6IHVua25vd24sXG4gIHNjaGVtYTogWm9kU2NoZW1hPFQ+LFxuKTogVmFsaWRhdGlvblJlc3VsdDxUPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiBzY2hlbWEucGFyc2UoZGF0YSkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBab2RFcnJvcikge1xuICAgICAgY29uc3QgZmlyc3RJc3N1ZSA9IGVycm9yLmlzc3Vlc1swXTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBmaXJzdElzc3VlXG4gICAgICAgID8gYCR7Zmlyc3RJc3N1ZS5wYXRoLmpvaW4oJy4nKX06ICR7Zmlyc3RJc3N1ZS5tZXNzYWdlfWBcbiAgICAgICAgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCBlcnJvcjogbWVzc2FnZSwgem9kRXJyb3I6IGVycm9yIH07XG4gICAgfVxuICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6ICdWYWxpZGF0aW9uIGZhaWxlZCcgfTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHJlcXVlc3QgcXVlcnkgcGFyYW1ldGVycyB3aXRoIGEgWm9kIHNjaGVtYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVyeShyZXEsIFBpcGVsaW5lRmlsdGVyU2NoZW1hKTtcbiAqIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByZXN1bHQuZXJyb3IpO1xuICogY29uc3QgZmlsdGVyID0gcmVzdWx0LnZhbHVlO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVF1ZXJ5PFQ+KHJlcTogUmVxdWVzdCwgc2NoZW1hOiBab2RTY2hlbWE8VD4pOiBWYWxpZGF0aW9uUmVzdWx0PFQ+IHtcbiAgcmV0dXJuIHZhbGlkYXRlKHJlcS5xdWVyeSwgc2NoZW1hKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSByZXF1ZXN0IGJvZHkgd2l0aCBhIFpvZCBzY2hlbWEuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlQm9keShyZXEsIFBpcGVsaW5lQ3JlYXRlU2NoZW1hKTtcbiAqIGlmICghcmVzdWx0Lm9rKSByZXR1cm4gc2VuZEJhZFJlcXVlc3QocmVzLCByZXN1bHQuZXJyb3IpO1xuICogY29uc3QgZGF0YSA9IHJlc3VsdC52YWx1ZTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVCb2R5PFQ+KHJlcTogUmVxdWVzdCwgc2NoZW1hOiBab2RTY2hlbWE8VD4pOiBWYWxpZGF0aW9uUmVzdWx0PFQ+IHtcbiAgcmV0dXJuIHZhbGlkYXRlKHJlcS5ib2R5LCBzY2hlbWEpO1xufVxuIl19
|