sliftutils 1.7.60 → 1.7.62

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 (47) hide show
  1. package/index.d.ts +13 -1
  2. package/misc/dist/environment.ts.cache +2 -2
  3. package/misc/dist/getSecret.ts.cache +2 -2
  4. package/misc/dist/strings.ts.cache +2 -2
  5. package/misc/dist/zip.ts.cache +2 -2
  6. package/misc/https/dist/certs.ts.cache +2 -2
  7. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  8. package/package.json +1 -1
  9. package/render-utils/dist/observer.tsx.cache +2 -2
  10. package/spec.txt +7 -3
  11. package/storage/ArchivesDisk.ts +9 -2
  12. package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
  13. package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
  14. package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
  15. package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
  16. package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
  17. package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
  18. package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
  19. package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
  20. package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
  21. package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
  22. package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
  23. package/storage/dist/ArchivesDisk.ts.cache +13 -5
  24. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  25. package/storage/dist/IArchives.ts.cache +2 -2
  26. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  27. package/storage/dist/JSONStorage.ts.cache +2 -2
  28. package/storage/dist/PendingManager.tsx.cache +2 -2
  29. package/storage/dist/TransactionStorage.ts.cache +2 -2
  30. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  31. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  32. package/storage/remoteStorage/createArchives.d.ts +12 -0
  33. package/storage/remoteStorage/createArchives.ts +43 -6
  34. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
  35. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
  36. package/storage/remoteStorage/dist/blobStore.ts.cache +2 -2
  37. package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
  38. package/storage/remoteStorage/dist/createArchives.ts.cache +42 -6
  39. package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
  40. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  41. package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
  42. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +11 -5
  43. package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
  44. package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
  45. package/storage/remoteStorage/dist/storageController.ts.cache +2 -2
  46. package/storage/remoteStorage/sourceWrapper.d.ts +1 -1
  47. package/storage/remoteStorage/sourceWrapper.ts +8 -2
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  // The important operations of an archive bucket (extracted from ArchivesBackblaze), so other backends (e.g. our own remote storage server) can be used interchangeably.
3
3
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
4
4
  //exports.copyArchiveFile = exports.windowAcceptsWrites = exports.VARIABLE_SHARD = exports.FULL_ROUTE = exports.STORAGE_WRONG_ROUTE = exports.STORAGE_WRONG_VALID_WINDOW = exports.FULL_VALID_WINDOW = exports.assertValidLastModified = exports.IMMUTABLE_CACHE_TIME = exports.MAX_LAST_MODIFIED_FUTURE = void 0;
@@ -73,4 +73,4 @@ async function copyArchiveFile(config) {
73
73
  }
74
74
  exports.copyArchiveFile = copyArchiveFile;
