cdk-nextjs 0.7.10 → 0.7.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 (54) hide show
  1. package/.jsii +3 -3
  2. package/README.md +1 -1
  3. package/docs/harness-coverage.md +1 -1
  4. package/docs/nextjs-private-apis.md +128 -0
  5. package/lib/adapter/adapter.mjs +276 -24
  6. package/lib/adapter/build-outputs.d.ts +1 -1
  7. package/lib/adapter/build-outputs.js +29 -13
  8. package/lib/adapter/build-outputs.test.js +35 -7
  9. package/lib/adapter/cache-handler.d.ts +1 -1
  10. package/lib/adapter/cache-handler.js +1 -1
  11. package/lib/adapter/cache-kinds.d.ts +12 -1
  12. package/lib/adapter/cache-kinds.js +16 -4
  13. package/lib/adapter/init-cache.js +7 -7
  14. package/lib/adapter/local-file-cache-handler.d.ts +1 -1
  15. package/lib/adapter/local-file-cache-handler.js +1 -1
  16. package/lib/adapter/memory-cache-handler.d.ts +2 -2
  17. package/lib/adapter/memory-cache-handler.js +1 -1
  18. package/lib/adapter/s3-cache-handler.d.ts +2 -2
  19. package/lib/adapter/s3-cache-handler.js +1 -1
  20. package/lib/adapter/use-cache-common.d.ts +1 -1
  21. package/lib/adapter/use-cache-common.js +1 -1
  22. package/lib/adapter/use-cache-common.test.js +1 -1
  23. package/lib/adapter/use-cache-default-handler.d.ts +1 -1
  24. package/lib/adapter/use-cache-default-handler.js +1 -1
  25. package/lib/adapter/use-cache-handlers.test.js +1 -1
  26. package/lib/adapter/use-cache-remote-handler.d.ts +1 -1
  27. package/lib/adapter/use-cache-remote-handler.js +1 -1
  28. package/lib/cdk-nextjs-version.d.ts +10 -0
  29. package/lib/cdk-nextjs-version.js +15 -0
  30. package/lib/nextjs-api.js +1 -1
  31. package/lib/nextjs-build/nextjs-build.js +7 -6
  32. package/lib/nextjs-build/nextjs-build.test.js +16 -3
  33. package/lib/nextjs-cache.js +1 -1
  34. package/lib/nextjs-compute/nextjs-containers.js +1 -1
  35. package/lib/nextjs-compute/nextjs-functions.js +1 -1
  36. package/lib/nextjs-distribution.js +5 -5
  37. package/lib/nextjs-post-deploy.js +1 -1
  38. package/lib/nextjs-static-assets.js +1 -1
  39. package/lib/root-constructs/nextjs-base-construct.js +1 -1
  40. package/lib/root-constructs/nextjs-global-containers.js +1 -1
  41. package/lib/root-constructs/nextjs-global-functions.js +1 -1
  42. package/lib/root-constructs/nextjs-regional-containers.js +1 -1
  43. package/lib/root-constructs/nextjs-regional-functions.js +1 -1
  44. package/lib/runtime/core.test.js +17 -8
  45. package/lib/runtime/dispatch.js +4 -5
  46. package/lib/runtime/image.js +43 -32
  47. package/lib/runtime/image.test.js +27 -26
  48. package/lib/runtime/lambda.mjs +276 -36
  49. package/lib/runtime/manifest.d.ts +34 -8
  50. package/lib/runtime/manifest.js +7 -5
  51. package/lib/runtime/server.mjs +276 -36
  52. package/package.json +1 -1
  53. package/scripts/capture-adapter-fixture.mjs +13 -1
  54. package/scripts/zero-config-build.mjs +5 -1
@@ -816,4 +816,4 @@ describe("lazyHandler", () => {
816
816
  }
817
817
  });
818
818
  });
