@copilotkitnext/angular 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/copilotkit.providers.d.ts +1 -1
- package/dist/core/copilotkit.service.d.ts +5 -5
- package/dist/core/copilotkit.types.d.ts +8 -10
- package/dist/directives/copilotkit-frontend-tool.directive.d.ts +1 -1
- package/dist/esm2022/components/chat/copilot-chat-input.component.mjs +2 -2
- package/dist/esm2022/components/chat/copilot-chat-textarea.component.mjs +2 -2
- package/dist/esm2022/components/chat/copilot-chat.component.mjs +2 -2
- package/dist/esm2022/core/copilotkit.providers.mjs +1 -1
- package/dist/esm2022/core/copilotkit.service.mjs +5 -9
- package/dist/esm2022/core/copilotkit.types.mjs +2 -1
- package/dist/esm2022/directives/copilotkit-frontend-tool.directive.mjs +1 -3
- package/dist/esm2022/directives/copilotkit-human-in-the-loop.directive.mjs +1 -2
- package/dist/esm2022/utils/frontend-tool.utils.mjs +1 -5
- package/dist/esm2022/utils/human-in-the-loop.utils.mjs +4 -7
- package/dist/fesm2022/copilotkitnext-angular.mjs +11 -23
- package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
- package/dist/utils/frontend-tool.utils.d.ts +1 -1
- package/package.json +5 -5
|
@@ -104,10 +104,9 @@ export class CopilotKitService {
|
|
|
104
104
|
const combined = [...this._renderToolCalls()];
|
|
105
105
|
// Add render components from frontend tools
|
|
106
106
|
this._frontendTools().forEach((tool) => {
|
|
107
|
-
if (tool.render
|
|
107
|
+
if (tool.render) {
|
|
108
108
|
combined.push({
|
|
109
109
|
name: tool.name,
|
|
110
|
-
args: tool.parameters,
|
|
111
110
|
render: tool.render,
|
|
112
111
|
...(tool.agentId && { agentId: tool.agentId }),
|
|
113
112
|
});
|
|
@@ -115,10 +114,9 @@ export class CopilotKitService {
|
|
|
115
114
|
});
|
|
116
115
|
// Add render components from human-in-the-loop tools
|
|
117
116
|
this._humanInTheLoop().forEach((tool) => {
|
|
118
|
-
if (tool.render
|
|
117
|
+
if (tool.render) {
|
|
119
118
|
combined.push({
|
|
120
119
|
name: tool.name,
|
|
121
|
-
args: tool.parameters,
|
|
122
120
|
render: tool.render,
|
|
123
121
|
...(tool.agentId && { agentId: tool.agentId }),
|
|
124
122
|
});
|
|
@@ -173,10 +171,9 @@ export class CopilotKitService {
|
|
|
173
171
|
frontendTools.forEach((tool) => {
|
|
174
172
|
allTools[tool.name] = tool;
|
|
175
173
|
// Add render component if provided
|
|
176
|
-
if (tool.render
|
|
174
|
+
if (tool.render) {
|
|
177
175
|
allRenderToolCalls.push({
|
|
178
176
|
name: tool.name,
|
|
179
|
-
args: tool.parameters,
|
|
180
177
|
render: tool.render,
|
|
181
178
|
...(tool.agentId && { agentId: tool.agentId }),
|
|
182
179
|
});
|
|
@@ -199,10 +196,9 @@ export class CopilotKitService {
|
|
|
199
196
|
};
|
|
200
197
|
allTools[tool.name] = frontendTool;
|
|
201
198
|
// Add the render component
|
|
202
|
-
if (tool.render
|
|
199
|
+
if (tool.render) {
|
|
203
200
|
allRenderToolCalls.push({
|
|
204
201
|
name: tool.name,
|
|
205
|
-
args: tool.parameters,
|
|
206
202
|
render: tool.render,
|
|
207
203
|
...(tool.agentId && { agentId: tool.agentId }),
|
|
208
204
|
});
|
|
@@ -427,4 +423,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
427
423
|
type: Inject,
|
|
428
424
|
args: [COPILOTKIT_HUMAN_IN_THE_LOOP]
|
|
429
425
|
}] }] });
|
|
430
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLDRCQUE0QixHQUs3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxjQUFjLEdBR2YsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHOUI7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1Qix3Q0FBd0M7SUFDdkIsb0JBQW9CLENBQTZCO0lBQ2pELHFCQUFxQixDQUErQjtJQUNwRCxzQkFBc0IsQ0FBNEI7SUFFbkUsK0JBQStCO0lBQ3RCLFVBQVUsQ0FBaUI7SUFFcEMsZ0JBQWdCO0lBQ0MsZ0JBQWdCLENBRS9CO0lBQ2UsdUJBQXVCLENBRXRDO0lBQ2UsV0FBVyxDQUFnRDtJQUMzRCxRQUFRLENBQW9EO0lBQzVELFdBQVcsQ0FFMUI7SUFDZSxPQUFPLENBRXRCO0lBQ2UsY0FBYyxDQUU3QjtJQUNlLGVBQWUsQ0FFOUI7SUFFRiwyQ0FBMkM7SUFDMUIsb0JBQW9CLENBQW9DO0lBRXpFLHdDQUF3QztJQUN2QixTQUFTLENBRXhCO0lBQ2UsbUJBQW1CLENBRWxDO0lBRUYsK0RBQStEO0lBQ3RELGVBQWUsQ0FBTTtJQUNyQixzQkFBc0IsQ0FBTTtJQUM1QixVQUFVLENBQU07SUFDaEIsT0FBTyxDQUFNO0lBQ2IsVUFBVSxDQUFNO0lBQ2hCLE1B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QUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7d0dBMWZVLGlCQUFpQixrQkFvRWxCLHNCQUFzQixhQUN0QixrQkFBa0IsYUFDbEIscUJBQXFCLGFBQ3JCLGlCQUFpQixhQUNqQiw0QkFBNEIsYUFFNUIseUJBQXlCLGFBRXpCLDRCQUE0Qjs0R0E1RTNCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFxRTdCLE1BQU07MkJBQUMsc0JBQXNCOzswQkFDN0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQzVCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUVuQyxNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBRWhDLE1BQU07MkJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHtcbiAgQ09QSUxPVEtJVF9SVU5USU1FX1VSTCxcbiAgQ09QSUxPVEtJVF9IRUFERVJTLFxuICBDT1BJTE9US0lUX1BST1BFUlRJRVMsXG4gIENPUElMT1RLSVRfQUdFTlRTLFxuICBDT1BJTE9US0lUX1JFTkRFUl9UT09MX0NBTExTLFxuICBDT1BJTE9US0lUX0ZST05URU5EX1RPT0xTLFxuICBDT1BJTE9US0lUX0hVTUFOX0lOX1RIRV9MT09QLFxuICBDb3BpbG90S2l0Q29udGV4dFZhbHVlLFxuICBUb29sQ2FsbFJlbmRlcixcbiAgQW5ndWxhckZyb250ZW5kVG9vbCxcbiAgQW5ndWxhckh1bWFuSW5UaGVMb29wLFxufSBmcm9tIFwiLi9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQge1xuICBDb3BpbG90S2l0Q29yZSxcbiAgQ29waWxvdEtpdENvcmVDb25maWcsXG4gIEZyb250ZW5kVG9vbCxcbn0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdEFnZW50IH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcblxuLyoqXG4gKiBBbmd1bGFyIHNlcnZpY2UgZm9yIG1hbmFnaW5nIENvcGlsb3RLaXQgc3RhdGUgYW5kIGludGVyYWN0aW9ucy5cbiAqIFByb3ZpZGVzIHJlYWN0aXZlIHN0YXRlIG1hbmFnZW1lbnQgdXNpbmcgQW5ndWxhciBzaWduYWxzIGFuZCBvYnNlcnZhYmxlcy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RLaXRTZXJ2aWNlIHtcbiAgLy8gSW5pdGlhbCB2YWx1ZXMgZm9yIHN0YWJpbGl0eSB0cmFja2luZ1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxGcm9udGVuZFRvb2xzOiBBbmd1bGFyRnJvbnRlbmRUb29sPGFueT5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsSHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W107XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXI8dW5rbm93bj5bXTtcblxuICAvLyBDb3JlIGluc3RhbmNlIC0gY3JlYXRlZCBvbmNlXG4gIHJlYWRvbmx5IGNvcGlsb3RraXQ6IENvcGlsb3RLaXRDb3JlO1xuXG4gIC8vIFN0YXRlIHNpZ25hbHNcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyVG9vbENhbGxzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8VG9vbENhbGxSZW5kZXI8dW5rbm93bj5bXT5cbiAgPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFJlbmRlclRvb2xDYWxsczogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPFRvb2xDYWxsUmVuZGVyPHVua25vd24+W10+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bnRpbWVVcmw6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGVhZGVyczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvcGVydGllczogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZ2VudHM6IFJldHVyblR5cGU8XG4gICAgdHlwZW9mIHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50Pj5cbiAgPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJvbnRlbmRUb29sczogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdPlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9odW1hbkluVGhlTG9vcDogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10+XG4gID47XG5cbiAgLy8gUnVudGltZSBzdGF0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9uIHNpZ25hbFxuICBwcml2YXRlIHJlYWRvbmx5IF9ydW50aW1lU3RhdGVWZXJzaW9uOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8bnVtYmVyPj47XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFscyBmb3IgcHJvY2Vzc2VkIHZhbHVlc1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGxUb29sczogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2YgY29tcHV0ZWQ8UmVjb3JkPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+PlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGxSZW5kZXJUb29sQ2FsbHM6IFJldHVyblR5cGU8XG4gICAgdHlwZW9mIGNvbXB1dGVkPFRvb2xDYWxsUmVuZGVyPHVua25vd24+W10+XG4gID47XG5cbiAgLy8gUHVibGljIHJlYWRvbmx5IHNpZ25hbHMgLSB3aWxsIGJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9yXG4gIHJlYWRvbmx5IHJlbmRlclRvb2xDYWxsczogYW55O1xuICByZWFkb25seSBjdXJyZW50UmVuZGVyVG9vbENhbGxzOiBhbnk7XG4gIHJlYWRvbmx5IHJ1bnRpbWVVcmw6IGFueTtcbiAgcmVhZG9ubHkgaGVhZGVyczogYW55O1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBhbnk7XG4gIHJlYWRvbmx5IGFnZW50czogYW55O1xuICByZWFkb25seSBmcm9udGVuZFRvb2xzOiBhbnk7XG4gIHJlYWRvbmx5IGh1bWFuSW5UaGVMb29wOiBhbnk7XG4gIHJlYWRvbmx5IHJ1bnRpbWVTdGF0ZVZlcnNpb246IGFueTtcblxuICAvLyBPYnNlcnZhYmxlIEFQSXMgZm9yIFJ4SlMgdXNlcnMgLSB3aWxsIGJlIGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9yXG4gIHJlYWRvbmx5IHJlbmRlclRvb2xDYWxscyQ6IGFueTtcbiAgcmVhZG9ubHkgY3VycmVudFJlbmRlclRvb2xDYWxscyQ6IGFueTtcbiAgcmVhZG9ubHkgcnVudGltZVVybCQ6IGFueTtcbiAgcmVhZG9ubHkgaGVhZGVycyQ6IGFueTtcbiAgcmVhZG9ubHkgcHJvcGVydGllcyQ6IGFueTtcbiAgcmVhZG9ubHkgYWdlbnRzJDogYW55O1xuICByZWFkb25seSBmcm9udGVuZFRvb2xzJDogYW55O1xuICByZWFkb25seSBodW1hbkluVGhlTG9vcCQ6IGFueTtcblxuICAvLyBDb250ZXh0IHZhbHVlIGFzIGNvbXB1dGVkIHNpZ25hbCAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gY29uc3RydWN0b3JcbiAgcmVhZG9ubHkgY29udGV4dDogYW55O1xuICByZWFkb25seSBjb250ZXh0JDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9SVU5USU1FX1VSTCkgcnVudGltZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9IRUFERVJTKSBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9QUk9QRVJUSUVTKSBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBASW5qZWN0KENPUElMT1RLSVRfQUdFTlRTKSBhZ2VudHM6IFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+LFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9SRU5ERVJfVE9PTF9DQUxMUylcbiAgICByZW5kZXJUb29sQ2FsbHM6IFRvb2xDYWxsUmVuZGVyPHVua25vd24+W10sXG4gICAgQEluamVjdChDT1BJTE9US0lUX0ZST05URU5EX1RPT0xTKVxuICAgIGZyb250ZW5kVG9vbHM6IEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdLFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9IVU1BTl9JTl9USEVfTE9PUClcbiAgICBodW1hbkluVGhlTG9vcDogQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXVxuICApIHtcbiAgICAvLyBTdG9yZSBpbml0aWFsIHZhbHVlcyBmb3Igc3RhYmlsaXR5IGNoZWNraW5nXG4gICAgdGhpcy5pbml0aWFsRnJvbnRlbmRUb29scyA9IGZyb250ZW5kVG9vbHM7XG4gICAgdGhpcy5pbml0aWFsSHVtYW5JblRoZUxvb3AgPSBodW1hbkluVGhlTG9vcDtcbiAgICB0aGlzLmluaXRpYWxSZW5kZXJUb29sQ2FsbHMgPSByZW5kZXJUb29sQ2FsbHM7XG5cbiAgICAvLyBQcm9jZXNzIHRvb2xzIGFuZCBodW1hbkluVGhlTG9vcFxuICAgIGNvbnN0IHsgYWxsVG9vbHMsIGFsbFJlbmRlclRvb2xDYWxscyB9ID0gdGhpcy5wcm9jZXNzVG9vbHMoXG4gICAgICBmcm9udGVuZFRvb2xzLFxuICAgICAgaHVtYW5JblRoZUxvb3AsXG4gICAgICByZW5kZXJUb29sQ2FsbHNcbiAgICApO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjb3JlIGluc3RhbmNlIHdpdGggcHJvY2Vzc2VkIHRvb2xzXG4gICAgdGhpcy5jb3BpbG90a2l0ID0gbmV3IENvcGlsb3RLaXRDb3JlKHtcbiAgICAgIHJ1bnRpbWVVcmw6IHVuZGVmaW5lZCwgLy8gUHJldmVudCBzZXJ2ZXItc2lkZSBmZXRjaGluZ1xuICAgICAgaGVhZGVycyxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgICBhZ2VudHMsXG4gICAgICB0b29sczogYWxsVG9vbHMsXG4gICAgfSBhcyBDb3BpbG90S2l0Q29yZUNvbmZpZyk7XG5cbiAgICAvLyBJbml0aWFsaXplIHN0YXRlIHNpZ25hbHNcbiAgICB0aGlzLl9yZW5kZXJUb29sQ2FsbHMgPVxuICAgICAgc2lnbmFsPFRvb2xDYWxsUmVuZGVyPHVua25vd24+W10+KGFsbFJlbmRlclRvb2xDYWxscyk7XG4gICAgdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscyA9XG4gICAgICBzaWduYWw8VG9vbENhbGxSZW5kZXI8dW5rbm93bj5bXT4oYWxsUmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLl9ydW50aW1lVXJsID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4ocnVudGltZVVybCk7XG4gICAgdGhpcy5faGVhZGVycyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihoZWFkZXJzKTtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihwcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9hZ2VudHMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD4+KGFnZW50cyk7XG4gICAgdGhpcy5fZnJvbnRlbmRUb29scyA9IHNpZ25hbDxBbmd1bGFyRnJvbnRlbmRUb29sPGFueT5bXT4oZnJvbnRlbmRUb29scyk7XG4gICAgdGhpcy5faHVtYW5JblRoZUxvb3AgPSBzaWduYWw8QW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXT4oaHVtYW5JblRoZUxvb3ApO1xuICAgIHRoaXMuX3J1bnRpbWVTdGF0ZVZlcnNpb24gPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIC8vIEluaXRpYWxpemUgY29tcHV0ZWQgc2lnbmFscyBmb3IgcHJvY2Vzc2VkIHZhbHVlc1xuICAgIHRoaXMuX2FsbFRvb2xzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgdG9vbHM6IFJlY29yZDxzdHJpbmcsIEZyb250ZW5kVG9vbDxhbnk+PiA9IHt9O1xuXG4gICAgICAvLyBBZGQgZnJvbnRlbmQgdG9vbHNcbiAgICAgIHRoaXMuX2Zyb250ZW5kVG9vbHMoKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICAgIHRvb2xzW3Rvb2wubmFtZV0gPSB0b29sIGFzIEZyb250ZW5kVG9vbDxhbnk+O1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFByb2Nlc3MgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHNcbiAgICAgIHRoaXMuX2h1bWFuSW5UaGVMb29wKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBjb25zdCBmcm9udGVuZFRvb2w6IEZyb250ZW5kVG9vbDxhbnk+ID0ge1xuICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdG9vbC5kZXNjcmlwdGlvbixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB0b29sLnBhcmFtZXRlcnMsXG4gICAgICAgICAgZm9sbG93VXA6IHRvb2wuZm9sbG93VXAsXG4gICAgICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICBgSHVtYW4taW4tdGhlLWxvb3AgdG9vbCAnJHt0b29sLm5hbWV9JyBjYWxsZWQgYnV0IG5vIGludGVyYWN0aXZlIGhhbmRsZXIgaXMgc2V0IHVwLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIHRvb2xzW3Rvb2wubmFtZV0gPSBmcm9udGVuZFRvb2w7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRvb2xzO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fYWxsUmVuZGVyVG9vbENhbGxzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgY29tYmluZWQ6IFRvb2xDYWxsUmVuZGVyPHVua25vd24+W10gPSBbLi4udGhpcy5fcmVuZGVyVG9vbENhbGxzKCldO1xuXG4gICAgICAvLyBBZGQgcmVuZGVyIGNvbXBvbmVudHMgZnJvbSBmcm9udGVuZCB0b29sc1xuICAgICAgdGhpcy5fZnJvbnRlbmRUb29scygpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgICAgaWYgKHRvb2wucmVuZGVyICYmIHRvb2wucGFyYW1ldGVycykge1xuICAgICAgICAgIGNvbWJpbmVkLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgICAgYXJnczogdG9vbC5wYXJhbWV0ZXJzLFxuICAgICAgICAgICAgcmVuZGVyOiB0b29sLnJlbmRlcixcbiAgICAgICAgICAgIC4uLih0b29sLmFnZW50SWQgJiYgeyBhZ2VudElkOiB0b29sLmFnZW50SWQgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBBZGQgcmVuZGVyIGNvbXBvbmVudHMgZnJvbSBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgICAgdGhpcy5faHVtYW5JblRoZUxvb3AoKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICAgIGlmICh0b29sLnJlbmRlciAmJiB0b29sLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIGFyZ3M6IHRvb2wucGFyYW1ldGVycyxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbWJpbmVkO1xuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBwdWJsaWMgcmVhZG9ubHkgc2lnbmFsc1xuICAgIHRoaXMucmVuZGVyVG9vbENhbGxzID0gdGhpcy5fYWxsUmVuZGVyVG9vbENhbGxzO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVVybCA9IHRoaXMuX3J1bnRpbWVVcmwuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuX2hlYWRlcnMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHRoaXMuX3Byb3BlcnRpZXMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuYWdlbnRzID0gdGhpcy5fYWdlbnRzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmZyb250ZW5kVG9vbHMgPSB0aGlzLl9mcm9udGVuZFRvb2xzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wID0gdGhpcy5faHVtYW5JblRoZUxvb3AuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbiA9IHRoaXMuX3J1bnRpbWVTdGF0ZVZlcnNpb24uYXNSZWFkb25seSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBPYnNlcnZhYmxlIEFQSXNcbiAgICB0aGlzLnJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5yZW5kZXJUb29sQ2FsbHMpO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLnJ1bnRpbWVVcmwkID0gdG9PYnNlcnZhYmxlKHRoaXMucnVudGltZVVybCk7XG4gICAgdGhpcy5oZWFkZXJzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhlYWRlcnMpO1xuICAgIHRoaXMucHJvcGVydGllcyQgPSB0b09ic2VydmFibGUodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLmFnZW50cyQgPSB0b09ic2VydmFibGUodGhpcy5hZ2VudHMpO1xuICAgIHRoaXMuZnJvbnRlbmRUb29scyQgPSB0b09ic2VydmFibGUodGhpcy5mcm9udGVuZFRvb2xzKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmh1bWFuSW5UaGVMb29wKTtcblxuICAgIC8vIEluaXRpYWxpemUgY29udGV4dCB2YWx1ZSBhcyBjb21wdXRlZCBzaWduYWxcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wdXRlZDxDb3BpbG90S2l0Q29udGV4dFZhbHVlPigoKSA9PiB7XG4gICAgICAvLyBUb3VjaCB0aGUgcnVudGltZSBzdGF0ZSB2ZXJzaW9uIHRvIGVuc3VyZSB0aGlzIGNvbXB1dGVkIHVwZGF0ZXNcbiAgICAgIC8vIHdoZW4gcnVudGltZSBldmVudHMgb2NjdXIgKGxvYWRlZC9lcnJvcilcbiAgICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbigpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3BpbG90a2l0OiB0aGlzLmNvcGlsb3RraXQsXG4gICAgICAgIHJlbmRlclRvb2xDYWxsczogdGhpcy5yZW5kZXJUb29sQ2FsbHMoKSxcbiAgICAgICAgY3VycmVudFJlbmRlclRvb2xDYWxsczogdGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCksXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHM6ICh2KSA9PiB0aGlzLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHModiksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb250ZXh0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgLy8gRWZmZWN0cyBtdXN0IGJlIGNyZWF0ZWQgaW4gaW5qZWN0aW9uIGNvbnRleHQgKGNvbnN0cnVjdG9yKVxuICAgIHRoaXMuc2V0dXBSdW50aW1lU3luY0VmZmVjdHMoKTtcbiAgICB0aGlzLnNldHVwU3RhYmlsaXR5V2FybmluZ3MoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGZyb250ZW5kIHRvb2xzIGFuZCBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzVG9vbHMoXG4gICAgZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10sXG4gICAgaHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10sXG4gICAgcmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcjx1bmtub3duPltdXG4gICk6IHtcbiAgICBhbGxUb29sczogUmVjb3JkPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+O1xuICAgIGFsbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXI8dW5rbm93bj5bXTtcbiAgfSB7XG4gICAgY29uc3QgYWxsVG9vbHM6IFJlY29yZDxzdHJpbmcsIEZyb250ZW5kVG9vbDxhbnk+PiA9IHt9O1xuICAgIGNvbnN0IGFsbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXI8dW5rbm93bj5bXSA9IFsuLi5yZW5kZXJUb29sQ2FsbHNdO1xuXG4gICAgLy8gQWRkIGZyb250ZW5kIHRvb2xzXG4gICAgZnJvbnRlbmRUb29scy5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICBhbGxUb29sc1t0b29sLm5hbWVdID0gdG9vbCBhcyBGcm9udGVuZFRvb2w8YW55PjtcblxuICAgICAgLy8gQWRkIHJlbmRlciBjb21wb25lbnQgaWYgcHJvdmlkZWRcbiAgICAgIGlmICh0b29sLnJlbmRlciAmJiB0b29sLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgYWxsUmVuZGVyVG9vbENhbGxzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICBhcmdzOiB0b29sLnBhcmFtZXRlcnMsXG4gICAgICAgICAgcmVuZGVyOiB0b29sLnJlbmRlcixcbiAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFByb2Nlc3MgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHNcbiAgICBodW1hbkluVGhlTG9vcC5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICAvLyBDcmVhdGUgYSBmcm9udGVuZCB0b29sIHdpdGggcGxhY2Vob2xkZXIgaGFuZGxlclxuICAgICAgY29uc3QgZnJvbnRlbmRUb29sOiBGcm9udGVuZFRvb2w8YW55PiA9IHtcbiAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogdG9vbC5kZXNjcmlwdGlvbixcbiAgICAgICAgcGFyYW1ldGVyczogdG9vbC5wYXJhbWV0ZXJzLFxuICAgICAgICBmb2xsb3dVcDogdG9vbC5mb2xsb3dVcCxcbiAgICAgICAgLi4uKHRvb2wuYWdlbnRJZCAmJiB7IGFnZW50SWQ6IHRvb2wuYWdlbnRJZCB9KSxcbiAgICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIFBsYWNlaG9sZGVyIGhhbmRsZXIgLSBhY3R1YWwgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSByZW5kZXIgY29tcG9uZW50XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYEh1bWFuLWluLXRoZS1sb29wIHRvb2wgJyR7dG9vbC5uYW1lfScgY2FsbGVkIGJ1dCBubyBpbnRlcmFjdGl2ZSBoYW5kbGVyIGlzIHNldCB1cC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGFsbFRvb2xzW3Rvb2wubmFtZV0gPSBmcm9udGVuZFRvb2w7XG5cbiAgICAgIC8vIEFkZCB0aGUgcmVuZGVyIGNvbXBvbmVudFxuICAgICAgaWYgKHRvb2wucmVuZGVyICYmIHRvb2wucGFyYW1ldGVycykge1xuICAgICAgICBhbGxSZW5kZXJUb29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIGFyZ3M6IHRvb2wucGFyYW1ldGVycyxcbiAgICAgICAgICByZW5kZXI6IHRvb2wucmVuZGVyLFxuICAgICAgICAgIC4uLih0b29sLmFnZW50SWQgJiYgeyBhZ2VudElkOiB0b29sLmFnZW50SWQgfSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWxsVG9vbHMsIGFsbFJlbmRlclRvb2xDYWxscyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHVwIHN0YWJpbGl0eSB3YXJuaW5nIGVmZmVjdHNcbiAgICovXG4gIHByaXZhdGUgc2V0dXBTdGFiaWxpdHlXYXJuaW5ncygpOiB2b2lkIHtcbiAgICAvLyBXYXJuIGlmIGZyb250ZW5kVG9vbHMgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZnJvbnRlbmRUb29scygpO1xuICAgICAgaWYgKFxuICAgICAgICBjdXJyZW50ICE9PSB0aGlzLmluaXRpYWxGcm9udGVuZFRvb2xzICYmXG4gICAgICAgIHRoaXMuaW5pdGlhbEZyb250ZW5kVG9vbHMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiZnJvbnRlbmRUb29scyBtdXN0IGJlIGEgc3RhYmxlIGFycmF5LiBUbyBhZGQvcmVtb3ZlIHRvb2xzIGR5bmFtaWNhbGx5LCB1c2UgZHluYW1pYyB0b29sIHJlZ2lzdHJhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gV2FybiBpZiBodW1hbkluVGhlTG9vcCBjaGFuZ2VzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9odW1hbkluVGhlTG9vcCgpO1xuICAgICAgaWYgKFxuICAgICAgICBjdXJyZW50ICE9PSB0aGlzLmluaXRpYWxIdW1hbkluVGhlTG9vcCAmJlxuICAgICAgICB0aGlzLmluaXRpYWxIdW1hbkluVGhlTG9vcC5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJodW1hbkluVGhlTG9vcCBtdXN0IGJlIGEgc3RhYmxlIGFycmF5LiBUbyBhZGQvcmVtb3ZlIGh1bWFuLWluLXRoZS1sb29wIHRvb2xzIGR5bmFtaWNhbGx5LCB1c2UgZHluYW1pYyB0b29sIHJlZ2lzdHJhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gV2FybiBpZiByZW5kZXJUb29sQ2FsbHMgY2hhbmdlc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fcmVuZGVyVG9vbENhbGxzKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbFJlbmRlclRvb2xDYWxscyAmJlxuICAgICAgICB0aGlzLmluaXRpYWxSZW5kZXJUb29sQ2FsbHMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwicmVuZGVyVG9vbENhbGxzIG11c3QgYmUgYSBzdGFibGUgb2JqZWN0LiBUbyBhZGQvcmVtb3ZlIHRvb2xzIGR5bmFtaWNhbGx5LCB1c2UgZHluYW1pYyB0b29sIHJlZ2lzdHJhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHVwIGVmZmVjdHMgdG8gc3luYyBydW50aW1lIGNvbmZpZ3VyYXRpb24gd2l0aCBDb3BpbG90S2l0Q29yZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFJ1bnRpbWVTeW5jRWZmZWN0cygpOiB2b2lkIHtcbiAgICAvLyBTeW5jIHJ1bnRpbWUgVVJMXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucnVudGltZVVybCgpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29waWxvdGtpdC5zZXRSdW50aW1lVXJsKHVybCkpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyBoZWFkZXJzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnMoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmNvcGlsb3RraXQuc2V0SGVhZGVycyhoZWFkZXJzKSk7XG4gICAgfSk7XG5cbiAgICAvLyBTeW5jIHByb3BlcnRpZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllcygpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29waWxvdGtpdC5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpKTtcbiAgICB9KTtcblxuICAgIC8vIFN5bmMgYWdlbnRzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGFnZW50cyA9IHRoaXMuYWdlbnRzKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb3BpbG90a2l0LnNldEFnZW50cyhhZ2VudHMpKTtcbiAgICB9KTtcblxuICAgIC8vIFN5bmMgdG9vbHMgLSBjb21wdXRlZCBmcm9tIGZyb250ZW5kIHRvb2xzIGFuZCBodW1hbi1pbi10aGUtbG9vcFxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0b29scyA9IHRoaXMuX2FsbFRvb2xzKCk7XG4gICAgICAvLyBVcGRhdGUgY29waWxvdGtpdC50b29scyBkaXJlY3RseSBzaW5jZSB0aGVyZSdzIG5vIHNldFRvb2xzIG1ldGhvZFxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb3BpbG90a2l0LnRvb2xzID0gdG9vbHM7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gQ29waWxvdEtpdCBydW50aW1lIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gdGhpcy5jb3BpbG90a2l0LnN1YnNjcmliZSh7XG4gICAgICBvblJ1bnRpbWVMb2FkZWQ6ICgpID0+IHtcbiAgICAgICAgLy8gSW5jcmVtZW50IHZlcnNpb24gdG8gbm90aWZ5IGFsbCBjb25zdW1lcnMgdGhhdCBydW50aW1lIHN0YXRlIGhhcyBjaGFuZ2VkXG4gICAgICAgIC8vIFRoaXMgdHJpZ2dlcnMgcmUtZXZhbHVhdGlvbiBvZiBjb21wdXRlZCBzaWduYWxzIHRoYXQgZGVwZW5kIG9uIHJ1bnRpbWUgc3RhdGVcbiAgICAgICAgdGhpcy5ub3RpZnlSdW50aW1lU3RhdGVDaGFuZ2UoKTtcbiAgICAgIH0sXG4gICAgICBvblJ1bnRpbWVMb2FkRXJyb3I6ICgpID0+IHtcbiAgICAgICAgLy8gSW5jcmVtZW50IHZlcnNpb24gdG8gbm90aWZ5IGFsbCBjb25zdW1lcnMgdGhhdCBydW50aW1lIHN0YXRlIGhhcyBjaGFuZ2VkXG4gICAgICAgIC8vIFRoaXMgdHJpZ2dlcnMgcmUtZXZhbHVhdGlvbiBvZiBjb21wdXRlZCBzaWduYWxzIHRoYXQgZGVwZW5kIG9uIHJ1bnRpbWUgc3RhdGVcbiAgICAgICAgdGhpcy5ub3RpZnlSdW50aW1lU3RhdGVDaGFuZ2UoKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBSb290IHNlcnZpY2UgbGl2ZXMgZm9yIGFwcCBsaWZldGltZTsgdW5zdWJzY3JpYmUgbm90IG5lZWRlZC5cbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZnkgY29uc3VtZXJzIHRoYXQgdGhlIHJ1bnRpbWUgc3RhdGUgaGFzIGNoYW5nZWQuXG4gICAqIFRoaXMgaXMgc2ltaWxhciB0byBSZWFjdCdzIGZvcmNlVXBkYXRlIC0gaXQgdHJpZ2dlcnMgY2hhbmdlIGRldGVjdGlvblxuICAgKiBmb3IgYW55IGNvbXB1dGVkIHNpZ25hbHMgb3IgZWZmZWN0cyB0aGF0IGRlcGVuZCBvbiBydW50aW1lIHN0YXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBub3RpZnlSdW50aW1lU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcnVudGltZVN0YXRlVmVyc2lvbi51cGRhdGUoKHZlcnNpb24pID0+IHZlcnNpb24gKyAxKTtcbiAgfVxuXG4gIC8vIFB1YmxpYyBtdXRhdGlvbiBtZXRob2RzXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcnVudGltZSBVUkxcbiAgICovXG4gIHNldFJ1bnRpbWVVcmwodXJsPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcnVudGltZVVybC5zZXQodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcmVxdWVzdCBoZWFkZXJzXG4gICAqL1xuICBzZXRIZWFkZXJzKGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLl9oZWFkZXJzLnNldChoZWFkZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcnVudGltZSBwcm9wZXJ0aWVzXG4gICAqL1xuICBzZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcy5zZXQocHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFnZW50cyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzZXRBZ2VudHMoYWdlbnRzOiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50Pik6IHZvaWQge1xuICAgIHRoaXMuX2FnZW50cy5zZXQoYWdlbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gYWdlbnQgYnkgSURcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgSUQgdG8gcmV0cmlldmVcbiAgICogQHJldHVybnMgVGhlIGFnZW50IG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICovXG4gIGdldEFnZW50KGFnZW50SWQ6IHN0cmluZyk6IEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvcGlsb3RraXQuZ2V0QWdlbnQoYWdlbnRJZCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHJlbmRlciB0b29sIGNhbGxzICh3YXJucyBpZiBvYmplY3QgcmVmZXJlbmNlIGNoYW5nZXMpXG4gICAqL1xuICBzZXRSZW5kZXJUb29sQ2FsbHMocmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcjx1bmtub3duPltdKTogdm9pZCB7XG4gICAgaWYgKHJlbmRlclRvb2xDYWxscyAhPT0gdGhpcy5pbml0aWFsUmVuZGVyVG9vbENhbGxzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcInJlbmRlclRvb2xDYWxscyBtdXN0IGJlIGEgc3RhYmxlIG9iamVjdC4gVG8gYWRkL3JlbW92ZSB0b29scyBkeW5hbWljYWxseSwgdXNlIGR5bmFtaWMgdG9vbCByZWdpc3RyYXRpb24uXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX3JlbmRlclRvb2xDYWxscy5zZXQocmVuZGVyVG9vbENhbGxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgZnJvbnRlbmQgdG9vbHMgYXJyYXlcbiAgICovXG4gIHNldEZyb250ZW5kVG9vbHMoZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10pOiB2b2lkIHtcbiAgICBpZiAoZnJvbnRlbmRUb29scyAhPT0gdGhpcy5pbml0aWFsRnJvbnRlbmRUb29scykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgXCJmcm9udGVuZFRvb2xzIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9mcm9udGVuZFRvb2xzLnNldChmcm9udGVuZFRvb2xzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaHVtYW4taW4tdGhlLWxvb3AgYXJyYXlcbiAgICovXG4gIHNldEh1bWFuSW5UaGVMb29wKGh1bWFuSW5UaGVMb29wOiBBbmd1bGFySHVtYW5JblRoZUxvb3A8YW55PltdKTogdm9pZCB7XG4gICAgaWYgKGh1bWFuSW5UaGVMb29wICE9PSB0aGlzLmluaXRpYWxIdW1hbkluVGhlTG9vcCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgXCJodW1hbkluVGhlTG9vcCBtdXN0IGJlIGEgc3RhYmxlIGFycmF5LiBUbyBhZGQvcmVtb3ZlIGh1bWFuLWluLXRoZS1sb29wIHRvb2xzIGR5bmFtaWNhbGx5LCB1c2UgZHluYW1pYyB0b29sIHJlZ2lzdHJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5faHVtYW5JblRoZUxvb3Auc2V0KGh1bWFuSW5UaGVMb29wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY3VycmVudCByZW5kZXIgdG9vbCBjYWxsc1xuICAgKi9cbiAgc2V0Q3VycmVudFJlbmRlclRvb2xDYWxscyhyZW5kZXJUb29sQ2FsbHM6IFRvb2xDYWxsUmVuZGVyPHVua25vd24+W10pOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzLnNldChyZW5kZXJUb29sQ2FsbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgdG9vbCByZW5kZXJcbiAgICovXG4gIHJlZ2lzdGVyVG9vbFJlbmRlcihuYW1lOiBzdHJpbmcsIHJlbmRlcjogVG9vbENhbGxSZW5kZXI8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscygpO1xuICAgIGlmIChjdXJyZW50LmZpbmQoKHIpID0+IHIubmFtZSA9PT0gbmFtZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgVG9vbCByZW5kZXIgZm9yICcke25hbWV9JyBpcyBiZWluZyBvdmVyd3JpdHRlbmApO1xuICAgIH1cbiAgICB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzLnNldChbXG4gICAgICAuLi5jdXJyZW50LmZpbHRlcigocikgPT4gci5uYW1lICE9PSBuYW1lKSxcbiAgICAgIHJlbmRlcixcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVyIGEgdG9vbCByZW5kZXJcbiAgICovXG4gIHVucmVnaXN0ZXJUb29sUmVuZGVyKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBjdXJyZW50LmZpbHRlcigocikgPT4gci5uYW1lICE9PSBuYW1lKTtcbiAgICBpZiAoZmlsdGVyZWQubGVuZ3RoICE9PSBjdXJyZW50Lmxlbmd0aCkge1xuICAgICAgdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscy5zZXQoZmlsdGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyB0b29sIHJlbmRlclxuICAgKi9cbiAgZ2V0VG9vbFJlbmRlcihuYW1lOiBzdHJpbmcpOiBUb29sQ2FsbFJlbmRlcjx1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKS5maW5kKChyKSA9PiByLm5hbWUgPT09IG5hbWUpO1xuICB9XG59XG4iXX0=
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIseUJBQXlCLEVBQ3pCLDRCQUE0QixHQUs3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxjQUFjLEdBR2YsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHOUI7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1Qix3Q0FBd0M7SUFDdkIsb0JBQW9CLENBQTZCO0lBQ2pELHFCQUFxQixDQUErQjtJQUNwRCxzQkFBc0IsQ0FBbUI7SUFFMUQsK0JBQStCO0lBQ3RCLFVBQVUsQ0FBaUI7SUFFcEMsZ0JBQWdCO0lBQ0MsZ0JBQWdCLENBRS9CO0lBQ2UsdUJBQXVCLENBRXRDO0lBQ2UsV0FBVyxDQUFnRDtJQUMzRCxRQUFRLENBQW9EO0lBQzVELFdBQVcsQ0FFMUI7SUFDZSxPQUFPLENBRXRCO0lBQ2UsY0FBYyxDQUU3QjtJQUNlLGVBQWUsQ0FFOUI7SUFFRiwyQ0FBMkM7SUFDMUIsb0JBQW9CLENBQW9DO0lBRXpFLHdDQUF3QztJQUN2QixTQUFTLENBRXhCO0lBQ2UsbUJBQW1CLENBRWxDO0lBRUYsK0RBQStEO0lBQ3RELGVBQWUsQ0FBTTtJQUNyQixzQkFBc0IsQ0FBTTtJQUM1QixVQUFVLENBQU07SUFDaEIsT0FBTyxDQUFNO0lBQ2IsVUFBVSxDQUFNO0lBQ2hCLE1B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Q0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLElBQVk7UUFDeEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQzt3R0F0ZlUsaUJBQWlCLGtCQW9FbEIsc0JBQXNCLGFBQ3RCLGtCQUFrQixhQUNsQixxQkFBcUIsYUFDckIsaUJBQWlCLGFBQ2pCLDRCQUE0QixhQUU1Qix5QkFBeUIsYUFFekIsNEJBQTRCOzRHQTVFM0IsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQXFFN0IsTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLE1BQU07MkJBQUMscUJBQXFCOzswQkFDNUIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBRW5DLE1BQU07MkJBQUMseUJBQXlCOzswQkFFaEMsTUFBTTsyQkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3QsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgdW50cmFja2VkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQge1xuICBDT1BJTE9US0lUX1JVTlRJTUVfVVJMLFxuICBDT1BJTE9US0lUX0hFQURFUlMsXG4gIENPUElMT1RLSVRfUFJPUEVSVElFUyxcbiAgQ09QSUxPVEtJVF9BR0VOVFMsXG4gIENPUElMT1RLSVRfUkVOREVSX1RPT0xfQ0FMTFMsXG4gIENPUElMT1RLSVRfRlJPTlRFTkRfVE9PTFMsXG4gIENPUElMT1RLSVRfSFVNQU5fSU5fVEhFX0xPT1AsXG4gIENvcGlsb3RLaXRDb250ZXh0VmFsdWUsXG4gIFRvb2xDYWxsUmVuZGVyLFxuICBBbmd1bGFyRnJvbnRlbmRUb29sLFxuICBBbmd1bGFySHVtYW5JblRoZUxvb3AsXG59IGZyb20gXCIuL2NvcGlsb3RraXQudHlwZXNcIjtcbmltcG9ydCB7XG4gIENvcGlsb3RLaXRDb3JlLFxuICBDb3BpbG90S2l0Q29yZUNvbmZpZyxcbiAgRnJvbnRlbmRUb29sLFxufSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vKipcbiAqIEFuZ3VsYXIgc2VydmljZSBmb3IgbWFuYWdpbmcgQ29waWxvdEtpdCBzdGF0ZSBhbmQgaW50ZXJhY3Rpb25zLlxuICogUHJvdmlkZXMgcmVhY3RpdmUgc3RhdGUgbWFuYWdlbWVudCB1c2luZyBBbmd1bGFyIHNpZ25hbHMgYW5kIG9ic2VydmFibGVzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdFNlcnZpY2Uge1xuICAvLyBJbml0aWFsIHZhbHVlcyBmb3Igc3RhYmlsaXR5IHRyYWNraW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbEZyb250ZW5kVG9vbHM6IEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxIdW1hbkluVGhlTG9vcDogQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsUmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdO1xuXG4gIC8vIENvcmUgaW5zdGFuY2UgLSBjcmVhdGVkIG9uY2VcbiAgcmVhZG9ubHkgY29waWxvdGtpdDogQ29waWxvdEtpdENvcmU7XG5cbiAgLy8gU3RhdGUgc2lnbmFsc1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJUb29sQ2FsbHM6IFJldHVyblR5cGU8XG4gICAgdHlwZW9mIHNpZ25hbDxUb29sQ2FsbFJlbmRlcltdPlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UmVuZGVyVG9vbENhbGxzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8VG9vbENhbGxSZW5kZXJbXT5cbiAgPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVudGltZVVybDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkZXJzOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0aWVzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FnZW50czogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2Ygc2lnbmFsPFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+PlxuICA+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcm9udGVuZFRvb2xzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8QW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2h1bWFuSW5UaGVMb29wOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBzaWduYWw8QW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXT5cbiAgPjtcblxuICAvLyBSdW50aW1lIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb24gc2lnbmFsXG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1bnRpbWVTdGF0ZVZlcnNpb246IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxudW1iZXI+PjtcblxuICAvLyBDb21wdXRlZCBzaWduYWxzIGZvciBwcm9jZXNzZWQgdmFsdWVzXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbFRvb2xzOiBSZXR1cm5UeXBlPFxuICAgIHR5cGVvZiBjb21wdXRlZDxSZWNvcmQ8c3RyaW5nLCBGcm9udGVuZFRvb2w8YW55Pj4+XG4gID47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbFJlbmRlclRvb2xDYWxsczogUmV0dXJuVHlwZTxcbiAgICB0eXBlb2YgY29tcHV0ZWQ8VG9vbENhbGxSZW5kZXJbXT5cbiAgPjtcblxuICAvLyBQdWJsaWMgcmVhZG9ubHkgc2lnbmFscyAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gY29uc3RydWN0b3JcbiAgcmVhZG9ubHkgcmVuZGVyVG9vbENhbGxzOiBhbnk7XG4gIHJlYWRvbmx5IGN1cnJlbnRSZW5kZXJUb29sQ2FsbHM6IGFueTtcbiAgcmVhZG9ubHkgcnVudGltZVVybDogYW55O1xuICByZWFkb25seSBoZWFkZXJzOiBhbnk7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IGFueTtcbiAgcmVhZG9ubHkgYWdlbnRzOiBhbnk7XG4gIHJlYWRvbmx5IGZyb250ZW5kVG9vbHM6IGFueTtcbiAgcmVhZG9ubHkgaHVtYW5JblRoZUxvb3A6IGFueTtcbiAgcmVhZG9ubHkgcnVudGltZVN0YXRlVmVyc2lvbjogYW55O1xuXG4gIC8vIE9ic2VydmFibGUgQVBJcyBmb3IgUnhKUyB1c2VycyAtIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gY29uc3RydWN0b3JcbiAgcmVhZG9ubHkgcmVuZGVyVG9vbENhbGxzJDogYW55O1xuICByZWFkb25seSBjdXJyZW50UmVuZGVyVG9vbENhbGxzJDogYW55O1xuICByZWFkb25seSBydW50aW1lVXJsJDogYW55O1xuICByZWFkb25seSBoZWFkZXJzJDogYW55O1xuICByZWFkb25seSBwcm9wZXJ0aWVzJDogYW55O1xuICByZWFkb25seSBhZ2VudHMkOiBhbnk7XG4gIHJlYWRvbmx5IGZyb250ZW5kVG9vbHMkOiBhbnk7XG4gIHJlYWRvbmx5IGh1bWFuSW5UaGVMb29wJDogYW55O1xuXG4gIC8vIENvbnRleHQgdmFsdWUgYXMgY29tcHV0ZWQgc2lnbmFsIC0gd2lsbCBiZSBpbml0aWFsaXplZCBpbiBjb25zdHJ1Y3RvclxuICByZWFkb25seSBjb250ZXh0OiBhbnk7XG4gIHJlYWRvbmx5IGNvbnRleHQkOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT1BJTE9US0lUX1JVTlRJTUVfVVJMKSBydW50aW1lVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgQEluamVjdChDT1BJTE9US0lUX0hFQURFUlMpIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgQEluamVjdChDT1BJTE9US0lUX1BST1BFUlRJRVMpIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIEBJbmplY3QoQ09QSUxPVEtJVF9BR0VOVFMpIGFnZW50czogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RBZ2VudD4sXG4gICAgQEluamVjdChDT1BJTE9US0lUX1JFTkRFUl9UT09MX0NBTExTKVxuICAgIHJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXSxcbiAgICBASW5qZWN0KENPUElMT1RLSVRfRlJPTlRFTkRfVE9PTFMpXG4gICAgZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10sXG4gICAgQEluamVjdChDT1BJTE9US0lUX0hVTUFOX0lOX1RIRV9MT09QKVxuICAgIGh1bWFuSW5UaGVMb29wOiBBbmd1bGFySHVtYW5JblRoZUxvb3A8YW55PltdXG4gICkge1xuICAgIC8vIFN0b3JlIGluaXRpYWwgdmFsdWVzIGZvciBzdGFiaWxpdHkgY2hlY2tpbmdcbiAgICB0aGlzLmluaXRpYWxGcm9udGVuZFRvb2xzID0gZnJvbnRlbmRUb29scztcbiAgICB0aGlzLmluaXRpYWxIdW1hbkluVGhlTG9vcCA9IGh1bWFuSW5UaGVMb29wO1xuICAgIHRoaXMuaW5pdGlhbFJlbmRlclRvb2xDYWxscyA9IHJlbmRlclRvb2xDYWxscztcblxuICAgIC8vIFByb2Nlc3MgdG9vbHMgYW5kIGh1bWFuSW5UaGVMb29wXG4gICAgY29uc3QgeyBhbGxUb29scywgYWxsUmVuZGVyVG9vbENhbGxzIH0gPSB0aGlzLnByb2Nlc3NUb29scyhcbiAgICAgIGZyb250ZW5kVG9vbHMsXG4gICAgICBodW1hbkluVGhlTG9vcCxcbiAgICAgIHJlbmRlclRvb2xDYWxsc1xuICAgICk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNvcmUgaW5zdGFuY2Ugd2l0aCBwcm9jZXNzZWQgdG9vbHNcbiAgICB0aGlzLmNvcGlsb3RraXQgPSBuZXcgQ29waWxvdEtpdENvcmUoe1xuICAgICAgcnVudGltZVVybDogdW5kZWZpbmVkLCAvLyBQcmV2ZW50IHNlcnZlci1zaWRlIGZldGNoaW5nXG4gICAgICBoZWFkZXJzLFxuICAgICAgcHJvcGVydGllcyxcbiAgICAgIGFnZW50cyxcbiAgICAgIHRvb2xzOiBhbGxUb29scyxcbiAgICB9IGFzIENvcGlsb3RLaXRDb3JlQ29uZmlnKTtcblxuICAgIC8vIEluaXRpYWxpemUgc3RhdGUgc2lnbmFsc1xuICAgIHRoaXMuX3JlbmRlclRvb2xDYWxscyA9XG4gICAgICBzaWduYWw8VG9vbENhbGxSZW5kZXJbXT4oYWxsUmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzID1cbiAgICAgIHNpZ25hbDxUb29sQ2FsbFJlbmRlcltdPihhbGxSZW5kZXJUb29sQ2FsbHMpO1xuICAgIHRoaXMuX3J1bnRpbWVVcmwgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPihydW50aW1lVXJsKTtcbiAgICB0aGlzLl9oZWFkZXJzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KGhlYWRlcnMpO1xuICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2FnZW50cyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50Pj4oYWdlbnRzKTtcbiAgICB0aGlzLl9mcm9udGVuZFRvb2xzID0gc2lnbmFsPEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdPihmcm9udGVuZFRvb2xzKTtcbiAgICB0aGlzLl9odW1hbkluVGhlTG9vcCA9IHNpZ25hbDxBbmd1bGFySHVtYW5JblRoZUxvb3A8YW55PltdPihodW1hbkluVGhlTG9vcCk7XG4gICAgdGhpcy5fcnVudGltZVN0YXRlVmVyc2lvbiA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjb21wdXRlZCBzaWduYWxzIGZvciBwcm9jZXNzZWQgdmFsdWVzXG4gICAgdGhpcy5fYWxsVG9vbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCB0b29sczogUmVjb3JkPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+ID0ge307XG5cbiAgICAgIC8vIEFkZCBmcm9udGVuZCB0b29sc1xuICAgICAgdGhpcy5fZnJvbnRlbmRUb29scygpLmZvckVhY2goKHRvb2wpID0+IHtcbiAgICAgICAgdG9vbHNbdG9vbC5uYW1lXSA9IHRvb2wgYXMgRnJvbnRlbmRUb29sPGFueT47XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvY2VzcyBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgICAgdGhpcy5faHVtYW5JblRoZUxvb3AoKS5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGZyb250ZW5kVG9vbDogRnJvbnRlbmRUb29sPGFueT4gPSB7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0b29sLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHRvb2wucGFyYW1ldGVycyxcbiAgICAgICAgICBmb2xsb3dVcDogdG9vbC5mb2xsb3dVcCxcbiAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBIdW1hbi1pbi10aGUtbG9vcCB0b29sICcke3Rvb2wubmFtZX0nIGNhbGxlZCBidXQgbm8gaW50ZXJhY3RpdmUgaGFuZGxlciBpcyBzZXQgdXAuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdG9vbHNbdG9vbC5uYW1lXSA9IGZyb250ZW5kVG9vbDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdG9vbHM7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9hbGxSZW5kZXJUb29sQ2FsbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjb21iaW5lZDogVG9vbENhbGxSZW5kZXJbXSA9IFsuLi50aGlzLl9yZW5kZXJUb29sQ2FsbHMoKV07XG5cbiAgICAgIC8vIEFkZCByZW5kZXIgY29tcG9uZW50cyBmcm9tIGZyb250ZW5kIHRvb2xzXG4gICAgICB0aGlzLl9mcm9udGVuZFRvb2xzKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIHJlbmRlciBjb21wb25lbnRzIGZyb20gaHVtYW4taW4tdGhlLWxvb3AgdG9vbHNcbiAgICAgIHRoaXMuX2h1bWFuSW5UaGVMb29wKCkuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgICAgICBjb21iaW5lZC5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgICAuLi4odG9vbC5hZ2VudElkICYmIHsgYWdlbnRJZDogdG9vbC5hZ2VudElkIH0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNvbWJpbmVkO1xuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBwdWJsaWMgcmVhZG9ubHkgc2lnbmFsc1xuICAgIHRoaXMucmVuZGVyVG9vbENhbGxzID0gdGhpcy5fYWxsUmVuZGVyVG9vbENhbGxzO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVVybCA9IHRoaXMuX3J1bnRpbWVVcmwuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuX2hlYWRlcnMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHRoaXMuX3Byb3BlcnRpZXMuYXNSZWFkb25seSgpO1xuICAgIHRoaXMuYWdlbnRzID0gdGhpcy5fYWdlbnRzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmZyb250ZW5kVG9vbHMgPSB0aGlzLl9mcm9udGVuZFRvb2xzLmFzUmVhZG9ubHkoKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wID0gdGhpcy5faHVtYW5JblRoZUxvb3AuYXNSZWFkb25seSgpO1xuICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbiA9IHRoaXMuX3J1bnRpbWVTdGF0ZVZlcnNpb24uYXNSZWFkb25seSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBPYnNlcnZhYmxlIEFQSXNcbiAgICB0aGlzLnJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5yZW5kZXJUb29sQ2FsbHMpO1xuICAgIHRoaXMuY3VycmVudFJlbmRlclRvb2xDYWxscyQgPSB0b09ic2VydmFibGUodGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKTtcbiAgICB0aGlzLnJ1bnRpbWVVcmwkID0gdG9PYnNlcnZhYmxlKHRoaXMucnVudGltZVVybCk7XG4gICAgdGhpcy5oZWFkZXJzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhlYWRlcnMpO1xuICAgIHRoaXMucHJvcGVydGllcyQgPSB0b09ic2VydmFibGUodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLmFnZW50cyQgPSB0b09ic2VydmFibGUodGhpcy5hZ2VudHMpO1xuICAgIHRoaXMuZnJvbnRlbmRUb29scyQgPSB0b09ic2VydmFibGUodGhpcy5mcm9udGVuZFRvb2xzKTtcbiAgICB0aGlzLmh1bWFuSW5UaGVMb29wJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmh1bWFuSW5UaGVMb29wKTtcblxuICAgIC8vIEluaXRpYWxpemUgY29udGV4dCB2YWx1ZSBhcyBjb21wdXRlZCBzaWduYWxcbiAgICB0aGlzLmNvbnRleHQgPSBjb21wdXRlZDxDb3BpbG90S2l0Q29udGV4dFZhbHVlPigoKSA9PiB7XG4gICAgICAvLyBUb3VjaCB0aGUgcnVudGltZSBzdGF0ZSB2ZXJzaW9uIHRvIGVuc3VyZSB0aGlzIGNvbXB1dGVkIHVwZGF0ZXNcbiAgICAgIC8vIHdoZW4gcnVudGltZSBldmVudHMgb2NjdXIgKGxvYWRlZC9lcnJvcilcbiAgICAgIHRoaXMucnVudGltZVN0YXRlVmVyc2lvbigpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3BpbG90a2l0OiB0aGlzLmNvcGlsb3RraXQsXG4gICAgICAgIHJlbmRlclRvb2xDYWxsczogdGhpcy5yZW5kZXJUb29sQ2FsbHMoKSxcbiAgICAgICAgY3VycmVudFJlbmRlclRvb2xDYWxsczogdGhpcy5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCksXG4gICAgICAgIHNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHM6ICh2KSA9PiB0aGlzLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHModiksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb250ZXh0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbnRleHQpO1xuXG4gICAgLy8gRWZmZWN0cyBtdXN0IGJlIGNyZWF0ZWQgaW4gaW5qZWN0aW9uIGNvbnRleHQgKGNvbnN0cnVjdG9yKVxuICAgIHRoaXMuc2V0dXBSdW50aW1lU3luY0VmZmVjdHMoKTtcbiAgICB0aGlzLnNldHVwU3RhYmlsaXR5V2FybmluZ3MoKTtcbiAgICB0aGlzLnNldHVwRXZlbnRTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGZyb250ZW5kIHRvb2xzIGFuZCBodW1hbi1pbi10aGUtbG9vcCB0b29sc1xuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzVG9vbHMoXG4gICAgZnJvbnRlbmRUb29sczogQW5ndWxhckZyb250ZW5kVG9vbDxhbnk+W10sXG4gICAgaHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10sXG4gICAgcmVuZGVyVG9vbENhbGxzOiBUb29sQ2FsbFJlbmRlcltdXG4gICk6IHtcbiAgICBhbGxUb29sczogUmVjb3JkPHN0cmluZywgRnJvbnRlbmRUb29sPGFueT4+O1xuICAgIGFsbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXTtcbiAgfSB7XG4gICAgY29uc3QgYWxsVG9vbHM6IFJlY29yZDxzdHJpbmcsIEZyb250ZW5kVG9vbDxhbnk+PiA9IHt9O1xuICAgIGNvbnN0IGFsbFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXSA9IFsuLi5yZW5kZXJUb29sQ2FsbHNdO1xuXG4gICAgLy8gQWRkIGZyb250ZW5kIHRvb2xzXG4gICAgZnJvbnRlbmRUb29scy5mb3JFYWNoKCh0b29sKSA9PiB7XG4gICAgICBhbGxUb29sc1t0b29sLm5hbWVdID0gdG9vbCBhcyBGcm9udGVuZFRvb2w8YW55PjtcblxuICAgICAgLy8gQWRkIHJlbmRlciBjb21wb25lbnQgaWYgcHJvdmlkZWRcbiAgICAgIGlmICh0b29sLnJlbmRlcikge1xuICAgICAgICBhbGxSZW5kZXJUb29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgLi4uKHRvb2wuYWdlbnRJZCAmJiB7IGFnZW50SWQ6IHRvb2wuYWdlbnRJZCB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBQcm9jZXNzIGh1bWFuLWluLXRoZS1sb29wIHRvb2xzXG4gICAgaHVtYW5JblRoZUxvb3AuZm9yRWFjaCgodG9vbCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgZnJvbnRlbmQgdG9vbCB3aXRoIHBsYWNlaG9sZGVyIGhhbmRsZXJcbiAgICAgIGNvbnN0IGZyb250ZW5kVG9vbDogRnJvbnRlbmRUb29sPGFueT4gPSB7XG4gICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRvb2wuZGVzY3JpcHRpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHRvb2wucGFyYW1ldGVycyxcbiAgICAgICAgZm9sbG93VXA6IHRvb2wuZm9sbG93VXAsXG4gICAgICAgIC4uLih0b29sLmFnZW50SWQgJiYgeyBhZ2VudElkOiB0b29sLmFnZW50SWQgfSksXG4gICAgICAgIGhhbmRsZXI6IGFzeW5jIChhcmdzOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBQbGFjZWhvbGRlciBoYW5kbGVyIC0gYWN0dWFsIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgcmVuZGVyIGNvbXBvbmVudFxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBIdW1hbi1pbi10aGUtbG9vcCB0b29sICcke3Rvb2wubmFtZX0nIGNhbGxlZCBidXQgbm8gaW50ZXJhY3RpdmUgaGFuZGxlciBpcyBzZXQgdXAuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBhbGxUb29sc1t0b29sLm5hbWVdID0gZnJvbnRlbmRUb29sO1xuXG4gICAgICAvLyBBZGQgdGhlIHJlbmRlciBjb21wb25lbnRcbiAgICAgIGlmICh0b29sLnJlbmRlcikge1xuICAgICAgICBhbGxSZW5kZXJUb29sQ2FsbHMucHVzaCh7XG4gICAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXIsXG4gICAgICAgICAgLi4uKHRvb2wuYWdlbnRJZCAmJiB7IGFnZW50SWQ6IHRvb2wuYWdlbnRJZCB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBhbGxUb29scywgYWxsUmVuZGVyVG9vbENhbGxzIH07XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgc3RhYmlsaXR5IHdhcm5pbmcgZWZmZWN0c1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFN0YWJpbGl0eVdhcm5pbmdzKCk6IHZvaWQge1xuICAgIC8vIFdhcm4gaWYgZnJvbnRlbmRUb29scyBjaGFuZ2VzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9mcm9udGVuZFRvb2xzKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbEZyb250ZW5kVG9vbHMgJiZcbiAgICAgICAgdGhpcy5pbml0aWFsRnJvbnRlbmRUb29scy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJmcm9udGVuZFRvb2xzIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBXYXJuIGlmIGh1bWFuSW5UaGVMb29wIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2h1bWFuSW5UaGVMb29wKCk7XG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wICYmXG4gICAgICAgIHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcImh1bWFuSW5UaGVMb29wIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBXYXJuIGlmIHJlbmRlclRvb2xDYWxscyBjaGFuZ2VzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9yZW5kZXJUb29sQ2FsbHMoKTtcbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudCAhPT0gdGhpcy5pbml0aWFsUmVuZGVyVG9vbENhbGxzICYmXG4gICAgICAgIHRoaXMuaW5pdGlhbFJlbmRlclRvb2xDYWxscy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJyZW5kZXJUb29sQ2FsbHMgbXVzdCBiZSBhIHN0YWJsZSBvYmplY3QuIFRvIGFkZC9yZW1vdmUgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgZWZmZWN0cyB0byBzeW5jIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB3aXRoIENvcGlsb3RLaXRDb3JlXG4gICAqL1xuICBwcml2YXRlIHNldHVwUnVudGltZVN5bmNFZmZlY3RzKCk6IHZvaWQge1xuICAgIC8vIFN5bmMgcnVudGltZSBVUkxcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5ydW50aW1lVXJsKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb3BpbG90a2l0LnNldFJ1bnRpbWVVcmwodXJsKSk7XG4gICAgfSk7XG5cbiAgICAvLyBTeW5jIGhlYWRlcnNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycygpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuY29waWxvdGtpdC5zZXRIZWFkZXJzKGhlYWRlcnMpKTtcbiAgICB9KTtcblxuICAgIC8vIFN5bmMgcHJvcGVydGllc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wcm9wZXJ0aWVzKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5jb3BpbG90a2l0LnNldFByb3BlcnRpZXMocHJvcGVydGllcykpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyBhZ2VudHNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgYWdlbnRzID0gdGhpcy5hZ2VudHMoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB0aGlzLmNvcGlsb3RraXQuc2V0QWdlbnRzKGFnZW50cykpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyB0b29scyAtIGNvbXB1dGVkIGZyb20gZnJvbnRlbmQgdG9vbHMgYW5kIGh1bWFuLWluLXRoZS1sb29wXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRvb2xzID0gdGhpcy5fYWxsVG9vbHMoKTtcbiAgICAgIC8vIFVwZGF0ZSBjb3BpbG90a2l0LnRvb2xzIGRpcmVjdGx5IHNpbmNlIHRoZXJlJ3Mgbm8gc2V0VG9vbHMgbWV0aG9kXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvcGlsb3RraXQudG9vbHMgPSB0b29scztcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBDb3BpbG90S2l0IHJ1bnRpbWUgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSB0aGlzLmNvcGlsb3RraXQuc3Vic2NyaWJlKHtcbiAgICAgIG9uUnVudGltZUxvYWRlZDogKCkgPT4ge1xuICAgICAgICAvLyBJbmNyZW1lbnQgdmVyc2lvbiB0byBub3RpZnkgYWxsIGNvbnN1bWVycyB0aGF0IHJ1bnRpbWUgc3RhdGUgaGFzIGNoYW5nZWRcbiAgICAgICAgLy8gVGhpcyB0cmlnZ2VycyByZS1ldmFsdWF0aW9uIG9mIGNvbXB1dGVkIHNpZ25hbHMgdGhhdCBkZXBlbmQgb24gcnVudGltZSBzdGF0ZVxuICAgICAgICB0aGlzLm5vdGlmeVJ1bnRpbWVTdGF0ZUNoYW5nZSgpO1xuICAgICAgfSxcbiAgICAgIG9uUnVudGltZUxvYWRFcnJvcjogKCkgPT4ge1xuICAgICAgICAvLyBJbmNyZW1lbnQgdmVyc2lvbiB0byBub3RpZnkgYWxsIGNvbnN1bWVycyB0aGF0IHJ1bnRpbWUgc3RhdGUgaGFzIGNoYW5nZWRcbiAgICAgICAgLy8gVGhpcyB0cmlnZ2VycyByZS1ldmFsdWF0aW9uIG9mIGNvbXB1dGVkIHNpZ25hbHMgdGhhdCBkZXBlbmQgb24gcnVudGltZSBzdGF0ZVxuICAgICAgICB0aGlzLm5vdGlmeVJ1bnRpbWVTdGF0ZUNoYW5nZSgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFJvb3Qgc2VydmljZSBsaXZlcyBmb3IgYXBwIGxpZmV0aW1lOyB1bnN1YnNjcmliZSBub3QgbmVlZGVkLlxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBjb25zdW1lcnMgdGhhdCB0aGUgcnVudGltZSBzdGF0ZSBoYXMgY2hhbmdlZC5cbiAgICogVGhpcyBpcyBzaW1pbGFyIHRvIFJlYWN0J3MgZm9yY2VVcGRhdGUgLSBpdCB0cmlnZ2VycyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIGZvciBhbnkgY29tcHV0ZWQgc2lnbmFscyBvciBlZmZlY3RzIHRoYXQgZGVwZW5kIG9uIHJ1bnRpbWUgc3RhdGUuXG4gICAqL1xuICBwcml2YXRlIG5vdGlmeVJ1bnRpbWVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9ydW50aW1lU3RhdGVWZXJzaW9uLnVwZGF0ZSgodmVyc2lvbikgPT4gdmVyc2lvbiArIDEpO1xuICB9XG5cbiAgLy8gUHVibGljIG11dGF0aW9uIG1ldGhvZHNcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBydW50aW1lIFVSTFxuICAgKi9cbiAgc2V0UnVudGltZVVybCh1cmw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9ydW50aW1lVXJsLnNldCh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSByZXF1ZXN0IGhlYWRlcnNcbiAgICovXG4gIHNldEhlYWRlcnMoaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMuX2hlYWRlcnMuc2V0KGhlYWRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBydW50aW1lIHByb3BlcnRpZXNcbiAgICovXG4gIHNldFByb3BlcnRpZXMocHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLnNldChwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYWdlbnRzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNldEFnZW50cyhhZ2VudHM6IFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+KTogdm9pZCB7XG4gICAgdGhpcy5fYWdlbnRzLnNldChhZ2VudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBhZ2VudCBieSBJRFxuICAgKiBAcGFyYW0gYWdlbnRJZCAtIFRoZSBhZ2VudCBJRCB0byByZXRyaWV2ZVxuICAgKiBAcmV0dXJucyBUaGUgYWdlbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZ2V0QWdlbnQoYWdlbnRJZDogc3RyaW5nKTogQWJzdHJhY3RBZ2VudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29waWxvdGtpdC5nZXRBZ2VudChhZ2VudElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgcmVuZGVyIHRvb2wgY2FsbHMgKHdhcm5zIGlmIG9iamVjdCByZWZlcmVuY2UgY2hhbmdlcylcbiAgICovXG4gIHNldFJlbmRlclRvb2xDYWxscyhyZW5kZXJUb29sQ2FsbHM6IFRvb2xDYWxsUmVuZGVyW10pOiB2b2lkIHtcbiAgICBpZiAocmVuZGVyVG9vbENhbGxzICE9PSB0aGlzLmluaXRpYWxSZW5kZXJUb29sQ2FsbHMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwicmVuZGVyVG9vbENhbGxzIG11c3QgYmUgYSBzdGFibGUgb2JqZWN0LiBUbyBhZGQvcmVtb3ZlIHRvb2xzIGR5bmFtaWNhbGx5LCB1c2UgZHluYW1pYyB0b29sIHJlZ2lzdHJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fcmVuZGVyVG9vbENhbGxzLnNldChyZW5kZXJUb29sQ2FsbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmcm9udGVuZCB0b29scyBhcnJheVxuICAgKi9cbiAgc2V0RnJvbnRlbmRUb29scyhmcm9udGVuZFRvb2xzOiBBbmd1bGFyRnJvbnRlbmRUb29sPGFueT5bXSk6IHZvaWQge1xuICAgIGlmIChmcm9udGVuZFRvb2xzICE9PSB0aGlzLmluaXRpYWxGcm9udGVuZFRvb2xzKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcImZyb250ZW5kVG9vbHMgbXVzdCBiZSBhIHN0YWJsZSBhcnJheS4gVG8gYWRkL3JlbW92ZSB0b29scyBkeW5hbWljYWxseSwgdXNlIGR5bmFtaWMgdG9vbCByZWdpc3RyYXRpb24uXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2Zyb250ZW5kVG9vbHMuc2V0KGZyb250ZW5kVG9vbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBodW1hbi1pbi10aGUtbG9vcCBhcnJheVxuICAgKi9cbiAgc2V0SHVtYW5JblRoZUxvb3AoaHVtYW5JblRoZUxvb3A6IEFuZ3VsYXJIdW1hbkluVGhlTG9vcDxhbnk+W10pOiB2b2lkIHtcbiAgICBpZiAoaHVtYW5JblRoZUxvb3AgIT09IHRoaXMuaW5pdGlhbEh1bWFuSW5UaGVMb29wKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcImh1bWFuSW5UaGVMb29wIG11c3QgYmUgYSBzdGFibGUgYXJyYXkuIFRvIGFkZC9yZW1vdmUgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHMgZHluYW1pY2FsbHksIHVzZSBkeW5hbWljIHRvb2wgcmVnaXN0cmF0aW9uLlwiXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9odW1hbkluVGhlTG9vcC5zZXQoaHVtYW5JblRoZUxvb3ApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjdXJyZW50IHJlbmRlciB0b29sIGNhbGxzXG4gICAqL1xuICBzZXRDdXJyZW50UmVuZGVyVG9vbENhbGxzKHJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXSk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuc2V0KHJlbmRlclRvb2xDYWxscyk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSB0b29sIHJlbmRlclxuICAgKi9cbiAgcmVnaXN0ZXJUb29sUmVuZGVyKG5hbWU6IHN0cmluZywgcmVuZGVyOiBUb29sQ2FsbFJlbmRlcik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG4gICAgaWYgKGN1cnJlbnQuZmluZCgocikgPT4gci5uYW1lID09PSBuYW1lKSkge1xuICAgICAgY29uc29sZS53YXJuKGBUb29sIHJlbmRlciBmb3IgJyR7bmFtZX0nIGlzIGJlaW5nIG92ZXJ3cml0dGVuYCk7XG4gICAgfVxuICAgIHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMuc2V0KFtcbiAgICAgIC4uLmN1cnJlbnQuZmlsdGVyKChyKSA9PiByLm5hbWUgIT09IG5hbWUpLFxuICAgICAgcmVuZGVyLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYSB0b29sIHJlbmRlclxuICAgKi9cbiAgdW5yZWdpc3RlclRvb2xSZW5kZXIobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2N1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGN1cnJlbnQuZmlsdGVyKChyKSA9PiByLm5hbWUgIT09IG5hbWUpO1xuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggIT09IGN1cnJlbnQubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9jdXJyZW50UmVuZGVyVG9vbENhbGxzLnNldChmaWx0ZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpZmljIHRvb2wgcmVuZGVyXG4gICAqL1xuICBnZXRUb29sUmVuZGVyKG5hbWU6IHN0cmluZyk6IFRvb2xDYWxsUmVuZGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlbmRlclRvb2xDYWxscygpLmZpbmQoKHIpID0+IHIubmFtZSA9PT0gbmFtZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from "@angular/core";
|
|
2
2
|
// Re-export ToolCallStatus from core
|
|
3
3
|
export { ToolCallStatus } from "@copilotkitnext/core";
|
|
4
|
+
1;
|
|
4
5
|
// Injection tokens for dependency injection
|
|
5
6
|
export const COPILOTKIT_RUNTIME_URL = new InjectionToken("COPILOTKIT_RUNTIME_URL");
|
|
6
7
|
export const COPILOTKIT_HEADERS = new InjectionToken("COPILOTKIT_HEADERS", { factory: () => ({}) });
|
|
@@ -9,4 +10,4 @@ export const COPILOTKIT_AGENTS = new InjectionToken("COPILOTKIT_AGENTS", { facto
|
|
|
9
10
|
export const COPILOTKIT_RENDER_TOOL_CALLS = new InjectionToken("COPILOTKIT_RENDER_TOOL_CALLS", { factory: () => [] });
|
|
10
11
|
export const COPILOTKIT_FRONTEND_TOOLS = new InjectionToken("COPILOTKIT_FRONTEND_TOOLS", { factory: () => [] });
|
|
11
12
|
export const COPILOTKIT_HUMAN_IN_THE_LOOP = new InjectionToken("COPILOTKIT_HUMAN_IN_THE_LOOP", { factory: () => [] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL2NvcGlsb3RraXQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFpQjFFLHFDQUFxQztBQUNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUF5QnRELENBQUMsQ0FBQztBQStCRiw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQ3RELHdCQUF3QixDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixFQUNwQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FFckQsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBRWpELG1CQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUU1RCw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXpELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUV6RCwyQkFBMkIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUU1RCw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFRlbXBsYXRlUmVmLCBUeXBlLCBTaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb3BpbG90S2l0Q29yZSwgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcbmltcG9ydCB7IEFic3RyYWN0QWdlbnQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBBbmd1bGFyRnJvbnRlbmRUb29sIH0gZnJvbSBcIi4uL3R5cGVzL2Zyb250ZW5kLXRvb2xcIjtcbmltcG9ydCB0eXBlIHsgQW5ndWxhckh1bWFuSW5UaGVMb29wIH0gZnJvbSBcIi4uL3R5cGVzL2h1bWFuLWluLXRoZS1sb29wXCI7XG5cbi8vIFJlLWV4cG9ydCBjb21tb25seSB1c2VkIHR5cGVzXG5leHBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiQGFnLXVpL2NsaWVudFwiO1xuXG4vLyBSZS1leHBvcnQgdG9vbCB0eXBlcyBmcm9tIHRoZWlyIG93biBmaWxlc1xuZXhwb3J0IHR5cGUgeyBBbmd1bGFyRnJvbnRlbmRUb29sIH0gZnJvbSBcIi4uL3R5cGVzL2Zyb250ZW5kLXRvb2xcIjtcbmV4cG9ydCB0eXBlIHtcbiAgQW5ndWxhckh1bWFuSW5UaGVMb29wLFxuICBIdW1hbkluVGhlTG9vcFByb3BzLFxufSBmcm9tIFwiLi4vdHlwZXMvaHVtYW4taW4tdGhlLWxvb3BcIjtcblxuLy8gUmUtZXhwb3J0IFRvb2xDYWxsU3RhdHVzIGZyb20gY29yZVxuZXhwb3J0IHsgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiQGNvcGlsb3RraXRuZXh0L2NvcmVcIjtcblxuLy8gUHJvcHMgcGFzc2VkIHRvIHRvb2wgcmVuZGVyIGNvbXBvbmVudHMgLSBkaXNjcmltaW5hdGVkIHVuaW9uIG1hdGNoaW5nIFJlYWN0XG5leHBvcnQgdHlwZSBUb29sQ2FsbFByb3BzPFQgPSB1bmtub3duPiA9XG4gIHwge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGFyZ3M6IFBhcnRpYWw8VD47XG4gICAgICBzdGF0dXM6IFRvb2xDYWxsU3RhdHVzLkluUHJvZ3Jlc3M7XG4gICAgICByZXN1bHQ6IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGFyZ3M6IFQ7XG4gICAgICBzdGF0dXM6IFRvb2xDYWxsU3RhdHVzLkV4ZWN1dGluZztcbiAgICAgIHJlc3VsdDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAgYXJnczogVDtcbiAgICAgIHN0YXR1czogVG9vbENhbGxTdGF0dXMuQ29tcGxldGU7XG4gICAgICByZXN1bHQ6IHN0cmluZztcbiAgICB9O1xuMTtcblxuLy8gQW5ndWxhci1zcGVjaWZpYyB0b29sIGNhbGwgcmVuZGVyIGRlZmluaXRpb24gd2l0aCBwcm9wZXIgdHlwaW5nXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJUb29sQ2FsbFJlbmRlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFnZW50IElEIHRvIGNvbnN0cmFpbiB0aGlzIHRvb2wgcmVuZGVyIHRvIGEgc3BlY2lmaWMgYWdlbnQuXG4gICAqIElmIHNwZWNpZmllZCwgdGhpcyByZW5kZXIgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgYWdlbnQuXG4gICAqL1xuICBhZ2VudElkPzogc3RyaW5nO1xuICByZW5kZXI6IFR5cGU8YW55PiB8IFRlbXBsYXRlUmVmPFRvb2xDYWxsUHJvcHM8YW55Pj47XG59XG5cbi8vIFR5cGUgYWxpYXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgdHlwZSBUb29sQ2FsbFJlbmRlciA9IEFuZ3VsYXJUb29sQ2FsbFJlbmRlcjtcblxuZXhwb3J0IGludGVyZmFjZSBDb3BpbG90S2l0Q29udGV4dFZhbHVlIHtcbiAgY29waWxvdGtpdDogQ29waWxvdEtpdENvcmU7XG4gIHJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXTtcbiAgY3VycmVudFJlbmRlclRvb2xDYWxsczogVG9vbENhbGxSZW5kZXJbXTtcbiAgc2V0Q3VycmVudFJlbmRlclRvb2xDYWxsczogKHY6IFRvb2xDYWxsUmVuZGVyW10pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29waWxvdEtpdFJ1bnRpbWVJbnB1dHMge1xuICBydW50aW1lVXJsPzogc3RyaW5nO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhZ2VudHM/OiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdEFnZW50PjtcbiAgcmVuZGVyVG9vbENhbGxzPzogVG9vbENhbGxSZW5kZXJbXTtcbn1cblxuLy8gSW5qZWN0aW9uIHRva2VucyBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbmV4cG9ydCBjb25zdCBDT1BJTE9US0lUX1JVTlRJTUVfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZyB8IHVuZGVmaW5lZD4oXG4gIFwiQ09QSUxPVEtJVF9SVU5USU1FX1VSTFwiXG4pO1xuXG5leHBvcnQgY29uc3QgQ09QSUxPVEtJVF9IRUFERVJTID0gbmV3IEluamVjdGlvblRva2VuPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICBcIkNPUElMT1RLSVRfSEVBREVSU1wiLFxuICB7IGZhY3Rvcnk6ICgpID0+ICh7fSkgfVxuKTtcblxuZXhwb3J0IGNvbnN0IENPUElMT1RLSVRfUFJPUEVSVElFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4oXCJDT1BJTE9US0lUX1BST1BFUlRJRVNcIiwgeyBmYWN0b3J5OiAoKSA9PiAoe30pIH0pO1xuXG5leHBvcnQgY29uc3QgQ09QSUxPVEtJVF9BR0VOVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIFJlY29yZDxzdHJpbmcsIEFic3RyYWN0QWdlbnQ+XG4+KFwiQ09QSUxPVEtJVF9BR0VOVFNcIiwgeyBmYWN0b3J5OiAoKSA9PiAoe30pIH0pO1xuXG5leHBvcnQgY29uc3QgQ09QSUxPVEtJVF9SRU5ERVJfVE9PTF9DQUxMUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgVG9vbENhbGxSZW5kZXJbXVxuPihcIkNPUElMT1RLSVRfUkVOREVSX1RPT0xfQ0FMTFNcIiwgeyBmYWN0b3J5OiAoKSA9PiBbXSB9KTtcblxuZXhwb3J0IGNvbnN0IENPUElMT1RLSVRfRlJPTlRFTkRfVE9PTFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48XG4gIEFuZ3VsYXJGcm9udGVuZFRvb2w8YW55PltdXG4+KFwiQ09QSUxPVEtJVF9GUk9OVEVORF9UT09MU1wiLCB7IGZhY3Rvcnk6ICgpID0+IFtdIH0pO1xuXG5leHBvcnQgY29uc3QgQ09QSUxPVEtJVF9IVU1BTl9JTl9USEVfTE9PUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgQW5ndWxhckh1bWFuSW5UaGVMb29wPGFueT5bXVxuPihcIkNPUElMT1RLSVRfSFVNQU5fSU5fVEhFX0xPT1BcIiwgeyBmYWN0b3J5OiAoKSA9PiBbXSB9KTtcblxuLy8gQWdlbnQtcmVsYXRlZCB0eXBlc1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIkBhZy11aS9jbGllbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdhdGNoUmVzdWx0IHtcbiAgYWdlbnQ6IFNpZ25hbDxBYnN0cmFjdEFnZW50IHwgdW5kZWZpbmVkPjtcbiAgbWVzc2FnZXM6IFNpZ25hbDxNZXNzYWdlW10+O1xuICBpc1J1bm5pbmc6IFNpZ25hbDxib29sZWFuPjtcbiAgYWdlbnQkOiBPYnNlcnZhYmxlPEFic3RyYWN0QWdlbnQgfCB1bmRlZmluZWQ+O1xuICBtZXNzYWdlcyQ6IE9ic2VydmFibGU8TWVzc2FnZVtdPjtcbiAgaXNSdW5uaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRTdWJzY3JpcHRpb25DYWxsYmFja3Mge1xuICBvbk1lc3NhZ2VzQ2hhbmdlZD86IChwYXJhbXM6IGFueSkgPT4gdm9pZDtcbiAgb25TdGF0ZUNoYW5nZWQ/OiAocGFyYW1zOiBhbnkpID0+IHZvaWQ7XG4gIG9uUnVuSW5pdGlhbGl6ZWQ/OiAocGFyYW1zOiBhbnkpID0+IHZvaWQ7XG4gIG9uUnVuRmluYWxpemVkPzogKHBhcmFtczogYW55KSA9PiB2b2lkO1xuICBvblJ1bkZhaWxlZD86IChwYXJhbXM6IGFueSkgPT4gdm9pZDtcbn1cblxuLy8gSHVtYW4taW4tdGhlLWxvb3Agc3RhdGUgcmVzdWx0XG5leHBvcnQgaW50ZXJmYWNlIEh1bWFuSW5UaGVMb29wU3RhdGUge1xuICBzdGF0dXM6IFNpZ25hbDxUb29sQ2FsbFN0YXR1cz47XG4gIHRvb2xJZDogc3RyaW5nO1xuICBkZXN0cm95OiAoKSA9PiB2b2lkO1xufVxuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Directive, Input, isDevMode, Inject, } from "@angular/core";
|
|
2
2
|
import { CopilotKitService } from "../core/copilotkit.service";
|
|
3
|
-
import { z } from "zod";
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
import * as i1 from "../core/copilotkit.service";
|
|
6
5
|
export class CopilotKitFrontendToolDirective {
|
|
@@ -47,7 +46,6 @@ export class CopilotKitFrontendToolDirective {
|
|
|
47
46
|
const currentRenders = this.copilotkit.currentRenderToolCalls();
|
|
48
47
|
const renderEntry = {
|
|
49
48
|
name: tool.name,
|
|
50
|
-
args: tool.parameters || z.object({}),
|
|
51
49
|
render: tool.render,
|
|
52
50
|
};
|
|
53
51
|
// Check for duplicate
|
|
@@ -127,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
127
125
|
type: Input,
|
|
128
126
|
args: ["copilotkitFrontendTool"]
|
|
129
127
|
}] } });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1mcm9udGVuZC10b29sLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL2NvcGlsb3RraXQtZnJvbnRlbmQtdG9vbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBT0wsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBWS9ELE1BQU0sT0FBTywrQkFBK0I7SUFRSTtJQUh0QyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRTdCLFlBQzhDLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQ3hFLENBQUM7SUFFSyxJQUFJLENBQVU7SUFDZCxXQUFXLENBQVU7SUFDckIsVUFBVSxDQUFrQjtJQUM1QixPQUFPLENBQTZCO0lBQ3BDLE1BQU0sQ0FBZ0M7SUFDdEMsUUFBUSxDQUFXO0lBRTVCLHlDQUF5QztJQUNSLElBQUksQ0FBMEI7SUFFL0QsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQXVCO1FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksU0FBUyxFQUFF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QUFVO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7SUFDSixDQUFDO3dHQXRIVSwrQkFBK0Isa0JBUWhDLGlCQUFpQjs0RkFSaEIsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBU0ksTUFBTTsyQkFBQyxpQkFBaUI7eUNBR2xCLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUcyQixJQUFJO3NCQUFwQyxLQUFLO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBpc0Rldk1vZGUsXG4gIEluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFuZ3VsYXJGcm9udGVuZFRvb2wsXG4gIEFuZ3VsYXJUb29sQ2FsbFJlbmRlcixcbiAgVG9vbENhbGxSZW5kZXIsXG59IGZyb20gXCIuLi9jb3JlL2NvcGlsb3RraXQudHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltjb3BpbG90a2l0RnJvbnRlbmRUb29sXVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0RnJvbnRlbmRUb29sRGlyZWN0aXZlPFxuICAgIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PixcbiAgPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBpc1JlZ2lzdGVyZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlXG4gICkge31cblxuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgcGFyYW1ldGVycz86IHouWm9kU2NoZW1hPFQ+O1xuICBASW5wdXQoKSBoYW5kbGVyPzogKGFyZ3M6IFQpID0+IFByb21pc2U8YW55PjtcbiAgQElucHV0KCkgcmVuZGVyPzogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgZm9sbG93VXA/OiBib29sZWFuO1xuXG4gIC8vIEFsdGVybmF0aXZlOiBBY2NlcHQgYSBmdWxsIHRvb2wgb2JqZWN0XG4gIEBJbnB1dChcImNvcGlsb3RraXRGcm9udGVuZFRvb2xcIikgdG9vbD86IEFuZ3VsYXJGcm9udGVuZFRvb2w8VD47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlclRvb2woKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNSZWdpc3RlcmVkKSB7XG4gICAgICAvLyBSZS1yZWdpc3RlciB0aGUgdG9vbCBpZiBhbnkgcHJvcGVydGllcyBjaGFuZ2VcbiAgICAgIHRoaXMudW5yZWdpc3RlclRvb2woKTtcbiAgICAgIHRoaXMucmVnaXN0ZXJUb29sKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnJlZ2lzdGVyVG9vbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclRvb2woKTogdm9pZCB7XG4gICAgY29uc3QgdG9vbCA9IHRoaXMuZ2V0VG9vbCgpO1xuXG4gICAgaWYgKCF0b29sLm5hbWUpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ0NvcGlsb3RLaXRGcm9udGVuZFRvb2xEaXJlY3RpdmU6IFwibmFtZVwiIGlzIHJlcXVpcmVkLiAnICtcbiAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBhIG5hbWUgdmlhIFtuYW1lXT1cInRvb2xOYW1lXCIgb3IgJyArXG4gICAgICAgICAgICBcIltjb3BpbG90a2l0RnJvbnRlbmRUb29sXT1cXFwieyBuYW1lOiAndG9vbE5hbWUnLCAuLi4gfVxcXCJcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuOyAvLyBEb24ndCByZWdpc3RlciBpZiBubyBuYW1lXG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgdGhlIHRvb2wgd2l0aCBDb3BpbG90S2l0XG4gICAgdGhpcy5jb3BpbG90a2l0LmNvcGlsb3RraXQuYWRkVG9vbCh0b29sKTtcblxuICAgIC8vIFJlZ2lzdGVyIHRoZSByZW5kZXIgaWYgcHJvdmlkZWRcbiAgICBpZiAodG9vbC5yZW5kZXIpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRSZW5kZXJzID0gdGhpcy5jb3BpbG90a2l0LmN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICAgIGNvbnN0IHJlbmRlckVudHJ5OiBBbmd1bGFyVG9vbENhbGxSZW5kZXIgPSB7XG4gICAgICAgIG5hbWU6IHRvb2wubmFtZSxcbiAgICAgICAgcmVuZGVyOiB0b29sLnJlbmRlcixcbiAgICAgIH07XG5cbiAgICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGVcbiAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBjdXJyZW50UmVuZGVycy5maW5kSW5kZXgoKHI6IFRvb2xDYWxsUmVuZGVyKSA9PiByLm5hbWUgPT09IHRvb2wubmFtZSk7XG4gICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtDb3BpbG90S2l0XSBUb29sIFwiJHt0b29sLm5hbWV9XCIgYWxyZWFkeSBoYXMgYSByZW5kZXIuIGAgK1xuICAgICAgICAgICAgICBgVGhlIHByZXZpb3VzIHJlbmRlciB3aWxsIGJlIHJlcGxhY2VkLiBgICtcbiAgICAgICAgICAgICAgYFRoaXMgbWF5IGluZGljYXRlIGEgZHVwbGljYXRlIHRvb2wgcmVnaXN0cmF0aW9uLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBbLi4uY3VycmVudFJlbmRlcnNdO1xuICAgICAgICB1cGRhdGVkW2V4aXN0aW5nSW5kZXhdID0gcmVuZGVyRW50cnk7XG4gICAgICAgIHRoaXMuY29waWxvdGtpdC5zZXRDdXJyZW50UmVuZGVyVG9vbENhbGxzKHVwZGF0ZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb3BpbG90a2l0LnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoWy4uLmN1cnJlbnRSZW5kZXJzLCByZW5kZXJFbnRyeV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlclRvb2woKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVnaXN0ZXJlZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdG9vbCA9IHRoaXMuZ2V0VG9vbCgpO1xuXG4gICAgaWYgKHRvb2wubmFtZSkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSB0b29sXG4gICAgICB0aGlzLmNvcGlsb3RraXQuY29waWxvdGtpdC5yZW1vdmVUb29sKHRvb2wubmFtZSk7XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgcmVuZGVyIGlmIGl0IGV4aXN0c1xuICAgICAgY29uc3QgY3VycmVudFJlbmRlcnMgPSB0aGlzLmNvcGlsb3RraXQuY3VycmVudFJlbmRlclRvb2xDYWxscygpO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBjdXJyZW50UmVuZGVycy5maWx0ZXIoKHI6IFRvb2xDYWxsUmVuZGVyKSA9PiByLm5hbWUgIT09IHRvb2wubmFtZSk7XG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoICE9PSBjdXJyZW50UmVuZGVycy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jb3BpbG90a2l0LnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoZmlsdGVyZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNSZWdpc3RlcmVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldFRvb2woKTogQW5ndWxhckZyb250ZW5kVG9vbDxUPiB7XG4gICAgLy8gSWYgZnVsbCB0b29sIG9iamVjdCBpcyBwcm92aWRlZCwgdXNlIGl0XG4gICAgaWYgKHRoaXMudG9vbCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9vbDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGNvbnN0cnVjdCBmcm9tIGluZGl2aWR1YWwgaW5wdXRzXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgaGFuZGxlcjogdGhpcy5oYW5kbGVyLFxuICAgICAgcmVuZGVyOiB0aGlzLnJlbmRlcixcbiAgICAgIGZvbGxvd1VwOiB0aGlzLmZvbGxvd1VwLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -167,7 +167,6 @@ export class CopilotKitHumanInTheLoopDirective {
|
|
|
167
167
|
// Register the render with respond capability
|
|
168
168
|
this.copilotkit.registerToolRender(this.name, {
|
|
169
169
|
name: this.name,
|
|
170
|
-
args: this.parameters,
|
|
171
170
|
render: this.createEnhancedRender(),
|
|
172
171
|
});
|
|
173
172
|
}
|
|
@@ -263,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
263
262
|
}], propDecorators: { copilotkitHumanInTheLoopRespond: [{
|
|
264
263
|
type: Input
|
|
265
264
|
}] } });
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1odW1hbi1pbi10aGUtbG9vcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb3BpbG90a2l0LWh1bWFuLWluLXRoZS1sb29wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQU9aLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRzFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ0c7QUFLSCxNQUFNLE9BQU8saUNBQWlDO0lBV0U7SUFOdEMsTUFBTSxDQUFVO0lBQ2hCLFlBQVksR0FBRyxNQUFNLENBQWlCLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxjQUFjLEdBQXVDLElBQUksQ0FBQztJQUMxRCxPQUFPLEdBQW1CLGNBQWMsQ0FBQyxVQUFVLENBQUM7SUFFNUQsWUFDOEMsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDeEUsQ0FBQztJQUVKOztPQUVHO0lBQ00sSUFBSSxDQUFVO0lBRXZCOztPQUVHO0lBQ00sV0FBVyxDQUFVO0lBRTlCOztPQUVHO0lBQ00sVUFBVSxDQUFrQjtJQUVyQzs7T0FFRztJQUNNLE1BQU0sQ0FBbUQ7SUFFbEU7O09BRUc7SUFDTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRXhCOzs7T0FHRztJQUNILElBQ0ksTUFBTSxDQUFDLEtBQW9EO1FBQzdELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxD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QUtHLGtCQUFrQjtzQkFBM0IsTUFBTTs7QUFtSFQ7Ozs7O0dBS0c7QUFLSCxNQUFNLE9BQU8sd0NBQXdDO0lBQzFDLCtCQUErQixDQUFzQztJQUU5RTs7T0FFRztJQUNILE9BQU8sQ0FBQyxNQUFlO1FBQ3JCLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7d0dBUlUsd0NBQXdDOzRGQUF4Qyx3Q0FBd0M7OzRGQUF4Qyx3Q0FBd0M7a0JBSnBELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUVVLCtCQUErQjtzQkFBdkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgc2lnbmFsLFxuICBpc0Rldk1vZGUsXG4gIEluamVjdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC5zZXJ2aWNlXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFuZ3VsYXJIdW1hbkluVGhlTG9vcCxcbiAgSHVtYW5JblRoZUxvb3BQcm9wcyxcbiAgQW5ndWxhckZyb250ZW5kVG9vbCxcbn0gZnJvbSBcIi4uL2NvcmUvY29waWxvdGtpdC50eXBlc1wiO1xuaW1wb3J0IHsgVG9vbENhbGxTdGF0dXMgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcblxuLyoqXG4gKiBEaXJlY3RpdmUgZm9yIGRlY2xhcmF0aXZlbHkgY3JlYXRpbmcgaHVtYW4taW4tdGhlLWxvb3AgdG9vbHMuXG4gKiBQcm92aWRlcyByZWFjdGl2ZSBvdXRwdXRzIGZvciBzdGF0dXMgY2hhbmdlcyBhbmQgcmVzcG9uc2UgZXZlbnRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8IS0tIEJhc2ljIHVzYWdlIC0tPlxuICogPGRpdiBjb3BpbG90a2l0SHVtYW5JblRoZUxvb3BcbiAqICAgICAgW25hbWVdPVwiJ3JlcXVpcmVBcHByb3ZhbCdcIlxuICogICAgICBbZGVzY3JpcHRpb25dPVwiJ1JlcXVpcmVzIHVzZXIgYXBwcm92YWwnXCJcbiAqICAgICAgW2FyZ3NdPVwiYXJnc1NjaGVtYVwiXG4gKiAgICAgIFtyZW5kZXJdPVwiYXBwcm92YWxDb21wb25lbnRcIlxuICogICAgICAoc3RhdHVzQ2hhbmdlKT1cIm9uU3RhdHVzQ2hhbmdlKCRldmVudClcIlxuICogICAgICAocmVzcG9uc2VQcm92aWRlZCk9XCJvblJlc3BvbnNlKCRldmVudClcIj5cbiAqIDwvZGl2PlxuICpcbiAqIDwhLS0gV2l0aCB0ZW1wbGF0ZSAtLT5cbiAqIDxkaXYgY29waWxvdGtpdEh1bWFuSW5UaGVMb29wXG4gKiAgICAgIFtuYW1lXT1cIidyZXF1aXJlQXBwcm92YWwnXCJcbiAqICAgICAgW2Rlc2NyaXB0aW9uXT1cIidSZXF1aXJlcyB1c2VyIGFwcHJvdmFsJ1wiXG4gKiAgICAgIFthcmdzXT1cImFyZ3NTY2hlbWFcIlxuICogICAgICBbcmVuZGVyXT1cImFwcHJvdmFsVGVtcGxhdGVcIlxuICogICAgICBbKHN0YXR1cyldPVwiYXBwcm92YWxTdGF0dXNcIj5cbiAqIDwvZGl2PlxuICpcbiAqIDxuZy10ZW1wbGF0ZSAjYXBwcm92YWxUZW1wbGF0ZSBsZXQtcHJvcHM+XG4gKiAgIDxkaXYgKm5nSWY9XCJwcm9wcy5zdGF0dXMgPT09ICdleGVjdXRpbmcnXCI+XG4gKiAgICAgPHA+e3sgcHJvcHMuYXJncy5hY3Rpb24gfX08L3A+XG4gKiAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJvcHMucmVzcG9uZCgnYXBwcm92ZWQnKVwiPkFwcHJvdmU8L2J1dHRvbj5cbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9wcy5yZXNwb25kKCdyZWplY3RlZCcpXCI+UmVqZWN0PC9idXR0b24+XG4gKiAgIDwvZGl2PlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2NvcGlsb3RraXRIdW1hbkluVGhlTG9vcF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdEh1bWFuSW5UaGVMb29wRGlyZWN0aXZlPFxuICAgIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55PixcbiAgPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSB0b29sSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgc3RhdHVzU2lnbmFsID0gc2lnbmFsPFRvb2xDYWxsU3RhdHVzPihUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzKTtcbiAgcHJpdmF0ZSByZXNvbHZlUHJvbWlzZTogKChyZXN1bHQ6IHVua25vd24pID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3N0YXR1czogVG9vbENhbGxTdGF0dXMgPSBUb29sQ2FsbFN0YXR1cy5JblByb2dyZXNzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgY29waWxvdGtpdDogQ29waWxvdEtpdFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaHVtYW4taW4tdGhlLWxvb3AgdG9vbC5cbiAgICovXG4gIEBJbnB1dCgpIG5hbWUhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIHRvb2wgZG9lcy5cbiAgICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBab2Qgc2NoZW1hIGZvciB0aGUgdG9vbCBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgQElucHV0KCkgcGFyYW1ldGVycyE6IHouWm9kU2NoZW1hPFQ+O1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgY2xhc3Mgb3IgdGVtcGxhdGUgdG8gcmVuZGVyIGZvciB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgcmVuZGVyITogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8SHVtYW5JblRoZUxvb3BQcm9wczxUPj47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRvb2wgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgKGRlZmF1bHQ6IHRydWUpLlxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEFsdGVybmF0aXZlIGlucHV0IHVzaW5nIHRoZSBkaXJlY3RpdmUgc2VsZWN0b3IuXG4gICAqIEFsbG93czogW2NvcGlsb3RraXRIdW1hbkluVGhlTG9vcF09XCJjb25maWdcIlxuICAgKi9cbiAgQElucHV0KFwiY29waWxvdGtpdEh1bWFuSW5UaGVMb29wXCIpXG4gIHNldCBjb25maWcodmFsdWU6IFBhcnRpYWw8QW5ndWxhckh1bWFuSW5UaGVMb29wPFQ+PiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlLm5hbWUpIHRoaXMubmFtZSA9IHZhbHVlLm5hbWU7XG4gICAgICBpZiAodmFsdWUuZGVzY3JpcHRpb24pIHRoaXMuZGVzY3JpcHRpb24gPSB2YWx1ZS5kZXNjcmlwdGlvbjtcbiAgICAgIGlmIChcInBhcmFtZXRlcnNcIiBpbiB2YWx1ZSAmJiB2YWx1ZS5wYXJhbWV0ZXJzKVxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSB2YWx1ZS5wYXJhbWV0ZXJzIGFzIHouWm9kU2NoZW1hPFQ+O1xuICAgICAgaWYgKFwicmVuZGVyXCIgaW4gdmFsdWUgJiYgdmFsdWUucmVuZGVyKSB0aGlzLnJlbmRlciA9IHZhbHVlLnJlbmRlcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc3RhdHVzIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgc3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUb29sQ2FsbFN0YXR1cz4oKTtcblxuICAvKipcbiAgICogVHdvLXdheSBiaW5kaW5nIGZvciBzdGF0dXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc3RhdHVzKCk6IFRvb2xDYWxsU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzO1xuICB9XG4gIHNldCBzdGF0dXModmFsdWU6IFRvb2xDYWxsU3RhdHVzKSB7XG4gICAgLy8gSW5wdXQgc2V0dGVyIGZvciB0d28td2F5IGJpbmRpbmcgKHRob3VnaCB0eXBpY2FsbHkgcmVhZC1vbmx5KVxuICAgIHRoaXMuX3N0YXR1cyA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSByZXNwb25zZSBpcyBwcm92aWRlZCBieSB0aGUgdXNlci5cbiAgICovXG4gIEBPdXRwdXQoKSByZXNwb25zZVByb3ZpZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSB0b29sIGV4ZWN1dGlvbiBzdGFydHMuXG4gICAqL1xuICBAT3V0cHV0KCkgZXhlY3V0aW9uU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSB0b29sIGV4ZWN1dGlvbiBjb21wbGV0ZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgZXhlY3V0aW9uQ29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJUb29sKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHJlbGV2YW50Q2hhbmdlcyA9XG4gICAgICBjaGFuZ2VzW1wibmFtZVwiXSB8fFxuICAgICAgY2hhbmdlc1tcImRlc2NyaXB0aW9uXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wiYXJnc1wiXSB8fFxuICAgICAgY2hhbmdlc1tcInJlbmRlclwiXSB8fFxuICAgICAgY2hhbmdlc1tcImVuYWJsZWRcIl07XG5cbiAgICBpZiAocmVsZXZhbnRDaGFuZ2VzICYmICFyZWxldmFudENoYW5nZXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8vIFJlLXJlZ2lzdGVyIHRoZSB0b29sIHdpdGggbmV3IGNvbmZpZ3VyYXRpb25cbiAgICAgIHRoaXMudW5yZWdpc3RlclRvb2woKTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlclRvb2woKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVucmVnaXN0ZXJUb29sKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSB0cmlnZ2VyIGEgcmVzcG9uc2UuXG4gICAqIFVzZWZ1bCB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgdXNlZCBhcyBhIGNvbnRyb2xsZXIuXG4gICAqL1xuICByZXNwb25kKHJlc3VsdDogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJUb29sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5uYW1lIHx8ICF0aGlzLmRlc2NyaXB0aW9uIHx8ICF0aGlzLnBhcmFtZXRlcnMgfHwgIXRoaXMucmVuZGVyKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiQ29waWxvdEtpdEh1bWFuSW5UaGVMb29wRGlyZWN0aXZlOiBNaXNzaW5nIHJlcXVpcmVkIGlucHV0cy4gXCIgK1xuICAgICAgICAgICAgXCJSZXF1aXJlZDogbmFtZSwgZGVzY3JpcHRpb24sIHBhcmFtZXRlcnMsIGFuZCByZW5kZXIuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaGFuZGxlciB0aGF0IHJldHVybnMgYSBQcm9taXNlXG4gICAgY29uc3QgaGFuZGxlciA9IGFzeW5jIChhcmdzOiBUKTogUHJvbWlzZTx1bmtub3duPiA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0dXMoVG9vbENhbGxTdGF0dXMuRXhlY3V0aW5nKTtcbiAgICAgICAgdGhpcy5yZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gICAgICAgIHRoaXMuZXhlY3V0aW9uU3RhcnRlZC5lbWl0KGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSB0aGUgZnJvbnRlbmQgdG9vbCB3aXRoIGVuaGFuY2VkIHJlbmRlclxuICAgIGNvbnN0IGZyb250ZW5kVG9vbDogQW5ndWxhckZyb250ZW5kVG9vbDxUPiA9IHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgaGFuZGxlcixcbiAgICAgIHJlbmRlcjogdGhpcy5yZW5kZXIsIC8vIFdpbGwgYmUgZW5oYW5jZWQgYnkgdGhlIHJlbmRlciBjb21wb25lbnRcbiAgICB9O1xuXG4gICAgLy8gQWRkIHRoZSB0b29sIChyZXR1cm5zIHZvaWQsIHNvIHdlIHVzZSB0aGUgdG9vbCBuYW1lIGFzIElEKVxuICAgIHRoaXMuY29waWxvdGtpdC5jb3BpbG90a2l0LmFkZFRvb2woZnJvbnRlbmRUb29sKTtcbiAgICB0aGlzLnRvb2xJZCA9IHRoaXMubmFtZTtcblxuICAgIC8vIFJlZ2lzdGVyIHRoZSByZW5kZXIgd2l0aCByZXNwb25kIGNhcGFiaWxpdHlcbiAgICB0aGlzLmNvcGlsb3RraXQucmVnaXN0ZXJUb29sUmVuZGVyKHRoaXMubmFtZSwge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgYXJnczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgcmVuZGVyOiB0aGlzLmNyZWF0ZUVuaGFuY2VkUmVuZGVyKCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXJUb29sKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2xJZCkge1xuICAgICAgdGhpcy5jb3BpbG90a2l0LmNvcGlsb3RraXQucmVtb3ZlVG9vbCh0aGlzLnRvb2xJZCk7XG4gICAgICB0aGlzLmNvcGlsb3RraXQudW5yZWdpc3RlclRvb2xSZW5kZXIodGhpcy5uYW1lKTtcbiAgICAgIHRoaXMudG9vbElkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRW5oYW5jZWRSZW5kZXIoKTogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgLy8gSWYgaXQncyBhIHRlbXBsYXRlLCB3ZSBuZWVkIHRvIHdyYXAgaXQgd2l0aCBvdXIgcmVzcG9uZCBmdW5jdGlvblxuICAgIC8vIFRoaXMgaXMgaGFuZGxlZCBieSByZXR1cm5pbmcgYSBzcGVjaWFsIG1hcmtlciB0aGF0IHRoZSByZW5kZXIgY29tcG9uZW50XG4gICAgLy8gd2lsbCByZWNvZ25pemUgYW5kIGVuaGFuY2Ugd2l0aCB0aGUgcmVzcG9uZCBmdW5jdGlvblxuXG4gICAgLy8gU3RvcmUgcmVmZXJlbmNlIHRvIHRoaXMgZGlyZWN0aXZlIGluc3RhbmNlIGZvciB0aGUgcmVuZGVyIGNvbXBvbmVudFxuICAgICh0aGlzLnJlbmRlciBhcyBhbnkpLl9faHVtYW5JblRoZUxvb3BEaXJlY3RpdmUgPSB0aGlzO1xuICAgICh0aGlzLnJlbmRlciBhcyBhbnkpLl9faHVtYW5JblRoZUxvb3BTdGF0dXMgPSB0aGlzLnN0YXR1c1NpZ25hbDtcblxuICAgIHJldHVybiB0aGlzLnJlbmRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzcG9uc2UocmVzdWx0OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZVByb21pc2UpIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb21pc2UocmVzdWx0KTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdHVzKFRvb2xDYWxsU3RhdHVzLkNvbXBsZXRlKTtcbiAgICAgIHRoaXMucmVzb2x2ZVByb21pc2UgPSBudWxsO1xuICAgICAgdGhpcy5yZXNwb25zZVByb3ZpZGVkLmVtaXQocmVzdWx0KTtcbiAgICAgIHRoaXMuZXhlY3V0aW9uQ29tcGxldGVkLmVtaXQocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXR1cyhzdGF0dXM6IFRvb2xDYWxsU3RhdHVzKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMuc3RhdHVzU2lnbmFsLnNldChzdGF0dXMpO1xuICAgIHRoaXMuc3RhdHVzQ2hhbmdlLmVtaXQoc3RhdHVzKTtcbiAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBkaXJlY3RpdmUgdG8gcHJvdmlkZSByZXNwb25kIGZ1bmN0aW9uIGluIHRlbXBsYXRlcy5cbiAqIFRoaXMgd291bGQgYmUgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSB0b29sIHJlbmRlciBjb21wb25lbnQuXG4gKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbY29waWxvdGtpdEh1bWFuSW5UaGVMb29wUmVzcG9uZF1cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdEtpdEh1bWFuSW5UaGVMb29wUmVzcG9uZERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGNvcGlsb3RraXRIdW1hbkluVGhlTG9vcFJlc3BvbmQ/OiAocmVzdWx0OiB1bmtub3duKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHRlbXBsYXRlcyB0byBjYWxsIHJlc3BvbmQuXG4gICAqL1xuICByZXNwb25kKHJlc3VsdDogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuY29waWxvdGtpdEh1bWFuSW5UaGVMb29wUmVzcG9uZD8uKHJlc3VsdCk7XG4gIH1cbn1cbiJdfQ==
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdGtpdC1odW1hbi1pbi10aGUtbG9vcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9jb3BpbG90a2l0LWh1bWFuLWluLXRoZS1sb29wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQU9aLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBRzFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ0c7QUFLSCxNQUFNLE9BQU8saUNBQWlDO0lBV0U7SUFOdEMsTUFBTSxDQUFVO0lBQ2hCLFlBQVksR0FBRyxNQUFNLENBQWlCLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxjQUFjLEdBQXVDLElBQUksQ0FBQztJQUMxRCxPQUFPLEdBQW1CLGNBQWMsQ0FBQyxVQUFVLENBQUM7SUFFNUQsWUFDOEMsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFDeEUsQ0FBQztJQUVKOztPQUVHO0lBQ00sSUFBSSxDQUFVO0lBRXZCOztPQUVHO0lBQ00sV0FBVyxDQUFVO0lBRTlCOztPQUVHO0lBQ00sVUFBVSxDQUFrQjtJQUVyQzs7T0FFRztJQUNNLE1BQU0sQ0FBbUQ7SUFFbEU7O09BRUc7SUFDTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRXhCOzs7T0FHRztJQUNILElBQ0ksTUFBTSxDQUFDLEtBQW9EO1FBQzdELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLEtBQUssQ0FBQyxJQUFJO2dCQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxD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Ozs7R0FLRztBQUtILE1BQU0sT0FBTyx3Q0FBd0M7SUFDMUMsK0JBQStCLENBQXNDO0lBRTlFOztPQUVHO0lBQ0gsT0FBTyxDQUFDLE1BQWU7UUFDckIsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQzt3R0FSVSx3Q0FBd0M7NEZBQXhDLHdDQUF3Qzs7NEZBQXhDLHdDQUF3QztrQkFKcEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsK0JBQStCO3NCQUF2QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBzaWduYWwsXG4gIGlzRGV2TW9kZSxcbiAgSW5qZWN0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnNlcnZpY2VcIjtcbmltcG9ydCB0eXBlIHtcbiAgQW5ndWxhckh1bWFuSW5UaGVMb29wLFxuICBIdW1hbkluVGhlTG9vcFByb3BzLFxuICBBbmd1bGFyRnJvbnRlbmRUb29sLFxufSBmcm9tIFwiLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzXCI7XG5pbXBvcnQgeyBUb29sQ2FsbFN0YXR1cyB9IGZyb20gXCIuLi9jb3JlL2NvcGlsb3RraXQudHlwZXNcIjtcbmltcG9ydCAqIGFzIHogZnJvbSBcInpvZFwiO1xuXG4vKipcbiAqIERpcmVjdGl2ZSBmb3IgZGVjbGFyYXRpdmVseSBjcmVhdGluZyBodW1hbi1pbi10aGUtbG9vcCB0b29scy5cbiAqIFByb3ZpZGVzIHJlYWN0aXZlIG91dHB1dHMgZm9yIHN0YXR1cyBjaGFuZ2VzIGFuZCByZXNwb25zZSBldmVudHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gQmFzaWMgdXNhZ2UgLS0+XG4gKiA8ZGl2IGNvcGlsb3RraXRIdW1hbkluVGhlTG9vcFxuICogICAgICBbbmFtZV09XCIncmVxdWlyZUFwcHJvdmFsJ1wiXG4gKiAgICAgIFtkZXNjcmlwdGlvbl09XCInUmVxdWlyZXMgdXNlciBhcHByb3ZhbCdcIlxuICogICAgICBbYXJnc109XCJhcmdzU2NoZW1hXCJcbiAqICAgICAgW3JlbmRlcl09XCJhcHByb3ZhbENvbXBvbmVudFwiXG4gKiAgICAgIChzdGF0dXNDaGFuZ2UpPVwib25TdGF0dXNDaGFuZ2UoJGV2ZW50KVwiXG4gKiAgICAgIChyZXNwb25zZVByb3ZpZGVkKT1cIm9uUmVzcG9uc2UoJGV2ZW50KVwiPlxuICogPC9kaXY+XG4gKlxuICogPCEtLSBXaXRoIHRlbXBsYXRlIC0tPlxuICogPGRpdiBjb3BpbG90a2l0SHVtYW5JblRoZUxvb3BcbiAqICAgICAgW25hbWVdPVwiJ3JlcXVpcmVBcHByb3ZhbCdcIlxuICogICAgICBbZGVzY3JpcHRpb25dPVwiJ1JlcXVpcmVzIHVzZXIgYXBwcm92YWwnXCJcbiAqICAgICAgW2FyZ3NdPVwiYXJnc1NjaGVtYVwiXG4gKiAgICAgIFtyZW5kZXJdPVwiYXBwcm92YWxUZW1wbGF0ZVwiXG4gKiAgICAgIFsoc3RhdHVzKV09XCJhcHByb3ZhbFN0YXR1c1wiPlxuICogPC9kaXY+XG4gKlxuICogPG5nLXRlbXBsYXRlICNhcHByb3ZhbFRlbXBsYXRlIGxldC1wcm9wcz5cbiAqICAgPGRpdiAqbmdJZj1cInByb3BzLnN0YXR1cyA9PT0gJ2V4ZWN1dGluZydcIj5cbiAqICAgICA8cD57eyBwcm9wcy5hcmdzLmFjdGlvbiB9fTwvcD5cbiAqICAgICA8YnV0dG9uIChjbGljayk9XCJwcm9wcy5yZXNwb25kKCdhcHByb3ZlZCcpXCI+QXBwcm92ZTwvYnV0dG9uPlxuICogICAgIDxidXR0b24gKGNsaWNrKT1cInByb3BzLnJlc3BvbmQoJ3JlamVjdGVkJylcIj5SZWplY3Q8L2J1dHRvbj5cbiAqICAgPC9kaXY+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbY29waWxvdGtpdEh1bWFuSW5UaGVMb29wXVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0SHVtYW5JblRoZUxvb3BEaXJlY3RpdmU8XG4gICAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICA+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIHRvb2xJZD86IHN0cmluZztcbiAgcHJpdmF0ZSBzdGF0dXNTaWduYWwgPSBzaWduYWw8VG9vbENhbGxTdGF0dXM+KFRvb2xDYWxsU3RhdHVzLkluUHJvZ3Jlc3MpO1xuICBwcml2YXRlIHJlc29sdmVQcm9taXNlOiAoKHJlc3VsdDogdW5rbm93bikgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3RhdHVzOiBUb29sQ2FsbFN0YXR1cyA9IFRvb2xDYWxsU3RhdHVzLkluUHJvZ3Jlc3M7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDb3BpbG90S2l0U2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBodW1hbi1pbi10aGUtbG9vcCB0b29sLlxuICAgKi9cbiAgQElucHV0KCkgbmFtZSE6IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgdG9vbCBkb2VzLlxuICAgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb24hOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFpvZCBzY2hlbWEgZm9yIHRoZSB0b29sIHBhcmFtZXRlcnMuXG4gICAqL1xuICBASW5wdXQoKSBwYXJhbWV0ZXJzITogei5ab2RTY2hlbWE8VD47XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBjbGFzcyBvciB0ZW1wbGF0ZSB0byByZW5kZXIgZm9yIHVzZXIgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKSByZW5kZXIhOiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxIdW1hbkluVGhlTG9vcFByb3BzPFQ+PjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdG9vbCBzaG91bGQgYmUgcmVnaXN0ZXJlZCAoZGVmYXVsdDogdHJ1ZSkuXG4gICAqL1xuICBASW5wdXQoKSBlbmFibGVkID0gdHJ1ZTtcblxuICAvKipcbiAgICogQWx0ZXJuYXRpdmUgaW5wdXQgdXNpbmcgdGhlIGRpcmVjdGl2ZSBzZWxlY3Rvci5cbiAgICogQWxsb3dzOiBbY29waWxvdGtpdEh1bWFuSW5UaGVMb29wXT1cImNvbmZpZ1wiXG4gICAqL1xuICBASW5wdXQoXCJjb3BpbG90a2l0SHVtYW5JblRoZUxvb3BcIilcbiAgc2V0IGNvbmZpZyh2YWx1ZTogUGFydGlhbDxBbmd1bGFySHVtYW5JblRoZUxvb3A8VD4+IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUubmFtZSkgdGhpcy5uYW1lID0gdmFsdWUubmFtZTtcbiAgICAgIGlmICh2YWx1ZS5kZXNjcmlwdGlvbikgdGhpcy5kZXNjcmlwdGlvbiA9IHZhbHVlLmRlc2NyaXB0aW9uO1xuICAgICAgaWYgKFwicGFyYW1ldGVyc1wiIGluIHZhbHVlICYmIHZhbHVlLnBhcmFtZXRlcnMpXG4gICAgICAgIHRoaXMucGFyYW1ldGVycyA9IHZhbHVlLnBhcmFtZXRlcnMgYXMgei5ab2RTY2hlbWE8VD47XG4gICAgICBpZiAoXCJyZW5kZXJcIiBpbiB2YWx1ZSAmJiB2YWx1ZS5yZW5kZXIpIHRoaXMucmVuZGVyID0gdmFsdWUucmVuZGVyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRvb2xDYWxsU3RhdHVzPigpO1xuXG4gIC8qKlxuICAgKiBUd28td2F5IGJpbmRpbmcgZm9yIHN0YXR1cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzdGF0dXMoKTogVG9vbENhbGxTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLl9zdGF0dXM7XG4gIH1cbiAgc2V0IHN0YXR1cyh2YWx1ZTogVG9vbENhbGxTdGF0dXMpIHtcbiAgICAvLyBJbnB1dCBzZXR0ZXIgZm9yIHR3by13YXkgYmluZGluZyAodGhvdWdoIHR5cGljYWxseSByZWFkLW9ubHkpXG4gICAgdGhpcy5fc3RhdHVzID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIHJlc3BvbnNlIGlzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlc3BvbnNlUHJvdmlkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRvb2wgZXhlY3V0aW9uIHN0YXJ0cy5cbiAgICovXG4gIEBPdXRwdXQoKSBleGVjdXRpb25TdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRvb2wgZXhlY3V0aW9uIGNvbXBsZXRlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBleGVjdXRpb25Db21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5yZWdpc3RlclRvb2woKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgcmVsZXZhbnRDaGFuZ2VzID1cbiAgICAgIGNoYW5nZXNbXCJuYW1lXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wiZGVzY3JpcHRpb25cIl0gfHxcbiAgICAgIGNoYW5nZXNbXCJhcmdzXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wicmVuZGVyXCJdIHx8XG4gICAgICBjaGFuZ2VzW1wiZW5hYmxlZFwiXTtcblxuICAgIGlmIChyZWxldmFudENoYW5nZXMgJiYgIXJlbGV2YW50Q2hhbmdlcy5maXJzdENoYW5nZSkge1xuICAgICAgLy8gUmUtcmVnaXN0ZXIgdGhlIHRvb2wgd2l0aCBuZXcgY29uZmlndXJhdGlvblxuICAgICAgdGhpcy51bnJlZ2lzdGVyVG9vbCgpO1xuICAgICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyVG9vbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlclRvb2woKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgYSByZXNwb25zZS5cbiAgICogVXNlZnVsIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyB1c2VkIGFzIGEgY29udHJvbGxlci5cbiAgICovXG4gIHJlc3BvbmQocmVzdWx0OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVSZXNwb25zZShyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlclRvb2woKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5hbWUgfHwgIXRoaXMuZGVzY3JpcHRpb24gfHwgIXRoaXMucGFyYW1ldGVycyB8fCAhdGhpcy5yZW5kZXIpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDb3BpbG90S2l0SHVtYW5JblRoZUxvb3BEaXJlY3RpdmU6IE1pc3NpbmcgcmVxdWlyZWQgaW5wdXRzLiBcIiArXG4gICAgICAgICAgICBcIlJlcXVpcmVkOiBuYW1lLCBkZXNjcmlwdGlvbiwgcGFyYW1ldGVycywgYW5kIHJlbmRlci5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBoYW5kbGVyIHRoYXQgcmV0dXJucyBhIFByb21pc2VcbiAgICBjb25zdCBoYW5kbGVyID0gYXN5bmMgKGFyZ3M6IFQpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhUb29sQ2FsbFN0YXR1cy5FeGVjdXRpbmcpO1xuICAgICAgICB0aGlzLnJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgICAgICAgdGhpcy5leGVjdXRpb25TdGFydGVkLmVtaXQoYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBmcm9udGVuZCB0b29sIHdpdGggZW5oYW5jZWQgcmVuZGVyXG4gICAgY29uc3QgZnJvbnRlbmRUb29sOiBBbmd1bGFyRnJvbnRlbmRUb29sPFQ+ID0ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsXG4gICAgICBoYW5kbGVyLFxuICAgICAgcmVuZGVyOiB0aGlzLnJlbmRlciwgLy8gV2lsbCBiZSBlbmhhbmNlZCBieSB0aGUgcmVuZGVyIGNvbXBvbmVudFxuICAgIH07XG5cbiAgICAvLyBBZGQgdGhlIHRvb2wgKHJldHVybnMgdm9pZCwgc28gd2UgdXNlIHRoZSB0b29sIG5hbWUgYXMgSUQpXG4gICAgdGhpcy5jb3BpbG90a2l0LmNvcGlsb3RraXQuYWRkVG9vbChmcm9udGVuZFRvb2wpO1xuICAgIHRoaXMudG9vbElkID0gdGhpcy5uYW1lO1xuXG4gICAgLy8gUmVnaXN0ZXIgdGhlIHJlbmRlciB3aXRoIHJlc3BvbmQgY2FwYWJpbGl0eVxuICAgIHRoaXMuY29waWxvdGtpdC5yZWdpc3RlclRvb2xSZW5kZXIodGhpcy5uYW1lLCB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICByZW5kZXI6IHRoaXMuY3JlYXRlRW5oYW5jZWRSZW5kZXIoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlclRvb2woKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbElkKSB7XG4gICAgICB0aGlzLmNvcGlsb3RraXQuY29waWxvdGtpdC5yZW1vdmVUb29sKHRoaXMudG9vbElkKTtcbiAgICAgIHRoaXMuY29waWxvdGtpdC51bnJlZ2lzdGVyVG9vbFJlbmRlcih0aGlzLm5hbWUpO1xuICAgICAgdGhpcy50b29sSWQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFbmhhbmNlZFJlbmRlcigpOiBUeXBlPGFueT4gfCBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAvLyBJZiBpdCdzIGEgdGVtcGxhdGUsIHdlIG5lZWQgdG8gd3JhcCBpdCB3aXRoIG91ciByZXNwb25kIGZ1bmN0aW9uXG4gICAgLy8gVGhpcyBpcyBoYW5kbGVkIGJ5IHJldHVybmluZyBhIHNwZWNpYWwgbWFya2VyIHRoYXQgdGhlIHJlbmRlciBjb21wb25lbnRcbiAgICAvLyB3aWxsIHJlY29nbml6ZSBhbmQgZW5oYW5jZSB3aXRoIHRoZSByZXNwb25kIGZ1bmN0aW9uXG5cbiAgICAvLyBTdG9yZSByZWZlcmVuY2UgdG8gdGhpcyBkaXJlY3RpdmUgaW5zdGFuY2UgZm9yIHRoZSByZW5kZXIgY29tcG9uZW50XG4gICAgKHRoaXMucmVuZGVyIGFzIGFueSkuX19odW1hbkluVGhlTG9vcERpcmVjdGl2ZSA9IHRoaXM7XG4gICAgKHRoaXMucmVuZGVyIGFzIGFueSkuX19odW1hbkluVGhlTG9vcFN0YXR1cyA9IHRoaXMuc3RhdHVzU2lnbmFsO1xuXG4gICAgcmV0dXJuIHRoaXMucmVuZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZXNwb25zZShyZXN1bHQ6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZlUHJvbWlzZSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvbWlzZShyZXN1bHQpO1xuICAgICAgdGhpcy51cGRhdGVTdGF0dXMoVG9vbENhbGxTdGF0dXMuQ29tcGxldGUpO1xuICAgICAgdGhpcy5yZXNvbHZlUHJvbWlzZSA9IG51bGw7XG4gICAgICB0aGlzLnJlc3BvbnNlUHJvdmlkZWQuZW1pdChyZXN1bHQpO1xuICAgICAgdGhpcy5leGVjdXRpb25Db21wbGV0ZWQuZW1pdChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdHVzKHN0YXR1czogVG9vbENhbGxTdGF0dXMpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNTaWduYWwuc2V0KHN0YXR1cyk7XG4gICAgdGhpcy5zdGF0dXNDaGFuZ2UuZW1pdChzdGF0dXMpO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGRpcmVjdGl2ZSB0byBwcm92aWRlIHJlc3BvbmQgZnVuY3Rpb24gaW4gdGVtcGxhdGVzLlxuICogVGhpcyB3b3VsZCBiZSB1c2VkIGludGVybmFsbHkgYnkgdGhlIHRvb2wgcmVuZGVyIGNvbXBvbmVudC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltjb3BpbG90a2l0SHVtYW5JblRoZUxvb3BSZXNwb25kXVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90S2l0SHVtYW5JblRoZUxvb3BSZXNwb25kRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgY29waWxvdGtpdEh1bWFuSW5UaGVMb29wUmVzcG9uZD86IChyZXN1bHQ6IHVua25vd24pID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgdGVtcGxhdGVzIHRvIGNhbGwgcmVzcG9uZC5cbiAgICovXG4gIHJlc3BvbmQocmVzdWx0OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5jb3BpbG90a2l0SHVtYW5JblRoZUxvb3BSZXNwb25kPy4ocmVzdWx0KTtcbiAgfVxufVxuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { DestroyRef, inject } from '@angular/core';
|
|
2
2
|
import { CopilotKitService } from '../core/copilotkit.service';
|
|
3
|
-
import { z } from 'zod';
|
|
4
3
|
/**
|
|
5
4
|
* Explicitly adds a frontend tool to CopilotKit.
|
|
6
5
|
* Requires CopilotKitService to be passed as a parameter.
|
|
@@ -50,7 +49,6 @@ export function addFrontendTool(service, tool) {
|
|
|
50
49
|
else {
|
|
51
50
|
const renderEntry = {
|
|
52
51
|
name: tool.name,
|
|
53
|
-
args: tool.parameters || z.object({}),
|
|
54
52
|
render: tool.render
|
|
55
53
|
};
|
|
56
54
|
service.setCurrentRenderToolCalls([...currentRenders, renderEntry]);
|
|
@@ -103,7 +101,6 @@ export function registerFrontendTool(tool) {
|
|
|
103
101
|
else {
|
|
104
102
|
const renderEntry = {
|
|
105
103
|
name: tool.name,
|
|
106
|
-
args: tool.parameters || z.object({}),
|
|
107
104
|
render: tool.render
|
|
108
105
|
};
|
|
109
106
|
service.setCurrentRenderToolCalls([...currentRenders, renderEntry]);
|
|
@@ -198,7 +195,6 @@ export function createDynamicFrontendTool(name, description, parameters, handler
|
|
|
198
195
|
const currentRenders = service.currentRenderToolCalls();
|
|
199
196
|
const renderEntry = {
|
|
200
197
|
name: name,
|
|
201
|
-
args: parameters,
|
|
202
198
|
render: currentRender
|
|
203
199
|
};
|
|
204
200
|
const existingIndex = currentRenders.findIndex((r) => r.name === name);
|
|
@@ -225,4 +221,4 @@ export function createDynamicFrontendTool(name, description, parameters, handler
|
|
|
225
221
|
destroyRef.onDestroy(destroy);
|
|
226
222
|
return { update, destroy };
|
|
227
223
|
}
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlbmQtdG9vbC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mcm9udGVuZC10b29sLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsT0FBMEIsRUFDMUIsSUFBNEI7SUFFNUIsNkJBQTZCO0lBQzdCLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpDLGtDQUFrQztJQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckcsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxXQUFXLEdBQTZCO2dCQUM1QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQStCO2dCQUNwRSxNQUFNLEVB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QUFDLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsV0FBVyxDQUFDO2dCQUNyQyxPQUFPLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQztRQUNILENBQUM7UUFFRCxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUMsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtRQUNuQixJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixnQkFBZ0I7SUFDaEIsTUFBTSxFQUFFLENBQUM7SUFFVCxtQkFBbUI7SUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU5QixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcGlsb3RLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9jb3BpbG90a2l0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckZyb250ZW5kVG9vbCwgQW5ndWxhclRvb2xDYWxsUmVuZGVyLCBUb29sQ2FsbFJlbmRlciB9IGZyb20gJy4uL2NvcmUvY29waWxvdGtpdC50eXBlcyc7XG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJztcblxuLyoqXG4gKiBFeHBsaWNpdGx5IGFkZHMgYSBmcm9udGVuZCB0b29sIHRvIENvcGlsb3RLaXQuXG4gKiBSZXF1aXJlcyBDb3BpbG90S2l0U2VydmljZSB0byBiZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuXG4gKiBcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RLaXRTZXJ2aWNlIGluc3RhbmNlXG4gKiBAcGFyYW0gdG9vbCAtIFRoZSB0b29sIHRvIGFkZFxuICogQHJldHVybnMgQSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgcmVtb3ZlcyB0aGUgdG9vbFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICogICBwcml2YXRlIGNsZWFudXBGbnM6IEFycmF5PCgpID0+IHZvaWQ+ID0gW107XG4gKiAgIFxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvcGlsb3RraXQ6IENvcGlsb3RLaXRTZXJ2aWNlKSB7fVxuICogICBcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3QgY2xlYW51cCA9IGFkZEZyb250ZW5kVG9vbCh0aGlzLmNvcGlsb3RraXQsIHtcbiAqICAgICAgIG5hbWU6ICdjYWxjdWxhdG9yJyxcbiAqICAgICAgIGRlc2NyaXB0aW9uOiAnUGVyZm9ybXMgY2FsY3VsYXRpb25zJyxcbiAqICAgICAgIHBhcmFtZXRlcnM6IHoub2JqZWN0KHtcbiAqICAgICAgICAgZXhwcmVzc2lvbjogei5zdHJpbmcoKVxuICogICAgICAgfSksXG4gKiAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJncykgPT4ge1xuICogICAgICAgICByZXR1cm4gZXZhbChhcmdzLmV4cHJlc3Npb24pO1xuICogICAgICAgfVxuICogICAgIH0pO1xuICogICAgIFxuICogICAgIHRoaXMuY2xlYW51cEZucy5wdXNoKGNsZWFudXApO1xuICogICB9XG4gKiAgIFxuICogICBuZ09uRGVzdHJveSgpIHtcbiAqICAgICB0aGlzLmNsZWFudXBGbnMuZm9yRWFjaChmbiA9PiBmbigpKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRGcm9udGVuZFRvb2w8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgc2VydmljZTogQ29waWxvdEtpdFNlcnZpY2UsXG4gIHRvb2w6IEFuZ3VsYXJGcm9udGVuZFRvb2w8VD5cbik6ICgpID0+IHZvaWQge1xuICAvLyBBZGQgdGhlIHRvb2wgdG8gQ29waWxvdEtpdFxuICBzZXJ2aWNlLmNvcGlsb3RraXQuYWRkVG9vbCh0b29sKTtcbiAgXG4gIC8vIFJlZ2lzdGVyIHRoZSByZW5kZXIgaWYgcHJvdmlkZWRcbiAgaWYgKHRvb2wucmVuZGVyKSB7XG4gICAgY29uc3QgY3VycmVudFJlbmRlcnMgPSBzZXJ2aWNlLmN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudFJlbmRlcnMuZmluZEluZGV4KChyOiBUb29sQ2FsbFJlbmRlcjx1bmtub3duPikgPT4gci5uYW1lID09PSB0b29sLm5hbWUpO1xuICAgIFxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVG9vbCB3aXRoIG5hbWUgJyR7dG9vbC5uYW1lfScgYWxyZWFkeSBoYXMgYSByZW5kZXIuIFNraXBwaW5nLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZW5kZXJFbnRyeTogQW5ndWxhclRvb2xDYWxsUmVuZGVyPFQ+ID0ge1xuICAgICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICAgIGFyZ3M6IHRvb2wucGFyYW1ldGVycyB8fCAoei5vYmplY3Qoe30pIGFzIHVua25vd24gYXMgei5ab2RTY2hlbWE8VD4pLFxuICAgICAgICByZW5kZXI6IHRvb2wucmVuZGVyXG4gICAgICB9O1xuICAgICAgXG4gICAgICBzZXJ2aWNlLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoWy4uLmN1cnJlbnRSZW5kZXJzLCByZW5kZXJFbnRyeV0pO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gUmV0dXJuIGNsZWFudXAgZnVuY3Rpb25cbiAgcmV0dXJuICgpID0+IHtcbiAgICByZW1vdmVGcm9udGVuZFRvb2woc2VydmljZSwgdG9vbC5uYW1lKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBmcm9udGVuZCB0b29sIHdpdGggQ29waWxvdEtpdCBhbmQgYXV0b21hdGljYWxseSByZW1vdmVzIGl0IHdoZW4gdGhlIGNvbXBvbmVudC9zZXJ2aWNlIGlzIGRlc3Ryb3llZC5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIFxuICogQHBhcmFtIHRvb2wgLSBUaGUgdG9vbCB0byByZWdpc3RlclxuICogQHJldHVybnMgVGhlIHRvb2wgbmFtZVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgLy8gQXV0b21hdGljYWxseSBjbGVhbmVkIHVwIG9uIGNvbXBvbmVudCBkZXN0cm95XG4gKiAgICAgcmVnaXN0ZXJGcm9udGVuZFRvb2woe1xuICogICAgICAgbmFtZTogJ3NlYXJjaCcsXG4gKiAgICAgICBkZXNjcmlwdGlvbjogJ1NlYXJjaCBmb3IgaXRlbXMnLFxuICogICAgICAgcGFyYW1ldGVyczogei5vYmplY3Qoe1xuICogICAgICAgICBxdWVyeTogei5zdHJpbmcoKVxuICogICAgICAgfSksXG4gKiAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJncykgPT4ge1xuICogICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaChhcmdzLnF1ZXJ5KTtcbiAqICAgICAgIH0sXG4gKiAgICAgICByZW5kZXI6IFNlYXJjaFJlc3VsdHNDb21wb25lbnRcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZyb250ZW5kVG9vbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICB0b29sOiBBbmd1bGFyRnJvbnRlbmRUb29sPFQ+XG4pOiBzdHJpbmcge1xuICBjb25zdCBzZXJ2aWNlID0gaW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgXG4gIC8vIEFkZCB0aGUgdG9vbFxuICBzZXJ2aWNlLmNvcGlsb3RraXQuYWRkVG9vbCh0b29sKTtcbiAgXG4gIC8vIFJlZ2lzdGVyIHRoZSByZW5kZXIgaWYgcHJvdmlkZWRcbiAgaWYgKHRvb2wucmVuZGVyKSB7XG4gICAgY29uc3QgY3VycmVudFJlbmRlcnMgPSBzZXJ2aWNlLmN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudFJlbmRlcnMuZmluZEluZGV4KChyOiBUb29sQ2FsbFJlbmRlcjx1bmtub3duPikgPT4gci5uYW1lID09PSB0b29sLm5hbWUpO1xuICAgIFxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVG9vbCB3aXRoIG5hbWUgJyR7dG9vbC5uYW1lfScgYWxyZWFkeSBoYXMgYSByZW5kZXIuIFNraXBwaW5nLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZW5kZXJFbnRyeTogQW5ndWxhclRvb2xDYWxsUmVuZGVyPFQ+ID0ge1xuICAgICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICAgIGFyZ3M6IHRvb2wucGFyYW1ldGVycyB8fCAoei5vYmplY3Qoe30pIGFzIHVua25vd24gYXMgei5ab2RTY2hlbWE8VD4pLFxuICAgICAgICByZW5kZXI6IHRvb2wucmVuZGVyXG4gICAgICB9O1xuICAgICAgXG4gICAgICBzZXJ2aWNlLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoWy4uLmN1cnJlbnRSZW5kZXJzLCByZW5kZXJFbnRyeV0pO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gUmVnaXN0ZXIgY2xlYW51cCB3aXRoIEFuZ3VsYXIncyBEZXN0cm95UmVmXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICByZW1vdmVGcm9udGVuZFRvb2woc2VydmljZSwgdG9vbC5uYW1lKTtcbiAgfSk7XG4gIFxuICByZXR1cm4gdG9vbC5uYW1lO1xufVxuXG4vKipcbiAqIEV4cGxpY2l0bHkgcmVtb3ZlcyBhIGZyb250ZW5kIHRvb2wgZnJvbSBDb3BpbG90S2l0LlxuICogXG4gKiBAcGFyYW0gc2VydmljZSAtIFRoZSBDb3BpbG90S2l0U2VydmljZSBpbnN0YW5jZVxuICogQHBhcmFtIHRvb2xOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRvb2wgdG8gcmVtb3ZlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZW1vdmVGcm9udGVuZFRvb2wodGhpcy5jb3BpbG90a2l0LCAnY2FsY3VsYXRvcicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVGcm9udGVuZFRvb2woXG4gIHNlcnZpY2U6IENvcGlsb3RLaXRTZXJ2aWNlLFxuICB0b29sTmFtZTogc3RyaW5nXG4pOiB2b2lkIHtcbiAgLy8gUmVtb3ZlIHRoZSB0b29sXG4gIHNlcnZpY2UuY29waWxvdGtpdC5yZW1vdmVUb29sKHRvb2xOYW1lKTtcbiAgXG4gIC8vIFJlbW92ZSB0aGUgcmVuZGVyIGlmIGl0IGV4aXN0c1xuICBjb25zdCBjdXJyZW50UmVuZGVycyA9IHNlcnZpY2UuY3VycmVudFJlbmRlclRvb2xDYWxscygpO1xuICBjb25zdCBmaWx0ZXJlZCA9IGN1cnJlbnRSZW5kZXJzLmZpbHRlcigocjogVG9vbENhbGxSZW5kZXI8dW5rbm93bj4pID0+IHIubmFtZSAhPT0gdG9vbE5hbWUpO1xuICBpZiAoZmlsdGVyZWQubGVuZ3RoICE9PSBjdXJyZW50UmVuZGVycy5sZW5ndGgpIHtcbiAgICBzZXJ2aWNlLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoZmlsdGVyZWQpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZyb250ZW5kIHRvb2wgd2l0aCBkeW5hbWljIHBhcmFtZXRlcnMgdGhhdCBjYW4gY2hhbmdlIG92ZXIgdGltZS5cbiAqIFVzZXMgQW5ndWxhciBzaWduYWxzIGZvciByZWFjdGl2aXR5LlxuICogXG4gKiBAcGFyYW0gbmFtZSAtIFRvb2wgbmFtZVxuICogQHBhcmFtIGRlc2NyaXB0aW9uIC0gVG9vbCBkZXNjcmlwdGlvblxuICogQHBhcmFtIHBhcmFtZXRlcnMgLSBab2Qgc2NoZW1hIGZvciBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0gaGFuZGxlciAtIFNpZ25hbCBvciBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIHRoZSBoYW5kbGVyXG4gKiBAcGFyYW0gcmVuZGVyIC0gT3B0aW9uYWwgcmVuZGVyIGNvbXBvbmVudCBvciB0ZW1wbGF0ZVxuICogQHJldHVybnMgT2JqZWN0IHdpdGggdXBkYXRlIGFuZCBkZXN0cm95IG1ldGhvZHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgdG9vbENvbmZpZyA9IHNpZ25hbCh7XG4gKiAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4gdGhpcy5wcm9jZXNzRGVmYXVsdChhcmdzKVxuICogICB9KTtcbiAqICAgXG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIGNvbnN0IHRvb2wgPSBjcmVhdGVEeW5hbWljRnJvbnRlbmRUb29sKFxuICogICAgICAgJ3Byb2Nlc3NvcicsXG4gKiAgICAgICAnUHJvY2Vzc2VzIGRhdGEnLFxuICogICAgICAgei5vYmplY3QoeyBkYXRhOiB6LnN0cmluZygpIH0pLFxuICogICAgICAgKCkgPT4gdGhpcy50b29sQ29uZmlnKCkuaGFuZGxlclxuICogICAgICk7XG4gKiAgICAgXG4gKiAgICAgLy8gTGF0ZXIsIHVwZGF0ZSB0aGUgaGFuZGxlclxuICogICAgIHRoaXMudG9vbENvbmZpZy5zZXQoe1xuICogICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4gdGhpcy5wcm9jZXNzQWR2YW5jZWQoYXJncylcbiAqICAgICB9KTtcbiAqICAgICB0b29sLnVwZGF0ZSgpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUR5bmFtaWNGcm9udGVuZFRvb2w8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgbmFtZTogc3RyaW5nLFxuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgKCgpID0+IHN0cmluZyksXG4gIHBhcmFtZXRlcnM6IHouWm9kU2NoZW1hPFQ+LFxuICBoYW5kbGVyOiAoKSA9PiAoKGFyZ3M6IFQpID0+IFByb21pc2U8YW55PiksXG4gIHJlbmRlcj86ICgpID0+IGFueVxuKTogeyB1cGRhdGU6ICgpID0+IHZvaWQ7IGRlc3Ryb3k6ICgpID0+IHZvaWQgfSB7XG4gIGNvbnN0IHNlcnZpY2UgPSBpbmplY3QoQ29waWxvdEtpdFNlcnZpY2UpO1xuICBjb25zdCBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBcbiAgbGV0IGlzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICBcbiAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgIC8vIFJlbW92ZSBvbGQgdG9vbCBpZiByZWdpc3RlcmVkXG4gICAgaWYgKGlzUmVnaXN0ZXJlZCkge1xuICAgICAgc2VydmljZS5jb3BpbG90a2l0LnJlbW92ZVRvb2wobmFtZSk7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBuZXcgdG9vbCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgZGVzYyA9IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IGRlc2NyaXB0aW9uKCkgOiBkZXNjcmlwdGlvbjtcbiAgICBjb25zdCBjdXJyZW50SGFuZGxlciA9IGhhbmRsZXIoKTtcbiAgICBjb25zdCBjdXJyZW50UmVuZGVyID0gcmVuZGVyID8gcmVuZGVyKCkgOiB1bmRlZmluZWQ7XG4gICAgXG4gICAgY29uc3QgdG9vbDogQW5ndWxhckZyb250ZW5kVG9vbDxUPiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzYyxcbiAgICAgIHBhcmFtZXRlcnMsXG4gICAgICBoYW5kbGVyOiBjdXJyZW50SGFuZGxlcixcbiAgICAgIHJlbmRlcjogY3VycmVudFJlbmRlclxuICAgIH07XG4gICAgXG4gICAgLy8gQWRkIHRoZSB0b29sXG4gICAgc2VydmljZS5jb3BpbG90a2l0LmFkZFRvb2wodG9vbCk7XG4gICAgXG4gICAgLy8gVXBkYXRlIHJlbmRlciBpZiBwcm92aWRlZFxuICAgIGlmIChjdXJyZW50UmVuZGVyKSB7XG4gICAgICBjb25zdCBjdXJyZW50UmVuZGVycyA9IHNlcnZpY2UuY3VycmVudFJlbmRlclRvb2xDYWxscygpO1xuICAgICAgY29uc3QgcmVuZGVyRW50cnk6IEFuZ3VsYXJUb29sQ2FsbFJlbmRlcjxUPiA9IHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgYXJnczogcGFyYW1ldGVycyxcbiAgICAgICAgcmVuZGVyOiBjdXJyZW50UmVuZGVyXG4gICAgICB9O1xuICAgICAgXG4gICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudFJlbmRlcnMuZmluZEluZGV4KChyOiBUb29sQ2FsbFJlbmRlcjx1bmtub3duPikgPT4gci5uYW1lID09PSBuYW1lKTtcbiAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gWy4uLmN1cnJlbnRSZW5kZXJzXTtcbiAgICAgICAgdXBkYXRlZFtleGlzdGluZ0luZGV4XSA9IHJlbmRlckVudHJ5O1xuICAgICAgICBzZXJ2aWNlLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHModXBkYXRlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJ2aWNlLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoWy4uLmN1cnJlbnRSZW5kZXJzLCByZW5kZXJFbnRyeV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpc1JlZ2lzdGVyZWQgPSB0cnVlO1xuICB9O1xuICBcbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBpZiAoaXNSZWdpc3RlcmVkKSB7XG4gICAgICByZW1vdmVGcm9udGVuZFRvb2woc2VydmljZSwgbmFtZSk7XG4gICAgICBpc1JlZ2lzdGVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG4gIFxuICAvLyBJbml0aWFsIHNldHVwXG4gIHVwZGF0ZSgpO1xuICBcbiAgLy8gUmVnaXN0ZXIgY2xlYW51cFxuICBkZXN0cm95UmVmLm9uRGVzdHJveShkZXN0cm95KTtcbiAgXG4gIHJldHVybiB7IHVwZGF0ZSwgZGVzdHJveSB9O1xufSJdfQ==
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlbmQtdG9vbC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mcm9udGVuZC10b29sLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSS9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLE9BQTBCLEVBQzFCLElBQTRCO0lBRTVCLDZCQUE2QjtJQUM3QixPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqQyxrQ0FBa0M7SUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDeEQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVGLElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLElBQUksbUNBQW1DLENBQUMsQ0FBQztRQUNqRixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sV0FBVyxHQUEwQjtnQkFDekMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUNwQixDQUFDO1lBRUYsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUMsR0FBRyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lB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QUMsR0FBRyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQztRQUVELFlBQVksR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ25CLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLGdCQUFnQjtJQUNoQixNQUFNLEVBQUUsQ0FBQztJQUVULG1CQUFtQjtJQUNuQixVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29waWxvdEtpdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2NvcGlsb3RraXQuc2VydmljZSc7XG5pbXBvcnQgeyBBbmd1bGFyRnJvbnRlbmRUb29sLCBBbmd1bGFyVG9vbENhbGxSZW5kZXIsIFRvb2xDYWxsUmVuZGVyIH0gZnJvbSAnLi4vY29yZS9jb3BpbG90a2l0LnR5cGVzJztcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gJ3pvZCc7XG5cbi8qKlxuICogRXhwbGljaXRseSBhZGRzIGEgZnJvbnRlbmQgdG9vbCB0byBDb3BpbG90S2l0LlxuICogUmVxdWlyZXMgQ29waWxvdEtpdFNlcnZpY2UgdG8gYmUgcGFzc2VkIGFzIGEgcGFyYW1ldGVyLlxuICogXG4gKiBAcGFyYW0gc2VydmljZSAtIFRoZSBDb3BpbG90S2l0U2VydmljZSBpbnN0YW5jZVxuICogQHBhcmFtIHRvb2wgLSBUaGUgdG9vbCB0byBhZGRcbiAqIEByZXR1cm5zIEEgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHJlbW92ZXMgdGhlIHRvb2xcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCBjbGFzcyBNeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAqICAgcHJpdmF0ZSBjbGVhbnVwRm5zOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICogICBcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb3BpbG90a2l0OiBDb3BpbG90S2l0U2VydmljZSkge31cbiAqICAgXG4gKiAgIG5nT25Jbml0KCkge1xuICogICAgIGNvbnN0IGNsZWFudXAgPSBhZGRGcm9udGVuZFRvb2wodGhpcy5jb3BpbG90a2l0LCB7XG4gKiAgICAgICBuYW1lOiAnY2FsY3VsYXRvcicsXG4gKiAgICAgICBkZXNjcmlwdGlvbjogJ1BlcmZvcm1zIGNhbGN1bGF0aW9ucycsXG4gKiAgICAgICBwYXJhbWV0ZXJzOiB6Lm9iamVjdCh7XG4gKiAgICAgICAgIGV4cHJlc3Npb246IHouc3RyaW5nKClcbiAqICAgICAgIH0pLFxuICogICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3MpID0+IHtcbiAqICAgICAgICAgcmV0dXJuIGV2YWwoYXJncy5leHByZXNzaW9uKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgICBcbiAqICAgICB0aGlzLmNsZWFudXBGbnMucHVzaChjbGVhbnVwKTtcbiAqICAgfVxuICogICBcbiAqICAgbmdPbkRlc3Ryb3koKSB7XG4gKiAgICAgdGhpcy5jbGVhbnVwRm5zLmZvckVhY2goZm4gPT4gZm4oKSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRnJvbnRlbmRUb29sPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIHNlcnZpY2U6IENvcGlsb3RLaXRTZXJ2aWNlLFxuICB0b29sOiBBbmd1bGFyRnJvbnRlbmRUb29sPFQ+XG4pOiAoKSA9PiB2b2lkIHtcbiAgLy8gQWRkIHRoZSB0b29sIHRvIENvcGlsb3RLaXRcbiAgc2VydmljZS5jb3BpbG90a2l0LmFkZFRvb2wodG9vbCk7XG4gIFxuICAvLyBSZWdpc3RlciB0aGUgcmVuZGVyIGlmIHByb3ZpZGVkXG4gIGlmICh0b29sLnJlbmRlcikge1xuICAgIGNvbnN0IGN1cnJlbnRSZW5kZXJzID0gc2VydmljZS5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGN1cnJlbnRSZW5kZXJzLmZpbmRJbmRleCgocjogVG9vbENhbGxSZW5kZXIpID0+IHIubmFtZSA9PT0gdG9vbC5uYW1lKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFRvb2wgd2l0aCBuYW1lICcke3Rvb2wubmFtZX0nIGFscmVhZHkgaGFzIGEgcmVuZGVyLiBTa2lwcGluZy5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVuZGVyRW50cnk6IEFuZ3VsYXJUb29sQ2FsbFJlbmRlciA9IHtcbiAgICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgICByZW5kZXI6IHRvb2wucmVuZGVyXG4gICAgICB9O1xuICAgICAgXG4gICAgICBzZXJ2aWNlLnNldEN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoWy4uLmN1cnJlbnRSZW5kZXJzLCByZW5kZXJFbnRyeV0pO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gUmV0dXJuIGNsZWFudXAgZnVuY3Rpb25cbiAgcmV0dXJuICgpID0+IHtcbiAgICByZW1vdmVGcm9udGVuZFRvb2woc2VydmljZSwgdG9vbC5uYW1lKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBmcm9udGVuZCB0b29sIHdpdGggQ29waWxvdEtpdCBhbmQgYXV0b21hdGljYWxseSByZW1vdmVzIGl0IHdoZW4gdGhlIGNvbXBvbmVudC9zZXJ2aWNlIGlzIGRlc3Ryb3llZC5cbiAqIE11c3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbmplY3Rpb24gY29udGV4dC5cbiAqIFxuICogQHBhcmFtIHRvb2wgLSBUaGUgdG9vbCB0byByZWdpc3RlclxuICogQHJldHVybnMgVGhlIHRvb2wgbmFtZVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgLy8gQXV0b21hdGljYWxseSBjbGVhbmVkIHVwIG9uIGNvbXBvbmVudCBkZXN0cm95XG4gKiAgICAgcmVnaXN0ZXJGcm9udGVuZFRvb2woe1xuICogICAgICAgbmFtZTogJ3NlYXJjaCcsXG4gKiAgICAgICBkZXNjcmlwdGlvbjogJ1NlYXJjaCBmb3IgaXRlbXMnLFxuICogICAgICAgcGFyYW1ldGVyczogei5vYmplY3Qoe1xuICogICAgICAgICBxdWVyeTogei5zdHJpbmcoKVxuICogICAgICAgfSksXG4gKiAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJncykgPT4ge1xuICogICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaChhcmdzLnF1ZXJ5KTtcbiAqICAgICAgIH0sXG4gKiAgICAgICByZW5kZXI6IFNlYXJjaFJlc3VsdHNDb21wb25lbnRcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZyb250ZW5kVG9vbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICB0b29sOiBBbmd1bGFyRnJvbnRlbmRUb29sPFQ+XG4pOiBzdHJpbmcge1xuICBjb25zdCBzZXJ2aWNlID0gaW5qZWN0KENvcGlsb3RLaXRTZXJ2aWNlKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgXG4gIC8vIEFkZCB0aGUgdG9vbFxuICBzZXJ2aWNlLmNvcGlsb3RraXQuYWRkVG9vbCh0b29sKTtcbiAgXG4gIC8vIFJlZ2lzdGVyIHRoZSByZW5kZXIgaWYgcHJvdmlkZWRcbiAgaWYgKHRvb2wucmVuZGVyKSB7XG4gICAgY29uc3QgY3VycmVudFJlbmRlcnMgPSBzZXJ2aWNlLmN1cnJlbnRSZW5kZXJUb29sQ2FsbHMoKTtcbiAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gY3VycmVudFJlbmRlcnMuZmluZEluZGV4KChyOiBUb29sQ2FsbFJlbmRlcikgPT4gci5uYW1lID09PSB0b29sLm5hbWUpO1xuICAgIFxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVG9vbCB3aXRoIG5hbWUgJyR7dG9vbC5uYW1lfScgYWxyZWFkeSBoYXMgYSByZW5kZXIuIFNraXBwaW5nLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZW5kZXJFbnRyeTogQW5ndWxhclRvb2xDYWxsUmVuZGVyID0ge1xuICAgICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICAgIHJlbmRlcjogdG9vbC5yZW5kZXJcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHNlcnZpY2Uuc2V0Q3VycmVudFJlbmRlclRvb2xDYWxscyhbLi4uY3VycmVudFJlbmRlcnMsIHJlbmRlckVudHJ5XSk7XG4gICAgfVxuICB9XG4gIFxuICAvLyBSZWdpc3RlciBjbGVhbnVwIHdpdGggQW5ndWxhcidzIERlc3Ryb3lSZWZcbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIHJlbW92ZUZyb250ZW5kVG9vbChzZXJ2aWNlLCB0b29sLm5hbWUpO1xuICB9KTtcbiAgXG4gIHJldHVybiB0b29sLm5hbWU7XG59XG5cbi8qKlxuICogRXhwbGljaXRseSByZW1vdmVzIGEgZnJvbnRlbmQgdG9vbCBmcm9tIENvcGlsb3RLaXQuXG4gKiBcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIENvcGlsb3RLaXRTZXJ2aWNlIGluc3RhbmNlXG4gKiBAcGFyYW0gdG9vbE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdG9vbCB0byByZW1vdmVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlbW92ZUZyb250ZW5kVG9vbCh0aGlzLmNvcGlsb3RraXQsICdjYWxjdWxhdG9yJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb250ZW5kVG9vbChcbiAgc2VydmljZTogQ29waWxvdEtpdFNlcnZpY2UsXG4gIHRvb2xOYW1lOiBzdHJpbmdcbik6IHZvaWQge1xuICAvLyBSZW1vdmUgdGhlIHRvb2xcbiAgc2VydmljZS5jb3BpbG90a2l0LnJlbW92ZVRvb2wodG9vbE5hbWUpO1xuICBcbiAgLy8gUmVtb3ZlIHRoZSByZW5kZXIgaWYgaXQgZXhpc3RzXG4gIGNvbnN0IGN1cnJlbnRSZW5kZXJzID0gc2VydmljZS5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG4gIGNvbnN0IGZpbHRlcmVkID0gY3VycmVudFJlbmRlcnMuZmlsdGVyKChyOiBUb29sQ2FsbFJlbmRlcikgPT4gci5uYW1lICE9PSB0b29sTmFtZSk7XG4gIGlmIChmaWx0ZXJlZC5sZW5ndGggIT09IGN1cnJlbnRSZW5kZXJzLmxlbmd0aCkge1xuICAgIHNlcnZpY2Uuc2V0Q3VycmVudFJlbmRlclRvb2xDYWxscyhmaWx0ZXJlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnJvbnRlbmQgdG9vbCB3aXRoIGR5bmFtaWMgcGFyYW1ldGVycyB0aGF0IGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLlxuICogVXNlcyBBbmd1bGFyIHNpZ25hbHMgZm9yIHJlYWN0aXZpdHkuXG4gKiBcbiAqIEBwYXJhbSBuYW1lIC0gVG9vbCBuYW1lXG4gKiBAcGFyYW0gZGVzY3JpcHRpb24gLSBUb29sIGRlc2NyaXB0aW9uXG4gKiBAcGFyYW0gcGFyYW1ldGVycyAtIFpvZCBzY2hlbWEgZm9yIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBoYW5kbGVyIC0gU2lnbmFsIG9yIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgdGhlIGhhbmRsZXJcbiAqIEBwYXJhbSByZW5kZXIgLSBPcHRpb25hbCByZW5kZXIgY29tcG9uZW50IG9yIHRlbXBsYXRlXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB1cGRhdGUgYW5kIGRlc3Ryb3kgbWV0aG9kc1xuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZXhwb3J0IGNsYXNzIE15Q29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSB0b29sQ29uZmlnID0gc2lnbmFsKHtcbiAqICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB0aGlzLnByb2Nlc3NEZWZhdWx0KGFyZ3MpXG4gKiAgIH0pO1xuICogICBcbiAqICAgbmdPbkluaXQoKSB7XG4gKiAgICAgY29uc3QgdG9vbCA9IGNyZWF0ZUR5bmFtaWNGcm9udGVuZFRvb2woXG4gKiAgICAgICAncHJvY2Vzc29yJyxcbiAqICAgICAgICdQcm9jZXNzZXMgZGF0YScsXG4gKiAgICAgICB6Lm9iamVjdCh7IGRhdGE6IHouc3RyaW5nKCkgfSksXG4gKiAgICAgICAoKSA9PiB0aGlzLnRvb2xDb25maWcoKS5oYW5kbGVyXG4gKiAgICAgKTtcbiAqICAgICBcbiAqICAgICAvLyBMYXRlciwgdXBkYXRlIHRoZSBoYW5kbGVyXG4gKiAgICAgdGhpcy50b29sQ29uZmlnLnNldCh7XG4gKiAgICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB0aGlzLnByb2Nlc3NBZHZhbmNlZChhcmdzKVxuICogICAgIH0pO1xuICogICAgIHRvb2wudXBkYXRlKCk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRHluYW1pY0Zyb250ZW5kVG9vbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICBuYW1lOiBzdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSxcbiAgcGFyYW1ldGVyczogei5ab2RTY2hlbWE8VD4sXG4gIGhhbmRsZXI6ICgpID0+ICgoYXJnczogVCkgPT4gUHJvbWlzZTxhbnk+KSxcbiAgcmVuZGVyPzogKCkgPT4gYW55XG4pOiB7IHVwZGF0ZTogKCkgPT4gdm9pZDsgZGVzdHJveTogKCkgPT4gdm9pZCB9IHtcbiAgY29uc3Qgc2VydmljZSA9IGluamVjdChDb3BpbG90S2l0U2VydmljZSk7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIFxuICBsZXQgaXNSZWdpc3RlcmVkID0gZmFsc2U7XG4gIFxuICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgLy8gUmVtb3ZlIG9sZCB0b29sIGlmIHJlZ2lzdGVyZWRcbiAgICBpZiAoaXNSZWdpc3RlcmVkKSB7XG4gICAgICBzZXJ2aWNlLmNvcGlsb3RraXQucmVtb3ZlVG9vbChuYW1lKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ3JlYXRlIG5ldyB0b29sIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBkZXNjID0gdHlwZW9mIGRlc2NyaXB0aW9uID09PSAnZnVuY3Rpb24nID8gZGVzY3JpcHRpb24oKSA6IGRlc2NyaXB0aW9uO1xuICAgIGNvbnN0IGN1cnJlbnRIYW5kbGVyID0gaGFuZGxlcigpO1xuICAgIGNvbnN0IGN1cnJlbnRSZW5kZXIgPSByZW5kZXIgPyByZW5kZXIoKSA6IHVuZGVmaW5lZDtcbiAgICBcbiAgICBjb25zdCB0b29sOiBBbmd1bGFyRnJvbnRlbmRUb29sPFQ+ID0ge1xuICAgICAgbmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICAgIGhhbmRsZXI6IGN1cnJlbnRIYW5kbGVyLFxuICAgICAgcmVuZGVyOiBjdXJyZW50UmVuZGVyXG4gICAgfTtcbiAgICBcbiAgICAvLyBBZGQgdGhlIHRvb2xcbiAgICBzZXJ2aWNlLmNvcGlsb3RraXQuYWRkVG9vbCh0b29sKTtcbiAgICBcbiAgICAvLyBVcGRhdGUgcmVuZGVyIGlmIHByb3ZpZGVkXG4gICAgaWYgKGN1cnJlbnRSZW5kZXIpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRSZW5kZXJzID0gc2VydmljZS5jdXJyZW50UmVuZGVyVG9vbENhbGxzKCk7XG4gICAgICBjb25zdCByZW5kZXJFbnRyeTogQW5ndWxhclRvb2xDYWxsUmVuZGVyID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICByZW5kZXI6IGN1cnJlbnRSZW5kZXJcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBjdXJyZW50UmVuZGVycy5maW5kSW5kZXgoKHI6IFRvb2xDYWxsUmVuZGVyKSA9PiByLm5hbWUgPT09IG5hbWUpO1xuICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBbLi4uY3VycmVudFJlbmRlcnNdO1xuICAgICAgICB1cGRhdGVkW2V4aXN0aW5nSW5kZXhdID0gcmVuZGVyRW50cnk7XG4gICAgICAgIHNlcnZpY2Uuc2V0Q3VycmVudFJlbmRlclRvb2xDYWxscyh1cGRhdGVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcnZpY2Uuc2V0Q3VycmVudFJlbmRlclRvb2xDYWxscyhbLi4uY3VycmVudFJlbmRlcnMsIHJlbmRlckVudHJ5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlzUmVnaXN0ZXJlZCA9IHRydWU7XG4gIH07XG4gIFxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGlmIChpc1JlZ2lzdGVyZWQpIHtcbiAgICAgIHJlbW92ZUZyb250ZW5kVG9vbChzZXJ2aWNlLCBuYW1lKTtcbiAgICAgIGlzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgXG4gIC8vIEluaXRpYWwgc2V0dXBcbiAgdXBkYXRlKCk7XG4gIFxuICAvLyBSZWdpc3RlciBjbGVhbnVwXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KGRlc3Ryb3kpO1xuICBcbiAgcmV0dXJuIHsgdXBkYXRlLCBkZXN0cm95IH07XG59Il19
|