75
75
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUFyY2hpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSUFyY2hpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3S0FBd0s7OztBQUV4SyxzSkFBc0o7QUFDekksUUFBQSx3QkFBd0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV2RCx5TEFBeUw7QUFDNUssUUFBQSxvQkFBb0IsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pELFNBQWdCLHVCQUF1QixDQUFDLFlBQW9CO0lBQ3hELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQ0FBd0IsQ0FBQztJQUNoRCxJQUFJLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxZQUFZLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFHLENBQUM7QUFDTCxDQUFDO0FBTEQsMERBS0M7QUF1RVksUUFBQSxpQkFBaUIsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUF3RWhGLHdYQUF3WDtBQUMzVyxRQUFBLDBCQUEwQixHQUFHLDRDQUE0QyxDQUFDO0FBRXZGLDhMQUE4TDtBQUNqTCxRQUFBLG1CQUFtQixHQUFHLHFDQUFxQyxDQUFDO0FBRTVELFFBQUEsVUFBVSxHQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUVuRCwyUkFBMlI7QUFDOVEsUUFBQSxjQUFjLEdBQUcsNkNBQTZDLENBQUM7QUFDNUUsb0xBQW9MO0FBQ3BMLDhKQUE4SjtBQUM5SixTQUFnQixtQkFBbUIsQ0FBQyxXQUF5QztJQUN6RSxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBSEQsa0RBR0M7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QUM7QUEzQ0QsMENBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIGltcG9ydGFudCBvcGVyYXRpb25zIG9mIGFuIGFyY2hpdmUgYnVja2V0IChleHRyYWN0ZWQgZnJvbSBBcmNoaXZlc0JhY2tibGF6ZSksIHNvIG90aGVyIGJhY2tlbmRzIChlLmcuIG91ciBvd24gcmVtb3RlIHN0b3JhZ2Ugc2VydmVyKSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkuXG5cbi8vIEEgd3JpdGUgbWF5IG5vdCBiZSBzdGFtcGVkIG1vcmUgdGhhbiB0aGlzIGZhciBpbiB0aGUgZnV0dXJlLCBvciBjbG9jayBza2V3IGJldHdlZW4gbWFjaGluZXMgd291bGQgbGV0IGEgYmFkIHRpbWVzdGFtcCBibG9jayB3cml0ZXMgZm9yIGEgbG9uZyB0aW1lLlxuZXhwb3J0IGNvbnN0IE1BWF9MQVNUX01PRElGSUVEX0ZVVFVSRSA9IDE1ICogNjAgKiAxMDAwO1xuXG4vLyBIb3cgbG9uZyBicm93c2VycyBtYXkgY2FjaGUgZmlsZXMgZnJvbSBpbW11dGFibGUgYnVja2V0cyAodGhlIENhY2hlLUNvbnRyb2wgbWF4LWFnZSksIHNoYXJlZCBieSBldmVyeSBob3N0aW5nIHBhdGggKGJhY2tibGF6ZSBidWNrZXQgc2V0dGluZ3MgYW5kIG91ciBvd24gc3RvcmFnZSBzZXJ2ZXIncyBIVFRQIHJvdXRlKVxuZXhwb3J0IGNvbnN0IElNTVVUQUJMRV9DQUNIRV9USU1FID0gODY0MDAgKiAxMDAwO1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkTGFzdE1vZGlmaWVkKGxhc3RNb2RpZmllZDogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IG1heCA9IERhdGUubm93KCkgKyBNQVhfTEFTVF9NT0RJRklFRF9GVVRVUkU7XG4gICAgaWYgKGxhc3RNb2RpZmllZCA+IG1heCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxhc3RNb2RpZmllZCBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmU6ICR7bGFzdE1vZGlmaWVkfSA+ICR7bWF4fSAobm93ICsgMTUgbWludXRlcylgKTtcbiAgICB9XG59XG5cblxuZXhwb3J0IHR5cGUgUmVtb3RlQ29uZmlnID0ge1xuICAgIC8vIE5PVEU6IFZlcnNpb24gaXMgdXNlZCB3aGVuIHVwZGF0aW5nIHRoZSBjb25maWd1cmF0aW9uLiBUaGUgbmV3ZXIgdmVyc2lvbiBpcyBhbHdheXMgdGFrZW4uIEEgbWlzc2luZyB2ZXJzaW9uIGNvdW50cyBhcyB2ZXJzaW9uIC0xLlxuICAgIHZlcnNpb24/OiBudW1iZXI7XG4gICAgc291cmNlczogUmVtb3RlQ29uZmlnQmFzZVtdO1xufTtcblxuLyoqXG4gICAgc3RyaW5nIGFyZ3VtZW50cyB3aWxsIGJlIGEgdXJsLCBsb29raW5nIGxpa2U6XG4gICAgICAgIGh0dHBzOi8vc3RvcmFnZTIudmlkZ3JpZHdlYi5jb206NDQ0NS9maWxlL2V4YW1wbGVhY2NvdW50L2V4YW1wbGVidWNrZXQvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG4gICAgICAgIGh0dHBzOi8vZjAwMi5iYWNrYmxhemViMi5jb20vZmlsZS9xdWVyeXN1YnRlc3QtY29tLXB1YmxpYy1pbW11dGFibGUvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG4gICAgICAgIC0gVGhlc2UgbWFwIHRvIHsgdXJsIH0sIHdpdGggdGhlIHR5cGUgaW5mZXJyZWQgZnJvbSB0aGUgdXJsXG4gICAgICAgIC0gSG9zdGVkIHVybHMgYXJlIC9maWxlLzxhY2NvdW50Pi88YnVja2V0TmFtZT4vLi4uLCBiYWNrYmxhemUgdXJscyBhcmUgL2ZpbGUvPGJ1Y2tldE5hbWU+Ly4uLlxuXG4gICAgTk9URTogSWYgd2UgZG8gbm90IGhhdmUgcmlnaHQgYWNjZXNzIHRvIHRoZXNlLCB0aGVuIGl0IGJlY29tZXMgYSByZWFkLW9ubHkgSUFyY2hpdmVzLCB3aGVyZSB3ZSBzb2xlbHkgcmVhZCB1c2luZyB0aGUgdXJsIGZvcm0gKHdoaWNoIG1pZ2h0IHRocm93IGR1ZSB0byBub3QgaGF2aW5nIGFjY2VzcyBhcyB3ZWxsKS4gVU5MRVNTIE91ciBjb25maWd1cmF0aW9uIGV4cGxpY2l0bHkgaGFzIHB1YmxpYzogZmFsc2UsIGluIHdoaWNoIGNhc2UsIHdlIGRvbid0IGV2ZW4gaGl0IHRoZSBVUkwgYW5kIHdlIHRocm93IG9uIGFjY2Vzcy5cblxuICAgIE5PVEU6IElmIHdlJ3JlIGluIHRoZSBicm93c2VyLCB3ZSBzaG91bGQgYWxsb3cgZG93bmxvYWRpbmcgdGhlIGZpbGVzIHZpYSB0aGUgVVJMIGZvcm0gKGlmIGl0J3MgYSBwdWJsaWMgYnVja2V0KSwgaG93ZXZlciwgd2Ugd29uJ3QgYWxsb3cgd3JpdGluZywgYmVjYXVzZSB0aGVpciBzZXJ2ZXJzIGRvIG5vdCBhbGxvdyBzZWN1cmUgYnJvd3NlciB3cml0ZXMuXG4qL1xuZXhwb3J0IHR5cGUgUmVtb3RlQ29uZmlnQmFzZSA9IHN0cmluZyB8IEhvc3RlZENvbmZpZyB8IEJhY2tibGF6ZUNvbmZpZztcblxuZXhwb3J0IHR5cGUgQ29tbW9uQ29uZmlnID0ge1xuICAgIC8qKiBCeSBkZWZhdWx0IGEgc2VydmVyIGhvc3RpbmcgdGhpcyBidWNrZXQgZWFnZXJseSBjb3BpZXMgdGhpcyBzb3VyY2UncyBmdWxsIGNvbnRlbnRzIG9udG8gaXRzIG93biBkaXNrIChvbiB0b3Agb2YgdGhlIGxhenkgcmVhZC10aHJvdWdoIGNhY2hpbmcpLiBTZXQgdGhpcyB0byBiZSBhIGZyb250IGVuZCBmb3IgYSB2ZXJ5IGxhcmdlIGRhdGFiYXNlIHdpdGhvdXQgY29weWluZyB0aGUgZnVsbCBkYXRhYmFzZSAtIHJlYWRzIHN0aWxsIGRvd24tY2FjaGUgaW5kaXZpZHVhbCBmaWxlcyBvbiBkZW1hbmQuICovXG4gICAgbm9GdWxsU3luYz86IGJvb2xlYW47XG4gICAgLyoqIEJ5dGVzIG9mIHJlYWQtY2FjaGUgdGhpcyBzZXJ2ZXIncyBkaXNrIG1heSBob2xkOyBsZWFzdC1yZWNlbnRseS11c2VkIGZpbGVzIGFyZSBkZWxldGVkIGZyb20gZGlzayB0byBzdGF5IHVuZGVyIGl0IChvbmx5IGV2ZXIgd2hlbiBhbm90aGVyIHNvdXJjZSB2ZXJpZmlhYmx5IGhvbGRzIHRoZSBmaWxlIC0gdGhlIG9ubHkgY29weSBpcyBuZXZlciBkZWxldGVkKS4gUmVxdWlyZXMgbm9GdWxsU3luYyAoYSBmdWxsIGNvcHkgY2FuJ3QgYmUgYm91bmRlZCkuICovXG4gICAgcmVhZGVyRGlza0xpbWl0PzogbnVtYmVyO1xuICAgIC8qKiBUaGUgd3JpdGUgdGltZXMgKFtzdGFydE1zLCBlbmRNc10pIHRoaXMgc291cmNlIGlzIHZhbGlkIGZvciAoc2VlIEFyY2hpdmVzU291cmNlLnZhbGlkV2luZG93IGZvciB0aGUgc3luY2hyb25pemF0aW9uIHNlbWFudGljcykuIFJlcXVpcmVkIG9uIG9iamVjdCBjb25maWdzOiBjb25maWd1cmF0aW9uIGNoYW5nZXMgbXVzdCBiZSBTQ0hFRFVMRUQgKGEgbmV3IHNvdXJjZSBiZWNvbWVzIHZhbGlkIGF0IGEgZnV0dXJlIHRpbWUgd2hpbGUgdGhlIG9sZCBvbmUncyB3aW5kb3cgZW5kcyksIG5vdCBmbGlwcGVkIGluc3RhbnRseS4gUGxhaW4gVVJMLXN0cmluZyBzb3VyY2VzIGRlZmF1bHQgdG8gRlVMTF9WQUxJRF9XSU5ET1cgLSBvbmNlIHlvdSdyZSB3cml0aW5nIG9iamVjdCBjb25maWdzLCB5b3UncmUgZG9pbmcgc29tZXRoaW5nIGNvbXBsaWNhdGVkIGVub3VnaCB0byB0aGluayBhYm91dCB3aGVuIHRoaW5ncyBjaGFuZ2UuICovXG4gICAgdmFsaWRXaW5kb3c6IFtudW1iZXIsIG51bWJlcl07XG4gICAgLyoqIFNoYXJkaW5nOiB0aGUgZnJhY3Rpb24gb2YgdGhlIGtleSBzcGFjZSB0aGlzIHNvdXJjZSBoYW5kbGVzLCBhcyBbc3RhcnQsIGVuZCkgb3ZlciBbMCwgMSkgKGtleXMgYXJlIHJvdXRlZCBieSBnZXRSb3V0ZSBpbiByZW1vdGVDb25maWcudHMpLiBEZWZhdWx0cyB0byBGVUxMX1JPVVRFICh1bnNoYXJkZWQpLiBBdCBldmVyeSBwb2ludCBpbiB0aW1lIHRoZSBzb3VyY2VzJyByb3V0ZXMgbXVzdCBmdWxseSBjb3ZlciBbMCwgMSksIG9yIHNvbWUga2V5cyBjb3VsZCBuZXZlciBiZSByZWFkLiAqL1xuICAgIHJvdXRlPzogW251bWJlciwgbnVtYmVyXTtcbiAgICAvKiogU2V0IG9uIGVudHJpZXMgaW5qZWN0ZWQgaW50byB0aGUgaW4tbWVtb3J5IGNvbmZpZyBieSBhbiBvdmVybGF5IChhIGRlcGxveSBzd2l0Y2hvdmVyJ3MgYWx0ZXJuYXRlLXBvcnQgd2luZG93KS4gTmV2ZXIgd3JpdHRlbiB0byBkaXNrOiByZXNvbHZlSW50ZXJtZWRpYXRlU291cmNlcyBzdHJpcHMgdGhlc2UgYW5kIHJlam9pbnMgdGhlIHdpbmRvd3MgYXJvdW5kIHRoZW0sIHdoaWNoIGlzIGFsc28gaG93IGEgY2xpZW50IHRlbGxzIHdoZXRoZXIgYW4gdXBkYXRlIGlzIGEgcmVhbCBjb25maWd1cmF0aW9uIGNoYW5nZSBvciBqdXN0IGFuIG92ZXJsYXkuICovXG4gICAgaW50ZXJtZWRpYXRlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEhvc3RlZENvbmZpZyA9IENvbW1vbkNvbmZpZyAmIHtcbiAgICB0eXBlOiBcInJlbW90ZVwiO1xuXG4gICAgLy8gRXg6IGh0dHBzOi8vOTktMjUwLTEyNC05MS5xdWVyeXN1YnRlc3QuY29tOjUyMzMvZmlsZS9yb290L3VuaXF1ZWJ1Y2tldG5hbWUvc3RvcmFnZS9zdG9yYWdlcm91dGluZy5qc29uXG4gICAgLy8gTk9URTogVGhlIGFjY291bnQgYW5kIGJ1Y2tldCBuYW1lIGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBVUkwuXG4gICAgdXJsOiBzdHJpbmc7XG5cbiAgICAvLyBOT1RFOiBBdXRoZW50aWNhdGlvbiBpcyBoYW5kbGVkIGJ5IGNlcnQudHMsIHZpYSBoYXZpbmcgeW91ciBtYWNoaW5lIHRydXN0ZWQgdG8gYWNjZXNzIHRoaXMgYWNjb3VudC4gXG5cbiAgICBwdWJsaWM/OiBib29sZWFuO1xuICAgIC8vIEZhc3QgbW9kZTogdGhlIHNlcnZlciBhY2tub3dsZWRnZXMgd3JpdGVzIG9uY2UgdGhleSBhcmUgaW4gbWVtb3J5LCBmbHVzaGluZyB0byBkaXNrIGFmdGVyIHdyaXRlRGVsYXkgKGRlZmF1bHQgNSBtaW51dGVzKSBhbmQgY29hbGVzY2luZyB3cml0ZXMgdG8gdGhlIHNhbWUgZmlsZS4gQSBzZXJ2ZXIgY3Jhc2ggbG9zZXMgd3JpdGVzIHRoYXQgaGF2ZW4ndCBmbHVzaGVkIHlldC5cbiAgICBmYXN0PzogYm9vbGVhbjtcbiAgICB3cml0ZURlbGF5PzogbnVtYmVyO1xuICAgIC8vIFRoZSBidWNrZXQgaXMgc2VydmVkIHN0cmFpZ2h0IGZyb20gdGhlIHNlcnZlcidzIGRpc2ssIHdpdGggbm8gaW5kZXgg4oCUIHNvIG5vIGZhc3Qgd3JpdGVzLCBubyBnZXRTeW5jU3RhdHVzLCBhbmQgZ2V0Q2hhbmdlc0FmdGVyMiBmYWxscyBiYWNrIHRvIGEgZnVsbCBsaXN0aW5nLlxuICAgIHJhd0Rpc2s/OiBib29sZWFuO1xuICAgIC8vIFdyaXRlcyB0byBwYXRocyB0aGF0IGFscmVhZHkgZXhpc3QgYXJlIGRpc2FsbG93ZWQgKGRlbGV0ZXMgc3RpbGwgd29yaykuXG4gICAgaW1tdXRhYmxlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tibGF6ZUNvbmZpZyA9IENvbW1vbkNvbmZpZyAmIHtcbiAgICB0eXBlOiBcImJhY2tibGF6ZVwiO1xuICAgIC8vIEV4OiBodHRwczovL2YwMDIuYmFja2JsYXplYjIuY29tL2ZpbGUvcXVlcnlzdWJ0ZXN0LWNvbS1wdWJsaWMtaW1tdXRhYmxlL3N0b3JhZ2Uvc3RvcmFnZXJvdXRpbmcuanNvblxuICAgIC8vIE5PVEU6IFRoZSBidWNrZXQgbmFtZSBpcyBvYnRhaW5lZCBmcm9tIHRoZSBVUkwuXG4gICAgdXJsOiBzdHJpbmc7XG4gICAgLy8gUHVibGljIGJ1Y2tldHMgYXJlIHNlcnZlZCBvdmVyIHBsYWluIEhUVFBTIEdFVHMgKGdldFVSTCkuIFByaXZhdGUgYnVja2V0cyBhcmUgQVBJLWFjY2VzcyBvbmx5LlxuICAgIHB1YmxpYz86IGJvb2xlYW47XG4gICAgLy8gTk9URTogVGhpcyBpc24ndCBlbmZvcmNlZCBvbiB0aGUgYmFja2JsYXplIGxldmVsLCBzbyB0aGlzIGlzIGp1c3QgYSBjbGllbnQtc2lkZSBndWFyYW50ZWUuIFRoaXMgY2FuIGNoYW5nZSBob3cgd2UgY2FjaGUgZmlsZXMuXG4gICAgLy8gIC0gQmFja2JsYXplIGRvZXMgc3VwcG9ydCBpbW11dGFiaWxpdHkuIEhvd2V2ZXIsIGFwcGFyZW50bHksIG9uY2Ugd2UgZW5hYmxlIGl0IG9uIGEgYnVja2V0LCB3ZSBjYW4ndCBkaXNhYmxlIGl0LCB3aGljaCBpcyByZWFsbHkgYmFkLCBhcyBpdCBtZWFucyBpZiBvdXIgY29kZSBjb3VsZCBldmVyIGVuYWJsZSBpdCBhbmQgd2UgYWNjaWRlbnRhbGx5IGVuYWJsZSBpdCBvbiBhbiBpbXBvcnRhbnQgYnVja2V0LCB3ZSBlc3NlbnRpYWxseSBqdXN0IGJyaWNrZWQgdGhhdCBidWNrZXQuIFNvIHdlIHNob3VsZCBuZXZlciB3cml0ZSBhbnkgY29kZSB0aGF0IGV2ZXIgdHJpZXMgdG8gdXNlIGJhY2tibGF6ZSB0byBtYWtlIHRoaW5ncyBpbW11dGFibGUuIFxuICAgIGltbXV0YWJsZT86IGJvb2xlYW47XG4gICAgLy8gQ09SUyBvcmlnaW5zIGFsbG93ZWQgdG8gY29uc3VtZSB0aGUgYnVja2V0J3MgZmlsZXMgaW4gYSBicm93c2VyLiBOb3QgYSBzZWN1cml0eSBib3VuZGFyeSAoYWNjZXNzIGlzIGdhdGVkIGJ5IHRoZSBBUEkga2V5IC8gc2lnbmVkIFVSTHMsIG5laXRoZXIgb2Ygd2hpY2ggcmlkZXMgaW4gY29va2llcykgLSBpdCBvbmx5IGNvbnRyb2xzIHdoaWNoIHNpdGVzJyBpbi1wYWdlIEphdmFTY3JpcHQgY2FuIHJlYWQgcmVzcG9uc2VzLiBEZWZhdWx0cyB0byBhbnkgSFRUUFMgb3JpZ2luLlxuICAgIGFsbG93ZWRPcmlnaW5zPzogc3RyaW5nW107XG5cbiAgICAvLyBOT1RFOiBXZSB3aWxsIGFjY2VzcyB0aGUgYXBpIGtleSBmcm9tIGdldFNlY3JldCwgc2VlIGJhY2tibGF6ZS50cyBmb3IgdGhlIHNwZWNpZmljIGtleXMuXG59O1xuXG5cbmV4cG9ydCBjb25zdCBGVUxMX1ZBTElEX1dJTkRPVzogW251bWJlciwgbnVtYmVyXSA9IFswLCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl07XG5cblxuXG5cbmV4cG9ydCB0eXBlIEdldENvbmZpZyA9IHtcbiAgICByYW5nZT86IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfTtcbiAgICAvKiogUmVhZCBPTkxZIGZyb20gdGhlIHByaW1hcnkgc291cmNlIC0gdGhlIG9uZSB3cml0ZXMgd291bGQgdGFyZ2V0IC0gaW5zdGVhZCBvZiBmYWxsaW5nIGJhY2sgYWNyb3NzIHRoZSByZWR1bmRhbnQgc291cmNlcy4gVXNlIHRoaXMgd2hlbiB5b3Ugd2FudCB5b3VyIHJlYWRzIGFuZCB3cml0ZXMgdG8gYmUgc29tZXdoYXQgYXRvbWljOiB0aGVyZSB3aWxsIHN0aWxsIGJlIGlzc3VlcyB3aXRoIHRoZSByb3VuZCB0cmlwLCBidXQgd2l0aG91dCBpdCB5b3UgY291bGQgdGFsayB0byBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG5vZGUgYW5kIGdldCBhIG11Y2ggb2xkZXIgdmFsdWUuIE1vc3QgcmVhZHMgYXJlbid0IGZvbGxvd2VkIGJ5IGEgd3JpdGUgdGhvdWdoLCBzbyBmb3IgbW9zdCBjYXNlcyBpdCdzIGJldHRlciB0byBnZXQgYSB2YWx1ZSB0aGFuIHRvIGhhdmUgdG8gd2FpdCAob3IgZXZlbiB0aHJvdykgd2hlbiB0aGUgcHJpbWFyeSBub2RlIGlzIG5vdCBhdmFpbGFibGUuICovXG4gICAgbm9GYWxsYmFja3M/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhbmdlc0FmdGVyQ29uZmlnID0ge1xuICAgIHRpbWU6IG51bWJlcjtcbiAgICAvKiogT25seSBrZXlzIHJvdXRpbmcgaW50byBvbmUgb2YgdGhlc2UgW3N0YXJ0LCBlbmQpIHJhbmdlcy4gT25seSBzY2FubmluZyBwYXNzZXMgdGhpcyAtIGl0IGxldHMgYSBzdG9yZSBzeW5jaW5nIGEgcGFydGlhbCBzaGFyZCBhc2sgZm9yIGp1c3QgaXRzIHNsaWNlLiAqL1xuICAgIHJvdXRlcz86IFtudW1iZXIsIG51bWJlcl1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNldENvbmZpZyA9IHtcbiAgICBsYXN0TW9kaWZpZWQ/OiBudW1iZXI7XG4gICAgLyoqIE1ha2VzIHRoZSB3cml0ZSBhY2NlcHRhYmxlIG9uIGltbXV0YWJsZSB0YXJnZXRzOiBhbiBleGlzdGluZyBwYXRoIGlzIHNpbXBseSBrZXB0IChpbW11dGFiaWxpdHkgd2lucyAtIG5vdGhpbmcgaXMgb3ZlcndyaXR0ZW4pIGluc3RlYWQgb2YgdGhlIHdyaXRlIHRocm93aW5nLiBSZXF1aXJlcyBsYXN0TW9kaWZpZWQuIFN5bmNocm9uaXphdGlvbiBNVVNUIHBhc3MgdGhpcyBvbiBldmVyeSBwdXNoIC0gYSBwbGFpbiBzZXQgdGhyb3dzIG9uIGltbXV0YWJsZSB0YXJnZXRzLCB3aGljaCB3b3VsZCBhYm9ydCByZWNvbmNpbGlhdGlvbiB3aGVuZXZlciBvbmUgc291cmNlIGluIGEgY2hhaW4gaXMgaW1tdXRhYmxlLiAqL1xuICAgIGZvcmNlU2V0SW1tdXRhYmxlPzogYm9vbGVhbjtcbiAgICAvKiogU2tpcHMgdGhlIHRhcmdldC1zaWRlIHNhZmV0eSByZWFkcyBhcm91bmQgdGhlIHdyaXRlIChiYWNrYmxhemU6IHRoZSBwcmUtd3JpdGUgZ2V0SW5mbyBjb21wYXJpc29uIGFuZCB0aGUgcG9zdC11cGxvYWQgZXhpc3RlbmNlIHBvbGwpLiBGb3Igd3JpdGVycyB3aG9zZSBvd24gYm9va2tlZXBpbmcgYWxyZWFkeSBkZWNpZGVzIHdoYXQgdG8gd3JpdGUgYW5kIG9yZGVycyBpdCBieSB3cml0ZSB0aW1lIChCbG9iU3RvcmUncyBpbmRleC1kcml2ZW4gd3JpdGVzIGFuZCBzeW5jaHJvbml6YXRpb24pLCB0aG9zZSByZWFkcyBhcmUgcHVyZSBleHRyYSBBUEkgY2FsbHMgLSBidXQgdGhlIGRlZmF1bHQgc3RheXMgY2hlY2tlZCwgYmVjYXVzZSBvdGhlciB1c2VycyBvZiB0aGUgcmF3IGJhY2tlbmRzIHJlbHkgb24gdGhlIGNoZWNrcy4gKi9cbiAgICBub0NoZWNrcz86IGJvb2xlYW47XG59O1xuXG4vLyBjcmVhdGVUaW1lIGlzIGEgbWlzbm9tZXIga2VwdCBmb3IgY29tcGF0aWJpbGl0eSDigJQgaXQgaXMgcmVhbGx5IHRoZSBMQVNULVdSSVRFIHRpbWUsIHNhbWUgYXMgZ2V0SW5mbydzIHdyaXRlVGltZS4gTmVpdGhlciBCYWNrYmxhemUgbm9yIG91ciByZW1vdGUgc3RvcmFnZSB0cmFja3MgYSBkaXN0aW5jdCBjcmVhdGlvbiBkYXRlOiBlYWNoIHdyaXRlIHN0YW1wcyBhIGZyZXNoIHRpbWVzdGFtcCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uLCBzbyBib3RoIGZpZWxkcyBhcmUganVzdCBcIndoZW4gdGhlIGJ5dGVzIHNlcnZlZCBieSBnZXQoKSB3ZXJlIG1vc3QgcmVjZW50bHkgd3JpdHRlblwiLlxuZXhwb3J0IHR5cGUgQXJjaGl2ZUZpbGVJbmZvID0geyBwYXRoOiBzdHJpbmc7IGNyZWF0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH07XG5cbi8vIEFuIGluLXByb2dyZXNzIGJhY2tncm91bmQgc3luY2hyb25pemF0aW9uIHRhc2sgKHNlZSBBcmNoaXZlc0NvbmZpZy5zeW5jaW5nKVxuZXhwb3J0IHR5cGUgU3luY0FjdGl2aXR5ID0ge1xuICAgIC8vIEEgbWV0YWRhdGEgc2NhbiBpcyBhIHNpbmdsZSBsaXN0aW5nIGNhbGwsIHNvIGl0IGhhcyBubyBpbmNyZW1lbnRhbCBwcm9ncmVzcyAtIGp1c3QgdGhhdCBpdCdzIHJ1bm5pbmcgYW5kIHNpbmNlIHdoZW4uIEEgZnVsbCBzeW5jIGtub3dzIGl0cyBleGFjdCBmaWxlL2J5dGUgcHJvZ3Jlc3MuXG4gICAgdHlwZTogXCJtZXRhZGF0YVNjYW5cIiB8IFwiZnVsbFN5bmNcIjtcbiAgICBzb3VyY2VEZWJ1Z05hbWU6IHN0cmluZztcbiAgICBzdGFydFRpbWU6IG51bWJlcjtcbiAgICBkb25lRmlsZXM/OiBudW1iZXI7XG4gICAgdG90YWxGaWxlcz86IG51bWJlcjtcbiAgICBkb25lQnl0ZXM/OiBudW1iZXI7XG4gICAgdG90YWxCeXRlcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFyY2hpdmVzQ29uZmlnID0ge1xuICAgIC8vIFdoZXRoZXIgZ2V0Q2hhbmdlc0FmdGVyMiBpcyBuYXRpdmVseSBpbmRleC1iYWNrZWQgKGZhc3QgY2hhbmdlIHBvbGxpbmc7IGV2ZXJ5IGJhY2tlbmQgc3RpbGwgc2VydmVzIGl0LCBidXQgdGhlIG90aGVycyBlbXVsYXRlIGl0IHdpdGggYSBmdWxsIGxpc3RpbmcpXG4gICAgc3VwcG9ydHNDaGFuZ2VzQWZ0ZXI/OiBib29sZWFuO1xuICAgIC8vIFRoZSBidWNrZXQncyBmdWxsIHJvdXRpbmcgY29uZmlnIChST1VUSU5HX0ZJTEUpLiBBYnNlbnQgZm9yIHNvdXJjZXMgdGhhdCBkb24ndCBoYXZlIG9uZSAoYSBiYXJlIGRpc2sgc291cmNlLCBvciBhIGJ1Y2tldCB0aGF0IGRvZXNuJ3QgZXhpc3QgeWV0KS5cbiAgICByZW1vdGVDb25maWc/OiBSZW1vdGVDb25maWc7XG4gICAgLy8gTGl2ZSBpbmRleCB0b3RhbHMgKHRvbWJzdG9uZXMgZXhjbHVkZWQpLCBrZXB0IHVwIHRvIGRhdGUgaW4gbWVtb3J5IG9uIGV2ZXJ5IG11dGF0aW9uIGFuZCByZWNvbXB1dGVkIG9uIGxvYWQgLSBzbyBhbnkgZHJpZnQgaGVhbHMgb24gcmVzdGFydFxuICAgIGluZGV4PzogeyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXIgfTtcbiAgICAvLyBUaGUgc2FtZSB0b3RhbHMgYnJva2VuIGRvd24gYnkgd2hpY2ggc291cmNlIGN1cnJlbnRseSBob2xkcyBlYWNoIGZpbGUncyBieXRlcyAodGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBzZXJ2ZXIncyBvd24gZGlzaylcbiAgICBpbmRleFNvdXJjZXM/OiB7IGRlYnVnTmFtZTogc3RyaW5nOyBmaWxlQ291bnQ6IG51bWJlcjsgYnl0ZUNvdW50OiBudW1iZXIgfVtdO1xuICAgIC8vIFRoZSBzZXJ2ZXIncyBjb25maWd1cmVkIHJlYWRlckRpc2tMaW1pdCwgd2hlbiBpdCBydW5zIGFzIGEgYm91bmRlZCByZWFkIGNhY2hlXG4gICAgcmVhZGVyRGlza0xpbWl0PzogbnVtYmVyO1xuICAgIC8vIEJhY2tncm91bmQgc3luY2hyb25pemF0aW9uIGN1cnJlbnRseSBpbiBwcm9ncmVzcyAoZW1wdHkgd2hlbiBpZGxlKVxuICAgIHN5bmNpbmc/OiBTeW5jQWN0aXZpdHlbXTtcbn07XG5cbi8vIEEgc3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiBhIEJsb2JTdG9yZSAod2hpY2ggc3luY2hyb25pemVzIGFuIGluZGV4ICsgbG9jYWwgY2FjaGUgZnJvbSB0aGVtKVxuZXhwb3J0IHR5cGUgQXJjaGl2ZXNTb3VyY2UgPSB7XG4gICAgc291cmNlOiBJQXJjaGl2ZXM7XG4gICAgLyoqIFRoZSBwZXJzaXN0ZW50IGlkZW50aXR5IG9mIHRoZSBlbmRwb2ludDogaXRzIHJvdXRpbmcgVVJMIChob3N0ZWQvYmFja2JsYXplKSwgb3IgdGhlIGRpc2sgZm9sZGVyIHBhdGggZm9yIHRoZSBiYXNlIGRpc2sgc291cmNlLiBUaGUgc3RvcmUgcGVyc2lzdHMgdGhpcyAodmlhIGl0cyBhcHBlbmQtb25seSBzb3VyY2VzIGxpc3QpIGFzIEluZGV4RW50cnkuc291cmNlc0xpc3RJbmRleCwgc28gaXQgbXVzdCBtZWFuIHRoZSBzYW1lIGVuZHBvaW50IGZvcmV2ZXIuICovXG4gICAgdXJsOiBzdHJpbmc7XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnLiBUaGUgd2luZG93IHJvdXRlcyBXUklURVM6IG9uY2UgaXRzIGVuZCBpcyBwYXN0IChzZWUgd2luZG93QWNjZXB0c1dyaXRlcykgdGhlIHNvdXJjZSBzdG9wcyByZWNlaXZpbmcgd3JpdGVzIGVudGlyZWx5IC0gaXQganVzdCBzdG9wcyBncm93aW5nLiBJdCBkb2VzIE5PVCBmaWx0ZXIgc2Nhbm5pbmc6IGEgc2NhbiBpcyB1cyBhc2tpbmcgdGhlIHNvdXJjZSB3aGF0IGl0IGFscmVhZHkgaG9sZHMsIGFuZCBleGlzdGluZyB2YWx1ZXMgc3luY2hyb25pemUgcmVnYXJkbGVzcyBvZiB0aGVpciB3cml0ZSB0aW1lcyAodGhlIHNhbWUgcmVhc29uaW5nIHRoYXQgbGV0cyBzeW5jaHJvbml6YXRpb24gaWdub3JlIHRoZSBpbW11dGFibGUgZmxhZykuXG4gICAgdmFsaWRXaW5kb3c6IFtudW1iZXIsIG51bWJlcl07XG4gICAgLy8gRnJvbSB0aGUgc291cmNlJ3MgQ29tbW9uQ29uZmlnIChpbnRlcnNlY3RlZCB3aXRoIHRoZSBvd25pbmcgc3RvcmUncyBvd24gcm91dGUpOiBvbmx5IGtleXMgcm91dGluZyBpbnRvIFtzdGFydCwgZW5kKSBhcmUgYWNjZXB0ZWQgZnJvbSB0aGlzIHNvdXJjZSdzIHNjYW5zIGFuZCBzZW50IHRvIGl0IGluIHdyaXRlcy9yZWNvbmNpbGlhdGlvbi4gVGhlIHJvdXRpbmcgZmlsZSBpcyBleGVtcHQgLSBjb25maWcgZmxvd3MgZXZlcnl3aGVyZS4gQWJzZW50ID0gYWxsIGtleXMuXG4gICAgcm91dGU/OiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIC8vIEZyb20gdGhlIHNvdXJjZSdzIENvbW1vbkNvbmZpZzsgc2VlIHRoZXJlLlxuICAgIG5vRnVsbFN5bmM/OiBib29sZWFuO1xuICAgIC8vIEZyb20gdGhlIHNvdXJjZSdzIENvbW1vbkNvbmZpZzogYSBkZXBsb3kgc3dpdGNob3ZlcidzIHRlbXBvcmFyeSBhbHRlcm5hdGUtcG9ydCBlbnRyeS4gT25jZSBpdHMgd2luZG93IGlzIHBhc3QsIHRoZSBwb3J0IGl0IHBvaW50cyBhdCBpcyBnb25lIGZvciBnb29kIC0gc28gaXQgaXMgbmV2ZXIgc2Nhbm5lZCB0aGVuLCBhbmQgc2NhbiBmYWlsdXJlcyBhcmUgbmV2ZXIgcmV0cmllZC5cbiAgICBpbnRlcm1lZGlhdGU/OiBib29sZWFuO1xuICAgIC8vIFN0YWJsZSBpZGVudGl0eSBvZiB0aGUgdW5kZXJseWluZyBlbmRwb2ludCAoaXRzIGNvbmZpZyB3aXRoIHdpbmRvd3Mvcm91dGVzIHN0cmlwcGVkKSAtIGhvdyBCbG9iU3RvcmUudXBkYXRlU291cmNlcyByZWNvZ25pemVzIGEgc291cmNlIGFjcm9zcyBjb25maWcgY2hhbmdlcyBzbyBpdCBjYW4gdXBkYXRlIGl0IGluIHBsYWNlIGluc3RlYWQgb2YgcmVtb3ZpbmcgYW5kIHJlLWFkZGluZyBpdFxuICAgIGlkZW50aXR5Pzogc3RyaW5nO1xufTtcblxuLy8gRXJyb3IgbWFya2VyIGEgc2VydmVyIGluY2x1ZGVzIHdoZW4gYSBmcmVzaGx5LXN0YW1wZWQgd3JpdGUgcmVhY2hlcyBpdCBvdXRzaWRlIGl0cyB2YWxpZCB3aW5kb3dzICh0aGUgY2xpZW50IHJlc29sdmVkIGl0cyB0YXJnZXQsIHRoZW4gdGltZSBjcm9zc2VkIGEgd2luZG93IGJvdW5kYXJ5IGJlZm9yZSB0aGUgd3JpdGUgbGFuZGVkKS4gQ2xpZW50cyBkZXRlY3QgdGhpcyBtYXJrZXIgYW5kIHJlLXJlc29sdmUgdGhlIGN1cnJlbnRseS12YWxpZCBzb3VyY2UsIHJldHJ5aW5nIE9OQ0UgLSBib3VuZGFyaWVzIGFyZSBmYXIgYXBhcnQsIHNvIGhpdHRpbmcgaXQgdHdpY2UgaW4gb25lIGF0dGVtcHQgbWVhbnMgc29tZXRoaW5nIGlzIGFjdHVhbGx5IHdyb25nLlxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfV1JPTkdfVkFMSURfV0lORE9XID0gXCJSRU1PVEVfU1RPUkFHRV9XUk9OR19WQUxJRF9XSU5ET1dfYTdjMWYwNGVcIjtcblxuLy8gRXJyb3IgbWFya2VyIGEgc2VydmVyIGluY2x1ZGVzIHdoZW4gYSBmcmVzaGx5LXN0YW1wZWQgd3JpdGUncyBrZXkgcm91dGVzIG91dHNpZGUgdGhlIHNoYXJkcyB0aGlzIHNlcnZlciBoYW5kbGVzICh0aGUgY2xpZW50J3MgY29uZmlnIGRpc2FncmVlcyB3aXRoIHRoZSBzZXJ2ZXIncyAtIGNsaWVudHMgcmUtcmVzb2x2ZSBvbmNlKVxuZXhwb3J0IGNvbnN0IFNUT1JBR0VfV1JPTkdfUk9VVEUgPSBcIlJFTU9URV9TVE9SQUdFX1dST05HX1JPVVRFX2M5NGQyZTE3XCI7XG5cbmV4cG9ydCBjb25zdCBGVUxMX1JPVVRFOiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIDFdO1xuXG4vLyBBIGtleSBjb250YWluaW5nIHRoaXMgc2VudGluZWwgZG9lc24ndCBoYXZlIGEgZml4ZWQgc2hhcmQ6IHNldFZhcmlhYmxlU2hhcmQgcGlja3MgdGhlIChsb3dlc3QgbGF0ZW5jeSwgdXApIHdyaXRlIHNoYXJkLCBhcHBlbmRzIFwiXzx2YWx1ZSBpbiB0aGUgc2hhcmQncyByb3V0ZT5cIiBkaXJlY3RseSBhZnRlciB0aGUgc2VudGluZWwsIGFuZCByZXR1cm5zIHRoZSBtYXRlcmlhbGl6ZWQga2V5LiBnZXRSb3V0ZSB0cmVhdHMgdGhhdCBzdWZmaXggYXMgYSBjb21wbGV0ZSByb3V0ZSBvdmVycmlkZS5cbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9TSEFSRCA9IFwiVkFSSUFCTEVfU0hBUkRfZjAyMzRqZmFoMDhmZ3loZmd5c3NkZHM4M25tcFwiO1xuLy8gTm8gZ3JhY2UgcGFzdCB0aGUgZW5kOiBhIHdpbmRvdyBib3VuZGFyeSBpcyBhIGhhcmQgaGFuZG9mZiAoY2xpZW50cyByZXRyeSBhIHJlamVjdGVkIHdyaXRlIGFnYWluc3QgdGhlIG5ld2x5LXZhbGlkIHNvdXJjZSwgc28gbGVuaWVuY3kgaGVyZSB3b3VsZCBvbmx5IGRlc3luY2hyb25pemUgdGhlIGhhbmRvZmYpXG4vLyAgLSBXcml0aW5nIHRvIG9sZGVyIHZhbGlkIHN0YXRlIHdpbmRvd3MgaXMgZmluZSwgdGhvdWdoLiBXZSBuZWVkIHRoaXMgdG8gaW5nZXN0IHRoZSBvbGQgZGF0YSB3aGVuIHdlJ3JlIHN5bmNocm9uaXppbmcgbm9kZXMgdG8gZ2V0IHRoZW0gdXAgdG8gZGF0ZSBhbnl3YXkuIFxuZXhwb3J0IGZ1bmN0aW9uIHdpbmRvd0FjY2VwdHNXcml0ZXModmFsaWRXaW5kb3c6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXZhbGlkV2luZG93KSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdmFsaWRXaW5kb3dbMV0gPiBEYXRlLm5vdygpO1xufVxuXG5jb25zdCBMQVJHRV9DT1BZX1RIUkVTSE9MRCA9IDY0ICogMTAyNCAqIDEwMjQ7XG5jb25zdCBMQVJHRV9DT1BZX0NIVU5LID0gMzIgKiAxMDI0ICogMTAyNDtcblxuLyoqIENvcGllcyBvbmUgZmlsZSBiZXR3ZWVuIHR3byBhcmNoaXZlcy4gU21hbGwgZmlsZXMgZ28gYXMgYSBzaW5nbGUgZ2V0MitzZXQ7IHBhc3QgTEFSR0VfQ09QWV9USFJFU0hPTEQgdGhlIGNvcHkgc3RyZWFtcyB0aHJvdWdoIHNldExhcmdlRmlsZSBpbiBMQVJHRV9DT1BZX0NIVU5LIHJhbmdlZCByZWFkcywgc28gdGhlIHdob2xlIGZpbGUgaXMgbmV2ZXIgaW4gbWVtb3J5LiBzaXplL3dyaXRlVGltZSB1c3VhbGx5IGNvbWUgZnJvbSB0aGUgY2FsbGVyJ3MgbWV0YWRhdGEgc2Nhbjsgd2hlbiBlaXRoZXIgaXMgb21pdHRlZCwgZ2V0SW5mbyBmaWxscyB0aGVtIGluLiBSZXR1cm5zIHRoZSBjb3BpZWQgZmlsZSdzIGluZm8sIG9yIHVuZGVmaW5lZCB3aGVuIHRoZSBzb3VyY2UgZG9lc24ndCBoYXZlIHRoZSBmaWxlLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlBcmNoaXZlRmlsZShjb25maWc6IHtcbiAgICBmcm9tOiBJQXJjaGl2ZXM7XG4gICAgdG86IElBcmNoaXZlcztcbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICB3cml0ZVRpbWU/OiBudW1iZXI7XG4gICAgZm9yY2VTZXRJbW11dGFibGU/OiBib29sZWFuO1xuICAgIG5vQ2hlY2tzPzogYm9vbGVhbjtcbn0pOiBQcm9taXNlPHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IHsgZnJvbSwgdG8sIHBhdGggfSA9IGNvbmZpZztcbiAgICBsZXQgc2l6ZSA9IGNvbmZpZy5zaXplO1xuICAgIGxldCB3cml0ZVRpbWUgPSBjb25maWcud3JpdGVUaW1lO1xuICAgIGlmIChzaXplID09PSB1bmRlZmluZWQgfHwgd3JpdGVUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IGluZm8gPSBhd2FpdCBmcm9tLmdldEluZm8ocGF0aCk7XG4gICAgICAgIGlmICghaW5mbykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgc2l6ZSA9IGluZm8uc2l6ZTtcbiAgICAgICAgd3JpdGVUaW1lID0gaW5mby53cml0ZVRpbWU7XG4gICAgfVxuICAgIGlmIChzaXplIDw9IExBUkdFX0NPUFlfVEhSRVNIT0xEKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBmcm9tLmdldDIocGF0aCk7XG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBhd2FpdCB0by5zZXQocGF0aCwgcmVzdWx0LmRhdGEsIHsgbGFzdE1vZGlmaWVkOiByZXN1bHQud3JpdGVUaW1lLCBmb3JjZVNldEltbXV0YWJsZTogY29uZmlnLmZvcmNlU2V0SW1tdXRhYmxlLCBub0NoZWNrczogY29uZmlnLm5vQ2hlY2tzIH0pO1xuICAgICAgICByZXR1cm4geyB3cml0ZVRpbWU6IHJlc3VsdC53cml0ZVRpbWUsIHNpemU6IHJlc3VsdC5kYXRhLmxlbmd0aCB9O1xuICAgIH1cbiAgICAvLyBDb25zdHMgc28gdGhlIGNsb3N1cmUga2VlcHMgdGhlIG5hcnJvd2VkIHR5cGVzXG4gICAgY29uc3QgdG90YWxTaXplID0gc2l6ZTtcbiAgICBjb25zdCBmaW5hbFdyaXRlVGltZSA9IHdyaXRlVGltZTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBhd2FpdCB0by5zZXRMYXJnZUZpbGUoe1xuICAgICAgICBwYXRoLFxuICAgICAgICBsYXN0TW9kaWZpZWQ6IGZpbmFsV3JpdGVUaW1lLFxuICAgICAgICBnZXROZXh0RGF0YTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+PSB0b3RhbFNpemUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4ob2Zmc2V0ICsgTEFSR0VfQ09QWV9DSFVOSywgdG90YWxTaXplKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gYXdhaXQgZnJvbS5nZXQocGF0aCwgeyByYW5nZTogeyBzdGFydDogb2Zmc2V0LCBlbmQgfSB9KTtcbiAgICAgICAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJhbmdlZCByZWFkIG9mICR7SlNPTi5zdHJpbmdpZnkocGF0aCl9IGZyb20gJHtmcm9tLmdldERlYnVnTmFtZSgpfSByZXR1cm5lZCAke2RhdGEgJiYgZGF0YS5sZW5ndGggfHwgXCJub3RoaW5nXCJ9IGF0ICR7b2Zmc2V0fS0ke2VuZH0gKGV4cGVjdGVkICR7ZW5kIC0gb2Zmc2V0fSBieXRlcyBvZiBhICR7dG90YWxTaXplfSBieXRlIGZpbGUgLSBpdCBjaGFuZ2VkIG9yIHZhbmlzaGVkIG1pZC1jb3B5KWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ICs9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHsgd3JpdGVUaW1lOiBmaW5hbFdyaXRlVGltZSwgc2l6ZTogdG90YWxTaXplIH07XG59XG5cbmV4cG9ydCB0eXBlIEFyY2hpdmVzU3luY1NvdXJjZVN0YXR1cyA9IHtcbiAgICBkZWJ1Z05hbWU6IHN0cmluZztcbiAgICB2YWxpZFdpbmRvdzogW251bWJlciwgbnVtYmVyXTtcbiAgICByb3V0ZT86IFtudW1iZXIsIG51bWJlcl07XG4gICAgbm9GdWxsU3luYz86IGJvb2xlYW47XG4gICAgc3VwcG9ydHNDaGFuZ2VzQWZ0ZXI6IGJvb2xlYW47XG4gICAgaW5pdGlhbFNjYW5Db21wbGV0ZTogYm9vbGVhbjtcbiAgICAvLyBGaWxlcyBzZWVuIGluIHRoaXMgc291cmNlJ3Mgc2NhbnMgLyBjaGFuZ2UgcG9sbHMgc28gZmFyXG4gICAgc2Nhbm5lZENvdW50OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgQXJjaGl2ZXNTeW5jU3RhdHVzID0ge1xuICAgIGFsbFNjYW5zQ29tcGxldGU6IGJvb2xlYW47XG4gICAgLy8gTnVtYmVyIG9mIGZpbGVzIGluIHRoZSBpbmRleFxuICAgIGluZGV4U2l6ZTogbnVtYmVyO1xuICAgIHNvdXJjZXM6IEFyY2hpdmVzU3luY1NvdXJjZVN0YXR1c1tdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQXJjaGl2ZXMge1xuICAgIGdldERlYnVnTmFtZSgpOiBzdHJpbmc7XG4gICAgLyoqIFdoZXRoZXIgd3JpdGVzIHdvdWxkIGJlIGFjY2VwdGVkIChjcmVkZW50aWFscyBleGlzdCwgdGhlIGFjY291bnQgdHJ1c3RzIHRoaXMgbWFjaGluZSwgZXRjKS4gQ2hlY2tlZCB3aXRob3V0IHdyaXRpbmcgYW55dGhpbmcuICovXG4gICAgaGFzV3JpdGVBY2Nlc3MoKTogUHJvbWlzZTxib29sZWFuPjtcbiAgICAvKipcbiAgICAgKiBSZWFkcyBhdXRvbWF0aWNhbGx5IGZhbGwgYmFjayBhY3Jvc3MgdGhlIHJlZHVuZGFudCBzb3VyY2VzIHVubGVzcyBjb25maWcubm9GYWxsYmFja3MgaXMgc2V0LlxuICAgICAqIEEgZmFsbGJhY2sgY29weSBjYW4gbGFnIHRoZSB3cml0ZSB0YXJnZXQsIHNvIGEgY2FsbGVyIHJlYWRpbmcgc3RhdGUgaW4gb3JkZXIgdG8gbXV0YXRlIGl0XG4gICAgICogKGUuZy4geCsrKSwgd2hlcmUgYWN0aW5nIG9uIHByZXZpb3VzIHN0YXRlIHdvdWxkIGNhdXNlIGJpZyBpc3N1ZXMsIHNob3VsZCBwYXNzIG5vRmFsbGJhY2tzIC1cbiAgICAgKiBhbmQgdHJ5L2NhdGNoIHRoZSByZWFkLCBoYW5kbGluZyB0aGUgY2F0Y2ggY2FzZSAoYSBkb3duIHByaW1hcnkgaXMgcmV0cmllZCBmb3IgYSB3aGlsZSwgdGhlblxuICAgICAqIHRocm93cyBpbnN0ZWFkIG9mIGRlZ3JhZGluZyB0byBhIHN0YWxlIGNvcHkpLlxuICAgICAqL1xuICAgIGdldChmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBHZXRDb25maWcpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD47XG4gICAgLyoqIFNlZSBnZXQgZm9yIHRoZSBmYWxsYmFjayBzZW1hbnRpY3MgKGFuZCB3aGVuIHRvIHBhc3Mgbm9GYWxsYmFja3MpLiB1cmwgaXMgdGhlIGNvbmZpZyBVUkwgb2YgdGhlIHNvdXJjZSB0aGF0IHNlcnZlZCB0aGUgdmFsdWUgLSBzZXQgYnkgbXVsdGktc291cmNlIGltcGxlbWVudGF0aW9ucyAoQXJjaGl2ZXNDaGFpbiksIGFic2VudCBmcm9tIHNpbmdsZS1zb3VyY2UgYmFja2VuZHMuICovXG4gICAgZ2V0MihmaWxlTmFtZTogc3RyaW5nLCBjb25maWc/OiBHZXRDb25maWcpOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyOyB1cmw/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD47XG4gICAgLyoqXG4gICAgICogbGFzdE1vZGlmaWVkIHN0YW1wcyB0aGUgd3JpdGUgd2l0aCB0aGF0IGxhc3Qtd3JpdGUgdGltZSBpbnN0ZWFkIG9mIG5vdy4gSWYgaXQgaXMgT0xERVIgdGhhblxuICAgICAqIHRoZSBmaWxlJ3MgY3VycmVudCBsYXN0LXdyaXRlIHRpbWUgdGhlIHdyaXRlIG5vLW9wcyAoc28gZGVsYXllZCAvIHN5bmNocm9uaXplZCB3cml0ZXMgY2FuXG4gICAgICogbmV2ZXIgY2xvYmJlciBuZXdlciBkYXRhKS4gVGltZXMgbW9yZSB0aGFuIDE1IG1pbnV0ZXMgaW4gdGhlIGZ1dHVyZSBhcmUgcmVqZWN0ZWQuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHRoZSBmdWxsIGtleSBhY3R1YWxseSB3cml0dGVuIC0gaWRlbnRpY2FsIHRvIGZpbGVOYW1lLCBFWENFUFQgZm9yIGtleXMgY29udGFpbmluZ1xuICAgICAqIFZBUklBQkxFX1NIQVJELCB3aGVyZSB0aGUgc2hhcmQgdmFsdWUgaXMgbWF0ZXJpYWxpemVkIGludG8gdGhlIGtleSAocGlja2VkIGJ5IHNoYXJkIGxhdGVuY3ksXG4gICAgICogc2VlIEFyY2hpdmVzQ2hhaW4pIGFuZCB0aGUgY2FsbGVyIG5lZWRzIHRoZSByZXR1cm5lZCBrZXkgdG8gZXZlciByZWFkIHRoZSB2YWx1ZSBiYWNrLlxuICAgICAqL1xuICAgIHNldChmaWxlTmFtZTogc3RyaW5nLCBkYXRhOiBCdWZmZXIsIGNvbmZpZz86IFNldENvbmZpZyk6IFByb21pc2U8c3RyaW5nPjtcbiAgICBkZWwoZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIFN0cmVhbXMgYSBmaWxlIHRvbyBsYXJnZSB0byBob2xkIGluIG1lbW9yeS4gZ2V0TmV4dERhdGEgcmV0dXJucyB1bmRlZmluZWQgd2hlbiBkb25lLiBsYXN0TW9kaWZpZWQgc3RhbXBzIHRoZSBmaW5pc2hlZCBmaWxlIGxpa2Ugc2V0J3MgKHN5bmNocm9uaXplZCBjb3BpZXMgbmVlZCBpdCB0byBrZWVwIHdyaXRlIG9yZGVyaW5nKTsgYmFja2VuZHMgdGhhdCBzdGFtcCB0aGVpciBvd24gdGltZXMgKGJhY2tibGF6ZSkgYWNjZXB0IGFuZCBpZ25vcmUgaXQuICovXG4gICAgc2V0TGFyZ2VGaWxlKGNvbmZpZzogeyBwYXRoOiBzdHJpbmc7IGxhc3RNb2RpZmllZD86IG51bWJlcjsgZ2V0TmV4dERhdGEoKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IH0pOiBQcm9taXNlPHZvaWQ+O1xuICAgIC8qKiB3cml0ZVRpbWUgaXMgdGhlIGxhc3Qtd3JpdGUgdGltZSDigJQgc2VlIEFyY2hpdmVGaWxlSW5mby5jcmVhdGVUaW1lLCB3aGljaCBpcyB0aGUgc2FtZSB2YWx1ZS4gdXJsIGFzIGluIGdldDIuICovXG4gICAgZ2V0SW5mbyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXI7IHVybD86IHN0cmluZyB9IHwgdW5kZWZpbmVkPjtcbiAgICBmaW5kKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiB7IHNoYWxsb3c/OiBib29sZWFuOyB0eXBlOiBcImZpbGVzXCIgfCBcImZvbGRlcnNcIiB9KTogUHJvbWlzZTxzdHJpbmdbXT47XG4gICAgZmluZEluZm8ocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IHsgc2hhbGxvdz86IGJvb2xlYW47IHR5cGU6IFwiZmlsZXNcIiB8IFwiZm9sZGVyc1wiIH0pOiBQcm9taXNlPEFyY2hpdmVGaWxlSW5mb1tdPjtcbiAgICAvKiogT25seSB3b3JrcyBmb3IgcHVibGljIGJ1Y2tldHMgKHByaXZhdGUgYnVja2V0cyBhcmUgQVBJLWFjY2VzcyBvbmx5KS4gKi9cbiAgICBnZXRVUkwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+O1xuICAgIC8qKiBUaGUgYnVja2V0J3MgY29uZmlndXJhdGlvbiwgd2hpY2ggdGVsbHMgd2hldGhlciB0aGUgb3B0aW9uYWwgZnVuY3Rpb25zIGFyZSBzdXBwb3J0ZWQuICovXG4gICAgZ2V0Q29uZmlnKCk6IFByb21pc2U8QXJjaGl2ZXNDb25maWc+O1xuICAgIC8qKlxuICAgICAqIEFsbCBmaWxlcyBjaGFuZ2VkIGFmdGVyIGNvbmZpZy50aW1lLCBvcHRpb25hbGx5IHJlc3RyaWN0ZWQgdG8ga2V5cyByb3V0aW5nIGludG8gb25lIG9mXG4gICAgICogY29uZmlnLnJvdXRlcyAodXNlZCBieSBzY2FubmluZywgc28gcGFydGlhbGx5LW92ZXJsYXBwaW5nIHNoYXJkcyBvbmx5IHJlY2VpdmUgdGhlaXIgc2xpY2UpLlxuICAgICAqIFdoZW4gZ2V0Q29uZmlnKCkuc3VwcG9ydHNDaGFuZ2VzQWZ0ZXIsIHRoaXMgaXMgYmFja2VkIGJ5IGFuIGluZGV4IChmYXN0LCBhbmQgZGVsZXRpb25zIEFSRVxuICAgICAqIHJlcG9ydGVkLCBhcyBzaXplLTAgdG9tYnN0b25lIGVudHJpZXMpLiBFdmVyeSBvdGhlciBiYWNrZW5kIGVtdWxhdGVzIGl0OiBhIGZ1bGwgZmluZEluZm9cbiAgICAgKiBsaXN0aW5nIGZpbHRlcmVkIGluIG1lbW9yeSAtIGNvcnJlY3QsIGJ1dCBubyBjaGVhcGVyIHRoYW4gdGhlIGxpc3RpbmcgaXRzZWxmLlxuICAgICAqL1xuICAgIGdldENoYW5nZXNBZnRlcjIoY29uZmlnOiBDaGFuZ2VzQWZ0ZXJDb25maWcpOiBQcm9taXNlPEFyY2hpdmVGaWxlSW5mb1tdPjtcbiAgICAvKiogU3luY2hyb25pemF0aW9uIGludHJvc3BlY3Rpb24sIGZvciBiYWNrZW5kcyB0aGF0IHN5bmNocm9uaXplIGZyb20gc291cmNlcyAoc2VlIEJsb2JTdG9yZSkuICovXG4gICAgZ2V0U3luY1N0YXR1cz8oKTogUHJvbWlzZTxBcmNoaXZlc1N5bmNTdGF0dXM+O1xufVxuIl19
76
- /* _JS_SOURCE_HASH = "67a51ea2056f67fec44ef235644e1851c362c370dd07441f25fe9d8af7dfd9c9"; */
76
+ /* _JS_SOURCE_HASH = "71627a29f65885aeb6b297f5c549ef636614705fc5b9980617aa3f6ef3f706c9"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.getFileStorageIndexDB = void 0;
4
4
  const caching_1 = require("socket-function/src/caching");
@@ -145,4 +145,4 @@ exports.getFileStorageIndexDB = (0, caching_1.lazy)(async () => {
145
145
  return new VirtualFileStorage(db, "/");
146
146
  });
147
147
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kZXhlZERCRmlsZUZvbGRlckFQSS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkluZGV4ZWREQkZpbGVGb2xkZXJBUEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQW1EO0FBSW5ELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUM5QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBT3JCLE1BQU0sa0JBQWtCO0lBR3BCLFlBQ0ksRUFBZSxFQUNDLEVBQVU7UUFBVixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBOEc5QixtQ0FBbUM7UUFDbkMsV0FBTSxHQUFHO1lBQ0wsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFXLEVBQW9CLEVBQUU7Z0JBQzVDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUVELFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBVyxFQUF3QixFQUFFO2dCQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ3BDLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFFRCxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQVcsRUFBaUIsRUFBRTtnQkFDaEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLE1BQU0sQ0FBQyxL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Q0FBQyxNQUFNLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXp5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgSVN0b3JhZ2VSYXcgfSBmcm9tIFwiLi9JU3RvcmFnZVwiO1xuaW1wb3J0IHsgRmlsZVN0b3JhZ2UgfSBmcm9tIFwiLi9GaWxlRm9sZGVyQVBJXCI7XG5cbmNvbnN0IERCX05BTUUgPSBcIkZpbGVTdG9yYWdlXCI7XG5jb25zdCBTVE9SRV9OQU1FID0gXCJmaWxlc1wiO1xuY29uc3QgREJfVkVSU0lPTiA9IDE7XG5cbmludGVyZmFjZSBGaWxlUmVjb3JkIHtcbiAgICBkYXRhOiBCdWZmZXI7XG4gICAgbGFzdE1vZGlmaWVkOiBudW1iZXI7XG59XG5cbmNsYXNzIFZpcnR1YWxGaWxlU3RvcmFnZSBpbXBsZW1lbnRzIEZpbGVTdG9yYWdlIHtcbiAgICBwcml2YXRlIGRiOiBJREJEYXRhYmFzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBkYjogSURCRGF0YWJhc2UsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGlmICghZGIpIGRlYnVnZ2VyO1xuICAgICAgICB0aGlzLmRiID0gZGI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdG9yZShtb2RlOiBJREJUcmFuc2FjdGlvbk1vZGUgPSBcInJlYWRvbmx5XCIpIHtcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFNUT1JFX05BTUUsIG1vZGUpO1xuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXF1ZXN0PFQ+KHJlcXVlc3Q6IElEQlJlcXVlc3Q8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCk7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgLy8gSVN0b3JhZ2VSYXcgaW1wbGVtZW50YXRpb25cbiAgICBhc3luYyBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0U3RvcmUoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PEZpbGVSZWNvcmQgfCB1bmRlZmluZWQ+KHN0b3JlLmdldCh0aGlzLmlkICsga2V5KSk7XG4gICAgICAgIGxldCBiYWRCdWZmZXIgPSByZXN1bHQ/LmRhdGE7XG4gICAgICAgIGlmIChiYWRCdWZmZXIpIGJhZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhZEJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBiYWRCdWZmZXI7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0UmFuZ2Uoa2V5OiBzdHJpbmcsIGNvbmZpZzogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9KTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZlciA9IGF3YWl0IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghZnVsbEJ1ZmZlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmZXIuc3ViYXJyYXkoY29uZmlnLnN0YXJ0LCBjb25maWcuZW5kKTtcbiAgICB9XG5cbiAgICBhc3luYyBhcHBlbmQoa2V5OiBzdHJpbmcsIHZhbHVlOiBCdWZmZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKFwicmVhZHdyaXRlXCIpO1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHRoaXMuaWQgKyBrZXk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgdGhpcy5yZXF1ZXN0PEZpbGVSZWNvcmQgfCB1bmRlZmluZWQ+KHN0b3JlLmdldChmdWxsUGF0aCkpO1xuXG4gICAgICAgIGNvbnN0IG5ld1JlY29yZDogRmlsZVJlY29yZCA9IHtcbiAgICAgICAgICAgIGRhdGE6IGV4aXN0aW5nXG4gICAgICAgICAgICAgICAgPyBCdWZmZXIuY29uY2F0KFtleGlzdGluZy5kYXRhLCB2YWx1ZV0pXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogRGF0ZS5ub3coKVxuICAgICAgICB9O1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdChzdG9yZS5wdXQobmV3UmVjb3JkLCBmdWxsUGF0aCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdG9yZSA9IHRoaXMuZ2V0U3RvcmUoXCJyZWFkd3JpdGVcIik7XG4gICAgICAgIGNvbnN0IHJlY29yZDogRmlsZVJlY29yZCA9IHtcbiAgICAgICAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMucmVxdWVzdChzdG9yZS5wdXQocmVjb3JkLCB0aGlzLmlkICsga2V5KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVtb3ZlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShcInJlYWR3cml0ZVwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0KHN0b3JlLmRlbGV0ZSh0aGlzLmlkICsga2V5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRLZXlzV2l0aFByZWZpeChwcmVmaXg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gSURCS2V5UmFuZ2UuYm91bmQocHJlZml4LCBwcmVmaXggKyBcIlxcdWZmZmZcIiwgZmFsc2UsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IocmFuZ2UpO1xuXG4gICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXdLZXkgPSBjdXJzb3Iua2V5IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgbmV3S2V5ID0gbmV3S2V5LnNsaWNlKHRoaXMuaWQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKG5ld0tleSk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzV2l0aFByZWZpeCh0aGlzLmlkKTtcbiAgICAgICAgcmV0dXJuIGtleXMuZmlsdGVyKHggPT4gIXguaW5jbHVkZXMoXCIvXCIpKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKTogUHJvbWlzZTx7IHNpemU6IG51bWJlcjsgbGFzdE1vZGlmaWVkOiBudW1iZXI7IH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDxGaWxlUmVjb3JkIHwgdW5kZWZpbmVkPihzdG9yZS5nZXQodGhpcy5pZCArIGtleSkpO1xuXG4gICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaXplOiByZXN1bHQuZGF0YS5sZW5ndGgsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IHJlc3VsdC5sYXN0TW9kaWZpZWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGtleXMgPSBhd2FpdCB0aGlzLmdldEtleXNXaXRoUHJlZml4KHRoaXMuaWQpO1xuICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RlZEZpbGVTdG9yYWdlIGltcGxlbWVudGF0aW9uXG4gICAgZm9sZGVyID0ge1xuICAgICAgICBoYXNLZXk6IGFzeW5jIChrZXk6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVyUGF0aCA9IHRoaXMuaWQgKyBrZXkgKyBcIi9cIjtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBhd2FpdCB0aGlzLmdldEtleXNXaXRoUHJlZml4KGZvbGRlclBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoID4gMDtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXRTdG9yYWdlOiBhc3luYyAoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXRoID0gdGhpcy5pZCArIGtleSArIFwiL1wiO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsRmlsZVN0b3JhZ2UodGhpcy5kYiwgbmV3UGF0aCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlU3RvcmFnZTogYXN5bmMgKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBsZXQgbmVzdGVkID0gbmV3IFZpcnR1YWxGaWxlU3RvcmFnZSh0aGlzLmRiLCB0aGlzLmlkICsga2V5ICsgXCIvXCIpO1xuICAgICAgICAgICAgYXdhaXQgbmVzdGVkLnJlc2V0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZ2V0S2V5czogYXN5bmMgKCk6IFByb21pc2U8c3RyaW5nW10+ID0+IHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzV2l0aFByZWZpeCh0aGlzLmlkKTtcbiAgICAgICAgICAgIGxldCBmb2xkZXJLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgICAgIGlmICgha2V5LmluY2x1ZGVzKFwiL1wiKSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnRzID0ga2V5LnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICBmb2xkZXJLZXlzLmFkZChwYXJ0c1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShmb2xkZXJLZXlzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlU3RvcmFnZUluZGV4REIgPSBsYXp5KGFzeW5jICgpOiBQcm9taXNlPEZpbGVTdG9yYWdlPiA9PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBuZXcgUHJvbWlzZTxJREJEYXRhYmFzZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oREJfTkFNRSwgREJfVkVSU0lPTik7XG5cbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuXG4gICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYiA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFNUT1JFX05BTUUpKSB7XG4gICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoU1RPUkVfTkFNRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFZpcnR1YWxGaWxlU3RvcmFnZShkYiwgXCIvXCIpO1xufSk7Il19
148
- /* _JS_SOURCE_HASH = "35575d7b40168300db97c6a012ddab111b6b1f19daab4bd2d621c420b88e500f"; */
148
+ /* _JS_SOURCE_HASH = "f375f0d5b5dc5c7a444768190f00b186c2e98df5aeb0fcd88db18e769960452a"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.JSONStorage = void 0;
4
4
  class JSONStorage {
@@ -39,4 +39,4 @@ class JSONStorage {
39
39
  }
40
40
  exports.JSONStorage = JSONStorage;
41
41
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJKU09OU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLFdBQVc7SUFDcEIsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBSSxDQUFDO0lBQzNDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUN4QixJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsQ0FBQztJQUNMLENBQUM7SUFDTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFRO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNNLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVztRQUMzQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTztRQUNoQixPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBQ00sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQzVCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR00sV0FBVyxDQUFDLFFBQW9COztRQUNuQyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sRUFBQyxXQUFXLG1EQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0o7QUFsQ0Qsa0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVN0b3JhZ2UgfSBmcm9tIFwiLi9JU3RvcmFnZVwiO1xuXG5leHBvcnQgY2xhc3MgSlNPTlN0b3JhZ2U8VD4gaW1wbGVtZW50cyBJU3RvcmFnZTxUPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlOiBJU3RvcmFnZTxCdWZmZXI+KSB7IH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBidWZmZXIgPSBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0KGtleSk7XG4gICAgICAgIGlmIChidWZmZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYnVmZmVyLnRvU3RyaW5nKCkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byBwYXJzZSBKU09OIGZvciBrZXk6ICR7a2V5fWAsIGJ1ZmZlci50b1N0cmluZygpLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KGtleSwgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodmFsdWUpKSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZShrZXkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0b3JhZ2UuZ2V0S2V5cygpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mbyhrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zdG9yYWdlLmdldEluZm8oa2V5KTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyB3YXRjaFJlc3luYyhjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3JhZ2Uud2F0Y2hSZXN5bmM/LihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVzZXQoKTtcbiAgICB9XG59Il19
42
- /* _JS_SOURCE_HASH = "f03428270acaeee0f8ce5c36431ab07129e822c838b99d45a1a085eb16bfaf86"; */
42
+ /* _JS_SOURCE_HASH = "7a9cf8297fe980da38910179b8b66f49e41f098183e7244868f5e4b41487096a"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -70,4 +70,4 @@ exports.PendingDisplay = PendingDisplay = __decorate([
70
70
  observer_1.observer
71
71
  ], PendingDisplay);
72
72
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVuZGluZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJQZW5kaW5nTWFuYWdlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRXBDLG1EQUE0RDtBQUM1RCwrQkFBa0M7QUFDbEMsb0RBQTRCO0FBQzVCLDZDQUFrQztBQUNsQyx1REFBb0Q7QUFDcEQsa0VBQW1FO0FBRW5FLElBQUksVUFBVSxHQUFHLElBQUEsaUJBQVUsRUFBQztJQUN4QixPQUFPLEVBQUUsRUFBaUM7Q0FDN0MsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFaEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFN0MsOEJBQThCO0FBQzlCLFNBQWdCLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUNyRCxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxLQUFLLGNBQWMsRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFIRCxnQ0FHQztBQUVELFNBQWdCLFVBQVU7SUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFGRCxnQ0FFQztBQUVELHlLQUF5SztBQUN6SyxNQUFNLGNBQWMsR0FBRyxJQUFBLHVCQUFnQixFQUFDLEdBQUcsRUFBRSxTQUFTLGNBQWM7SUFDaEUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUNwQyxJQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwSixDQUFDO2dCQUNELGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNKLDZDQUE2QztZQUM3QyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQztBQUdJLElBQU0sY0FBYyxHQUFwQixNQUFNLGNBQWUsU0FBUSxnQkFBTSxDQUFDLFNBQVM7SUFDaEQsTUFBTTtRQUNGLDZEQUE2RDtRQUM3RCxPQUFPLHdDQUFLLFNBQVMsRUFBRSxpQkFBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDMUMsd0NBQUssU0FBUyxFQUFFLGlCQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRixLQUFLOztZQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQ2pDLENBQ1QsQ0FBQyxDQUNBLENBQUM7SUFDWCxDQUFDO0NBQ0osQ0FBQTtBQVhZLHdDQUFjO3lCQUFkLGNBQWM7SUFEMUIsbUJBQVE7R0FDSSxjQUFjLENBVzFCIiwic291cmNlc0NvbnRlbnQiOlsicHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSBcInByb2R1Y3Rpb25cIjtcblxuaW1wb3J0IHsgdGhyb3R0bGVGdW5jdGlvbiB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHByZWFjdCBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwidHlwZXNhZmVjc3NcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIi4uL3JlbmRlci11dGlscy9vYnNlcnZlclwiO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5cbmxldCB3YXRjaFN0YXRlID0gb2JzZXJ2YWJsZSh7XG4gICAgcGVuZGluZzoge30gYXMgeyBbZ3JvdXA6IHN0cmluZ106IHN0cmluZyB9XG59KTtcbmxldCBwZW5kaW5nTGFzdFNldHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG5sZXQgcGVuZGluZ0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuLy8gXCJcIiBjbGVhcnMgdGhlIHBlbmRpbmcgdmFsdWVcbmV4cG9ydCBmdW5jdGlvbiBzZXRQZW5kaW5nKGdyb3VwOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHBlbmRpbmdDYWNoZS5zZXQoZ3JvdXAsIG1lc3NhZ2UpO1xuICAgIHZvaWQgc2V0UGVuZGluZ0Jhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1BlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHdhdGNoU3RhdGUucGVuZGluZykubGVuZ3RoID4gMDtcbn1cblxuLy8gTk9URTogVGhpcyBub3Qgb25seSBwcmV2ZW50cyByZW5kZXIgb3ZlcmxvYWQsIGJ1dCBhbHNvIG1lYW5zIGFueSBwZW5kaW5nIHRoYXQgYXJlIDwgdGhpcyBkZWxheSBkb24ndCBzaG93IHVwICh3aGljaCBpcyB1c2VmdWwgdG8gcmVkdWNlIHVubmVjZXNzYXJ5IHBlbmRpbmcgbWVzc2FnZXMpLlxuY29uc3Qgc2V0UGVuZGluZ0Jhc2UgPSB0aHJvdHRsZUZ1bmN0aW9uKDUwMCwgZnVuY3Rpb24gc2V0UGVuZGluZ0Jhc2UoKSB7XG4gICAgZm9yIChsZXQgW2dyb3VwLCBtZXNzYWdlXSBvZiBwZW5kaW5nQ2FjaGUpIHtcblxuICAgICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGxldCBsYXN0U2V0ID0gcGVuZGluZ0xhc3RTZXRzLmdldChncm91cCk7XG4gICAgICAgICAgICBpZiAobGFzdFNldCkge1xuICAgICAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBsYXN0U2V0O1xuICAgICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+IDUwMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmluaXNoZWQgc2xvdyB0YXNrIGFmdGVyICR7Zm9ybWF0VGltZShkdXJhdGlvbil9OiAke0pTT04uc3RyaW5naWZ5KGdyb3VwKX0sIGxhc3QgaXMgJHtKU09OLnN0cmluZ2lmeSh3YXRjaFN0YXRlLnBlbmRpbmdbZ3JvdXBdKX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGVuZGluZ0xhc3RTZXRzLmRlbGV0ZShncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgd2F0Y2hTdGF0ZS5wZW5kaW5nW2dyb3VwXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwic2V0UGVuZGluZ1wiLCBncm91cCwgbWVzc2FnZSk7XG4gICAgICAgICAgICBpZiAoIShncm91cCBpbiB3YXRjaFN0YXRlLnBlbmRpbmcpKSB7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0xhc3RTZXRzLnNldChncm91cCwgRGF0ZS5ub3coKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3YXRjaFN0YXRlLnBlbmRpbmdbZ3JvdXBdID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwZW5kaW5nQ2FjaGUuY2xlYXIoKTtcbn0pO1xuXG5Ab2JzZXJ2ZXJcbmV4cG9ydCBjbGFzcyBQZW5kaW5nRGlzcGxheSBleHRlbmRzIHByZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgLy8gU2luZ2xlIGxpbmUsIGdpdmluZyBlcXVhbCBzcGFjZSwgYW5kIGVsbGlwc2lzIGZvciBvdmVyZmxvd1xuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2Nzcy5oYm94KDEwKX0+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMod2F0Y2hTdGF0ZS5wZW5kaW5nKS5tYXAoZ3JvdXAgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjc3MuY2VudGVyLnRleHRPdmVyZmxvdyhcImVsbGlwc2lzXCIpLmJvcmRlcihcIjFweCBzb2xpZCBibGFja1wiKS5wYWQyKDYsIDIpfT5cbiAgICAgICAgICAgICAgICAgICAge2dyb3VwfToge3dhdGNoU3RhdGUucGVuZGluZ1tncm91cF19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+O1xuICAgIH1cbn0iXX0=
73
- /* _JS_SOURCE_HASH = "6f964fe2d67ead5a148c0cd1928308c38b1b3fa5ee2adca22b8b70648f83cd44"; */
73
+ /* _JS_SOURCE_HASH = "996761e332800c2e1a6c41718c030620fbc3e18bc8a35683dbc3562e7c6e74ba"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.TransactionStorage = void 0;
4
4
  const misc_1 = require("socket-function/src/misc");
@@ -544,4 +544,4 @@ class TransactionStorage {
544
544
  exports.TransactionStorage = TransactionStorage;
545
545
  TransactionStorage.allStorage = [];
546
546
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25TdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiVHJhbnNhY3Rpb25TdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUEwRztBQUUxRyxxQ0FBa0M7QUFDbEMsMkRBQWtFO0FBQ2xFLGtFQUFpRjtBQUNqRixxREFBOEM7QUFDOUMscURBQWdEO0FBRWhELDJEQUErRDtBQUUvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1QkU7QUFFRixNQUFNLG1CQUFtQixHQUFHLG1CQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRTdDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBWSxHQUFHLEVBQUUsQ0FBQztBQUU1QyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBRTVDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEUsNkRBQTZEO0FBQzdELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQWN4QixNQUFNLGVBQWUsR0FBRyxJQUFBLHNCQUFXLEVBQUMsS0FBSyxFQUFFLEdBQXdCLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sS0FBSyxH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QUFDLFdBQU0sQ0FBQyxDQUFDLENBQUM7WUFFWCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7WUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQS9oQkwsZ0RBZ2lCQztBQXJoQmtCLDZCQUFVLEdBQXlCLEVBQUUsQUFBM0IsQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9taXNlT2JqLCBjb21wYXJlQXJyYXksIHNvcnQsIHRocm90dGxlRnVuY3Rpb24sIHRpbWVJbk1pbnV0ZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IElTdG9yYWdlLCBJU3RvcmFnZVJhdyB9IGZyb20gXCIuL0lTdG9yYWdlXCI7XG5pbXBvcnQgeyBaaXAgfSBmcm9tIFwiLi4vbWlzYy96aXBcIjtcbmltcG9ydCB7IGRlbGF5LCBydW5JblNlcmlhbCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdFRpbWUgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2Zvcm1hdFwiO1xuaW1wb3J0IHsgc2V0UGVuZGluZyB9IGZyb20gXCIuL1BlbmRpbmdNYW5hZ2VyXCI7XG5pbXBvcnQgeyBpc0luQnVpbGQgfSBmcm9tIFwiLi4vbWlzYy9lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcInR5cGVzYWZlY3NzXCI7XG5pbXBvcnQgeyBydW5JbmZpbml0ZVBvbGwgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9iYXRjaGluZ1wiO1xuXG4vKlxuLy8gU3BlYzpcbi8vICAgICAgLSBaaXAgaW5kaXZpZHVhbCBsYXJnZSB2YWx1ZXNcbi8vICAgICAgLSBTdG9yZXMgYSB0cmFuc2FjdGlvbiBsb2dcbi8vICAgICAgICAgIC0gVHJhbnNhY3Rpb24gbG9nIGhhcyBhIGhlYWRlciwgd2hpY2ggaXMgSlNPTiwgZm9yIHRoaW5ncyBzdWNoIGFzIFwiemlwcGVkXCJcbi8vICAgICAgICAgIC0gVHJhbnNhY3Rpb24gbG9nIHVzZXMgbGVuZ3RoIHByZWZpeGVkIHZhbHVlcywgd2l0aCBhIHNwZWNpYWwgOCBieXRlcyB0byBkZW5vdGUgdGhlIGVuZCwgYW5kIDggZm9yIHRoZSBzdGFydC5cbi8vICAgICAgICAgIC0gV2hlbiB0cmFuc2FjdGlvbiBsb2cgaXMgaXRlcmF0ZWQgb24sIGlmIHRoZSBieXRlcyBhdCB0aGUgZW5kICh1c2luZyB0aGUgbGVuZ3RoIHByZWZpeCkgZG9uJ3QgbWF0Y2ggdGhlIGVuZCBieXRlcyBPUiB0aGUgc3RhcnQgYnl0ZXMgYXJlIHdyb25nLCB3ZSBza2lwIHRoZSBzdGFydCBieXRlcywgYW5kIGl0ZXJhdGluZyB1bnRpbCB3ZSBmaW5kIG5ldyBzdGFydCBieXRlcyB0aGF0IG1hdGNoIG91ciBzcGVjaWFsIGJ5dGVzLiBUaGVuIHdlIHRyeSB0byByZWFkIHRoZXNlIHZhbHVlcy5cbi8vICAgICAgICAgIC0gRWFjaCB0cmFuc2FjdGlvbiBlbnRyeSBoYXMgYSBieXRlIGZvciBmbGFncywgb25lIGJpdCB3aGljaCBkZW5vdGVzIGlmIHRoZSB2YWx1ZSBpcyB6aXBwZWQgb3Igbm90LlxuLy8gICAgICAtIENvbXByZXNzZXMgdGhlIGxvZyBhZnRlciB0aGVyZSBhcmUgM1ggZW50cmllcyB0aGFuIGtleXMgKGFuZCA+IDEwMClcbi8vICAgICAgICAgIC0gQm90aCBkZWR1cGUga2V5cywgYW5kIHppcFxuLy8gICAgICAtIEFzc3VtZXMgYWxsIGZpbGVzIGluIHJhd1N0b3JhZ2UgZW5kaW5nIHdpdGggLnR4IGFyZSB0cmFuc2FjdGlvbiBsb2dzXG4vLyAgICAgIC0gTmFtZXMgZmlsZXMgbGlrZSBgJHtnZW5lcmF0aW9ufS50eGBcbi8vICAgICAgICAgIC0gV2hlbiBjb21wcmVzc2luZywgd2UgaW5jcmVtZW50IHRoZSBnZW5lcmF0aW9uLCBhbmQgd3JpdGUgdG8gYSBuZXcgZmlsZSwgYW5kIGRlbGV0ZSBhbnkgZ2VuZXJhdGlvbnMgdGhhdCBhcmUgb2xkZXIgdGhhbiB0aGUgbmV3IG9uZVxuLy8gICAgICAgICAgLSBPbiByZWFkaW5nLCB3ZSByZWFkIGZyb20gYWxsIGdlbmVyYXRpb24gZmlsZXMgdGhhdCBleGlzdCwgaW4gY2FzZSBzb21lIGFyZSBjb3JydXB0ZWRcbi8vICAgICAgLSBPbiBsb2FkLCBsb2FkcyBpbiBhbGwgdHJhbnNhY3Rpb24gbG9ncywgYW5kIHN0b3JlcyBhbGwgdmFsdWVzIGluIGEgTWFwPHN0cmluZywgQnVmZmVyPlxuLy8gICAgICAtIE9uIHdyaXRlcyBpbW1lZGlhdGVseSB1cGRhdGVzIHRoZSBpbiBtZW1vcnkgTWFwLCBhbmQgdGhlbiB3cml0ZXMgdG8gdGhlIHRyYW5zYWN0aW9uIGxvZ1xuLy8gICAgICAtIENhY2hlcyB0aGUgbGFzdCB0cmFuc2FjdGlvbiBmaWxlIG5hbWUgaW4gbWVtb3J5XG4vLyAgICAgIC0gTWFrZXMgc3VyZSBhbGwgZmlsZSBzeXN0ZW0gd3JpdGVzIChidXQgbm90IE1hcCB1cGRhdGVzKSBhcmUgZG9uZSB3aXRoIGZpbGVMb2NrU2VjdGlvbiwgc28gdGhleSBuZXZlciBvdmVybGFwLlxuLy8gICAgICAtIEJ1ZmZlcnMgcGVuZGluZyBhcHBlbmRzIGluIG1lbW9yeSwgc28gdGhleSBjYW4gd3JpdHRlbiBhbGwgYXQgb25jZSAoYWZ0ZXIgdGhlIGZpcnN0IG9uZSBpcyBibG9ja2luZyBpbiBmaWxlTG9ja1NlY3Rpb24pLlxuXG5VUERBVEUgbm93IHdlIHVzZSBjaHVua3MsIGJlY2F1c2UgYXBwZW5kIGlzIHRvbyBzbG93LlxuXG5JTVBPUlRBTlQhIElmIHRoZXJlIGFyZSBtdWx0aXBsZSB3cml0ZXJzLCB3ZSBjbG9iYmVyIHdyaXRlcyBmcm9tIG90aGVyIHdyaXRlcnMgd2hlbiB3ZSBjb21wcmVzc1xuKi9cblxuY29uc3QgRElTS19DSEVDS19JTlRFUlZBTCA9IHRpbWVJbk1pbnV0ZSAqIDU7XG5cbmNvbnN0IEZJTEVfQ0hVTktfU0laRSA9IDEwMjQgKiAxMDI0O1xuY29uc3QgRklMRV9NQVhfTElGRVRJTUUgPSB0aW1lSW5NaW51dGUgKiAzMDtcblxuY29uc3QgRklMRV9aSVBfVEhSRVNIT0xEID0gMTYgKiAxMDI0ICogMTAyNDtcblxuY29uc3QgU1RBUlRfQllURVMgPSBCdWZmZXIuZnJvbShbMjM2LCA0OSwgMTEyLCAxMjEsIDI3LCAxMjcsIDIyNywgNjNdKTtcbmNvbnN0IEVORF9CWVRFUyA9IEJ1ZmZlci5mcm9tKFsyMjAsIDExMSwgMjQzLCAyMDIsIDIwMCwgNzksIDIxMywgNjNdKTtcbi8vIERlbGF5IHdyaXRlcywgc28gd2UgYmF0Y2ggYmV0dGVyLCBhbmQgdGhyYXNoIHRoZSBkaXNrIGxlc3NcbmNvbnN0IFdSSVRFX0RFTEFZID0gNTAwO1xuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25FbnRyeSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgICAvLyBOT1RFOiBXZSBkaXNhYmxlZCBwZXItZW50cnkgemlwcGluZy4gRWl0aGVyIHVzZSBhIHJhdyBjb2xsZWN0aW9uIHNvIHlvdSBkb24ndCBoYXZlIHRvIGxvYWQgYWxsIG9mIHRoZW0gaW50byBtZW1vcnkgb3Igc2hhcmQgeW91ciBjb2xsZWN0aW9uLiBaaXBwaW5nIGlzIG9ubHkgYSBiYW5kLWFpZCBzb2x1dGlvbiBmb3IgbWVtb3J5IGlzc3Vlcy4gQUxTTywgaXQgbWFrZXMgbG9hZGluZyBzbG93ZXIsIHdoaWNoIG1ha2VzIGFsbCBvdGhlciBhcHBsaWNhdGlvbnMgdGhhdCBkb24ndCBuZWVkIHppcHBpbmcgd29yc2UuXG4gICAgaXNaaXBwZWQ6IGJvb2xlYW47XG4gICAgdGltZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25IZWFkZXIge1xuICAgIHppcHBlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgZmlsZUxvY2tTZWN0aW9uID0gcnVuSW5TZXJpYWwoYXN5bmMgKGZuYzogKCkgPT4gUHJvbWlzZTx2b2lkPikgPT4ge1xuICAgIGF3YWl0IGZuYygpO1xufSk7XG5cbmNvbnN0IENIVU5LX0VYVCA9IFwiLmNodW5rXCI7XG5jb25zdCBvdXJJZCA9IERhdGUubm93KCkgKyBNYXRoLnJhbmRvbSgpO1xubGV0IHNlcU51bSA9IDA7XG5cbmZ1bmN0aW9uIGdldE5leHRDaHVua1BhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7RGF0ZS5ub3coKX1fJHtzZXFOdW0rK31fJHtvdXJJZH0uY2h1bmtgO1xufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25TdG9yYWdlIGltcGxlbWVudHMgSVN0b3JhZ2U8QnVmZmVyPiB7XG4gICAgcHVibGljIGNhY2hlOiBNYXA8c3RyaW5nLCBUcmFuc2FjdGlvbkVudHJ5PiA9IG5ldyBNYXAoKTtcbiAgICAvLyBNYXBzIGZpbGUgbmFtZSB0byBvdXIgbGFzdCBrbm93biB3cml0ZSB0aW1lc3RhbXBcbiAgICBwcml2YXRlIGRpc2tGaWxlczogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIGN1cnJlbnRDaHVuazoge1xuICAgICAgICBwYXRoOiBzdHJpbmc7XG4gICAgICAgIHNpemU6IG51bWJlcjtcbiAgICAgICAgdGltZUNyZWF0ZWQ6IG51bWJlcjtcbiAgICB9IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgZW50cnlDb3VudCA9IDA7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhbGxTdG9yYWdlOiBUcmFuc2FjdGlvblN0b3JhZ2VbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmF3U3RvcmFnZTogSVN0b3JhZ2VSYXcsXG4gICAgICAgIHByaXZhdGUgZGVidWdOYW1lOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgd3JpdGVEZWxheSA9IFdSSVRFX0RFTEFZLFxuICAgICAgICAvLyBXaGVuIHNldCwgd2UgcG9sbCB0aGUgdW5kZXJseWluZyBzdG9yYWdlIGFuZCByZWxvYWQgaWYgYW5vdGhlciBwcm9jZXNzL3RhYiB3cml0ZXMgbmV3IGNodW5rIGZpbGVzLiBPZmYgYnkgZGVmYXVsdCwgYXMgaXQgY29zdHMgYSBwZXJpb2RpYyBkaXNrIHNjYW4gYW5kIG1vc3QgY29sbGVjdGlvbnMgYXJlIG9ubHkgd3JpdHRlbiBieSBhIHNpbmdsZSBwcm9jZXNzLlxuICAgICAgICBwcml2YXRlIHJlc3luY0Zyb21EaXNrID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgVHJhbnNhY3Rpb25TdG9yYWdlLmFsbFN0b3JhZ2UucHVzaCh0aGlzKTtcbiAgICAgICAgLy8gVkVSWSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAgICAgICAgKGdsb2JhbFRoaXMgYXMgYW55KVtgdHgke3RoaXMuZGVidWdOYW1lfWBdID0gdGhpcztcbiAgICB9XG4gICAgLy8gSGVscHMgZ2V0IHJpZCBvZiBwYXJzZSBlcnJvcnMgd2hpY2ggY29uc3RhbnRseSBsb2cuIEFsc28sIHVzZXMgbGVzcyBzcGFjZVxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY29tcHJlc3NBbGwoKSB7XG4gICAgICAgIGF3YWl0IGZpbGVMb2NrU2VjdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBzdG9yYWdlIG9mIFRyYW5zYWN0aW9uU3RvcmFnZS5hbGxTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgc3RvcmFnZS5jb21wcmVzc1RyYW5zYWN0aW9uTG9nKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc3luY0NhbGxiYWNrczogKCgpID0+IHZvaWQpW10gPSBbXTtcbiAgICBwdWJsaWMgd2F0Y2hSZXN5bmMoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXN5bmNDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0OiBQcm9taXNlPHVua25vd24+IHwgdW5kZWZpbmVkID0gdGhpcy5sb2FkQWxsVHJhbnNhY3Rpb25zKHRydWUpO1xuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50Q2h1bmsoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudENodW5rICYmIHRoaXMuY3VycmVudENodW5rLnRpbWVDcmVhdGVkIDwgRGF0ZS5ub3coKSAtIEZJTEVfTUFYX0xJRkVUSU1FKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDaHVuayA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudENodW5rKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRDaHVuayA9IHtcbiAgICAgICAgICAgICAgICBwYXRoOiBnZXROZXh0Q2h1bmtQYXRoKCksXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcbiAgICAgICAgICAgICAgICB0aW1lQ3JlYXRlZDogRGF0ZS5ub3coKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIFRpbWVzdGFtcCB3aWxsIGJlIHVwZGF0ZWQgYWZ0ZXIgYWN0dWFsIHdyaXRlXG4gICAgICAgICAgICB0aGlzLmRpc2tGaWxlcy5zZXQodGhpcy5jdXJyZW50Q2h1bmsucGF0aCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENodW5rLnBhdGg7XG4gICAgfVxuICAgIHByaXZhdGUgdXBkYXRlRGlza0ZpbGVUaW1lc3RhbXAoZmlsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlza0ZpbGVzLnNldChmaWxlLCBEYXRlLm5vdygpKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBvbkFkZFRvQ2h1bmsoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Q2h1bmspIHJldHVybjtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2h1bmsuc2l6ZSArPSBzaXplO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2h1bmsuc2l6ZSA+PSBGSUxFX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENodW5rID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaXNaaXBwZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVHJhbnNhY3Rpb25zIHNob3VsZCBiZSB1bnppcHBlZCBvbiBmaWxlIHJlYWR5LCBzbyB0aGlzIHN0YXRlIHNob3VsZCBiZSBpbXBvc3NpYmxlLiBLZXk6ICR7a2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pbml0KSBhd2FpdCB0aGlzLmluaXQ7XG5cbiAgICAgICAgLy8gVGltZSBpcyBzZXQgb24gZGlzayB3cml0ZSwgYXMgRGF0ZS5ub3coKSBpcyB0b28gc2xvd1xuICAgICAgICBsZXQgZW50cnk6IFRyYW5zYWN0aW9uRW50cnkgPSB7IGtleSwgdmFsdWUsIGlzWmlwcGVkOiBmYWxzZSwgdGltZTogMCB9O1xuICAgICAgICB0aGlzLmNhY2hlLnNldChrZXksIGVudHJ5KTtcblxuICAgICAgICBhd2FpdCB0aGlzLnB1c2hBcHBlbmQoZW50cnkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdCkgYXdhaXQgdGhpcy5pbml0O1xuICAgICAgICB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMucHVzaEFwcGVuZCh7IGtleSwgdmFsdWU6IHVuZGVmaW5lZCwgaXNaaXBwZWQ6IGZhbHNlLCB0aW1lOiAwIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKTogUHJvbWlzZTx7IHNpemU6IG51bWJlcjsgbGFzdE1vZGlmaWVkOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jYWNoZS5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCF2YWx1ZT8udmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7IHNpemU6IHZhbHVlLnZhbHVlLmxlbmd0aCwgbGFzdE1vZGlmaWVkOiB2YWx1ZS50aW1lIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwZW5kaW5nQXBwZW5kczogVHJhbnNhY3Rpb25FbnRyeVtdID0gW107XG4gICAgcHJpdmF0ZSBleHRyYUFwcGVuZHMgPSAwO1xuICAgIHByaXZhdGUgcGVuZGluZ1dyaXRlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuICAgIGFzeW5jIHB1c2hBcHBlbmQoZW50cnk6IFRyYW5zYWN0aW9uRW50cnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5lbnRyeUNvdW50Kys7XG4gICAgICAgIHRoaXMucGVuZGluZ0FwcGVuZHMucHVzaChlbnRyeSk7XG4gICAgICAgIHZvaWQgdGhpcy51cGRhdGVQZW5kaW5nQXBwZW5kcygpO1xuICAgICAgICBpZiAodGhpcy5wZW5kaW5nV3JpdGUpIHJldHVybiB0aGlzLnBlbmRpbmdXcml0ZTtcbiAgICAgICAgdGhpcy5wZW5kaW5nV3JpdGUgPSBmaWxlTG9ja1NlY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gRGVsYXkgdG8gYWxsb3cgYmF0Y2hpbmcsIGFuZCBkZWR1cGluZ1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRoaXMud3JpdGVEZWxheSkpO1xuICAgICAgICAgICAgbGV0IGN1ckFwcGVuZHMgPSB0aGlzLnBlbmRpbmdBcHBlbmRzO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXBwZW5kcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nV3JpdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IGFwcGVuZHNEZWR1cGVkOiBNYXA8c3RyaW5nLCBUcmFuc2FjdGlvbkVudHJ5PiA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGN1ckFwcGVuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwZW5kc0RlZHVwZWQuc2V0KGVudHJ5LmtleSwgZW50cnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJBcHBlbmRzID0gQXJyYXkuZnJvbShhcHBlbmRzRGVkdXBlZC52YWx1ZXMoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dHJhQXBwZW5kcyArPSBjdXJBcHBlbmRzLmxlbmd0aDtcbiAgICAgICAgICAgIHZvaWQgdGhpcy51cGRhdGVQZW5kaW5nQXBwZW5kcygpO1xuICAgICAgICAgICAgaWYgKGN1ckFwcGVuZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGN1ckFwcGVuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgZW50cnkudGltZSA9IHRpbWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IG5ld1N1bSA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IGJ1ZmZlcnM6IEJ1ZmZlcltdID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBjdXJBcHBlbmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWZmZXIgPSB0aGlzLnNlcmlhbGl6ZVRyYW5zYWN0aW9uRW50cnkoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3U3VtICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IG5ld0NodW5rcyA9IHRoaXMuY2h1bmtCdWZmZXJzKGJ1ZmZlcnMpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNodW5rIG9mIG5ld0NodW5rcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IHRoaXMuZ2V0Q3VycmVudENodW5rKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXdhaXQgdGhpcy5yYXdTdG9yYWdlLmdldChmaWxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHsgaGVhZGVyLCBoZWFkZXJCdWZmZXIgfSA9IHRoaXMuZ2V0SGVhZGVyKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmF3U3RvcmFnZS5zZXQoZmlsZSwgaGVhZGVyQnVmZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IGNodW5rLmJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yYXdTdG9yYWdlLmFwcGVuZChmaWxlLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEaXNrRmlsZVRpbWVzdGFtcChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFkZFRvQ2h1bmsoY29udGVudC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tcHJlc3NUcmFuc2FjdGlvbkxvZygpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhQXBwZW5kcyAtPSBjdXJBcHBlbmRzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB2b2lkIHRoaXMudXBkYXRlUGVuZGluZ0FwcGVuZHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMucGVuZGluZ1dyaXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlUGVuZGluZ0FwcGVuZHMgPSB0aHJvdHRsZUZ1bmN0aW9uKDEwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgYXBwZW5kQ291bnQgPSB0aGlzLnBlbmRpbmdBcHBlbmRzLmxlbmd0aCArIHRoaXMuZXh0cmFBcHBlbmRzO1xuICAgICAgICBsZXQgZ3JvdXAgPSBgVHJhbnNhY3Rpb24gKCR7dGhpcy5kZWJ1Z05hbWV9KWA7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBVcGRhdGUgcGVuZGluZyBhcHBlbmRzICR7Z3JvdXB9OiAke2FwcGVuZENvdW50fWApO1xuICAgICAgICBpZiAoIWFwcGVuZENvdW50KSB7XG4gICAgICAgICAgICBzZXRQZW5kaW5nKGdyb3VwLCBcIlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRQZW5kaW5nKGdyb3VwLCBgUGVuZGluZyBhcHBlbmRzOiAke2FwcGVuZENvdW50fWApO1xuICAgIH0pO1xuXG4gICAgcHVibGljIGFzeW5jIGdldEtleXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBpZiAodGhpcy5pbml0KSBhd2FpdCB0aGlzLmluaXQ7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY2FjaGUua2V5cygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tEaXNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pbml0KSBhd2FpdCB0aGlzLmluaXQ7XG4gICAgICAgIGNvbnN0IGFueUNoYW5nZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IGF3YWl0IHRoaXMucmF3U3RvcmFnZS5nZXRLZXlzKCk7XG4gICAgICAgICAgICBsZXQgZGlza0ZpbGVzID0ga2V5cy5maWx0ZXIoa2V5ID0+IGtleS5lbmRzV2l0aChDSFVOS19FWFQpKTtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGFueSBrbm93biBmaWxlcyBoYXZlIGJlZW4gbW9kaWZpZWQgZXh0ZXJuYWxseSAoZGlzayB0aW1lc3RhbXAgbmV3ZXIgdGhhbiBvdXJzKVxuICAgICAgICAgICAgZm9yIChsZXQgZmlsZSBvZiBkaXNrRmlsZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgb3VyVGltZXN0YW1wID0gdGhpcy5kaXNrRmlsZXMuZ2V0KGZpbGUpO1xuICAgICAgICAgICAgICAgIGlmIChvdXJUaW1lc3RhbXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGluZm8gPSBhd2FpdCB0aGlzLnJhd1N0b3JhZ2UuZ2V0SW5mbyhmaWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5mbyAmJiBpbmZvLmxhc3RNb2RpZmllZCA+IG91clRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghYXdhaXQgYW55Q2hhbmdlcygpKSByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgZmlsZUxvY2tTZWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICghYXdhaXQgYW55Q2hhbmdlcygpKSByZXR1cm47XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRm91bmQgbmV3IGNoYW5nZXMgaW4gY29sbGVjdGlvbiBmcm9tIG90aGVyIHRhYi4gTG9hZGluZyB0aGVtIG5vdy4gJHt0aGlzLmRlYnVnTmFtZX1gKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEFsbFRyYW5zYWN0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIC8vIE5PVEU6IFRoaXMgaXMgZWl0aGVyIGNhbGxlZCBpbiBpbml0ICh3aGljaCBibG9ja3MgYWxsIG90aGVyIGNhbGxzKSwgb3IgaW5zaWRlIG9mIHRoZSBnbG9iYWwgZmlsZSBsb2NrLCBzbyBpdCBpcyBzYWZlIHRvIGxvYWQuXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkQWxsVHJhbnNhY3Rpb25zKGluaXRpYWxMb2FkPzogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgaWYgKGlzSW5CdWlsZCgpKSByZXR1cm4gW107XG5cbiAgICAgICAgaWYgKGluaXRpYWxMb2FkICYmIHRoaXMucmVzeW5jRnJvbURpc2spIHtcbiAgICAgICAgICAgIHJ1bkluZmluaXRlUG9sbChESVNLX0NIRUNLX0lOVEVSVkFMLCAoKSA9PiB0aGlzLmNoZWNrRGlzaygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3Qga2V5cyA9IGF3YWl0IHRoaXMucmF3U3RvcmFnZS5nZXRLZXlzKCk7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uRmlsZXMgPSBrZXlzLmZpbHRlcihrZXkgPT4ga2V5LmVuZHNXaXRoKENIVU5LX0VYVCkpO1xuICAgICAgICAvLyBQb3B1bGF0ZSBkaXNrRmlsZXMgd2l0aCBhY3R1YWwgdGltZXN0YW1wcyBmcm9tIGRpc2tcbiAgICAgICAgdGhpcy5kaXNrRmlsZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAobGV0IGZpbGUgb2YgdHJhbnNhY3Rpb25GaWxlcykge1xuICAgICAgICAgICAgbGV0IGluZm8gPSBhd2FpdCB0aGlzLnJhd1N0b3JhZ2UuZ2V0SW5mbyhmaWxlKTtcbiAgICAgICAgICAgIHRoaXMuZGlza0ZpbGVzLnNldChmaWxlLCBpbmZvPy5sYXN0TW9kaWZpZWQgPz8gRGF0ZS5ub3coKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2l6ZSA9IHsgdmFsdWU6IDAgfTtcbiAgICAgICAgbGV0IGVudHJ5TGlzdDogVHJhbnNhY3Rpb25FbnRyeVtdW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZmlsZSBvZiB0cmFuc2FjdGlvbkZpbGVzKSB7XG4gICAgICAgICAgICBlbnRyeUxpc3QucHVzaChhd2FpdCB0aGlzLnBhcnNlVHJhbnNhY3Rpb25GaWxlKGZpbGUsIHNpemUpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZW50cmllcyA9IGVudHJ5TGlzdC5mbGF0KCk7XG4gICAgICAgIHRoaXMuYXBwbHlUcmFuc2FjdGlvbkVudHJpZXMoZW50cmllcywgaW5pdGlhbExvYWQpO1xuXG4gICAgICAgIHRpbWUgPSBEYXRlLm5vdygpIC0gdGltZTtcbiAgICAgICAgaWYgKHRpbWUgPiA1MCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYExvYWRlZCAke3RoaXMuZGVidWdOYW1lfSBpbiAke2Zvcm1hdFRpbWUodGltZSl9LCAke2Zvcm1hdE51bWJlcih0aGlzLmNhY2hlLnNpemUpfSBrZXlzLCBmcm9tICR7Zm9ybWF0TnVtYmVyKHRyYW5zYWN0aW9uRmlsZXMubGVuZ3RoKX0gZmlsZXMsIGVudHJpZXMgJHtmb3JtYXROdW1iZXIoZW50cmllcy5sZW5ndGgpfSwgdG90YWwgc2l6ZSAke2Zvcm1hdE51bWJlcihzaXplLnZhbHVlKX1CYCwgdHJhbnNhY3Rpb25GaWxlcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbkZpbGVzO1xuICAgIH1cblxuICAgIC8vIE9OTFkgY2FsbCB0aGlzIGluc2lkZSBvZiBsb2FkQWxsVHJhbnNhY3Rpb25zXG4gICAgcHJpdmF0ZSBhc3luYyBwYXJzZVRyYW5zYWN0aW9uRmlsZShmaWxlbmFtZTogc3RyaW5nLCBzaXplOiB7IHZhbHVlOiBudW1iZXIgfSk6IFByb21pc2U8VHJhbnNhY3Rpb25FbnRyeVtdPiB7XG4gICAgICAgIGNvbnN0IGZ1bGxGaWxlID0gYXdhaXQgdGhpcy5yYXdTdG9yYWdlLmdldChmaWxlbmFtZSk7XG4gICAgICAgIGlmICghZnVsbEZpbGUpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGZ1bGxGaWxlLmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoYFRyYW5zYWN0aW9uIGluICR7dGhpcy5kZWJ1Z05hbWV9IGZpbGUgJHtmaWxlbmFtZX0gaXMgdG9vIHNtYWxsLCBza2lwcGluZ2ApO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHNpemUudmFsdWUgKz0gZnVsbEZpbGUubGVuZ3RoO1xuICAgICAgICBsZXQgaGVhZGVyU2l6ZSA9IGZ1bGxGaWxlLnJlYWRVSW50MzJMRSgwKTtcbiAgICAgICAgbGV0IGhlYWRlckJ1ZmZlciA9IGZ1bGxGaWxlLnNsaWNlKDQsIDQgKyBoZWFkZXJTaXplKTtcbiAgICAgICAgbGV0IGhlYWRlcjogVHJhbnNhY3Rpb25IZWFkZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBoZWFkZXIgPSBKU09OLnBhcnNlKGhlYWRlckJ1ZmZlci50b1N0cmluZygpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIGhlYWRlciBvZiB0cmFuc2FjdGlvbiBmaWxlIGluICR7dGhpcy5kZWJ1Z05hbWV9LCAke2ZpbGVuYW1lfWApO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb250ZW50ID0gZnVsbEZpbGUuc2xpY2UoNCArIGhlYWRlclNpemUpO1xuICAgICAgICBpZiAoaGVhZGVyLnppcHBlZCkge1xuICAgICAgICAgICAgY29udGVudCA9IGF3YWl0IFppcC5ndW56aXAoY29udGVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgbGV0IGVudHJpZXM6IFRyYW5zYWN0aW9uRW50cnlbXSA9IFtdO1xuICAgICAgICB3aGlsZSAob2Zmc2V0IDwgY29udGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghY29udGVudC5zbGljZShvZmZzZXQsIG9mZnNldCArIFNUQVJUX0JZVEVTLmxlbmd0aCkuZXF1YWxzKFNUQVJUX0JZVEVTKSkge1xuICAgICAgICAgICAgICAgIGxldCBzID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHdoaWxlIChvZmZzZXQgPCBjb250ZW50Lmxlbmd0aCAmJiAhY29udGVudC5zbGljZShvZmZzZXQsIG9mZnNldCArIFNUQVJUX0JZVEVTLmxlbmd0aCkuZXF1YWxzKFNUQVJUX0JZVEVTKSkge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGxlbiA9IG9mZnNldCAtIHM7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBGb3VuZCBiYWQgYnl0ZXMgaW4gJHtmaWxlbmFtZX0sIHNraXBwaW5nICR7bGVufSBieXRlcyBhdCBvZmZzZXQgJHtzfS4gVG90YWwgZmlsZSBieXRlcyAke2NvbnRlbnQubGVuZ3RofSwgcmVhZCAke2VudHJpZXMubGVuZ3RofSBlbnRyaWVzYCk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBjb250ZW50Lmxlbmd0aCkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZW50cnlPYmo6IHsgZW50cnk6IFRyYW5zYWN0aW9uRW50cnksIG9mZnNldDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGVudHJ5T2JqID0gdGhpcy5yZWFkVHJhbnNhY3Rpb25FbnRyeShjb250ZW50LCBvZmZzZXQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGUubWVzc2FnZS5pbmNsdWRlcyhcIlJlYWQgcGFzdCBlbmQgb2YgYnVmZmVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZW50cnlPYmopIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYEZhaWxlZCB0byByZWFkIHRyYW5zYWN0aW9uIGVudHJ5IGluIGluICR7dGhpcy5kZWJ1Z05hbWV9LCBmaWxlICR7ZmlsZW5hbWV9IGF0IG9mZnNldCAke29mZnNldH0sIHNraXBwaW5nIGJhZCBieXRlcywgcmVhZGluZyByZW1haW5kZXIgb2YgZmlsZWApO1xuICAgICAgICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmVudHJ5Q291bnQrKztcbiAgICAgICAgICAgIGxldCB7IGVudHJ5IH0gPSBlbnRyeU9iajtcbiAgICAgICAgICAgIG9mZnNldCA9IGVudHJ5T2JqLm9mZnNldDtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfVxuICAgIHByaXZhdGUgYXBwbHlUcmFuc2FjdGlvbkVudHJpZXMoZW50cmllczogVHJhbnNhY3Rpb25FbnRyeVtdLCBpbml0aWFsTG9hZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbGV0IHBlbmRpbmdXcml0ZVRpbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLnBlbmRpbmdBcHBlbmRzKSB7XG4gICAgICAgICAgICBsZXQgcHJldlRpbWUgPSBwZW5kaW5nV3JpdGVUaW1lcy5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgIGlmIChwcmV2VGltZSAmJiBwcmV2VGltZSA+IGVudHJ5LnRpbWUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlbmRpbmdXcml0ZVRpbWVzLnNldChlbnRyeS5rZXksIGVudHJ5LnRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXRlc3QgPSBuZXcgTWFwPHN0cmluZywgVHJhbnNhY3Rpb25FbnRyeT4oKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBsZXQgcGVuZGluZ1RpbWUgPSBwZW5kaW5nV3JpdGVUaW1lcy5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgIGlmIChwZW5kaW5nVGltZSAmJiBwZW5kaW5nVGltZSA+IGVudHJ5LnRpbWUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwcmV2ID0gbGF0ZXN0LmdldChlbnRyeS5rZXkpO1xuICAgICAgICAgICAgaWYgKHByZXYgJiYgcHJldi50aW1lID4gZW50cnkudGltZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGF0ZXN0LnNldChlbnRyeS5rZXksIGVudHJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbnlDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGxhdGVzdC52YWx1ZXMoKSkge1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FjaGUuaGFzKGVudHJ5LmtleSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGFueUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGUuZGVsZXRlKGVudHJ5LmtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghYW55Q2hhbmdlZCAmJiAhaW5pdGlhbExvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hhbmdlZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmV2ID0gdGhpcy5jYWNoZS5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcHJldi52YWx1ZSAhPT0gISFlbnRyeS52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldi52YWx1ZSAmJiBlbnRyeS52YWx1ZSAmJiAhcHJldi52YWx1ZS5lcXVhbHMoZW50cnkudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGFueUNoYW5nZWQgPSBoYXNDaGFuZ2VkKCkgfHwgYW55Q2hhbmdlZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlLnNldChlbnRyeS5rZXksIGVudHJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbnlDaGFuZ2VkICYmICFpbml0aWFsTG9hZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBUcmFuc2FjdGlvbiBzdG9yYWdlICR7dGhpcy5kZWJ1Z05hbWV9IGNoYW5nZWQgb24gZGlzaywgdHJpZ2dlcmluZyBmdWxsIGRvd25sb2FkIGZyb20gZGlza2ApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiB0aGlzLnJlc3luY0NhbGxiYWNrcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkVHJhbnNhY3Rpb25FbnRyeShidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiB7XG4gICAgICAgIGVudHJ5OiBUcmFuc2FjdGlvbkVudHJ5O1xuICAgICAgICBvZmZzZXQ6IG51bWJlcjtcbiAgICB9IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgZnVuY3Rpb24gcmVhZFNsaWNlKGNvdW50OiBudW1iZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWNlID0gYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgY291bnQpO1xuICAgICAgICAgICAgaWYgKHNsaWNlLmxlbmd0aCA8IGNvdW50KSB0aHJvdyBuZXcgRXJyb3IoYFJlYWQgcGFzdCBlbmQgb2YgYnVmZmVyIGF0IG9mZnNldCAke29mZnNldH0vJHtidWZmZXIubGVuZ3RofWApO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IGNvdW50O1xuICAgICAgICAgICAgcmV0dXJuIHNsaWNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVhZFNsaWNlKFNUQVJUX0JZVEVTLmxlbmd0aCkuZXF1YWxzKFNUQVJUX0JZVEVTKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBrZXlMZW5ndGggPSByZWFkU2xpY2UoNCkucmVhZFVJbnQzMkxFKDApO1xuICAgICAgICBjb25zdCB2YWx1ZUxlbmd0aCA9IHJlYWRTbGljZSg0KS5yZWFkVUludDMyTEUoMCk7XG4gICAgICAgIGNvbnN0IHRpbWUgPSByZWFkU2xpY2UoOCkucmVhZERvdWJsZUxFKDApO1xuICAgICAgICBjb25zdCBmbGFncyA9IHJlYWRTbGljZSgxKS5yZWFkVUludDgoMCk7XG5cbiAgICAgICAgY29uc3Qga2V5ID0gcmVhZFNsaWNlKGtleUxlbmd0aCkudG9TdHJpbmcoKTtcbiAgICAgICAgbGV0IHZhbHVlID0gcmVhZFNsaWNlKHZhbHVlTGVuZ3RoKTtcblxuICAgICAgICBpZiAoIXJlYWRTbGljZShFTkRfQllURVMubGVuZ3RoKS5lcXVhbHMoRU5EX0JZVEVTKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBsZXQgaXNaaXBwZWQgPSAoZmxhZ3MgJiAxKSA9PT0gMTtcbiAgICAgICAgbGV0IGlzRGVsZXRlID0gKGZsYWdzICYgMikgPT09IDI7XG5cbiAgICAgICAgaWYgKGlzWmlwcGVkKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFppcC5ndW56aXBTeW5jKHZhbHVlKTtcbiAgICAgICAgICAgIGlzWmlwcGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW50cnk6IFRyYW5zYWN0aW9uRW50cnkgPSB7IGtleSwgdmFsdWUsIGlzWmlwcGVkLCB0aW1lIH07XG4gICAgICAgIGlmIChpc0RlbGV0ZSkge1xuICAgICAgICAgICAgZW50cnkudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZW50cnksIG9mZnNldCB9O1xuICAgIH1cblxuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBkaXJlY3RseSBnbyBmcm9tIFRyYW5zYWN0aW9uRW50cnlbXSB0byBCdWZmZXIsIGJ5IHByZS1hbGxvY2F0aW5nLCBzbyBpdCBpcyBtb3JlIGVmZmljaWVudFxuICAgIHByaXZhdGUgc2VyaWFsaXplVHJhbnNhY3Rpb25FbnRyeShlbnRyeTogVHJhbnNhY3Rpb25FbnRyeSk6IEJ1ZmZlciB7XG4gICAgICAgIGxldCBrZXlCdWZmZXIgPSBCdWZmZXIuZnJvbShlbnRyeS5rZXkpO1xuICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoXG4gICAgICAgICAgICBTVEFSVF9CWVRFUy5sZW5ndGggKyA0ICsgNCArIDggKyAxICsga2V5QnVmZmVyLmxlbmd0aCArIChlbnRyeS52YWx1ZT8ubGVuZ3RoIHx8IDApICsgRU5EX0JZVEVTLmxlbmd0aFxuICAgICAgICApO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcblxuICAgICAgICBTVEFSVF9CWVRFUy5jb3B5KGJ1ZmZlciwgb2Zmc2V0KTtcbiAgICAgICAgb2Zmc2V0ICs9IFNUQVJUX0JZVEVTLmxlbmd0aDtcblxuICAgICAgICBidWZmZXIud3JpdGVVSW50MzJMRShrZXlCdWZmZXIubGVuZ3RoLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gNDtcblxuICAgICAgICBidWZmZXIud3JpdGVVSW50MzJMRShlbnRyeS52YWx1ZSA/IGVudHJ5LnZhbHVlLmxlbmd0aCA6IDAsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSA0O1xuXG4gICAgICAgIGJ1ZmZlci53cml0ZURvdWJsZUxFKGVudHJ5LnRpbWUsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSA4O1xuXG4gICAgICAgIGxldCBmbGFncyA9IDA7XG4gICAgICAgIGlmIChlbnRyeS5pc1ppcHBlZCkgZmxhZ3MgfD0gMTtcbiAgICAgICAgaWYgKGVudHJ5LnZhbHVlID09PSB1bmRlZmluZWQpIGZsYWdzIHw9IDI7XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KGZsYWdzLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gMTtcblxuICAgICAgICBrZXlCdWZmZXIuY29weShidWZmZXIsIG9mZnNldCk7XG4gICAgICAgIG9mZnNldCArPSBrZXlCdWZmZXIubGVuZ3RoO1xuXG4gICAgICAgIGlmIChlbnRyeS52YWx1ZSkge1xuICAgICAgICAgICAgZW50cnkudmFsdWUuY29weShidWZmZXIsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gZW50cnkudmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgRU5EX0JZVEVTLmNvcHkoYnVmZmVyLCBvZmZzZXQpO1xuICAgICAgICBvZmZzZXQgKz0gRU5EX0JZVEVTLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SGVhZGVyKHppcDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBoZWFkZXI6IFRyYW5zYWN0aW9uSGVhZGVyID0geyB6aXBwZWQ6IHppcCB9O1xuICAgICAgICBsZXQgaGVhZGVyQnVmZmVyID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoaGVhZGVyKSk7XG4gICAgICAgIGxldCBoZWFkZXJTaXplID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICBoZWFkZXJTaXplLndyaXRlVUludDMyTEUoaGVhZGVyQnVmZmVyLmxlbmd0aCwgMCk7XG4gICAgICAgIHJldHVybiB7IGhlYWRlciwgaGVhZGVyQnVmZmVyOiBCdWZmZXIuY29uY2F0KFtoZWFkZXJTaXplLCBoZWFkZXJCdWZmZXJdKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2h1bmtCdWZmZXJzKGJ1ZmZlcnM6IEJ1ZmZlcltdKSB7XG4gICAgICAgIGxldCBuZXdDaHVua3M6IHtcbiAgICAgICAgICAgIGJ1ZmZlcnM6IEJ1ZmZlcltdO1xuICAgICAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgICAgICB9W10gPSBbXTtcbiAgICAgICAgbmV3Q2h1bmtzLnB1c2goeyBidWZmZXJzOiBbXSwgc2l6ZTogMCB9KTtcbiAgICAgICAgZm9yIChjb25zdCBidWZmZXIgb2YgYnVmZmVycykge1xuICAgICAgICAgICAgaWYgKG5ld0NodW5rc1tuZXdDaHVua3MubGVuZ3RoIC0gMV0uc2l6ZSArIGJ1ZmZlci5sZW5ndGggPj0gRklMRV9DSFVOS19TSVpFKSB7XG4gICAgICAgICAgICAgICAgbmV3Q2h1bmtzLnB1c2goeyBidWZmZXJzOiBbXSwgc2l6ZTogMCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0NodW5rc1tuZXdDaHVua3MubGVuZ3RoIC0gMV0uYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgICAgICAgICBuZXdDaHVua3NbbmV3Q2h1bmtzLmxlbmd0aCAtIDFdLnNpemUgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3Q2h1bmtzLm1hcCh4ID0+ICh7IGJ1ZmZlcjogQnVmZmVyLmNvbmNhdCh4LmJ1ZmZlcnMpLCBzaXplOiB4LnNpemUgfSkpO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBjb21wcmVzc2luZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXN5bmMgY29tcHJlc3NUcmFuc2FjdGlvbkxvZyhmb3JjZT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuY29tcHJlc3NpbmcpIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY29tcHJlc3NpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdEaXNrRW50cmllcyA9IGF3YWl0IHRoaXMucmF3U3RvcmFnZS5nZXRLZXlzKCk7XG4gICAgICAgICAgICBleGlzdGluZ0Rpc2tFbnRyaWVzID0gZXhpc3RpbmdEaXNrRW50cmllcy5maWx0ZXIoeCA9PiB4LmVuZHNXaXRoKENIVU5LX0VYVCkpO1xuICAgICAgICAgICAgbGV0IGNvbXByZXNzTm93ID0gZm9yY2UgfHwgKFxuICAgICAgICAgICAgICAgIHRoaXMuZW50cnlDb3VudCA+IDEwMCAmJiB0aGlzLmVudHJ5Q291bnQgPiB0aGlzLmNhY2hlLnNpemUgKiAzXG4gICAgICAgICAgICAgICAgLy8gTk9URTogVGhpcyBjb21wcmVzcyBjaGVjayBicmVha3MgZG93biBpZiB3ZSBvbmx5IGhhdmUgdmVyeSBsYXJnZSB2YWx1ZXMsIGJ1dC4uLiB0aG9zZSBkb24ndCB3b3JrIEFOWVdBWVMgKGl0IGlzIGJldHRlciB0byB1c2Ugb25lIGZpbGUgcGVyIHZhbHVlIGluc3RlYWQpLlxuICAgICAgICAgICAgICAgIC8vICAtIE1heWJlIHdlIHNob3VsZCB0aHJvdywgb3IgYXQgbGVhc3Qgd2Fybiwgb24gc2V0cyBvZiB2YWx1ZSA+IDFNQixcbiAgICAgICAgICAgICAgICAvLyAgICAgIGF0IHdoaWNoIHBvaW50IHRoZXkgc2hvdWxkIGp1c3QgdXNlIGEgZmlsZSBwZXIgdmFsdWVcbiAgICAgICAgICAgICAgICB8fCBleGlzdGluZ0Rpc2tFbnRyaWVzLmxlbmd0aCA+IE1hdGgubWF4KDEwLCBNYXRoLmNlaWwodGhpcy5lbnRyeUNvdW50IC8gMTAwMCkpXG4gICAgICAgICAgICAgICAgfHwgZXhpc3RpbmdEaXNrRW50cmllcy5sZW5ndGggPiAxMDAwICogMTBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWNvbXByZXNzTm93KSByZXR1cm47XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgQ29tcHJlc3NpbmcgJHt0aGlzLmRlYnVnTmFtZX0gdHJhbnNhY3Rpb24gbG9nLCAke3RoaXMuZW50cnlDb3VudH0gZW50cmllcywgJHt0aGlzLmNhY2hlLnNpemV9IGtleXNgKTtcblxuICAgICAgICAgICAgLy8gTG9hZCBvZmYgZGlzaywgaW4gY2FzZSB0aGVyZSBhcmUgb3RoZXIgd3JpdGVzLiBXZSBzdGlsbCByYWNlIHdpdGggdGhlbSwgYnV0IGF0IGxlYXN0IHRoaXMgcmVkdWNlcyB0aGUgcmFjZSBjb25kaXRpb24gY29uc2lkZXJhYmx5XG4gICAgICAgICAgICBleGlzdGluZ0Rpc2tFbnRyaWVzID0gYXdhaXQgdGhpcy5sb2FkQWxsVHJhbnNhY3Rpb25zKCk7XG5cbiAgICAgICAgICAgIHRoaXMuZW50cnlDb3VudCA9IHRoaXMuY2FjaGUuc2l6ZTtcblxuXG4gICAgICAgICAgICBsZXQgYnVmZmVyczogQnVmZmVyW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdGhpcy5jYWNoZS52YWx1ZXMoKSkge1xuICAgICAgICAgICAgICAgIGxldCBidWZmZXIgPSB0aGlzLnNlcmlhbGl6ZVRyYW5zYWN0aW9uRW50cnkoZW50cnkpO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbmV3Q2h1bmtzID0gdGhpcy5jaHVua0J1ZmZlcnMoYnVmZmVycyk7XG5cbiAgICAgICAgICAgIGxldCBuZXdGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGNodW5rIG9mIG5ld0NodW5rcykge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IHVzZSB0aGUgcHJldmlvdXMgY3VycmVudCBjaHVuayBmb3IgdGhlIG5ldyBmaWxlLiBBbHNvIGNsZWFyIGl0IGFmdGVyd2FyZHMgc28gaXQncyBub3QgcmV1c2VkIGZvciBhbnkgZnV0dXJlIHJpZ2h0cy4gXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2h1bmsgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSB0aGlzLmdldEN1cnJlbnRDaHVuaygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENodW5rID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG5ld0ZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBjaHVuay5idWZmZXI7XG4gICAgICAgICAgICAgICAgbGV0IHsgaGVhZGVyLCBoZWFkZXJCdWZmZXIgfSA9IHRoaXMuZ2V0SGVhZGVyKFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50Lmxlbmd0aCA+PSBGSUxFX1pJUF9USFJFU0hPTERcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuemlwcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBaaXAuZ3ppcChjb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2hlYWRlckJ1ZmZlciwgY29udGVudF0pO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmF3U3RvcmFnZS5zZXQoZmlsZSwgYnVmZmVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURpc2tGaWxlVGltZXN0YW1wKGZpbGUpO1xuICAgICAgICAgICAgICAgIGxldCB2ZXJpZmllZCA9IGF3YWl0IHRoaXMucmF3U3RvcmFnZS5nZXQoZmlsZSk7XG4gICAgICAgICAgICAgICAgaWYgKCF2ZXJpZmllZD8uZXF1YWxzKGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHZlcmlmeSB0cmFuc2FjdGlvbiBmaWxlICR7ZmlsZX0gaW4gJHt0aGlzLmRlYnVnTmFtZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIGZpbGUgJHtmaWxlfSBpbiAke3RoaXMuZGVidWdOYW1lfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgT05MWSB0aW1lIHdlIGNhbiBkZWxldGUgb2xkIGZpbGVzLCBhcyB3ZSBrbm93IGZvciBzdXJlIHRoZSBuZXcgZmlsZSBoYXMgYWxsIG9mIG91ciBkYXRhLiBBbnkgZnV0dXJlIHJlYWRlcnMgd29uJ3Qga25vdyB0aGlzLCB1bmxlc3MgdGhleSB3cml0ZSBpdCB0aGVtc2VsdmVzIChvciB1bmxlc3MgdGhleSBhdWRpdCBpdCBhZ2FpbnN0IHRoZSBvdGhlciBnZW5lcmF0aW9ucywgd2hpY2ggaXMgYW5ub3lpbmcpLlxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGV4aXN0aW5nRGlza0VudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJhd1N0b3JhZ2UucmVtb3ZlKGZpbGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlza0ZpbGVzLmRlbGV0ZShmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuY29tcHJlc3NpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgZmlsZUxvY2tTZWN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBleGlzdGluZ0Rpc2tFbnRyaWVzID0gYXdhaXQgdGhpcy5yYXdTdG9yYWdlLmdldEtleXMoKTtcbiAgICAgICAgICAgIGV4aXN0aW5nRGlza0VudHJpZXMgPSBleGlzdGluZ0Rpc2tFbnRyaWVzLmZpbHRlcih4ID0+IHguZW5kc1dpdGgoQ0hVTktfRVhUKSk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGV4aXN0aW5nRGlza0VudHJpZXMubWFwKHggPT4gdGhpcy5yYXdTdG9yYWdlLnJlbW92ZSh4KSkpO1xuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXBwZW5kcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5kaXNrRmlsZXMuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENodW5rID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5lbnRyeUNvdW50ID0gMDtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
547
- /* _JS_SOURCE_HASH = "4243396e51240c3f63dfe0fd7207c3a864fb73cf06f7acadabf9c6175dbda2ba"; */
547
+ /* _JS_SOURCE_HASH = "d3e36cc62c47500f4ba9918b90652351548b609e3829d8077a2c42e47bd0a214"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.getFileSystemPointer = exports.findGrantedPointerHandle = exports.deleteFileSystemPointer = exports.storeFileSystemPointer = void 0;
4
4
  const caching_1 = require("socket-function/src/caching");
@@ -104,4 +104,4 @@ async function getFileSystemPointer(config) {
104
104
  }
105
105
  exports.getFileSystemPointer = getFileSystemPointer;
106
106
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVN5c3RlbVBvaW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaWxlU3lzdGVtUG9pbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBbUQ7QUFDbkQsbURBQWtEO0FBRWxELE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBQzlDLE1BQU0sRUFBRSxHQUFHLElBQUEsY0FBSSxFQUFDLEtBQUssSUFBSSxFQUFFO0lBQ3ZCLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsMERBQTBELEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkYsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDdEMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQztBQUNILEtBQUssVUFBVSxjQUFjO0lBQ3pCLElBQUksUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDMUIsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoQyxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBQ0QsS0FBSyxVQUFVLEtBQUssQ0FBQyxHQUFXLEVBQUUsS0FBdUQ7SUFDckYsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLEVBQUUsQ0FBQztJQUN6QyxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU87SUFDekIsSUFBSSxHQUFH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QUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPO0lBQ3BCLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLE9BQU87UUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsWUFBWTtZQUMvQixJQUFJLFFBQVEsR0FBRyxNQUFPLE1BQWMsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDcEIsTUFBTyxNQUFjLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxhQUFaLFlBQVksY0FBWixZQUFZLEdBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RSxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDO0FBckJELG9EQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxhenkgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9jYWNoaW5nXCI7XG5pbXBvcnQgeyBuZXh0SWQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5cbmNvbnN0IG9iamVjdFN0b3JlTmFtZSA9IFwiZmlsZVN5c3RlbVBvaW50ZXJEQlwiO1xuY29uc3QgZGIgPSBsYXp5KGFzeW5jICgpID0+IHtcbiAgICBsZXQgZGIgPSBpbmRleGVkREIub3BlbihcImZpbGVTeXN0ZW1Qb2ludGVyREJfZjI5OGU5NjItYmQ4YS00NmI5LTgwOTgtMjVkYjYzM2Y0ZWQzXCIsIDEpO1xuICAgIGRiLmFkZEV2ZW50TGlzdGVuZXIoXCJ1cGdyYWRlbmVlZGVkXCIsICgpID0+IHtcbiAgICAgICAgZGIucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwge30pO1xuICAgIH0pO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZGIuYWRkRXZlbnRMaXN0ZW5lcihcInN1Y2Nlc3NcIiwgcmVzb2x2ZSkpO1xuICAgIHJldHVybiBkYi5yZXN1bHQ7XG59KTtcbmFzeW5jIGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uKCkge1xuICAgIGxldCBkYXRhYmFzZSA9IGF3YWl0IGRiKCk7XG4gICAgaWYgKCFkYXRhYmFzZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZGF0YWJhc2UudHJhbnNhY3Rpb24ob2JqZWN0U3RvcmVOYW1lLCBcInJlYWR3cml0ZVwiKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpO1xufVxuYXN5bmMgZnVuY3Rpb24gd3JpdGUoa2V5OiBzdHJpbmcsIHZhbHVlOiBGaWxlU3lzdGVtRmlsZUhhbmRsZSB8IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUpIHtcbiAgICBsZXQgdHJhbnNhY3Rpb24gPSBhd2FpdCBnZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHJldHVybjtcbiAgICBsZXQgcmVxID0gdHJhbnNhY3Rpb24ucHV0KHZhbHVlLCBrZXkpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgcmVxLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWNjZXNzXCIsIHJlc29sdmUpO1xuICAgICAgICByZXEuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiByZWFkKGtleTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3lzdGVtRmlsZUhhbmRsZSB8IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgdHJhbnNhY3Rpb24gPSBhd2FpdCBnZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHJldHVybjtcbiAgICBsZXQgcmVxID0gdHJhbnNhY3Rpb24uZ2V0KGtleSk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICByZXEuYWRkRXZlbnRMaXN0ZW5lcihcInN1Y2Nlc3NcIiwgcmVzb2x2ZSk7XG4gICAgICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVxLnJlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgRmlsZVN5c3RlbVBvaW50ZXIgPSBzdHJpbmc7XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RvcmVGaWxlU3lzdGVtUG9pbnRlcihjb25maWc6IHtcbiAgICBtb2RlOiBcInJlYWRcIiB8IFwicmVhZHdyaXRlXCI7XG4gICAgaGFuZGxlOiBGaWxlU3lzdGVtRmlsZUhhbmRsZSB8IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU7XG59KTogUHJvbWlzZTxGaWxlU3lzdGVtUG9pbnRlcj4ge1xuICAgIGF3YWl0IChjb25maWcuaGFuZGxlIGFzIGFueSkucmVxdWVzdFBlcm1pc3Npb24oeyBtb2RlOiBjb25maWcubW9kZSB9KTtcbiAgICBsZXQga2V5ID0gbmV4dElkKCkgKyBcIl9cIiArIGNvbmZpZy5tb2RlO1xuICAgIGF3YWl0IHdyaXRlKGtleSwgY29uZmlnLmhhbmRsZSk7XG4gICAgcmV0dXJuIGtleTtcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxldGVGaWxlU3lzdGVtUG9pbnRlcihwb2ludGVyOiBGaWxlU3lzdGVtUG9pbnRlcikge1xuICAgIGxldCB0cmFuc2FjdGlvbiA9IGF3YWl0IGdldFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikgcmV0dXJuO1xuICAgIGxldCByZXEgPSB0cmFuc2FjdGlvbi5kZWxldGUocG9pbnRlcik7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICByZXEuYWRkRXZlbnRMaXN0ZW5lcihcInN1Y2Nlc3NcIiwgcmVzb2x2ZSk7XG4gICAgICAgIHJlcS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICB9KTtcbn1cblxuLy8gRW51bWVyYXRlcyBldmVyeSBzdG9yZWQgcG9pbnRlciBoYW5kbGUgd2hvc2UgcGVybWlzc2lvbiBpcyBhbHJlYWR5IGdyYW50ZWQgZm9yIGBtb2RlYCwgbmV3ZXN0IGZpcnN0IChwb2ludGVyIGtleXMgc3RhcnQgd2l0aCBEYXRlLm5vdygpLCB3aGljaCBzb3J0cyBsZXhpY29ncmFwaGljYWxseSkuIENhbGxhYmxlIGZyb20gYSBXZWIgV29ya2VyIOKAlCB1bmxpa2UgZ2V0RmlsZVN5c3RlbVBvaW50ZXIncyBvblVzZXJBY3RpdmF0aW9uIGZsb3csIHRoaXMgb25seSB1c2VzIHF1ZXJ5UGVybWlzc2lvbiwgd2hpY2ggZG9lcyBOT1QgcmVxdWlyZSB1c2VyIGFjdGl2YXRpb24uXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZEdyYW50ZWRQb2ludGVySGFuZGxlKG1vZGU6IFwicmVhZFwiIHwgXCJyZWFkd3JpdGVcIik6IFByb21pc2U8RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBkYXRhYmFzZSA9IGF3YWl0IGRiKCk7XG4gICAgaWYgKCFkYXRhYmFzZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBsZXQgc3RvcmUgPSBkYXRhYmFzZS50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUsIFwicmVhZG9ubHlcIikub2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTtcbiAgICBsZXQga2V5c1JlcSA9IHN0b3JlLmdldEFsbEtleXMoKTtcbiAgICBsZXQgdmFsdWVzUmVxID0gc3RvcmUuZ2V0QWxsKCk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBrZXlzUmVxLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWNjZXNzXCIsIHJlc29sdmUpO1xuICAgICAgICBrZXlzUmVxLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgIH0pO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdmFsdWVzUmVxLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWNjZXNzXCIsIHJlc29sdmUpO1xuICAgICAgICB2YWx1ZXNSZXEuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgfSk7XG4gICAgbGV0IGtleXMgPSBrZXlzUmVxLnJlc3VsdCBhcyBzdHJpbmdbXTtcbiAgICBsZXQgdmFsdWVzID0gdmFsdWVzUmVxLnJlc3VsdCBhcyAoRmlsZVN5c3RlbUZpbGVIYW5kbGUgfCBGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlKVtdO1xuICAgIGxldCBlbnRyaWVzID0ga2V5cy5tYXAoKGtleSwgaSkgPT4gKHsga2V5LCB2YWx1ZTogdmFsdWVzW2ldLCB0aW1lOiAra2V5LnNwbGl0KFwiX1wiKVswXSB8fCAwIH0pKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYi50aW1lIC0gYS50aW1lKTtcbiAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGlmIChlbnRyeS52YWx1ZS5raW5kICE9PSBcImRpcmVjdG9yeVwiKSBjb250aW51ZTtcbiAgICAgICAgbGV0IHN0YXRlID0gYXdhaXQgKGVudHJ5LnZhbHVlIGFzIGFueSkucXVlcnlQZXJtaXNzaW9uKHsgbW9kZSB9KTtcbiAgICAgICAgaWYgKHN0YXRlID09PSBcImdyYW50ZWRcIikgcmV0dXJuIGVudHJ5LnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RmlsZVN5c3RlbVBvaW50ZXIoY29uZmlnOiB7XG4gICAgcG9pbnRlcjogRmlsZVN5c3RlbVBvaW50ZXI7XG59KTogUHJvbWlzZTx7XG4gICAgLy8gTk9URTogV2UgaGF2ZSB0byBjYWxsIHJlcXVlc3RQZXJtaXNzaW9uLCBzby4uLiB1c2VyIGFjdGl2YXRpb24gaXMgcmVxdWlyZWQgKGFzIGluLFxuICAgIC8vICB0aGlzIG5lZWQgdG8gYmUgY2FsbGVkIGluc2lkZSBvZiBhIGJ1dHRvbikuXG4gICAgLy8gSU1QT1JUQU5UISBJbiBzb21lIGNpcmN1bXN0YW5jZXMgdXNlciBhY3RpdmF0aW9uIGlzIG5vdCByZXF1aXJlZCAod2l0aCBtdWx0aXBsZSB0YWJzLCBhbmQgcG90ZW50aWFsbHkgd2l0aCBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2Jsb2cvcGVyc2lzdGVudC1wZXJtaXNzaW9ucy1mb3ItdGhlLWZpbGUtc3lzdGVtLWFjY2Vzcy1hcGkpLCBzby4uLiB0cnlpbmcgdG8gY2FsbCBvblVzZXJBY3RpdmF0aW9uIGltbW1lZGlhdGVseSBpcyBhIGdvb2QgaWRlYSAoYWx0aG91Z2ggaXQgbWlnaHQgdGhyb3cpLlxuICAgIG9uVXNlckFjdGl2YXRpb24obW9kZU92ZXJyaWRlPzogXCJyZWFkXCIgfCBcInJlYWR3cml0ZVwiKTogUHJvbWlzZTxGaWxlU3lzdGVtRmlsZUhhbmRsZSB8IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGU+XG59IHwgdW5kZWZpbmVkXG4+IHtcbiAgICBjb25zdCBoYW5kbGUgPSBhd2FpdCByZWFkKGNvbmZpZy5wb2ludGVyKTtcbiAgICBpZiAoIWhhbmRsZSkgcmV0dXJuO1xuICAgIGxldCBtb2RlID0gY29uZmlnLnBvaW50ZXIuc3BsaXQoXCJfXCIpLmF0KC0xKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhc3luYyBvblVzZXJBY3RpdmF0aW9uKG1vZGVPdmVycmlkZSkge1xuICAgICAgICAgICAgbGV0IHRlc3RNb2RlID0gYXdhaXQgKGhhbmRsZSBhcyBhbnkpLnF1ZXJ5UGVybWlzc2lvbih7IG1vZGU6IG1vZGUgfSk7XG4gICAgICAgICAgICBpZiAodGVzdE1vZGUgIT09IG1vZGUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCAoaGFuZGxlIGFzIGFueSkucmVxdWVzdFBlcm1pc3Npb24oeyBtb2RlOiBtb2RlT3ZlcnJpZGUgPz8gbW9kZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cbiAgICB9O1xufSJdfQ==
107
- /* _JS_SOURCE_HASH = "97aa147ca2fab9671431d27ec4be0571ae9f1394d604b764d0ec298a33beb12c"; */
107
+ /* _JS_SOURCE_HASH = "5b1826d0226e44d46f66b62f35662bac3249e8fcc29abaa50adc7de02c44b21a"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.testRemoteConnection = exports.getRemoteDirectoryHandle = void 0;
4
4
  const typesafecss_1 = require("typesafecss");
@@ -473,4 +473,4 @@ async function testRemoteConnection(url, password, options = {}) {
473
473
  }
474
474
  exports.testRemoteConnection = testRemoteConnection;
475
475
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlRmlsZVN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW1vdGVGaWxlU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBcUM7QUFHckMsMlNBQTJTO0FBQzNTLEdBQUc7QUFDSCw4UEFBOFA7QUFFOVAsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDeEMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQVU5QyxTQUFTLE1BQU0sQ0FBQyxDQUFTO0lBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFDdkcsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLENBQVM7SUFDNUIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBZ0IsQ0FBQztBQUNwRixDQUFDO0FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBSXhFLDRPQUE0TztBQUM1TyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsaUxBQWlMO0FBQ2pMLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDNUMsNklBQTZJO0FBQzdJLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxH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QUFFO0lBQy9GLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFGRCw0REFFQztBQUlELG9UQUFvVDtBQUM3UyxLQUFLLFVBQVUsb0JBQW9CLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsVUFBeUIsRUFBRTtJQUNqRyxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFXLGFBQVgsQ0FBQyx1QkFBRCxDQUFDLENBQVksT0FBTyxLQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakQsQ0FBQztZQUFTLENBQUM7UUFDUCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFaRCxvREFZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTm9kZSB9IGZyb20gXCJ0eXBlc2FmZWNzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RvcnlXcmFwcGVyLCBGaWxlV3JhcHBlciB9IGZyb20gXCIuL0ZpbGVGb2xkZXJBUElcIjtcblxuLy8gQSByZW1vdGUgc2VydmVyIChyZW1vdGVGaWxlU2VydmVyLmpzKSBleHBvc2VkIGFzIGEgRGlyZWN0b3J5V3JhcHBlciDigJQgdGhlIFNBTUUgaW50ZXJmYWNlIGFzIHRoZSBOb2RlLmpzIGFuZCBGaWxlLVN5c3RlbS1BY2Nlc3MgaGFuZGxlcy4gU28gZ2V0RGlyZWN0b3J5SGFuZGxlIGNhbiByZXR1cm4gb25lIG9mIHRoZXNlIGFuZCBldmVyeXRoaW5nIGRvd25zdHJlYW0gKHdyYXBIYW5kbGUsIG5hdmlnYXRpb24sIEJ1bGtEYXRhYmFzZTIpIHdvcmtzIHVuY2hhbmdlZDsgbm90aGluZyBlbHNlIGtub3dzIGl0J3MgcmVtb3RlLlxuLy8gXG4vLyBGaWxlcyBoZXJlIGFyZSBpbW11dGFibGUgKHdyaXR0ZW4gb25jZSkgb3IgYXBwZW5kLW9ubHksIHNvIHRoZSByYW5nZSBjYWNoZSAocmF3IGNvbXByZXNzZWQgYnl0ZXMsIGluIH4xTUIgYWxpZ25lZCBjaHVua3MpIGlzIGFsd2F5cyB2YWxpZCDigJQgb3ZlciB0aGUgbmV0d29yayBsYXRlbmN5IGRvbWluYXRlcywgc28gcmVhZGluZyAxTUIgY29zdHMgYWJvdXQgdGhlIHNhbWUgYXMgNjRLQiBhbmQgZmFyIGZld2VyIHJvdW5kIHRyaXBzIHdpbnMuXG5cbmNvbnN0IEVNUFRZID0gQnVmZmVyLmFsbG9jKDApO1xuY29uc3QgREVGQVVMVF9DSFVOS19CWVRFUyA9IDEwMjQgKiAxMDI0O1xuY29uc3QgREVGQVVMVF9DQUNIRV9CWVRFUyA9IDEyOCAqIDEwMjQgKiAxMDI0O1xuXG5leHBvcnQgdHlwZSBSZW1vdGVPcHRpb25zID0ge1xuICAgIGNodW5rQnl0ZXM/OiBudW1iZXI7XG4gICAgY2FjaGVCeXRlcz86IG51bWJlcjtcbiAgICBtYXhGZXRjaEJ5dGVzPzogbnVtYmVyOyAgICAgIC8vIGNhcCBwZXIgcmVhZCByZXF1ZXN0OyBsYXJnZSByZWFkcyBzcGxpdCBpbnRvIHRoaXMgbWFueSBieXRlcyBlYWNoXG4gICAgbGF0ZW5jeU1zPzogbnVtYmVyOyAgICAgICAgICAvLyBhcnRpZmljaWFsIHBlci1yZXF1ZXN0IGRlbGF5LCBmb3Igc2ltdWxhdGluZyBuZXR3b3JrIGxhdGVuY3kgaW4gdGVzdHNcbiAgICBzdGF0cz86IHsgcmVxdWVzdENvdW50OiBudW1iZXI7IGJ5dGVzRmV0Y2hlZDogbnVtYmVyIH07XG59O1xuXG5mdW5jdGlvbiBlbm9lbnQocDogc3RyaW5nKTogRXJyb3Ige1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cH1gKSwgeyBjb2RlOiBcIkVOT0VOVFwiLCBuYW1lOiBcIk5vdEZvdW5kRXJyb3JcIiB9KTtcbn1cbmZ1bmN0aW9uIHRvQXJyYXlCdWZmZXIoYjogQnVmZmVyKTogQXJyYXlCdWZmZXIge1xuICAgIHJldHVybiBiLmJ1ZmZlci5zbGljZShiLmJ5dGVPZmZzZXQsIGIuYnl0ZU9mZnNldCArIGIuYnl0ZUxlbmd0aCkgYXMgQXJyYXlCdWZmZXI7XG59XG5jb25zdCBzbGVlcCA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZTx2b2lkPihyID0+IHNldFRpbWVvdXQociwgbXMpKTtcblxudHlwZSBTdGF0ID0geyBzaXplOiBudW1iZXI7IGxhc3RNb2RpZmllZDogbnVtYmVyOyBkaXI6IGJvb2xlYW4gfTtcblxuLy8gQSBzdGF0IGlzIGNhY2hlZCB0aGlzIGxvbmcsIHNvIHRoZSBidXJzdCBvZiBzaXplIGxvb2t1cHMgZHVyaW5nIGEgc2luZ2xlIHJlYWQgcGFzcyBpcyBvbmUgcmVxdWVzdCBwZXIgZmlsZSwgbm90IG9uZSBwZXIgYmxvY2suIFNob3J0IGVub3VnaCB0aGF0IGFuIGFwcGVuZCBieSBhbm90aGVyIHdyaXRlciBzaG93cyB1cCBwcm9tcHRseTsgb3VyIG93biB3cml0ZXMgaW52YWxpZGF0ZSBpdCBpbW1lZGlhdGVseS5cbmNvbnN0IElORk9fVFRMX01TID0gMjAwMDtcbi8vIFdlIGtlZXAgYXQgbW9zdCB0aGlzIG1hbnkgYnl0ZXMgb2YgcmVhZC93cml0ZSByZXF1ZXN0cyBpbiBmbGlnaHQgYXQgb25jZSAodGhlIHJlc3QgcXVldWUpLCBzbyBhIGJpZyByZWFkIGRvZXNuJ3QgZmlyZSBodW5kcmVkcyBvZiBNQiBvZiByZXF1ZXN0cyBhdCB0aGUgc2VydmVyIHNpbXVsdGFuZW91c2x5LlxuY29uc3QgTUFYX0lORkxJR0hUX0JZVEVTID0gNjQgKiAxMDI0ICogMTAyNDtcbi8vIEEgc2luZ2xlIHJlYWQgcmVxdWVzdCBmZXRjaGVzIGF0IG1vc3QgdGhpcyBtdWNoOyBsYXJnZSByZWFkcyBhcmUgc3BsaXQgaW50byB0aGlzIG1hbnkgY29uY3VycmVudCByZXF1ZXN0cyAoYm91bmRlZCBieSBNQVhfSU5GTElHSFRfQllURVMpLlxuY29uc3QgREVGQVVMVF9NQVhfRkVUQ0hfQllURVMgPSA0ICogMTAyNCAqIDEwMjQ7XG5jb25zdCBTVEFUU19MT0dfSU5URVJWQUxfTVMgPSAxMCAqIDEwMDA7XG5jb25zdCBSRUNWX1dJTkRPV19NUyA9IDYwICogMTAwMDtcblxuZnVuY3Rpb24gZm10Qnl0ZXMobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAobiA8IDEwMjQpIHJldHVybiBuICsgXCJCXCI7XG4gICAgaWYgKG4gPCAxMDI0ICogMTAyNCkgcmV0dXJuIChuIC8gMTAyNCkudG9GaXhlZCgxKSArIFwiS0JcIjtcbiAgICBpZiAobiA8IDEwMjQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIChuIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIk1CXCI7XG4gICAgcmV0dXJuIChuIC8gMTAyNCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDIpICsgXCJHQlwiO1xufVxuXG4vLyBNaW5pbWFsIFdlYlNvY2tldCBzdXJmYWNlIGNvbW1vbiB0byB0aGUgYnJvd3NlcidzIFdlYlNvY2tldCBhbmQgdGhlIGB3c2AgcGFja2FnZS5cbnR5cGUgV1NMaWtlID0ge1xuICAgIHJlYWR5U3RhdGU6IG51bWJlcjtcbiAgICBiaW5hcnlUeXBlOiBzdHJpbmc7XG4gICAgc2VuZChkYXRhOiBVaW50OEFycmF5KTogdm9pZDtcbiAgICBjbG9zZSgpOiB2b2lkO1xuICAgIG9ub3BlbjogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgICBvbm1lc3NhZ2U6ICgoZXY6IHsgZGF0YTogQXJyYXlCdWZmZXIgfCBCdWZmZXIgfSkgPT4gdm9pZCkgfCBudWxsO1xuICAgIG9uY2xvc2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG4gICAgb25lcnJvcjogKChlOiB1bmtub3duKSA9PiB2b2lkKSB8IG51bGw7XG59O1xuZnVuY3Rpb24gbWFrZVdlYlNvY2tldCh1cmw6IHN0cmluZyk6IFdTTGlrZSB7XG4gICAgaWYgKGlzTm9kZSgpKSB7XG4gICAgICAgIC8vIGB3c2AgaXMgYSBOb2RlIGRlcDsgdGhlIGV2YWwgaGlkZXMgaXQgZnJvbSB0aGUgYnJvd3NlciBidW5kbGVyICh0aGlzIGJyYW5jaCBuZXZlciBydW5zIHRoZXJlKS5cbiAgICAgICAgY29uc3QgV1MgPSAoZXZhbChcInJlcXVpcmVcIikgYXMgTm9kZVJlcXVpcmUpKFwid3NcIik7XG4gICAgICAgIHJldHVybiBuZXcgV1ModXJsLCB7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSkgYXMgV1NMaWtlOyAvLyBzZWxmLXNpZ25lZCBjZXJ0XG4gICAgfVxuICAgIHJldHVybiBuZXcgV2ViU29ja2V0KHVybCkgYXMgdW5rbm93biBhcyBXU0xpa2U7XG59XG5cbi8vIEJpbmFyeSBmcmFtZTogW3UzMiBoZWFkZXJMZW4gTEVdW2hlYWRlciBKU09OXVtib2R5IGJ5dGVzXS5cbmZ1bmN0aW9uIGVuY29kZUZyYW1lKGhlYWRlcjogb2JqZWN0LCBib2R5PzogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBoID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoaGVhZGVyKSwgXCJ1dGY4XCIpO1xuICAgIGNvbnN0IGxlbiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBsZW4ud3JpdGVVSW50MzJMRShoLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2xlbiwgaCwgYm9keSB8fCBFTVBUWV0pO1xufVxuZnVuY3Rpb24gZGVjb2RlRnJhbWUoYnVmOiBCdWZmZXIpOiB7IGhlYWRlcjogYW55OyBib2R5OiBCdWZmZXIgfSB7XG4gICAgY29uc3QgaGVhZGVyTGVuID0gYnVmLnJlYWRVSW50MzJMRSgwKTtcbiAgICBjb25zdCBoZWFkZXIgPSBKU09OLnBhcnNlKGJ1Zi5zdWJhcnJheSg0LCA0ICsgaGVhZGVyTGVuKS50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgIHJldHVybiB7IGhlYWRlciwgYm9keTogYnVmLnN1YmFycmF5KDQgKyBoZWFkZXJMZW4pIH07XG59XG5cbnR5cGUgUXVldWVkUmVxdWVzdCA9IHsgaWQ6IG51bWJlcjsgZnJhbWU6IEJ1ZmZlcjsgYnl0ZXM6IG51bWJlcjsgcmVzb2x2ZTogKHI6IHsgc3RhdHVzOiBudW1iZXI7IGJvZHk6IEJ1ZmZlciB9KSA9PiB2b2lkOyByZWplY3Q6IChlOiBFcnJvcikgPT4gdm9pZCB9O1xuXG4vLyBPbmUgV2ViU29ja2V0IHRvIGEgcmVtb3RlIHNlcnZlciwgbXVsdGlwbGV4aW5nIGFsbCBvcHMgb3ZlciBpdC4gUmVxdWVzdHMgYXJlIHF1ZXVlZCBhbmQgb25seSBzZW50IHdoaWxlIDwgTUFYX0lORkxJR0hUX0JZVEVTIGFyZSBvdXRzdGFuZGluZzsgZXZlcnkgMTBzICh3aGVuIHRoZXJlJ3MgdHJhZmZpYykgaXQgbG9ncyB0aGUgcXVldWUgZGVwdGggYW5kIHRocm91Z2hwdXQuXG5jbGFzcyBDb25uZWN0aW9uIHtcbiAgICBwcml2YXRlIGNhY2hlOiBSYW5nZUNhY2hlO1xuICAgIHByaXZhdGUgaW5mb0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHsgc3RhdDogU3RhdCB8IHVuZGVmaW5lZDsgYXQ6IG51bWJlciB9PigpO1xuXG4gICAgcHJpdmF0ZSB3czogV1NMaWtlIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgY29ubmVjdGluZzogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIG5leHRJZCA9IDE7XG4gICAgcHJpdmF0ZSBwZW5kaW5nID0gbmV3IE1hcDxudW1iZXIsIHsgcmVzb2x2ZTogKHI6IHsgc3RhdHVzOiBudW1iZXI7IGJvZHk6IEJ1ZmZlciB9KSA9PiB2b2lkOyByZWplY3Q6IChlOiBFcnJvcikgPT4gdm9pZDsgYnl0ZXM6IG51bWJlciB9PigpO1xuICAgIHByaXZhdGUgcXVldWU6IFF1ZXVlZFJlcXVlc3RbXSA9IFtdO1xuICAgIHByaXZhdGUgaW5GbGlnaHRCeXRlcyA9IDA7XG5cbiAgICBwcml2YXRlIHJlY2VpdmVkVG90YWwgPSAwO1xuICAgIHByaXZhdGUgcmVjdldpbmRvdzogeyB0OiBudW1iZXI7IG46IG51bWJlciB9W10gPSBbXTtcbiAgICBwcml2YXRlIHdzVXJsOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBob3N0OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzdGF0c1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdXJsOiBzdHJpbmcsIHB1YmxpYyBwYXNzd29yZDogc3RyaW5nLCBwcml2YXRlIG9wdHM6IFJlbW90ZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmwucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgdGhpcy53c1VybCA9IHRoaXMudXJsLnJlcGxhY2UoL15odHRwLywgXCJ3c1wiKTsgLy8gaHR0cHPihpJ3c3MsIGh0dHDihpJ3c1xuICAgICAgICB0aGlzLmhvc3QgPSAoKCkgPT4geyB0cnkgeyByZXR1cm4gbmV3IFVSTCh0aGlzLnVybCkuaG9zdDsgfSBjYXRjaCB7IHJldHVybiB0aGlzLnVybDsgfSB9KSgpO1xuICAgICAgICB0aGlzLmNhY2hlID0gbmV3IFJhbmdlQ2FjaGUob3B0cy5jaHVua0J5dGVzIHx8IERFRkFVTFRfQ0hVTktfQllURVMsIG9wdHMuY2FjaGVCeXRlcyB8fCBERUZBVUxUX0NBQ0hFX0JZVEVTLCBvcHRzLm1heEZldGNoQnl0ZXMgfHwgREVGQVVMVF9NQVhfRkVUQ0hfQllURVMpO1xuICAgICAgICB0aGlzLnN0YXRzVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLmxvZ1N0YXRzKCksIFNUQVRTX0xPR19JTlRFUlZBTF9NUyk7XG4gICAgICAgICh0aGlzLnN0YXRzVGltZXIgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuc3RhdHNUaW1lcik7XG4gICAgICAgIHRyeSB7IHRoaXMud3M/LmNsb3NlKCk7IH0gY2F0Y2ggeyAvKiAqLyB9XG4gICAgICAgIHRoaXMud3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY29ubmVjdGluZyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvZ1N0YXRzKCkge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLnJlY3ZXaW5kb3cgPSB0aGlzLnJlY3ZXaW5kb3cuZmlsdGVyKGUgPT4gbm93IC0gZS50IDwgUkVDVl9XSU5ET1dfTVMpO1xuICAgICAgICBpZiAodGhpcy5pbkZsaWdodEJ5dGVzID09PSAwICYmIHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47IC8vIG9ubHkgd2hlbiB0aGVyZSdzIHRyYWZmaWNcbiAgICAgICAgY29uc3QgcmVjdjYwID0gdGhpcy5yZWN2V2luZG93LnJlZHVjZSgoYSwgZSkgPT4gYSArIGUubiwgMCk7XG4gICAgICAgIGNvbnN0IHF1ZXVlZEJ5dGVzID0gdGhpcy5xdWV1ZS5yZWR1Y2UoKGEsIHEpID0+IGEgKyBxLmJ5dGVzLCAwKTtcbiAgICAgICAgY29uc29sZS5sb2coYFtyZW1vdGUgJHt0aGlzLmhvc3R9XSBvdXRzdGFuZGluZyAke2ZtdEJ5dGVzKHRoaXMuaW5GbGlnaHRCeXRlcyl9ICgke3RoaXMucGVuZGluZy5zaXplfSByZXEpLCBxdWV1ZWQgJHtmbXRCeXRlcyhxdWV1ZWRCeXRlcyl9ICgke3RoaXMucXVldWUubGVuZ3RofSByZXEpLCByZWN2LzYwcyAke2ZtdEJ5dGVzKHJlY3Y2MCl9LCByZWN2IHRvdGFsICR7Zm10Qnl0ZXModGhpcy5yZWNlaXZlZFRvdGFsKX1gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuc3VyZUNvbm5lY3RlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMud3MgJiYgdGhpcy53cy5yZWFkeVN0YXRlID09PSAxKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3RpbmcpIHJldHVybiB0aGlzLmNvbm5lY3Rpbmc7XG4gICAgICAgIHRoaXMuY29ubmVjdGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGxldCBhdXRoZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHdzID0gbWFrZVdlYlNvY2tldCh0aGlzLndzVXJsKTtcbiAgICAgICAgICAgIHdzLmJpbmFyeVR5cGUgPSBcImFycmF5YnVmZmVyXCI7XG4gICAgICAgICAgICB0aGlzLndzID0gd3M7XG4gICAgICAgICAgICB3cy5vbm9wZW4gPSAoKSA9PiB3cy5zZW5kKGVuY29kZUZyYW1lKHsgaWQ6IDAsIG9wOiBcImF1dGhcIiwgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQgfSkpO1xuICAgICAgICAgICAgd3Mub25tZXNzYWdlID0gKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmlzQnVmZmVyKGV2LmRhdGEpID8gZXYuZGF0YSBhcyBCdWZmZXIgOiBCdWZmZXIuZnJvbShldi5kYXRhIGFzIEFycmF5QnVmZmVyKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhlYWRlciB9ID0gZGVjb2RlRnJhbWUoYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWF1dGhlZCAmJiBoZWFkZXIuaWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlci5zdGF0dXMgPT09IDIwMCkgeyBhdXRoZWQgPSB0cnVlOyByZXNvbHZlKCk7IH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7IHJlamVjdChuZXcgRXJyb3IoXCJyZW1vdGU6IGF1dGhlbnRpY2F0aW9uIGZhaWxlZFwiKSk7IHRyeSB7IHdzLmNsb3NlKCk7IH0gY2F0Y2ggeyAvKiAqLyB9IH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9uTWVzc2FnZShidWYpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdzLm9uZXJyb3IgPSAoKSA9PiB7IGlmICghYXV0aGVkKSByZWplY3QobmV3IEVycm9yKFwicmVtb3RlOiB3ZWJzb2NrZXQgY29ubmVjdGlvbiBlcnJvclwiKSk7IH07XG4gICAgICAgICAgICB3cy5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghYXV0aGVkKSByZWplY3QobmV3IEVycm9yKFwicmVtb3RlOiBjb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgYXV0aGVudGljYXRpbmdcIikpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIExldCBhIGZhaWxlZCBjb25uZWN0aW9uIGJlIHJldHJpZWQgbmV4dCB0aW1lLlxuICAgICAgICB0aGlzLmNvbm5lY3RpbmcuY2F0Y2goKCkgPT4geyB0aGlzLndzID0gdW5kZWZpbmVkOyB0aGlzLmNvbm5lY3RpbmcgPSB1bmRlZmluZWQ7IH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW5nO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NZXNzYWdlKGJ1ZjogQnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHsgaGVhZGVyLCBib2R5IH0gPSBkZWNvZGVGcmFtZShidWYpO1xuICAgICAgICBjb25zdCBwID0gdGhpcy5wZW5kaW5nLmdldChoZWFkZXIuaWQpO1xuICAgICAgICBpZiAoIXApIHJldHVybjtcbiAgICAgICAgdGhpcy5wZW5kaW5nLmRlbGV0ZShoZWFkZXIuaWQpO1xuICAgICAgICB0aGlzLmluRmxpZ2h0Qnl0ZXMgLT0gcC5ieXRlcztcbiAgICAgICAgdGhpcy5yZWNlaXZlZFRvdGFsICs9IGJvZHkubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRzLnN0YXRzKSB0aGlzLm9wdHMuc3RhdHMuYnl0ZXNGZXRjaGVkICs9IGJvZHkubGVuZ3RoO1xuICAgICAgICB0aGlzLnJlY3ZXaW5kb3cucHVzaCh7IHQ6IERhdGUubm93KCksIG46IGJvZHkubGVuZ3RoIH0pO1xuICAgICAgICBwLnJlc29sdmUoeyBzdGF0dXM6IGhlYWRlci5zdGF0dXMsIGJvZHkgfSk7XG4gICAgICAgIHRoaXMuZHJhaW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZURpc2Nvbm5lY3QoKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihcInJlbW90ZTogd2Vic29ja2V0IGRpc2Nvbm5lY3RlZFwiKTtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHRoaXMucGVuZGluZy52YWx1ZXMoKSkgcC5yZWplY3QoZXJyKTtcbiAgICAgICAgZm9yIChjb25zdCBxIG9mIHRoaXMucXVldWUpIHEucmVqZWN0KGVycik7XG4gICAgICAgIHRoaXMucGVuZGluZy5jbGVhcigpO1xuICAgICAgICB0aGlzLnF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuaW5GbGlnaHRCeXRlcyA9IDA7XG4gICAgICAgIHRoaXMud3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY29ubmVjdGluZyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRyYWluKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5xdWV1ZS5sZW5ndGggJiYgdGhpcy53cyAmJiB0aGlzLndzLnJlYWR5U3RhdGUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLnF1ZXVlWzBdO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5GbGlnaHRCeXRlcyA+IDAgJiYgdGhpcy5pbkZsaWdodEJ5dGVzICsgbmV4dC5ieXRlcyA+IE1BWF9JTkZMSUdIVF9CWVRFUykgYnJlYWs7IC8vIGhvbGQgdGhlIHF1ZXVlXG4gICAgICAgICAgICB0aGlzLnF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgICAgICB0aGlzLmluRmxpZ2h0Qnl0ZXMgKz0gbmV4dC5ieXRlcztcbiAgICAgICAgICAgIHRoaXMucGVuZGluZy5zZXQobmV4dC5pZCwgeyByZXNvbHZlOiBuZXh0LnJlc29sdmUsIHJlamVjdDogbmV4dC5yZWplY3QsIGJ5dGVzOiBuZXh0LmJ5dGVzIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5zdGF0cykgdGhpcy5vcHRzLnN0YXRzLnJlcXVlc3RDb3VudCsrO1xuICAgICAgICAgICAgdGhpcy53cy5zZW5kKG5leHQuZnJhbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VuZHMgb25lIHJlcXVlc3Qgb3ZlciB0aGUgV2ViU29ja2V0IChxdWV1ZWQgKyB0aHJvdHRsZWQpLiBgYnl0ZXNgIGlzIHRoZSBleHBlY3RlZCBwYXlsb2FkIHNpemUsIHVzZWQgZm9yIHRoZSBpbi1mbGlnaHQgY2FwLlxuICAgIHByaXZhdGUgYXN5bmMgcmVxdWVzdChvcDogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBib2R5OiBCdWZmZXIgfCB1bmRlZmluZWQsIGJ5dGVzOiBudW1iZXIpOiBQcm9taXNlPHsgc3RhdHVzOiBudW1iZXI7IGJvZHk6IEJ1ZmZlciB9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdHMubGF0ZW5jeU1zKSBhd2FpdCBzbGVlcCh0aGlzLm9wdHMubGF0ZW5jeU1zKTtcbiAgICAgICAgYXdhaXQgdGhpcy5lbnN1cmVDb25uZWN0ZWQoKTtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLm5leHRJZCsrO1xuICAgICAgICBjb25zdCBmcmFtZSA9IGVuY29kZUZyYW1lKHsgaWQsIG9wLCAuLi5wYXJhbXMgfSwgYm9keSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnF1ZXVlLnB1c2goeyBpZCwgZnJhbWUsIGJ5dGVzOiBNYXRoLm1heChieXRlcywgYm9keSA/IGJvZHkubGVuZ3RoIDogMCwgMSksIHJlc29sdmUsIHJlamVjdCB9KTtcbiAgICAgICAgICAgIHRoaXMuZHJhaW4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RhdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFN0YXQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgY2FjaGVkID0gdGhpcy5pbmZvQ2FjaGUuZ2V0KHBhdGgpO1xuICAgICAgICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBJTkZPX1RUTF9NUykgcmV0dXJuIGNhY2hlZC5zdGF0O1xuICAgICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwiaW5mb1wiLCB7IHBhdGggfSwgdW5kZWZpbmVkLCAyNTYpO1xuICAgICAgICBsZXQgc3RhdDogU3RhdCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHIuc3RhdHVzID09PSA0MDQpIHN0YXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGVsc2UgaWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihgcmVtb3RlIGluZm8gZmFpbGVkICgke3Iuc3RhdHVzfSlgKTtcbiAgICAgICAgZWxzZSBzdGF0ID0gSlNPTi5wYXJzZShyLmJvZHkudG9TdHJpbmcoXCJ1dGY4XCIpKSBhcyBTdGF0O1xuICAgICAgICB0aGlzLmluZm9DYWNoZS5zZXQocGF0aCwgeyBzdGF0LCBhdDogRGF0ZS5ub3coKSB9KTtcbiAgICAgICAgcmV0dXJuIHN0YXQ7XG4gICAgfVxuICAgIGFzeW5jIGxpc3QocGF0aDogc3RyaW5nKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZGlyOiBib29sZWFuIH1bXT4ge1xuICAgICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwibGlzdFwiLCB7IHBhdGggfSwgdW5kZWZpbmVkLCA0MDk2KTtcbiAgICAgICAgaWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihgcmVtb3RlIGxpc3QgZmFpbGVkICgke3Iuc3RhdHVzfSlgKTtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2Uoci5ib2R5LnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgfVxuICAgIGFzeW5jIHJlYWQocGF0aDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5jYWNoZS5yZWFkKHRoaXMsIHBhdGgsIHN0YXJ0LCBlbmQpKSA/PyBFTVBUWTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZFNlcnZlcihwYXRoOiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgciA9IGF3YWl0IHRoaXMucmVxdWVzdChcInJlYWRcIiwgeyBwYXRoLCBzdGFydCwgZW5kIH0sIHVuZGVmaW5lZCwgZW5kIC0gc3RhcnQpO1xuICAgICAgICBpZiAoci5zdGF0dXMgPT09IDQwNCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihgcmVtb3RlIHJlYWQgZmFpbGVkICgke3Iuc3RhdHVzfSlgKTtcbiAgICAgICAgcmV0dXJuIHIuYm9keTtcbiAgICB9XG4gICAgYXN5bmMgYXBwZW5kKHBhdGg6IHN0cmluZywgYm9keTogQnVmZmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHIgPSBhd2FpdCB0aGlzLnJlcXVlc3QoXCJhcHBlbmRcIiwgeyBwYXRoIH0sIGJvZHksIGJvZHkubGVuZ3RoKTtcbiAgICAgICAgaWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihgcmVtb3RlIGFwcGVuZCBmYWlsZWQgKCR7ci5zdGF0dXN9KWApO1xuICAgICAgICB0aGlzLmluZm9DYWNoZS5kZWxldGUocGF0aCk7IC8vIGFwcGVuZC1vbmx5IGtlZXBzIGV4aXN0aW5nIGJ5dGVzOyBvbmx5IHRoZSBzaXplIGNoYW5nZWRcbiAgICB9XG4gICAgYXN5bmMgc2V0KHBhdGg6IHN0cmluZywgYm9keTogQnVmZmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHIgPSBhd2FpdCB0aGlzLnJlcXVlc3QoXCJzZXRcIiwgeyBwYXRoIH0sIGJvZHksIGJvZHkubGVuZ3RoKTtcbiAgICAgICAgaWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihgcmVtb3RlIHNldCBmYWlsZWQgKCR7ci5zdGF0dXN9KWApO1xuICAgICAgICB0aGlzLmNhY2hlLmludmFsaWRhdGUocGF0aCk7XG4gICAgICAgIHRoaXMuaW5mb0NhY2hlLmRlbGV0ZShwYXRoKTtcbiAgICB9XG4gICAgYXN5bmMgcmVtb3ZlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFwicmVtb3ZlXCIsIHsgcGF0aCB9LCB1bmRlZmluZWQsIDI1Nik7XG4gICAgICAgIGlmIChyLnN0YXR1cyAhPT0gMjAwKSB0aHJvdyBuZXcgRXJyb3IoYHJlbW90ZSByZW1vdmUgZmFpbGVkICgke3Iuc3RhdHVzfSlgKTtcbiAgICAgICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlKHBhdGgpO1xuICAgICAgICB0aGlzLmluZm9DYWNoZS5kZWxldGUocGF0aCk7XG4gICAgfVxufVxuXG4vLyBDYWNoZXMgdGhlIGxvbmdlc3Qta25vd24gcHJlZml4IG9mIGVhY2ggYWxpZ25lZCBjaHVuayBwZXIgcGF0aC4gVmFsaWQgYmVjYXVzZSBmaWxlcyBhcmUgaW1tdXRhYmxlIG9yIGFwcGVuZC1vbmx5ICh0aGUgYnl0ZXMgYXQgYW4gb2Zmc2V0IG5ldmVyIGNoYW5nZSkuIEl0IG9ubHkgZG9lcyByYW5nZSByZWFkcyDigJQgaXQgZG9lc24ndCBjYXJlIHdoYXQgdGhlIGZpbGVzIGFyZS5cbmNsYXNzIFJhbmdlQ2FjaGUge1xuICAgIHByaXZhdGUgY2h1bmtzID0gbmV3IE1hcDxzdHJpbmcsIEJ1ZmZlcj4oKTsgLy8gcGF0aCArIFwiXHUwMDAxXCIgKyBjaHVua0luZGV4LCBpbnNlcnRpb24tb3JkZXJlZCAoTFJVKVxuICAgIHByaXZhdGUgYnl0ZXMgPSAwO1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2h1bmtCeXRlczogbnVtYmVyLCBwcml2YXRlIGJ1ZGdldDogbnVtYmVyLCBwcml2YXRlIG1heEZldGNoQnl0ZXM6IG51bWJlcikgeyB9XG4gICAgcHJpdmF0ZSBrZXkocGF0aDogc3RyaW5nLCBjOiBudW1iZXIpIHsgcmV0dXJuIHBhdGggKyBcIlx1MDAwMVwiICsgYzsgfVxuICAgIHByaXZhdGUgcGVlayhwYXRoOiBzdHJpbmcsIGM6IG51bWJlcik6IEJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmtleShwYXRoLCBjKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY2h1bmtzLmdldChrKTtcbiAgICAgICAgaWYgKHYpIHsgdGhpcy5jaHVua3MuZGVsZXRlKGspOyB0aGlzLmNodW5rcy5zZXQoaywgdik7IH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIHByaXZhdGUgc3RvcmUocGF0aDogc3RyaW5nLCBjOiBudW1iZXIsIGJ1ZjogQnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmtleShwYXRoLCBjKTtcbiAgICAgICAgY29uc3QgZXggPSB0aGlzLmNodW5rcy5nZXQoayk7XG4gICAgICAgIGlmIChleCAmJiBleC5sZW5ndGggPj0gYnVmLmxlbmd0aCkgeyB0aGlzLmNodW5rcy5kZWxldGUoayk7IHRoaXMuY2h1bmtzLnNldChrLCBleCk7IHJldHVybjsgfVxuICAgICAgICBpZiAoZXgpIHRoaXMuYnl0ZXMgLT0gZXgubGVuZ3RoO1xuICAgICAgICB0aGlzLmNodW5rcy5kZWxldGUoayk7XG4gICAgICAgIHRoaXMuY2h1bmtzLnNldChrLCBidWYpO1xuICAgICAgICB0aGlzLmJ5dGVzICs9IGJ1Zi5sZW5ndGg7XG4gICAgICAgIHdoaWxlICh0aGlzLmJ5dGVzID4gdGhpcy5idWRnZXQgJiYgdGhpcy5jaHVua3Muc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZGVzdCA9IHRoaXMuY2h1bmtzLmtleXMoKS5uZXh0KCkudmFsdWUgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdGhpcy5ieXRlcyAtPSAodGhpcy5jaHVua3MuZ2V0KG9sZGVzdCkgYXMgQnVmZmVyKS5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmNodW5rcy5kZWxldGUob2xkZXN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnZhbGlkYXRlKHBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBwYXRoICsgXCJcdTAwMDFcIjtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIFsuLi50aGlzLmNodW5rcy5rZXlzKCldKSBpZiAoay5zdGFydHNXaXRoKHByZWZpeCkpIHsgdGhpcy5ieXRlcyAtPSAodGhpcy5jaHVua3MuZ2V0KGspIGFzIEJ1ZmZlcikubGVuZ3RoOyB0aGlzLmNodW5rcy5kZWxldGUoayk7IH1cbiAgICB9XG4gICAgYXN5bmMgcmVhZChjb25uOiBDb25uZWN0aW9uLCBwYXRoOiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKGVuZCA8PSBzdGFydCkgcmV0dXJuIEVNUFRZO1xuICAgICAgICBjb25zdCBDSFVOSyA9IHRoaXMuY2h1bmtCeXRlcztcbiAgICAgICAgY29uc3QgbWF4UnVuQ2h1bmtzID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih0aGlzLm1heEZldGNoQnl0ZXMgLyBDSFVOSykpO1xuICAgICAgICBjb25zdCBmaXJzdENodW5rID0gTWF0aC5mbG9vcihzdGFydCAvIENIVU5LKTtcbiAgICAgICAgY29uc3QgbGFzdENodW5rID0gTWF0aC5mbG9vcigoZW5kIC0gMSkgLyBDSFVOSyk7XG4gICAgICAgIC8vIENvbGxlY3QgdGhlIGNodW5rcyB3ZSBkb24ndCBoYXZlIGRlZXBseSBlbm91Z2ggaW50byBib3VuZGVkIGNvbnRpZ3VvdXMgcnVucyAoZWFjaCA8PSBtYXhGZXRjaEJ5dGVzKS5cbiAgICAgICAgY29uc3QgcnVuczogeyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXIgfVtdID0gW107XG4gICAgICAgIGxldCBydW5Gcm9tID0gLTE7XG4gICAgICAgIGZvciAobGV0IGMgPSBmaXJzdENodW5rOyBjIDw9IGxhc3RDaHVuazsgYysrKSB7XG4gICAgICAgICAgICBjb25zdCBjU3RhcnQgPSBjICogQ0hVTks7XG4gICAgICAgICAgICBjb25zdCBuZWVkRW5kID0gTWF0aC5taW4oZW5kLCBjU3RhcnQgKyBDSFVOSykgLSBjU3RhcnQ7XG4gICAgICAgICAgICBjb25zdCBoYXZlID0gdGhpcy5wZWVrKHBhdGgsIGMpO1xuICAgICAgICAgICAgaWYgKCFoYXZlIHx8IGhhdmUubGVuZ3RoIDwgbmVlZEVuZCkge1xuICAgICAgICAgICAgICAgIGlmIChydW5Gcm9tIDwgMCkgcnVuRnJvbSA9IGM7XG4gICAgICAgICAgICAgICAgaWYgKGMgLSBydW5Gcm9tICsgMSA+PSBtYXhSdW5DaHVua3MpIHsgcnVucy5wdXNoKHsgZnJvbTogcnVuRnJvbSwgdG86IGMgfSk7IHJ1bkZyb20gPSAtMTsgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChydW5Gcm9tID49IDApIHtcbiAgICAgICAgICAgICAgICBydW5zLnB1c2goeyBmcm9tOiBydW5Gcm9tLCB0bzogYyAtIDEgfSk7XG4gICAgICAgICAgICAgICAgcnVuRnJvbSA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChydW5Gcm9tID49IDApIHJ1bnMucHVzaCh7IGZyb206IHJ1bkZyb20sIHRvOiBsYXN0Q2h1bmsgfSk7XG4gICAgICAgIC8vIEZldGNoIGFsbCBydW5zIGNvbmN1cnJlbnRseTsgdGhlIGNvbm5lY3Rpb24ncyBxdWV1ZSBjYXBzIHRvdGFsIGluLWZsaWdodCBieXRlcy5cbiAgICAgICAgbGV0IG1pc3NpbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJ1bnMubWFwKGFzeW5jIHJ1biA9PiB7XG4gICAgICAgICAgICBjb25zdCBieXRlcyA9IGF3YWl0IGNvbm4ucmVhZFNlcnZlcihwYXRoLCBydW4uZnJvbSAqIENIVU5LLCAocnVuLnRvICsgMSkgKiBDSFVOSyk7XG4gICAgICAgICAgICBpZiAoYnl0ZXMgPT09IHVuZGVmaW5lZCkgeyBtaXNzaW5nRmlsZSA9IHRydWU7IHJldHVybjsgfVxuICAgICAgICAgICAgZm9yIChsZXQgYyA9IHJ1bi5mcm9tOyBjIDw9IHJ1bi50bzsgYysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2ZmID0gKGMgLSBydW4uZnJvbSkgKiBDSFVOSztcbiAgICAgICAgICAgICAgICBpZiAob2ZmID49IGJ5dGVzLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZShwYXRoLCBjLCBieXRlcy5zdWJhcnJheShvZmYsIE1hdGgubWluKG9mZiArIENIVU5LLCBieXRlcy5sZW5ndGgpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgICAgaWYgKG1pc3NpbmdGaWxlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBwYXJ0czogQnVmZmVyW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgYyA9IGZpcnN0Q2h1bms7IGMgPD0gbGFzdENodW5rOyBjKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNTdGFydCA9IGMgKiBDSFVOSztcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBNYXRoLm1heChzdGFydCwgY1N0YXJ0KSAtIGNTdGFydDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gTWF0aC5taW4oZW5kLCBjU3RhcnQgKyBDSFVOSykgLSBjU3RhcnQ7XG4gICAgICAgICAgICBjb25zdCBjaHVuayA9IHRoaXMucGVlayhwYXRoLCBjKTtcbiAgICAgICAgICAgIGlmICghY2h1bmsgfHwgY2h1bmsubGVuZ3RoIDwgdG8pIHsgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCA+IGZyb20pIHBhcnRzLnB1c2goY2h1bmsuc3ViYXJyYXkoZnJvbSwgY2h1bmsubGVuZ3RoKSk7IGJyZWFrOyB9XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGNodW5rLnN1YmFycmF5KGZyb20sIHRvKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMSA/IHBhcnRzWzBdIDogQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG4gICAgfVxufVxuXG5jb25zdCBqb2luUGF0aCA9IChiYXNlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiAoYmFzZSA/IGJhc2UgKyBcIi9cIiArIGtleSA6IGtleSk7XG5jb25zdCBiYXNlTmFtZSA9IChwOiBzdHJpbmcpID0+IHAuc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKS5wb3AoKSB8fCBcIlwiO1xuXG5jbGFzcyBSZW1vdGVGaWxlV3JhcHBlciBpbXBsZW1lbnRzIEZpbGVXcmFwcGVyIHtcbiAgICAvLyBgc3RhdGAgaXMgc3VwcGxpZWQgd2hlbiB0aGUgcGFyZW50IGFscmVhZHkgc3RhdHRlZCB1cyAoYXZvaWRzIGEgc2Vjb25kIC9pbmZvKS4gYGNyZWF0ZUludGVudGAgbWVhbnMgdGhpcyB3YXMgb3BlbmVkIHdpdGggY3JlYXRlOnRydWUsIHNvIGEgbWlzc2luZyBmaWxlIHJlYWRzIGFzIGVtcHR5IChpdCdsbCBiZSBjcmVhdGVkIG9uIHdyaXRlKS5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm46IENvbm5lY3Rpb24sIHByaXZhdGUgZmlsZVBhdGg6IHN0cmluZywgcHJpdmF0ZSBzdGF0PzogU3RhdCwgcHJpdmF0ZSBjcmVhdGVJbnRlbnQgPSBmYWxzZSkgeyB9XG4gICAgLy8gTWlycm9yIHRoZSBuYXRpdmUgRmlsZVN5c3RlbUZpbGVIYW5kbGUgc2hhcGUgc28gY29kZSB3cml0dGVuIGFnYWluc3QgaXQgd29ya3MgdW5jaGFuZ2VkLlxuICAgIHJlYWRvbmx5IGtpbmQgPSBcImZpbGVcIiBhcyBjb25zdDtcbiAgICBnZXQgbmFtZSgpIHsgcmV0dXJuIGJhc2VOYW1lKHRoaXMuZmlsZVBhdGgpOyB9XG4gICAgYXN5bmMgZ2V0RmlsZSgpIHtcbiAgICAgICAgbGV0IHN0YXQgPSB0aGlzLnN0YXQgPz8gYXdhaXQgdGhpcy5jb25uLnN0YXQodGhpcy5maWxlUGF0aCk7XG4gICAgICAgIGlmICghc3RhdCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNyZWF0ZUludGVudCkgdGhyb3cgZW5vZW50KHRoaXMuZmlsZVBhdGgpO1xuICAgICAgICAgICAgc3RhdCA9IHsgc2l6ZTogMCwgbGFzdE1vZGlmaWVkOiBEYXRlLm5vdygpLCBkaXI6IGZhbHNlIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29ubiA9IHRoaXMuY29ubiwgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoLCBzaXplID0gc3RhdC5zaXplO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2l6ZSwgbGFzdE1vZGlmaWVkOiBzdGF0Lmxhc3RNb2RpZmllZCxcbiAgICAgICAgICAgIGFzeW5jIGFycmF5QnVmZmVyKCkgeyByZXR1cm4gdG9BcnJheUJ1ZmZlcihhd2FpdCBjb25uLnJlYWQoZmlsZVBhdGgsIDAsIHNpemUpKTsgfSxcbiAgICAgICAgICAgIHNsaWNlKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgYXN5bmMgYXJyYXlCdWZmZXIoKSB7IHJldHVybiB0b0FycmF5QnVmZmVyKGF3YWl0IGNvbm4ucmVhZChmaWxlUGF0aCwgc3RhcnQsIGVuZCkpOyB9IH07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBnZXRVUkwoKSB7XG4gICAgICAgIC8vIEhUVFBTIFVSTCBpbnRvIHRoZSBzZXJ2ZXIncyByYW5nZS1jYXBhYmxlIC9tZWRpYSBlbmRwb2ludC4gVGhlIHRva2VuIHJpZGVzIGluIHRoZSBxdWVyeSBiZWNhdXNlIGEgPHZpZGVvPi88aW1nPiBlbGVtZW50IGNhbid0IHNlbmQgYW4gQXV0aG9yaXphdGlvbiBoZWFkZXIuXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmNvbm4udXJsfS9tZWRpYT9wYXRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuZmlsZVBhdGgpfSZ0b2tlbj0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmNvbm4ucGFzc3dvcmQpfWA7XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZVdyaXRhYmxlKGNvbmZpZz86IHsga2VlcEV4aXN0aW5nRGF0YT86IGJvb2xlYW4gfSkge1xuICAgICAgICBjb25zdCBjb25uID0gdGhpcy5jb25uLCBmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgsIGFwcGVuZCA9ICEhY29uZmlnPy5rZWVwRXhpc3RpbmdEYXRhO1xuICAgICAgICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhc3luYyBzZWVrKCkgeyAvKiB0aGUgc2VydmVyIGFwcGVuZHMgdG8gdGhlIGVuZCAvIG92ZXJ3cml0ZXMgdGhlIHdob2xlIGZpbGU7IG9mZnNldCB1bnVzZWQgKi8gfSxcbiAgICAgICAgICAgIGFzeW5jIHdyaXRlKHZhbHVlOiBCdWZmZXIpIHsgY2h1bmtzLnB1c2godmFsdWUpOyB9LFxuICAgICAgICAgICAgYXN5bmMgY2xvc2UoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IGNodW5rcy5sZW5ndGggPT09IDEgPyBjaHVua3NbMF0gOiBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcGVuZCkgYXdhaXQgY29ubi5hcHBlbmQoZmlsZVBhdGgsIGJvZHkpOyBlbHNlIGF3YWl0IGNvbm4uc2V0KGZpbGVQYXRoLCBib2R5KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5jbGFzcyBSZW1vdGVEaXJlY3RvcnlXcmFwcGVyIGltcGxlbWVudHMgRGlyZWN0b3J5V3JhcHBlciB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uOiBDb25uZWN0aW9uLCBwcml2YXRlIGRpclBhdGg6IHN0cmluZykgeyB9XG4gICAgLy8gTWlycm9yIHRoZSBuYXRpdmUgRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSBzaGFwZSAobmFtZS9raW5kL2VudHJpZXMpIHNvIGNvZGUgd3JpdHRlbiBhZ2FpbnN0IHRoZSBuYXRpdmUgQVBJIOKAlCBlLmcuIHJlY3Vyc2l2ZSB3YWxrcyB1c2luZyBgaGFuZGxlLmVudHJpZXMoKWAg4oCUIHdvcmtzIHRoZSBzYW1lIG92ZXIgdGhlIG5ldHdvcmsuXG4gICAgcmVhZG9ubHkga2luZCA9IFwiZGlyZWN0b3J5XCIgYXMgY29uc3Q7XG4gICAgcmVhZG9ubHkgaXNSZW1vdGUgPSB0cnVlO1xuICAgIGdldCBuYW1lKCkgeyByZXR1cm4gYmFzZU5hbWUodGhpcy5kaXJQYXRoKTsgfVxuICAgIGdldCBmdWxsUGF0aCgpIHsgcmV0dXJuIHRoaXMuZGlyUGF0aDsgfVxuICAgIGFzeW5jIHJlbW92ZUVudHJ5KGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuY29ubi5yZW1vdmUoam9pblBhdGgodGhpcy5kaXJQYXRoLCBrZXkpKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0RmlsZUhhbmRsZShrZXk6IHN0cmluZywgb3B0aW9ucz86IHsgY3JlYXRlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxSZW1vdGVGaWxlV3JhcHBlcj4ge1xuICAgICAgICBjb25zdCBwID0gam9pblBhdGgodGhpcy5kaXJQYXRoLCBrZXkpO1xuICAgICAgICBpZiAob3B0aW9ucz8uY3JlYXRlKSByZXR1cm4gbmV3IFJlbW90ZUZpbGVXcmFwcGVyKHRoaXMuY29ubiwgcCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IHRoaXMuY29ubi5zdGF0KHApOyAgICAgICAgICAgICAgICAgLy8gbWF0Y2hlcyB0aGUgRmlsZSBBUEk6IHRocm93IGlmIG1pc3NpbmdcbiAgICAgICAgaWYgKCFzdGF0IHx8IHN0YXQuZGlyKSB0aHJvdyBlbm9lbnQocCk7XG4gICAgICAgIHJldHVybiBuZXcgUmVtb3RlRmlsZVdyYXBwZXIodGhpcy5jb25uLCBwLCBzdGF0LCBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldERpcmVjdG9yeUhhbmRsZShrZXk6IHN0cmluZywgb3B0aW9ucz86IHsgY3JlYXRlPzogYm9vbGVhbiB9KTogUHJvbWlzZTxSZW1vdGVEaXJlY3RvcnlXcmFwcGVyPiB7XG4gICAgICAgIGNvbnN0IHAgPSBqb2luUGF0aCh0aGlzLmRpclBhdGgsIGtleSk7XG4gICAgICAgIGlmICghb3B0aW9ucz8uY3JlYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ID0gYXdhaXQgdGhpcy5jb25uLnN0YXQocCk7XG4gICAgICAgICAgICBpZiAoIXN0YXQgfHwgIXN0YXQuZGlyKSB0aHJvdyBlbm9lbnQocCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSZW1vdGVEaXJlY3RvcnlXcmFwcGVyKHRoaXMuY29ubiwgcCk7ICAgICAgIC8vIGRpcnMgYXJlIGNyZWF0ZWQgbGF6aWx5IG9uIGZpcnN0IHdyaXRlXG4gICAgfVxuICAgIC8vIEVhY2ggZW50cnkgaXMgaXRzZWxmIGEgcmVhbCBoYW5kbGUgKGEgc3ViLXdyYXBwZXIpLCBzbyBhIHJlY3Vyc2l2ZSB3YWxrIG92ZXIgLmVudHJpZXMoKSBrZWVwcyB3b3JraW5nIGF0IGV2ZXJ5IGxldmVsIOKAlCBleGFjdGx5IGxpa2UgdGhlIG5hdGl2ZSBBUEkuXG4gICAgYXN5bmMgKltTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIFJlbW90ZUZpbGVXcmFwcGVyIHwgUmVtb3RlRGlyZWN0b3J5V3JhcHBlcl0+IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IHRoaXMuY29ubi5saXN0KHRoaXMuZGlyUGF0aCk7XG4gICAgICAgIGZvciAoY29uc3QgZSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBqb2luUGF0aCh0aGlzLmRpclBhdGgsIGUubmFtZSk7XG4gICAgICAgICAgICB5aWVsZCBbZS5uYW1lLCBlLmRpciA/IG5ldyBSZW1vdGVEaXJlY3RvcnlXcmFwcGVyKHRoaXMuY29ubiwgY2hpbGRQYXRoKSA6IG5ldyBSZW1vdGVGaWxlV3JhcHBlcih0aGlzLmNvbm4sIGNoaWxkUGF0aCldO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVudHJpZXMoKSB7IHJldHVybiB0aGlzW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpOyB9XG4gICAga2V5cygpIHsgcmV0dXJuIG1hcEFzeW5jKHRoaXNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCksIChbbmFtZV0pID0+IG5hbWUpOyB9XG4gICAgdmFsdWVzKCkgeyByZXR1cm4gbWFwQXN5bmModGhpc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKSwgKFssIGhhbmRsZV0pID0+IGhhbmRsZSk7IH1cbn1cblxuYXN5bmMgZnVuY3Rpb24qIG1hcEFzeW5jPFQsIFU+KGl0OiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8VD4sIGZuOiAodjogVCkgPT4gVSk6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxVPiB7XG4gICAgZm9yIGF3YWl0IChjb25zdCB2IG9mIGl0KSB5aWVsZCBmbih2KTtcbn1cblxuLy8gQSBEaXJlY3RvcnlXcmFwcGVyIHJvb3RlZCBhdCBhIHJlbW90ZSBzZXJ2ZXIuIERyb3AtaW4gZm9yIHRoZSBOb2RlIC8gRmlsZS1BUEkgaGFuZGxlcy5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGVEaXJlY3RvcnlIYW5kbGUodXJsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIG9wdGlvbnM6IFJlbW90ZU9wdGlvbnMgPSB7fSk6IERpcmVjdG9yeVdyYXBwZXIge1xuICAgIHJldHVybiBuZXcgUmVtb3RlRGlyZWN0b3J5V3JhcHBlcihuZXcgQ29ubmVjdGlvbih1cmwsIHBhc3N3b3JkLCBvcHRpb25zKSwgXCJcIik7XG59XG5cbmV4cG9ydCB0eXBlIFJlbW90ZUNvbm5lY3RSZXN1bHQgPSB7IHN0YXR1czogXCJva1wiIH0gfCB7IHN0YXR1czogXCJ1bmF1dGhvcml6ZWRcIiB9IHwgeyBzdGF0dXM6IFwidW5yZWFjaGFibGVcIjsgZXJyb3I6IHN0cmluZyB9O1xuXG4vLyBWZXJpZmllcyBhIHNlcnZlciBpcyByZWFjaGFibGUgYW5kIHRoZSBwYXNzd29yZCB3b3JrcyDigJQgYnkgb3BlbmluZyB0aGUgV2ViU29ja2V0LCBhdXRoZW50aWNhdGluZywgYW5kIGxpc3RpbmcgdGhlIHJvb3QuIERpc3Rpbmd1aXNoZXMgXCJjb25uZWN0ZWRcIiAvIFwid3JvbmcgcGFzc3dvcmRcIiAvIFwiY291bGRuJ3QgcmVhY2ggaXRcIiAodGhlIGxhc3QgdXN1YWxseSBtZWFuaW5nIHRoZSBzZWxmLXNpZ25lZCBjZXJ0IGlzbid0IHRydXN0ZWQgeWV0IGluIHRoZSBicm93c2VyLCBzaW5jZSB0aGUgc29ja2V0IGp1c3QgZmFpbHMgdG8gb3BlbikuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdFJlbW90ZUNvbm5lY3Rpb24odXJsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIG9wdGlvbnM6IFJlbW90ZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8UmVtb3RlQ29ubmVjdFJlc3VsdD4ge1xuICAgIGNvbnN0IGNvbm4gPSBuZXcgQ29ubmVjdGlvbih1cmwsIHBhc3N3b3JkLCBvcHRpb25zKTtcbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBjb25uLmxpc3QoXCJcIik7XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogXCJva1wiIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBtc2cgPSAoZSBhcyBFcnJvcik/Lm1lc3NhZ2UgfHwgU3RyaW5nKGUpO1xuICAgICAgICBpZiAoL2F1dGgvaS50ZXN0KG1zZykpIHJldHVybiB7IHN0YXR1czogXCJ1bmF1dGhvcml6ZWRcIiB9O1xuICAgICAgICByZXR1cm4geyBzdGF0dXM6IFwidW5yZWFjaGFibGVcIiwgZXJyb3I6IG1zZyB9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICB9XG59XG4iXX0=
476
- /* _JS_SOURCE_HASH = "928bc9c9842fe71d205c14314f3ad0e30712700833966acbd8322943777d1798"; */
476
+ /* _JS_SOURCE_HASH = "30d6e874dda40bc0d9b884b1f7af85740d795b782a5901a2cfa405529d16b602"; */
@@ -49,6 +49,15 @@ export declare class ArchivesChain implements IArchives {
49
49
  ip: string;
50
50
  } | undefined>;
