@rdfc/js-runner 2.0.0-alpha.10 → 2.0.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/.editorconfig +9 -0
  2. package/examples/echo/.idea/echo.iml +9 -0
  3. package/examples/echo/.idea/misc.xml +6 -0
  4. package/{.idea → examples/echo/.idea}/modules.xml +1 -1
  5. package/examples/echo/.idea/vcs.xml +7 -0
  6. package/examples/echo/.swls/config.json +1 -0
  7. package/examples/echo/index.ttl +3 -0
  8. package/examples/echo/minimal.ttl +90 -0
  9. package/examples/echo/shacl.ttl +9 -0
  10. package/examples/echo/shape.ttl +1339 -0
  11. package/examples/echo/test.ttl +11 -0
  12. package/examples/echo/untitled:/types/MyType.ttl +0 -0
  13. package/file:/home/silvius/Projects/mumo-pipeline/ldes/http_3A_2F_2Fdata.mumo.be_2Fstreams_2Fnodes_2Fdefault/root/index.trig +3 -0
  14. package/ldes/http_3A_2F_2Fdata.mumo.be_2Fstreams_2Fnodes_2Fdefault/root/index.trig +3 -0
  15. package/lib/client.js +2 -2
  16. package/lib/testUtils.d.ts +8 -8
  17. package/lib/testUtils.js +32 -32
  18. package/lib/tsconfig.tsbuildinfo +1 -1
  19. package/minimal.ttl +99 -0
  20. package/package.json +1 -1
  21. package/src/client.ts +15 -15
  22. package/src/testUtils.ts +140 -140
  23. package/.idea/LNKD.tech Editor.xml +0 -194
  24. package/.idea/codeStyles/Project.xml +0 -52
  25. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  26. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  27. package/.idea/js-runner.iml +0 -12
  28. package/.idea/vcs.xml +0 -6
  29. package/dist/args.d.ts +0 -4
  30. package/dist/args.js +0 -58
  31. package/dist/connectors/file.d.ts +0 -15
  32. package/dist/connectors/file.js +0 -89
  33. package/dist/connectors/http.d.ts +0 -14
  34. package/dist/connectors/http.js +0 -82
  35. package/dist/connectors/kafka.d.ts +0 -48
  36. package/dist/connectors/kafka.js +0 -68
  37. package/dist/connectors/ws.d.ts +0 -10
  38. package/dist/connectors/ws.js +0 -72
  39. package/dist/connectors.d.ts +0 -73
  40. package/dist/connectors.js +0 -168
  41. package/dist/index.cjs +0 -732
  42. package/dist/index.d.ts +0 -42
  43. package/dist/index.js +0 -83
  44. package/dist/tsconfig.tsbuildinfo +0 -1
  45. package/dist/util.d.ts +0 -71
  46. package/dist/util.js +0 -92