819
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNhY2hlLWNvbW1vbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXIvdXNlLWNhY2hlLWNvbW1vbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0RBQXNEO0FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUV0Qyx1REFBcUQ7QUFDckQsOERBQTBEO0FBRTFELHVEQU8yQjtBQUMzQix5REFXNEI7QUFDNUIsMERBSWlDO0FBRWpDLCtEQUErRDtBQUMvRCxTQUFTLFdBQVcsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFxQjtJQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFjLEVBQUUsRUFBRTtRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxHQUFHO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FDbkIsS0FBSyxFQUFFLEdBQVcsRUFBRSxFQUFVLEVBQUUsU0FBK0IsRUFBRSxFQUFFO1FBQ2pFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLEdBQUcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lB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QUFNLEdBQUcsR0FBRyxJQUFJLDJCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxxQkFBcUI7UUFDckIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7UUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7UUFDcEUsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLCtDQUErQztRQUMvQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztR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LGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDMUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxvQ0FBb0M7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsT0FBTyxNQUFNLENBQUMscUNBQXNCLENBQUMsQ0FBQztZQUN0QyxPQUFPLE1BQU0sQ0FBQyxrQ0FBbUIsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5qZXN0Lm1vY2soXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIik7XG5cbmltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSBcIm5vZGU6YXN5bmNfaG9va3NcIjtcbmltcG9ydCB7IER5bmFtb0RCQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1keW5hbW9kYlwiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZUVudHJ5IH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2NhY2hlLWhhbmRsZXJzL3R5cGVzXCI7XG5pbXBvcnQge1xuICBNQVhfUkVWQUxJREFUSU9OX0xPR19HQVBfTVMsXG4gIFJldmFsaWRhdGlvbkxvZyxcbiAgUmV2YWxpZGF0aW9uTG9nUm93LFxuICBUYWdNYXJrZXIsXG4gIFRhZ01hcmtlclRhYmxlLFxuICBUcmFja2VkVGFnTWFya2Vycyxcbn0gZnJvbSBcIi4vYXdzLWNhY2hlLXN0b3JlXCI7XG5pbXBvcnQge1xuICBjYWNoZUVudHJ5T2YsXG4gIEVudHJ5THJ1LFxuICBsYXp5SGFuZGxlcixcbiAgbm93LFxuICBQZW5kaW5nU2V0cyxcbiAgcmVhZFN0cmVhbSxcbiAgc2hhcmVkVGFnTWFuaWZlc3QsXG4gIFN0b3JlZEVudHJ5LFxuICBzdG9yZWRFbnRyeU9mLFxuICBUQUdfVEFCTEVfUkVRVUVTVF9USU1FT1VUX01TLFxufSBmcm9tIFwiLi91c2UtY2FjaGUtY29tbW9uXCI7XG5pbXBvcnQge1xuICBjYXB0dXJlT3V0c2lkZVJlcXVlc3QsXG4gIE9VVFNJREVfUkVRVUVTVF9TWU1CT0wsXG4gIFRBR19NQU5JRkVTVF9TWU1CT0wsXG59IGZyb20gXCIuLi9ydW50aW1lL3RhZy1tYW5pZmVzdFwiO1xuXG4vKiogQSBgVGFnTWFya2VyVGFibGVgIG92ZXIgYSBwbGFpbiBtYXAsIGNvdW50aW5nIGl0cyBjYWxscy4gKi9cbmZ1bmN0aW9uIGZha2VNYXJrZXJzKHJvd3MgPSBuZXcgTWFwPHN0cmluZywgVGFnTWFya2VyPigpKSB7XG4gIGNvbnN0IHJlYWQgPSBqZXN0LmZuKGFzeW5jICh0YWdzOiBzdHJpbmdbXSkgPT4ge1xuICAgIGNvbnN0IGZvdW5kID0gbmV3IE1hcDxzdHJpbmcsIFRhZ01hcmtlcj4oKTtcbiAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgICBjb25zdCByb3cgPSByb3dzLmdldCh0YWcpO1xuICAgICAgaWYgKHJvdykgZm91bmQuc2V0KHRhZywgeyAuLi5yb3cgfSk7XG4gICAgfVxuICAgIHJldHVybiBmb3VuZDtcbiAgfSk7XG4gIGNvbnN0IHdyaXRlID0gamVzdC5mbihcbiAgICBhc3luYyAodGFnOiBzdHJpbmcsIGF0OiBudW1iZXIsIGR1cmF0aW9ucz86IHsgZXhwaXJlPzogbnVtYmVyIH0pID0+IHtcbiAgICAgIGNvbnN0IHJvdyA9IHJvd3MuZ2V0KHRhZykgPz8ge307XG4gICAgICBpZiAoIWR1cmF0aW9ucykge1xuICAgICAgICByb3cucmV2YWxpZGF0ZWRBdCA9IGF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm93LnN0YWxlQXQgPSBhdDtcbiAgICAgICAgaWYgKGR1cmF0aW9ucy5leHBpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJvdy5leHBpcmVkQXQgPSBhdCArIGR1cmF0aW9ucy5leHBpcmUgKiAxMDAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByb3dzLnNldCh0YWcsIHJvdyk7XG4gICAgICAvLyBgUmV0dXJuVmFsdWVzOiBcIkFMTF9ORVdcImAsIGFzIHRoZSByZWFsIHRhYmxlIGFuc3dlcnMuXG4gICAgICByZXR1cm4geyAuLi5yb3cgfTtcbiAgICB9LFxuICApO1xuICByZXR1cm4ge1xuICAgIHJvd3MsXG4gICAgcmVhZCxcbiAgICB3cml0ZSxcbiAgICB0YWJsZTogeyByZWFkLCB3cml0ZSB9IGFzIHVua25vd24gYXMgVGFnTWFya2VyVGFibGUsXG4gIH07XG59XG5cbi8qKlxuICogQSBgUmV2YWxpZGF0aW9uTG9nYCBvdmVyIGEgcGxhaW4gYXJyYXksIGNvdW50aW5nIGl0cyBjYWxscy4gSXRzIHF1ZXJ5IHJldHVybnNcbiAqIHdoYXQgdGhlIHJlYWwgb25lIHdvdWxkOiBldmVyeSByb3cgYXQgb3IgYWZ0ZXIgYHNpbmNlYCwgb2xkZXN0IGZpcnN0LlxuICovXG5mdW5jdGlvbiBmYWtlTG9nKHJvd3M6IFJldmFsaWRhdGlvbkxvZ1Jvd1tdID0gW10pIHtcbiAgY29uc3QgcHV0ID0gamVzdC5mbihhc3luYyAodGFnOiBzdHJpbmcsIGF0OiBudW1iZXIsIG1hcmtlcjogVGFnTWFya2VyKSA9PiB7XG4gICAgcm93cy5wdXNoKHtcbiAgICAgIHNrOiBgJHtTdHJpbmcoYXQpLnBhZFN0YXJ0KDE1LCBcIjBcIil9IyR7dGFnfWAsXG4gICAgICBhdCxcbiAgICAgIHRhZyxcbiAgICAgIG1hcmtlcixcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHF1ZXJ5ID0gamVzdC5mbihhc3luYyAoc2luY2U6IG51bWJlcikgPT4gKHtcbiAgICByb3dzOiByb3dzLmZpbHRlcigocm93KSA9PiByb3cuYXQgPj0gc2luY2UpLnNvcnQoKGEsIGIpID0+IGEuYXQgLSBiLmF0KSxcbiAgICB0cnVuY2F0ZWQ6IGZhbHNlLFxuICB9KSk7XG4gIHJldHVybiB7XG4gICAgcm93cyxcbiAgICBwdXQsXG4gICAgcXVlcnksXG4gICAgbG9nOiB7IHB1dCwgcXVlcnkgfSBhcyB1bmtub3duIGFzIFJldmFsaWRhdGlvbkxvZyxcbiAgfTtcbn1cblxuLyoqIEEgd2FsbCBjbG9jayBhIHRlc3QgbW92ZXMgYnkgaGFuZC4gKi9cbmZ1bmN0aW9uIGZha2VDbG9jayhzdGFydCA9IDFfMDAwXzAwMCkge1xuICBjb25zdCBjbG9jayA9IHsgYXQ6IHN0YXJ0LCBub3c6ICgpID0+IGNsb2NrLmF0IH07XG4gIHJldHVybiBjbG9jaztcbn1cblxuZnVuY3Rpb24gc3RyZWFtT2YoLi4uY2h1bmtzOiBzdHJpbmdbXSk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgc3RhcnQoY29udHJvbGxlcikge1xuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjaHVuaykpO1xuICAgICAgfVxuICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzdG9yZWQoYnl0ZXM6IG51bWJlciwgZXh0cmE6IFBhcnRpYWw8U3RvcmVkRW50cnk+ID0ge30pOiBTdG9yZWRFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KGJ5dGVzKSxcbiAgICB0YWdzOiBbXSxcbiAgICBzdGFsZTogMzAwLFxuICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICBleHBpcmU6IDM2MDAsXG4gICAgcmV2YWxpZGF0ZTogOTAwLFxuICAgIC4uLmV4dHJhLFxuICB9O1xufVxuXG5kZXNjcmliZShcIlRyYWNrZWRUYWdNYXJrZXJzXCIsICgpID0+IHtcbiAgaXQoXCJyZWFkcyBhIHRhZyB0aGUgZmlyc3QgdGltZSBpdCBpcyBuZWVkZWQsIGFuZCBub3QgYWdhaW5cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycyhuZXcgTWFwKFtbXCJhXCIsIHsgcmV2YWxpZGF0ZWRBdDogNTAgfV1dKSk7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgbG9nOiBmYWtlTG9nKCkubG9nLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RhZ3MuZW5zdXJlKFtcImFcIiwgXCJiXCJdKSwgdGFncy5lbnN1cmUoW1wiYVwiLCBcImJcIl0pXSk7XG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiYVwiLCBcImJcIl0pO1xuXG4gICAgZXhwZWN0KG1hcmtlcnMucmVhZCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIGV4cGVjdChtYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtcImFcIiwgXCJiXCJdKTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCA0MCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImFcIl0sIDYwKSkudG9CZShcImZyZXNoXCIpO1xuICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImJcIl0sIDQwKSkudG9CZShcImZyZXNoXCIpO1xuICB9KTtcblxuICBpdChcImFwcGxpZXMgaXRzIG93biByZXZhbGlkYXRpb24gYXQgb25jZSwgYW5kIHdyaXRlcyBpdCBvbmNlIGZvciBib3RoIGhhbmRsZXJzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtYXJrZXJzID0gZmFrZU1hcmtlcnMoKTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICBsb2c6IGZha2VMb2coKS5sb2csXG4gICAgfSk7XG4gICAgY29uc3QgY3JlYXRlZEF0ID0gRGF0ZS5ub3coKSAtIDEwMDA7XG5cbiAgICAvLyBXaGF0IE5leHQuanMgZG9lczogYHVwZGF0ZVRhZ3NgIG9uIHRoZSBkZWZhdWx0IGFuZCB0aGUgcmVtb3RlIGhhbmRsZXIuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGFncy51cGRhdGUoW1wiYVwiLCBcImJcIl0sIHsgZXhwaXJlOiAwIH0pLFxuICAgICAgdGFncy51cGRhdGUoW1wiYVwiLCBcImJcIl0sIHsgZXhwaXJlOiAwIH0pLFxuICAgIF0pO1xuXG4gICAgZXhwZWN0KG1hcmtlcnMud3JpdGUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJiXCJdLCBjcmVhdGVkQXQpKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgICBleHBlY3QobWFya2Vycy5yb3dzLmdldChcImFcIikpLnRvRXF1YWwoe1xuICAgICAgc3RhbGVBdDogZXhwZWN0LmFueShOdW1iZXIpLFxuICAgICAgZXhwaXJlZEF0OiBleHBlY3QuYW55KE51bWJlciksXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiZ2l2ZXMgYSBsYXRlciByZXZhbGlkYXRpb24gaXRzIG93biBtYXJrZXIgd2hpbGUgdGhlIGZpcnN0IGlzIHN0aWxsIHdyaXRpbmdcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycygpO1xuICAgIGxldCByZWxlYXNlID0gKCkgPT4ge307XG4gICAgbWFya2Vycy53cml0ZS5tb2NrSW1wbGVtZW50YXRpb25PbmNlKFxuICAgICAgKF90YWcsIGF0KSA9PlxuICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgIHJlbGVhc2UgPSAoKSA9PiByZXNvbHZlKHsgcmV2YWxpZGF0ZWRBdDogYXQgfSk7XG4gICAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgbG9nOiBmYWtlTG9nKCkubG9nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmlyc3QgPSB0YWdzLnVwZGF0ZShbXCJ4XCJdLCB1bmRlZmluZWQpO1xuICAgIC8vIEFub3RoZXIgcmVxdWVzdCdzIGByZXZhbGlkYXRlVGFnKCd4JylgLCBhIHR1cm4gbGF0ZXIuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldEltbWVkaWF0ZShyZXNvbHZlKSk7XG4gICAgY29uc3Qgc2Vjb25kID0gdGFncy51cGRhdGUoW1wieFwiXSwgdW5kZWZpbmVkKTtcbiAgICByZWxlYXNlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZpcnN0LCBzZWNvbmRdKTtcblxuICAgIGV4cGVjdChtYXJrZXJzLndyaXRlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG4gICAgY29uc3QgW1ssIGZpcnN0QXRdLCBbLCBzZWNvbmRBdF1dID0gbWFya2Vycy53cml0ZS5tb2NrLmNhbGxzO1xuICAgIGV4cGVjdChzZWNvbmRBdCkudG9CZUdyZWF0ZXJUaGFuKGZpcnN0QXQpO1xuICB9KTtcblxuICBpdChcInB1dHMgYSBzbG93IGxvZyByb3cgYWdhaW4gdW5kZXIgYSBmcmVzaCB0aW1lc3RhbXAsIHNvIHJlYWRlcnMgc2VlIGl0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjbG9jayA9IGZha2VDbG9jaygpO1xuICAgIGNvbnN0IGxvZyA9IGZha2VMb2coKTtcbiAgICBsb2cucHV0Lm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gUmVhZGVycycgY3Vyc29ycyBoYXZlIG1vdmVkIHBhc3QgdGhlIHJvdyBieSB0aGUgdGltZSBpdCBzaG93cy5cbiAgICAgIGNsb2NrLmF0ICs9IDEwXzAwMDtcbiAgICB9KTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IGZha2VNYXJrZXJzKCkudGFibGUsXG4gICAgICBsb2c6IGxvZy5sb2csXG4gICAgICBjbG9jazogY2xvY2subm93LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGF3YWl0IHRhZ3MudXBkYXRlKFtcInhcIl0sIHVuZGVmaW5lZCkpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KGxvZy5wdXQubW9jay5jYWxscy5tYXAoKFssIGF0XSkgPT4gYXQpKS50b0VxdWFsKFtcbiAgICAgIDFfMDAwXzAwMCwgMV8wMTBfMDAwLFxuICAgIF0pO1xuICB9KTtcblxuICBpdChcInJlcG9ydHMgYSBsb2cgcm93IHNsb3cgdHdpY2UgYXMgbm90IHJlY29yZGVkXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjbG9jayA9IGZha2VDbG9jaygpO1xuICAgIGNvbnN0IGxvZyA9IGZha2VMb2coKTtcbiAgICBsb2cucHV0Lm1vY2tJbXBsZW1lbnRhdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBjbG9jay5hdCArPSAxMF8wMDA7XG4gICAgfSk7XG4gICAgY29uc3QgZXJyb3IgPSBqZXN0LnNweU9uKGNvbnNvbGUsIFwiZXJyb3JcIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IGZha2VNYXJrZXJzKCkudGFibGUsXG4gICAgICBsb2c6IGxvZy5sb2csXG4gICAgICBjbG9jazogY2xvY2subm93LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGF3YWl0IHRhZ3MudXBkYXRlKFtcInhcIl0sIHVuZGVmaW5lZCkpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChsb2cucHV0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG4gICAgZXJyb3IubW9ja1Jlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoXCJ0cmFja3MgdGhlIHdob2xlIHJvdyBpdHMgb3duIHdyaXRlIHJldHVybnMsIG5vdCBqdXN0IHdoYXQgaXQgc2V0XCIsIGFzeW5jICgpID0+IHtcbiAgICAvLyBBbm90aGVyIGluc3RhbmNlJ3MgYHVwZGF0ZVRhZ2AgZm9yIGEgdGFnIHRoaXMgb25lIGRvZXMgbm90IHRyYWNrIHlldC5cbiAgICBjb25zdCBjcmVhdGVkQXQgPSBEYXRlLm5vdygpIC0gMTAwMDtcbiAgICBjb25zdCBtYXJrZXJzID0gZmFrZU1hcmtlcnMoXG4gICAgICBuZXcgTWFwKFtbXCJwb3N0c1wiLCB7IHJldmFsaWRhdGVkQXQ6IGNyZWF0ZWRBdCArIDUwMCB9XV0pLFxuICAgICk7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgbG9nOiBmYWtlTG9nKCkubG9nLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGFncy51cGRhdGUoW1wicG9zdHNcIl0sIHsgZXhwaXJlOiAzNjAwIH0pO1xuXG4gICAgLy8gT2xkZXIgdGhhbiB0aGF0IGB1cGRhdGVUYWdgLCBzbyBhIGJsb2NraW5nIHJlbmRlciwgbm90IHN0YWxlLXdoaWxlLXJldmFsaWRhdGUuXG4gICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICB9KTtcblxuICBpdChcIm1hcmtzIGEgcHJvZmlsZSdzIHJldmFsaWRhdGlvbiBzdGFsZSB1bnRpbCBpdHMgZXhwaXJlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHt9KTtcbiAgICBjb25zdCBjcmVhdGVkQXQgPSBEYXRlLm5vdygpIC0gMTAwMDtcbiAgICBhd2FpdCB0YWdzLnVwZGF0ZShbXCJhXCJdLCB7IGV4cGlyZTogMzYwMCB9KTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCBjcmVhdGVkQXQpKS50b0JlKFwic3RhbGVcIik7XG4gICAgLy8gTm90IGFuIGV4cGlyYXRpb24geWV0LCBzbyBpbXBsaWNpdCB0YWdzIGFyZSBub3QgYWZmZWN0ZWQgZWl0aGVyLlxuICAgIGV4cGVjdCh0YWdzLmV4cGlyYXRpb24oW1wiYVwiXSkpLnRvQmUoMCk7XG4gIH0pO1xuXG4gIC8vIE5leHQuanMgc3RhbXBzIGVudHJpZXMgd2l0aCBgcGVyZm9ybWFuY2UudGltZU9yaWdpbiArIHBlcmZvcm1hbmNlLm5vdygpYCxcbiAgLy8gd2hpY2ggY2FuIHJ1biBiZWhpbmQgYERhdGUubm93KClgLiBBIG1hcmtlciBzdGFtcGVkIG9uIHRoZSB3YWxsIGNsb2NrIHdvdWxkXG4gIC8vIHRoZW4gcG9zdGRhdGUgYW4gZW50cnkgcmVnZW5lcmF0ZWQgcmlnaHQgYWZ0ZXIgdGhlIHJldmFsaWRhdGlvbiwgd2hpY2hcbiAgLy8gd291bGQgcmVhZCBhcyByZXZhbGlkYXRlZCBhZ2FpbiwgYW5kIGFnYWluLlxuICBpdChcInN0YW1wcyBtYXJrZXJzIG9uIHRoZSBjbG9jayBlbnRyaWVzIGFyZSBzdGFtcGVkIHdpdGhcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHdhbGwgPSBqZXN0LnNweU9uKERhdGUsIFwibm93XCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBub3coKSArIDUwMCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe30pO1xuICAgICAgYXdhaXQgdGFncy51cGRhdGUoW1wiYVwiXSwgdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IHJlZ2VuZXJhdGVkID0gbm93KCkgKyAxO1xuICAgICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wiYVwiXSwgcmVnZW5lcmF0ZWQpKS50b0JlKFwiZnJlc2hcIik7XG4gICAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCByZWdlbmVyYXRlZCAtIDEwMCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB3YWxsLm1vY2tSZXN0b3JlKCk7XG4gICAgfVxuICB9KTtcblxuICBpdChcInJlcG9ydHMgdGhlIGxhdGVzdCBwYXN0IGV4cGlyYXRpb24gb2YgaW1wbGljaXQgdGFnc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbWFya2VycyA9IGZha2VNYXJrZXJzKFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIFRhZ01hcmtlcj4oW1xuICAgICAgICBbXCJfTl9UXy9hXCIsIHsgcmV2YWxpZGF0ZWRBdDogMTAwIH1dLFxuICAgICAgICBbXCJfTl9UXy9iXCIsIHsgc3RhbGVBdDogMTUwLCBleHBpcmVkQXQ6IDIwMCB9XSxcbiAgICAgICAgW1wiX05fVF8vY1wiLCB7IHN0YWxlQXQ6IDE1MCwgZXhwaXJlZEF0OiBEYXRlLm5vdygpICsgNjBfMDAwIH1dLFxuICAgICAgXSksXG4gICAgKTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICBsb2c6IGZha2VMb2coKS5sb2csXG4gICAgfSk7XG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiX05fVF8vYVwiLCBcIl9OX1RfL2JcIiwgXCJfTl9UXy9jXCIsIFwiX05fVF8vZFwiXSk7XG4gICAgZXhwZWN0KHRhZ3MuZXhwaXJhdGlvbihbXCJfTl9UXy9hXCIsIFwiX05fVF8vYlwiLCBcIl9OX1RfL2NcIl0pKS50b0JlKDIwMCk7XG4gICAgZXhwZWN0KHRhZ3MuZXhwaXJhdGlvbihbXCJfTl9UXy9kXCJdKSkudG9CZSgwKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBsZXQgYW4gZXZlbnR1YWxseSBjb25zaXN0ZW50IHJlYWQgdW5kbyBpdHMgb3duIHdyaXRlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtYXJrZXJzID0gZmFrZU1hcmtlcnMoKTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICBsb2c6IGZha2VMb2coKS5sb2csXG4gICAgICByZWZyZXNoSW50ZXJ2YWxNczogMCxcbiAgICB9KTtcbiAgICBhd2FpdCB0YWdzLnVwZGF0ZShbXCJhXCJdLCB1bmRlZmluZWQpO1xuICAgIC8vIFRoZSByZWFkIGRvZXMgbm90IHNob3cgdGhlIHdyaXRlIHlldC5cbiAgICBtYXJrZXJzLnJvd3MuY2xlYXIoKTtcbiAgICBhd2FpdCB0YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCBEYXRlLm5vdygpIC0gMTAwMCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICB9KTtcblxuICBpdChcInRyZWF0cyBhIGZhaWxlZCByZWFkIGFzIGZyZXNoIGFuZCB0cmllcyBhZ2FpbiBvbiB0aGUgbmV4dCByZWZyZXNoXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtYXJrZXJzID0gZmFrZU1hcmtlcnMobmV3IE1hcChbW1wiYVwiLCB7IHJldmFsaWRhdGVkQXQ6IDUwIH1dXSkpO1xuICAgIGNvbnN0IGVycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCBcImVycm9yXCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gICAgbWFya2Vycy5yZWFkLm1vY2tSZWplY3RlZFZhbHVlT25jZShuZXcgRXJyb3IoXCJ0aHJvdHRsZWRcIikpO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogbWFya2Vycy50YWJsZSxcbiAgICAgIGxvZzogZmFrZUxvZygpLmxvZyxcbiAgICAgIHJlZnJlc2hJbnRlcnZhbE1zOiAwLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiYVwiXSk7XG4gICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wiYVwiXSwgNDApKS50b0JlKFwiZnJlc2hcIik7XG4gICAgYXdhaXQgdGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wiYVwiXSwgNDApKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgICBlcnJvci5tb2NrUmVzdG9yZSgpO1xuICB9KTtcblxuICBpdChcImZvcmdldHMgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQgdGFnIHBhc3QgaXRzIGJvdW5kLCBhbmQgcmVhZHMgaXQgYWdhaW5cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycygpO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogbWFya2Vycy50YWJsZSxcbiAgICAgIGxvZzogZmFrZUxvZygpLmxvZyxcbiAgICAgIG1heFRyYWNrZWRUYWdzOiAyLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhZ3MuZW5zdXJlKFtcImFcIl0pO1xuICAgIGF3YWl0IHRhZ3MuZW5zdXJlKFtcImJcIl0pO1xuICAgIGF3YWl0IHRhZ3MuZW5zdXJlKFtcImFcIl0pOyAvLyBgYmAgaXMgbm93IHRoZSBvbGRlc3RcbiAgICBhd2FpdCB0YWdzLmVuc3VyZShbXCJjXCJdKTtcbiAgICBtYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG5cbiAgICBhd2FpdCB0YWdzLmVuc3VyZShbXCJhXCIsIFwiYlwiLCBcImNcIl0pO1xuICAgIGV4cGVjdChtYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtcImJcIl0pO1xuICB9KTtcblxuICAvLyBFdmVyeSBwYXRoIGlzIGEgdGFnIG9mIGl0cyBvd24sIHNvIGFuIGFwcCBvZiAxMDAwIHRhZ2dlZCBwYWdlcyBuZWVkcyAyMDAwOlxuICAvLyB0cmFja2VkIDEwMDAgYXQgbW9zdCwgaGFsZiBpdHMgcmVxdWVzdHMgcmUtcmVhZCBhbiBldmljdGVkIG1hcmtlci5cbiAgaXQoXCJrZWVwcyAyMDAwIHRhZ3MgYSBwYWdlIGVhY2ggdHJhY2tlZCwgd2l0aG91dCByZWFkaW5nIHRoZW0gYWdhaW5cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycygpO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogbWFya2Vycy50YWJsZSxcbiAgICAgIGxvZzogZmFrZUxvZygpLmxvZyxcbiAgICB9KTtcbiAgICBjb25zdCBwYWdlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEwMDAgfSwgKF8sIG4pID0+IFtcbiAgICAgIGBpdGVtLSR7bn1gLFxuICAgICAgYF9OX1RfL3VzZS1jYWNoZS8ke259YCxcbiAgICBdKTtcbiAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgcGFnZXMpIGF3YWl0IHRhZ3MuZW5zdXJlKHBhZ2UpO1xuICAgIG1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgcGFnZXMpIGF3YWl0IHRhZ3MuZW5zdXJlKHBhZ2UpO1xuICAgIGV4cGVjdChtYXJrZXJzLnJlYWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuXG4gIGl0KFwia2VlcHMgdGFncyBsb2NhbCB0byB0aGUgcHJvY2VzcyB3aXRob3V0IGEgdGFibGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe30pO1xuICAgIGF3YWl0IHRhZ3MuZW5zdXJlKFtcImFcIl0pO1xuICAgIGF3YWl0IHRhZ3MucmVmcmVzaCgpO1xuICAgIGF3YWl0IHRhZ3MudXBkYXRlKFtcImFcIl0sIHVuZGVmaW5lZCk7XG4gICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wiYVwiXSwgRGF0ZS5ub3coKSAtIDEwMDApKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJUcmFja2VkVGFnTWFya2VycyB3aXRoIHRoZSByZXZhbGlkYXRpb24gbG9nXCIsICgpID0+IHtcbiAgY29uc3QgSU5URVJWQUwgPSAxMDAwO1xuXG4gIC8qKiBUd28gaW5zdGFuY2VzLCBgYWAgYW5kIGBiYCwgb3ZlciBvbmUgdGFibGUgYW5kIG9uZSBjbG9jay4gKi9cbiAgZnVuY3Rpb24gaW5zdGFuY2VzKFxuICAgIG9wdGlvbnM6IHsgcmVzeW5jSW50ZXJ2YWxNcz86IG51bWJlcjsgcmFuZG9tPzogKCkgPT4gbnVtYmVyIH0gPSB7fSxcbiAgKSB7XG4gICAgY29uc3QgbWFya2VyUm93cyA9IG5ldyBNYXA8c3RyaW5nLCBUYWdNYXJrZXI+KCk7XG4gICAgY29uc3QgbG9nUm93czogUmV2YWxpZGF0aW9uTG9nUm93W10gPSBbXTtcbiAgICBjb25zdCBjbG9jayA9IGZha2VDbG9jaygpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gKCkgPT4ge1xuICAgICAgY29uc3QgbWFya2VycyA9IGZha2VNYXJrZXJzKG1hcmtlclJvd3MpO1xuICAgICAgY29uc3QgbG9nID0gZmFrZUxvZyhsb2dSb3dzKTtcbiAgICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgICBsb2c6IGxvZy5sb2csXG4gICAgICAgIHJlZnJlc2hJbnRlcnZhbE1zOiBJTlRFUlZBTCxcbiAgICAgICAgY2xvY2s6IGNsb2NrLm5vdyxcbiAgICAgICAgLy8gRHVlIGF0IHRoZSBmdWxsIGludGVydmFsIHVubGVzcyBhIHRlc3QgYXNrcyBvdGhlcndpc2UuXG4gICAgICAgIHJhbmRvbTogKCkgPT4gMCxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgbWFya2VycywgbG9nLCB0YWdzIH07XG4gICAgfTtcbiAgICByZXR1cm4geyBjbG9jaywgbG9nUm93cywgaW5zdGFuY2UsIGE6IGluc3RhbmNlKCksIGI6IGluc3RhbmNlKCkgfTtcbiAgfVxuXG4gIGNvbnN0IGNyZWF0ZWRBdCA9ICgpID0+IG5vdygpIC0gMTAwMDtcblxuICBpdChcInJlYWNoZXMgYW5vdGhlciBpbnN0YW5jZSB3aXRoaW4gb25lIGludGVydmFsLCBpbiBvbmUgUXVlcnkgYW5kIG5vIEJhdGNoR2V0SXRlbVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYSwgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG5cbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChhLmxvZy5wdXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgXCJwb3N0c1wiLFxuICAgICAgY2xvY2suYXQsXG4gICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7IHJldmFsaWRhdGVkQXQ6IGV4cGVjdC5hbnkoTnVtYmVyKSB9KSxcbiAgICApO1xuXG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBjcmVhdGVkQXQoKSkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIGV4cGVjdChiLm1hcmtlcnMucmVhZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoXCJpc3N1ZXMgbm8gcmVhZCB3aGlsZSB0aGUgaW50ZXJ2YWwgaGFzIG5vdCBwYXNzZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY2xvY2ssIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIC8vIE5vdGhpbmcgdHJhY2tlZDogbm90aGluZyB0byBhc2suXG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcblxuICAgIGIubWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgIC8vIFRoYXQgcmVmcmVzaCBzdGlsbCBjb3VudHM6IHdoYXQgaXMgdHJhY2tlZCBzaW5jZSB3YXMgcmVhZCwgb3IgaXMgbmV3LlxuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2IudGFncy5yZWZyZXNoKCksIGIudGFncy5yZWZyZXNoKCldKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcblxuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMIC0gMTtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIGV4cGVjdChiLm1hcmtlcnMucmVhZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgIGNsb2NrLmF0ICs9IDE7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgfSk7XG5cbiAgaXQoXCJhc2tzIHdpdGggbm90aGluZyB0cmFja2VkIG9uY2UgYW4gZW50cnkgc3RvcmUgcmVsaWVzIG9uIHRoZSBsb2dcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY2xvY2ssIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIGIudGFncy5qdWRnZUVudHJpZXNPZigoKSA9PiBJbmZpbml0eSk7XG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoXCJhcHBsaWVzIGEgcm93IHJlYWQgYWdhaW4gaW5zaWRlIHRoZSBsb29rYmFjayBvbmx5IG9uY2VcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY2xvY2ssIGxvZ1Jvd3MsIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wicG9zdHNcIl0pO1xuICAgIGIubWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgIGxldCByZWFkcyA9IDA7XG4gICAgY29uc3Qgcm93OiBSZXZhbGlkYXRpb25Mb2dSb3cgPSB7XG4gICAgICBzazogYCR7Y2xvY2suYXR9I3Bvc3RzYCxcbiAgICAgIGF0OiBjbG9jay5hdCxcbiAgICAgIHRhZzogXCJwb3N0c1wiLFxuICAgICAgZ2V0IG1hcmtlcigpIHtcbiAgICAgICAgcmVhZHMrKztcbiAgICAgICAgcmV0dXJuIHsgcmV2YWxpZGF0ZWRBdDogbm93KCkgfTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICAvLyBUaGUgc2FtZSByb3cgdHdpY2UgaW4gb25lIHBhZ2UsIGFuZCBhZ2FpbiBvbiB0aGUgbmV4dCBxdWVyeS5cbiAgICBsb2dSb3dzLnB1c2gocm93LCByb3cpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICB9XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMyk7XG4gICAgZXhwZWN0KHJlYWRzKS50b0JlKDEpO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gIH0pO1xuXG4gIC8vIFJlcGxpY2F0aW9uIGxhZywgb3IgYSB3cml0ZXIgd2hvc2UgY2xvY2sgcnVucyBiZWhpbmQ6IHRoZSByb3cgc2hvd3MgdXBcbiAgLy8gYWZ0ZXIgYSBxdWVyeSB0aGF0IHNob3VsZCBoYXZlIHNlZW4gaXQsIHdpdGggYSBzb3J0IGtleSBiZWZvcmUgaXQuXG4gIGl0KFwic3RpbGwgc2VlcyBhIHJvdyB0aGF0IGFwcGVhcnMgdXAgdG8gdGhlIGxvb2tiYWNrIGxhdGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY2xvY2ssIGxvZ1Jvd3MsIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wibGF0ZVwiLCBcInRvby1sYXRlXCJdKTtcbiAgICBiLm1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBjb25zdCBmaXJzdFF1ZXJ5ID0gY2xvY2suYXQ7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcblxuICAgIGNvbnN0IG1hcmtlciA9IHsgcmV2YWxpZGF0ZWRBdDogbm93KCkgfTtcbiAgICBsb2dSb3dzLnB1c2goXG4gICAgICB7IHNrOiBcImxhdGVcIiwgYXQ6IGZpcnN0UXVlcnkgLSA1MDAwLCB0YWc6IFwibGF0ZVwiLCBtYXJrZXIgfSxcbiAgICAgIHsgc2s6IFwidG9vLWxhdGVcIiwgYXQ6IGZpcnN0UXVlcnkgLSA1MDAxLCB0YWc6IFwidG9vLWxhdGVcIiwgbWFya2VyIH0sXG4gICAgKTtcbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoKGZpcnN0UXVlcnkgLSA1MDAwKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcImxhdGVcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgLy8gUGFzdCB0aGUgbG9va2JhY2s6IHdoYXQgdGhlIHBlcmlvZGljIHJlLXJlYWQgb2YgdGhlIG1hcmtlcnMgaXMgZm9yLlxuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1widG9vLWxhdGVcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImZyZXNoXCIpO1xuICB9KTtcblxuICBpdChcImZvcmdldHMgaXRzIHRyYWNrZWQgbWFya2VycyBhZnRlciBhIGdhcCB0aGUgbG9nIG1heSBub3QgY292ZXIsIGFuZCByZWFkcyBlYWNoIGFzIGl0IGlzIG5lZWRlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYSwgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiLCBcIm90aGVyXCJdKTtcbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuXG4gICAgY2xvY2suYXQgKz0gTUFYX1JFVkFMSURBVElPTl9MT0dfR0FQX01TICsgMTtcbiAgICBjb25zdCBnYXBFbmQgPSBjbG9jay5hdDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIC8vIE5vIGJ1cnN0IG9mIHJlLXJlYWRzLCBhbmQgbm8gcXVlcnkgb2YgYSBsb2cgdGhhdCBtYXkgaGF2ZSBsb3N0IHJvd3MuXG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoW1wicG9zdHNcIl0pO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG5cbiAgICAvLyBUaGVuIGJhY2sgb24gdGhlIGxvZywgZnJvbSBqdXN0IGJlZm9yZSB0aGUgZ2FwIGVuZGVkLlxuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChnYXBFbmQgLSA1MDAwKTtcbiAgfSk7XG5cbiAgLy8gUmUtcmVhZGluZyBldmVyeSB0cmFja2VkIG1hcmtlciBhdCBvbmNlIGlzIH41LDAwMCBSQ1UgYXQgMTAsMDAwIHRhZ3M6IG1vcmVcbiAgLy8gdGhhbiB0aGUgb25lIHBhcnRpdGlvbiBzZXJ2ZXMgaW4gYSBzZWNvbmQuXG4gIGl0KFwicmUtcmVhZHMgZWFjaCB0cmFja2VkIG1hcmtlciBvbmNlIHBlciByZXN5bmMgaW50ZXJ2YWwsIGF0IG1vc3QgMTAwIGEgcmVmcmVzaFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYiB9ID0gaW5zdGFuY2VzKHsgcmVzeW5jSW50ZXJ2YWxNczogMTAgKiBJTlRFUlZBTCB9KTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKEFycmF5LmZyb20oeyBsZW5ndGg6IDI1MCB9LCAoXywgaSkgPT4gYHQke2l9YCkpO1xuICAgIGIubWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgIGNvbnN0IHNpemVzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDE0OyBpKyspIHtcbiAgICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG4gICAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgICAgc2l6ZXMucHVzaChiLm1hcmtlcnMucmVhZC5tb2NrLmNhbGxzWzBdPy5bMF0ubGVuZ3RoID8/IDApO1xuICAgIH1cbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxNCk7XG4gICAgLy8gRHVlIGF0IDEwIGludGVydmFscywgb2xkZXN0IGZpcnN0LCAxMDAgcGVyIHJlZnJlc2g7IHRoZW4gbm90IGFnYWluLlxuICAgIGV4cGVjdChzaXplcykudG9FcXVhbChbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwLCAxMDAsIDUwLCAwLCAwXSk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICAvLyBUYWdzIGZpcnN0IHJlYWQgdG9nZXRoZXIgbXVzdCBub3QgY29tZSBkdWUgdG9nZXRoZXIgZXZlcnkgaW50ZXJ2YWwuXG4gIGl0KFwic3ByZWFkcyB3aGVuIGVhY2ggdGFnIGNvbWVzIGR1ZSBvdmVyIHRoZSBsYXN0IHF1YXJ0ZXIgb2YgdGhlIGludGVydmFsXCIsIGFzeW5jICgpID0+IHtcbiAgICAvLyBEdWUgYXQgMTAsIDguNzUgYW5kIDcuNSBpbnRlcnZhbHMsIGtub3duIGluIHRoYXQgb3JkZXI6IHRoZSBvbmUgZHVlXG4gICAgLy8gZmlyc3QgaXMgbGFzdCwgYmVoaW5kIHR3byB0aGF0IGFyZSBub3QgZHVlIHlldC5cbiAgICBjb25zdCByYW5kb21zID0gWzAsIDAuNSwgMV07XG4gICAgY29uc3QgeyBjbG9jaywgYiB9ID0gaW5zdGFuY2VzKHtcbiAgICAgIHJlc3luY0ludGVydmFsTXM6IDEwICogSU5URVJWQUwsXG4gICAgICByYW5kb206ICgpID0+IHJhbmRvbXMuc2hpZnQoKSA/PyAwLFxuICAgIH0pO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wibGF0ZVwiLCBcIm1pZGRsZVwiLCBcImVhcmx5XCJdKTtcbiAgICBiLm1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcbiAgICBjb25zdCByZWFkQXQ6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMDsgaSsrKSB7XG4gICAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICAgIGIubWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICAgIGZvciAoY29uc3QgdGFnIG9mIGIubWFya2Vycy5yZWFkLm1vY2suY2FsbHNbMF0/LlswXSA/PyBbXSkge1xuICAgICAgICByZWFkQXRbdGFnXSA/Pz0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXhwZWN0KHJlYWRBdCkudG9FcXVhbCh7IGVhcmx5OiA4LCBtaWRkbGU6IDksIGxhdGU6IDEwIH0pO1xuICB9KTtcblxuICBpdChcInJlLXJlYWRzIGEgbWFya2VyIGl0IGxlYXJuZWQgb2YgZnJvbSBpdHMgb3duIHdyaXRlIG9ubHkgb25jZSB0aGF0IGlzIGR1ZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYSB9ID0gaW5zdGFuY2VzKHsgcmVzeW5jSW50ZXJ2YWxNczogMTAgKiBJTlRFUlZBTCB9KTtcbiAgICBhd2FpdCBhLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBjbG9jay5hdCArPSA5ICogSU5URVJWQUw7XG4gICAgYXdhaXQgYS50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBjbG9jay5hdCArPSAyICogSU5URVJWQUw7XG4gICAgYXdhaXQgYS50YWdzLnJlZnJlc2goKTtcbiAgICAvLyBSZWFkIDExIGludGVydmFscyBhZ28sIGJ1dCB3cml0dGVuIC0gc28ga25vd24gLSAyIGludGVydmFscyBhZ28uXG4gICAgZXhwZWN0KGEubWFya2Vycy5yZWFkKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gIH0pO1xuXG4gIGl0KFwicmVhZHMgYSB0YWcgd2hvc2UgZmlyc3QgcmVhZCBmYWlsZWQgYWdhaW4gb24gdGhlIG5leHQgcmVmcmVzaFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBqZXN0LnNweU9uKGNvbnNvbGUsIFwiZXJyb3JcIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgICBjb25zdCB7IGNsb2NrLCBhLCBiIH0gPSBpbnN0YW5jZXMoKTtcbiAgICAvLyBPbmx5IHRoZSBtYXJrZXIgcm93IGhhcyBpdCwgc28gb25seSByZWFkaW5nIHRoZSBtYXJrZXIgZmluZHMgaXQuXG4gICAgYS5sb2cucHV0Lm1vY2tSZWplY3RlZFZhbHVlT25jZShuZXcgRXJyb3IoXCJ0aHJvdHRsZWRcIikpO1xuICAgIGF3YWl0IGEudGFncy51cGRhdGUoW1wicG9zdHNcIl0sIHVuZGVmaW5lZCk7XG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja1JlamVjdGVkVmFsdWVPbmNlKG5ldyBFcnJvcihcInRocm90dGxlZFwiKSk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZnJlc2hcIik7XG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG5cbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLm1hcmtlcnMucmVhZCkudG9IYXZlQmVlbkxhc3RDYWxsZWRXaXRoKFtcInBvc3RzXCJdKTtcbiAgICAvLyBUaGUgcmUtcmVhZCBydW5zIGFsb25nc2lkZSB0aGUgcXVlcnksIG5vdCB3YWl0ZWQgZm9yIGJ5IGByZWZyZXNoYC5cbiAgICBhd2FpdCBiLm1hcmtlcnMucmVhZC5tb2NrLnJlc3VsdHMuYXQoLTEpIS52YWx1ZTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0SW1tZWRpYXRlKHJlc29sdmUpKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBjcmVhdGVkQXQoKSkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIGVycm9yLm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KFwiZm9yZ2V0cyBpdHMgdHJhY2tlZCBtYXJrZXJzIHdoZW4gdGhlIGxvZyBoYXMgbW9yZSByb3dzIHRoYW4gb25lIHF1ZXJ5IHJlYWRzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBiIH0gPSBpbnN0YW5jZXMoKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBiLmxvZy5xdWVyeS5tb2NrUmVzb2x2ZWRWYWx1ZU9uY2UoeyByb3dzOiBbXSwgdHJ1bmNhdGVkOiB0cnVlIH0pO1xuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG4gIH0pO1xuXG4gIC8vIFRyYWNraW5nIGlzIHBlciB0YWcsIG5vdCBwZXIgZW50cnk6IHN0b3JpbmcgYSBuZXcgZW50cnkgbXVzdCBub3Qgdm91Y2ggZm9yXG4gIC8vIGFuIG9sZGVyIG9uZSB3aXRoIHRoZSBzYW1lIHRhZy4gQidzIGxvZyBjdXJzb3Igc3RhcnRzIGFmdGVyIEMnc1xuICAvLyByZXZhbGlkYXRpb24sIHNvIG9ubHkgcmVhZGluZyB0aGUgbWFya2VyIHNob3dzIGl0LlxuICBpdChcInN0aWxsIHJlYWRzIGEgdGFnJ3MgbWFya2VyIGFmdGVyIHN0b3JpbmcgYW4gZW50cnkgd2l0aCBpdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgaW5zdGFuY2UsIGE6IGMgfSA9IGluc3RhbmNlcygpO1xuICAgIGNvbnN0IGsxQ3JlYXRlZEF0ID0gY3JlYXRlZEF0KCk7XG4gICAgYXdhaXQgYy50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBjbG9jay5hdCArPSAxMF8wMDA7XG4gICAgLy8gU3RhcnRlZCBhZnRlciB0aGUgcmV2YWxpZGF0aW9uOiBpdHMgbG9nIGN1cnNvciBpcyBwYXN0IEMncyByb3cuXG4gICAgY29uc3QgYiA9IGluc3RhbmNlKCk7XG4gICAgYi50YWdzLnRyYWNrKFtcInBvc3RzXCJdKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBleHBlY3QoYi5tYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFtcInBvc3RzXCJdKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBrMUNyZWF0ZWRBdCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICB9KTtcblxuICBpdChcInN0aWxsIHJlYWRzIGEgdGFnJ3MgbWFya2VyIGFmdGVyIHN0b3JpbmcgYW4gZW50cnkgd2l0aCBpdCBmb2xsb3dpbmcgYSBmb3JnZXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY2xvY2ssIGEsIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wicG9zdHNcIl0pO1xuICAgIGNvbnN0IGsxQ3JlYXRlZEF0ID0gY3JlYXRlZEF0KCk7XG4gICAgLy8gUmV2YWxpZGF0ZWQgd2hpbGUgYGJgIHdhcyBmcm96ZW4gcGFzdCB3aGF0IHRoZSBsb2cgY292ZXJzLlxuICAgIGNsb2NrLmF0ICs9IE1BWF9SRVZBTElEQVRJT05fTE9HX0dBUF9NUyArIDE7XG4gICAgYS5sb2cucHV0Lm1vY2tSZWplY3RlZFZhbHVlT25jZShuZXcgRXJyb3IoXCJsb3N0XCIpKTtcbiAgICBjb25zdCBlcnJvciA9IGplc3Quc3B5T24oY29uc29sZSwgXCJlcnJvclwiKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge30pO1xuICAgIGF3YWl0IGEudGFncy51cGRhdGUoW1wicG9zdHNcIl0sIHVuZGVmaW5lZCk7XG4gICAgZXJyb3IubW9ja1Jlc3RvcmUoKTtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGIudGFncy50cmFjayhbXCJwb3N0c1wiXSk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgazFDcmVhdGVkQXQpKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJhcHBsaWVzIGEgbG9nIHJvdyB0aGF0IGxhbmRzIHdoaWxlIHRoZSB0YWcncyBmaXJzdCByZWFkIGlzIGluIGZsaWdodFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYSwgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgLy8gU29tZXRoaW5nIHRyYWNrZWQsIHNvIHRoZSByZWZyZXNoIHF1ZXJpZXMgdGhlIGxvZy5cbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcIm90aGVyXCJdKTtcbiAgICBsZXQgYW5zd2VyITogKHJlYWQ6IE1hcDxzdHJpbmcsIFRhZ01hcmtlcj4pID0+IHZvaWQ7XG4gICAgLy8gQW5zd2VyZWQgYmVmb3JlIHRoZSByZXZhbGlkYXRpb24gYmVsb3csIGFzIGEgcmVhZCByYWNpbmcgaXQgY2FuIGJlLlxuICAgIGIubWFya2Vycy5yZWFkLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoXG4gICAgICAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gKGFuc3dlciA9IHJlc29sdmUpKSxcbiAgICApO1xuICAgIGNvbnN0IGZpcnN0ID0gYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgYXdhaXQgYS50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGFuc3dlcihuZXcgTWFwKCkpO1xuICAgIGF3YWl0IGZpcnN0O1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gIH0pO1xuXG4gIGl0KFwiaXMgdmlzaWJsZSBhdCBvbmNlIG9uIHRoZSBpbnN0YW5jZSB0aGF0IHJhbiB1cGRhdGVUYWdcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgYSB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYS50YWdzLnRyYWNrKFtcInBvc3RzXCJdKTtcbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChhLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgZXhwZWN0KGEubWFya2Vycy53cml0ZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIGV4cGVjdChhLmxvZy5wdXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoXCJrZWVwcyBpdHMgdGFncyB0aHJvdWdoIGEgZmFpbGVkIHF1ZXJ5IGFuZCBhc2tzIGFnYWluIG5leHQgaW50ZXJ2YWxcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCBcImVycm9yXCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gICAgY29uc3QgeyBjbG9jaywgYSwgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG4gICAgYXdhaXQgYS50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBiLmxvZy5xdWVyeS5tb2NrUmVqZWN0ZWRWYWx1ZU9uY2UobmV3IEVycm9yKFwidGhyb3R0bGVkXCIpKTtcblxuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGNvbnN0IGN1cnNvciA9IGNsb2NrLmF0IC0gSU5URVJWQUwgLSA1MDAwO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZnJlc2hcIik7XG4gICAgZXhwZWN0KGVycm9yKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIC8vIEZyb20gdGhlIHNhbWUgY3Vyc29yLCBzbyBub3RoaW5nIHdyaXR0ZW4gbWVhbndoaWxlIGlzIHNraXBwZWQuXG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoY3Vyc29yKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBjcmVhdGVkQXQoKSkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIGV4cGVjdChiLm1hcmtlcnMucmVhZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBlcnJvci5tb2NrUmVzdG9yZSgpO1xuICB9KTtcblxuICBpdChcInN0aWxsIHdyaXRlcyB0aGUgbWFya2VyIHdoZW4gdGhlIGxvZyByb3cgZmFpbHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCBcImVycm9yXCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gICAgY29uc3QgeyBhIH0gPSBpbnN0YW5jZXMoKTtcbiAgICBhLmxvZy5wdXQubW9ja1JlamVjdGVkVmFsdWVPbmNlKG5ldyBFcnJvcihcInRocm90dGxlZFwiKSk7XG4gICAgYXdhaXQgYS50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBleHBlY3QoYS5tYXJrZXJzLnJvd3MuZ2V0KFwicG9zdHNcIik/LnJldmFsaWRhdGVkQXQpLnRvRXF1YWwoXG4gICAgICBleHBlY3QuYW55KE51bWJlciksXG4gICAgKTtcbiAgICBleHBlY3QoZXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9yZXZhbGlkYXRpb24gbG9nLyksXG4gICAgICBleHBlY3QuYW55KEVycm9yKSxcbiAgICApO1xuICAgIGVycm9yLm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiRW50cnlMcnVcIiwgKCkgPT4ge1xuICBpdChcImV2aWN0cyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCBlbnRyaWVzIHBhc3QgaXRzIGJ5dGUgYm91bmRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgyNTApO1xuICAgIGxydS5zZXQoXCJhXCIsIHN0b3JlZCgxMDApKTtcbiAgICBscnUuc2V0KFwiYlwiLCBzdG9yZWQoMTAwKSk7XG4gICAgbHJ1LmdldChcImFcIik7XG4gICAgbHJ1LnNldChcImNcIiwgc3RvcmVkKDEwMCkpO1xuICAgIGV4cGVjdChscnUuZ2V0KFwiYlwiKSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChscnUuZ2V0KFwiYVwiKSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QobHJ1LmdldChcImNcIikpLnRvQmVEZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KFwiZG9lcyBub3Qga2VlcCBhbiBlbnRyeSBsYXJnZXIgdGhhbiB0aGUgd2hvbGUgYm91bmRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSg1MCk7XG4gICAgbHJ1LnNldChcImFcIiwgc3RvcmVkKDEwMCkpO1xuICAgIGV4cGVjdChscnUuc2l6ZSkudG9CZSgwKTtcbiAgfSk7XG5cbiAgaXQoXCJhY2NvdW50cyBmb3IgYSByZXBsYWNlZCBlbnRyeVwiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDI1MCk7XG4gICAgbHJ1LnNldChcImFcIiwgc3RvcmVkKDIwMCkpO1xuICAgIGxydS5zZXQoXCJhXCIsIHN0b3JlZCgxMCkpO1xuICAgIGxydS5zZXQoXCJiXCIsIHN0b3JlZCgyMDApKTtcbiAgICBleHBlY3QobHJ1LnNpemUpLnRvQmUoMik7XG4gIH0pO1xuXG4gIGl0KFwiZHJvcHMgdGhlIGVudHJpZXMgcGFzdCByZXZhbGlkYXRlXCIsICgpID0+IHtcbiAgICBjb25zdCBscnUgPSBuZXcgRW50cnlMcnUoMTAwMCk7XG4gICAgbHJ1LnNldChcIm9sZFwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogMTAwMCwgcmV2YWxpZGF0ZTogMSB9KSk7XG4gICAgbHJ1LnNldChcIm5ld1wiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogMTUwMCwgcmV2YWxpZGF0ZTogMSB9KSk7XG4gICAgZXhwZWN0KGxydS5ob2xkc0xpdmUoMjAwMSkpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KGxydS5ob2xkc0xpdmUoMjUwMSkpLnRvQmUoZmFsc2UpO1xuICAgIC8vIEFza2luZyBpcyBub3QgYSB1c2U6IHRoZSBlbnRyaWVzIGdvIGluIGBvbGRlc3RUaW1lc3RhbXBgJ3Mgc2Nhbi5cbiAgICBleHBlY3QobHJ1LnNpemUpLnRvQmUoMik7XG4gIH0pO1xuXG4gIGl0KFwiZHJvcHMgdGhlIGVudHJpZXMgcGFzdCByZXZhbGlkYXRlIGFzIGl0IGZpbmRzIHRoZSBvbGRlc3RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgxMDAwKTtcbiAgICBscnUuc2V0KFwib2xkXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxMDAwLCByZXZhbGlkYXRlOiAxIH0pKTtcbiAgICBscnUuc2V0KFwibmV3XCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxNTAwLCByZXZhbGlkYXRlOiAxIH0pKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgyMDAxKSkudG9CZSgxNTAwKTtcbiAgICBleHBlY3QobHJ1LnNpemUpLnRvQmUoMSk7XG4gICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoKSkudG9CZSgxNTAwKTtcbiAgfSk7XG5cbiAgaXQoXCJrbm93cyBpdHMgb2xkZXN0IGVudHJ5J3MgdGltZXN0YW1wIGFzIGVudHJpZXMgY29tZSBhbmQgZ29cIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgyNTApO1xuICAgIGV4cGVjdChscnUub2xkZXN0VGltZXN0YW1wKCkpLnRvQmUoSW5maW5pdHkpO1xuICAgIGxydS5zZXQoXCJhXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAyIH0pKTtcbiAgICBscnUuc2V0KFwiYlwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogMSB9KSk7XG4gICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoKSkudG9CZSgxKTtcbiAgICBscnUuZGVsZXRlKFwiYlwiKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgpKS50b0JlKDIpO1xuICAgIC8vIEV2aWN0ZWQgZm9yIHNwYWNlLlxuICAgIGxydS5zZXQoXCJjXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAzIH0pKTtcbiAgICBscnUuc2V0KFwiZFwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogNCB9KSk7XG4gICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoKSkudG9CZSgzKTtcbiAgfSk7XG5cbiAgaXQoXCJzdGFydHMgaXRzIGJvdW5kIGFmcmVzaCBvbmNlIGVtcHRpZWRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgxMDAwKTtcbiAgICBscnUuc2V0KFwiYVwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogMTAwIH0pKTtcbiAgICBscnUuZGVsZXRlKFwiYVwiKTtcbiAgICBscnUuc2V0KFwiYlwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogNTAwMCB9KSk7XG4gICAgZXhwZWN0KGxydS5vbGRlc3RCb3VuZCgpKS50b0JlKDUwMDApO1xuICB9KTtcblxuICBpdChcImRyb3BzIHRoZSBleHBpcmVkIGVudHJpZXMgbGVhc3QgcmVjZW50bHkgdXNlZCBhcyBpdCBib3VuZHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgxMDAwKTtcbiAgICBscnUuc2V0KFwib2xkXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxMDAwLCByZXZhbGlkYXRlOiAxIH0pKTtcbiAgICBscnUuc2V0KFwibGl2ZVwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogMTUwMCwgcmV2YWxpZGF0ZTogMTAgfSkpO1xuICAgIGxydS5zZXQoXCJiZWhpbmRcIiwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXA6IDEyMDAsIHJldmFsaWRhdGU6IDEgfSkpO1xuICAgIC8vIFVwIHRvIHRoZSBmaXJzdCBsaXZlIGVudHJ5OiBubyBzY2FuIHBhc3QgaXQuXG4gICAgZXhwZWN0KGxydS5vbGRlc3RCb3VuZCgyMzAwKSkudG9CZSgxMDAwKTtcbiAgICBleHBlY3QobHJ1LnNpemUpLnRvQmUoMik7XG4gICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoMjMwMCkpLnRvQmUoMTUwMCk7XG4gIH0pO1xuXG4gIGl0KFwiYm91bmRzIGl0cyBvbGRlc3QgZW50cnkncyB0aW1lc3RhbXAgZnJvbSBiZWxvdyBiZXR3ZWVuIHNjYW5zXCIsICgpID0+IHtcbiAgICBjb25zdCBscnUgPSBuZXcgRW50cnlMcnUoMTAwMCk7XG4gICAgY29uc3QgaGVsZCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgbGV0IHNlZWQgPSA3O1xuICAgIGNvbnN0IHJhbmRvbSA9ICgpID0+IChzZWVkID0gKHNlZWQgKiAxNjgwNykgJSAyMTQ3NDgzNjQ3KSAvIDIxNDc0ODM2NDc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGBrJHtNYXRoLmZsb29yKHJhbmRvbSgpICogNTApfWA7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKHJhbmRvbSgpICogMTBfMDAwKTtcbiAgICAgIGlmIChyYW5kb20oKSA8IDAuMikge1xuICAgICAgICBscnUuZGVsZXRlKGtleSk7XG4gICAgICAgIGhlbGQuZGVsZXRlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBscnUuc2V0KGtleSwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXAgfSkpO1xuICAgICAgICBoZWxkLmRlbGV0ZShrZXkpO1xuICAgICAgICBoZWxkLnNldChrZXksIHRpbWVzdGFtcCk7XG4gICAgICAgIHdoaWxlIChoZWxkLnNpemUgPiBscnUuc2l6ZSkge1xuICAgICAgICAgIGhlbGQuZGVsZXRlKGhlbGQua2V5cygpLm5leHQoKS52YWx1ZSEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBvbGRlc3QgPSBNYXRoLm1pbihJbmZpbml0eSwgLi4uaGVsZC52YWx1ZXMoKSk7XG4gICAgICBleHBlY3QobHJ1Lm9sZGVzdEJvdW5kKCkpLnRvQmVMZXNzVGhhbk9yRXF1YWwob2xkZXN0KTtcbiAgICAgIGlmIChpICUgMTAwID09PSAwKSB7XG4gICAgICAgIGV4cGVjdChscnUub2xkZXN0VGltZXN0YW1wKCkpLnRvQmUob2xkZXN0KTtcbiAgICAgICAgZXhwZWN0KGxydS5vbGRlc3RCb3VuZCgpKS50b0JlKG9sZGVzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGhlbGQua2V5cygpKSB7XG4gICAgICBscnUuZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIGV4cGVjdChscnUub2xkZXN0Qm91bmQoKSkudG9CZShJbmZpbml0eSk7XG4gIH0pO1xuXG4gIGl0KFwia25vd3MgaXRzIG9sZGVzdCBlbnRyeSdzIHRpbWVzdGFtcCB1bmRlciBldmljdGlvbiBjaHVyblwiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDEwMDApO1xuICAgIGNvbnN0IGhlbGQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGxldCBzZWVkID0gMTtcbiAgICBjb25zdCByYW5kb20gPSAoKSA9PiAoc2VlZCA9IChzZWVkICogMTY4MDcpICUgMjE0NzQ4MzY0NykgLyAyMTQ3NDgzNjQ3O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjAwMDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBgayR7TWF0aC5mbG9vcihyYW5kb20oKSAqIDUwKX1gO1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gTWF0aC5mbG9vcihyYW5kb20oKSAqIDEwXzAwMCk7XG4gICAgICBpZiAocmFuZG9tKCkgPCAwLjIpIHtcbiAgICAgICAgbHJ1LmRlbGV0ZShrZXkpO1xuICAgICAgICBoZWxkLmRlbGV0ZShrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbHJ1LnNldChrZXksIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wIH0pKTtcbiAgICAgICAgaGVsZC5kZWxldGUoa2V5KTtcbiAgICAgICAgaGVsZC5zZXQoa2V5LCB0aW1lc3RhbXApO1xuICAgICAgICAvLyBFdmljdGVkIGxlYXN0IHJlY2VudGx5IHVzZWQgZmlyc3QsIGFzIHRoZSBzdG9yZSBkb2VzLlxuICAgICAgICB3aGlsZSAoaGVsZC5zaXplID4gbHJ1LnNpemUpIHtcbiAgICAgICAgICBoZWxkLmRlbGV0ZShoZWxkLmtleXMoKS5uZXh0KCkudmFsdWUhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoKSkudG9CZShNYXRoLm1pbihJbmZpbml0eSwgLi4uaGVsZC52YWx1ZXMoKSkpO1xuICAgIH1cbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJlbnRyaWVzXCIsICgpID0+IHtcbiAgaXQoXCJyZWFkcyBhIHN0cmVhbSB0byB0aGUgZW5kXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBieXRlcyA9IGF3YWl0IHJlYWRTdHJlYW0oc3RyZWFtT2YoXCJhYlwiLCBcImNkXCIpKTtcbiAgICBleHBlY3QobmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGJ5dGVzKSkudG9CZShcImFiY2RcIik7XG4gIH0pO1xuXG4gIGl0KFwicmVqZWN0cyBhIHN0cmVhbSB0aGF0IGVycm9ycyBwYXJ0LXdheVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZmFpbGluZyA9IG5ldyBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pih7XG4gICAgICBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheShbMV0pKTtcbiAgICAgICAgY29udHJvbGxlci5lcnJvcihuZXcgRXJyb3IoXCJyZW5kZXIgZmFpbGVkXCIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgYXdhaXQgZXhwZWN0KHJlYWRTdHJlYW0oZmFpbGluZykpLnJlamVjdHMudG9UaHJvdyhcInJlbmRlciBmYWlsZWRcIik7XG4gIH0pO1xuXG4gIGl0KFwiaGFuZHMgZXZlcnkgcmVhZGVyIGl0cyBvd24gc3RyZWFtXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBlbnRyeTogQ2FjaGVFbnRyeSA9IHtcbiAgICAgIHZhbHVlOiBzdHJlYW1PZihcInBheWxvYWRcIiksXG4gICAgICB0YWdzOiBbXCJ0XCJdLFxuICAgICAgc3RhbGU6IDEsXG4gICAgICB0aW1lc3RhbXA6IDIsXG4gICAgICBleHBpcmU6IDMsXG4gICAgICByZXZhbGlkYXRlOiA0LFxuICAgIH07XG4gICAgY29uc3Qga2VwdCA9IGF3YWl0IHN0b3JlZEVudHJ5T2YoUHJvbWlzZS5yZXNvbHZlKGVudHJ5KSk7XG4gICAgY29uc3QgZmlyc3QgPSBjYWNoZUVudHJ5T2Yoa2VwdCk7XG4gICAgY29uc3Qgc2Vjb25kID0gY2FjaGVFbnRyeU9mKGtlcHQsIC0xKTtcbiAgICBleHBlY3Qoc2Vjb25kLnJldmFsaWRhdGUpLnRvQmUoLTEpO1xuICAgIGV4cGVjdChmaXJzdC50YWdzKS50b0VxdWFsKFtcInRcIl0pO1xuICAgIGV4cGVjdChuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYXdhaXQgcmVhZFN0cmVhbShmaXJzdC52YWx1ZSkpKS50b0JlKFxuICAgICAgXCJwYXlsb2FkXCIsXG4gICAgKTtcbiAgICBleHBlY3QobmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGF3YWl0IHJlYWRTdHJlYW0oc2Vjb25kLnZhbHVlKSkpLnRvQmUoXG4gICAgICBcInBheWxvYWRcIixcbiAgICApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlBlbmRpbmdTZXRzXCIsICgpID0+IHtcbiAgaXQoXCJob2xkcyBhIGdldCB1bnRpbCB0aGUgc2V0IGZvciBpdHMga2V5IGVuZHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBlbmRpbmcgPSBuZXcgUGVuZGluZ1NldHMoKTtcbiAgICBjb25zdCBkb25lID0gcGVuZGluZy5iZWdpbihcImtcIik7XG4gICAgbGV0IHdhaXRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHdhaXQgPSBwZW5kaW5nLndhaXQoXCJrXCIpLnRoZW4oKCkgPT4gKHdhaXRlZCA9IHRydWUpKTtcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBleHBlY3Qod2FpdGVkKS50b0JlKGZhbHNlKTtcbiAgICBkb25lKCk7XG4gICAgYXdhaXQgd2FpdDtcbiAgICBleHBlY3Qod2FpdGVkKS50b0JlKHRydWUpO1xuICAgIC8vIE5vdGhpbmcgcGVuZGluZzogbm8gd2FpdCBhdCBhbGwuXG4gICAgYXdhaXQgcGVuZGluZy53YWl0KFwia1wiKTtcbiAgICBhd2FpdCBwZW5kaW5nLndhaXQoXCJvdGhlclwiKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJzaGFyZWRUYWdNYW5pZmVzdFwiLCAoKSA9PiB7XG4gIGl0KFwiYm91bmRzIGVhY2ggcmV2YWxpZGF0aW9uIHRhYmxlIHJlcXVlc3QsIGZhaWxpbmcgaXQgb25jZSB0aW1lZCBvdXRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGdsb2JhbCA9IGdsb2JhbFRoaXMgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj47XG4gICAgcHJvY2Vzcy5lbnYuQ0RLX05FWFRKU19SRVZBTElEQVRJT05fVEFCTEVfTkFNRSA9IFwidGFibGVcIjtcbiAgICB0cnkge1xuICAgICAgc2hhcmVkVGFnTWFuaWZlc3QoKTtcbiAgICAgIC8vIEEgdGltZW91dCB0aGF0IG9ubHkgd2FybnMgbGVhdmVzIGEgcmVxdWVzdCBvbiBhIGRlYWQgY29ubmVjdGlvbiwgYW5kXG4gICAgICAvLyBldmVyeSByZXF1ZXN0IHdhaXRpbmcgb24gdGhlIHJlZnJlc2gsIGhhbmdpbmcuXG4gICAgICBleHBlY3QoRHluYW1vREJDbGllbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICAgICAgcmVxdWVzdEhhbmRsZXI6IHtcbiAgICAgICAgICAgIHJlcXVlc3RUaW1lb3V0OiBUQUdfVEFCTEVfUkVRVUVTVF9USU1FT1VUX01TLFxuICAgICAgICAgICAgdGhyb3dPblJlcXVlc3RUaW1lb3V0OiB0cnVlLFxuICAgICAgICAgICAgc29ja2V0VGltZW91dDogVEFHX1RBQkxFX1JFUVVFU1RfVElNRU9VVF9NUyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5DREtfTkVYVEpTX1JFVkFMSURBVElPTl9UQUJMRV9OQU1FO1xuICAgICAgZGVsZXRlIGdsb2JhbFtUQUdfTUFOSUZFU1RfU1lNQk9MXTtcbiAgICB9XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwibGF6eUhhbmRsZXJcIiwgKCkgPT4ge1xuICBpdChcImNyZWF0ZXMgdGhlIGhhbmRsZXIsIGFuZCBydW5zIGV2ZXJ5IG1ldGhvZCwgb3V0c2lkZSB0aGUgcmVxdWVzdFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZ2xvYmFsID0gZ2xvYmFsVGhpcyBhcyBSZWNvcmQ8c3ltYm9sLCB1bmtub3duPjtcbiAgICBjYXB0dXJlT3V0c2lkZVJlcXVlc3QoKTtcbiAgICAvLyBTdGFuZHMgaW4gZm9yIE5leHQuanMncyByZXF1ZXN0IHN0b3JlOiBzZWUgYG91dHNpZGVSZW5kZXJgLlxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8c3RyaW5nPigpO1xuICAgIGNvbnN0IHNlZW46IEFycmF5PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBbXTtcbiAgICBjb25zdCBzYXcgPSAoKSA9PiBzZWVuLnB1c2gocmVxdWVzdC5nZXRTdG9yZSgpKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaGFuZGxlciA9IGxhenlIYW5kbGVyKCgpID0+IHtcbiAgICAgICAgc2F3KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZ2V0OiBhc3luYyAoKSA9PiAoc2F3KCksIHVuZGVmaW5lZCksXG4gICAgICAgICAgc2V0OiBhc3luYyAoKSA9PiB2b2lkIHNhdygpLFxuICAgICAgICAgIHJlZnJlc2hUYWdzOiBhc3luYyAoKSA9PiB2b2lkIHNhdygpLFxuICAgICAgICAgIGdldEV4cGlyYXRpb246IGFzeW5jICgpID0+IChzYXcoKSwgMCksXG4gICAgICAgICAgdXBkYXRlVGFnczogYXN5bmMgKCkgPT4gdm9pZCBzYXcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgcmVxdWVzdC5ydW4oXCJwYWdlIHJlbmRlclwiLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGhhbmRsZXIuZ2V0KFwia2V5XCIsIFtdKTtcbiAgICAgICAgYXdhaXQgaGFuZGxlci5zZXQoXCJrZXlcIiwgUHJvbWlzZS5yZXNvbHZlKHt9IGFzIENhY2hlRW50cnkpKTtcbiAgICAgICAgYXdhaXQgaGFuZGxlci5yZWZyZXNoVGFncygpO1xuICAgICAgICBhd2FpdCBoYW5kbGVyLmdldEV4cGlyYXRpb24oW10pO1xuICAgICAgICBhd2FpdCBoYW5kbGVyLnVwZGF0ZVRhZ3MoW10pO1xuICAgICAgfSk7XG4gICAgICAvLyBUaGUgY3JlYXRlLCBhbmQgdGhlIGZpdmUgbWV0aG9kcy5cbiAgICAgIGV4cGVjdChzZWVuKS50b0VxdWFsKEFycmF5KDYpLmZpbGwodW5kZWZpbmVkKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGRlbGV0ZSBnbG9iYWxbT1VUU0lERV9SRVFVRVNUX1NZTUJPTF07XG4gICAgICBkZWxldGUgZ2xvYmFsW1RBR19NQU5JRkVTVF9TWU1CT0xdO1xuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
819
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNhY2hlLWNvbW1vbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXIvdXNlLWNhY2hlLWNvbW1vbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0RBQXNEO0FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUV0Qyx1REFBcUQ7QUFDckQsOERBQTBEO0FBRTFELHVEQU8yQjtBQUMzQix5REFXNEI7QUFDNUIsMERBSWlDO0FBRWpDLCtEQUErRDtBQUMvRCxTQUFTLFdBQVcsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFxQjtJQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFjLEVBQUUsRUFBRTtRQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxHQUFHO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FDbkIsS0FBSyxFQUFFLEdBQVcsRUFBRSxFQUFVLEVBQUUsU0FBK0IsRUFBRSxFQUFFO1FBQ2pFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLEdBQUcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lB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QUFNLEdBQUcsR0FBRyxJQUFJLDJCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxxQkFBcUI7UUFDckIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7UUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7UUFDcEUsTUFBTSxHQUFHLEdBQUcsSUFBSSwyQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLCtDQUErQztRQUMvQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztR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LGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDMUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxvQ0FBb0M7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsT0FBTyxNQUFNLENBQUMscUNBQXNCLENBQUMsQ0FBQztZQUN0QyxPQUFPLE1BQU0sQ0FBQyxrQ0FBbUIsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5qZXN0Lm1vY2soXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIik7XG5cbmltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSBcIm5vZGU6YXN5bmNfaG9va3NcIjtcbmltcG9ydCB7IER5bmFtb0RCQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1keW5hbW9kYlwiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZUVudHJ5IH0gZnJvbSBcIm5leHQvY2FjaGVcIjtcbmltcG9ydCB7XG4gIE1BWF9SRVZBTElEQVRJT05fTE9HX0dBUF9NUyxcbiAgUmV2YWxpZGF0aW9uTG9nLFxuICBSZXZhbGlkYXRpb25Mb2dSb3csXG4gIFRhZ01hcmtlcixcbiAgVGFnTWFya2VyVGFibGUsXG4gIFRyYWNrZWRUYWdNYXJrZXJzLFxufSBmcm9tIFwiLi9hd3MtY2FjaGUtc3RvcmVcIjtcbmltcG9ydCB7XG4gIGNhY2hlRW50cnlPZixcbiAgRW50cnlMcnUsXG4gIGxhenlIYW5kbGVyLFxuICBub3csXG4gIFBlbmRpbmdTZXRzLFxuICByZWFkU3RyZWFtLFxuICBzaGFyZWRUYWdNYW5pZmVzdCxcbiAgU3RvcmVkRW50cnksXG4gIHN0b3JlZEVudHJ5T2YsXG4gIFRBR19UQUJMRV9SRVFVRVNUX1RJTUVPVVRfTVMsXG59IGZyb20gXCIuL3VzZS1jYWNoZS1jb21tb25cIjtcbmltcG9ydCB7XG4gIGNhcHR1cmVPdXRzaWRlUmVxdWVzdCxcbiAgT1VUU0lERV9SRVFVRVNUX1NZTUJPTCxcbiAgVEFHX01BTklGRVNUX1NZTUJPTCxcbn0gZnJvbSBcIi4uL3J1bnRpbWUvdGFnLW1hbmlmZXN0XCI7XG5cbi8qKiBBIGBUYWdNYXJrZXJUYWJsZWAgb3ZlciBhIHBsYWluIG1hcCwgY291bnRpbmcgaXRzIGNhbGxzLiAqL1xuZnVuY3Rpb24gZmFrZU1hcmtlcnMocm93cyA9IG5ldyBNYXA8c3RyaW5nLCBUYWdNYXJrZXI+KCkpIHtcbiAgY29uc3QgcmVhZCA9IGplc3QuZm4oYXN5bmMgKHRhZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgY29uc3QgZm91bmQgPSBuZXcgTWFwPHN0cmluZywgVGFnTWFya2VyPigpO1xuICAgIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICAgIGNvbnN0IHJvdyA9IHJvd3MuZ2V0KHRhZyk7XG4gICAgICBpZiAocm93KSBmb3VuZC5zZXQodGFnLCB7IC4uLnJvdyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9KTtcbiAgY29uc3Qgd3JpdGUgPSBqZXN0LmZuKFxuICAgIGFzeW5jICh0YWc6IHN0cmluZywgYXQ6IG51bWJlciwgZHVyYXRpb25zPzogeyBleHBpcmU/OiBudW1iZXIgfSkgPT4ge1xuICAgICAgY29uc3Qgcm93ID0gcm93cy5nZXQodGFnKSA/PyB7fTtcbiAgICAgIGlmICghZHVyYXRpb25zKSB7XG4gICAgICAgIHJvdy5yZXZhbGlkYXRlZEF0ID0gYXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3cuc3RhbGVBdCA9IGF0O1xuICAgICAgICBpZiAoZHVyYXRpb25zLmV4cGlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcm93LmV4cGlyZWRBdCA9IGF0ICsgZHVyYXRpb25zLmV4cGlyZSAqIDEwMDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJvd3Muc2V0KHRhZywgcm93KTtcbiAgICAgIC8vIGBSZXR1cm5WYWx1ZXM6IFwiQUxMX05FV1wiYCwgYXMgdGhlIHJlYWwgdGFibGUgYW5zd2Vycy5cbiAgICAgIHJldHVybiB7IC4uLnJvdyB9O1xuICAgIH0sXG4gICk7XG4gIHJldHVybiB7XG4gICAgcm93cyxcbiAgICByZWFkLFxuICAgIHdyaXRlLFxuICAgIHRhYmxlOiB7IHJlYWQsIHdyaXRlIH0gYXMgdW5rbm93biBhcyBUYWdNYXJrZXJUYWJsZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGBSZXZhbGlkYXRpb25Mb2dgIG92ZXIgYSBwbGFpbiBhcnJheSwgY291bnRpbmcgaXRzIGNhbGxzLiBJdHMgcXVlcnkgcmV0dXJuc1xuICogd2hhdCB0aGUgcmVhbCBvbmUgd291bGQ6IGV2ZXJ5IHJvdyBhdCBvciBhZnRlciBgc2luY2VgLCBvbGRlc3QgZmlyc3QuXG4gKi9cbmZ1bmN0aW9uIGZha2VMb2cocm93czogUmV2YWxpZGF0aW9uTG9nUm93W10gPSBbXSkge1xuICBjb25zdCBwdXQgPSBqZXN0LmZuKGFzeW5jICh0YWc6IHN0cmluZywgYXQ6IG51bWJlciwgbWFya2VyOiBUYWdNYXJrZXIpID0+IHtcbiAgICByb3dzLnB1c2goe1xuICAgICAgc2s6IGAke1N0cmluZyhhdCkucGFkU3RhcnQoMTUsIFwiMFwiKX0jJHt0YWd9YCxcbiAgICAgIGF0LFxuICAgICAgdGFnLFxuICAgICAgbWFya2VyLFxuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgcXVlcnkgPSBqZXN0LmZuKGFzeW5jIChzaW5jZTogbnVtYmVyKSA9PiAoe1xuICAgIHJvd3M6IHJvd3MuZmlsdGVyKChyb3cpID0+IHJvdy5hdCA+PSBzaW5jZSkuc29ydCgoYSwgYikgPT4gYS5hdCAtIGIuYXQpLFxuICAgIHRydW5jYXRlZDogZmFsc2UsXG4gIH0pKTtcbiAgcmV0dXJuIHtcbiAgICByb3dzLFxuICAgIHB1dCxcbiAgICBxdWVyeSxcbiAgICBsb2c6IHsgcHV0LCBxdWVyeSB9IGFzIHVua25vd24gYXMgUmV2YWxpZGF0aW9uTG9nLFxuICB9O1xufVxuXG4vKiogQSB3YWxsIGNsb2NrIGEgdGVzdCBtb3ZlcyBieSBoYW5kLiAqL1xuZnVuY3Rpb24gZmFrZUNsb2NrKHN0YXJ0ID0gMV8wMDBfMDAwKSB7XG4gIGNvbnN0IGNsb2NrID0geyBhdDogc3RhcnQsIG5vdzogKCkgPT4gY2xvY2suYXQgfTtcbiAgcmV0dXJuIGNsb2NrO1xufVxuXG5mdW5jdGlvbiBzdHJlYW1PZiguLi5jaHVua3M6IHN0cmluZ1tdKTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4ge1xuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcykge1xuICAgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGNodW5rKSk7XG4gICAgICB9XG4gICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN0b3JlZChieXRlczogbnVtYmVyLCBleHRyYTogUGFydGlhbDxTdG9yZWRFbnRyeT4gPSB7fSk6IFN0b3JlZEVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpLFxuICAgIHRhZ3M6IFtdLFxuICAgIHN0YWxlOiAzMDAsXG4gICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgIGV4cGlyZTogMzYwMCxcbiAgICByZXZhbGlkYXRlOiA5MDAsXG4gICAgLi4uZXh0cmEsXG4gIH07XG59XG5cbmRlc2NyaWJlKFwiVHJhY2tlZFRhZ01hcmtlcnNcIiwgKCkgPT4ge1xuICBpdChcInJlYWRzIGEgdGFnIHRoZSBmaXJzdCB0aW1lIGl0IGlzIG5lZWRlZCwgYW5kIG5vdCBhZ2FpblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbWFya2VycyA9IGZha2VNYXJrZXJzKG5ldyBNYXAoW1tcImFcIiwgeyByZXZhbGlkYXRlZEF0OiA1MCB9XV0pKTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICBsb2c6IGZha2VMb2coKS5sb2csXG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbdGFncy5lbnN1cmUoW1wiYVwiLCBcImJcIl0pLCB0YWdzLmVuc3VyZShbXCJhXCIsIFwiYlwiXSldKTtcbiAgICBhd2FpdCB0YWdzLmVuc3VyZShbXCJhXCIsIFwiYlwiXSk7XG5cbiAgICBleHBlY3QobWFya2Vycy5yZWFkKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KG1hcmtlcnMucmVhZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW1wiYVwiLCBcImJcIl0pO1xuICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImFcIl0sIDQwKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wiYVwiXSwgNjApKS50b0JlKFwiZnJlc2hcIik7XG4gICAgZXhwZWN0KHRhZ3Muc3RhdGUoW1wiYlwiXSwgNDApKS50b0JlKFwiZnJlc2hcIik7XG4gIH0pO1xuXG4gIGl0KFwiYXBwbGllcyBpdHMgb3duIHJldmFsaWRhdGlvbiBhdCBvbmNlLCBhbmQgd3JpdGVzIGl0IG9uY2UgZm9yIGJvdGggaGFuZGxlcnNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycygpO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogbWFya2Vycy50YWJsZSxcbiAgICAgIGxvZzogZmFrZUxvZygpLmxvZyxcbiAgICB9KTtcbiAgICBjb25zdCBjcmVhdGVkQXQgPSBEYXRlLm5vdygpIC0gMTAwMDtcblxuICAgIC8vIFdoYXQgTmV4dC5qcyBkb2VzOiBgdXBkYXRlVGFnc2Agb24gdGhlIGRlZmF1bHQgYW5kIHRoZSByZW1vdGUgaGFuZGxlci5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0YWdzLnVwZGF0ZShbXCJhXCIsIFwiYlwiXSwgeyBleHBpcmU6IDAgfSksXG4gICAgICB0YWdzLnVwZGF0ZShbXCJhXCIsIFwiYlwiXSwgeyBleHBpcmU6IDAgfSksXG4gICAgXSk7XG5cbiAgICBleHBlY3QobWFya2Vycy53cml0ZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImJcIl0sIGNyZWF0ZWRBdCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIGV4cGVjdChtYXJrZXJzLnJvd3MuZ2V0KFwiYVwiKSkudG9FcXVhbCh7XG4gICAgICBzdGFsZUF0OiBleHBlY3QuYW55KE51bWJlciksXG4gICAgICBleHBpcmVkQXQ6IGV4cGVjdC5hbnkoTnVtYmVyKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJnaXZlcyBhIGxhdGVyIHJldmFsaWRhdGlvbiBpdHMgb3duIG1hcmtlciB3aGlsZSB0aGUgZmlyc3QgaXMgc3RpbGwgd3JpdGluZ1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbWFya2VycyA9IGZha2VNYXJrZXJzKCk7XG4gICAgbGV0IHJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICBtYXJrZXJzLndyaXRlLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoXG4gICAgICAoX3RhZywgYXQpID0+XG4gICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgcmVsZWFzZSA9ICgpID0+IHJlc29sdmUoeyByZXZhbGlkYXRlZEF0OiBhdCB9KTtcbiAgICAgICAgfSksXG4gICAgKTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICBsb2c6IGZha2VMb2coKS5sb2csXG4gICAgfSk7XG5cbiAgICBjb25zdCBmaXJzdCA9IHRhZ3MudXBkYXRlKFtcInhcIl0sIHVuZGVmaW5lZCk7XG4gICAgLy8gQW5vdGhlciByZXF1ZXN0J3MgYHJldmFsaWRhdGVUYWcoJ3gnKWAsIGEgdHVybiBsYXRlci5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0SW1tZWRpYXRlKHJlc29sdmUpKTtcbiAgICBjb25zdCBzZWNvbmQgPSB0YWdzLnVwZGF0ZShbXCJ4XCJdLCB1bmRlZmluZWQpO1xuICAgIHJlbGVhc2UoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbZmlyc3QsIHNlY29uZF0pO1xuXG4gICAgZXhwZWN0KG1hcmtlcnMud3JpdGUpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgICBjb25zdCBbWywgZmlyc3RBdF0sIFssIHNlY29uZEF0XV0gPSBtYXJrZXJzLndyaXRlLm1vY2suY2FsbHM7XG4gICAgZXhwZWN0KHNlY29uZEF0KS50b0JlR3JlYXRlclRoYW4oZmlyc3RBdCk7XG4gIH0pO1xuXG4gIGl0KFwicHV0cyBhIHNsb3cgbG9nIHJvdyBhZ2FpbiB1bmRlciBhIGZyZXNoIHRpbWVzdGFtcCwgc28gcmVhZGVycyBzZWUgaXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNsb2NrID0gZmFrZUNsb2NrKCk7XG4gICAgY29uc3QgbG9nID0gZmFrZUxvZygpO1xuICAgIGxvZy5wdXQubW9ja0ltcGxlbWVudGF0aW9uT25jZShhc3luYyAoKSA9PiB7XG4gICAgICAvLyBSZWFkZXJzJyBjdXJzb3JzIGhhdmUgbW92ZWQgcGFzdCB0aGUgcm93IGJ5IHRoZSB0aW1lIGl0IHNob3dzLlxuICAgICAgY2xvY2suYXQgKz0gMTBfMDAwO1xuICAgIH0pO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogZmFrZU1hcmtlcnMoKS50YWJsZSxcbiAgICAgIGxvZzogbG9nLmxvZyxcbiAgICAgIGNsb2NrOiBjbG9jay5ub3csXG4gICAgfSk7XG5cbiAgICBleHBlY3QoYXdhaXQgdGFncy51cGRhdGUoW1wieFwiXSwgdW5kZWZpbmVkKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QobG9nLnB1dC5tb2NrLmNhbGxzLm1hcCgoWywgYXRdKSA9PiBhdCkpLnRvRXF1YWwoW1xuICAgICAgMV8wMDBfMDAwLCAxXzAxMF8wMDAsXG4gICAgXSk7XG4gIH0pO1xuXG4gIGl0KFwicmVwb3J0cyBhIGxvZyByb3cgc2xvdyB0d2ljZSBhcyBub3QgcmVjb3JkZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNsb2NrID0gZmFrZUNsb2NrKCk7XG4gICAgY29uc3QgbG9nID0gZmFrZUxvZygpO1xuICAgIGxvZy5wdXQubW9ja0ltcGxlbWVudGF0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIGNsb2NrLmF0ICs9IDEwXzAwMDtcbiAgICB9KTtcbiAgICBjb25zdCBlcnJvciA9IGplc3Quc3B5T24oY29uc29sZSwgXCJlcnJvclwiKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge30pO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogZmFrZU1hcmtlcnMoKS50YWJsZSxcbiAgICAgIGxvZzogbG9nLmxvZyxcbiAgICAgIGNsb2NrOiBjbG9jay5ub3csXG4gICAgfSk7XG5cbiAgICBleHBlY3QoYXdhaXQgdGFncy51cGRhdGUoW1wieFwiXSwgdW5kZWZpbmVkKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGxvZy5wdXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgICBlcnJvci5tb2NrUmVzdG9yZSgpO1xuICB9KTtcblxuICBpdChcInRyYWNrcyB0aGUgd2hvbGUgcm93IGl0cyBvd24gd3JpdGUgcmV0dXJucywgbm90IGp1c3Qgd2hhdCBpdCBzZXRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEFub3RoZXIgaW5zdGFuY2UncyBgdXBkYXRlVGFnYCBmb3IgYSB0YWcgdGhpcyBvbmUgZG9lcyBub3QgdHJhY2sgeWV0LlxuICAgIGNvbnN0IGNyZWF0ZWRBdCA9IERhdGUubm93KCkgLSAxMDAwO1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycyhcbiAgICAgIG5ldyBNYXAoW1tcInBvc3RzXCIsIHsgcmV2YWxpZGF0ZWRBdDogY3JlYXRlZEF0ICsgNTAwIH1dXSksXG4gICAgKTtcbiAgICBjb25zdCB0YWdzID0gbmV3IFRyYWNrZWRUYWdNYXJrZXJzKHtcbiAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICBsb2c6IGZha2VMb2coKS5sb2csXG4gICAgfSk7XG5cbiAgICBhd2FpdCB0YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgeyBleHBpcmU6IDM2MDAgfSk7XG5cbiAgICAvLyBPbGRlciB0aGFuIHRoYXQgYHVwZGF0ZVRhZ2AsIHNvIGEgYmxvY2tpbmcgcmVuZGVyLCBub3Qgc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZS5cbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KSkudG9CZShcImV4cGlyZWRcIik7XG4gIH0pO1xuXG4gIGl0KFwibWFya3MgYSBwcm9maWxlJ3MgcmV2YWxpZGF0aW9uIHN0YWxlIHVudGlsIGl0cyBleHBpcmVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe30pO1xuICAgIGNvbnN0IGNyZWF0ZWRBdCA9IERhdGUubm93KCkgLSAxMDAwO1xuICAgIGF3YWl0IHRhZ3MudXBkYXRlKFtcImFcIl0sIHsgZXhwaXJlOiAzNjAwIH0pO1xuICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImFcIl0sIGNyZWF0ZWRBdCkpLnRvQmUoXCJzdGFsZVwiKTtcbiAgICAvLyBOb3QgYW4gZXhwaXJhdGlvbiB5ZXQsIHNvIGltcGxpY2l0IHRhZ3MgYXJlIG5vdCBhZmZlY3RlZCBlaXRoZXIuXG4gICAgZXhwZWN0KHRhZ3MuZXhwaXJhdGlvbihbXCJhXCJdKSkudG9CZSgwKTtcbiAgfSk7XG5cbiAgLy8gTmV4dC5qcyBzdGFtcHMgZW50cmllcyB3aXRoIGBwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KClgLFxuICAvLyB3aGljaCBjYW4gcnVuIGJlaGluZCBgRGF0ZS5ub3coKWAuIEEgbWFya2VyIHN0YW1wZWQgb24gdGhlIHdhbGwgY2xvY2sgd291bGRcbiAgLy8gdGhlbiBwb3N0ZGF0ZSBhbiBlbnRyeSByZWdlbmVyYXRlZCByaWdodCBhZnRlciB0aGUgcmV2YWxpZGF0aW9uLCB3aGljaFxuICAvLyB3b3VsZCByZWFkIGFzIHJldmFsaWRhdGVkIGFnYWluLCBhbmQgYWdhaW4uXG4gIGl0KFwic3RhbXBzIG1hcmtlcnMgb24gdGhlIGNsb2NrIGVudHJpZXMgYXJlIHN0YW1wZWQgd2l0aFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgd2FsbCA9IGplc3Quc3B5T24oRGF0ZSwgXCJub3dcIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG5vdygpICsgNTAwKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7fSk7XG4gICAgICBhd2FpdCB0YWdzLnVwZGF0ZShbXCJhXCJdLCB1bmRlZmluZWQpO1xuICAgICAgY29uc3QgcmVnZW5lcmF0ZWQgPSBub3coKSArIDE7XG4gICAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCByZWdlbmVyYXRlZCkpLnRvQmUoXCJmcmVzaFwiKTtcbiAgICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImFcIl0sIHJlZ2VuZXJhdGVkIC0gMTAwKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHdhbGwubW9ja1Jlc3RvcmUoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KFwicmVwb3J0cyB0aGUgbGF0ZXN0IHBhc3QgZXhwaXJhdGlvbiBvZiBpbXBsaWNpdCB0YWdzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBtYXJrZXJzID0gZmFrZU1hcmtlcnMoXG4gICAgICBuZXcgTWFwPHN0cmluZywgVGFnTWFya2VyPihbXG4gICAgICAgIFtcIl9OX1RfL2FcIiwgeyByZXZhbGlkYXRlZEF0OiAxMDAgfV0sXG4gICAgICAgIFtcIl9OX1RfL2JcIiwgeyBzdGFsZUF0OiAxNTAsIGV4cGlyZWRBdDogMjAwIH1dLFxuICAgICAgICBbXCJfTl9UXy9jXCIsIHsgc3RhbGVBdDogMTUwLCBleHBpcmVkQXQ6IERhdGUubm93KCkgKyA2MF8wMDAgfV0sXG4gICAgICBdKSxcbiAgICApO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogbWFya2Vycy50YWJsZSxcbiAgICAgIGxvZzogZmFrZUxvZygpLmxvZyxcbiAgICB9KTtcbiAgICBhd2FpdCB0YWdzLmVuc3VyZShbXCJfTl9UXy9hXCIsIFwiX05fVF8vYlwiLCBcIl9OX1RfL2NcIiwgXCJfTl9UXy9kXCJdKTtcbiAgICBleHBlY3QodGFncy5leHBpcmF0aW9uKFtcIl9OX1RfL2FcIiwgXCJfTl9UXy9iXCIsIFwiX05fVF8vY1wiXSkpLnRvQmUoMjAwKTtcbiAgICBleHBlY3QodGFncy5leHBpcmF0aW9uKFtcIl9OX1RfL2RcIl0pKS50b0JlKDApO1xuICB9KTtcblxuICBpdChcImRvZXMgbm90IGxldCBhbiBldmVudHVhbGx5IGNvbnNpc3RlbnQgcmVhZCB1bmRvIGl0cyBvd24gd3JpdGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycygpO1xuICAgIGNvbnN0IHRhZ3MgPSBuZXcgVHJhY2tlZFRhZ01hcmtlcnMoe1xuICAgICAgbWFya2VyczogbWFya2Vycy50YWJsZSxcbiAgICAgIGxvZzogZmFrZUxvZygpLmxvZyxcbiAgICAgIHJlZnJlc2hJbnRlcnZhbE1zOiAwLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhZ3MudXBkYXRlKFtcImFcIl0sIHVuZGVmaW5lZCk7XG4gICAgLy8gVGhlIHJlYWQgZG9lcyBub3Qgc2hvdyB0aGUgd3JpdGUgeWV0LlxuICAgIG1hcmtlcnMucm93cy5jbGVhcigpO1xuICAgIGF3YWl0IHRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdCh0YWdzLnN0YXRlKFtcImFcIl0sIERhdGUubm93KCkgLSAxMDAwKSkudG9CZShcImV4cGlyZWRcIik7XG4gIH0pO1xuXG4gIGl0KFwidHJlYXRzIGEgZmFpbGVkIHJlYWQgYXMgZnJlc2ggYW5kIHRyaWVzIGFnYWluIG9uIHRoZSBuZXh0IHJlZnJlc2hcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSBmYWtlTWFya2VycyhuZXcgTWFwKFtbXCJhXCIsIHsgcmV2YWxpZGF0ZWRBdDogNTAgfV1dKSk7XG4gICAgY29uc3QgZXJyb3IgPSBqZXN0LnNweU9uKGNvbnNvbGUsIFwiZXJyb3JcIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgICBtYXJrZXJzLnJlYWQubW9ja1JlamVjdGVkVmFsdWVPbmNlKG5ldyBFcnJvcihcInRocm90dGxlZFwiKSk7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgbG9nOiBmYWtlTG9nKCkubG9nLFxuICAgICAgcmVmcmVzaEludGVydmFsTXM6IDAsXG4gICAgfSk7XG5cbiAgICBhd2FpdCB0YWdzLmVuc3VyZShbXCJhXCJdKTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCA0MCkpLnRvQmUoXCJmcmVzaFwiKTtcbiAgICBhd2FpdCB0YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCA0MCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICAgIGVycm9yLm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KFwiZm9yZ2V0cyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCB0YWcgcGFzdCBpdHMgYm91bmQsIGFuZCByZWFkcyBpdCBhZ2FpblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbWFya2VycyA9IGZha2VNYXJrZXJzKCk7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgbG9nOiBmYWtlTG9nKCkubG9nLFxuICAgICAgbWF4VHJhY2tlZFRhZ3M6IDIsXG4gICAgfSk7XG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiYVwiXSk7XG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiYlwiXSk7XG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiYVwiXSk7IC8vIGBiYCBpcyBub3cgdGhlIG9sZGVzdFxuICAgIGF3YWl0IHRhZ3MuZW5zdXJlKFtcImNcIl0pO1xuICAgIG1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcblxuICAgIGF3YWl0IHRhZ3MuZW5zdXJlKFtcImFcIiwgXCJiXCIsIFwiY1wiXSk7XG4gICAgZXhwZWN0KG1hcmtlcnMucmVhZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW1wiYlwiXSk7XG4gIH0pO1xuXG4gIC8vIEV2ZXJ5IHBhdGggaXMgYSB0YWcgb2YgaXRzIG93biwgc28gYW4gYXBwIG9mIDEwMDAgdGFnZ2VkIHBhZ2VzIG5lZWRzIDIwMDA6XG4gIC8vIHRyYWNrZWQgMTAwMCBhdCBtb3N0LCBoYWxmIGl0cyByZXF1ZXN0cyByZS1yZWFkIGFuIGV2aWN0ZWQgbWFya2VyLlxuICBpdChcImtlZXBzIDIwMDAgdGFncyBhIHBhZ2UgZWFjaCB0cmFja2VkLCB3aXRob3V0IHJlYWRpbmcgdGhlbSBhZ2FpblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbWFya2VycyA9IGZha2VNYXJrZXJzKCk7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICBtYXJrZXJzOiBtYXJrZXJzLnRhYmxlLFxuICAgICAgbG9nOiBmYWtlTG9nKCkubG9nLFxuICAgIH0pO1xuICAgIGNvbnN0IHBhZ2VzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTAwMCB9LCAoXywgbikgPT4gW1xuICAgICAgYGl0ZW0tJHtufWAsXG4gICAgICBgX05fVF8vdXNlLWNhY2hlLyR7bn1gLFxuICAgIF0pO1xuICAgIGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykgYXdhaXQgdGFncy5lbnN1cmUocGFnZSk7XG4gICAgbWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgIGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykgYXdhaXQgdGFncy5lbnN1cmUocGFnZSk7XG4gICAgZXhwZWN0KG1hcmtlcnMucmVhZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoXCJrZWVwcyB0YWdzIGxvY2FsIHRvIHRoZSBwcm9jZXNzIHdpdGhvdXQgYSB0YWJsZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7fSk7XG4gICAgYXdhaXQgdGFncy5lbnN1cmUoW1wiYVwiXSk7XG4gICAgYXdhaXQgdGFncy5yZWZyZXNoKCk7XG4gICAgYXdhaXQgdGFncy51cGRhdGUoW1wiYVwiXSwgdW5kZWZpbmVkKTtcbiAgICBleHBlY3QodGFncy5zdGF0ZShbXCJhXCJdLCBEYXRlLm5vdygpIC0gMTAwMCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlRyYWNrZWRUYWdNYXJrZXJzIHdpdGggdGhlIHJldmFsaWRhdGlvbiBsb2dcIiwgKCkgPT4ge1xuICBjb25zdCBJTlRFUlZBTCA9IDEwMDA7XG5cbiAgLyoqIFR3byBpbnN0YW5jZXMsIGBhYCBhbmQgYGJgLCBvdmVyIG9uZSB0YWJsZSBhbmQgb25lIGNsb2NrLiAqL1xuICBmdW5jdGlvbiBpbnN0YW5jZXMoXG4gICAgb3B0aW9uczogeyByZXN5bmNJbnRlcnZhbE1zPzogbnVtYmVyOyByYW5kb20/OiAoKSA9PiBudW1iZXIgfSA9IHt9LFxuICApIHtcbiAgICBjb25zdCBtYXJrZXJSb3dzID0gbmV3IE1hcDxzdHJpbmcsIFRhZ01hcmtlcj4oKTtcbiAgICBjb25zdCBsb2dSb3dzOiBSZXZhbGlkYXRpb25Mb2dSb3dbXSA9IFtdO1xuICAgIGNvbnN0IGNsb2NrID0gZmFrZUNsb2NrKCk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZXJzID0gZmFrZU1hcmtlcnMobWFya2VyUm93cyk7XG4gICAgICBjb25zdCBsb2cgPSBmYWtlTG9nKGxvZ1Jvd3MpO1xuICAgICAgY29uc3QgdGFncyA9IG5ldyBUcmFja2VkVGFnTWFya2Vycyh7XG4gICAgICAgIG1hcmtlcnM6IG1hcmtlcnMudGFibGUsXG4gICAgICAgIGxvZzogbG9nLmxvZyxcbiAgICAgICAgcmVmcmVzaEludGVydmFsTXM6IElOVEVSVkFMLFxuICAgICAgICBjbG9jazogY2xvY2subm93LFxuICAgICAgICAvLyBEdWUgYXQgdGhlIGZ1bGwgaW50ZXJ2YWwgdW5sZXNzIGEgdGVzdCBhc2tzIG90aGVyd2lzZS5cbiAgICAgICAgcmFuZG9tOiAoKSA9PiAwLFxuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtYXJrZXJzLCBsb2csIHRhZ3MgfTtcbiAgICB9O1xuICAgIHJldHVybiB7IGNsb2NrLCBsb2dSb3dzLCBpbnN0YW5jZSwgYTogaW5zdGFuY2UoKSwgYjogaW5zdGFuY2UoKSB9O1xuICB9XG5cbiAgY29uc3QgY3JlYXRlZEF0ID0gKCkgPT4gbm93KCkgLSAxMDAwO1xuXG4gIGl0KFwicmVhY2hlcyBhbm90aGVyIGluc3RhbmNlIHdpdGhpbiBvbmUgaW50ZXJ2YWwsIGluIG9uZSBRdWVyeSBhbmQgbm8gQmF0Y2hHZXRJdGVtXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBhLCBiIH0gPSBpbnN0YW5jZXMoKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBiLm1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcblxuICAgIGF3YWl0IGEudGFncy51cGRhdGUoW1wicG9zdHNcIl0sIHVuZGVmaW5lZCk7XG4gICAgZXhwZWN0KGEubG9nLnB1dCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBcInBvc3RzXCIsXG4gICAgICBjbG9jay5hdCxcbiAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgcmV2YWxpZGF0ZWRBdDogZXhwZWN0LmFueShOdW1iZXIpIH0pLFxuICAgICk7XG5cbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcblxuICBpdChcImlzc3VlcyBubyByZWFkIHdoaWxlIHRoZSBpbnRlcnZhbCBoYXMgbm90IHBhc3NlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgLy8gTm90aGluZyB0cmFja2VkOiBub3RoaW5nIHRvIGFzay5cbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wicG9zdHNcIl0pO1xuXG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG4gICAgLy8gVGhhdCByZWZyZXNoIHN0aWxsIGNvdW50czogd2hhdCBpcyB0cmFja2VkIHNpbmNlIHdhcyByZWFkLCBvciBpcyBuZXcuXG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbYi50YWdzLnJlZnJlc2goKSwgYi50YWdzLnJlZnJlc2goKV0pO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuXG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUwgLSAxO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gICAgY2xvY2suYXQgKz0gMTtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuICB9KTtcblxuICBpdChcImFza3Mgd2l0aCBub3RoaW5nIHRyYWNrZWQgb25jZSBhbiBlbnRyeSBzdG9yZSByZWxpZXMgb24gdGhlIGxvZ1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYi50YWdzLmp1ZGdlRW50cmllc09mKCgpID0+IEluZmluaXR5KTtcbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcblxuICBpdChcImFwcGxpZXMgYSByb3cgcmVhZCBhZ2FpbiBpbnNpZGUgdGhlIGxvb2tiYWNrIG9ubHkgb25jZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgbG9nUm93cywgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG4gICAgbGV0IHJlYWRzID0gMDtcbiAgICBjb25zdCByb3c6IFJldmFsaWRhdGlvbkxvZ1JvdyA9IHtcbiAgICAgIHNrOiBgJHtjbG9jay5hdH0jcG9zdHNgLFxuICAgICAgYXQ6IGNsb2NrLmF0LFxuICAgICAgdGFnOiBcInBvc3RzXCIsXG4gICAgICBnZXQgbWFya2VyKCkge1xuICAgICAgICByZWFkcysrO1xuICAgICAgICByZXR1cm4geyByZXZhbGlkYXRlZEF0OiBub3coKSB9O1xuICAgICAgfSxcbiAgICB9O1xuICAgIC8vIFRoZSBzYW1lIHJvdyB0d2ljZSBpbiBvbmUgcGFnZSwgYW5kIGFnYWluIG9uIHRoZSBuZXh0IHF1ZXJ5LlxuICAgIGxvZ1Jvd3MucHVzaChyb3csIHJvdyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgIH1cbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygzKTtcbiAgICBleHBlY3QocmVhZHMpLnRvQmUoMSk7XG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgfSk7XG5cbiAgLy8gUmVwbGljYXRpb24gbGFnLCBvciBhIHdyaXRlciB3aG9zZSBjbG9jayBydW5zIGJlaGluZDogdGhlIHJvdyBzaG93cyB1cFxuICAvLyBhZnRlciBhIHF1ZXJ5IHRoYXQgc2hvdWxkIGhhdmUgc2VlbiBpdCwgd2l0aCBhIHNvcnQga2V5IGJlZm9yZSBpdC5cbiAgaXQoXCJzdGlsbCBzZWVzIGEgcm93IHRoYXQgYXBwZWFycyB1cCB0byB0aGUgbG9va2JhY2sgbGF0ZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgbG9nUm93cywgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJsYXRlXCIsIFwidG9vLWxhdGVcIl0pO1xuICAgIGIubWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGNvbnN0IGZpcnN0UXVlcnkgPSBjbG9jay5hdDtcbiAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuXG4gICAgY29uc3QgbWFya2VyID0geyByZXZhbGlkYXRlZEF0OiBub3coKSB9O1xuICAgIGxvZ1Jvd3MucHVzaChcbiAgICAgIHsgc2s6IFwibGF0ZVwiLCBhdDogZmlyc3RRdWVyeSAtIDUwMDAsIHRhZzogXCJsYXRlXCIsIG1hcmtlciB9LFxuICAgICAgeyBzazogXCJ0b28tbGF0ZVwiLCBhdDogZmlyc3RRdWVyeSAtIDUwMDEsIHRhZzogXCJ0b28tbGF0ZVwiLCBtYXJrZXIgfSxcbiAgICApO1xuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIubG9nLnF1ZXJ5KS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoZmlyc3RRdWVyeSAtIDUwMDApO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wibGF0ZVwiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgICAvLyBQYXN0IHRoZSBsb29rYmFjazogd2hhdCB0aGUgcGVyaW9kaWMgcmUtcmVhZCBvZiB0aGUgbWFya2VycyBpcyBmb3IuXG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJ0b28tbGF0ZVwiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZnJlc2hcIik7XG4gIH0pO1xuXG4gIGl0KFwiZm9yZ2V0cyBpdHMgdHJhY2tlZCBtYXJrZXJzIGFmdGVyIGEgZ2FwIHRoZSBsb2cgbWF5IG5vdCBjb3ZlciwgYW5kIHJlYWRzIGVhY2ggYXMgaXQgaXMgbmVlZGVkXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBhLCBiIH0gPSBpbnN0YW5jZXMoKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCIsIFwib3RoZXJcIl0pO1xuICAgIGF3YWl0IGEudGFncy51cGRhdGUoW1wicG9zdHNcIl0sIHVuZGVmaW5lZCk7XG5cbiAgICBjbG9jay5hdCArPSBNQVhfUkVWQUxJREFUSU9OX0xPR19HQVBfTVMgKyAxO1xuICAgIGNvbnN0IGdhcEVuZCA9IGNsb2NrLmF0O1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgLy8gTm8gYnVyc3Qgb2YgcmUtcmVhZHMsIGFuZCBubyBxdWVyeSBvZiBhIGxvZyB0aGF0IG1heSBoYXZlIGxvc3Qgcm93cy5cbiAgICBleHBlY3QoYi5tYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBleHBlY3QoYi5tYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aChbXCJwb3N0c1wiXSk7XG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZXhwaXJlZFwiKTtcblxuICAgIC8vIFRoZW4gYmFjayBvbiB0aGUgbG9nLCBmcm9tIGp1c3QgYmVmb3JlIHRoZSBnYXAgZW5kZWQuXG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGdhcEVuZCAtIDUwMDApO1xuICB9KTtcblxuICAvLyBSZS1yZWFkaW5nIGV2ZXJ5IHRyYWNrZWQgbWFya2VyIGF0IG9uY2UgaXMgfjUsMDAwIFJDVSBhdCAxMCwwMDAgdGFnczogbW9yZVxuICAvLyB0aGFuIHRoZSBvbmUgcGFydGl0aW9uIHNlcnZlcyBpbiBhIHNlY29uZC5cbiAgaXQoXCJyZS1yZWFkcyBlYWNoIHRyYWNrZWQgbWFya2VyIG9uY2UgcGVyIHJlc3luYyBpbnRlcnZhbCwgYXQgbW9zdCAxMDAgYSByZWZyZXNoXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBiIH0gPSBpbnN0YW5jZXMoeyByZXN5bmNJbnRlcnZhbE1zOiAxMCAqIElOVEVSVkFMIH0pO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoQXJyYXkuZnJvbSh7IGxlbmd0aDogMjUwIH0sIChfLCBpKSA9PiBgdCR7aX1gKSk7XG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG4gICAgY29uc3Qgc2l6ZXM6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTQ7IGkrKykge1xuICAgICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgICBiLm1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcbiAgICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgICBzaXplcy5wdXNoKGIubWFya2Vycy5yZWFkLm1vY2suY2FsbHNbMF0/LlswXS5sZW5ndGggPz8gMCk7XG4gICAgfVxuICAgIGV4cGVjdChiLmxvZy5xdWVyeSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDE0KTtcbiAgICAvLyBEdWUgYXQgMTAgaW50ZXJ2YWxzLCBvbGRlc3QgZmlyc3QsIDEwMCBwZXIgcmVmcmVzaDsgdGhlbiBub3QgYWdhaW4uXG4gICAgZXhwZWN0KHNpemVzKS50b0VxdWFsKFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAsIDEwMCwgNTAsIDAsIDBdKTtcbiAgICBleHBlY3QoYi5tYXJrZXJzLnJlYWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIH0pO1xuXG4gIC8vIFRhZ3MgZmlyc3QgcmVhZCB0b2dldGhlciBtdXN0IG5vdCBjb21lIGR1ZSB0b2dldGhlciBldmVyeSBpbnRlcnZhbC5cbiAgaXQoXCJzcHJlYWRzIHdoZW4gZWFjaCB0YWcgY29tZXMgZHVlIG92ZXIgdGhlIGxhc3QgcXVhcnRlciBvZiB0aGUgaW50ZXJ2YWxcIiwgYXN5bmMgKCkgPT4ge1xuICAgIC8vIER1ZSBhdCAxMCwgOC43NSBhbmQgNy41IGludGVydmFscywga25vd24gaW4gdGhhdCBvcmRlcjogdGhlIG9uZSBkdWVcbiAgICAvLyBmaXJzdCBpcyBsYXN0LCBiZWhpbmQgdHdvIHRoYXQgYXJlIG5vdCBkdWUgeWV0LlxuICAgIGNvbnN0IHJhbmRvbXMgPSBbMCwgMC41LCAxXTtcbiAgICBjb25zdCB7IGNsb2NrLCBiIH0gPSBpbnN0YW5jZXMoe1xuICAgICAgcmVzeW5jSW50ZXJ2YWxNczogMTAgKiBJTlRFUlZBTCxcbiAgICAgIHJhbmRvbTogKCkgPT4gcmFuZG9tcy5zaGlmdCgpID8/IDAsXG4gICAgfSk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJsYXRlXCIsIFwibWlkZGxlXCIsIFwiZWFybHlcIl0pO1xuICAgIGIubWFya2Vycy5yZWFkLm1vY2tDbGVhcigpO1xuICAgIGNvbnN0IHJlYWRBdDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDEwOyBpKyspIHtcbiAgICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgICAgYi5tYXJrZXJzLnJlYWQubW9ja0NsZWFyKCk7XG4gICAgICBhd2FpdCBiLnRhZ3MucmVmcmVzaCgpO1xuICAgICAgZm9yIChjb25zdCB0YWcgb2YgYi5tYXJrZXJzLnJlYWQubW9jay5jYWxsc1swXT8uWzBdID8/IFtdKSB7XG4gICAgICAgIHJlYWRBdFt0YWddID8/PSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBleHBlY3QocmVhZEF0KS50b0VxdWFsKHsgZWFybHk6IDgsIG1pZGRsZTogOSwgbGF0ZTogMTAgfSk7XG4gIH0pO1xuXG4gIGl0KFwicmUtcmVhZHMgYSBtYXJrZXIgaXQgbGVhcm5lZCBvZiBmcm9tIGl0cyBvd24gd3JpdGUgb25seSBvbmNlIHRoYXQgaXMgZHVlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBhIH0gPSBpbnN0YW5jZXMoeyByZXN5bmNJbnRlcnZhbE1zOiAxMCAqIElOVEVSVkFMIH0pO1xuICAgIGF3YWl0IGEudGFncy5lbnN1cmUoW1wicG9zdHNcIl0pO1xuICAgIGNsb2NrLmF0ICs9IDkgKiBJTlRFUlZBTDtcbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGNsb2NrLmF0ICs9IDIgKiBJTlRFUlZBTDtcbiAgICBhd2FpdCBhLnRhZ3MucmVmcmVzaCgpO1xuICAgIC8vIFJlYWQgMTEgaW50ZXJ2YWxzIGFnbywgYnV0IHdyaXR0ZW4gLSBzbyBrbm93biAtIDIgaW50ZXJ2YWxzIGFnby5cbiAgICBleHBlY3QoYS5tYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgaXQoXCJyZWFkcyBhIHRhZyB3aG9zZSBmaXJzdCByZWFkIGZhaWxlZCBhZ2FpbiBvbiB0aGUgbmV4dCByZWZyZXNoXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBlcnJvciA9IGplc3Quc3B5T24oY29uc29sZSwgXCJlcnJvclwiKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge30pO1xuICAgIGNvbnN0IHsgY2xvY2ssIGEsIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIC8vIE9ubHkgdGhlIG1hcmtlciByb3cgaGFzIGl0LCBzbyBvbmx5IHJlYWRpbmcgdGhlIG1hcmtlciBmaW5kcyBpdC5cbiAgICBhLmxvZy5wdXQubW9ja1JlamVjdGVkVmFsdWVPbmNlKG5ldyBFcnJvcihcInRocm90dGxlZFwiKSk7XG4gICAgYXdhaXQgYS50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBiLm1hcmtlcnMucmVhZC5tb2NrUmVqZWN0ZWRWYWx1ZU9uY2UobmV3IEVycm9yKFwidGhyb3R0bGVkXCIpKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBjcmVhdGVkQXQoKSkpLnRvQmUoXCJmcmVzaFwiKTtcbiAgICBjbG9jay5hdCArPSBJTlRFUlZBTDtcblxuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS50b0hhdmVCZWVuTGFzdENhbGxlZFdpdGgoW1wicG9zdHNcIl0pO1xuICAgIC8vIFRoZSByZS1yZWFkIHJ1bnMgYWxvbmdzaWRlIHRoZSBxdWVyeSwgbm90IHdhaXRlZCBmb3IgYnkgYHJlZnJlc2hgLlxuICAgIGF3YWl0IGIubWFya2Vycy5yZWFkLm1vY2sucmVzdWx0cy5hdCgtMSkhLnZhbHVlO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRJbW1lZGlhdGUocmVzb2x2ZSkpO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgZXJyb3IubW9ja1Jlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoXCJmb3JnZXRzIGl0cyB0cmFja2VkIG1hcmtlcnMgd2hlbiB0aGUgbG9nIGhhcyBtb3JlIHJvd3MgdGhhbiBvbmUgcXVlcnkgcmVhZHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgY2xvY2ssIGIgfSA9IGluc3RhbmNlcygpO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wicG9zdHNcIl0pO1xuICAgIGIubG9nLnF1ZXJ5Lm1vY2tSZXNvbHZlZFZhbHVlT25jZSh7IHJvd3M6IFtdLCB0cnVuY2F0ZWQ6IHRydWUgfSk7XG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi5tYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBleHBlY3QoYi5tYXJrZXJzLnJlYWQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygyKTtcbiAgfSk7XG5cbiAgLy8gVHJhY2tpbmcgaXMgcGVyIHRhZywgbm90IHBlciBlbnRyeTogc3RvcmluZyBhIG5ldyBlbnRyeSBtdXN0IG5vdCB2b3VjaCBmb3JcbiAgLy8gYW4gb2xkZXIgb25lIHdpdGggdGhlIHNhbWUgdGFnLiBCJ3MgbG9nIGN1cnNvciBzdGFydHMgYWZ0ZXIgQydzXG4gIC8vIHJldmFsaWRhdGlvbiwgc28gb25seSByZWFkaW5nIHRoZSBtYXJrZXIgc2hvd3MgaXQuXG4gIGl0KFwic3RpbGwgcmVhZHMgYSB0YWcncyBtYXJrZXIgYWZ0ZXIgc3RvcmluZyBhbiBlbnRyeSB3aXRoIGl0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBpbnN0YW5jZSwgYTogYyB9ID0gaW5zdGFuY2VzKCk7XG4gICAgY29uc3QgazFDcmVhdGVkQXQgPSBjcmVhdGVkQXQoKTtcbiAgICBhd2FpdCBjLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGNsb2NrLmF0ICs9IDEwXzAwMDtcbiAgICAvLyBTdGFydGVkIGFmdGVyIHRoZSByZXZhbGlkYXRpb246IGl0cyBsb2cgY3Vyc29yIGlzIHBhc3QgQydzIHJvdy5cbiAgICBjb25zdCBiID0gaW5zdGFuY2UoKTtcbiAgICBiLnRhZ3MudHJhY2soW1wicG9zdHNcIl0pO1xuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wicG9zdHNcIl0pO1xuICAgIGV4cGVjdChiLm1hcmtlcnMucmVhZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW1wicG9zdHNcIl0pO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGsxQ3JlYXRlZEF0KSkudG9CZShcImV4cGlyZWRcIik7XG4gIH0pO1xuXG4gIGl0KFwic3RpbGwgcmVhZHMgYSB0YWcncyBtYXJrZXIgYWZ0ZXIgc3RvcmluZyBhbiBlbnRyeSB3aXRoIGl0IGZvbGxvd2luZyBhIGZvcmdldFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjbG9jaywgYSwgYiB9ID0gaW5zdGFuY2VzKCk7XG4gICAgYXdhaXQgYi50YWdzLmVuc3VyZShbXCJwb3N0c1wiXSk7XG4gICAgY29uc3QgazFDcmVhdGVkQXQgPSBjcmVhdGVkQXQoKTtcbiAgICAvLyBSZXZhbGlkYXRlZCB3aGlsZSBgYmAgd2FzIGZyb3plbiBwYXN0IHdoYXQgdGhlIGxvZyBjb3ZlcnMuXG4gICAgY2xvY2suYXQgKz0gTUFYX1JFVkFMSURBVElPTl9MT0dfR0FQX01TICsgMTtcbiAgICBhLmxvZy5wdXQubW9ja1JlamVjdGVkVmFsdWVPbmNlKG5ldyBFcnJvcihcImxvc3RcIikpO1xuICAgIGNvbnN0IGVycm9yID0gamVzdC5zcHlPbihjb25zb2xlLCBcImVycm9yXCIpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7fSk7XG4gICAgYXdhaXQgYS50YWdzLnVwZGF0ZShbXCJwb3N0c1wiXSwgdW5kZWZpbmVkKTtcbiAgICBlcnJvci5tb2NrUmVzdG9yZSgpO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgYi50YWdzLnRyYWNrKFtcInBvc3RzXCJdKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBrMUNyZWF0ZWRBdCkpLnRvQmUoXCJleHBpcmVkXCIpO1xuICB9KTtcblxuICBpdChcImFwcGxpZXMgYSBsb2cgcm93IHRoYXQgbGFuZHMgd2hpbGUgdGhlIHRhZydzIGZpcnN0IHJlYWQgaXMgaW4gZmxpZ2h0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7IGNsb2NrLCBhLCBiIH0gPSBpbnN0YW5jZXMoKTtcbiAgICAvLyBTb21ldGhpbmcgdHJhY2tlZCwgc28gdGhlIHJlZnJlc2ggcXVlcmllcyB0aGUgbG9nLlxuICAgIGF3YWl0IGIudGFncy5lbnN1cmUoW1wib3RoZXJcIl0pO1xuICAgIGxldCBhbnN3ZXIhOiAocmVhZDogTWFwPHN0cmluZywgVGFnTWFya2VyPikgPT4gdm9pZDtcbiAgICAvLyBBbnN3ZXJlZCBiZWZvcmUgdGhlIHJldmFsaWRhdGlvbiBiZWxvdywgYXMgYSByZWFkIHJhY2luZyBpdCBjYW4gYmUuXG4gICAgYi5tYXJrZXJzLnJlYWQubW9ja0ltcGxlbWVudGF0aW9uT25jZShcbiAgICAgICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiAoYW5zd2VyID0gcmVzb2x2ZSkpLFxuICAgICk7XG4gICAgY29uc3QgZmlyc3QgPSBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgYW5zd2VyKG5ldyBNYXAoKSk7XG4gICAgYXdhaXQgZmlyc3Q7XG4gICAgZXhwZWN0KGIudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJpcyB2aXNpYmxlIGF0IG9uY2Ugb24gdGhlIGluc3RhbmNlIHRoYXQgcmFuIHVwZGF0ZVRhZ1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBhIH0gPSBpbnN0YW5jZXMoKTtcbiAgICBhLnRhZ3MudHJhY2soW1wicG9zdHNcIl0pO1xuICAgIGF3YWl0IGEudGFncy51cGRhdGUoW1wicG9zdHNcIl0sIHVuZGVmaW5lZCk7XG4gICAgZXhwZWN0KGEudGFncy5zdGF0ZShbXCJwb3N0c1wiXSwgY3JlYXRlZEF0KCkpKS50b0JlKFwiZXhwaXJlZFwiKTtcbiAgICBleHBlY3QoYS5tYXJrZXJzLndyaXRlKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KGEubG9nLnB1dCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcblxuICBpdChcImtlZXBzIGl0cyB0YWdzIHRocm91Z2ggYSBmYWlsZWQgcXVlcnkgYW5kIGFza3MgYWdhaW4gbmV4dCBpbnRlcnZhbFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBqZXN0LnNweU9uKGNvbnNvbGUsIFwiZXJyb3JcIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgICBjb25zdCB7IGNsb2NrLCBhLCBiIH0gPSBpbnN0YW5jZXMoKTtcbiAgICBhd2FpdCBiLnRhZ3MuZW5zdXJlKFtcInBvc3RzXCJdKTtcbiAgICBiLm1hcmtlcnMucmVhZC5tb2NrQ2xlYXIoKTtcbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGIubG9nLnF1ZXJ5Lm1vY2tSZWplY3RlZFZhbHVlT25jZShuZXcgRXJyb3IoXCJ0aHJvdHRsZWRcIikpO1xuXG4gICAgY2xvY2suYXQgKz0gSU5URVJWQUw7XG4gICAgY29uc3QgY3Vyc29yID0gY2xvY2suYXQgLSBJTlRFUlZBTCAtIDUwMDA7XG4gICAgYXdhaXQgYi50YWdzLnJlZnJlc2goKTtcbiAgICBleHBlY3QoYi50YWdzLnN0YXRlKFtcInBvc3RzXCJdLCBjcmVhdGVkQXQoKSkpLnRvQmUoXCJmcmVzaFwiKTtcbiAgICBleHBlY3QoZXJyb3IpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgIGNsb2NrLmF0ICs9IElOVEVSVkFMO1xuICAgIGF3YWl0IGIudGFncy5yZWZyZXNoKCk7XG4gICAgLy8gRnJvbSB0aGUgc2FtZSBjdXJzb3IsIHNvIG5vdGhpbmcgd3JpdHRlbiBtZWFud2hpbGUgaXMgc2tpcHBlZC5cbiAgICBleHBlY3QoYi5sb2cucXVlcnkpLnRvSGF2ZUJlZW5MYXN0Q2FsbGVkV2l0aChjdXJzb3IpO1xuICAgIGV4cGVjdChiLnRhZ3Muc3RhdGUoW1wicG9zdHNcIl0sIGNyZWF0ZWRBdCgpKSkudG9CZShcImV4cGlyZWRcIik7XG4gICAgZXhwZWN0KGIubWFya2Vycy5yZWFkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGVycm9yLm1vY2tSZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KFwic3RpbGwgd3JpdGVzIHRoZSBtYXJrZXIgd2hlbiB0aGUgbG9nIHJvdyBmYWlsc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBqZXN0LnNweU9uKGNvbnNvbGUsIFwiZXJyb3JcIikubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHt9KTtcbiAgICBjb25zdCB7IGEgfSA9IGluc3RhbmNlcygpO1xuICAgIGEubG9nLnB1dC5tb2NrUmVqZWN0ZWRWYWx1ZU9uY2UobmV3IEVycm9yKFwidGhyb3R0bGVkXCIpKTtcbiAgICBhd2FpdCBhLnRhZ3MudXBkYXRlKFtcInBvc3RzXCJdLCB1bmRlZmluZWQpO1xuICAgIGV4cGVjdChhLm1hcmtlcnMucm93cy5nZXQoXCJwb3N0c1wiKT8ucmV2YWxpZGF0ZWRBdCkudG9FcXVhbChcbiAgICAgIGV4cGVjdC5hbnkoTnVtYmVyKSxcbiAgICApO1xuICAgIGV4cGVjdChlcnJvcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICBleHBlY3Quc3RyaW5nTWF0Y2hpbmcoL3JldmFsaWRhdGlvbiBsb2cvKSxcbiAgICAgIGV4cGVjdC5hbnkoRXJyb3IpLFxuICAgICk7XG4gICAgZXJyb3IubW9ja1Jlc3RvcmUoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJFbnRyeUxydVwiLCAoKSA9PiB7XG4gIGl0KFwiZXZpY3RzIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkIGVudHJpZXMgcGFzdCBpdHMgYnl0ZSBib3VuZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDI1MCk7XG4gICAgbHJ1LnNldChcImFcIiwgc3RvcmVkKDEwMCkpO1xuICAgIGxydS5zZXQoXCJiXCIsIHN0b3JlZCgxMDApKTtcbiAgICBscnUuZ2V0KFwiYVwiKTtcbiAgICBscnUuc2V0KFwiY1wiLCBzdG9yZWQoMTAwKSk7XG4gICAgZXhwZWN0KGxydS5nZXQoXCJiXCIpKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgZXhwZWN0KGxydS5nZXQoXCJhXCIpKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChscnUuZ2V0KFwiY1wiKSkudG9CZURlZmluZWQoKTtcbiAgfSk7XG5cbiAgaXQoXCJkb2VzIG5vdCBrZWVwIGFuIGVudHJ5IGxhcmdlciB0aGFuIHRoZSB3aG9sZSBib3VuZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDUwKTtcbiAgICBscnUuc2V0KFwiYVwiLCBzdG9yZWQoMTAwKSk7XG4gICAgZXhwZWN0KGxydS5zaXplKS50b0JlKDApO1xuICB9KTtcblxuICBpdChcImFjY291bnRzIGZvciBhIHJlcGxhY2VkIGVudHJ5XCIsICgpID0+IHtcbiAgICBjb25zdCBscnUgPSBuZXcgRW50cnlMcnUoMjUwKTtcbiAgICBscnUuc2V0KFwiYVwiLCBzdG9yZWQoMjAwKSk7XG4gICAgbHJ1LnNldChcImFcIiwgc3RvcmVkKDEwKSk7XG4gICAgbHJ1LnNldChcImJcIiwgc3RvcmVkKDIwMCkpO1xuICAgIGV4cGVjdChscnUuc2l6ZSkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoXCJkcm9wcyB0aGUgZW50cmllcyBwYXN0IHJldmFsaWRhdGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgxMDAwKTtcbiAgICBscnUuc2V0KFwib2xkXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxMDAwLCByZXZhbGlkYXRlOiAxIH0pKTtcbiAgICBscnUuc2V0KFwibmV3XCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxNTAwLCByZXZhbGlkYXRlOiAxIH0pKTtcbiAgICBleHBlY3QobHJ1LmhvbGRzTGl2ZSgyMDAxKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QobHJ1LmhvbGRzTGl2ZSgyNTAxKSkudG9CZShmYWxzZSk7XG4gICAgLy8gQXNraW5nIGlzIG5vdCBhIHVzZTogdGhlIGVudHJpZXMgZ28gaW4gYG9sZGVzdFRpbWVzdGFtcGAncyBzY2FuLlxuICAgIGV4cGVjdChscnUuc2l6ZSkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoXCJkcm9wcyB0aGUgZW50cmllcyBwYXN0IHJldmFsaWRhdGUgYXMgaXQgZmluZHMgdGhlIG9sZGVzdFwiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDEwMDApO1xuICAgIGxydS5zZXQoXCJvbGRcIiwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXA6IDEwMDAsIHJldmFsaWRhdGU6IDEgfSkpO1xuICAgIGxydS5zZXQoXCJuZXdcIiwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXA6IDE1MDAsIHJldmFsaWRhdGU6IDEgfSkpO1xuICAgIGV4cGVjdChscnUub2xkZXN0VGltZXN0YW1wKDIwMDEpKS50b0JlKDE1MDApO1xuICAgIGV4cGVjdChscnUuc2l6ZSkudG9CZSgxKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgpKS50b0JlKDE1MDApO1xuICB9KTtcblxuICBpdChcImtub3dzIGl0cyBvbGRlc3QgZW50cnkncyB0aW1lc3RhbXAgYXMgZW50cmllcyBjb21lIGFuZCBnb1wiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDI1MCk7XG4gICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoKSkudG9CZShJbmZpbml0eSk7XG4gICAgbHJ1LnNldChcImFcIiwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXA6IDIgfSkpO1xuICAgIGxydS5zZXQoXCJiXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxIH0pKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgpKS50b0JlKDEpO1xuICAgIGxydS5kZWxldGUoXCJiXCIpO1xuICAgIGV4cGVjdChscnUub2xkZXN0VGltZXN0YW1wKCkpLnRvQmUoMik7XG4gICAgLy8gRXZpY3RlZCBmb3Igc3BhY2UuXG4gICAgbHJ1LnNldChcImNcIiwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXA6IDMgfSkpO1xuICAgIGxydS5zZXQoXCJkXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiA0IH0pKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgpKS50b0JlKDMpO1xuICB9KTtcblxuICBpdChcInN0YXJ0cyBpdHMgYm91bmQgYWZyZXNoIG9uY2UgZW1wdGllZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDEwMDApO1xuICAgIGxydS5zZXQoXCJhXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxMDAgfSkpO1xuICAgIGxydS5kZWxldGUoXCJhXCIpO1xuICAgIGxydS5zZXQoXCJiXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiA1MDAwIH0pKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdEJvdW5kKCkpLnRvQmUoNTAwMCk7XG4gIH0pO1xuXG4gIGl0KFwiZHJvcHMgdGhlIGV4cGlyZWQgZW50cmllcyBsZWFzdCByZWNlbnRseSB1c2VkIGFzIGl0IGJvdW5kc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgbHJ1ID0gbmV3IEVudHJ5THJ1KDEwMDApO1xuICAgIGxydS5zZXQoXCJvbGRcIiwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXA6IDEwMDAsIHJldmFsaWRhdGU6IDEgfSkpO1xuICAgIGxydS5zZXQoXCJsaXZlXCIsIHN0b3JlZCgxMDAsIHsgdGltZXN0YW1wOiAxNTAwLCByZXZhbGlkYXRlOiAxMCB9KSk7XG4gICAgbHJ1LnNldChcImJlaGluZFwiLCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcDogMTIwMCwgcmV2YWxpZGF0ZTogMSB9KSk7XG4gICAgLy8gVXAgdG8gdGhlIGZpcnN0IGxpdmUgZW50cnk6IG5vIHNjYW4gcGFzdCBpdC5cbiAgICBleHBlY3QobHJ1Lm9sZGVzdEJvdW5kKDIzMDApKS50b0JlKDEwMDApO1xuICAgIGV4cGVjdChscnUuc2l6ZSkudG9CZSgyKTtcbiAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgyMzAwKSkudG9CZSgxNTAwKTtcbiAgfSk7XG5cbiAgaXQoXCJib3VuZHMgaXRzIG9sZGVzdCBlbnRyeSdzIHRpbWVzdGFtcCBmcm9tIGJlbG93IGJldHdlZW4gc2NhbnNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGxydSA9IG5ldyBFbnRyeUxydSgxMDAwKTtcbiAgICBjb25zdCBoZWxkID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICBsZXQgc2VlZCA9IDc7XG4gICAgY29uc3QgcmFuZG9tID0gKCkgPT4gKHNlZWQgPSAoc2VlZCAqIDE2ODA3KSAlIDIxNDc0ODM2NDcpIC8gMjE0NzQ4MzY0NztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwMDA7IGkrKykge1xuICAgICAgY29uc3Qga2V5ID0gYGske01hdGguZmxvb3IocmFuZG9tKCkgKiA1MCl9YDtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IE1hdGguZmxvb3IocmFuZG9tKCkgKiAxMF8wMDApO1xuICAgICAgaWYgKHJhbmRvbSgpIDwgMC4yKSB7XG4gICAgICAgIGxydS5kZWxldGUoa2V5KTtcbiAgICAgICAgaGVsZC5kZWxldGUoa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxydS5zZXQoa2V5LCBzdG9yZWQoMTAwLCB7IHRpbWVzdGFtcCB9KSk7XG4gICAgICAgIGhlbGQuZGVsZXRlKGtleSk7XG4gICAgICAgIGhlbGQuc2V0KGtleSwgdGltZXN0YW1wKTtcbiAgICAgICAgd2hpbGUgKGhlbGQuc2l6ZSA+IGxydS5zaXplKSB7XG4gICAgICAgICAgaGVsZC5kZWxldGUoaGVsZC5rZXlzKCkubmV4dCgpLnZhbHVlISk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9sZGVzdCA9IE1hdGgubWluKEluZmluaXR5LCAuLi5oZWxkLnZhbHVlcygpKTtcbiAgICAgIGV4cGVjdChscnUub2xkZXN0Qm91bmQoKSkudG9CZUxlc3NUaGFuT3JFcXVhbChvbGRlc3QpO1xuICAgICAgaWYgKGkgJSAxMDAgPT09IDApIHtcbiAgICAgICAgZXhwZWN0KGxydS5vbGRlc3RUaW1lc3RhbXAoKSkudG9CZShvbGRlc3QpO1xuICAgICAgICBleHBlY3QobHJ1Lm9sZGVzdEJvdW5kKCkpLnRvQmUob2xkZXN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgaGVsZC5rZXlzKCkpIHtcbiAgICAgIGxydS5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgZXhwZWN0KGxydS5vbGRlc3RCb3VuZCgpKS50b0JlKEluZmluaXR5KTtcbiAgfSk7XG5cbiAgaXQoXCJrbm93cyBpdHMgb2xkZXN0IGVudHJ5J3MgdGltZXN0YW1wIHVuZGVyIGV2aWN0aW9uIGNodXJuXCIsICgpID0+IHtcbiAgICBjb25zdCBscnUgPSBuZXcgRW50cnlMcnUoMTAwMCk7XG4gICAgY29uc3QgaGVsZCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgbGV0IHNlZWQgPSAxO1xuICAgIGNvbnN0IHJhbmRvbSA9ICgpID0+IChzZWVkID0gKHNlZWQgKiAxNjgwNykgJSAyMTQ3NDgzNjQ3KSAvIDIxNDc0ODM2NDc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGBrJHtNYXRoLmZsb29yKHJhbmRvbSgpICogNTApfWA7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKHJhbmRvbSgpICogMTBfMDAwKTtcbiAgICAgIGlmIChyYW5kb20oKSA8IDAuMikge1xuICAgICAgICBscnUuZGVsZXRlKGtleSk7XG4gICAgICAgIGhlbGQuZGVsZXRlKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBscnUuc2V0KGtleSwgc3RvcmVkKDEwMCwgeyB0aW1lc3RhbXAgfSkpO1xuICAgICAgICBoZWxkLmRlbGV0ZShrZXkpO1xuICAgICAgICBoZWxkLnNldChrZXksIHRpbWVzdGFtcCk7XG4gICAgICAgIC8vIEV2aWN0ZWQgbGVhc3QgcmVjZW50bHkgdXNlZCBmaXJzdCwgYXMgdGhlIHN0b3JlIGRvZXMuXG4gICAgICAgIHdoaWxlIChoZWxkLnNpemUgPiBscnUuc2l6ZSkge1xuICAgICAgICAgIGhlbGQuZGVsZXRlKGhlbGQua2V5cygpLm5leHQoKS52YWx1ZSEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBleHBlY3QobHJ1Lm9sZGVzdFRpbWVzdGFtcCgpKS50b0JlKE1hdGgubWluKEluZmluaXR5LCAuLi5oZWxkLnZhbHVlcygpKSk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcImVudHJpZXNcIiwgKCkgPT4ge1xuICBpdChcInJlYWRzIGEgc3RyZWFtIHRvIHRoZSBlbmRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJ5dGVzID0gYXdhaXQgcmVhZFN0cmVhbShzdHJlYW1PZihcImFiXCIsIFwiY2RcIikpO1xuICAgIGV4cGVjdChuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnl0ZXMpKS50b0JlKFwiYWJjZFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJyZWplY3RzIGEgc3RyZWFtIHRoYXQgZXJyb3JzIHBhcnQtd2F5XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmYWlsaW5nID0gbmV3IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+KHtcbiAgICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KFsxXSkpO1xuICAgICAgICBjb250cm9sbGVyLmVycm9yKG5ldyBFcnJvcihcInJlbmRlciBmYWlsZWRcIikpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICBhd2FpdCBleHBlY3QocmVhZFN0cmVhbShmYWlsaW5nKSkucmVqZWN0cy50b1Rocm93KFwicmVuZGVyIGZhaWxlZFwiKTtcbiAgfSk7XG5cbiAgaXQoXCJoYW5kcyBldmVyeSByZWFkZXIgaXRzIG93biBzdHJlYW1cIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGVudHJ5OiBDYWNoZUVudHJ5ID0ge1xuICAgICAgdmFsdWU6IHN0cmVhbU9mKFwicGF5bG9hZFwiKSxcbiAgICAgIHRhZ3M6IFtcInRcIl0sXG4gICAgICBzdGFsZTogMSxcbiAgICAgIHRpbWVzdGFtcDogMixcbiAgICAgIGV4cGlyZTogMyxcbiAgICAgIHJldmFsaWRhdGU6IDQsXG4gICAgfTtcbiAgICBjb25zdCBrZXB0ID0gYXdhaXQgc3RvcmVkRW50cnlPZihQcm9taXNlLnJlc29sdmUoZW50cnkpKTtcbiAgICBjb25zdCBmaXJzdCA9IGNhY2hlRW50cnlPZihrZXB0KTtcbiAgICBjb25zdCBzZWNvbmQgPSBjYWNoZUVudHJ5T2Yoa2VwdCwgLTEpO1xuICAgIGV4cGVjdChzZWNvbmQucmV2YWxpZGF0ZSkudG9CZSgtMSk7XG4gICAgZXhwZWN0KGZpcnN0LnRhZ3MpLnRvRXF1YWwoW1widFwiXSk7XG4gICAgZXhwZWN0KG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShhd2FpdCByZWFkU3RyZWFtKGZpcnN0LnZhbHVlKSkpLnRvQmUoXG4gICAgICBcInBheWxvYWRcIixcbiAgICApO1xuICAgIGV4cGVjdChuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYXdhaXQgcmVhZFN0cmVhbShzZWNvbmQudmFsdWUpKSkudG9CZShcbiAgICAgIFwicGF5bG9hZFwiLFxuICAgICk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiUGVuZGluZ1NldHNcIiwgKCkgPT4ge1xuICBpdChcImhvbGRzIGEgZ2V0IHVudGlsIHRoZSBzZXQgZm9yIGl0cyBrZXkgZW5kc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGVuZGluZyA9IG5ldyBQZW5kaW5nU2V0cygpO1xuICAgIGNvbnN0IGRvbmUgPSBwZW5kaW5nLmJlZ2luKFwia1wiKTtcbiAgICBsZXQgd2FpdGVkID0gZmFsc2U7XG4gICAgY29uc3Qgd2FpdCA9IHBlbmRpbmcud2FpdChcImtcIikudGhlbigoKSA9PiAod2FpdGVkID0gdHJ1ZSkpO1xuICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGV4cGVjdCh3YWl0ZWQpLnRvQmUoZmFsc2UpO1xuICAgIGRvbmUoKTtcbiAgICBhd2FpdCB3YWl0O1xuICAgIGV4cGVjdCh3YWl0ZWQpLnRvQmUodHJ1ZSk7XG4gICAgLy8gTm90aGluZyBwZW5kaW5nOiBubyB3YWl0IGF0IGFsbC5cbiAgICBhd2FpdCBwZW5kaW5nLndhaXQoXCJrXCIpO1xuICAgIGF3YWl0IHBlbmRpbmcud2FpdChcIm90aGVyXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcInNoYXJlZFRhZ01hbmlmZXN0XCIsICgpID0+IHtcbiAgaXQoXCJib3VuZHMgZWFjaCByZXZhbGlkYXRpb24gdGFibGUgcmVxdWVzdCwgZmFpbGluZyBpdCBvbmNlIHRpbWVkIG91dFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZ2xvYmFsID0gZ2xvYmFsVGhpcyBhcyBSZWNvcmQ8c3ltYm9sLCB1bmtub3duPjtcbiAgICBwcm9jZXNzLmVudi5DREtfTkVYVEpTX1JFVkFMSURBVElPTl9UQUJMRV9OQU1FID0gXCJ0YWJsZVwiO1xuICAgIHRyeSB7XG4gICAgICBzaGFyZWRUYWdNYW5pZmVzdCgpO1xuICAgICAgLy8gQSB0aW1lb3V0IHRoYXQgb25seSB3YXJucyBsZWF2ZXMgYSByZXF1ZXN0IG9uIGEgZGVhZCBjb25uZWN0aW9uLCBhbmRcbiAgICAgIC8vIGV2ZXJ5IHJlcXVlc3Qgd2FpdGluZyBvbiB0aGUgcmVmcmVzaCwgaGFuZ2luZy5cbiAgICAgIGV4cGVjdChEeW5hbW9EQkNsaWVudCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgICAgICByZXF1ZXN0SGFuZGxlcjoge1xuICAgICAgICAgICAgcmVxdWVzdFRpbWVvdXQ6IFRBR19UQUJMRV9SRVFVRVNUX1RJTUVPVVRfTVMsXG4gICAgICAgICAgICB0aHJvd09uUmVxdWVzdFRpbWVvdXQ6IHRydWUsXG4gICAgICAgICAgICBzb2NrZXRUaW1lb3V0OiBUQUdfVEFCTEVfUkVRVUVTVF9USU1FT1VUX01TLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LkNES19ORVhUSlNfUkVWQUxJREFUSU9OX1RBQkxFX05BTUU7XG4gICAgICBkZWxldGUgZ2xvYmFsW1RBR19NQU5JRkVTVF9TWU1CT0xdO1xuICAgIH1cbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJsYXp5SGFuZGxlclwiLCAoKSA9PiB7XG4gIGl0KFwiY3JlYXRlcyB0aGUgaGFuZGxlciwgYW5kIHJ1bnMgZXZlcnkgbWV0aG9kLCBvdXRzaWRlIHRoZSByZXF1ZXN0XCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBnbG9iYWwgPSBnbG9iYWxUaGlzIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+O1xuICAgIGNhcHR1cmVPdXRzaWRlUmVxdWVzdCgpO1xuICAgIC8vIFN0YW5kcyBpbiBmb3IgTmV4dC5qcydzIHJlcXVlc3Qgc3RvcmU6IHNlZSBgb3V0c2lkZVJlbmRlcmAuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBBc3luY0xvY2FsU3RvcmFnZTxzdHJpbmc+KCk7XG4gICAgY29uc3Qgc2VlbjogQXJyYXk8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IFtdO1xuICAgIGNvbnN0IHNhdyA9ICgpID0+IHNlZW4ucHVzaChyZXF1ZXN0LmdldFN0b3JlKCkpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gbGF6eUhhbmRsZXIoKCkgPT4ge1xuICAgICAgICBzYXcoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBnZXQ6IGFzeW5jICgpID0+IChzYXcoKSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICBzZXQ6IGFzeW5jICgpID0+IHZvaWQgc2F3KCksXG4gICAgICAgICAgcmVmcmVzaFRhZ3M6IGFzeW5jICgpID0+IHZvaWQgc2F3KCksXG4gICAgICAgICAgZ2V0RXhwaXJhdGlvbjogYXN5bmMgKCkgPT4gKHNhdygpLCAwKSxcbiAgICAgICAgICB1cGRhdGVUYWdzOiBhc3luYyAoKSA9PiB2b2lkIHNhdygpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBhd2FpdCByZXF1ZXN0LnJ1bihcInBhZ2UgcmVuZGVyXCIsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgaGFuZGxlci5nZXQoXCJrZXlcIiwgW10pO1xuICAgICAgICBhd2FpdCBoYW5kbGVyLnNldChcImtleVwiLCBQcm9taXNlLnJlc29sdmUoe30gYXMgQ2FjaGVFbnRyeSkpO1xuICAgICAgICBhd2FpdCBoYW5kbGVyLnJlZnJlc2hUYWdzKCk7XG4gICAgICAgIGF3YWl0IGhhbmRsZXIuZ2V0RXhwaXJhdGlvbihbXSk7XG4gICAgICAgIGF3YWl0IGhhbmRsZXIudXBkYXRlVGFncyhbXSk7XG4gICAgICB9KTtcbiAgICAgIC8vIFRoZSBjcmVhdGUsIGFuZCB0aGUgZml2ZSBtZXRob2RzLlxuICAgICAgZXhwZWN0KHNlZW4pLnRvRXF1YWwoQXJyYXkoNikuZmlsbCh1bmRlZmluZWQpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgZGVsZXRlIGdsb2JhbFtPVVRTSURFX1JFUVVFU1RfU1lNQk9MXTtcbiAgICAgIGRlbGV0ZSBnbG9iYWxbVEFHX01BTklGRVNUX1NZTUJPTF07XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
@@ -1,4 +1,4 @@
1
- import type { CacheHandler } from "next/dist/server/lib/cache-handlers/types";
1
+ import type { CacheHandler } from "next/cache";
2
2
  import { TrackedTagMarkers } from "./aws-cache-store";
