@fairspec/agent 0.9.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/package.json +1 -1
- package/build/server.js +3 -3
- package/build/tools/data/validate.d.ts +5 -5
- package/build/tools/dataSchema/infer.d.ts +6 -6
- package/build/tools/dataSchema/infer.js +4 -4
- package/build/tools/dataSchema/infer.spec.js +10 -10
- package/build/tools/dataset/infer.d.ts +10 -10
- package/build/tools/dataset/infer.spec.js +7 -7
- package/build/tools/dataset/validate.d.ts +5 -5
- package/build/tools/{dialect → fileDialect}/infer.d.ts +8 -8
- package/build/tools/fileDialect/infer.js +19 -0
- package/build/tools/fileDialect/infer.spec.js +140 -0
- package/build/tools/table/query.d.ts +5 -5
- package/build/tools/table/query.spec.js +7 -7
- package/build/tools/table/validate.d.ts +5 -5
- package/build/tools/tableSchema/infer.d.ts +6 -6
- package/build/tools/tableSchema/infer.js +5 -5
- package/build/tools/tableSchema/infer.spec.js +34 -34
- package/package.json +2 -2
- package/build/tools/dialect/infer.js +0 -19
- package/build/tools/dialect/infer.spec.js +0 -140
- /package/build/tools/{dialect → fileDialect}/infer.spec.d.ts +0 -0
|
@@ -11,16 +11,16 @@ describe("inferTableSchemaTool", () => {
|
|
|
11
11
|
});
|
|
12
12
|
it("infers schema from CSV file", async () => {
|
|
13
13
|
const path = await writeTempFile("id,name,age\n1,alice,30\n2,bob,25");
|
|
14
|
-
const resource = { data: path,
|
|
14
|
+
const resource = { data: path, fileDialect: { format: "csv" } };
|
|
15
15
|
const result = await inferTableSchemaTool.execute?.({
|
|
16
16
|
resource,
|
|
17
17
|
}, {});
|
|
18
18
|
expect.assert(result);
|
|
19
19
|
expect.assert(!("error" in result));
|
|
20
|
-
expect(result.
|
|
21
|
-
expect(result.
|
|
22
|
-
expect(result.
|
|
23
|
-
expect(result.
|
|
20
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
21
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
22
|
+
expect(result.tableSchema?.properties?.name?.type).toBe("string");
|
|
23
|
+
expect(result.tableSchema?.properties?.age?.type).toBe("integer");
|
|
24
24
|
});
|
|
25
25
|
it("infers schema from inline object data", async () => {
|
|
26
26
|
const resource = {
|
|
@@ -34,10 +34,10 @@ describe("inferTableSchemaTool", () => {
|
|
|
34
34
|
}, {});
|
|
35
35
|
expect.assert(result);
|
|
36
36
|
expect.assert(!("error" in result));
|
|
37
|
-
expect(result.
|
|
38
|
-
expect(result.
|
|
39
|
-
expect(result.
|
|
40
|
-
expect(result.
|
|
37
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
38
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
39
|
+
expect(result.tableSchema?.properties?.name?.type).toBe("string");
|
|
40
|
+
expect(result.tableSchema?.properties?.age?.type).toBe("integer");
|
|
41
41
|
});
|
|
42
42
|
it("infers different field types correctly", async () => {
|
|
43
43
|
const resource = {
|
|
@@ -51,11 +51,11 @@ describe("inferTableSchemaTool", () => {
|
|
|
51
51
|
}, {});
|
|
52
52
|
expect.assert(result);
|
|
53
53
|
expect.assert(!("error" in result));
|
|
54
|
-
expect(result.
|
|
55
|
-
expect(result.
|
|
56
|
-
expect(result.
|
|
57
|
-
expect(result.
|
|
58
|
-
expect(result.
|
|
54
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
55
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
56
|
+
expect(result.tableSchema?.properties?.name?.type).toBe("string");
|
|
57
|
+
expect(result.tableSchema?.properties?.score?.type).toBe("number");
|
|
58
|
+
expect(result.tableSchema?.properties?.active?.type).toBe("boolean");
|
|
59
59
|
});
|
|
60
60
|
it("infers date fields from strings", async () => {
|
|
61
61
|
const resource = {
|
|
@@ -69,11 +69,11 @@ describe("inferTableSchemaTool", () => {
|
|
|
69
69
|
}, {});
|
|
70
70
|
expect.assert(result);
|
|
71
71
|
expect.assert(!("error" in result));
|
|
72
|
-
expect(result.
|
|
73
|
-
expect(result.
|
|
74
|
-
expect(result.
|
|
75
|
-
expect(result.
|
|
76
|
-
expect(result.
|
|
72
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
73
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
74
|
+
expect(result.tableSchema?.properties?.name?.type).toBe("string");
|
|
75
|
+
expect(result.tableSchema?.properties?.created?.type).toBe("string");
|
|
76
|
+
expect(result.tableSchema?.properties?.created?.format).toBe("date");
|
|
77
77
|
});
|
|
78
78
|
it("respects sampleRows option", async () => {
|
|
79
79
|
const resource = {
|
|
@@ -88,9 +88,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
88
88
|
}, {});
|
|
89
89
|
expect.assert(result);
|
|
90
90
|
expect.assert(!("error" in result));
|
|
91
|
-
expect(result.
|
|
92
|
-
expect(result.
|
|
93
|
-
expect(result.
|
|
91
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
92
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
93
|
+
expect(result.tableSchema?.properties?.name?.type).toBe("string");
|
|
94
94
|
});
|
|
95
95
|
it("handles empty data", async () => {
|
|
96
96
|
const resource = {
|
|
@@ -101,7 +101,7 @@ describe("inferTableSchemaTool", () => {
|
|
|
101
101
|
}, {});
|
|
102
102
|
expect.assert(result);
|
|
103
103
|
expect.assert(!("error" in result));
|
|
104
|
-
expect(result.
|
|
104
|
+
expect(result.tableSchema).toBeUndefined();
|
|
105
105
|
});
|
|
106
106
|
it("handles single row data", async () => {
|
|
107
107
|
const resource = {
|
|
@@ -112,9 +112,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
112
112
|
}, {});
|
|
113
113
|
expect.assert(result);
|
|
114
114
|
expect.assert(!("error" in result));
|
|
115
|
-
expect(result.
|
|
116
|
-
expect(result.
|
|
117
|
-
expect(result.
|
|
115
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
116
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
117
|
+
expect(result.tableSchema?.properties?.name?.type).toBe("string");
|
|
118
118
|
});
|
|
119
119
|
it("respects columnTypes option", async () => {
|
|
120
120
|
const resource = {
|
|
@@ -129,9 +129,9 @@ describe("inferTableSchemaTool", () => {
|
|
|
129
129
|
}, {});
|
|
130
130
|
expect.assert(result);
|
|
131
131
|
expect.assert(!("error" in result));
|
|
132
|
-
expect(result.
|
|
133
|
-
expect(result.
|
|
134
|
-
expect(result.
|
|
132
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
133
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
134
|
+
expect(result.tableSchema?.properties?.value?.type).toBe("integer");
|
|
135
135
|
});
|
|
136
136
|
it("handles time fields", async () => {
|
|
137
137
|
const resource = {
|
|
@@ -145,10 +145,10 @@ describe("inferTableSchemaTool", () => {
|
|
|
145
145
|
}, {});
|
|
146
146
|
expect.assert(result);
|
|
147
147
|
expect.assert(!("error" in result));
|
|
148
|
-
expect(result.
|
|
149
|
-
expect(result.
|
|
150
|
-
expect(result.
|
|
151
|
-
expect(result.
|
|
148
|
+
expect(result.tableSchema?.properties).toBeDefined();
|
|
149
|
+
expect(result.tableSchema?.properties?.id?.type).toBe("integer");
|
|
150
|
+
expect(result.tableSchema?.properties?.time?.type).toBe("string");
|
|
151
|
+
expect(result.tableSchema?.properties?.time?.format).toBe("time");
|
|
152
152
|
});
|
|
153
153
|
});
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlU2NoZW1hL2luZmVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFakQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDckQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3JELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN0RCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDckUsTUFBTSxRQUFRLEdBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBRXJFLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JB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LElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM5RCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBpbmZlclRhYmxlU2NoZW1hVG9vbCB9IGZyb20gXCIuL2luZmVyLnRzXCJcblxuZGVzY3JpYmUoXCJpbmZlclRhYmxlU2NoZW1hVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuaWQpLnRvQmUoXCJpbmZlci10YWJsZS1zY2hlbWFcIilcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuZGVzY3JpcHRpb24pLnRvQmVUcnV0aHkoKVxuICAgIGV4cGVjdChpbmZlclRhYmxlU2NoZW1hVG9vbC5pbnB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLm91dHB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGUpLnRvQmVUeXBlT2YoXCJmdW5jdGlvblwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIENTViBmaWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcImlkLG5hbWUsYWdlXFxuMSxhbGljZSwzMFxcbjIsYm9iLDI1XCIpXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/Lm5hbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uYWdlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIGlubGluZSBvYmplY3QgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIGFnZTogMzAgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgYWdlOiAyNSB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmFnZT8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgfSlcblxuICBpdChcImluZmVycyBkaWZmZXJlbnQgZmllbGQgdHlwZXMgY29ycmVjdGx5XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbXG4gICAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiwgc2NvcmU6IDk1LjUsIGFjdGl2ZTogdHJ1ZSB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBzY29yZTogODcuMywgYWN0aXZlOiBmYWxzZSB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LnNjb3JlPy50eXBlKS50b0JlKFwibnVtYmVyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmFjdGl2ZT8udHlwZSkudG9CZShcImJvb2xlYW5cIilcbiAgfSlcblxuICBpdChcImluZmVycyBkYXRlIGZpZWxkcyBmcm9tIHN0cmluZ3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDFcIiB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDJcIiB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmNyZWF0ZWQ/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uY3JlYXRlZD8uZm9ybWF0KS50b0JlKFwiZGF0ZVwiKVxuICB9KVxuXG4gIGl0KFwicmVzcGVjdHMgc2FtcGxlUm93cyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IEFycmF5LmZyb20oeyBsZW5ndGg6IDEwMDAgfSwgKF8sIGkpID0+ICh7XG4gICAgICAgIGlkOiBpLFxuICAgICAgICBuYW1lOiBgdXNlciR7aX1gLFxuICAgICAgfSkpLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIG9wdGlvbnM6IHsgc2FtcGxlUm93czogMTAgfSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8ubmFtZT8udHlwZSkudG9CZShcInN0cmluZ1wiKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBlbXB0eSBkYXRhXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIHNpbmdsZSByb3cgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW3sgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuc2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gIH0pXG5cbiAgaXQoXCJyZXNwZWN0cyBjb2x1bW5UeXBlcyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogXCIxMjNcIiwgdmFsdWU6IFwiNDU2XCIgfSxcbiAgICAgICAgeyBpZDogXCI3ODlcIiwgdmFsdWU6IFwiMDEyXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgb3B0aW9uczogeyBjb2x1bW5UeXBlczogeyBpZDogXCJpbnRlZ2VyXCIsIHZhbHVlOiBcImludGVnZXJcIiB9IH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LnZhbHVlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyB0aW1lIGZpZWxkc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCB0aW1lOiBcIjE0OjMwOjAwXCIgfSxcbiAgICAgICAgeyBpZDogMiwgdGltZTogXCIwOToxNTozMFwiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8uaWQ/LnR5cGUpLnRvQmUoXCJpbnRlZ2VyXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5zY2hlbWE/LnByb3BlcnRpZXM/LnRpbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnNjaGVtYT8ucHJvcGVydGllcz8udGltZT8uZm9ybWF0KS50b0JlKFwidGltZVwiKVxuICB9KVxufSlcbiJdfQ==
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlU2NoZW1hL2luZmVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFakQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUMxRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDckQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3JELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN0RCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDckUsTUFBTSxRQUFRLEdBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBRXpFLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JB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LElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNqRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuRSxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBpbmZlclRhYmxlU2NoZW1hVG9vbCB9IGZyb20gXCIuL2luZmVyLnRzXCJcblxuZGVzY3JpYmUoXCJpbmZlclRhYmxlU2NoZW1hVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuaWQpLnRvQmUoXCJpbmZlci10YWJsZS1zY2hlbWFcIilcbiAgICBleHBlY3QoaW5mZXJUYWJsZVNjaGVtYVRvb2wuZGVzY3JpcHRpb24pLnRvQmVUcnV0aHkoKVxuICAgIGV4cGVjdChpbmZlclRhYmxlU2NoZW1hVG9vbC5pbnB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLm91dHB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGUpLnRvQmVUeXBlT2YoXCJmdW5jdGlvblwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIENTViBmaWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcImlkLG5hbWUsYWdlXFxuMSxhbGljZSwzMFxcbjIsYm9iLDI1XCIpXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBmaWxlRGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcz8uYWdlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIHNjaGVtYSBmcm9tIGlubGluZSBvYmplY3QgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIGFnZTogMzAgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgYWdlOiAyNSB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcz8uYWdlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIGRpZmZlcmVudCBmaWVsZCB0eXBlcyBjb3JyZWN0bHlcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBzY29yZTogOTUuNSwgYWN0aXZlOiB0cnVlIH0sXG4gICAgICAgIHsgaWQ6IDIsIG5hbWU6IFwiYm9iXCIsIHNjb3JlOiA4Ny4zLCBhY3RpdmU6IGZhbHNlIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/Lm5hbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5zY29yZT8udHlwZSkudG9CZShcIm51bWJlclwiKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LmFjdGl2ZT8udHlwZSkudG9CZShcImJvb2xlYW5cIilcbiAgfSlcblxuICBpdChcImluZmVycyBkYXRlIGZpZWxkcyBmcm9tIHN0cmluZ3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDFcIiB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBjcmVhdGVkOiBcIjIwMjQtMDEtMDJcIiB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcz8uY3JlYXRlZD8udHlwZSkudG9CZShcInN0cmluZ1wiKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LmNyZWF0ZWQ/LmZvcm1hdCkudG9CZShcImRhdGVcIilcbiAgfSlcblxuICBpdChcInJlc3BlY3RzIHNhbXBsZVJvd3Mgb3B0aW9uXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMDAwIH0sIChfLCBpKSA9PiAoe1xuICAgICAgICBpZDogaSxcbiAgICAgICAgbmFtZTogYHVzZXIke2l9YCxcbiAgICAgIH0pKSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBvcHRpb25zOiB7IHNhbXBsZVJvd3M6IDEwIH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/Lm5hbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgfSlcblxuICBpdChcImhhbmRsZXMgZW1wdHkgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIHNpbmdsZSByb3cgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW3sgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlclRhYmxlU2NoZW1hVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKClcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5pZD8udHlwZSkudG9CZShcImludGVnZXJcIilcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy5uYW1lPy50eXBlKS50b0JlKFwic3RyaW5nXCIpXG4gIH0pXG5cbiAgaXQoXCJyZXNwZWN0cyBjb2x1bW5UeXBlcyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogXCIxMjNcIiwgdmFsdWU6IFwiNDU2XCIgfSxcbiAgICAgICAgeyBpZDogXCI3ODlcIiwgdmFsdWU6IFwiMDEyXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJUYWJsZVNjaGVtYVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgb3B0aW9uczogeyBjb2x1bW5UeXBlczogeyBpZDogXCJpbnRlZ2VyXCIsIHZhbHVlOiBcImludGVnZXJcIiB9IH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LnZhbHVlPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyB0aW1lIGZpZWxkc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCB0aW1lOiBcIjE0OjMwOjAwXCIgfSxcbiAgICAgICAgeyBpZDogMiwgdGltZTogXCIwOToxNTozMFwiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyVGFibGVTY2hlbWFUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC50YWJsZVNjaGVtYT8ucHJvcGVydGllcykudG9CZURlZmluZWQoKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LmlkPy50eXBlKS50b0JlKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQudGFibGVTY2hlbWE/LnByb3BlcnRpZXM/LnRpbWU/LnR5cGUpLnRvQmUoXCJzdHJpbmdcIilcbiAgICBleHBlY3QocmVzdWx0LnRhYmxlU2NoZW1hPy5wcm9wZXJ0aWVzPy50aW1lPy5mb3JtYXQpLnRvQmUoXCJ0aW1lXCIpXG4gIH0pXG59KVxuIl19
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fairspec/agent",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.10.0",
|
|
5
5
|
"exports": "./build/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"files": [
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@mastra/core": "^1.2.0",
|
|
31
31
|
"@mastra/mcp": "^1.0.0",
|
|
32
32
|
"zod": "^4.2.1",
|
|
33
|
-
"@fairspec/library": "0.
|
|
33
|
+
"@fairspec/library": "0.10.0"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "tsc",
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Dialect, InferDialectOptions, inferDialect, Resource, } from "@fairspec/library";
|
|
2
|
-
import { createTool } from "@mastra/core/tools";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
export const inferDialectTool = createTool({
|
|
5
|
-
id: "infer-dialect",
|
|
6
|
-
description: "Infer the dialect (format and format-specific properties) from a resource. Analyzes the data to determine CSV delimiters, JSON structure, etc.",
|
|
7
|
-
inputSchema: z.object({
|
|
8
|
-
resource: Resource.describe("The resource to infer dialect from"),
|
|
9
|
-
options: InferDialectOptions.optional().describe("Dialect inference options"),
|
|
10
|
-
}),
|
|
11
|
-
outputSchema: z.object({
|
|
12
|
-
dialect: Dialect.optional(),
|
|
13
|
-
}),
|
|
14
|
-
execute: async (input) => {
|
|
15
|
-
const dialect = await inferDialect(input.resource, input.options);
|
|
16
|
-
return { dialect };
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90b29scy9kaWFsZWN0L2luZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixRQUFRLEdBQ1QsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7SUFDekMsRUFBRSxFQUFFLGVBQWU7SUFDbkIsV0FBVyxFQUNULGdKQUFnSjtJQUNsSixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQztRQUNqRSxPQUFPLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUM5QywyQkFBMkIsQ0FDNUI7S0FDRixDQUFDO0lBQ0YsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDckIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUU7S0FDNUIsQ0FBQztJQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUMsS0FBSyxFQUFDLEVBQUU7UUFDckIsTUFBTSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3BCLENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaWFsZWN0LFxuICBJbmZlckRpYWxlY3RPcHRpb25zLFxuICBpbmZlckRpYWxlY3QsXG4gIFJlc291cmNlLFxufSBmcm9tIFwiQGZhaXJzcGVjL2xpYnJhcnlcIlxuaW1wb3J0IHsgY3JlYXRlVG9vbCB9IGZyb20gXCJAbWFzdHJhL2NvcmUvdG9vbHNcIlxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIlxuXG5leHBvcnQgY29uc3QgaW5mZXJEaWFsZWN0VG9vbCA9IGNyZWF0ZVRvb2woe1xuICBpZDogXCJpbmZlci1kaWFsZWN0XCIsXG4gIGRlc2NyaXB0aW9uOlxuICAgIFwiSW5mZXIgdGhlIGRpYWxlY3QgKGZvcm1hdCBhbmQgZm9ybWF0LXNwZWNpZmljIHByb3BlcnRpZXMpIGZyb20gYSByZXNvdXJjZS4gQW5hbHl6ZXMgdGhlIGRhdGEgdG8gZGV0ZXJtaW5lIENTViBkZWxpbWl0ZXJzLCBKU09OIHN0cnVjdHVyZSwgZXRjLlwiLFxuICBpbnB1dFNjaGVtYTogei5vYmplY3Qoe1xuICAgIHJlc291cmNlOiBSZXNvdXJjZS5kZXNjcmliZShcIlRoZSByZXNvdXJjZSB0byBpbmZlciBkaWFsZWN0IGZyb21cIiksXG4gICAgb3B0aW9uczogSW5mZXJEaWFsZWN0T3B0aW9ucy5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJEaWFsZWN0IGluZmVyZW5jZSBvcHRpb25zXCIsXG4gICAgKSxcbiAgfSksXG4gIG91dHB1dFNjaGVtYTogei5vYmplY3Qoe1xuICAgIGRpYWxlY3Q6IERpYWxlY3Qub3B0aW9uYWwoKSxcbiAgfSksXG4gIGV4ZWN1dGU6IGFzeW5jIGlucHV0ID0+IHtcbiAgICBjb25zdCBkaWFsZWN0ID0gYXdhaXQgaW5mZXJEaWFsZWN0KGlucHV0LnJlc291cmNlLCBpbnB1dC5vcHRpb25zKVxuICAgIHJldHVybiB7IGRpYWxlY3QgfVxuICB9LFxufSlcbiJdfQ==
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { writeTempFile } from "@fairspec/library";
|
|
2
|
-
import { describe, expect, it } from "vitest";
|
|
3
|
-
import { inferDialectTool } from "./infer.js";
|
|
4
|
-
describe("inferDialectTool", () => {
|
|
5
|
-
it("validates tool structure", () => {
|
|
6
|
-
expect(inferDialectTool.id).toBe("infer-dialect");
|
|
7
|
-
expect(inferDialectTool.description).toBeTruthy();
|
|
8
|
-
expect(inferDialectTool.inputSchema).toBeTruthy();
|
|
9
|
-
expect(inferDialectTool.outputSchema).toBeTruthy();
|
|
10
|
-
expect(inferDialectTool.execute).toBeTypeOf("function");
|
|
11
|
-
});
|
|
12
|
-
it("infers CSV format", async () => {
|
|
13
|
-
const path = await writeTempFile("id,name,age\n1,alice,25\n2,bob,30");
|
|
14
|
-
const resource = { data: path, dialect: { format: "csv" } };
|
|
15
|
-
const result = await inferDialectTool.execute?.({
|
|
16
|
-
resource,
|
|
17
|
-
}, {});
|
|
18
|
-
expect.assert(result);
|
|
19
|
-
expect.assert(!("error" in result));
|
|
20
|
-
expect(result.dialect).toEqual({
|
|
21
|
-
format: "csv",
|
|
22
|
-
delimiter: ",",
|
|
23
|
-
headerRows: [1],
|
|
24
|
-
lineTerminator: "\n",
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
it("infers TSV format", async () => {
|
|
28
|
-
const path = await writeTempFile("id\tname\tage\n1\talice\t25\n2\tbob\t30");
|
|
29
|
-
const resource = { data: path, dialect: { format: "csv" } };
|
|
30
|
-
const result = await inferDialectTool.execute?.({
|
|
31
|
-
resource,
|
|
32
|
-
}, {});
|
|
33
|
-
expect.assert(result);
|
|
34
|
-
expect.assert(!("error" in result));
|
|
35
|
-
expect(result.dialect).toEqual({
|
|
36
|
-
format: "tsv",
|
|
37
|
-
headerRows: [1],
|
|
38
|
-
lineTerminator: "\n",
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
it("infers JSON format with array of objects", async () => {
|
|
42
|
-
const path = await writeTempFile(JSON.stringify([{ id: 1, name: "alice" }]));
|
|
43
|
-
const resource = { data: path, dialect: { format: "json" } };
|
|
44
|
-
const result = await inferDialectTool.execute?.({
|
|
45
|
-
resource,
|
|
46
|
-
}, {});
|
|
47
|
-
expect.assert(result);
|
|
48
|
-
expect.assert(!("error" in result));
|
|
49
|
-
expect(result.dialect).toEqual({
|
|
50
|
-
format: "json",
|
|
51
|
-
rowType: "object",
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
it("infers JSON format with array of arrays", async () => {
|
|
55
|
-
const path = await writeTempFile(JSON.stringify([
|
|
56
|
-
[1, "alice"],
|
|
57
|
-
[2, "bob"],
|
|
58
|
-
]));
|
|
59
|
-
const resource = { data: path, dialect: { format: "json" } };
|
|
60
|
-
const result = await inferDialectTool.execute?.({
|
|
61
|
-
resource,
|
|
62
|
-
}, {});
|
|
63
|
-
expect.assert(result);
|
|
64
|
-
expect.assert(!("error" in result));
|
|
65
|
-
expect(result.dialect?.format).toBe("json");
|
|
66
|
-
expect(result.dialect).toHaveProperty("rowType");
|
|
67
|
-
});
|
|
68
|
-
it("infers JSONL format", async () => {
|
|
69
|
-
const path = await writeTempFile('{"id":1,"name":"alice"}\n{"id":2,"name":"bob"}');
|
|
70
|
-
const resource = { data: path, dialect: { format: "jsonl" } };
|
|
71
|
-
const result = await inferDialectTool.execute?.({
|
|
72
|
-
resource,
|
|
73
|
-
}, {});
|
|
74
|
-
expect.assert(result);
|
|
75
|
-
expect.assert(!("error" in result));
|
|
76
|
-
expect(result.dialect?.format).toBe("jsonl");
|
|
77
|
-
});
|
|
78
|
-
it("infers CSV with different delimiter", async () => {
|
|
79
|
-
const path = await writeTempFile("id;name;age\n1;alice;25\n2;bob;30");
|
|
80
|
-
const resource = { data: path, dialect: { format: "csv" } };
|
|
81
|
-
const result = await inferDialectTool.execute?.({
|
|
82
|
-
resource,
|
|
83
|
-
}, {});
|
|
84
|
-
expect.assert(result);
|
|
85
|
-
expect.assert(!("error" in result));
|
|
86
|
-
expect(result.dialect).toMatchObject({
|
|
87
|
-
format: "csv",
|
|
88
|
-
delimiter: ";",
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
it("infers CSV without headers", async () => {
|
|
92
|
-
const path = await writeTempFile("1,alice,25\n2,bob,30");
|
|
93
|
-
const resource = { data: path, dialect: { format: "csv" } };
|
|
94
|
-
const result = await inferDialectTool.execute?.({
|
|
95
|
-
resource,
|
|
96
|
-
}, {});
|
|
97
|
-
expect.assert(result);
|
|
98
|
-
expect.assert(!("error" in result));
|
|
99
|
-
expect(result.dialect?.format).toBe("csv");
|
|
100
|
-
expect(result.dialect).toHaveProperty("delimiter");
|
|
101
|
-
});
|
|
102
|
-
it("returns undefined for inline data", async () => {
|
|
103
|
-
const resource = {
|
|
104
|
-
data: [{ id: 1 }],
|
|
105
|
-
};
|
|
106
|
-
const result = await inferDialectTool.execute?.({
|
|
107
|
-
resource,
|
|
108
|
-
}, {});
|
|
109
|
-
expect.assert(result);
|
|
110
|
-
expect.assert(!("error" in result));
|
|
111
|
-
expect(result.dialect).toBeUndefined();
|
|
112
|
-
});
|
|
113
|
-
it("respects sampleBytes option", async () => {
|
|
114
|
-
const largeData = Array.from({ length: 1000 }, (_, i) => `${i},row${i}`).join("\n");
|
|
115
|
-
const path = await writeTempFile(`id,name\n${largeData}`);
|
|
116
|
-
const resource = { data: path, dialect: { format: "csv" } };
|
|
117
|
-
const result = await inferDialectTool.execute?.({
|
|
118
|
-
resource,
|
|
119
|
-
options: { sampleBytes: 1000 },
|
|
120
|
-
}, {});
|
|
121
|
-
expect.assert(result);
|
|
122
|
-
expect.assert(!("error" in result));
|
|
123
|
-
expect(result.dialect?.format).toBe("csv");
|
|
124
|
-
});
|
|
125
|
-
it("infers dialect with provided format hint", async () => {
|
|
126
|
-
const path = await writeTempFile("id,name\n1,alice\n2,bob");
|
|
127
|
-
const resource = {
|
|
128
|
-
data: path,
|
|
129
|
-
dialect: { format: "csv" },
|
|
130
|
-
};
|
|
131
|
-
const result = await inferDialectTool.execute?.({
|
|
132
|
-
resource,
|
|
133
|
-
}, {});
|
|
134
|
-
expect.assert(result);
|
|
135
|
-
expect.assert(!("error" in result));
|
|
136
|
-
expect(result.dialect?.format).toBe("csv");
|
|
137
|
-
expect(result.dialect).toHaveProperty("delimiter");
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL2RpYWxlY3QvaW5mZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUU3QyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO0lBQ2hDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7UUFDbEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNqRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDakQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2pELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNsRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3pELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7UUFDckUsTUFBTSxRQUFRLEdBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFBO1FBRXJFLE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLENB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Q0FBQTtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFFbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3hELE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDM0QsTUFBTSxRQUFRLEdBQWE7WUFDekIsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1NBQzNCLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUM3QztZQUNFLFFBQVE7U0FDVCxFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDcEQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ3N2RGlhbGVjdCwgUmVzb3VyY2UgfSBmcm9tIFwiQGZhaXJzcGVjL2xpYnJhcnlcIlxuaW1wb3J0IHsgd3JpdGVUZW1wRmlsZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgaW5mZXJEaWFsZWN0VG9vbCB9IGZyb20gXCIuL2luZmVyLnRzXCJcblxuZGVzY3JpYmUoXCJpbmZlckRpYWxlY3RUb29sXCIsICgpID0+IHtcbiAgaXQoXCJ2YWxpZGF0ZXMgdG9vbCBzdHJ1Y3R1cmVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChpbmZlckRpYWxlY3RUb29sLmlkKS50b0JlKFwiaW5mZXItZGlhbGVjdFwiKVxuICAgIGV4cGVjdChpbmZlckRpYWxlY3RUb29sLmRlc2NyaXB0aW9uKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QoaW5mZXJEaWFsZWN0VG9vbC5pbnB1dFNjaGVtYSkudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KGluZmVyRGlhbGVjdFRvb2wub3V0cHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QoaW5mZXJEaWFsZWN0VG9vbC5leGVjdXRlKS50b0JlVHlwZU9mKFwiZnVuY3Rpb25cIilcbiAgfSlcblxuICBpdChcImluZmVycyBDU1YgZm9ybWF0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcImlkLG5hbWUsYWdlXFxuMSxhbGljZSwyNVxcbjIsYm9iLDMwXCIpXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmRpYWxlY3QpLnRvRXF1YWw8Q3N2RGlhbGVjdD4oe1xuICAgICAgZm9ybWF0OiBcImNzdlwiLFxuICAgICAgZGVsaW1pdGVyOiBcIixcIixcbiAgICAgIGhlYWRlclJvd3M6IFsxXSxcbiAgICAgIGxpbmVUZXJtaW5hdG9yOiBcIlxcblwiLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgVFNWIGZvcm1hdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoXCJpZFxcdG5hbWVcXHRhZ2VcXG4xXFx0YWxpY2VcXHQyNVxcbjJcXHRib2JcXHQzMFwiKVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogcGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlckRpYWxlY3RUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5kaWFsZWN0KS50b0VxdWFsKHtcbiAgICAgIGZvcm1hdDogXCJ0c3ZcIixcbiAgICAgIGhlYWRlclJvd3M6IFsxXSxcbiAgICAgIGxpbmVUZXJtaW5hdG9yOiBcIlxcblwiLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJpbmZlcnMgSlNPTiBmb3JtYXQgd2l0aCBhcnJheSBvZiBvYmplY3RzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShKU09OLnN0cmluZ2lmeShbeyBpZDogMSwgbmFtZTogXCJhbGljZVwiIH1dKSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IHBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImpzb25cIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmRpYWxlY3QpLnRvRXF1YWwoe1xuICAgICAgZm9ybWF0OiBcImpzb25cIixcbiAgICAgIHJvd1R5cGU6IFwib2JqZWN0XCIsXG4gICAgfSlcbiAgfSlcblxuICBpdChcImluZmVycyBKU09OIGZvcm1hdCB3aXRoIGFycmF5IG9mIGFycmF5c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoXG4gICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgIFsxLCBcImFsaWNlXCJdLFxuICAgICAgICBbMiwgXCJib2JcIl0sXG4gICAgICBdKSxcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJqc29uXCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbmZlckRpYWxlY3RUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5kaWFsZWN0Py5mb3JtYXQpLnRvQmUoXCJqc29uXCIpXG4gICAgZXhwZWN0KHJlc3VsdC5kaWFsZWN0KS50b0hhdmVQcm9wZXJ0eShcInJvd1R5cGVcIilcbiAgfSlcblxuICBpdChcImluZmVycyBKU09OTCBmb3JtYXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKFxuICAgICAgJ3tcImlkXCI6MSxcIm5hbWVcIjpcImFsaWNlXCJ9XFxue1wiaWRcIjoyLFwibmFtZVwiOlwiYm9iXCJ9JyxcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJqc29ubFwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuZGlhbGVjdD8uZm9ybWF0KS50b0JlKFwianNvbmxcIilcbiAgfSlcblxuICBpdChcImluZmVycyBDU1Ygd2l0aCBkaWZmZXJlbnQgZGVsaW1pdGVyXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShcImlkO25hbWU7YWdlXFxuMTthbGljZTsyNVxcbjI7Ym9iOzMwXCIpXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmRpYWxlY3QpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgZm9ybWF0OiBcImNzdlwiLFxuICAgICAgZGVsaW1pdGVyOiBcIjtcIixcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwiaW5mZXJzIENTViB3aXRob3V0IGhlYWRlcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKFwiMSxhbGljZSwyNVxcbjIsYm9iLDMwXCIpXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBwYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmRpYWxlY3Q/LmZvcm1hdCkudG9CZShcImNzdlwiKVxuICAgIGV4cGVjdChyZXN1bHQuZGlhbGVjdCkudG9IYXZlUHJvcGVydHkoXCJkZWxpbWl0ZXJcIilcbiAgfSlcblxuICBpdChcInJldHVybnMgdW5kZWZpbmVkIGZvciBpbmxpbmUgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW3sgaWQ6IDEgfV0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChyZXN1bHQuZGlhbGVjdCkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG5cbiAgaXQoXCJyZXNwZWN0cyBzYW1wbGVCeXRlcyBvcHRpb25cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGxhcmdlRGF0YSA9IEFycmF5LmZyb20oXG4gICAgICB7IGxlbmd0aDogMTAwMCB9LFxuICAgICAgKF8sIGkpID0+IGAke2l9LHJvdyR7aX1gLFxuICAgICkuam9pbihcIlxcblwiKVxuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGBpZCxuYW1lXFxuJHtsYXJnZURhdGF9YClcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IHBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5mZXJEaWFsZWN0VG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBvcHRpb25zOiB7IHNhbXBsZUJ5dGVzOiAxMDAwIH0sXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5kaWFsZWN0Py5mb3JtYXQpLnRvQmUoXCJjc3ZcIilcbiAgfSlcblxuICBpdChcImluZmVycyBkaWFsZWN0IHdpdGggcHJvdmlkZWQgZm9ybWF0IGhpbnRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKFwiaWQsbmFtZVxcbjEsYWxpY2VcXG4yLGJvYlwiKVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IHBhdGgsXG4gICAgICBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9LFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluZmVyRGlhbGVjdFRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QocmVzdWx0LmRpYWxlY3Q/LmZvcm1hdCkudG9CZShcImNzdlwiKVxuICAgIGV4cGVjdChyZXN1bHQuZGlhbGVjdCkudG9IYXZlUHJvcGVydHkoXCJkZWxpbWl0ZXJcIilcbiAgfSlcbn0pXG4iXX0=
|
|
File without changes
|