@@ -0,0 +1,11 @@
1
+ @prefix rdfc: <https://w3id.org/rdf-connect#>.
2
+ @prefix foaf: <http://xmlns.com/foaf/0.1/>.
3
+
4
+ [ ] foaf:knows [
5
+ foaf:name "Arthur";
6
+ foaf:img <img>;
7
+ foaf:knows <me>;
8
+ ];
9
+ foaf:name "Arthur".
10
+
11
+ <b> <c> <D>
File without changes
@@ -0,0 +1,3 @@
1
+ <../../index.trig> a <https://w3id.org/ldes#EventStream>.
2
+ <index.trig> a <https://w3id.org/tree#Node>;
3
+ <http://purl.org/dc/terms/isPartOf> <../../index.trig>.
@@ -0,0 +1,3 @@
1
+ <../../index.trig> a <https://w3id.org/ldes#EventStream>.
2
+ <index.trig> a <https://w3id.org/tree#Node>;
3
+ <http://purl.org/dc/terms/isPartOf> <../../index.trig>.
package/lib/client.js CHANGED
@@ -38,6 +38,6 @@ export async function start(addr, uri) {
38
38
  logger.info('All processors are finished');
39
39
  stream.end();
40
40
  client.close();
41
- process.exit(0);
41
+ setTimeout(() => process.exit(0), 500);
42
42
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sYUFBYSxDQUFBO0FBQ3pELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFakMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtJQUV4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xDLFVBQVUsRUFBRTtZQUNWLElBQUksWUFBWSxDQUFDO2dCQUNmLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQzthQUNuQyxDQUFDO1NBQ0g7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFL0IsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUV4RCxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGFBQXVDLENBQUE7SUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQ2xFO0lBQUEsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNYLElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFrQixLQUFLLENBQUE7WUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUNwQyxDQUFDO1lBRUQsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDckMsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUVKLE1BQU0sZUFBZSxDQUFBO0lBRXJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDWixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuaW1wb3J0IHsgUnVubmVyQ2xpZW50LCBSdW5uZXJNZXNzYWdlIH0gZnJvbSAnQHJkZmMvcHJvdG8nXG5pbXBvcnQgd2luc3RvbiBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHsgUnBjVHJhbnNwb3J0IH0gZnJvbSAnLi9sb2dnZXInXG5pbXBvcnQgeyBSdW5uZXIgfSBmcm9tICcuL3J1bm5lcidcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGFkZHI6IHN0cmluZywgdXJpOiBzdHJpbmcpIHtcbiAgY29uc3QgY2xpZW50ID0gbmV3IFJ1bm5lckNsaWVudChhZGRyLCBncnBjLmNyZWRlbnRpYWxzLmNyZWF0ZUluc2VjdXJlKCkpXG5cbiAgY29uc3QgbG9nZ2VyID0gd2luc3Rvbi5jcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IFtcbiAgICAgIG5ldyBScGNUcmFuc3BvcnQoe1xuICAgICAgICBlbnRpdGllczogW3VyaSwgJ2NsaSddLFxuICAgICAgICBzdHJlYW06IGNsaWVudC5sb2dTdHJlYW0oKCkgPT4ge30pLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSlcblxuICBjb25zdCBzdHJlYW0gPSBjbGllbnQuY29ubmVjdCgpXG5cbiAgbG9nZ2VyLmluZm8oJ0Nvbm5lY3RlZCB3aXRoIHNlcnZlciAnICsgYWRkcilcbiAgY29uc3Qgd3JpdGFibGUgPSBwcm9taXNpZnkoc3RyZWFtLndyaXRlLmJpbmQoc3RyZWFtKSlcbiAgY29uc3QgcnVubmVyID0gbmV3IFJ1bm5lcihjbGllbnQsIHdyaXRhYmxlLCB1cmksIGxvZ2dlcilcblxuICBhd2FpdCB3cml0YWJsZSh7IGlkZW50aWZ5OiB7IHVyaSB9IH0pXG5cbiAgbGV0IHByb2Nlc3NvcnNFbmQhOiAodjogdW5rbm93bikgPT4gdW5rbm93blxuICBjb25zdCBwcm9jZXNzb3JzRW5kZWQgPSBuZXcgUHJvbWlzZSgocmVzKSA9PiAocHJvY2Vzc29yc0VuZCA9IHJlcykpXG4gIDsoYXN5bmMgKCkgPT4ge1xuICAgIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygc3RyZWFtKSB7XG4gICAgICBjb25zdCBtc2c6IFJ1bm5lck1lc3NhZ2UgPSBjaHVua1xuICAgICAgaWYgKG1zZy5wcm9jKSB7XG4gICAgICAgIGF3YWl0IHJ1bm5lci5hZGRQcm9jZXNzb3IobXNnLnByb2MpXG4gICAgICB9XG4gICAgICBpZiAobXNnLnN0YXJ0KSB7XG4gICAgICAgIHJ1bm5lci5zdGFydCgpLnRoZW4ocHJvY2Vzc29yc0VuZClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgcnVubmVyLmhhbmRsZU9yY2hNZXNzYWdlKG1zZylcbiAgICB9XG5cbiAgICBsb2dnZXIuZXJyb3IoJ1N0cmVhbSBlbmRlZCcpXG4gIH0pKClcblxuICBhd2FpdCBwcm9jZXNzb3JzRW5kZWRcblxuICBsb2dnZXIuaW5mbygnQWxsIHByb2Nlc3NvcnMgYXJlIGZpbmlzaGVkJylcbiAgc3RyZWFtLmVuZCgpXG4gIGNsaWVudC5jbG9zZSgpXG4gIHByb2Nlc3MuZXhpdCgwKVxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sYUFBYSxDQUFBO0FBQ3pELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFakMsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtJQUV4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xDLFVBQVUsRUFBRTtZQUNWLElBQUksWUFBWSxDQUFDO2dCQUNmLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNwQyxDQUFDO1NBQ0g7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFL0IsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUV4RCxNQUFNLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGFBQXVDLENBQUE7SUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQ2hFO0lBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNaLElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFrQixLQUFLLENBQUE7WUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNyQyxDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUNwQyxDQUFDO1lBRUQsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDckMsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUVOLE1BQU0sZUFBZSxDQUFBO0lBRXJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtJQUMxQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDWixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDZCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJ1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCdcbmltcG9ydCB7IFJ1bm5lckNsaWVudCwgUnVubmVyTWVzc2FnZSB9IGZyb20gJ0ByZGZjL3Byb3RvJ1xuaW1wb3J0IHdpbnN0b24gZnJvbSAnd2luc3RvbidcbmltcG9ydCB7IFJwY1RyYW5zcG9ydCB9IGZyb20gJy4vbG9nZ2VyJ1xuaW1wb3J0IHsgUnVubmVyIH0gZnJvbSAnLi9ydW5uZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydChhZGRyOiBzdHJpbmcsIHVyaTogc3RyaW5nKSB7XG4gIGNvbnN0IGNsaWVudCA9IG5ldyBSdW5uZXJDbGllbnQoYWRkciwgZ3JwYy5jcmVkZW50aWFscy5jcmVhdGVJbnNlY3VyZSgpKVxuXG4gIGNvbnN0IGxvZ2dlciA9IHdpbnN0b24uY3JlYXRlTG9nZ2VyKHtcbiAgICB0cmFuc3BvcnRzOiBbXG4gICAgICBuZXcgUnBjVHJhbnNwb3J0KHtcbiAgICAgICAgZW50aXRpZXM6IFt1cmksICdjbGknXSxcbiAgICAgICAgc3RyZWFtOiBjbGllbnQubG9nU3RyZWFtKCgpID0+IHsgfSksXG4gICAgICB9KSxcbiAgICBdLFxuICB9KVxuXG4gIGNvbnN0IHN0cmVhbSA9IGNsaWVudC5jb25uZWN0KClcblxuICBsb2dnZXIuaW5mbygnQ29ubmVjdGVkIHdpdGggc2VydmVyICcgKyBhZGRyKVxuICBjb25zdCB3cml0YWJsZSA9IHByb21pc2lmeShzdHJlYW0ud3JpdGUuYmluZChzdHJlYW0pKVxuICBjb25zdCBydW5uZXIgPSBuZXcgUnVubmVyKGNsaWVudCwgd3JpdGFibGUsIHVyaSwgbG9nZ2VyKVxuXG4gIGF3YWl0IHdyaXRhYmxlKHsgaWRlbnRpZnk6IHsgdXJpIH0gfSlcblxuICBsZXQgcHJvY2Vzc29yc0VuZCE6ICh2OiB1bmtub3duKSA9PiB1bmtub3duXG4gIGNvbnN0IHByb2Nlc3NvcnNFbmRlZCA9IG5ldyBQcm9taXNlKChyZXMpID0+IChwcm9jZXNzb3JzRW5kID0gcmVzKSlcbiAgICA7IChhc3luYyAoKSA9PiB7XG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHN0cmVhbSkge1xuICAgICAgICBjb25zdCBtc2c6IFJ1bm5lck1lc3NhZ2UgPSBjaHVua1xuICAgICAgICBpZiAobXNnLnByb2MpIHtcbiAgICAgICAgICBhd2FpdCBydW5uZXIuYWRkUHJvY2Vzc29yKG1zZy5wcm9jKVxuICAgICAgICB9XG4gICAgICAgIGlmIChtc2cuc3RhcnQpIHtcbiAgICAgICAgICBydW5uZXIuc3RhcnQoKS50aGVuKHByb2Nlc3NvcnNFbmQpXG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBydW5uZXIuaGFuZGxlT3JjaE1lc3NhZ2UobXNnKVxuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZXJyb3IoJ1N0cmVhbSBlbmRlZCcpXG4gICAgfSkoKVxuXG4gIGF3YWl0IHByb2Nlc3NvcnNFbmRlZFxuXG4gIGxvZ2dlci5pbmZvKCdBbGwgcHJvY2Vzc29ycyBhcmUgZmluaXNoZWQnKVxuICBzdHJlYW0uZW5kKClcbiAgY2xpZW50LmNsb3NlKClcbiAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDUwMClcbn1cbiJdfQ==
@@ -1,11 +1,11 @@
1
- import { DataChunk, RunnerClient } from "@rdfc/proto";
2
- import { ClientReadableStream } from "@grpc/grpc-js";
3
- import winston from "winston";
4
- import { WriterInstance } from "./writer.js";
5
- import { ReaderInstance } from "./reader.js";
6
- import { Processor } from "./processor.js";
7
- import { FullProc } from "./runner.js";
8
- import { Quad } from "@rdfjs/types";
1
+ import { DataChunk, RunnerClient } from '@rdfc/proto';
2
+ import { ClientReadableStream } from '@grpc/grpc-js';
3
+ import winston from 'winston';
4
+ import { WriterInstance } from './writer.js';
5
+ import { ReaderInstance } from './reader.js';
6
+ import { Processor } from './processor.js';
7
+ import { FullProc } from './runner.js';
8
+ import { Quad } from '@rdfjs/types';
9
9
  export declare function getProcessorShape(baseIRI?: string): Promise<import("rdf-lens").Shapes>;
10
10
  export declare class TestClient extends RunnerClient {
11
11
  next: (stream: ClientReadableStream<DataChunk>) => unknown;
package/lib/testUtils.js CHANGED
@@ -1,17 +1,17 @@
1
- import { RunnerClient } from "@rdfc/proto";
2
- import * as grpc from "@grpc/grpc-js";
3
- import { ClientReadableStreamImpl } from "./reexports.js";
4
- import { extractShapes } from "rdf-lens";
5
- import { NamedNode, Parser, Writer } from "n3";
6
- import { readFile } from "fs/promises";
7
- import winston, { createLogger } from "winston";
8
- import { WriterInstance } from "./writer.js";
9
- import { ReaderInstance } from "./reader.js";
10
- import { Runner } from "./runner.js";
11
- import { createTermNamespace } from "@treecg/types";
12
- import { expect } from "vitest";
13
- export async function getProcessorShape(baseIRI = process.cwd() + "/node_modules/@rdfc/js-runner/index.ttl") {
14
- const configFile = await readFile(baseIRI, { encoding: "utf8" });
1
+ import { RunnerClient } from '@rdfc/proto';
2
+ import * as grpc from '@grpc/grpc-js';
3
+ import { ClientReadableStreamImpl } from './reexports.js';
4
+ import { extractShapes } from 'rdf-lens';
5
+ import { NamedNode, Parser, Writer } from 'n3';
6
+ import { readFile } from 'fs/promises';
7
+ import winston, { createLogger } from 'winston';
8
+ import { WriterInstance } from './writer.js';
9
+ import { ReaderInstance } from './reader.js';
10
+ import { Runner } from './runner.js';
11
+ import { createTermNamespace } from '@treecg/types';
12
+ import { expect } from 'vitest';
13
+ export async function getProcessorShape(baseIRI = process.cwd() + '/node_modules/@rdfc/js-runner/index.ttl') {
14
+ const configFile = await readFile(baseIRI, { encoding: 'utf8' });
15
15
  const configQuads = new Parser().parse(configFile);
16
16
  const shapes = extractShapes(configQuads);
17
17
  return shapes;
@@ -19,7 +19,7 @@ export async function getProcessorShape(baseIRI = process.cwd() + "/node_modules
19
19
  export class TestClient extends RunnerClient {
20
20
  next;
21
21
  constructor() {
22
- super("localhost:5400", grpc.credentials.createInsecure());
22
+ super('localhost:5400', grpc.credentials.createInsecure());
23
23
  }
24
24
  nextStream() {
25
25
  return new Promise((res) => (this.next = res));
@@ -38,10 +38,10 @@ export async function one(iter) {
38
38
  }
39
39
  }
40
40
  export const client = new TestClient();
41
- export const uri = "someUri";
41
+ export const uri = 'someUri';
42
42
  export const logger = createLogger({
43
43
  transports: new winston.transports.Console({
44
- level: process.env["DEBUG"] || "info",
44
+ level: process.env['DEBUG'] || 'info',
45
45
  }),
46
46
  });
47
47
  export function createWriter(iri = uri) {
@@ -85,12 +85,12 @@ const shapeQuads = `
85
85
  sh:datatype xsd:string;
86
86
  ].
87
87
  `;
88
- const OWL = createTermNamespace("http://www.w3.org/2002/07/owl#", "imports");
88
+ const OWL = createTermNamespace('http://www.w3.org/2002/07/owl#', 'imports');
89
89
  const processorShapes = extractShapes(new Parser().parse(shapeQuads));
90
- const base = "https://w3id.org/rdf-connect#";
90
+ const base = 'https://w3id.org/rdf-connect#';
91
91
  export async function importFile(file) {
92
92
  const done = new Set();
93
- const todo = [new URL("file://" + file)];
93
+ const todo = [new URL('file://' + file)];
94
94
  const quads = [];
95
95
  let item = todo.pop();
96
96
  while (item !== undefined) {
@@ -99,10 +99,10 @@ export async function importFile(file) {
99
99
  continue;
100
100
  }
101
101
  done.add(item.toString());
102
- if (item.protocol !== "file:") {
103
- throw "No supported protocol " + item.protocol;
102
+ if (item.protocol !== 'file:') {
103
+ throw 'No supported protocol ' + item.protocol;
104
104
  }
105
- const txt = await readFile(item.pathname, { encoding: "utf8" });
105
+ const txt = await readFile(item.pathname, { encoding: 'utf8' });
106
106
  const extras = new Parser({ baseIRI: item.toString() }).parse(txt);
107
107
  for (const o of extras
108
108
  .filter((x) => x.subject.value === item?.toString() &&
@@ -115,9 +115,9 @@ export async function importFile(file) {
115
115
  }
116
116
  return quads;
117
117
  }
118
- export async function getProc(config, ty, configLocation, uri = "http://example.com/ns#processor") {
118
+ export async function getProc(config, ty, configLocation, uri = 'http://example.com/ns#processor') {
119
119
  const configQuads = await importFile(configLocation);
120
- const procConfig = processorShapes.lenses["JsProcessorShape"].execute({
120
+ const procConfig = processorShapes.lenses['JsProcessorShape'].execute({
121
121
  id: new NamedNode(base + ty),
122
122
  quads: configQuads,
123
123
  });
@@ -125,26 +125,26 @@ export async function getProc(config, ty, configLocation, uri = "http://example.
125
125
  const write = async (x) => {
126
126
  msgs.push(x);
127
127
  };
128
- const runner = new Runner(new TestClient(), write, "http://example.com/ns#", logger);
128
+ const runner = new Runner(new TestClient(), write, 'http://example.com/ns#', logger);
129
129
  configQuads.push(...new Parser().parse(config));
130
130
  await runner.handleOrchMessage({
131
131
  pipeline: new Writer().quadsToString(configQuads),
132
132
  });
133
133
  const proc = await runner.addProcessor({
134
134
  config: JSON.stringify(procConfig),
135
- arguments: "",
135
+ arguments: '',
136
136
  uri,
137
137
  });
138
138
  return proc;
139
139
  }
140
140
  export async function checkProcDefinition(file, n) {
141
141
  const quads = await importFile(file);
142
- const procConfig = (processorShapes.lenses["JsProcessorShape"].execute({
142
+ const procConfig = (processorShapes.lenses['JsProcessorShape'].execute({
143
143
  id: new NamedNode(base + n),
144
144
  quads: quads,
145
145
  }));
146
- expect(procConfig.file, n + " has file").toBeDefined();
147
- expect(procConfig.location, n + " has location").toBeDefined();
148
- expect(procConfig.clazz, n + " has clazz").toBeDefined();
146
+ expect(procConfig.file, n + ' has file').toBeDefined();
147
+ expect(procConfig.location, n + ' has location').toBeDefined();
148
+ expect(procConfig.clazz, n + ' has clazz').toBeDefined();
149
149
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBRXRDLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFMUMsT0FBTyxFQUFZLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNuQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLHlDQUF5QztJQUVuRSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENB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QU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBSTtRQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDbEMsU0FBUyxFQUFFLEVBQUU7UUFDYixHQUFHO0tBQ04sQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsSUFBWSxFQUFFLENBQVM7SUFDN0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsTUFBTSxVQUFVLEdBQW9ELENBQ2hFLGVBQWUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDL0MsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDM0IsS0FBSyxFQUFFLEtBQUs7S0FDZixDQUFDLENBQ0wsQ0FBQztJQUNGLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2RCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhQ2h1bmssIFJ1bm5lckNsaWVudCB9IGZyb20gXCJAcmRmYy9wcm90b1wiO1xuaW1wb3J0ICogYXMgZ3JwYyBmcm9tIFwiQGdycGMvZ3JwYy1qc1wiO1xuaW1wb3J0IHsgQ2xpZW50UmVhZGFibGVTdHJlYW0gfSBmcm9tIFwiQGdycGMvZ3JwYy1qc1wiO1xuaW1wb3J0IHsgQ2xpZW50UmVhZGFibGVTdHJlYW1JbXBsLCBPcmNoZXN0cmF0b3JNZXNzYWdlIH0gZnJvbSBcIi4vcmVleHBvcnRzXCI7XG5pbXBvcnQgeyBleHRyYWN0U2hhcGVzIH0gZnJvbSBcInJkZi1sZW5zXCI7XG5pbXBvcnQgeyBOYW1lZE5vZGUsIFBhcnNlciwgV3JpdGVyIH0gZnJvbSBcIm4zXCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHdpbnN0b24sIHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSBcIndpbnN0b25cIjtcbmltcG9ydCB7IFdyaXRlckluc3RhbmNlIH0gZnJvbSBcIi4vd3JpdGVyXCI7XG5pbXBvcnQgeyBSZWFkZXJJbnN0YW5jZSB9IGZyb20gXCIuL3JlYWRlclwiO1xuaW1wb3J0IHsgUHJvY2Vzc29yIH0gZnJvbSBcIi4vcHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBGdWxsUHJvYywgUnVubmVyIH0gZnJvbSBcIi4vcnVubmVyXCI7XG5pbXBvcnQgeyBRdWFkLCBUZXJtIH0gZnJvbSBcIkByZGZqcy90eXBlc1wiO1xuaW1wb3J0IHsgY3JlYXRlVGVybU5hbWVzcGFjZSB9IGZyb20gXCJAdHJlZWNnL3R5cGVzXCI7XG5pbXBvcnQgeyBleHBlY3QgfSBmcm9tIFwidml0ZXN0XCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9jZXNzb3JTaGFwZShcbiAgICBiYXNlSVJJID0gcHJvY2Vzcy5jd2QoKSArIFwiL25vZGVfbW9kdWxlcy9AcmRmYy9qcy1ydW5uZXIvaW5kZXgudHRsXCIsXG4pIHtcbiAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgcmVhZEZpbGUoYmFzZUlSSSwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSk7XG4gICAgY29uc3QgY29uZmlnUXVhZHMgPSBuZXcgUGFyc2VyKCkucGFyc2UoY29uZmlnRmlsZSk7XG4gICAgY29uc3Qgc2hhcGVzID0gZXh0cmFjdFNoYXBlcyhjb25maWdRdWFkcyk7XG5cbiAgICByZXR1cm4gc2hhcGVzO1xufVxuXG5leHBvcnQgY2xhc3MgVGVzdENsaWVudCBleHRlbmRzIFJ1bm5lckNsaWVudCB7XG4gICAgbmV4dDogKHN0cmVhbTogQ2xpZW50UmVhZGFibGVTdHJlYW08RGF0YUNodW5rPikgPT4gdW5rbm93bjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihcImxvY2FsaG9zdDo1NDAwXCIsIGdycGMuY3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKSk7XG4gICAgfVxuXG4gICAgbmV4dFN0cmVhbSgpOiBQcm9taXNlPENsaWVudFJlYWRhYmxlU3RyZWFtPERhdGFDaHVuaz4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMpID0+ICh0aGlzLm5leHQgPSByZXMpKTtcbiAgICB9XG5cbiAgICByZWNlaXZlU3RyZWFtTWVzc2FnZSgpOiBDbGllbnRSZWFkYWJsZVN0cmVhbTxEYXRhQ2h1bms+IHtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IENsaWVudFJlYWRhYmxlU3RyZWFtSW1wbDxEYXRhQ2h1bms+KChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGRhdGEgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubmV4dChzdHJlYW0pO1xuICAgICAgICByZXR1cm4gc3RyZWFtO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZTxUPihpdGVyOiBBc3luY0l0ZXJhYmxlPFQ+KTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGl0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgY2xpZW50ID0gbmV3IFRlc3RDbGllbnQoKTtcbmV4cG9ydCBjb25zdCB1cmkgPSBcInNvbWVVcmlcIjtcbmV4cG9ydCBjb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSh7XG4gICAgICAgIGxldmVsOiBwcm9jZXNzLmVudltcIkRFQlVHXCJdIHx8IFwiaW5mb1wiLFxuICAgIH0pLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXcml0ZXIoaXJpID0gdXJpKTogW1dyaXRlckluc3RhbmNlLCBSZWFkZXJJbnN0YW5jZV0ge1xuICAgIGNvbnN0IHJlYWRlciA9IGNyZWF0ZVJlYWRlcihpcmkpO1xuICAgIGNvbnN0IHdyaXRlU3RyZWFtID0gbmV3IFdyaXRlckluc3RhbmNlKFxuICAgICAgICBpcmksXG4gICAgICAgIGNsaWVudCxcbiAgICAgICAgYXN5bmMgKG1zZykgPT4ge1xuICAgICAgICAgICAgaWYgKG1zZy5tc2cpIHtcbiAgICAgICAgICAgICAgICByZWFkZXIuaGFuZGxlTXNnKG1zZy5tc2cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1zZy5jbG9zZSkge1xuICAgICAgICAgICAgICAgIHJlYWRlci5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBsb2dnZXIsXG4gICAgKTtcbiAgICByZXR1cm4gW3dyaXRlU3RyZWFtLCByZWFkZXJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZGVyKGlyaSA9IHVyaSk6IFJlYWRlckluc3RhbmNlIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGVySW5zdGFuY2UoaXJpLCBjbGllbnQsIGxvZ2dlcik7XG4gICAgcmV0dXJuIHJlYWRlcjtcbn1cblxuY29uc3Qgc2hhcGVRdWFkcyA9IGBcbkBwcmVmaXggcmRmYzogPGh0dHBzOi8vdzNpZC5vcmcvcmRmLWNvbm5lY3QjPi5cbkBwcmVmaXggeHNkOiA8aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjPi5cbkBwcmVmaXggc2g6IDxodHRwOi8vd3d3LnczLm9yZy9ucy9zaGFjbCM+LlxuWyBdIGEgc2g6Tm9kZVNoYXBlO1xuICBzaDp0YXJnZXRDbGFzcyA8SnNQcm9jZXNzb3JTaGFwZT47XG4gIHNoOnByb3BlcnR5IFtcbiAgICBzaDpwYXRoIHJkZmM6ZW50cnlwb2ludDtcbiAgICBzaDpuYW1lIFwibG9jYXRpb25cIjtcbiAgICBzaDptaW5Db3VudCAxO1xuICAgIHNoOm1heENvdW50IDE7XG4gICAgc2g6ZGF0YXR5cGUgeHNkOnN0cmluZztcbiAgXSwgW1xuICAgIHNoOnBhdGggcmRmYzpmaWxlO1xuICAgIHNoOm5hbWUgXCJmaWxlXCI7XG4gICAgc2g6bWluQ291bnQgMTtcbiAgICBzaDptYXhDb3VudCAxO1xuICAgIHNoOmRhdGF0eXBlIHhzZDpzdHJpbmc7XG4gIF0sIFtcbiAgICBzaDpwYXRoIHJkZmM6Y2xhc3M7XG4gICAgc2g6bmFtZSBcImNsYXp6XCI7XG4gICAgc2g6bWF4Q291bnQgMTtcbiAgICBzaDpkYXRhdHlwZSB4c2Q6c3RyaW5nO1xuICBdLlxuYDtcbmNvbnN0IE9XTCA9IGNyZWF0ZVRlcm1OYW1lc3BhY2UoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA3L293bCNcIiwgXCJpbXBvcnRzXCIpO1xuY29uc3QgcHJvY2Vzc29yU2hhcGVzID0gZXh0cmFjdFNoYXBlcyhuZXcgUGFyc2VyKCkucGFyc2Uoc2hhcGVRdWFkcykpO1xuY29uc3QgYmFzZSA9IFwiaHR0cHM6Ly93M2lkLm9yZy9yZGYtY29ubmVjdCNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydEZpbGUoZmlsZTogc3RyaW5nKTogUHJvbWlzZTxRdWFkW10+IHtcbiAgICBjb25zdCBkb25lID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgdG9kbyA9IFtuZXcgVVJMKFwiZmlsZTovL1wiICsgZmlsZSldO1xuICAgIGNvbnN0IHF1YWRzOiBRdWFkW10gPSBbXTtcblxuICAgIGxldCBpdGVtID0gdG9kby5wb3AoKTtcbiAgICB3aGlsZSAoaXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChkb25lLmhhcyhpdGVtLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICBpdGVtID0gdG9kby5wb3AoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUuYWRkKGl0ZW0udG9TdHJpbmcoKSk7XG4gICAgICAgIGlmIChpdGVtLnByb3RvY29sICE9PSBcImZpbGU6XCIpIHtcbiAgICAgICAgICAgIHRocm93IFwiTm8gc3VwcG9ydGVkIHByb3RvY29sIFwiICsgaXRlbS5wcm90b2NvbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHR4dCA9IGF3YWl0IHJlYWRGaWxlKGl0ZW0ucGF0aG5hbWUsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pO1xuICAgICAgICBjb25zdCBleHRyYXMgPSBuZXcgUGFyc2VyKHsgYmFzZUlSSTogaXRlbS50b1N0cmluZygpIH0pLnBhcnNlKHR4dCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvIG9mIGV4dHJhc1xuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgeC5zdWJqZWN0LnZhbHVlID09PSBpdGVtPy50b1N0cmluZygpICYmXG4gICAgICAgICAgICAgICAgICAgIHgucHJlZGljYXRlLmVxdWFscyhPV0wuaW1wb3J0cyksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4Lm9iamVjdC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRvZG8ucHVzaChuZXcgVVJMKG8pKTtcbiAgICAgICAgfVxuICAgICAgICBxdWFkcy5wdXNoKC4uLmV4dHJhcyk7XG5cbiAgICAgICAgaXRlbSA9IHRvZG8ucG9wKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1YWRzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHJvYzxUIGV4dGVuZHMgUHJvY2Vzc29yPHVua25vd24+PihcbiAgICBjb25maWc6IHN0cmluZyxcbiAgICB0eTogc3RyaW5nLFxuICAgIGNvbmZpZ0xvY2F0aW9uOiBzdHJpbmcsXG4gICAgdXJpID0gXCJodHRwOi8vZXhhbXBsZS5jb20vbnMjcHJvY2Vzc29yXCIsXG4pOiBQcm9taXNlPEZ1bGxQcm9jPFQ+PiB7XG4gICAgY29uc3QgY29uZmlnUXVhZHMgPSBhd2FpdCBpbXBvcnRGaWxlKGNvbmZpZ0xvY2F0aW9uKTtcbiAgICBjb25zdCBwcm9jQ29uZmlnID0gcHJvY2Vzc29yU2hhcGVzLmxlbnNlc1tcIkpzUHJvY2Vzc29yU2hhcGVcIl0uZXhlY3V0ZSh7XG4gICAgICAgIGlkOiBuZXcgTmFtZWROb2RlKGJhc2UgKyB0eSksXG4gICAgICAgIHF1YWRzOiBjb25maWdRdWFkcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1zZ3M6IE9yY2hlc3RyYXRvck1lc3NhZ2VbXSA9IFtdO1xuICAgIGNvbnN0IHdyaXRlID0gYXN5bmMgKHg6IE9yY2hlc3RyYXRvck1lc3NhZ2UpID0+IHtcbiAgICAgICAgbXNncy5wdXNoKHgpO1xuICAgIH07XG4gICAgY29uc3QgcnVubmVyID0gbmV3IFJ1bm5lcihcbiAgICAgICAgbmV3IFRlc3RDbGllbnQoKSxcbiAgICAgICAgd3JpdGUsXG4gICAgICAgIFwiaHR0cDovL2V4YW1wbGUuY29tL25zI1wiLFxuICAgICAgICBsb2dnZXIsXG4gICAgKTtcbiAgICBjb25maWdRdWFkcy5wdXNoKC4uLm5ldyBQYXJzZXIoKS5wYXJzZShjb25maWcpKTtcbiAgICBhd2FpdCBydW5uZXIuaGFuZGxlT3JjaE1lc3NhZ2Uoe1xuICAgICAgICBwaXBlbGluZTogbmV3IFdyaXRlcigpLnF1YWRzVG9TdHJpbmcoY29uZmlnUXVhZHMpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvYyA9IGF3YWl0IHJ1bm5lci5hZGRQcm9jZXNzb3I8VD4oe1xuICAgICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KHByb2NDb25maWcpLFxuICAgICAgICBhcmd1bWVudHM6IFwiXCIsXG4gICAgICAgIHVyaSxcbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9jO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tQcm9jRGVmaW5pdGlvbihmaWxlOiBzdHJpbmcsIG46IHN0cmluZykge1xuICAgIGNvbnN0IHF1YWRzID0gYXdhaXQgaW1wb3J0RmlsZShmaWxlKTtcbiAgICBjb25zdCBwcm9jQ29uZmlnID0gPHsgZmlsZTogVGVybTsgbG9jYXRpb246IHN0cmluZzsgY2xheno6IHN0cmluZyB9PihcbiAgICAgICAgcHJvY2Vzc29yU2hhcGVzLmxlbnNlc1tcIkpzUHJvY2Vzc29yU2hhcGVcIl0uZXhlY3V0ZSh7XG4gICAgICAgICAgICBpZDogbmV3IE5hbWVkTm9kZShiYXNlICsgbiksXG4gICAgICAgICAgICBxdWFkczogcXVhZHMsXG4gICAgICAgIH0pXG4gICAgKTtcbiAgICBleHBlY3QocHJvY0NvbmZpZy5maWxlLCBuICsgXCIgaGFzIGZpbGVcIikudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QocHJvY0NvbmZpZy5sb2NhdGlvbiwgbiArIFwiIGhhcyBsb2NhdGlvblwiKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChwcm9jQ29uZmlnLmNsYXp6LCBuICsgXCIgaGFzIGNsYXp6XCIpLnRvQmVEZWZpbmVkKCk7XG59XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3RVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBRXJDLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIsTUFBTSxhQUFhLENBQUE7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFekMsT0FBTyxFQUFZLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUUvQixNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLHlDQUF5QztJQUVuRSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUNoRSxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNsRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENB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SSxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBSTtRQUN4QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDbEMsU0FBUyxFQUFFLEVBQUU7UUFDYixHQUFHO0tBQ0osQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsQ0FBUztJQUMvRCxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwQyxNQUFNLFVBQVUsR0FBb0QsQ0FDbEUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNqRCxFQUFFLEVBQUUsSUFBSSxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUMzQixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FDSCxDQUFBO0lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3RELE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM5RCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFDaHVuaywgUnVubmVyQ2xpZW50IH0gZnJvbSAnQHJkZmMvcHJvdG8nXG5pbXBvcnQgKiBhcyBncnBjIGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQgeyBDbGllbnRSZWFkYWJsZVN0cmVhbSB9IGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQgeyBDbGllbnRSZWFkYWJsZVN0cmVhbUltcGwsIE9yY2hlc3RyYXRvck1lc3NhZ2UgfSBmcm9tICcuL3JlZXhwb3J0cydcbmltcG9ydCB7IGV4dHJhY3RTaGFwZXMgfSBmcm9tICdyZGYtbGVucydcbmltcG9ydCB7IE5hbWVkTm9kZSwgUGFyc2VyLCBXcml0ZXIgfSBmcm9tICduMydcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnXG5pbXBvcnQgd2luc3RvbiwgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHsgV3JpdGVySW5zdGFuY2UgfSBmcm9tICcuL3dyaXRlcidcbmltcG9ydCB7IFJlYWRlckluc3RhbmNlIH0gZnJvbSAnLi9yZWFkZXInXG5pbXBvcnQgeyBQcm9jZXNzb3IgfSBmcm9tICcuL3Byb2Nlc3NvcidcbmltcG9ydCB7IEZ1bGxQcm9jLCBSdW5uZXIgfSBmcm9tICcuL3J1bm5lcidcbmltcG9ydCB7IFF1YWQsIFRlcm0gfSBmcm9tICdAcmRmanMvdHlwZXMnXG5pbXBvcnQgeyBjcmVhdGVUZXJtTmFtZXNwYWNlIH0gZnJvbSAnQHRyZWVjZy90eXBlcydcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ3ZpdGVzdCdcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByb2Nlc3NvclNoYXBlKFxuICBiYXNlSVJJID0gcHJvY2Vzcy5jd2QoKSArICcvbm9kZV9tb2R1bGVzL0ByZGZjL2pzLXJ1bm5lci9pbmRleC50dGwnLFxuKSB7XG4gIGNvbnN0IGNvbmZpZ0ZpbGUgPSBhd2FpdCByZWFkRmlsZShiYXNlSVJJLCB7IGVuY29kaW5nOiAndXRmOCcgfSlcbiAgY29uc3QgY29uZmlnUXVhZHMgPSBuZXcgUGFyc2VyKCkucGFyc2UoY29uZmlnRmlsZSlcbiAgY29uc3Qgc2hhcGVzID0gZXh0cmFjdFNoYXBlcyhjb25maWdRdWFkcylcblxuICByZXR1cm4gc2hhcGVzXG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0Q2xpZW50IGV4dGVuZHMgUnVubmVyQ2xpZW50IHtcbiAgbmV4dDogKHN0cmVhbTogQ2xpZW50UmVhZGFibGVTdHJlYW08RGF0YUNodW5rPikgPT4gdW5rbm93blxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdsb2NhbGhvc3Q6NTQwMCcsIGdycGMuY3JlZGVudGlhbHMuY3JlYXRlSW5zZWN1cmUoKSlcbiAgfVxuXG4gIG5leHRTdHJlYW0oKTogUHJvbWlzZTxDbGllbnRSZWFkYWJsZVN0cmVhbTxEYXRhQ2h1bms+PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMpID0+ICh0aGlzLm5leHQgPSByZXMpKVxuICB9XG5cbiAgcmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKTogQ2xpZW50UmVhZGFibGVTdHJlYW08RGF0YUNodW5rPiB7XG4gICAgY29uc3Qgc3RyZWFtID0gbmV3IENsaWVudFJlYWRhYmxlU3RyZWFtSW1wbDxEYXRhQ2h1bms+KChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIHJldHVybiB7IGRhdGEgfVxuICAgIH0pXG4gICAgdGhpcy5uZXh0KHN0cmVhbSlcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZTxUPihpdGVyOiBBc3luY0l0ZXJhYmxlPFQ+KTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiBpdGVyKSB7XG4gICAgcmV0dXJuIGl0ZW1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY2xpZW50ID0gbmV3IFRlc3RDbGllbnQoKVxuZXhwb3J0IGNvbnN0IHVyaSA9ICdzb21lVXJpJ1xuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7XG4gIHRyYW5zcG9ydHM6IG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSh7XG4gICAgbGV2ZWw6IHByb2Nlc3MuZW52WydERUJVRyddIHx8ICdpbmZvJyxcbiAgfSksXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3JpdGVyKGlyaSA9IHVyaSk6IFtXcml0ZXJJbnN0YW5jZSwgUmVhZGVySW5zdGFuY2VdIHtcbiAgY29uc3QgcmVhZGVyID0gY3JlYXRlUmVhZGVyKGlyaSlcbiAgY29uc3Qgd3JpdGVTdHJlYW0gPSBuZXcgV3JpdGVySW5zdGFuY2UoXG4gICAgaXJpLFxuICAgIGNsaWVudCxcbiAgICBhc3luYyAobXNnKSA9PiB7XG4gICAgICBpZiAobXNnLm1zZykge1xuICAgICAgICByZWFkZXIuaGFuZGxlTXNnKG1zZy5tc2cpXG4gICAgICB9XG4gICAgICBpZiAobXNnLmNsb3NlKSB7XG4gICAgICAgIHJlYWRlci5jbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBsb2dnZXIsXG4gIClcbiAgcmV0dXJuIFt3cml0ZVN0cmVhbSwgcmVhZGVyXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhZGVyKGlyaSA9IHVyaSk6IFJlYWRlckluc3RhbmNlIHtcbiAgY29uc3QgcmVhZGVyID0gbmV3IFJlYWRlckluc3RhbmNlKGlyaSwgY2xpZW50LCBsb2dnZXIpXG4gIHJldHVybiByZWFkZXJcbn1cblxuY29uc3Qgc2hhcGVRdWFkcyA9IGBcbkBwcmVmaXggcmRmYzogPGh0dHBzOi8vdzNpZC5vcmcvcmRmLWNvbm5lY3QjPi5cbkBwcmVmaXggeHNkOiA8aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjPi5cbkBwcmVmaXggc2g6IDxodHRwOi8vd3d3LnczLm9yZy9ucy9zaGFjbCM+LlxuWyBdIGEgc2g6Tm9kZVNoYXBlO1xuICBzaDp0YXJnZXRDbGFzcyA8SnNQcm9jZXNzb3JTaGFwZT47XG4gIHNoOnByb3BlcnR5IFtcbiAgICBzaDpwYXRoIHJkZmM6ZW50cnlwb2ludDtcbiAgICBzaDpuYW1lIFwibG9jYXRpb25cIjtcbiAgICBzaDptaW5Db3VudCAxO1xuICAgIHNoOm1heENvdW50IDE7XG4gICAgc2g6ZGF0YXR5cGUgeHNkOnN0cmluZztcbiAgXSwgW1xuICAgIHNoOnBhdGggcmRmYzpmaWxlO1xuICAgIHNoOm5hbWUgXCJmaWxlXCI7XG4gICAgc2g6bWluQ291bnQgMTtcbiAgICBzaDptYXhDb3VudCAxO1xuICAgIHNoOmRhdGF0eXBlIHhzZDpzdHJpbmc7XG4gIF0sIFtcbiAgICBzaDpwYXRoIHJkZmM6Y2xhc3M7XG4gICAgc2g6bmFtZSBcImNsYXp6XCI7XG4gICAgc2g6bWF4Q291bnQgMTtcbiAgICBzaDpkYXRhdHlwZSB4c2Q6c3RyaW5nO1xuICBdLlxuYFxuY29uc3QgT1dMID0gY3JlYXRlVGVybU5hbWVzcGFjZSgnaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNy9vd2wjJywgJ2ltcG9ydHMnKVxuY29uc3QgcHJvY2Vzc29yU2hhcGVzID0gZXh0cmFjdFNoYXBlcyhuZXcgUGFyc2VyKCkucGFyc2Uoc2hhcGVRdWFkcykpXG5jb25zdCBiYXNlID0gJ2h0dHBzOi8vdzNpZC5vcmcvcmRmLWNvbm5lY3QjJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0RmlsZShmaWxlOiBzdHJpbmcpOiBQcm9taXNlPFF1YWRbXT4ge1xuICBjb25zdCBkb25lID0gbmV3IFNldDxzdHJpbmc+KClcbiAgY29uc3QgdG9kbyA9IFtuZXcgVVJMKCdmaWxlOi8vJyArIGZpbGUpXVxuICBjb25zdCBxdWFkczogUXVhZFtdID0gW11cblxuICBsZXQgaXRlbSA9IHRvZG8ucG9wKClcbiAgd2hpbGUgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChkb25lLmhhcyhpdGVtLnRvU3RyaW5nKCkpKSB7XG4gICAgICBpdGVtID0gdG9kby5wb3AoKVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgZG9uZS5hZGQoaXRlbS50b1N0cmluZygpKVxuICAgIGlmIChpdGVtLnByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICB0aHJvdyAnTm8gc3VwcG9ydGVkIHByb3RvY29sICcgKyBpdGVtLnByb3RvY29sXG4gICAgfVxuXG4gICAgY29uc3QgdHh0ID0gYXdhaXQgcmVhZEZpbGUoaXRlbS5wYXRobmFtZSwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pXG4gICAgY29uc3QgZXh0cmFzID0gbmV3IFBhcnNlcih7IGJhc2VJUkk6IGl0ZW0udG9TdHJpbmcoKSB9KS5wYXJzZSh0eHQpXG5cbiAgICBmb3IgKGNvbnN0IG8gb2YgZXh0cmFzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4LnN1YmplY3QudmFsdWUgPT09IGl0ZW0/LnRvU3RyaW5nKCkgJiZcbiAgICAgICAgICB4LnByZWRpY2F0ZS5lcXVhbHMoT1dMLmltcG9ydHMpLFxuICAgICAgKVxuICAgICAgLm1hcCgoeCkgPT4geC5vYmplY3QudmFsdWUpKSB7XG4gICAgICB0b2RvLnB1c2gobmV3IFVSTChvKSlcbiAgICB9XG4gICAgcXVhZHMucHVzaCguLi5leHRyYXMpXG5cbiAgICBpdGVtID0gdG9kby5wb3AoKVxuICB9XG5cbiAgcmV0dXJuIHF1YWRzXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9jPFQgZXh0ZW5kcyBQcm9jZXNzb3I8dW5rbm93bj4+KFxuICBjb25maWc6IHN0cmluZyxcbiAgdHk6IHN0cmluZyxcbiAgY29uZmlnTG9jYXRpb246IHN0cmluZyxcbiAgdXJpID0gJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyNwcm9jZXNzb3InLFxuKTogUHJvbWlzZTxGdWxsUHJvYzxUPj4ge1xuICBjb25zdCBjb25maWdRdWFkcyA9IGF3YWl0IGltcG9ydEZpbGUoY29uZmlnTG9jYXRpb24pXG4gIGNvbnN0IHByb2NDb25maWcgPSBwcm9jZXNzb3JTaGFwZXMubGVuc2VzWydKc1Byb2Nlc3NvclNoYXBlJ10uZXhlY3V0ZSh7XG4gICAgaWQ6IG5ldyBOYW1lZE5vZGUoYmFzZSArIHR5KSxcbiAgICBxdWFkczogY29uZmlnUXVhZHMsXG4gIH0pXG5cbiAgY29uc3QgbXNnczogT3JjaGVzdHJhdG9yTWVzc2FnZVtdID0gW11cbiAgY29uc3Qgd3JpdGUgPSBhc3luYyAoeDogT3JjaGVzdHJhdG9yTWVzc2FnZSkgPT4ge1xuICAgIG1zZ3MucHVzaCh4KVxuICB9XG4gIGNvbnN0IHJ1bm5lciA9IG5ldyBSdW5uZXIoXG4gICAgbmV3IFRlc3RDbGllbnQoKSxcbiAgICB3cml0ZSxcbiAgICAnaHR0cDovL2V4YW1wbGUuY29tL25zIycsXG4gICAgbG9nZ2VyLFxuICApXG4gIGNvbmZpZ1F1YWRzLnB1c2goLi4ubmV3IFBhcnNlcigpLnBhcnNlKGNvbmZpZykpXG4gIGF3YWl0IHJ1bm5lci5oYW5kbGVPcmNoTWVzc2FnZSh7XG4gICAgcGlwZWxpbmU6IG5ldyBXcml0ZXIoKS5xdWFkc1RvU3RyaW5nKGNvbmZpZ1F1YWRzKSxcbiAgfSlcblxuICBjb25zdCBwcm9jID0gYXdhaXQgcnVubmVyLmFkZFByb2Nlc3NvcjxUPih7XG4gICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShwcm9jQ29uZmlnKSxcbiAgICBhcmd1bWVudHM6ICcnLFxuICAgIHVyaSxcbiAgfSlcblxuICByZXR1cm4gcHJvY1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tQcm9jRGVmaW5pdGlvbihmaWxlOiBzdHJpbmcsIG46IHN0cmluZykge1xuICBjb25zdCBxdWFkcyA9IGF3YWl0IGltcG9ydEZpbGUoZmlsZSlcbiAgY29uc3QgcHJvY0NvbmZpZyA9IDx7IGZpbGU6IFRlcm07IGxvY2F0aW9uOiBzdHJpbmc7IGNsYXp6OiBzdHJpbmcgfT4oXG4gICAgcHJvY2Vzc29yU2hhcGVzLmxlbnNlc1snSnNQcm9jZXNzb3JTaGFwZSddLmV4ZWN1dGUoe1xuICAgICAgaWQ6IG5ldyBOYW1lZE5vZGUoYmFzZSArIG4pLFxuICAgICAgcXVhZHM6IHF1YWRzLFxuICAgIH0pXG4gIClcbiAgZXhwZWN0KHByb2NDb25maWcuZmlsZSwgbiArICcgaGFzIGZpbGUnKS50b0JlRGVmaW5lZCgpXG4gIGV4cGVjdChwcm9jQ29uZmlnLmxvY2F0aW9uLCBuICsgJyBoYXMgbG9jYXRpb24nKS50b0JlRGVmaW5lZCgpXG4gIGV4cGVjdChwcm9jQ29uZmlnLmNsYXp6LCBuICsgJyBoYXMgY2xhenonKS50b0JlRGVmaW5lZCgpXG59XG4iXX0=