51
51
  get(fileName: string, config?: GetConfig): Promise<Buffer | undefined>;
52
+ /** get, but trying sources in latency order (fastest first) instead of config order. While this is much faster, it might miss immediate writes: the write node is no longer tried first, so a lagging replica may answer with a slightly older value. Exclusive with noFallbacks (which only considers one source - the write node - so there is no order to speed up); passing both throws. */
53
+ getFast(fileName: string, config?: GetConfig): Promise<Buffer | undefined>;
54
+ /** See getFast. */
55
+ getFast2(fileName: string, config?: GetConfig): Promise<{
56
+ data: Buffer;
57
+ writeTime: number;
58
+ size: number;
59
+ url: string;
60
+ } | undefined>;
52
61
  get2(fileName: string, config?: GetConfig): Promise<{
53
62
  data: Buffer;
54
63
  writeTime: number;
@@ -91,6 +100,9 @@ export declare class ArchivesChain implements IArchives {
91
100
  getURLs(path: string): Promise<string[]>;
92
101
  /** getURLs, but after the one await (initialization) the returned function is synchronous: everything underneath - route hashing, window checks, latencies, URL building - is synchronous, and the closure always reads the newest adopted config, so it stays correct across config refreshes. */
93
102
  getGetURLs(): Promise<(path: string) => string[]>;
103
+ /** getGetURLs, but sorted purely by latency - the write node gets no special first position. For read-only consumers that just want the fastest host. */
104
+ getGetFastURLs(): Promise<(path: string) => string[]>;
105
+ private makeGetURLs;
94
106
  dispose(): void;
95
107
  }
96
108
  export declare function createArchives(config: RemoteConfig | RemoteConfigBase, options?: ArchivesChainOptions): ArchivesChain;