3
3
  export interface DefaultUseCacheHandlerOptions {
4
4
  /** Tag state; the process-wide one from the environment by default. */
@@ -117,4 +117,4 @@ function createDefaultUseCacheHandler(options = {}) {
117
117
  };
118
118
  }
119
119
  exports.default = (0, use_cache_common_1.lazyHandler)(() => createDefaultUseCacheHandler());
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNhY2hlLWRlZmF1bHQtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL3VzZS1jYWNoZS1kZWZhdWx0LWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFzREEsb0VBcUdDO0FBM0pEOzs7Ozs7Ozs7O0VBVUU7QUFDRixzREFBc0Q7QUFDdEQsa0RBQTZCO0FBTTdCLHlEQWM0QjtBQU81Qjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILFNBQWdCLDRCQUE0QixDQUMxQyxVQUF5QyxFQUFFO0lBRTNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBQSxvQ0FBaUIsR0FBRSxDQUFDO0lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksMkJBQVEsQ0FDekIsSUFBQSxnQ0FBYSxFQUFDLG1DQUFtQyxFQUFFLHVDQUFvQixDQUFDLENBQ3pFLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLDhCQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3JFLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsYUFBYTtJQUNiLElBQUksQ0FBQyxjQUFjLENBQ2pCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHNCQUFHLEdBQUUsQ0FBQyxFQUNsRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUEsc0JBQUcsR0FBRSxDQUFDLENBQzlCLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLE9BQTBCLEVBQUUsRUFBRSxDQUNqRSxJQUFBLDBCQUFPLEVBQUMsTUFB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TyxLQUFLLEVBQUUsQ0FBQztnQkFDZixpRUFBaUU7Z0JBQ2pFLEtBQUssQ0FBQyxjQUFjLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLENBQUM7b0JBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsR0FBRyxJQUFBLDZCQUFVLEVBQUMsSUFBSSxDQUFDO1FBRW5CLDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUsc0VBQXNFO1FBQ3RFLGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLFFBQVE7S0FDcEMsQ0FBQztBQUNKLENBQUM7QUFFRCxrQkFBZSxJQUFBLDhCQUFXLEVBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgVGhlIGBjYWNoZUhhbmRsZXJzLmRlZmF1bHRgIGhhbmRsZXIsIGZvciBwbGFpbiBgJ3VzZSBjYWNoZSdgLlxuICBTZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2NvbmZpZy9uZXh0LWNvbmZpZy1qcy9jYWNoZUhhbmRsZXJzXG5cbiAgU3RvcmFnZSBzdGF5cyBpbiBtZW1vcnksIHBlciBpbnN0YW5jZSwgYXMgTmV4dC5qcyBpbnRlbmRzIGZvciBgJ3VzZSBjYWNoZSdgXG4gIChgJ3VzZSBjYWNoZTogcmVtb3RlJ2AgaXMgdGhlIHNoYXJlZCBvbmUpLiBXaGF0IHRoaXMgY2hhbmdlcyBpcyB0YWdzOiBOZXh0LmpzJ3NcbiAgYnVpbHQtaW4gaGFuZGxlciBrZWVwcyB0aGVtIGluIGEgcHJvY2Vzcy1sb2NhbCBtYXAsIHNvIGEgYHJldmFsaWRhdGVUYWdgIG9uXG4gIG9uZSBpbnN0YW5jZSBsZWZ0IGV2ZXJ5IG90aGVyIGluc3RhbmNlIHNlcnZpbmcgdGhlIHJldmFsaWRhdGVkIGVudHJ5LiBIZXJlXG4gIHRoZXkgZ28gdGhyb3VnaCB0aGUgcmV2YWxpZGF0aW9uIHRhYmxlJ3MgbWFya2VyIHJvd3MuIFNlZVxuICBgVHJhY2tlZFRhZ01hcmtlcnNgLlxuKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IGdldERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHR5cGUge1xuICBDYWNoZUVudHJ5LFxuICBDYWNoZUhhbmRsZXIsXG59IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9jYWNoZS1oYW5kbGVycy90eXBlc1wiO1xuaW1wb3J0IHsgVHJhY2tlZFRhZ01hcmtlcnMgfSBmcm9tIFwiLi9hd3MtY2FjaGUtc3RvcmVcIjtcbmltcG9ydCB7XG4gIGF3YWl0SWYsXG4gIGNhY2hlRW50cnlPZixcbiAgREVGQVVMVF9NRU1PUllfQllURVMsXG4gIEVudHJ5THJ1LFxuICBpc0R5bmFtaWNFbnRyeSxcbiAgaXNQYXN0UmV2YWxpZGF0ZSxcbiAgbGF6eUhhbmRsZXIsXG4gIG5vdyxcbiAgbnVtYmVyRnJvbUVudixcbiAgUGVuZGluZ1NldHMsXG4gIHNoYXJlZFRhZ01hbmlmZXN0LFxuICBzdG9yZWRFbnRyeU9mLFxuICB0YWdNZXRob2RzLFxufSBmcm9tIFwiLi91c2UtY2FjaGUtY29tbW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFVzZUNhY2hlSGFuZGxlck9wdGlvbnMge1xuICAvKiogVGFnIHN0YXRlOyB0aGUgcHJvY2Vzcy13aWRlIG9uZSBmcm9tIHRoZSBlbnZpcm9ubWVudCBieSBkZWZhdWx0LiAqL1xuICB0YWdzPzogVHJhY2tlZFRhZ01hcmtlcnM7XG59XG5cbi8qKlxuICogQSBgJ3VzZSBjYWNoZSdgIGhhbmRsZXIgd2l0aCB0aGUgc2VtYW50aWNzIG9mIE5leHQuanMncyBidWlsdC1pbiBvbmVcbiAqIChgbmV4dC9kaXN0L3NlcnZlci9saWIvY2FjaGUtaGFuZGxlcnMvZGVmYXVsdC5qc2ApIGFuZCB0YWdzIHNoYXJlZCBhY3Jvc3NcbiAqIGluc3RhbmNlcy5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IHJhdGhlciB0aGFuIGEgd3JhcHBlcjogdGhlIGJ1aWx0LWluIGhhbmRsZXIganVkZ2VzIHRhZ3MgYWdhaW5zdFxuICogdGhlIG1vZHVsZS1sZXZlbCBgdGFnc01hbmlmZXN0YCBvZiB3aGljaGV2ZXIgY29weSBvZiBgbmV4dGAgaXQgd2FzIHJlcXVpcmVkXG4gKiBmcm9tLCBhbmQgdGhpcyBidW5kbGUgY2Fubm90IGJlIHN1cmUgb2YgcmVhY2hpbmcgdGhlIGNvcHkgdGhlIHNlcnZlciBsb2FkZWRcbiAqICh0aGUgc2FtZSByZWFzb24gYFMzQ2FjaGVIYW5kbGVyYCByZWFkcyB0aGF0IG1hbmlmZXN0IGZyb20gdGhlIG1vZHVsZSBjYWNoZVxuICogaW5zdGVhZCBvZiByZXF1aXJpbmcgaXQpLiBLZWVwaW5nIHRoZSB0YWcgc3RhdGUgaGVyZSByZW1vdmVzIHRoZSBxdWVzdGlvbi5cbiAqXG4gKiBBcyBpbiB0aGUgYnVpbHQtaW4gaGFuZGxlciwgYW4gZW50cnkgaXMgZHJvcHBlZCBvbmNlIGl0IGlzIHBhc3QgYHJldmFsaWRhdGVgXG4gKiByYXRoZXIgdGhhbiBzZXJ2ZWQgc3RhbGU6IGFuIGluLW1lbW9yeSBlbnRyeSBpcyBsaWtlbHkgZXZpY3RlZCBiZWZvcmUgYVxuICogYmFja2dyb3VuZCByZWZyZXNoIHdvdWxkIHBheSBvZmYuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VXNlQ2FjaGVIYW5kbGVyKFxuICBvcHRpb25zOiBEZWZhdWx0VXNlQ2FjaGVIYW5kbGVyT3B0aW9ucyA9IHt9LFxuKTogQ2FjaGVIYW5kbGVyIHtcbiAgY29uc3QgdGFncyA9IG9wdGlvbnMudGFncyA/PyBzaGFyZWRUYWdNYW5pZmVzdCgpO1xuICBjb25zdCBtZW1vcnkgPSBuZXcgRW50cnlMcnUoXG4gICAgbnVtYmVyRnJvbUVudihcIkNES19ORVhUSlNfVVNFX0NBQ0hFX01FTU9SWV9CWVRFU1wiLCBERUZBVUxUX01FTU9SWV9CWVRFUyksXG4gICk7XG4gIGNvbnN0IHBlbmRpbmcgPSBuZXcgUGVuZGluZ1NldHMoKTtcbiAgY29uc3QgZGVidWcgPSBnZXREZWJ1ZyhcImNkay1uZXh0anM6Y2FjaGUtaGFuZGxlcjp1c2UtY2FjaGU6ZGVmYXVsdFwiKTtcbiAgLy8gRXhwaXJlZCBlbnRyaWVzLCB3aGljaCBgZ2V0YCBkcm9wcyBhbnl3YXksIGRvbid0IGNvdW50IGFzIGhlbGQgZm9yIGFcbiAgLy8gcmVmcmVzaCB0byB3YWl0IGZvciwgbm9yIGhvbGQgYGNvbXBsZXRlU2luY2VgJ3MgcHJ1bmluZyBiYWNrIHBhc3QgdGhlXG4gIC8vIG5leHQgc2Nhbi5cbiAgdGFncy5qdWRnZUVudHJpZXNPZihcbiAgICAoc2NhbikgPT5cbiAgICAgIHNjYW4gPyBtZW1vcnkub2xkZXN0VGltZXN0YW1wKG5vdygpKSA6IG1lbW9yeS5vbGRlc3RCb3VuZChub3coKSksXG4gICAgKCkgPT4gbWVtb3J5LmhvbGRzTGl2ZShub3coKSksXG4gICk7XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIG1hcmtlcnMgb2Ygd2hpY2hldmVyIG9mIGB0YWdMaXN0YCBhcmUgdW50cmFja2VkOiBmaXJzdCwgd2hlbiB0aGVcbiAgICogYW5zd2VyIGRlcGVuZHMgb24gdGhlbSwgb3IgZWxzZSBpbiB0aGUgYmFja2dyb3VuZC4gUmVhZCBlaXRoZXIgd2F5LCBzb1xuICAgKiB0aGUgdGFncyBqb2luIHRoZSByb2xsaW5nIHJlLXJlYWQsIHdoaWNoIGNhdGNoZXMgYSByZXZhbGlkYXRpb24gd2hvc2UgbG9nXG4gICAqIHJvdyBmYWlsZWQgdG8gd3JpdGUuXG4gICAqL1xuICBjb25zdCBlbnN1cmVUYWdzID0gKG5lZWRlZDogYm9vbGVhbiwgdGFnTGlzdDogcmVhZG9ubHkgc3RyaW5nW10pID0+XG4gICAgYXdhaXRJZihuZWVkZWQsIHRhZ3MuZW5zdXJlKHRhZ0xpc3QpLCBcIkVycm9yIHJlYWRpbmcgY2FjaGUgdGFnczpcIik7XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXQoXG4gICAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgICAgc29mdFRhZ3M6IHN0cmluZ1tdID0gW10sXG4gICAgKTogUHJvbWlzZTxDYWNoZUVudHJ5IHwgdW5kZWZpbmVkPiB7XG4gICAgICBhd2FpdCBwZW5kaW5nLndhaXQoY2FjaGVLZXkpO1xuICAgICAgY29uc3Qgc3RvcmVkID0gbWVtb3J5LmdldChjYWNoZUtleSk7XG4gICAgICBpZiAoIXN0b3JlZCkge1xuICAgICAgICBkZWJ1ZyhgTUlTUyAke2NhY2hlS2V5fWApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGlzUGFzdFJldmFsaWRhdGUoc3RvcmVkLCBub3coKSkpIHtcbiAgICAgICAgZGVidWcoYEVYUElSRUQgJHtjYWNoZUtleX1gKTtcbiAgICAgICAgbWVtb3J5LmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICAvLyBPbmx5IGFuIGVudHJ5IG9sZGVyIHRoYW4gd2hhdCB0aGUgbWFuaWZlc3QgZnVsbHkga25vd3MgbmVlZHMgaXRzIHRhZ3MnXG4gICAgICAvLyBtYXJrZXJzIHJlYWQgZmlyc3Q6IHNlZSBgY29tcGxldGVTaW5jZWAuIEV2ZXJ5IGVudHJ5IHN0b3JlZCBzaW5jZSB0aGVcbiAgICAgIC8vIGluc3RhbmNlIHN0YXJ0ZWQgaXMgbmV3ZXIsIHNvIGl0cyBmaXJzdCByZWFkIHdhaXRzIG9uIG5vdGhpbmcgLSBub3JcbiAgICAgIC8vIGRvZXMgYSBuZXcgcGF0aCdzLCB3aG9zZSBpbXBsaWNpdCB0YWdzIGl0IGhhcyBuZXZlciByZWFkLlxuICAgICAgYXdhaXQgZW5zdXJlVGFncyhzdG9yZWQudGltZXN0YW1wIDwgdGFncy5jb21wbGV0ZVNpbmNlLCBbXG4gICAgICAgIC4uLnN0b3JlZC50YWdzLFxuICAgICAgICAuLi5zb2Z0VGFncyxcbiAgICAgIF0pO1xuICAgICAgLy8gSW1wbGljaXQgdGFncyBjb3VudCBvbmNlIGV4cGlyZWQsIG5vdCBzdGFsZSwgYXMgTmV4dC5qcyBjb21wYXJlc1xuICAgICAgLy8gYGdldEV4cGlyYXRpb25gJ3MgYW5zd2VyLlxuICAgICAgY29uc3Qgc3RhdGUgPVxuICAgICAgICB0YWdzLmV4cGlyYXRpb24oc29mdFRhZ3MpID49IHN0b3JlZC50aW1lc3RhbXBcbiAgICAgICAgICA/IFwiZXhwaXJlZFwiXG4gICAgICAgICAgOiB0YWdzLnN0YXRlKHN0b3JlZC50YWdzLCBzdG9yZWQudGltZXN0YW1wKTtcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJleHBpcmVkXCIpIHtcbiAgICAgICAgZGVidWcoYEVYUElSRUQgQlkgVEFHICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIG1lbW9yeS5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgZGVidWcoYEhJVCAke2NhY2hlS2V5fSR7c3RhdGUgPT09IFwic3RhbGVcIiA/IFwiIChzdGFsZSB0YWcpXCIgOiBcIlwifWApO1xuICAgICAgLy8gYHJldmFsaWRhdGU6IC0xYCBpcyBob3cgdGhlIGJ1aWx0LWluIGhhbmRsZXIgcmVwb3J0cyBhIHN0YWxlIHRhZzogdGhlXG4gICAgICAvLyB3cmFwcGVyIHNlcnZlcyB0aGUgZW50cnkgYW5kIHJlZ2VuZXJhdGVzIGl0IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgcmV0dXJuIGNhY2hlRW50cnlPZihzdG9yZWQsIHN0YXRlID09PSBcInN0YWxlXCIgPyAtMSA6IHN0b3JlZC5yZXZhbGlkYXRlKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgc2V0KFxuICAgICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICAgIHBlbmRpbmdFbnRyeTogUHJvbWlzZTxDYWNoZUVudHJ5PixcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IGRvbmUgPSBwZW5kaW5nLmJlZ2luKGNhY2hlS2V5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IGF3YWl0IHN0b3JlZEVudHJ5T2YocGVuZGluZ0VudHJ5KTtcbiAgICAgICAgaWYgKGlzRHluYW1pY0VudHJ5KHN0b3JlZCkpIHtcbiAgICAgICAgICBkZWJ1ZyhgU0tJUCBkeW5hbWljIGVudHJ5ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1lbW9yeS5zZXQoY2FjaGVLZXksIHN0b3JlZCk7XG4gICAgICAgIC8vIEluIHRoZSBiYWNrZ3JvdW5kLCBub3cgcmF0aGVyIHRoYW4gYXQgdGhlIGZpcnN0IGBnZXRgOiBhXG4gICAgICAgIC8vIHJldmFsaWRhdGlvbiBmcm9tIGJlZm9yZSB0aGUgbG9nJ3MgZmlyc3QgbG9va2JhY2sgd2l0aCBhbiBgZXhwaXJlYFxuICAgICAgICAvLyBzdGlsbCB0byBjb21lIGV4cGlyZXMgdGhpcyBlbnRyeSB3aGVuIGl0IGNvbWVzLCBhbmQgb25seSB0aGUgbWFya2VyXG4gICAgICAgIC8vIHNheXMgc28uIFNlZSBgY29tcGxldGVTaW5jZWAuXG4gICAgICAgIHZvaWQgZW5zdXJlVGFncyhmYWxzZSwgc3RvcmVkLnRhZ3MpO1xuICAgICAgICBkZWJ1ZyhgU0VUICR7Y2FjaGVLZXl9YCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGUgc3RyZWFtIGVycm9yZWQ6IHN0b3JlIG5vdGhpbmcgcmF0aGVyIHRoYW4gYSBwYXJ0aWFsIGVudHJ5LlxuICAgICAgICBkZWJ1ZyhgU0VUIEZBSUxFRCAke2NhY2hlS2V5fWAsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLi4udGFnTWV0aG9kcyh0YWdzKSxcblxuICAgIC8vIGBJbmZpbml0eWAgaGFzIE5leHQuanMgcGFzcyB0aGUgaW1wbGljaXQgdGFncyB0byBgZ2V0YCBpbnN0ZWFkLCBzbyB0aGV5XG4gICAgLy8gYXJlIGp1ZGdlZCBhZ2FpbnN0IHRoZSBlbnRyeSByZWFkOiB3aGV0aGVyIGFuc3dlcmluZyBuZWVkcyBhIG1hcmtlclxuICAgIC8vIHJlYWQgZGVwZW5kcyBvbiB0aGF0IGVudHJ5J3MgYHRpbWVzdGFtcGAsIHdoaWNoIHRoaXMgZG9lcyBub3Qga25vdy5cbiAgICBnZXRFeHBpcmF0aW9uOiBhc3luYyAoKSA9PiBJbmZpbml0eSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGF6eUhhbmRsZXIoKCkgPT4gY3JlYXRlRGVmYXVsdFVzZUNhY2hlSGFuZGxlcigpKTtcbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNhY2hlLWRlZmF1bHQtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVyL3VzZS1jYWNoZS1kZWZhdWx0LWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtREEsb0VBcUdDO0FBeEpEOzs7Ozs7Ozs7O0VBVUU7QUFDRixzREFBc0Q7QUFDdEQsa0RBQTZCO0FBRzdCLHlEQWM0QjtBQU81Qjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILFNBQWdCLDRCQUE0QixDQUMxQyxVQUF5QyxFQUFFO0lBRTNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBQSxvQ0FBaUIsR0FBRSxDQUFDO0lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksMkJBQVEsQ0FDekIsSUFBQSxnQ0FBYSxFQUFDLG1DQUFtQyxFQUFFLHVDQUFvQixDQUFDLENBQ3pFLENBQUM7SUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLDhCQUFXLEVBQUUsQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3JFLHVFQUF1RTtJQUN2RSx3RUFBd0U7SUFDeEUsYUFBYTtJQUNiLElBQUksQ0FBQyxjQUFjLENBQ2pCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFBLHNCQUFHLEdBQUUsQ0FBQyxFQUNsRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUEsc0JBQUcsR0FBRSxDQUFDLENBQzlCLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLE9BQTBCLEVBQUUsRUFBRSxDQUNqRSxJQUFBLDBCQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUVyRSxPQUFPO1FBQ0wsS0FBSyxDQUFDLEdBQUcsQ0FDUCxRQUFnQixFQUNoQixXQUFxQixFQUFFO1lBRXZCLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixLQUFLLENBQUMsUUFBUSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxJQUFBLG1DQUFnQixFQUFDLE1BQU0sRUFBRSxJQUFBLHNCQUFHLEdBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLEtBQUssQ0FBQyxXQUFXLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFDRCx5RUFBeUU7WUFDekUsd0VBQXdFO1lBQ3hFLHNFQUFzRTtZQUN0RSw0REFBNEQ7WUFDNUQsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0RCxHQUFHLE1BQU0sQ0FBQyxJQUFJO2dCQUNkLEdBQUcsUUFBUTthQUNaLENBQUMsQ0FBQztZQUNILG1FQUFtRTtZQUNuRSw0QkFBNEI7WUFDNUIsTUFBTSxLQUFLLEdBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUztnQkFDM0MsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxrQkFBa0IsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUNELEtBQUssQ0FBQyxPQUFPLFFBQVEsR0FBRyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkUsd0VBQXdFO1lBQ3hFLGlFQUFpRTtZQUNqRSxPQUFPLElBQUEsK0JBQVksRUFBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsS0FBSyxDQUFDLEdBQUcsQ0FDUCxRQUFnQixFQUNoQixZQUFpQztZQUVqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsZ0NBQWEsRUFBQyxZQUFZLENBQUMsQ0FBQztnQkFDakQsSUFBSSxJQUFBLGlDQUFjLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsS0FBSyxDQUFDLHNCQUFzQixRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUN4QyxPQUFPO2dCQUNULENBQUM7Z0JBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLDJEQUEyRDtnQkFDM0QscUVBQXFFO2dCQUNyRSxzRUFBc0U7Z0JBQ3RFLGdDQUFnQztnQkFDaEMsS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEMsS0FBSyxDQUFDLE9BQU8sUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixpRUFBaUU7Z0JBQ2pFLEtBQUssQ0FBQyxjQUFjLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLENBQUM7b0JBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQztZQUNULENBQUM7UUFDSCxDQUFDO1FBRUQsR0FBRyxJQUFBLDZCQUFVLEVBQUMsSUFBSSxDQUFDO1FBRW5CLDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUsc0VBQXNFO1FBQ3RFLGFBQWEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLFFBQVE7S0FDcEMsQ0FBQztBQUNKLENBQUM7QUFFRCxrQkFBZSxJQUFBLDhCQUFXLEVBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgVGhlIGBjYWNoZUhhbmRsZXJzLmRlZmF1bHRgIGhhbmRsZXIsIGZvciBwbGFpbiBgJ3VzZSBjYWNoZSdgLlxuICBTZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2NvbmZpZy9uZXh0LWNvbmZpZy1qcy9jYWNoZUhhbmRsZXJzXG5cbiAgU3RvcmFnZSBzdGF5cyBpbiBtZW1vcnksIHBlciBpbnN0YW5jZSwgYXMgTmV4dC5qcyBpbnRlbmRzIGZvciBgJ3VzZSBjYWNoZSdgXG4gIChgJ3VzZSBjYWNoZTogcmVtb3RlJ2AgaXMgdGhlIHNoYXJlZCBvbmUpLiBXaGF0IHRoaXMgY2hhbmdlcyBpcyB0YWdzOiBOZXh0LmpzJ3NcbiAgYnVpbHQtaW4gaGFuZGxlciBrZWVwcyB0aGVtIGluIGEgcHJvY2Vzcy1sb2NhbCBtYXAsIHNvIGEgYHJldmFsaWRhdGVUYWdgIG9uXG4gIG9uZSBpbnN0YW5jZSBsZWZ0IGV2ZXJ5IG90aGVyIGluc3RhbmNlIHNlcnZpbmcgdGhlIHJldmFsaWRhdGVkIGVudHJ5LiBIZXJlXG4gIHRoZXkgZ28gdGhyb3VnaCB0aGUgcmV2YWxpZGF0aW9uIHRhYmxlJ3MgbWFya2VyIHJvd3MuIFNlZVxuICBgVHJhY2tlZFRhZ01hcmtlcnNgLlxuKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IGdldERlYnVnIGZyb20gXCJkZWJ1Z1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZUVudHJ5LCBDYWNoZUhhbmRsZXIgfSBmcm9tIFwibmV4dC9jYWNoZVwiO1xuaW1wb3J0IHsgVHJhY2tlZFRhZ01hcmtlcnMgfSBmcm9tIFwiLi9hd3MtY2FjaGUtc3RvcmVcIjtcbmltcG9ydCB7XG4gIGF3YWl0SWYsXG4gIGNhY2hlRW50cnlPZixcbiAgREVGQVVMVF9NRU1PUllfQllURVMsXG4gIEVudHJ5THJ1LFxuICBpc0R5bmFtaWNFbnRyeSxcbiAgaXNQYXN0UmV2YWxpZGF0ZSxcbiAgbGF6eUhhbmRsZXIsXG4gIG5vdyxcbiAgbnVtYmVyRnJvbUVudixcbiAgUGVuZGluZ1NldHMsXG4gIHNoYXJlZFRhZ01hbmlmZXN0LFxuICBzdG9yZWRFbnRyeU9mLFxuICB0YWdNZXRob2RzLFxufSBmcm9tIFwiLi91c2UtY2FjaGUtY29tbW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFVzZUNhY2hlSGFuZGxlck9wdGlvbnMge1xuICAvKiogVGFnIHN0YXRlOyB0aGUgcHJvY2Vzcy13aWRlIG9uZSBmcm9tIHRoZSBlbnZpcm9ubWVudCBieSBkZWZhdWx0LiAqL1xuICB0YWdzPzogVHJhY2tlZFRhZ01hcmtlcnM7XG59XG5cbi8qKlxuICogQSBgJ3VzZSBjYWNoZSdgIGhhbmRsZXIgd2l0aCB0aGUgc2VtYW50aWNzIG9mIE5leHQuanMncyBidWlsdC1pbiBvbmVcbiAqIChgbmV4dC9kaXN0L3NlcnZlci9saWIvY2FjaGUtaGFuZGxlcnMvZGVmYXVsdC5qc2ApIGFuZCB0YWdzIHNoYXJlZCBhY3Jvc3NcbiAqIGluc3RhbmNlcy5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IHJhdGhlciB0aGFuIGEgd3JhcHBlcjogdGhlIGJ1aWx0LWluIGhhbmRsZXIganVkZ2VzIHRhZ3MgYWdhaW5zdFxuICogdGhlIG1vZHVsZS1sZXZlbCBgdGFnc01hbmlmZXN0YCBvZiB3aGljaGV2ZXIgY29weSBvZiBgbmV4dGAgaXQgd2FzIHJlcXVpcmVkXG4gKiBmcm9tLCBhbmQgdGhpcyBidW5kbGUgY2Fubm90IGJlIHN1cmUgb2YgcmVhY2hpbmcgdGhlIGNvcHkgdGhlIHNlcnZlciBsb2FkZWRcbiAqICh0aGUgc2FtZSByZWFzb24gYFMzQ2FjaGVIYW5kbGVyYCByZWFkcyB0aGF0IG1hbmlmZXN0IGZyb20gdGhlIG1vZHVsZSBjYWNoZVxuICogaW5zdGVhZCBvZiByZXF1aXJpbmcgaXQpLiBLZWVwaW5nIHRoZSB0YWcgc3RhdGUgaGVyZSByZW1vdmVzIHRoZSBxdWVzdGlvbi5cbiAqXG4gKiBBcyBpbiB0aGUgYnVpbHQtaW4gaGFuZGxlciwgYW4gZW50cnkgaXMgZHJvcHBlZCBvbmNlIGl0IGlzIHBhc3QgYHJldmFsaWRhdGVgXG4gKiByYXRoZXIgdGhhbiBzZXJ2ZWQgc3RhbGU6IGFuIGluLW1lbW9yeSBlbnRyeSBpcyBsaWtlbHkgZXZpY3RlZCBiZWZvcmUgYVxuICogYmFja2dyb3VuZCByZWZyZXNoIHdvdWxkIHBheSBvZmYuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VXNlQ2FjaGVIYW5kbGVyKFxuICBvcHRpb25zOiBEZWZhdWx0VXNlQ2FjaGVIYW5kbGVyT3B0aW9ucyA9IHt9LFxuKTogQ2FjaGVIYW5kbGVyIHtcbiAgY29uc3QgdGFncyA9IG9wdGlvbnMudGFncyA/PyBzaGFyZWRUYWdNYW5pZmVzdCgpO1xuICBjb25zdCBtZW1vcnkgPSBuZXcgRW50cnlMcnUoXG4gICAgbnVtYmVyRnJvbUVudihcIkNES19ORVhUSlNfVVNFX0NBQ0hFX01FTU9SWV9CWVRFU1wiLCBERUZBVUxUX01FTU9SWV9CWVRFUyksXG4gICk7XG4gIGNvbnN0IHBlbmRpbmcgPSBuZXcgUGVuZGluZ1NldHMoKTtcbiAgY29uc3QgZGVidWcgPSBnZXREZWJ1ZyhcImNkay1uZXh0anM6Y2FjaGUtaGFuZGxlcjp1c2UtY2FjaGU6ZGVmYXVsdFwiKTtcbiAgLy8gRXhwaXJlZCBlbnRyaWVzLCB3aGljaCBgZ2V0YCBkcm9wcyBhbnl3YXksIGRvbid0IGNvdW50IGFzIGhlbGQgZm9yIGFcbiAgLy8gcmVmcmVzaCB0byB3YWl0IGZvciwgbm9yIGhvbGQgYGNvbXBsZXRlU2luY2VgJ3MgcHJ1bmluZyBiYWNrIHBhc3QgdGhlXG4gIC8vIG5leHQgc2Nhbi5cbiAgdGFncy5qdWRnZUVudHJpZXNPZihcbiAgICAoc2NhbikgPT5cbiAgICAgIHNjYW4gPyBtZW1vcnkub2xkZXN0VGltZXN0YW1wKG5vdygpKSA6IG1lbW9yeS5vbGRlc3RCb3VuZChub3coKSksXG4gICAgKCkgPT4gbWVtb3J5LmhvbGRzTGl2ZShub3coKSksXG4gICk7XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIG1hcmtlcnMgb2Ygd2hpY2hldmVyIG9mIGB0YWdMaXN0YCBhcmUgdW50cmFja2VkOiBmaXJzdCwgd2hlbiB0aGVcbiAgICogYW5zd2VyIGRlcGVuZHMgb24gdGhlbSwgb3IgZWxzZSBpbiB0aGUgYmFja2dyb3VuZC4gUmVhZCBlaXRoZXIgd2F5LCBzb1xuICAgKiB0aGUgdGFncyBqb2luIHRoZSByb2xsaW5nIHJlLXJlYWQsIHdoaWNoIGNhdGNoZXMgYSByZXZhbGlkYXRpb24gd2hvc2UgbG9nXG4gICAqIHJvdyBmYWlsZWQgdG8gd3JpdGUuXG4gICAqL1xuICBjb25zdCBlbnN1cmVUYWdzID0gKG5lZWRlZDogYm9vbGVhbiwgdGFnTGlzdDogcmVhZG9ubHkgc3RyaW5nW10pID0+XG4gICAgYXdhaXRJZihuZWVkZWQsIHRhZ3MuZW5zdXJlKHRhZ0xpc3QpLCBcIkVycm9yIHJlYWRpbmcgY2FjaGUgdGFnczpcIik7XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXQoXG4gICAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgICAgc29mdFRhZ3M6IHN0cmluZ1tdID0gW10sXG4gICAgKTogUHJvbWlzZTxDYWNoZUVudHJ5IHwgdW5kZWZpbmVkPiB7XG4gICAgICBhd2FpdCBwZW5kaW5nLndhaXQoY2FjaGVLZXkpO1xuICAgICAgY29uc3Qgc3RvcmVkID0gbWVtb3J5LmdldChjYWNoZUtleSk7XG4gICAgICBpZiAoIXN0b3JlZCkge1xuICAgICAgICBkZWJ1ZyhgTUlTUyAke2NhY2hlS2V5fWApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGlzUGFzdFJldmFsaWRhdGUoc3RvcmVkLCBub3coKSkpIHtcbiAgICAgICAgZGVidWcoYEVYUElSRUQgJHtjYWNoZUtleX1gKTtcbiAgICAgICAgbWVtb3J5LmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICAvLyBPbmx5IGFuIGVudHJ5IG9sZGVyIHRoYW4gd2hhdCB0aGUgbWFuaWZlc3QgZnVsbHkga25vd3MgbmVlZHMgaXRzIHRhZ3MnXG4gICAgICAvLyBtYXJrZXJzIHJlYWQgZmlyc3Q6IHNlZSBgY29tcGxldGVTaW5jZWAuIEV2ZXJ5IGVudHJ5IHN0b3JlZCBzaW5jZSB0aGVcbiAgICAgIC8vIGluc3RhbmNlIHN0YXJ0ZWQgaXMgbmV3ZXIsIHNvIGl0cyBmaXJzdCByZWFkIHdhaXRzIG9uIG5vdGhpbmcgLSBub3JcbiAgICAgIC8vIGRvZXMgYSBuZXcgcGF0aCdzLCB3aG9zZSBpbXBsaWNpdCB0YWdzIGl0IGhhcyBuZXZlciByZWFkLlxuICAgICAgYXdhaXQgZW5zdXJlVGFncyhzdG9yZWQudGltZXN0YW1wIDwgdGFncy5jb21wbGV0ZVNpbmNlLCBbXG4gICAgICAgIC4uLnN0b3JlZC50YWdzLFxuICAgICAgICAuLi5zb2Z0VGFncyxcbiAgICAgIF0pO1xuICAgICAgLy8gSW1wbGljaXQgdGFncyBjb3VudCBvbmNlIGV4cGlyZWQsIG5vdCBzdGFsZSwgYXMgTmV4dC5qcyBjb21wYXJlc1xuICAgICAgLy8gYGdldEV4cGlyYXRpb25gJ3MgYW5zd2VyLlxuICAgICAgY29uc3Qgc3RhdGUgPVxuICAgICAgICB0YWdzLmV4cGlyYXRpb24oc29mdFRhZ3MpID49IHN0b3JlZC50aW1lc3RhbXBcbiAgICAgICAgICA/IFwiZXhwaXJlZFwiXG4gICAgICAgICAgOiB0YWdzLnN0YXRlKHN0b3JlZC50YWdzLCBzdG9yZWQudGltZXN0YW1wKTtcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJleHBpcmVkXCIpIHtcbiAgICAgICAgZGVidWcoYEVYUElSRUQgQlkgVEFHICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgIG1lbW9yeS5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgZGVidWcoYEhJVCAke2NhY2hlS2V5fSR7c3RhdGUgPT09IFwic3RhbGVcIiA/IFwiIChzdGFsZSB0YWcpXCIgOiBcIlwifWApO1xuICAgICAgLy8gYHJldmFsaWRhdGU6IC0xYCBpcyBob3cgdGhlIGJ1aWx0LWluIGhhbmRsZXIgcmVwb3J0cyBhIHN0YWxlIHRhZzogdGhlXG4gICAgICAvLyB3cmFwcGVyIHNlcnZlcyB0aGUgZW50cnkgYW5kIHJlZ2VuZXJhdGVzIGl0IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAgcmV0dXJuIGNhY2hlRW50cnlPZihzdG9yZWQsIHN0YXRlID09PSBcInN0YWxlXCIgPyAtMSA6IHN0b3JlZC5yZXZhbGlkYXRlKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgc2V0KFxuICAgICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICAgIHBlbmRpbmdFbnRyeTogUHJvbWlzZTxDYWNoZUVudHJ5PixcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IGRvbmUgPSBwZW5kaW5nLmJlZ2luKGNhY2hlS2V5KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0b3JlZCA9IGF3YWl0IHN0b3JlZEVudHJ5T2YocGVuZGluZ0VudHJ5KTtcbiAgICAgICAgaWYgKGlzRHluYW1pY0VudHJ5KHN0b3JlZCkpIHtcbiAgICAgICAgICBkZWJ1ZyhgU0tJUCBkeW5hbWljIGVudHJ5ICR7Y2FjaGVLZXl9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1lbW9yeS5zZXQoY2FjaGVLZXksIHN0b3JlZCk7XG4gICAgICAgIC8vIEluIHRoZSBiYWNrZ3JvdW5kLCBub3cgcmF0aGVyIHRoYW4gYXQgdGhlIGZpcnN0IGBnZXRgOiBhXG4gICAgICAgIC8vIHJldmFsaWRhdGlvbiBmcm9tIGJlZm9yZSB0aGUgbG9nJ3MgZmlyc3QgbG9va2JhY2sgd2l0aCBhbiBgZXhwaXJlYFxuICAgICAgICAvLyBzdGlsbCB0byBjb21lIGV4cGlyZXMgdGhpcyBlbnRyeSB3aGVuIGl0IGNvbWVzLCBhbmQgb25seSB0aGUgbWFya2VyXG4gICAgICAgIC8vIHNheXMgc28uIFNlZSBgY29tcGxldGVTaW5jZWAuXG4gICAgICAgIHZvaWQgZW5zdXJlVGFncyhmYWxzZSwgc3RvcmVkLnRhZ3MpO1xuICAgICAgICBkZWJ1ZyhgU0VUICR7Y2FjaGVLZXl9YCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGUgc3RyZWFtIGVycm9yZWQ6IHN0b3JlIG5vdGhpbmcgcmF0aGVyIHRoYW4gYSBwYXJ0aWFsIGVudHJ5LlxuICAgICAgICBkZWJ1ZyhgU0VUIEZBSUxFRCAke2NhY2hlS2V5fWAsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLi4udGFnTWV0aG9kcyh0YWdzKSxcblxuICAgIC8vIGBJbmZpbml0eWAgaGFzIE5leHQuanMgcGFzcyB0aGUgaW1wbGljaXQgdGFncyB0byBgZ2V0YCBpbnN0ZWFkLCBzbyB0aGV5XG4gICAgLy8gYXJlIGp1ZGdlZCBhZ2FpbnN0IHRoZSBlbnRyeSByZWFkOiB3aGV0aGVyIGFuc3dlcmluZyBuZWVkcyBhIG1hcmtlclxuICAgIC8vIHJlYWQgZGVwZW5kcyBvbiB0aGF0IGVudHJ5J3MgYHRpbWVzdGFtcGAsIHdoaWNoIHRoaXMgZG9lcyBub3Qga25vdy5cbiAgICBnZXRFeHBpcmF0aW9uOiBhc3luYyAoKSA9PiBJbmZpbml0eSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGF6eUhhbmRsZXIoKCkgPT4gY3JlYXRlRGVmYXVsdFVzZUNhY2hlSGFuZGxlcigpKTtcbiJdfQ==