sliftutils 1.7.120 → 1.7.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/treeSummary.ts.cache +2 -2
- package/misc/dist/environment.ts.cache +2 -2
- package/misc/dist/getSecret.ts.cache +2 -2
- package/misc/dist/strings.ts.cache +2 -2
- package/misc/dist/zip.ts.cache +2 -2
- package/misc/https/dist/certs.ts.cache +2 -2
- package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
- package/package.json +1 -1
- package/render-utils/dist/observer.tsx.cache +2 -2
- package/storage/archiveHelpers.ts +19 -7
- package/storage/dist/ArchivesDisk.ts.cache +2 -2
- package/storage/dist/FileFolderAPI.tsx.cache +2 -2
- package/storage/dist/IArchives.ts.cache +2 -2
- package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
- package/storage/dist/JSONStorage.ts.cache +2 -2
- package/storage/dist/PendingManager.tsx.cache +2 -2
- package/storage/dist/StreamingLogs.ts.cache +2 -2
- package/storage/dist/TransactionFile.ts.cache +2 -2
- package/storage/dist/TransactionStorage.ts.cache +2 -2
- package/storage/dist/archiveHelpers.ts.cache +24 -9
- package/storage/dist/backblaze.ts.cache +2 -2
- package/storage/dist/fileSystemPointer.ts.cache +2 -2
- package/storage/dist/remoteFileStorage.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
- package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
- package/storage/remoteStorage/dist/accessStats.ts.cache +2 -2
- package/storage/remoteStorage/dist/blobStore.ts.cache +2 -2
- package/storage/remoteStorage/dist/bucketDisk.ts.cache +2 -2
- package/storage/remoteStorage/dist/certTrustModal.tsx.cache +2 -2
- package/storage/remoteStorage/dist/chainStartup.ts.cache +2 -2
- package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
- package/storage/remoteStorage/dist/createArchives.ts.cache +2 -2
- package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateManagement.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/sourceWrapper.ts.cache +2 -2
- package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageLogs.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageServerState.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeConfig.ts.cache +2 -2
- package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeSources.ts.cache +2 -2
- package/storage/remoteStorage/dist/storeSync.ts.cache +2 -2
- package/storage/remoteStorage/dist/validation.ts.cache +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.TreeSummary = void 0;
|
|
4
4
|
const misc_1 = require("socket-function/src/misc");
|
|
@@ -356,4 +356,4 @@ class TreeSummary {
|
|
|
356
356
|
}
|
|
357
357
|
exports.TreeSummary = TreeSummary;
|
|
358
358
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZVN1bW1hcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0cmVlU3VtbWFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBZ0Q7QUFFaEQsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDakMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FBRyxJQUFLLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxLQUFNLENBQUM7QUFDakMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUF3Q25DLE1BQWEsV0FBVztJQUtwQixZQUFvQixNQVFuQjtRQVJtQixXQUFNLEdBQU4sTUFBTSxDQVF6QjtRQVhPLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFZbEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1FBQ2hGLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsd0JBQXdCLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFFTSxHQUFHLENBQUMsS0FBUTtRQUNmLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFP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QUFJLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ3JDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2IsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7Z0JBQ3RDLENBQUM7Z0JBQ0QsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdEIsT0FBTztZQUNYLENBQUM7WUFDRCxLQUFLLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDLENBQUM7UUFDRixhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FDSjtBQXBXRCxrQ0FvV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3J0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuXG5jb25zdCBERUZBVUxUX09VVFBVVF9DT1VOVCA9IDEwMDtcbmNvbnN0IFRSQUNLRURfTk9ERVNfUEVSX09VVFBVVCA9IDEwMDtcbmNvbnN0IE1JTl9UUkFDS0VEX05PREVTID0gMV8wMDA7XG5jb25zdCBNQVhfVFJBQ0tFRF9OT0RFUyA9IDEwXzAwMDtcbmNvbnN0IFBSVU5FX1RBUkdFVF9ESVZJU09SID0gMjtcbmNvbnN0IFBSVU5FX1NFQVJDSF9JVEVSQVRJT05TID0gMjA7XG5cbnR5cGUgVHJlZU5vZGU8Uz4gPSB7XG4gICAgLy8gVGhlIHBhdGggZnJhZ21lbnQgdGhpcyBub2RlIGNvdmVycywgaS5lLiB0aGUgZWRnZSBmcm9tIGl0cyBwYXJlbnQuIENoaWxkcmVuIGFyZSBrZXllZCBieSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZWlyIGxhYmVsLlxuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY2hpbGRyZW46IE1hcDxzdHJpbmcsIFRyZWVOb2RlPFM+PjtcbiAgICAvLyBBZ2dyZWdhdGUgb2YgZXZlcnkgdmFsdWUgd2hvc2UgcGF0aCBwYXNzZXMgdGhyb3VnaCAob3IgZW5kcyBhdCkgdGhpcyBub2RlLlxuICAgIHN1bW1hcnk6IFM7XG4gICAgLy8gQWdncmVnYXRlIG9mIG9ubHkgdGhlIHZhbHVlcyB3aG9zZSBwYXRoIGVuZHMgZXhhY3RseSBhdCB0aGlzIG5vZGUuXG4gICAgc2VsZlN1bW1hcnk/OiBTO1xuICAgIC8vIEFnZ3JlZ2F0ZSBvZiB2YWx1ZXMgdGhhdCB3ZXJlIGJlbG93IHRoaXMgbm9kZSBiZWZvcmUgcHJ1bmluZyBjb2xsYXBzZWQgdGhlaXIgYnJhbmNoZXMuIFRoZWlyIHBhdGggZGV0YWlsIGlzIGdvbmUsIGJ1dCB0aGVpciBkYXRhIGlzIHByZXNlcnZlZC5cbiAgICB0cnVuY2F0ZWRTdW1tYXJ5PzogUztcbn07XG5cbmV4cG9ydCB0eXBlIFN1bW1hcnlFbnRyeTxTPiA9IHtcbiAgICAvLyBFbmRzIHdpdGggXCIqXCIgdW5sZXNzIHRoZSBlbnRyeSBpcyBhIHNpbmdsZSBleGFjdCBwYXRoIHRoYXQgd2FzIGhlYXZ5IGVub3VnaCB0byBzdGFuZCBvbiBpdHMgb3duLlxuICAgIHBhdGg6IHN0cmluZztcbiAgICAvLyBcInNlbGZcIiA9IHZhbHVlcyB3aG9zZSBwYXRoIGlzIGV4YWN0bHkgcGF0aC4gXCJzdWJ0cmVlXCIgPSBldmVyeSB2YWx1ZSB3aG9zZSBwYXRoIHN0YXJ0cyB3aXRoIHBhdGguIFwiZ3JvdXBcIiA9IHZhbHVlcyB1bmRlciBwYXRoIGtlcHQgY29tYmluZWQgKGxpZ2h0IHNpYmxpbmcgYnJhbmNoZXMsIGNoYWluIGxlZnRvdmVycywgb3IgYm90aCkgYmVjYXVzZSBub25lIHdhcyBoZWF2eSBlbm91Z2ggdG8gZGVzZXJ2ZSBpdHMgb3duIGVudHJ5LiBcInRydW5jYXRlZFwiID0gdmFsdWVzIHVuZGVyIHBhdGggd2hvc2UgZGV0YWlsIHdhcyBwcnVuZWQgYXdheS5cbiAgICBraW5kOiBcInNlbGZcIiB8IFwic3VidHJlZVwiIHwgXCJncm91cFwiIHwgXCJ0cnVuY2F0ZWRcIjtcbiAgICBzdW1tYXJ5OiBTO1xuICAgIHdlaWdodDogbnVtYmVyO1xufTtcblxudHlwZSBQZW5kaW5nRW50cnk8Uz4gPSB7XG4gICAga2luZDogXCJzZWxmXCIgfCBcInN1YnRyZWVcIiB8IFwiZ3JvdXBcIiB8IFwidHJ1bmNhdGVkXCI7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIG5vZGU/OiBUcmVlTm9kZTxTPjtcbiAgICAvLyBXaGVyZSBub2RlIGFjdHVhbGx5IHNpdHMgd2hlbiBwYXRoIGNvbXByZXNzaW9uIGRlc2NlbmRlZCBhIHNpbmdsZS1jaGlsZCBjaGFpbiBwYXN0IGNhcnJpZWQgcmVzaWR1ZXM7IGVxdWFscyBwYXRoIHdoZW4gbm8gcmVzaWR1ZXMgd2VyZSBjYXJyaWVkLlxuICAgIG5vZGVQYXRoPzogc3RyaW5nO1xuICAgIG1lbWJlcnM/OiBNYXA8c3RyaW5nLCBUcmVlTm9kZTxTPj47XG4gICAgLy8gU2VsZi90cnVuY2F0ZWQgc3VtbWFyaWVzIHRoYXQgc2l0IGJldHdlZW4gcGF0aCBhbmQgbm9kZSAoZm9yIFwic3VidHJlZVwiKSwgb3IgdGhlIGxvb3NlIHN1bW1hcmllcyBvZiBhIGNvbWJpbmVkIGVudHJ5IChmb3IgXCJncm91cFwiL1widHJ1bmNhdGVkXCIpLlxuICAgIGV4dHJhcz86IFNbXTtcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn07XG5cbnR5cGUgTm9kZVN0YXRzID0ge1xuICAgIHNpemU6IG51bWJlcjtcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBUcmVlU3VtbWFyeTxULCBTPiB7XG4gICAgcHJpdmF0ZSByb290OiBUcmVlTm9kZTxTPjtcbiAgICBwcml2YXRlIG5vZGVDb3VudCA9IDE7XG4gICAgcHJpdmF0ZSBtYXhUcmFja2VkTm9kZXM6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiB7XG4gICAgICAgIGdldFBhdGg6ICh2YWx1ZTogVCkgPT4gc3RyaW5nO1xuICAgICAgICBjcmVhdGVTdW1tYXJ5OiAoKSA9PiBTO1xuICAgICAgICBhZGRUb1N1bW1hcnk6ICh2YWx1ZTogVCwgc3VtbWFyeTogUykgPT4gdm9pZDtcbiAgICAgICAgbWVyZ2VTdW1tYXJpZXM6ICh0YXJnZXQ6IFMsIHNvdXJjZTogUykgPT4gdm9pZDtcbiAgICAgICAgZ2V0V2VpZ2h0OiAoc3VtbWFyeTogUykgPT4gbnVtYmVyO1xuICAgICAgICAvLyBTaXplcyB0aGUgaW50ZXJuYWwgdHJlZSwgd2hpY2gga2VlcHMgcm91Z2hseSBUUkFDS0VEX05PREVTX1BFUl9PVVRQVVQgdGltZXMgdGhpcyBtYW55IG5vZGVzIHNvIG91dHB1dCBncmFudWxhcml0eSBkZWNpc2lvbnMgaGF2ZSBkZXRhaWwgdG8gd29yayB3aXRoLlxuICAgICAgICBleHBlY3RlZE91dHB1dENvdW50PzogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5yb290ID0geyBsYWJlbDogXCJcIiwgY2hpbGRyZW46IG5ldyBNYXAoKSwgc3VtbWFyeTogY29uZmlnLmNyZWF0ZVN1bW1hcnkoKSB9O1xuICAgICAgICBsZXQgb3V0cHV0Q291bnQgPSBjb25maWcuZXhwZWN0ZWRPdXRwdXRDb3VudCB8fCBERUZBVUxUX09VVFBVVF9DT1VOVDtcbiAgICAgICAgdGhpcy5tYXhUcmFja2VkTm9kZXMgPSBNYXRoLm1pbihNYXRoLm1heChvdXRwdXRDb3VudCAqIFRSQUNLRURfTk9ERVNfUEVSX09VVFBVVCwgTUlOX1RSQUNLRURfTk9ERVMpLCBNQVhfVFJBQ0tFRF9OT0RFUyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZCh2YWx1ZTogVCkge1xuICAgICAgICBsZXQgcGF0aCA9IHRoaXMuY29uZmlnLmdldFBhdGgodmFsdWUpO1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMucm9vdDtcbiAgICAgICAgdGhpcy5jb25maWcuYWRkVG9TdW1tYXJ5KHZhbHVlLCBub2RlLnN1bW1hcnkpO1xuICAgICAgICBsZXQgcG9zID0gMDtcbiAgICAgICAgd2hpbGUgKHBvcyA8IHBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGQgPSBub2RlLmNoaWxkcmVuLmdldChwYXRoW3Bvc10pO1xuICAgICAgICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICAgICAgICAgIGNoaWxkID0geyBsYWJlbDogcGF0aC5zbGljZShwb3MpLCBjaGlsZHJlbjogbmV3IE1hcCgpLCBzdW1tYXJ5OiB0aGlzLmNvbmZpZy5jcmVhdGVTdW1tYXJ5KCkgfTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnNldChwYXRoW3Bvc10sIGNoaWxkKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVDb3VudCsrO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZFRvU3VtbWFyeSh2YWx1ZSwgY2hpbGQuc3VtbWFyeSk7XG4gICAgICAgICAgICAgICAgbm9kZSA9IGNoaWxkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGxhYmVsID0gY2hpbGQubGFiZWw7XG4gICAgICAgICAgICBsZXQgbGltaXQgPSBNYXRoLm1pbihsYWJlbC5sZW5ndGgsIHBhdGgubGVuZ3RoIC0gcG9zKTtcbiAgICAgICAgICAgIGxldCBjb21tb24gPSAxO1xuICAgICAgICAgICAgd2hpbGUgKGNvbW1vbiA8IGxpbWl0ICYmIGxhYmVsLmNoYXJDb2RlQXQoY29tbW9uKSA9PT0gcGF0aC5jaGFyQ29kZUF0KHBvcyArIGNvbW1vbikpIHtcbiAgICAgICAgICAgICAgICBjb21tb24rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb21tb24gPCBsYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNwbGl0Tm9kZShjaGlsZCwgY29tbW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZFRvU3VtbWFyeSh2YWx1ZSwgY2hpbGQuc3VtbWFyeSk7XG4gICAgICAgICAgICBub2RlID0gY2hpbGQ7XG4gICAgICAgICAgICBwb3MgKz0gY29tbW9uO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzZWxmU3VtbWFyeSA9IG5vZGUuc2VsZlN1bW1hcnk7XG4gICAgICAgIGlmICghc2VsZlN1bW1hcnkpIHtcbiAgICAgICAgICAgIHNlbGZTdW1tYXJ5ID0gdGhpcy5jb25maWcuY3JlYXRlU3VtbWFyeSgpO1xuICAgICAgICAgICAgbm9kZS5zZWxmU3VtbWFyeSA9IHNlbGZTdW1tYXJ5O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnLmFkZFRvU3VtbWFyeSh2YWx1ZSwgc2VsZlN1bW1hcnkpO1xuICAgICAgICBpZiAodGhpcy5ub2RlQ291bnQgPiB0aGlzLm1heFRyYWNrZWROb2Rlcykge1xuICAgICAgICAgICAgdGhpcy5wcnVuZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3BsaXRzIGEgbm9kZSdzIGVkZ2UgbGFiZWwgYXQgbGFiZWxQb3MsIGluc2VydGluZyBhIG5ldyBwYXJlbnQgY292ZXJpbmcgdGhlIHByZWZpeC4gVGhlIHByZWZpeCBub2RlJ3Mgc3VtbWFyeSBpcyBhIG1lcmdlLWNsb25lIG9mIHRoZSBvcmlnaW5hbCBhZ2dyZWdhdGUsIHNpbmNlIGl0IGNvdmVycyB0aGUgZXhhY3Qgc2FtZSBzZXQgb2YgdmFsdWVzLlxuICAgIHByaXZhdGUgc3BsaXROb2RlKG5vZGU6IFRyZWVOb2RlPFM+LCBsYWJlbFBvczogbnVtYmVyKSB7XG4gICAgICAgIGxldCBzdWZmaXg6IFRyZWVOb2RlPFM+ID0ge1xuICAgICAgICAgICAgbGFiZWw6IG5vZGUubGFiZWwuc2xpY2UobGFiZWxQb3MpLFxuICAgICAgICAgICAgY2hpbGRyZW46IG5vZGUuY2hpbGRyZW4sXG4gICAgICAgICAgICBzdW1tYXJ5OiBub2RlLnN1bW1hcnksXG4gICAgICAgICAgICBzZWxmU3VtbWFyeTogbm9kZS5zZWxmU3VtbWFyeSxcbiAgICAgICAgICAgIHRydW5jYXRlZFN1bW1hcnk6IG5vZGUudHJ1bmNhdGVkU3VtbWFyeSxcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHByZWZpeFN1bW1hcnkgPSB0aGlzLmNvbmZpZy5jcmVhdGVTdW1tYXJ5KCk7XG4gICAgICAgIHRoaXMuY29uZmlnLm1lcmdlU3VtbWFyaWVzKHByZWZpeFN1bW1hcnksIHN1ZmZpeC5zdW1tYXJ5KTtcbiAgICAgICAgbm9kZS5sYWJlbCA9IG5vZGUubGFiZWwuc2xpY2UoMCwgbGFiZWxQb3MpO1xuICAgICAgICBub2RlLnN1bW1hcnkgPSBwcmVmaXhTdW1tYXJ5O1xuICAgICAgICBub2RlLnNlbGZTdW1tYXJ5ID0gdW5kZWZpbmVkO1xuICAgICAgICBub2RlLnRydW5jYXRlZFN1bW1hcnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSBuZXcgTWFwKFtbc3VmZml4LmxhYmVsWzBdLCBzdWZmaXhdXSk7XG4gICAgICAgIHRoaXMubm9kZUNvdW50Kys7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYWNrZWROb2RlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZUNvdW50O1xuICAgIH1cblxuICAgIC8vIFN0YXJ0cyBmdWxseSBjb2xsYXBzZWQgKG9uZSBlbnRyeSBmb3IgdGhlIHdob2xlIHRyZWUpIGFuZCByZXBlYXRlZGx5IHJlZmluZXMgdGhlIGhlYXZpZXN0IGVudHJ5LCBvbmUgc3BsaXQgYXQgYSB0aW1lLiBBIHNwbGl0IHB1bGxzIHRoZSBoZWF2aWVzdCBicmFuY2ggb3V0IGFzIGl0cyBvd24gZW50cnkgYW5kIGxlYXZlcyB0aGUgcmVtYWluaW5nIHNpYmxpbmdzIGNvbWJpbmVkIGluIGEgZ3JvdXAgZW50cnksIHNvIGVudHJpZXMgYXJlIG5ldmVyIHdhc3RlZCBvbiBsaWdodCBicmFuY2hlcy4gVGhpcyByZWNvbXB1dGVzIGZyb20gdGhlIGxpdmUgcGVyLW5vZGUgc3VtbWFyaWVzLCBzbyBpdCBhbHdheXMgcmVmbGVjdHMgZXZlcnl0aGluZyBhZGRlZCBzbyBmYXIuXG4gICAgcHVibGljIGdldFN1bW1hcmllcyhtYXhDb3VudDogbnVtYmVyKTogU3VtbWFyeUVudHJ5PFM+W10ge1xuICAgICAgICBpZiAobWF4Q291bnQgPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBtYXhDb3VudCBtdXN0IGJlIHBvc2l0aXZlLCB3YXMgJHttYXhDb3VudH1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucm9vdC5zZWxmU3VtbWFyeSAmJiAhdGhpcy5yb290LnRydW5jYXRlZFN1bW1hcnkgJiYgdGhpcy5yb290LmNoaWxkcmVuLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZW50cmllczogUGVuZGluZ0VudHJ5PFM+W10gPSBbdGhpcy5zdWJ0cmVlRW50cnkodGhpcy5yb290LCBcIlwiKV07XG4gICAgICAgIHdoaWxlIChlbnRyaWVzLmxlbmd0aCA8IG1heENvdW50KSB7XG4gICAgICAgICAgICBsZXQgYmVzdEluZGV4ID0gLTE7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNSZWZpbmFibGUoZW50cmllc1tpXSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChiZXN0SW5kZXggPT09IC0xIHx8IGVudHJpZXNbaV0ud2VpZ2h0ID4gZW50cmllc1tiZXN0SW5kZXhdLndlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0SW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiZXN0SW5kZXggPT09IC0xKSBicmVhaztcbiAgICAgICAgICAgIGxldCByZWZpbmVkID0gdGhpcy5yZWZpbmUoZW50cmllc1tiZXN0SW5kZXhdKTtcbiAgICAgICAgICAgIGVudHJpZXMuc3BsaWNlKGJlc3RJbmRleCwgMSwgLi4ucmVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG91dHB1dCA9IGVudHJpZXMubWFwKGVudHJ5ID0+IHtcbiAgICAgICAgICAgIGxldCBwYXRoID0gZW50cnkucGF0aDtcbiAgICAgICAgICAgIGlmIChlbnRyeS5raW5kICE9PSBcInNlbGZcIikge1xuICAgICAgICAgICAgICAgIHBhdGggKz0gXCIqXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAga2luZDogZW50cnkua2luZCxcbiAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLmJ1aWxkT3V0cHV0U3VtbWFyeShlbnRyeSksXG4gICAgICAgICAgICAgICAgd2VpZ2h0OiBlbnRyeS53ZWlnaHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgc29ydChvdXRwdXQsIGVudHJ5ID0+IGVudHJ5LnBhdGgpO1xuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNSZWZpbmFibGUoZW50cnk6IFBlbmRpbmdFbnRyeTxTPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZW50cnkua2luZCA9PT0gXCJzZWxmXCIgfHwgZW50cnkua2luZCA9PT0gXCJ0cnVuY2F0ZWRcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZW50cnkua2luZCA9PT0gXCJncm91cFwiKSB7XG4gICAgICAgICAgICBsZXQgbWVtYmVycyA9IGVudHJ5Lm1lbWJlcnM7XG4gICAgICAgICAgICBpZiAoIW1lbWJlcnMgfHwgbWVtYmVycy5zaXplID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gbWVtYmVycy5zaXplICsgKGVudHJ5LmV4dHJhcyAmJiBlbnRyeS5leHRyYXMubGVuZ3RoIHx8IDApID49IDI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5vZGUgPSBlbnRyeS5ub2RlO1xuICAgICAgICBpZiAoIW5vZGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGVudHJ5LmV4dHJhcyAmJiBlbnRyeS5leHRyYXMubGVuZ3RoID4gMCkgcmV0dXJuIHRydWU7XG4gICAgICAgIGxldCBwYXJ0cyA9IG5vZGUuY2hpbGRyZW4uc2l6ZSArIChub2RlLnNlbGZTdW1tYXJ5ICYmIDEgfHwgMCkgKyAobm9kZS50cnVuY2F0ZWRTdW1tYXJ5ICYmIDEgfHwgMCk7XG4gICAgICAgIHJldHVybiBwYXJ0cyA+PSAyO1xuICAgIH1cblxuICAgIC8vIFJlcGxhY2VzIG9uZSBlbnRyeSB3aXRoIGV4YWN0bHkgdHdvLCBzbyBlYWNoIHJlZmluZW1lbnQgY29zdHMgZXhhY3RseSBvbmUgb3V0cHV0IHNsb3QuXG4gICAgcHJpdmF0ZSByZWZpbmUoZW50cnk6IFBlbmRpbmdFbnRyeTxTPik6IFBlbmRpbmdFbnRyeTxTPltdIHtcbiAgICAgICAgaWYgKGVudHJ5LmtpbmQgPT09IFwiZ3JvdXBcIikge1xuICAgICAgICAgICAgbGV0IG1lbWJlcnMgPSBlbnRyeS5tZW1iZXJzO1xuICAgICAgICAgICAgaWYgKCFtZW1iZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcm91cCBlbnRyeSBtaXNzaW5nIG1lbWJlcnMgYXQgJHtlbnRyeS5wYXRofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3BsaXRQYXJ0cyhtZW1iZXJzLCBlbnRyeS5leHRyYXMgfHwgW10sIGVudHJ5LnBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBub2RlID0gZW50cnkubm9kZTtcbiAgICAgICAgaWYgKGVudHJ5LmtpbmQgIT09IFwic3VidHJlZVwiIHx8ICFub2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVudHJ5IGlzIG5vdCByZWZpbmFibGUgYXQgJHtlbnRyeS5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBleHRyYXMgPSBlbnRyeS5leHRyYXM7XG4gICAgICAgIGlmIChleHRyYXMgJiYgZXh0cmFzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIFNwbGl0IG9mZiB0aGUgY2hhaW4gcmVzaWR1ZXMgYXMgb25lIGNvbWJpbmVkIGVudHJ5LCBzbyBhIGxvbmcgY2hhaW4gb2YgcHJ1bmluZyBsZWZ0b3ZlcnMgY29zdHMgYSBzaW5nbGUgc2xvdCBpbnN0ZWFkIG9mIG9uZSBwZXIgY2hhcmFjdGVyLlxuICAgICAgICAgICAgbGV0IHdlaWdodCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBleHRyYSBvZiBleHRyYXMpIHtcbiAgICAgICAgICAgICAgICB3ZWlnaHQgKz0gdGhpcy5jb25maWcuZ2V0V2VpZ2h0KGV4dHJhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyBraW5kOiBcImdyb3VwXCIsIHBhdGg6IGVudHJ5LnBhdGgsIGV4dHJhcywgd2VpZ2h0IH0sXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmVlRW50cnkobm9kZSwgZW50cnkubm9kZVBhdGggfHwgZW50cnkucGF0aCksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoaWxkcmVuIGxpdmUgYmVsb3cgdGhlIG5vZGUsIHNvIHRoZWlyIHBhdGhzIG11c3QgZXh0ZW5kIG5vZGVQYXRoLCBuZXZlciB0aGUgKHBvc3NpYmx5IHNob3J0ZXIpIGRpc3BsYXkgcGF0aC5cbiAgICAgICAgbGV0IG5vZGVQYXRoID0gZW50cnkubm9kZVBhdGggfHwgZW50cnkucGF0aDtcbiAgICAgICAgbGV0IHRydW5jYXRlZExpc3Q6IFNbXSA9IFtdO1xuICAgICAgICBpZiAobm9kZS50cnVuY2F0ZWRTdW1tYXJ5KSB7XG4gICAgICAgICAgICB0cnVuY2F0ZWRMaXN0LnB1c2gobm9kZS50cnVuY2F0ZWRTdW1tYXJ5KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc2VsZlN1bW1hcnkgPSBub2RlLnNlbGZTdW1tYXJ5O1xuICAgICAgICBpZiAoc2VsZlN1bW1hcnkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgeyBraW5kOiBcInNlbGZcIiwgcGF0aDogbm9kZVBhdGgsIG5vZGUsIHdlaWdodDogdGhpcy5jb25maWcuZ2V0V2VpZ2h0KHNlbGZTdW1tYXJ5KSB9LFxuICAgICAgICAgICAgICAgIHRoaXMuZW50cnlGb3JQYXJ0cyhub2RlLmNoaWxkcmVuLCB0cnVuY2F0ZWRMaXN0LCBub2RlUGF0aCksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNwbGl0UGFydHMobm9kZS5jaGlsZHJlbiwgdHJ1bmNhdGVkTGlzdCwgbm9kZVBhdGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3BsaXRQYXJ0cyhjaGlsZHJlbjogTWFwPHN0cmluZywgVHJlZU5vZGU8Uz4+LCBleHRyYXM6IFNbXSwgcGF0aDogc3RyaW5nKTogUGVuZGluZ0VudHJ5PFM+W10ge1xuICAgICAgICBsZXQgaGVhdmllc3RDaGFyID0gXCJcIjtcbiAgICAgICAgbGV0IGhlYXZpZXN0OiBUcmVlTm9kZTxTPiB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChsZXQgW2NoYXIsIGNoaWxkXSBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKCFoZWF2aWVzdCB8fCB0aGlzLmNvbmZpZy5nZXRXZWlnaHQoY2hpbGQuc3VtbWFyeSkgPiB0aGlzLmNvbmZpZy5nZXRXZWlnaHQoaGVhdmllc3Quc3VtbWFyeSkpIHtcbiAgICAgICAgICAgICAgICBoZWF2aWVzdENoYXIgPSBjaGFyO1xuICAgICAgICAgICAgICAgIGhlYXZpZXN0ID0gY2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoZWF2aWVzdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc3BsaXQgZW1wdHkgY2hpbGQgc2V0IGF0ICR7cGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdCA9IG5ldyBNYXAoY2hpbGRyZW4pO1xuICAgICAgICByZXN0LmRlbGV0ZShoZWF2aWVzdENoYXIpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5zdWJ0cmVlRW50cnkoaGVhdmllc3QsIHBhdGggKyBoZWF2aWVzdC5sYWJlbCksXG4gICAgICAgICAgICB0aGlzLmVudHJ5Rm9yUGFydHMocmVzdCwgZXh0cmFzLCBwYXRoKSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVudHJ5Rm9yUGFydHMoY2hpbGRyZW46IE1hcDxzdHJpbmcsIFRyZWVOb2RlPFM+PiwgZXh0cmFzOiBTW10sIHBhdGg6IHN0cmluZyk6IFBlbmRpbmdFbnRyeTxTPiB7XG4gICAgICAgIGlmIChjaGlsZHJlbi5zaXplID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoZXh0cmFzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcGFydHMgdG8gbWFrZSBhbiBlbnRyeSBmcm9tIGF0ICR7cGF0aH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB3ZWlnaHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgZXh0cmEgb2YgZXh0cmFzKSB7XG4gICAgICAgICAgICAgICAgd2VpZ2h0ICs9IHRoaXMuY29uZmlnLmdldFdlaWdodChleHRyYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBraW5kOiBcInRydW5jYXRlZFwiLCBwYXRoLCBleHRyYXMsIHdlaWdodCB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGlsZHJlbi5zaXplID09PSAxICYmIGV4dHJhcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuLnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VidHJlZUVudHJ5KGNoaWxkLCBwYXRoICsgY2hpbGQubGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCB3ZWlnaHQgPSAwO1xuICAgICAgICBmb3IgKGxldCBleHRyYSBvZiBleHRyYXMpIHtcbiAgICAgICAgICAgIHdlaWdodCArPSB0aGlzLmNvbmZpZy5nZXRXZWlnaHQoZXh0cmEpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuLnZhbHVlcygpKSB7XG4gICAgICAgICAgICB3ZWlnaHQgKz0gdGhpcy5jb25maWcuZ2V0V2VpZ2h0KGNoaWxkLnN1bW1hcnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwiZ3JvdXBcIiwgcGF0aCwgbWVtYmVyczogY2hpbGRyZW4sIGV4dHJhcywgd2VpZ2h0IH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJ0cmVlRW50cnkobm9kZTogVHJlZU5vZGU8Uz4sIHBhdGg6IHN0cmluZyk6IFBlbmRpbmdFbnRyeTxTPiB7XG4gICAgICAgIC8vIEZvbGxvdyBzaW5nbGUtY2hpbGQgY2hhaW5zIHNvIHBhdGhzIGFyZSBtYXhpbWFsIHNoYXJlZCBwcmVmaXhlcyBpbnN0ZWFkIG9mIHNpbmdsZSBjaGFyYWN0ZXJzLiBTZWxmL3RydW5jYXRlZCBzdW1tYXJpZXMgZm91bmQgYWxvbmcgdGhlIGNoYWluIGFyZSBjYXJyaWVkIG9uIHRoZSBlbnRyeSBpbnN0ZWFkIG9mIHN0b3BwaW5nIHRoZSBkZXNjZW50LCBzbyBwcnVuaW5nIGxlZnRvdmVycyBzY2F0dGVyZWQgYWxvbmcgYSBjaGFpbiBlbmQgdXAgY29tYmluZWQgaW5zdGVhZCBvZiBlYWNoIGZvcmNpbmcgYW4gZW50cnkuXG4gICAgICAgIGxldCBjYXJyaWVkOiBTW10gPSBbXTtcbiAgICAgICAgbGV0IGNhcnJpZWRXZWlnaHQgPSAwO1xuICAgICAgICBsZXQgbm9kZVBhdGggPSBwYXRoO1xuICAgICAgICB3aGlsZSAobm9kZS5jaGlsZHJlbi5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBsZXQgc2VsZlN1bW1hcnkgPSBub2RlLnNlbGZTdW1tYXJ5O1xuICAgICAgICAgICAgaWYgKHNlbGZTdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgY2FycmllZC5wdXNoKHNlbGZTdW1tYXJ5KTtcbiAgICAgICAgICAgICAgICBjYXJyaWVkV2VpZ2h0ICs9IHRoaXMuY29uZmlnLmdldFdlaWdodChzZWxmU3VtbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdHJ1bmNhdGVkID0gbm9kZS50cnVuY2F0ZWRTdW1tYXJ5O1xuICAgICAgICAgICAgaWYgKHRydW5jYXRlZCkge1xuICAgICAgICAgICAgICAgIGNhcnJpZWQucHVzaCh0cnVuY2F0ZWQpO1xuICAgICAgICAgICAgICAgIGNhcnJpZWRXZWlnaHQgKz0gdGhpcy5jb25maWcuZ2V0V2VpZ2h0KHRydW5jYXRlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuLnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgbm9kZVBhdGggKz0gY2hpbGQubGFiZWw7XG4gICAgICAgICAgICAgICAgbm9kZSA9IGNoaWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFdpdGggbm90aGluZyBjYXJyaWVkIHRoZSBlbnRyeSBpcyBqdXN0IHRoZSBkZWVwIG5vZGUsIHNvIGRpc3BsYXkgdGhlIGZ1bGwgZGVzY2VuZGVkIHByZWZpeC5cbiAgICAgICAgaWYgKGNhcnJpZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBwYXRoID0gbm9kZVBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6IFwic3VidHJlZVwiLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBub2RlUGF0aCxcbiAgICAgICAgICAgIGV4dHJhczogY2FycmllZCxcbiAgICAgICAgICAgIHdlaWdodDogdGhpcy5jb25maWcuZ2V0V2VpZ2h0KG5vZGUuc3VtbWFyeSkgKyBjYXJyaWVkV2VpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRPdXRwdXRTdW1tYXJ5KGVudHJ5OiBQZW5kaW5nRW50cnk8Uz4pOiBTIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuY29uZmlnLmNyZWF0ZVN1bW1hcnkoKTtcbiAgICAgICAgaWYgKGVudHJ5LmtpbmQgPT09IFwiZ3JvdXBcIiB8fCBlbnRyeS5raW5kID09PSBcInRydW5jYXRlZFwiKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBleHRyYSBvZiBlbnRyeS5leHRyYXMgfHwgW10pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5tZXJnZVN1bW1hcmllcyhyZXN1bHQsIGV4dHJhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbnRyeS5tZW1iZXJzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbWVtYmVyIG9mIGVudHJ5Lm1lbWJlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcubWVyZ2VTdW1tYXJpZXMocmVzdWx0LCBtZW1iZXIuc3VtbWFyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbm9kZSA9IGVudHJ5Lm5vZGU7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbnRyeSBtaXNzaW5nIG5vZGUgYXQgJHtlbnRyeS5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnRyeS5raW5kID09PSBcInNlbGZcIikge1xuICAgICAgICAgICAgbGV0IHNlbGZTdW1tYXJ5ID0gbm9kZS5zZWxmU3VtbWFyeTtcbiAgICAgICAgICAgIGlmICghc2VsZlN1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlbGYgZW50cnkgbWlzc2luZyBzZWxmU3VtbWFyeSBhdCAke2VudHJ5LnBhdGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5tZXJnZVN1bW1hcmllcyhyZXN1bHQsIHNlbGZTdW1tYXJ5KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgZXh0cmEgb2YgZW50cnkuZXh0cmFzIHx8IFtdKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5tZXJnZVN1bW1hcmllcyhyZXN1bHQsIGV4dHJhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZy5tZXJnZVN1bW1hcmllcyhyZXN1bHQsIG5vZGUuc3VtbWFyeSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gQ29sbGFwc2VzIHRoZSBsaWdodGVzdCBzdWJ0cmVlcyB1bnRpbCB0aGUgbm9kZSBjb3VudCBpcyBiYWNrIHVuZGVyIHRoZSB0YXJnZXQuIENvbGxhcHNpbmcgYSBub2RlIG1lcmdlcyBldmVyeXRoaW5nIGJlbG93IGl0IGludG8gaXRzIHRydW5jYXRlZFN1bW1hcnksIGtlZXBpbmcgdGhlIGRhdGEgYnV0IGRyb3BwaW5nIHRoZSBwYXRoIGRldGFpbC4gSWYgdGhvc2UgcHJlZml4ZXMgZ2V0IGhlYXZ5IGFnYWluIGxhdGVyLCBuZXcgYWRkcyByZWJ1aWxkIGJyYW5jaGVzIHRoZXJlIGFuZCB0aGUgbmV4dCBwcnVuZSB0YWtlcyBvdXQgd2hhdGV2ZXIgc3RheWVkIGxpZ2h0IGluc3RlYWQuXG4gICAgcHJpdmF0ZSBwcnVuZSgpIHtcbiAgICAgICAgbGV0IHRhcmdldCA9IE1hdGguZmxvb3IodGhpcy5tYXhUcmFja2VkTm9kZXMgLyBQUlVORV9UQVJHRVRfRElWSVNPUik7XG4gICAgICAgIGxldCBuZWVkID0gdGhpcy5ub2RlQ291bnQgLSB0YXJnZXQ7XG4gICAgICAgIGlmIChuZWVkIDw9IDApIHJldHVybjtcbiAgICAgICAgbGV0IHN0YXRzID0gbmV3IE1hcDxUcmVlTm9kZTxTPiwgTm9kZVN0YXRzPigpO1xuICAgICAgICBsZXQgbWVhc3VyZSA9IChub2RlOiBUcmVlTm9kZTxTPik6IE5vZGVTdGF0cyA9PiB7XG4gICAgICAgICAgICBsZXQgc2l6ZSA9IDE7XG4gICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuLnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgc2l6ZSArPSBtZWFzdXJlKGNoaWxkKS5zaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgc2l6ZSwgd2VpZ2h0OiB0aGlzLmNvbmZpZy5nZXRXZWlnaHQobm9kZS5zdW1tYXJ5KSB9O1xuICAgICAgICAgICAgc3RhdHMuc2V0KG5vZGUsIHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICBsZXQgcm9vdFN0YXRzID0gbWVhc3VyZSh0aGlzLnJvb3QpO1xuICAgICAgICBsZXQgZ2V0U3RhdHMgPSAobm9kZTogVHJlZU5vZGU8Uz4pOiBOb2RlU3RhdHMgPT4ge1xuICAgICAgICAgICAgbGV0IHN0YXQgPSBzdGF0cy5nZXQobm9kZSk7XG4gICAgICAgICAgICBpZiAoIXN0YXQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgbm9kZSBzdGF0cyBkdXJpbmcgcHJ1bmVgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdGF0O1xuICAgICAgICB9O1xuICAgICAgICAvLyBDb2xsYXBzaW5nIGV2ZXJ5IG1heGltYWwgc3VidHJlZSB3aG9zZSB3ZWlnaHQgaXMgdW5kZXIgYSBsaW1pdCBmcmVlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBudW1iZXIgb2Ygbm9kZXMsIHNvIGJpbmFyeSBzZWFyY2ggZm9yIHRoZSBzbWFsbGVzdCBsaW1pdCB0aGF0IGZyZWVzIGVub3VnaC5cbiAgICAgICAgbGV0IGZyZWVkQXQgPSAobGltaXQ6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgICAgICAgICBsZXQgZnJlZWQgPSAwO1xuICAgICAgICAgICAgbGV0IHZpc2l0ID0gKG5vZGU6IFRyZWVOb2RlPFM+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4uc2l6ZSA9PT0gMCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGlmIChnZXRTdGF0cyhub2RlKS53ZWlnaHQgPD0gbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJlZWQgKz0gZ2V0U3RhdHMobm9kZSkuc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICB2aXNpdChjaGlsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZpc2l0KHRoaXMucm9vdCk7XG4gICAgICAgICAgICByZXR1cm4gZnJlZWQ7XG4gICAgICAgIH07XG4gICAgICAgIGxldCBsb3cgPSAwO1xuICAgICAgICBsZXQgaGlnaCA9IHJvb3RTdGF0cy53ZWlnaHQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgUFJVTkVfU0VBUkNIX0lURVJBVElPTlM7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1pZCA9IChsb3cgKyBoaWdoKSAvIDI7XG4gICAgICAgICAgICBpZiAoZnJlZWRBdChtaWQpID49IG5lZWQpIHtcbiAgICAgICAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb3cgPSBtaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbGxhcHNlVmlzaXQgPSAobm9kZTogVHJlZU5vZGU8Uz4pID0+IHtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuLnNpemUgPT09IDApIHJldHVybjtcbiAgICAgICAgICAgIGlmIChnZXRTdGF0cyhub2RlKS53ZWlnaHQgPD0gaGlnaCkge1xuICAgICAgICAgICAgICAgIGxldCB0cnVuY2F0ZWQgPSBub2RlLnRydW5jYXRlZFN1bW1hcnk7XG4gICAgICAgICAgICAgICAgaWYgKCF0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVkID0gdGhpcy5jb25maWcuY3JlYXRlU3VtbWFyeSgpO1xuICAgICAgICAgICAgICAgICAgICBub2RlLnRydW5jYXRlZFN1bW1hcnkgPSB0cnVuY2F0ZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4udmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcubWVyZ2VTdW1tYXJpZXModHJ1bmNhdGVkLCBjaGlsZC5zdW1tYXJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlQ291bnQgLT0gZ2V0U3RhdHMobm9kZSkuc2l6ZSAtIDE7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5jbGVhcigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4udmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZVZpc2l0KGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29sbGFwc2VWaXNpdCh0aGlzLnJvb3QpO1xuICAgIH1cbn1cbiJdfQ==
|
|
359
|
-
/* _JS_SOURCE_HASH = "
|
|
359
|
+
/* _JS_SOURCE_HASH = "6cc23520550b8de75feb37a36bb0d33aeab003facda37ae7fc99887839e09cab"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.isInBrowser = exports.isInBuild = exports.triggerIsInBuild = exports.isInElectron = exports.isInChromeExtensionContentScript = exports.isInChromeExtensionBackground = exports.isInChromeExtension = void 0;
|
|
4
4
|
/// <reference types="@types/chrome/index.d.ts" />
|
|
@@ -47,4 +47,4 @@ function isInBrowser() {
|
|
|
47
47
|
}
|
|
48
48
|
exports.isInBrowser = isInBrowser;
|
|
49
49
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrREFBa0Q7QUFDbEQsU0FBZ0IsbUJBQW1CO0lBQy9CLE9BQU8sT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQUZELGtEQUVDO0FBQ0QsU0FBZ0IsNkJBQTZCO0lBQ3pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXpDLDBFQUEwRTtJQUMxRSxJQUFJLE9BQVEsVUFBa0IsQ0FBQyxhQUFhLEtBQUssVUFBVSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzdGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN0RyxJQUFJLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxNQUFNLENBQUM7UUFDM0QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFsQkQsc0VBa0JDO0FBQ0QsU0FBZ0IsZ0NBQWdDO0lBQzVDLE9BQU8sbUJBQW1CLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7QUFDckUsQ0FBQztBQUZELDRFQUVDO0FBQ0QsU0FBZ0IsWUFBWTtJQUN4QixPQUFPLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQzNGLENBQUM7QUFGRCxvQ0FFQztBQUNELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztBQUMxQixTQUFnQixnQkFBZ0I7SUFDNUIsYUFBYSxHQUFHLElBQUksQ0FBQztBQUN6QixDQUFDO0FBRkQsNENBRUM7QUFDRCxTQUFnQixTQUFTO0lBQ3JCLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUM7QUFGRCw4QkFFQztBQUNELFNBQWdCLFdBQVc7SUFDdkIsT0FBTyxPQUFPLFFBQVEsS0FBSyxXQUFXLENBQUM7QUFDM0MsQ0FBQztBQUZELGtDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdHlwZXMvY2hyb21lL2luZGV4LmQudHNcIiAvPlxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5DaHJvbWVFeHRlbnNpb24oKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBjaHJvbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY2hyb21lLnJ1bnRpbWUgJiYgY2hyb21lLnJ1bnRpbWUuaWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbkNocm9tZUV4dGVuc2lvbkJhY2tncm91bmQoKSB7XG4gICAgaWYgKCFpc0luQ2hyb21lRXh0ZW5zaW9uKCkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIE1hbmlmZXN0IFYzOiBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IChoYXMgaW1wb3J0U2NyaXB0cyBidXQgbm8gZG9jdW1lbnQpXG4gICAgaWYgKHR5cGVvZiAoZ2xvYmFsVGhpcyBhcyBhbnkpLmltcG9ydFNjcmlwdHMgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTWFuaWZlc3QgVjI6IEJhY2tncm91bmQgcGFnZVxuICAgIGlmICh0eXBlb2YgY2hyb21lLmV4dGVuc2lvbiAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY2hyb21lLmV4dGVuc2lvbi5nZXRCYWNrZ3JvdW5kUGFnZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gY2hyb21lLmV4dGVuc2lvbi5nZXRCYWNrZ3JvdW5kUGFnZSgpID09PSB3aW5kb3c7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0luQ2hyb21lRXh0ZW5zaW9uQ29udGVudFNjcmlwdCgpIHtcbiAgICByZXR1cm4gaXNJbkNocm9tZUV4dGVuc2lvbigpICYmICFpc0luQ2hyb21lRXh0ZW5zaW9uQmFja2dyb3VuZCgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5FbGVjdHJvbigpIHtcbiAgICByZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uO1xufVxubGV0IGlzSW5CdWlsZEZsYWcgPSBmYWxzZTtcbmV4cG9ydCBmdW5jdGlvbiB0cmlnZ2VySXNJbkJ1aWxkKCkge1xuICAgIGlzSW5CdWlsZEZsYWcgPSB0cnVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5CdWlsZCgpIHtcbiAgICByZXR1cm4gaXNJbkJ1aWxkRmxhZztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0luQnJvd3NlcigpIHtcbiAgICByZXR1cm4gdHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiO1xufSJdfQ==
|
|
50
|
-
/* _JS_SOURCE_HASH = "
|
|
50
|
+
/* _JS_SOURCE_HASH = "c7ee18b0b3ad11aeba561c3dc6daba53159677e35bde1c50775ffdf74982b40f"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -136,4 +136,4 @@ function setSecret(key, value) {
|
|
|
136
136
|
}
|
|
137
137
|
exports.setSecret = setSecret;
|
|
138
138
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2V0U2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseURBQW9EO0FBQ3BELDZDQUFxQztBQUVyQyxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztBQUV0QyxTQUFTLGFBQWEsQ0FBQyxHQUFXO0lBQzlCLE9BQU8sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxHQUFXO0lBQ25DLElBQUksSUFBQSxvQkFBTSxHQUFFLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBTEQsa0NBS0M7QUFFWSxRQUFBLFNBQVMsR0FBRyxJQUFBLGVBQUssRUFBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEdBQVc7O0lBQy9ELElBQUksSUFBQSxvQkFBTSxHQUFFLEVBQUUsQ0FBQztRQUNYLE1BQU0sRUFBRSxHQUFHLHdEQUFhLElBQUksR0FBQyxDQUFDO1FBQzlCLE1BQU0sRUFBRSxHQUFHLHdEQUFhLElBQUksR0FBQyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLHdEQUFhLE1BQU0sR0FBQyxDQUFDO1FBRWxDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsSUFBSSxnQkFBa0gsQ0FBQztRQUN2SCxJQUFJLENBQUM7WUFDRCxnQkFBZ0IsR0FBRyx5QkFBYSxjQUFjLHVDQUE0QixDQUFDO1FBQy9FLENBQUM7UUFBQyxXQUFNLENBQUM7WUFDTCxnRUFBZ0U7UUFDcEUsQ0FBQztRQUNELElBQUks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QUFDO2FBQ0osQ0FBQyxFQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUMzQixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtnQkFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDZCxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzlDLEtBQUssRUFBRSxDQUFDO3dCQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0wsQ0FBQzthQUNKLEVBQUUsTUFBTSxDQUFDLENBQ2IsQ0FDSjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFnQixTQUFTLENBQUMsR0FBVyxFQUFFLEtBQWE7SUFDaEQsSUFBSSxJQUFBLG9CQUFNLEdBQUUsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxSEFBcUgsQ0FBQyxDQUFDO0lBQzNJLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBTEQsOEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IGNhY2hlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2FjaGluZ1wiO1xuaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcInR5cGVzYWZlY3NzXCI7XG5cbmNvbnN0IHNlY3JldFN0b3JhZ2VQcmVmaXggPSBcInNlY3JldF9cIjtcblxuZnVuY3Rpb24gZ2V0U3RvcmFnZUtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBzZWNyZXRTdG9yYWdlUHJlZml4ICsga2V5LnJlcGxhY2UoL1tcXC9cXFxcXFwuXS9nLCBcIl9cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldFNlY3JldChrZXk6IHN0cmluZykge1xuICAgIGlmIChpc05vZGUoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZXNldFNlY3JldCBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgYnJvd3NlclwiKTtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZ2V0U3RvcmFnZUtleShrZXkpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNlY3JldCA9IGNhY2hlKGFzeW5jIGZ1bmN0aW9uIGdldFNlY3JldChrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKGlzTm9kZSgpKSB7XG4gICAgICAgIGNvbnN0IG9zID0gYXdhaXQgaW1wb3J0KFwib3NcIik7XG4gICAgICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KFwiZnNcIik7XG4gICAgICAgIGNvbnN0IHBhdGggPSBhd2FpdCBpbXBvcnQoXCJwYXRoXCIpO1xuXG4gICAgICAgIGNvbnN0IGFwcFNlY3JldHNQYXRoID0gcGF0aC5yZXNvbHZlKFwiLi9hcHBTZWNyZXRzXCIpO1xuICAgICAgICBsZXQgYXBwU2VjcmV0c01vZHVsZTogeyBnZXRBcHBTZWNyZXQ/OiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHN0cmluZyB8IHVuZGVmaW5lZCB9IHwgdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXBwU2VjcmV0c01vZHVsZSA9IGF3YWl0IGltcG9ydChhcHBTZWNyZXRzUGF0aCkgYXMgdHlwZW9mIGFwcFNlY3JldHNNb2R1bGU7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gTW9kdWxlIGRvZXNuJ3QgZXhpc3QsIGZhbGwgdGhyb3VnaCB0byB0aGUgZmlsZS1iYXNlZCBhcHByb2FjaFxuICAgICAgICB9XG4gICAgICAgIGlmIChhcHBTZWNyZXRzTW9kdWxlPy5nZXRBcHBTZWNyZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwcFNlY3JldHNNb2R1bGUuZ2V0QXBwU2VjcmV0KGtleSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYW4gYXBwIHNlY3JldCBuYW1lZCBcIiR7a2V5fVwiIGZyb20gZ2V0QXBwU2VjcmV0IGluICR7YXBwU2VjcmV0c1BhdGh9LCBidXQgaXQgcmV0dXJuZWQgbm8gcmVzdWx0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QganNvbkluZGV4ID0ga2V5LmluZGV4T2YoXCIuanNvblwiKTtcbiAgICAgICAgbGV0IGZpbGVQYXRoOiBzdHJpbmc7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoanNvbkluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGZpbGVQYXRoID0gb3MuaG9tZWRpcigpICsgXCIvXCIgKyBrZXk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGYtOFwiKS50cmltKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBhdGhQYXJ0ID0ga2V5LnNsaWNlKDAsIGpzb25JbmRleCArIFwiLmpzb25cIi5sZW5ndGgpO1xuICAgICAgICAgICAgZmlsZVBhdGggPSBvcy5ob21lZGlyKCkgKyBcIi9cIiArIHBhdGhQYXJ0O1xuICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZShjb250ZW50cyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGtleVBhcnQgPSBrZXkuc2xpY2UoanNvbkluZGV4ICsgXCIuanNvbi5cIi5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKCFrZXlQYXJ0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGpzb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGpzb25ba2V5UGFydF07XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQga2V5IFwiJHtrZXlQYXJ0fVwiIGluICR7ZmlsZVBhdGh9LCB3YXMgdW5kZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzZWNyZXQgXCIke2tleX1cIi4gRXhwZWN0ZWQgaXQgZWl0aGVyIGZyb20gZ2V0QXBwU2VjcmV0IGluIHRoZSBhcHAgc2VjcmV0IG1vZHVsZSBhdCAke2FwcFNlY3JldHNQYXRofSwgb3IgaW4gdGhlIGZpbGUgYXQgJHtvcy5ob21lZGlyKCkgKyBcIi9cIiArIGtleX0uIFVuZGVybHlpbmcgZXJyb3I6ICR7KGUgYXMgRXJyb3IpLnN0YWNrID8/IGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCcm93c2VyIGltcGxlbWVudGF0aW9uXG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IGdldFN0b3JhZ2VLZXkoa2V5KTtcbiAgICBjb25zdCBjYWNoZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgIHJldHVybiBjYWNoZWQ7XG4gICAgfVxuXG4gICAgLy8gU2hvdyBtb2RhbCB0byBwcm9tcHQgdXNlciBmb3Igc2VjcmV0XG4gICAgY29uc3QgeyBzaG93RnVsbHNjcmVlbk1vZGFsLCBGdWxsc2NyZWVuTW9kYWwgfSA9IGF3YWl0IGltcG9ydChcIi4uL3JlbmRlci11dGlscy9GdWxsc2NyZWVuTW9kYWxcIik7XG4gICAgY29uc3QgeyBzaG93TW9kYWwgfSA9IGF3YWl0IGltcG9ydChcIi4uL3JlbmRlci11dGlscy9tb2RhbFwiKTtcbiAgICBjb25zdCB7IG9ic2VydmFibGUgfSA9IGF3YWl0IGltcG9ydChcIm1vYnhcIik7XG4gICAgY29uc3QgcHJlYWN0ID0gYXdhaXQgaW1wb3J0KFwicHJlYWN0XCIpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBvYnNlcnZhYmxlKHtcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7IGNsb3NlIH0gPSBzaG93TW9kYWwoe1xuICAgICAgICAgICAgY29udGVudHM6IHByZWFjdC5jcmVhdGVFbGVtZW50KEZ1bGxzY3JlZW5Nb2RhbCwge1xuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IGNhbmNlbCB3aXRob3V0IGEgdmFsdWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwcmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHN0eWxlOiB7IGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLCBnYXA6IDEwIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgcHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBzdHlsZTogeyBmb250V2VpZ2h0OiBcImJvbGRcIiB9IH0sIGBFbnRlciBzZWNyZXQgZm9yOiAke2tleX1gKSxcbiAgICAgICAgICAgICAgICAgICAgcHJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogeyBwYWRkaW5nOiAxMCwgZm9udFNpemU6IDE2IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbklucHV0OiAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YWx1ZSA9IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd246IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gXCJFbnRlclwiICYmIHN0YXRlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JhZ2VLZXksIHN0YXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShzdGF0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHByZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IHBhZGRpbmc6IDEwLCBmb250U2l6ZTogMTYsIGN1cnNvcjogXCJwb2ludGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oc3RvcmFnZUtleSwgc3RhdGUudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHN0YXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LCBcIlNhdmVcIiksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWNyZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2V0U2VjcmV0IGlzIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyLiBXZSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZSB1c2VyJ3MgZmlsZSBzeXN0ZW0gd2l0aCBzZXRTZWNyZXQgaW4gTm9kZUpTLlwiKTtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oZ2V0U3RvcmFnZUtleShrZXkpLCB2YWx1ZSk7XG59XG4iXX0=
|
|
139
|
-
/* _JS_SOURCE_HASH = "
|
|
139
|
+
/* _JS_SOURCE_HASH = "059a468ed50aafff48c682b57181b850933393c80cd3bc460912530e1d2ae39b"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.ellipsize = void 0;
|
|
4
4
|
function ellipsize(text, maxLength) {
|
|
@@ -9,4 +9,4 @@ function ellipsize(text, maxLength) {
|
|
|
9
9
|
}
|
|
10
10
|
exports.ellipsize = ellipsize;
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFDLElBQVksRUFBRSxTQUFpQjtJQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNoRCxDQUFDO0FBTEQsOEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZWxsaXBzaXplKHRleHQ6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA8PSBtYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnNsaWNlKDAsIG1heExlbmd0aCAtIDMpICsgXCIuLi5cIjtcbn1cbiJdfQ==
|
|
12
|
-
/* _JS_SOURCE_HASH = "
|
|
12
|
+
/* _JS_SOURCE_HASH = "42720f3fe753adb3976d4e2195d69f9ff6c408573751f8cdc6368d2988eac5c7"; */
|
package/misc/dist/zip.ts.cache
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.Zip = void 0;
|
|
4
4
|
const compileFlags_1 = require("socket-function/require/compileFlags");
|
|
@@ -6,4 +6,4 @@ const Zip_1 = require("socket-function/src/Zip");
|
|
|
6
6
|
Object.defineProperty(exports, "Zip", { enumerable: true, get: function () { return Zip_1.Zip; } , configurable: true});
|
|
7
7
|
(0, compileFlags_1.setFlag)(require, "pako", "allowclient", true);
|
|
8
8
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiemlwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLHVFQUErRDtBQUUvRCxpREFBOEM7QUFHckMsb0ZBSEEsU0FBRyxPQUdBO0FBRlosSUFBQSxzQkFBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgbWVhc3VyZUZuYyB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL3Byb2ZpbGluZy9tZWFzdXJlXCI7XG5pbXBvcnQgemxpYiBmcm9tIFwiemxpYlwiO1xuaW1wb3J0ICogYXMgcGFrbyBmcm9tIFwicGFrb1wiO1xuXG5pbXBvcnQgeyBzZXRGbGFnIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9yZXF1aXJlL2NvbXBpbGVGbGFnc1wiO1xuaW1wb3J0IHsgTWF5YmVQcm9taXNlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvdHlwZXNcIjtcbmltcG9ydCB7IFppcCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL1ppcFwiO1xuc2V0RmxhZyhyZXF1aXJlLCBcInBha29cIiwgXCJhbGxvd2NsaWVudFwiLCB0cnVlKTtcblxuZXhwb3J0IHsgWmlwIH07Il19
|
|
9
|
-
/* _JS_SOURCE_HASH = "
|
|
9
|
+
/* _JS_SOURCE_HASH = "e6f5e41c7cc18d3b9672f00b99c29319324d9ea5f7c2c16c89b5b3b27906d35f"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
/// <reference path="./node-forge-ed25519.d.ts" />
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
@@ -462,4 +462,4 @@ function getOwnNodeIdAllowUndefined() {
|
|
|
462
462
|
}
|
|
463
463
|
exports.getOwnNodeIdAllowUndefined = getOwnNodeIdAllowUndefined;
|
|
464
464
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsa0RBQWtEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRCwrbkJBQStuQjtBQUMvbkIsc0lBQXNJO0FBRXRJLGlEQUFpRDtBQUVqRCx1RUFBK0Q7QUFDL0Qsa0RBQW9DO0FBR3BDLHlEQUEwRDtBQUUxRCwwREFBK0I7QUFDL0Isb0RBQTRCO0FBQzVCLDZEQUFpRTtBQUNqRSxtRUFBOEY7QUFDOUYsNkRBQWtIO0FBQ2xILG1FQUFnRTtBQUNoRSw2REFBMEU7QUFDMUUscUVBQXVEO0FBQ3ZELHdDQUF1QztBQUV2QyxJQUFBLHNCQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEQsSUFBQSxzQkFBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRW5ELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUV6QixRQUFBLGtCQUFrQixHQUFHLHNDQUFzQyxDQUFDO0FBRTVELFFBQUEsa0JBQWtCLEdBQUcsY0FBYyxDQUFDO0FBR2pELFNBQVMsZ0JBQWdCLENBQUMsTUFBYztJQUNwQyxPQUFPLElBQUEsb0NBQVcsRUFBc0IsTUFBTSxFQUFFLDBCQUFrQixDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUlELFNBQWdCLGFBQWEsQ0FBQyxJQUFxQjtJQUMvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN2RCxJQUFJLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJ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QUFFO0lBQzdELElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixPQUFPLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVKLFNBQWdCLFlBQVk7SUFDeEIsSUFBSSxNQUFNLEdBQUcsK0JBQWMsQ0FBQyxhQUFhLENBQUM7SUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBTkQsb0NBTUM7QUFFRCxTQUFnQiwwQkFBMEI7SUFDdEMsT0FBTywrQkFBYyxDQUFDLGFBQWEsQ0FBQztBQUN4QyxDQUFDO0FBRkQsZ0VBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9ub2RlLWZvcmdlLWVkMjU1MTkuZC50c1wiIC8+XG5cbi8vIE5PVEU6IFdlIGNhbid0IHVzZSBjcnlwdG8uc3VidGxlIChub24tZXh0cmFjdGFibGUgQ3J5cHRvS2V5cykgZm9yIG91ciBrZXlzLCBiZWNhdXNlIHN1YnRsZSBpcyBhc3luY2hyb25vdXMsIGFuZCBldmVyeXRoaW5nIGhlcmUgKGtleSBnZW5lcmF0aW9uLCBjZXJ0IGNyZWF0aW9uLCBzaWduaW5nKSBtdXN0IGJlIGF2YWlsYWJsZSBzeW5jaHJvbm91c2x5LiBUaGUgb25seSByZWFsIGJlbmVmaXQgb2Ygc3VidGxlIGlzIHRoYXQgYSBjcm9zcy1zaXRlIHNjcmlwdGluZyBhdHRhY2sgY2FuJ3QgZXhmaWx0cmF0ZSB0aGUga2V5LiBXaGljaCwgd2hpbGUgbmljZSwgaXMgb2YgbWlub3IgYmVuZWZpdCwgYXMgdGhlIGNyb3NzLXNpdGUgc2NyaXB0IGNhbiBhbHJlYWR5IGRvIHF1aXRlIGEgYml0IG9mIGRhbWFnZSBhbnl3YXkgd2l0aCBhY2Nlc3MuIEFuZCBpZiB0aGF0IGhhcHBlbnMsIHRoZSBmaXJzdCB0aGluZyB0aGUgdXNlciBpcyBwcm9iYWJseSBnb2luZyB0byBkbyBpcyByZXNldCBhbGwgdGhlaXIgY3JlZGVudGlhbHMsIHdoaWNoIHNvbHZlcyB0aGUgY2FzZSBvZiB0aGUga2V5IGJlaW5nIGV4ZmlsdHJhdGVkIGFueXdheSAoYnkgdGVsbGluZyB0aGUgc2VydmVyIHRvIHN0b3AgdHJ1c3RpbmcgYWxsIGlkZW50aXRpZXMpLlxuLy8gTk9URTogV2UgYXJlIGp1c3Qgbm90IGdvaW5nIHRvIHN1cHBvcnQgSFRUUFMgYnJvd3NlciBjZXJ0cy4gT3VyIGNvZGUgaXMgcHVyZWx5IGZvciBpZGVudGlmaWNhdGlvbiwgYW5kIHNvIGl0IG9ubHkgc3VwcG9ydHMgRUQyNTUxOS5cblxuLy8gaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzUyODAjcGFnZS00MlxuXG5pbXBvcnQgeyBzZXRGbGFnIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9yZXF1aXJlL2NvbXBpbGVGbGFnc1wiO1xuaW1wb3J0ICogYXMgZm9yZ2UgZnJvbSBcIm5vZGUtZm9yZ2VcIjtcbmltcG9ydCBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCBmc1N5bmMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBjYWNoZSwgbGF6eSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhY2hpbmdcIjtcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCBzaGEyNjUgZnJvbSBcImpzLXNoYTI1NlwiO1xuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgeyB0cnVzdENlcnRpZmljYXRlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvY2VydFN0b3JlXCI7XG5pbXBvcnQgeyBtZWFzdXJlQmxvY2ssIG1lYXN1cmVGbmMsIG1lYXN1cmVXcmFwIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvcHJvZmlsaW5nL21lYXN1cmVcIjtcbmltcG9ydCB7IGdldE5vZGVJZERvbWFpbiwgZ2V0Tm9kZUlkRG9tYWluTWF5YmVVbmRlZmluZWQsIGdldE5vZGVJZExvY2F0aW9uIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbm9kZUNhY2hlXCI7XG5pbXBvcnQgeyBTb2NrZXRGdW5jdGlvbiB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vU29ja2V0RnVuY3Rpb25cIjtcbmltcG9ydCB7IHJlc2V0QWxsTm9kZUNhbGxGYWN0b3JpZXMgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9ub2RlQ2FjaGVcIjtcbmltcG9ydCB7IGdldEtleVN0b3JlIH0gZnJvbSBcIi4vcGVyc2lzdGVudExvY2FsU3RvcmFnZVwiO1xuaW1wb3J0IHsgZWxsaXBzaXplIH0gZnJvbSBcIi4uL3N0cmluZ3NcIjtcblxuc2V0RmxhZyhyZXF1aXJlLCBcIm5vZGUtZm9yZ2VcIiwgXCJhbGxvd2NsaWVudFwiLCB0cnVlKTtcbnNldEZsYWcocmVxdWlyZSwgXCJqcy1zaGEyNTZcIiwgXCJhbGxvd2NsaWVudFwiLCB0cnVlKTtcblxuY29uc3QgdGltZUluRGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuZXhwb3J0IGNvbnN0IENBX05PVF9GT1VORF9FUlJPUiA9IFwiMThhYTczMTgtZjg4Zi00ZDJkLWI0MWYtM2RhZjRhNDMzODI3XCI7XG5cbmV4cG9ydCBjb25zdCBpZGVudGl0eVN0b3JhZ2VLZXkgPSBcIm1hY2hpbmVDQV8xNFwiO1xuZXhwb3J0IHR5cGUgSWRlbnRpdHlTdG9yYWdlVHlwZSA9IHsgZG9tYWluOiBzdHJpbmc7IGNlcnRCNjQ6IHN0cmluZzsga2V5QjY0OiBzdHJpbmcgfTtcblxuZnVuY3Rpb24gZ2V0SWRlbnRpdHlTdG9yZShkb21haW46IHN0cmluZykge1xuICAgIHJldHVybiBnZXRLZXlTdG9yZTxJZGVudGl0eVN0b3JhZ2VUeXBlPihkb21haW4sIGlkZW50aXR5U3RvcmFnZUtleSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWDUwOUtleVBhaXIgeyBkb21haW46IHN0cmluZzsgY2VydDogQnVmZmVyOyBrZXk6IEJ1ZmZlcjsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uTmFtZShjZXJ0OiBCdWZmZXIgfCBzdHJpbmcpIHtcbiAgICBsZXQgc3ViamVjdCA9IG5ldyBjcnlwdG8uWDUwOUNlcnRpZmljYXRlKGNlcnQpLnN1YmplY3Q7XG4gICAgbGV0IHN1YmplY3RLVlBzID0gbmV3IE1hcChzdWJqZWN0LnNwbGl0KFwiLFwiKS5tYXAoeCA9PiB4LnRyaW0oKS5zcGxpdChcIj1cIikpLm1hcCh4ID0+IFt4WzBdLCB4LnNsaWNlKDEpLmpvaW4oXCI9XCIpXSkpO1xuICAgIGxldCBjb21tb25OYW1lID0gc3ViamVjdEtWUHMuZ2V0KFwiQ05cIik7XG4gICAgaWYgKCFjb21tb25OYW1lKSB0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbW1vbiBuYW1lIGluIHN1YmplY3Q6ICR7c3ViamVjdH1gKTtcbiAgICByZXR1cm4gY29tbW9uTmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVg1MDkoXG4gICAgY29uZmlnOiB7XG4gICAgICAgIGRvbWFpbjogc3RyaW5nO1xuICAgICAgICBpc3N1ZXI6IFg1MDlLZXlQYWlyIHwgXCJzZWxmXCI7XG4gICAgICAgIGxpZmVTcGFuOiBudW1iZXI7XG4gICAgICAgIGtleVBhaXI6IHtcbiAgICAgICAgICAgIHB1YmxpY0tleTogZm9yZ2UuRWQyNTUxOVB1YmxpY0tleTtcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IGZvcmdlLkVkMjU1MTlQcml2YXRlS2V5O1xuICAgICAgICB9O1xuICAgIH1cbik6IFg1MDlLZXlQYWlyIHtcbiAgICByZXR1cm4gbWVhc3VyZUJsb2NrKGZ1bmN0aW9uIGNyZWF0ZVg1MDkoKSB7XG4gICAgICAgIGxldCB7IGRvbWFpbiwgaXNzdWVyLCBsaWZlU3Bhbiwga2V5UGFpciB9ID0gY29uZmlnO1xuXG4gICAgICAgIGxldCBjZXJ0T2JqID0gZm9yZ2UucGtpLmNyZWF0ZUNlcnRpZmljYXRlKCk7XG4gICAgICAgIGNlcnRPYmoucHVibGljS2V5ID0ga2V5UGFpci5wdWJsaWNLZXkgYXMgdW5rbm93biBhcyBmb3JnZS5wa2kuUHVibGljS2V5O1xuICAgICAgICBjZXJ0T2JqLnNlcmlhbE51bWJlciA9IFwiMDFcIjtcbiAgICAgICAgLy8gR2l2ZSBpdCA1IG1pbnV0ZXMgYmVmb3JlIG5vdy4gSWYgd2UgZ2l2ZSBpdCB0b28gbXVjaCB0aW1lLCBpdCBjYW4gbG9vayBsaWtlIHRoZSBjZXJ0IGlzIHJlYWxseSBvbGQsIHdoaWNoIHdpbGwgdHJpZ2dlciB2YXJpb3VzIHByb2Nlc3NlcyB0byB0cnkgdG8gZ2V0IGEgZnJlc2hlciBvbmUgKGFzIGlmIGl0IGxhc3RzIGZvciAxIGhvdXIsIGJ1dCB3ZSBzZXQgbm90QmVmb3JlIHRvIDEgbW9udGggYWdvLCBpdCBsb29rcyAxIG1vbnRoIG9sZCwgYW5kIHNvIGFsbW9zdCBleHBpcmVkLCB3aGVuIGl0IGlzbid0Li4uKVxuICAgICAgICBjZXJ0T2JqLnZhbGlkaXR5Lm5vdEJlZm9yZSA9IG5ldyBEYXRlKERhdGUubm93KCkgLSAxMDAwICogNjAgKiA1KTtcbiAgICAgICAgY2VydE9iai52YWxpZGl0eS5ub3RBZnRlciA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBsaWZlU3Bhbik7XG5cbiAgICAgICAgY29uc3QgY29tbW9uTmFtZUF0dHJzID0gW3sgbmFtZTogXCJjb21tb25OYW1lXCIsIHZhbHVlOiBkb21haW4gfV07XG4gICAgICAgIGNlcnRPYmouc2V0U3ViamVjdChjb21tb25OYW1lQXR0cnMpO1xuXG4gICAgICAgIGlmIChpc3N1ZXIgPT09IFwic2VsZlwiKSB7XG4gICAgICAgICAgICBjZXJ0T2JqLnNldElzc3Vlcihjb21tb25OYW1lQXR0cnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VydE9iai5zZXRJc3N1ZXIoZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbVBlbShpc3N1ZXIuY2VydC50b1N0cmluZygpKS5zdWJqZWN0LmF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV4dGVuc2lvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgaXNDQSA9IGlzc3VlciA9PT0gXCJzZWxmXCI7XG4gICAgICAgIGlmIChpc0NBKSB7XG4gICAgICAgICAgICBleHRlbnNpb25zLnB1c2goeyBuYW1lOiBcImJhc2ljQ29uc3RyYWludHNcIiwgY0E6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxIb3N0RG9tYWluID0gXCIxMjctMC0wLTEuXCIgKyBkb21haW4uc3BsaXQoXCIuXCIpLnNsaWNlKC0yKS5qb2luKFwiLlwiKTtcblxuICAgICAgICBleHRlbnNpb25zLnB1c2goLi4uW1xuICAgICAgICAgICAgeyBuYW1lOiBcImtleVVzYWdlXCIsIGtleUNlcnRTaWduOiBpc0NBLCBkaWdpdGFsU2lnbmF0dXJlOiB0cnVlLCBub25SZXB1ZGlhdGlvbjogdHJ1ZSwga2V5RW5jaXBoZXJtZW50OiB0cnVlLCBkYXRhRW5jaXBoZXJtZW50OiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6IFwic3ViamVjdEtleUlkZW50aWZpZXJcIiB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic3ViamVjdEFsdE5hbWVcIixcbiAgICAgICAgICAgICAgICBhbHROYW1lczogW1xuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IDIsIHZhbHVlOiBkb21haW4gfSxcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAyLCB2YWx1ZTogXCIqLlwiICsgZG9tYWluIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdHlwZTogMiwgdmFsdWU6IGxvY2FsSG9zdERvbWFpbiB9LFxuICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBObyBsb25nZXIgYWxsb3cgMTI3LjAuMC4xICh7IHR5cGU6IDcsIGlwOiBcIjEyNy4wLjAuMVwiIH0pLCB0byBtYWtlIHRoaXMgbW9yZSBzZWN1cmUuIFdlIG1pZ2h0IGVuYWJsZSB0aGlzIGJlaGF2aW9yIGJlaGluZCBhIGZsYWcsIGZvciBkZXZlbG9wbWVudC5cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gTk9URTogbmFtZUNvbnN0cmFpbnRzIHJlcXVpcmUgb3VyIGZvcmtlZCBub2RlLWZvcmdlIChcIm5vZGUtZm9yZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vc2xpZnRpc3QvZm9yZ2UjZTYxODE4MWI0NjliMDdiZGM3MGI5NjhiMDM5MWJlYjhlZjVmZWNkNlwiKS4gQ2hyb21lIGlnbm9yZXMgdGhlbSAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTA3MjA4MyksIGJ1dCBvdXIgb3duIHZhbGlkYXRpb24gKHZhbGlkYXRlQ0FDZXJ0L3ZhbGlkYXRlQ2VydGlmaWNhdGUpIGVuZm9yY2VzIHRoZW0uXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJuYW1lQ29uc3RyYWludHNcIixcbiAgICAgICAgICAgICAgICBwZXJtaXR0ZWRTdWJ0cmVlczogW1xuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IDIsIHZhbHVlOiBmb3JnZS51dGlsLmVuY29kZVV0ZjgoZG9tYWluKSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IDIsIHZhbHVlOiBmb3JnZS51dGlsLmVuY29kZVV0ZjgobG9jYWxIb3N0RG9tYWluKSB9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBjZXJ0T2JqLnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7XG5cblxuICAgICAgICBtZWFzdXJlQmxvY2soZnVuY3Rpb24gc2lnbigpIHtcbiAgICAgICAgICAgIGlmIChpc3N1ZXIgPT09IFwic2VsZlwiKSB7XG4gICAgICAgICAgICAgICAgY2VydE9iai5zaWduKGtleVBhaXIucHJpdmF0ZUtleSBhcyBhbnkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjZXJ0T2JqLnNpZ24oZm9yZ2UuZWQyNTUxOS5wcml2YXRlS2V5RnJvbVBlbShpc3N1ZXIua2V5LnRvU3RyaW5nKCkpIGFzIGFueSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtZWFzdXJlQmxvY2soZnVuY3Rpb24gdG9QZW1zKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkb21haW4sXG4gICAgICAgICAgICAgICAgY2VydDogQnVmZmVyLmZyb20oZm9yZ2UucGtpLmNlcnRpZmljYXRlVG9QZW0oY2VydE9iaikpLFxuICAgICAgICAgICAgICAgIGtleTogQnVmZmVyLmZyb20ocHJpdmF0ZUtleVRvUGVtKGtleVBhaXIucHJpdmF0ZUtleSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJpdmF0ZUtleVRvUGVtKGtleTogZm9yZ2UuRWQyNTUxOVByaXZhdGVLZXkpIHtcbiAgICByZXR1cm4gZm9yZ2UuZWQyNTUxOS5wcml2YXRlS2V5VG9QZW0oa2V5KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNlcnQoUEVNb3JERVI6IHN0cmluZyB8IEJ1ZmZlcikge1xuICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVGcm9tUGVtKG5vcm1hbGl6ZUNlcnRUb1BFTShQRU1vckRFUikpO1xufVxuXG5mdW5jdGlvbiBnZXRFRDI1NTE5UHVibGljS2V5KGNlcnRQYXJzZWQ6IGZvcmdlLnBraS5DZXJ0aWZpY2F0ZSk6IGZvcmdlLkVkMjU1MTlQdWJsaWNLZXkge1xuICAgIGxldCBwdWJsaWNLZXkgPSBjZXJ0UGFyc2VkLnB1YmxpY0tleTtcbiAgICBpZiAoIShcInB1YmxpY0tleUJ5dGVzXCIgaW4gcHVibGljS2V5KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9ubHkgRUQyNTUxOSBjZXJ0aWZpY2F0ZXMgYXJlIHN1cHBvcnRlZCwgdGhlIGNlcnRpZmljYXRlIHB1YmxpYyBrZXkgaXMgbm90IEVEMjU1MTkgKHN1YmplY3Q6ICR7Y2VydFBhcnNlZC5zdWJqZWN0LmdldEZpZWxkKFwiQ05cIik/LnZhbHVlfSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIHB1YmxpY0tleSBhcyB1bmtub3duIGFzIGZvcmdlLkVkMjU1MTlQdWJsaWNLZXk7XG59XG5cbi8vIEdldHMgYSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoZSBwdWJsaWMga2V5XG5leHBvcnQgZnVuY3Rpb24gZ2V0UHVibGljSWRlbnRpZmllcihQRU1vckRFUjogc3RyaW5nIHwgQnVmZmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oZ2V0RUQyNTUxOVB1YmxpY0tleShwYXJzZUNlcnQoUEVNb3JERVIpKS5wdWJsaWNLZXlCeXRlcyk7XG59XG5cbmV4cG9ydCBjb25zdCBzaWduID0gbWVhc3VyZVdyYXAoZnVuY3Rpb24gc2lnbihrZXlQYWlyOiB7IGtleTogc3RyaW5nIHwgQnVmZmVyIH0sIGRhdGE6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGxldCBkYXRhU3RyID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgbGV0IHByaXZhdGVLZXkgPSBmb3JnZS5lZDI1NTE5LnByaXZhdGVLZXlGcm9tUGVtKGtleVBhaXIua2V5LnRvU3RyaW5nKCkpO1xuICAgIHJldHVybiBwcml2YXRlS2V5LnNpZ24oZGF0YVN0cik7XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeShjZXJ0OiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBkYXRhOiB1bmtub3duKSB7XG4gICAgbGV0IGNlcnRPYmogPSBwYXJzZUNlcnQoY2VydCk7XG4gICAgbGV0IHB1YmxpY0tleSA9IGdldEVEMjU1MTlQdWJsaWNLZXkoY2VydE9iaik7XG4gICAgbGV0IGRhdGFTdHIgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBpZiAoIXB1YmxpY0tleS52ZXJpZnkoZGF0YVN0ciwgc2lnbmF0dXJlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkLiBTaWduYXR1cmU6ICR7SlNPTi5zdHJpbmdpZnkoc2lnbmF0dXJlKX0gfCBEYXRhOiAke2VsbGlwc2l6ZShkYXRhU3RyLCAxMDI0KX1gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNlcnRUb1BFTShQRU1vckRFUjogc3RyaW5nIHwgQnVmZmVyKTogc3RyaW5nIHtcbiAgICBpZiAoUEVNb3JERVIudG9TdHJpbmcoKS5zdGFydHNXaXRoKFwiLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXCIpKSB7XG4gICAgICAgIHJldHVybiBQRU1vckRFUi50b1N0cmluZygpO1xuICAgIH1cbiAgICBQRU1vckRFUiA9IFBFTW9yREVSLnRvU3RyaW5nKFwiYmFzZTY0XCIpO1xuICAgIHJldHVybiBcIi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLVxcblwiICsgUEVNb3JERVIgKyBcIlxcbi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS1cIjtcbn1cblxuLy8gQmFzZTMyIChSRkMgNDY0OCwgbG93ZXJjYXNlLCB1bnBhZGRlZCksIGFzIGRvbWFpbiBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSwgd2hpY2ggcnVsZXMgb3V0IGJhc2U2NC9oZXgtd2l0aC1jYXNlXG5jb25zdCBiYXNlMzJBbHBoYWJldCA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoyMzQ1NjdcIjtcbmZ1bmN0aW9uIGVuY29kZUJhc2UzMihieXRlczogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBsZXQgYml0Q291bnQgPSAwO1xuICAgIGxldCB2YWx1ZSA9IDA7XG4gICAgZm9yIChsZXQgYnl0ZSBvZiBieXRlcykge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA4KSB8IGJ5dGU7XG4gICAgICAgIGJpdENvdW50ICs9IDg7XG4gICAgICAgIHdoaWxlIChiaXRDb3VudCA+PSA1KSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gYmFzZTMyQWxwaGFiZXRbKHZhbHVlID4+PiAoYml0Q291bnQgLSA1KSkgJiAzMV07XG4gICAgICAgICAgICBiaXRDb3VudCAtPSA1O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChiaXRDb3VudCA+IDApIHtcbiAgICAgICAgcmVzdWx0ICs9IGJhc2UzMkFscGhhYmV0Wyh2YWx1ZSA8PCAoNSAtIGJpdENvdW50KSkgJiAzMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdldERvbWFpblBhcnRGcm9tUHVibGljS2V5KHB1YmxpY0tleTogeyBwdWJsaWNLZXlCeXRlczogQnVmZmVyIH0gfCBCdWZmZXIpIHtcbiAgICBsZXQgYnl0ZXM6IEJ1ZmZlcjtcbiAgICBpZiAoXCJwdWJsaWNLZXlCeXRlc1wiIGluIHB1YmxpY0tleSkge1xuICAgICAgICBieXRlcyA9IHB1YmxpY0tleS5wdWJsaWNLZXlCeXRlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICBieXRlcyA9IHB1YmxpY0tleTtcbiAgICB9XG4gICAgcmV0dXJuIFwiYlwiICsgZW5jb2RlQmFzZTMyKEJ1ZmZlci5mcm9tKHNoYTI2NS5zaGEyNTYuYXJyYXkoQnVmZmVyLmZyb20oYnl0ZXMpKSkpLnNsaWNlKDAsIDIwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ0FDZXJ0KGRvbWFpbjogc3RyaW5nLCBjZXJ0OiBzdHJpbmcgfCBCdWZmZXIpIHtcbiAgICBsZXQgY2VydFBhcnNlZCA9IHBhcnNlQ2VydChjZXJ0KTtcblxuICAgIGxldCBzdWJqZWN0ID0gY2VydFBhcnNlZC5zdWJqZWN0LmdldEZpZWxkKFwiQ05cIikudmFsdWUgYXMgc3RyaW5nO1xuICAgIGxldCBsb2NhbGhvc3REb21haW4gPSBcIjEyNy0wLTAtMS5cIiArIHN1YmplY3Quc3BsaXQoXCIuXCIpLnNsaWNlKC0yKS5qb2luKFwiLlwiKTtcblxuICAgIGxldCBkb21haW5QYXJ0cyA9IHN1YmplY3Quc3BsaXQoXCIuXCIpLnJldmVyc2UoKTtcblxuICAgIGxldCByb290RG9tYWluUGFyc2VkID0gW2RvbWFpblBhcnRzLnNoaWZ0KCksIGRvbWFpblBhcnRzLnNoaWZ0KCldLnJldmVyc2UoKS5qb2luKFwiLlwiKTtcbiAgICBpZiAocm9vdERvbWFpblBhcnNlZCAhPT0gZG9tYWluKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50LCBhcyBvdXIgdHJ1c3Qgc3RvcmUgY29udGFpbnMgbW9yZSB0aGVuIGp1c3QgT1VSIGNlcnRpZmljYXRlcywgc28gaWYgd2UgYWxsb3cgYW55IGRvbWFpbnMgdGhlbiByZWFsIGRvbWFpbnMgY2FuIGltcGVyc29uYXRlIGFueW9uZSEgSXQgaGFzIHRvIGJlIE9VUiBkb21haW4gdG8gYmUgdHJ1c3RlZCFcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDZXJ0aWZpY2F0ZSByb290IGRvbWFpbiBzaG91bGQgYmUgJHtkb21haW59LCBidXQgaXMgJHtyb290RG9tYWluUGFyc2VkfWApO1xuICAgIH1cbiAgICAvLyBUT0RPOiBNYXliZSBqdXN0IHNraXAgaWYgaXQgaXNuJ3QgYSBoYXNoIHN0cmluZz9cbiAgICBpZiAoZG9tYWluUGFydHNbMF0gPT09IFwibm9wcm94eVwiKSB7XG4gICAgICAgIGRvbWFpblBhcnRzLnNoaWZ0KCk7XG4gICAgfVxuXG4gICAgbGV0IGNlcnRFeHBlY3RlZFB1YmxpY0tleVBhcnQgPSAoZG9tYWluUGFydHMuc2hpZnQoKSB8fCBcIlwiKS5zcGxpdChcIi1cIikuc2xpY2UoLTEpWzBdO1xuICAgIGxldCBjZXJ0QWN0dWFsUHVibGljS2V5UGFydCA9IGdldERvbWFpblBhcnRGcm9tUHVibGljS2V5KGdldEVEMjU1MTlQdWJsaWNLZXkoY2VydFBhcnNlZCkpO1xuICAgIGlmIChjZXJ0RXhwZWN0ZWRQdWJsaWNLZXlQYXJ0ICE9PSBjZXJ0QWN0dWFsUHVibGljS2V5UGFydCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENlcnRpZmljYXRlIHB1YmxpYyBrZXkgaW4gdGhlIHVybCBpcyAke2NlcnRFeHBlY3RlZFB1YmxpY0tleVBhcnR9LCBidXQgaW4gdGhlIGNlcnQgaXMgJHtjZXJ0QWN0dWFsUHVibGljS2V5UGFydH1gKTtcbiAgICB9XG5cbiAgICAvLyBBTFNPLCByZXF1aXJlIG5hbWUgY29uc3RyYWludHMgdG8gYmUgcHJlc2VudCwgYW5kIHRvIHJlc3RyaWN0IHRvIHRoZSBcIkNOXCJcbiAgICBsZXQgbmFtZUNvbnN0cmFpbnRzID0gY2VydFBhcnNlZC5nZXRFeHRlbnNpb24oXCJuYW1lQ29uc3RyYWludHNcIikgYXMgYW55O1xuICAgIGlmICghbmFtZUNvbnN0cmFpbnRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2VydGlmaWNhdGUgbXVzdCBoYXZlIG5hbWVDb25zdHJhaW50c2ApO1xuICAgIH1cbiAgICBsZXQgc3VidHJlZXMgPSBuYW1lQ29uc3RyYWludHMucGVybWl0dGVkU3VidHJlZXM7XG4gICAgaWYgKCFzdWJ0cmVlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENlcnRpZmljYXRlIG11c3QgaGF2ZSBuYW1lQ29uc3RyYWludHMucGVybWl0dGVkU3VidHJlZXNgKTtcbiAgICB9XG4gICAgbGV0IHN1YnRyZWVWYWx1ZXMgPSBzdWJ0cmVlcy5tYXAoKHg6IGFueSkgPT4geC52YWx1ZSk7XG4gICAgLy8gSWdub3JlIGxvY2FsaG9zdERvbWFpbiwgYXMgaXQgY2FuIGFsd2F5cyBzYWZlbHkgYmUgYWxsb3dlZCAodGhlIHNhbWUgbWFjaGluZSBpcyBhbHdheXMgYWxsb3dlZCkuXG4gICAgc3VidHJlZVZhbHVlcyA9IHN1YnRyZWVWYWx1ZXMuZmlsdGVyKCh4OiBzdHJpbmcpID0+IHggIT09IGxvY2FsaG9zdERvbWFpbik7XG4gICAgaWYgKHN1YnRyZWVWYWx1ZXMubGVuZ3RoICE9PSAxIHx8IHN1YnRyZWVWYWx1ZXNbMF0gIT09IHN1YmplY3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDZXJ0aWZpY2F0ZSBtdXN0IGhhdmUgYSBzaW5nbGUgY29uc3RyYWluZWQgZG9tYWluIChoYWQgJHtKU09OLnN0cmluZ2lmeShzdWJ0cmVlVmFsdWVzKX0pYCk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGVBbHROYW1lcyhjZXJ0UGFyc2VkLCBzdWJqZWN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ2VydGlmaWNhdGUoZG9tYWluOiBzdHJpbmcsIGNlcnQ6IEJ1ZmZlciB8IHN0cmluZywgaXNzdWVyQ2VydDogQnVmZmVyIHwgc3RyaW5nKSB7XG4gICAgdmFsaWRhdGVDQUNlcnQoZG9tYWluLCBpc3N1ZXJDZXJ0KTtcblxuICAgIGxldCBjZXJ0UGFyc2VkID0gcGFyc2VDZXJ0KGNlcnQpO1xuICAgIGxldCBzdWJqZWN0ID0gY2VydFBhcnNlZC5zdWJqZWN0LmdldEZpZWxkKFwiQ05cIikudmFsdWUgYXMgc3RyaW5nO1xuICAgIGxldCBsb2NhbGhvc3REb21haW4gPSBcIjEyNy0wLTAtMS5cIiArIHN1YmplY3Quc3BsaXQoXCIuXCIpLnNsaWNlKC0yKS5qb2luKFwiLlwiKTtcblxuICAgIGxldCBkb21haW5QYXJ0cyA9IHN1YmplY3Quc3BsaXQoXCIuXCIpLnJldmVyc2UoKTtcblxuICAgIGxldCByb290RG9tYWluUGFyc2VkID0gW2RvbWFpblBhcnRzLnNoaWZ0KCksIGRvbWFpblBhcnRzLnNoaWZ0KCldLnJldmVyc2UoKS5qb2luKFwiLlwiKTtcbiAgICBpZiAocm9vdERvbWFpblBhcnNlZCAhPT0gZG9tYWluKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2VydGlmaWNhdGUgcm9vdCBkb21haW4gc2hvdWxkIGJlICR7ZG9tYWlufSwgYnV0IGlzICR7cm9vdERvbWFpblBhcnNlZH1gKTtcbiAgICB9XG4gICAgLy8gVE9ETzogTWF5YmUganVzdCBza2lwIGlmIGl0IGlzbid0IGEgaGFzaCBzdHJpbmc/XG4gICAgaWYgKGRvbWFpblBhcnRzWzBdID09PSBcIm5vcHJveHlcIikge1xuICAgICAgICBkb21haW5QYXJ0cy5zaGlmdCgpO1xuICAgIH1cblxuICAgIGxldCBpc3N1ZXJDZXJ0UGFyc2VkID0gcGFyc2VDZXJ0KGlzc3VlckNlcnQpO1xuXG4gICAgbGV0IGlzc3VlckV4cGVjdGVkUHVibGljS2V5UGFydCA9IGRvbWFpblBhcnRzLnNoaWZ0KCkgfHwgXCJcIjtcbiAgICBsZXQgaXNzdWVyQWN0dWFsUHVibGljS2V5UGFydCA9IGdldERvbWFpblBhcnRGcm9tUHVibGljS2V5KGdldEVEMjU1MTlQdWJsaWNLZXkoaXNzdWVyQ2VydFBhcnNlZCkpO1xuICAgIGlmIChpc3N1ZXJFeHBlY3RlZFB1YmxpY0tleVBhcnQgIT09IGlzc3VlckFjdHVhbFB1YmxpY0tleVBhcnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJc3N1ZXIgcHVibGljIGtleSBpbiB0aGUgdXJsIGlzICR7aXNzdWVyRXhwZWN0ZWRQdWJsaWNLZXlQYXJ0fSwgYnV0IGluIHRoZSBjZXJ0IGlzICR7aXNzdWVyQWN0dWFsUHVibGljS2V5UGFydH1gKTtcbiAgICB9XG5cbiAgICAvLyBUYWtlIHRoZSBsYXN0IHBhcnRcbiAgICBsZXQgY2VydEV4cGVjdGVkUHVibGljS2V5UGFydCA9IGRvbWFpblBhcnRzLnNoaWZ0KCkgfHwgXCJcIjtcbiAgICBsZXQgY2VydEFjdHVhbFB1YmxpY0tleVBhcnQgPSBnZXREb21haW5QYXJ0RnJvbVB1YmxpY0tleShnZXRFRDI1NTE5UHVibGljS2V5KGNlcnRQYXJzZWQpKTtcbiAgICBpZiAoY2VydEV4cGVjdGVkUHVibGljS2V5UGFydCAhPT0gY2VydEFjdHVhbFB1YmxpY0tleVBhcnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDZXJ0aWZpY2F0ZSBwdWJsaWMga2V5IGluIHRoZSB1cmwgaXMgJHtjZXJ0RXhwZWN0ZWRQdWJsaWNLZXlQYXJ0fSwgYnV0IGluIHRoZSBjZXJ0IGlzICR7Y2VydEFjdHVhbFB1YmxpY0tleVBhcnR9YCk7XG4gICAgfVxuXG5cbiAgICBsZXQgbmFtZUNvbnN0cmFpbnRzID0gaXNzdWVyQ2VydFBhcnNlZC5nZXRFeHRlbnNpb24oXCJuYW1lQ29uc3RyYWludHNcIikgYXMgYW55O1xuICAgIGlmICghbmFtZUNvbnN0cmFpbnRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ0EgbXVzdCBoYXZlIG5hbWVDb25zdHJhaW50c2ApO1xuICAgIH1cbiAgICBsZXQgc3VidHJlZXMgPSBuYW1lQ29uc3RyYWludHMucGVybWl0dGVkU3VidHJlZXM7XG4gICAgaWYgKCFzdWJ0cmVlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENBIG11c3QgaGF2ZSBuYW1lQ29uc3RyYWludHMucGVybWl0dGVkU3VidHJlZXNgKTtcbiAgICB9XG4gICAgbGV0IHN1YnRyZWVWYWx1ZXMgPSBzdWJ0cmVlcy5tYXAoKHg6IGFueSkgPT4geC52YWx1ZSk7XG4gICAgLy8gSWdub3JlIGxvY2FsaG9zdERvbWFpbiwgYXMgaXQgY2FuIGFsd2F5cyBzYWZlbHkgYmUgYWxsb3dlZCAodGhlIHNhbWUgbWFjaGluZSBpcyBhbHdheXMgYWxsb3dlZCkuXG4gICAgc3VidHJlZVZhbHVlcyA9IHN1YnRyZWVWYWx1ZXMuZmlsdGVyKCh4OiBzdHJpbmcpID0+IHggIT09IGxvY2FsaG9zdERvbWFpbik7XG4gICAgaWYgKHN1YnRyZWVWYWx1ZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ0EgbXVzdCBoYXZlIGEgc2luZ2xlIGNvbnN0cmFpbmVkIGRvbWFpbiAoaGFkICR7SlNPTi5zdHJpbmdpZnkoc3VidHJlZVZhbHVlcyl9KWApO1xuICAgIH1cblxuICAgIGxldCBzdWJ0cmVlID0gc3VidHJlZVZhbHVlc1swXTtcbiAgICBpZiAoc3VidHJlZSAhPT0gc3ViamVjdCAmJiAhc3ViamVjdC5lbmRzV2l0aChcIi5cIiArIHN1YnRyZWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2VydGlmaWNhdGUgbXVzdCBiZSBhIHN1YnRyZWUgb2YgdGhlIENBIChDQTogJHtzdWJ0cmVlfSwgY2VydDogJHtzdWJqZWN0fSlgKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUFsdE5hbWVzKGNlcnRQYXJzZWQsIHN1YmplY3QpO1xuXG4gICAgLy8gVmVyaWZ5IGlzc3VlciBBQ1RVQUxMWSBzaWduZWQgY2VydFBhcnNlZFxuICAgIGlmICghaXNzdWVyQ2VydFBhcnNlZC52ZXJpZnkoY2VydFBhcnNlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJc3N1ZXIgZGlkIG5vdCBzaWduIGNlcnRpZmljYXRlYCk7XG4gICAgfVxufVxuXG4vLyBSZXF1aXJlIGFsdCBuYW1lcyB0byBiZSBlaXRoZXIgZXF1YWwgdG8gXCJDTlwiLCBvciBhIHN1YnRyZWUgb2YgXCJDTlwiXG5mdW5jdGlvbiB2YWxpZGF0ZUFsdE5hbWVzKGNlcnRQYXJzZWQ6IGZvcmdlLnBraS5DZXJ0aWZpY2F0ZSwgc3ViamVjdDogc3RyaW5nKSB7XG4gICAgbGV0IGxvY2FsaG9zdERvbWFpbiA9IFwiMTI3LTAtMC0xLlwiICsgc3ViamVjdC5zcGxpdChcIi5cIikuc2xpY2UoLTIpLmpvaW4oXCIuXCIpO1xuXG4gICAgbGV0IGFsdE5hbWVzT2JqID0gY2VydFBhcnNlZC5nZXRFeHRlbnNpb24oXCJzdWJqZWN0QWx0TmFtZVwiKSBhcyBhbnk7XG4gICAgbGV0IGFsdE5hbWVzID0gYWx0TmFtZXNPYmo/LmFsdE5hbWVzLm1hcCgoeDogYW55KSA9PiB4LnZhbHVlKTtcbiAgICAvLyBBbGxvdyBsb2NhbGhvc3REb21haW4sIGFzIGl0IGNhbiBhbHdheXMgc2FmZWx5IGJlIGFsbG93ZWRcbiAgICBhbHROYW1lcyA9IGFsdE5hbWVzLmZpbHRlcigoeDogc3RyaW5nKSA9PiB4ICE9PSBsb2NhbGhvc3REb21haW4pO1xuICAgIGlmIChcbiAgICAgICAgYWx0TmFtZXMuc29tZSgoeDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICB4ID09PSBzdWJqZWN0XG4gICAgICAgICAgICAgICAgfHwgeC5lbmRzV2l0aChcIi5cIiArIHN1YmplY3QpXG4gICAgICAgICAgICAgICAgLy8gTk9URTogV2UgZG9uJ3QgYWxsb3cgMTI3LjAuMC4xICh8fCB4ID09PSBCdWZmZXIuZnJvbShbMTI3LCAwLCAwLCAxXSkudG9TdHJpbmcoKSksIGJlY2F1c2UgaXQgaXMgc28gZWFzeSB0byBwdWJsaXNoIGEgMTI3LjAuMC4xIEEgcmVjb3JkLCBhbmQgZXZlbiB0byBnZW5lcmF0ZSBhIHJlYWwgY2VydCwgc28gd2Ugc2hvdWxkIGp1c3QgZG8gdGhhdCwgYW5kIGtlZXAgaXQgc2VjdXJlLiBJZiB3ZSBuZWVkIHRoaXMgZm9yIGRldmVsb3BtZW50IHdlIGNhbiBwdXQgaXQgYmVoaW5kIGEgZmxhZywgc28gbm9uLWRldmVsb3BtZW50IGluc3RhbmNlcyBhcmUgc3RpbGwgc2VjdXJlLlxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhbHQgbmFtZXMuIE11c3QgYmUgc3VidHJlZXMgb2YgdGhlIHN1YmplY3QgKENOKSAke0pTT04uc3RyaW5naWZ5KHN1YmplY3QpfSwgd2FzICR7SlNPTi5zdHJpbmdpZnkoYWx0TmFtZXMpfWApO1xuICAgIH1cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVLZXlQYWlyKCkge1xuICAgIHJldHVybiBtZWFzdXJlQmxvY2soZnVuY3Rpb24gZ2VuZXJhdGVLZXlQYWlyKCkge1xuICAgICAgICAvLyBOT1RFOiBXZSB1c2UgRUQyNTUxOSBiZWNhdXNlIGl0IGNhbiBnZW5lcmF0ZSBrZXlzIGFib3V0IDEwWCBmYXN0ZXIgdGhhbiBSU0EgKHdoaWNoIGlzIHN0aWxsIHNsb3csIH42bXMgb24gbXkgbWFjaGluZSwgc28gd2UgREVGSU5JVEVMWSBkb24ndCB3YW50IGl0IHRvIGJlIDEwWCBzbG93ZXIhKSAtIGh0dHBzOi8vc2VjdXJpdHkuc3RhY2tleGNoYW5nZS5jb20vYS8yMzY5NDMvMjgyMzY3XG4gICAgICAgIHJldHVybiBmb3JnZS5lZDI1NTE5LmdlbmVyYXRlS2V5UGFpcigpO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUZXN0Q0EoZG9tYWluOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXlQYWlyID0gZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgbGV0IGNhUHVibGljS2V5UGFydCA9IGdldERvbWFpblBhcnRGcm9tUHVibGljS2V5KGtleVBhaXIucHVibGljS2V5KTtcbiAgICBsZXQgZnVsbERvbWFpbiA9IGAke2NhUHVibGljS2V5UGFydH0uJHtkb21haW59YDtcbiAgICByZXR1cm4gY3JlYXRlWDUwOSh7IGRvbWFpbjogZnVsbERvbWFpbiwgaXNzdWVyOiBcInNlbGZcIiwga2V5UGFpciwgbGlmZVNwYW46IHRpbWVJbkRheSAqIDM2NSAqIDIwIH0pO1xufVxuXG5sZXQgaWRlbnRpdHlDQSA9IGNhY2hlKChkb21haW46IHN0cmluZykgPT4gbGF6eSgoKTogWDUwOUtleVBhaXIgPT4ge1xuICAgIGxldCBpZGVudGl0eUNBQ2FjaGVkID0gZ2V0SWRlbnRpdHlTdG9yZShkb21haW4pO1xuICAgIGxldCBjYUNhY2hlZCA9IGlkZW50aXR5Q0FDYWNoZWQuZ2V0KCk7XG4gICAgaWYgKCFjYUNhY2hlZCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgR2VuZXJhdGluZyBuZXcgaWRlbnRpdHkgQ0FgKTtcbiAgICAgICAgY29uc3Qga2V5UGFpciA9IGdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAgICBsZXQgY2FQdWJsaWNLZXlQYXJ0ID0gZ2V0RG9tYWluUGFydEZyb21QdWJsaWNLZXkoa2V5UGFpci5wdWJsaWNLZXkpO1xuICAgICAgICBsZXQgZnVsbERvbWFpbiA9IGAke2NhUHVibGljS2V5UGFydH0uJHtkb21haW59YDtcblxuICAgICAgICBsZXQgdmFsdWUgPSBjcmVhdGVYNTA5KHsgZG9tYWluOiBmdWxsRG9tYWluLCBpc3N1ZXI6IFwic2VsZlwiLCBrZXlQYWlyLCBsaWZlU3BhbjogdGltZUluRGF5ICogMzY1ICogMjAgfSk7XG5cbiAgICAgICAgY2FDYWNoZWQgPSB7XG4gICAgICAgICAgICBkb21haW46IHZhbHVlLmRvbWFpbixcbiAgICAgICAgICAgIGNlcnRCNjQ6IHZhbHVlLmNlcnQudG9TdHJpbmcoXCJiYXNlNjRcIiksXG4gICAgICAgICAgICBrZXlCNjQ6IHZhbHVlLmtleS50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgICAgfTtcbiAgICAgICAgaWRlbnRpdHlDQUNhY2hlZC5zZXQoY2FDYWNoZWQpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICBkb21haW46IGNhQ2FjaGVkLmRvbWFpbixcbiAgICAgICAgY2VydDogQnVmZmVyLmZyb20oY2FDYWNoZWQuY2VydEI2NCwgXCJiYXNlNjRcIiksXG4gICAgICAgIGtleTogQnVmZmVyLmZyb20oY2FDYWNoZWQua2V5QjY0LCBcImJhc2U2NFwiKSxcbiAgICB9O1xuICAgIHRydXN0Q2VydGlmaWNhdGUocmVzdWx0LmNlcnQudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn0pKTtcblxuLy8gSU1QT1JUQU5UISBXZSBkbyBub3QgZW1iZWQgYW55IGRlYnVnIGluZm8gaW4gdGhpcyBkb21haW4uIElmIHdlIGRpZCwgaXQgd291bGQgYmUgdXNlZnVsLCBidXQuLi4gcG90ZW50YWxseSBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIGFzIGlmIHRoZSBkZWJ1ZyBpbmZvIChzdWNoIGFzIGEgcHJlZml4KSBpcyB1c2VkIHRvIGlkZW50aWZ5IHdoYXQgYSBjZXJ0aWZpY2F0ZSBpcyBmb3IsIGl0IHdvdWxkIGJlIGVhc3kgZm9yIGFuIGF0dGFjayB0byBmb3JnZSB0aGlzIChhcyB0aGUgZGVidWcgaW5mbyB3b24ndCBiZSBzZWN1cmVkKS4gU28gaXQgaXMgbXVjaCBiZXR0ZXIgdG8ga2VlcCB0aGUgY2VydGlmaWNhdGUgb3BhcXVlLCBhbmQgdGhlbiByZXF1aXJlIGFueSBtZXRhZGF0YSB0byBiZSBhY3R1YWxseSB2ZXR0ZWQgKGFuZCBob3BlZnVsbHkgc3RvcmVkIGluIGEgVUksIHNob3dpbmcgSVAsIHRpbWUsIGV0YykuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2VydEZyb21DQShjb25maWc6IHtcbiAgICBDQUtleVBhaXI6IFg1MDlLZXlQYWlyO1xufSk6IFg1MDlLZXlQYWlyIHtcbiAgICByZXR1cm4gbWVhc3VyZUJsb2NrKGZ1bmN0aW9uIGNyZWF0ZUNlcnRGcm9tQ0EoKSB7XG4gICAgICAgIGxldCB7IENBS2V5UGFpciB9ID0gY29uZmlnO1xuICAgICAgICBjb25zdCBrZXlQYWlyID0gZ2VuZXJhdGVLZXlQYWlyKCk7XG4gICAgICAgIGxldCBkb21haW5LZXlQYXJ0ID0gZ2V0RG9tYWluUGFydEZyb21QdWJsaWNLZXkoa2V5UGFpci5wdWJsaWNLZXkpO1xuICAgICAgICBsZXQgZnVsbERvbWFpbiA9IGAke2RvbWFpbktleVBhcnR9LiR7Y29uZmlnLkNBS2V5UGFpci5kb21haW59YDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVg1MDkoe1xuICAgICAgICAgICAgZG9tYWluOiBmdWxsRG9tYWluLFxuICAgICAgICAgICAgaXNzdWVyOiBDQUtleVBhaXIsXG4gICAgICAgICAgICBrZXlQYWlyLFxuICAgICAgICAgICAgbGlmZVNwYW46IHRpbWVJbkRheSAqIDM2NSAqIDEwLFxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hY2hpbmVJZChkb21haW5OYW1lT3JOb2RlSWQ6IHN0cmluZywgZG9tYWluOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZGVjb2RlTm9kZUlkQXNzZXJ0KGRvbWFpbk5hbWVPck5vZGVJZCwgZG9tYWluLCBcImFsbG93TWlzc2luZ1RocmVhZElkXCIpLm1hY2hpbmVJZDtcbn1cblxuZXhwb3J0IHR5cGUgTm9kZUlkUGFydHMgPSB7XG4gICAgdGhyZWFkSWQ6IHN0cmluZztcbiAgICBtYWNoaW5lSWQ6IHN0cmluZztcbiAgICBkb21haW46IHN0cmluZztcbiAgICBwb3J0OiBudW1iZXI7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU5vZGVJZChub2RlSWQ6IHN0cmluZywgZG9tYWluOiBzdHJpbmcsIGFsbG93TWlzc2luZ1RocmVhZElkPzogXCJhbGxvd01pc3NpbmdUaHJlYWRJZFwiKTogTm9kZUlkUGFydHMgfCB1bmRlZmluZWQge1xuICAgIGxldCBsb2NhdGlvbk9iaiA9IGdldE5vZGVJZExvY2F0aW9uKG5vZGVJZCk7XG4gICAgaWYgKCFsb2NhdGlvbk9iaikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgcGFydHMgPSBsb2NhdGlvbk9iai5hZGRyZXNzLnNwbGl0KFwiLlwiKTtcbiAgICAvLyBOT1RFOiBXZSBoYXZlIHRvIG9ubHkgYWxsb3cgbG9jYWxob3N0IGRvbWFpbnMgb24gb3VyIG93biBkb21haW4sIGFzIHRoZSB1bmRlcmx5aW5nIGRvbWFpbiBnZXRzIHN0cmlwcGVkIHdoZW4gd2UncmUgbG9va2luZyBhdCB0aGUgbWFjaGluZUlkLiBTbyBpZiB3ZSBhbGxvd2VkIGxvY2FsaG9zdCBkb21haW5zIG9uIG90aGVyIGRvbWFpbnMsIGEgc2VydmVyIGNvdWxkIHRyaWNrIHVzIGludG8gY29ubmVjdGluZyB0byBpdCwgYW5kIHRoZW4gb25jZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCwgaXQgY291bGQgdGFsayBiYWNrIGFuZCB3ZSB3b3VsZCB0aGluayBpdCBoYXMgYSBsb2NhbGhvc3QgbWFjaGluZUlkLCB3aGljaCBpcyBpbXBsaWNpdGx5IHRydXN0ZWQsIHdoaWNoIHdvdWxkIHRoZW4gZ2l2ZSBpdCBhY2Nlc3MgdG8gZXZlcnl0aGluZy5cbiAgICBpZiAobG9jYXRpb25PYmouYWRkcmVzcyA9PT0gYDEyNy0wLTAtMS4ke2RvbWFpbn1gICYmIG5vZGVJZC5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRocmVhZElkOiBcIlwiLFxuICAgICAgICAgICAgbWFjaGluZUlkOiBwYXJ0cy5hdCgtMykgfHwgXCJcIixcbiAgICAgICAgICAgIGRvbWFpbjogcGFydHMuc2xpY2UoLTIpLmpvaW4oXCIuXCIpLFxuICAgICAgICAgICAgcG9ydDogbG9jYXRpb25PYmoucG9ydCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGlzVmFsaWQgPSBwYXJ0cy5sZW5ndGggPj0gNCB8fCBhbGxvd01pc3NpbmdUaHJlYWRJZCAmJiBwYXJ0cy5sZW5ndGggPT09IDM7XG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHRocmVhZElkOiBwYXJ0cy5hdCgtNCkgfHwgXCJcIixcbiAgICAgICAgbWFjaGluZUlkOiBwYXJ0cy5hdCgtMykgfHwgXCJcIixcbiAgICAgICAgZG9tYWluOiBwYXJ0cy5zbGljZSgtMikuam9pbihcIi5cIikgfHwgXCJcIixcbiAgICAgICAgcG9ydDogbG9jYXRpb25PYmoucG9ydCxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU5vZGVJZEFzc2VydChub2RlSWQ6IHN0cmluZywgZG9tYWluOiBzdHJpbmcsIGFsbG93TWlzc2luZ1RocmVhZElkPzogXCJhbGxvd01pc3NpbmdUaHJlYWRJZFwiKTogTm9kZUlkUGFydHMge1xuICAgIGxldCByZXN1bHQgPSBkZWNvZGVOb2RlSWQobm9kZUlkLCBkb21haW4sIGFsbG93TWlzc2luZ1RocmVhZElkKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbm9kZUlkOiAke0pTT04uc3RyaW5naWZ5KG5vZGVJZCl9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlTm9kZUlkKHBhcnRzOiBOb2RlSWRQYXJ0cykge1xuICAgIHJldHVybiBgJHtwYXJ0cy50aHJlYWRJZH0uJHtwYXJ0cy5tYWNoaW5lSWR9LiR7cGFydHMuZG9tYWlufToke3BhcnRzLnBvcnR9YDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldElkZW50aXR5Q0FSYXcoZG9tYWluOiBzdHJpbmcsIGpzb246IHN0cmluZykge1xuICAgIGxldCBpZGVudGl0eUNBQ2FjaGVkID0gZ2V0SWRlbnRpdHlTdG9yZShkb21haW4pO1xuICAgIGxldCBvYmogPSBKU09OLnBhcnNlKGpzb24pIGFzIHtcbiAgICAgICAgZG9tYWluOiBzdHJpbmc7XG4gICAgICAgIGNlcnRCNjQ6IHN0cmluZztcbiAgICAgICAga2V5QjY0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBsZXQgY2EgPSB7XG4gICAgICAgIGRvbWFpbjogb2JqLmRvbWFpbixcbiAgICAgICAgY2VydDogQnVmZmVyLmZyb20ob2JqLmNlcnRCNjQsIFwiYmFzZTY0XCIpLFxuICAgICAgICBrZXk6IEJ1ZmZlci5mcm9tKG9iai5rZXlCNjQsIFwiYmFzZTY0XCIpLFxuICAgIH07XG4gICAgdHJ1c3RDZXJ0aWZpY2F0ZShjYS5jZXJ0LnRvU3RyaW5nKCkpO1xuICAgIGlkZW50aXR5Q0EoZG9tYWluKS5zZXQoY2EpO1xuICAgIGdldFRocmVhZEtleUNlcnRCYXNlKGRvbWFpbikucmVzZXQoKTtcbiAgICBpZGVudGl0eUNBQ2FjaGVkLnNldChvYmopO1xuICAgIHJlc2V0QWxsTm9kZUNhbGxGYWN0b3JpZXMoKTtcbn1cblxuLy8gTk9URTogVGhlIGlkZW50aXR5IENBIGlzIGF2YWlsYWJsZSBzeW5jaHJvbm91c2x5IChzdG9yYWdlIGlzIGZzL2xvY2FsU3RvcmFnZSwgYm90aCBzeW5jaHJvbm91cyksIHNvIHRoaXMgb25seSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggc3RhcnR1cCBjb2RlIHRoYXQgYXdhaXRzIGl0LlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRJZGVudGl0eUNBKGRvbWFpbjogc3RyaW5nKSB7XG4gICAgaWRlbnRpdHlDQShkb21haW4pKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpdHlDQShkb21haW46IHN0cmluZyk6IFg1MDlLZXlQYWlyIHtcbiAgICByZXR1cm4gaWRlbnRpdHlDQShkb21haW4pKCk7XG59XG5cbi8vIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIGEgZGF0YWJhc2UsIHNvIGl0IGlzIGVhc3kgZm9yIHVzIHRvIHRydXN0IENBcyBjcm9zcyBtYWNoaW5lLCBhbmQgZXZlbiBoYXZlIG11bHRpcGxlIHVzZXJzLCBldGMsIGV0Yy5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJZGVudGl0eUNBUHJvbWlzZShkb21haW46IHN0cmluZyk6IFg1MDlLZXlQYWlyIHtcbiAgICByZXR1cm4gaWRlbnRpdHlDQShkb21haW4pKCk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE93bk1hY2hpbmVJZChkb21haW46IHN0cmluZykge1xuICAgIHJldHVybiBnZXRNYWNoaW5lSWQoZ2V0SWRlbnRpdHlDQShkb21haW4pLmRvbWFpbiwgZG9tYWluKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRPd25UaHJlYWRJZChkb21haW46IHN0cmluZykge1xuICAgIHJldHVybiBkZWNvZGVOb2RlSWRBc3NlcnQoZ2V0VGhyZWFkS2V5Q2VydChkb21haW4pLmRvbWFpbiwgZG9tYWluKS50aHJlYWRJZDtcbn1cblxuLyoqIFBhcnQgb2YgdGhlIG1hY2hpbmVJZCBjb21lcyBmcm9tIHRoZSBwdWJsaWNLZXksIHNvIHdlIGNhbiB1c2UgaXQgdG8gdmVyaWZ5ICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5TWFjaGluZUlkRm9yUHVibGljS2V5KGNvbmZpZzoge1xuICAgIG1hY2hpbmVJZDogc3RyaW5nO1xuICAgIHB1YmxpY0tleTogQnVmZmVyO1xufSk6IGJvb2xlYW4ge1xuICAgIGxldCB7IG1hY2hpbmVJZCwgcHVibGljS2V5IH0gPSBjb25maWc7XG4gICAgbGV0IGRvbWFpblBhcnQgPSBnZXREb21haW5QYXJ0RnJvbVB1YmxpY0tleShwdWJsaWNLZXkpO1xuICAgIC8vIG1hY2hpbmVJZCBpcyB0aGUgYmFyZSBrZXktaGFzaCBsYWJlbCwgYnV0IGFsc28gYWNjZXB0IGxlZ2FjeSBcImhhc2guZG9tYWluLnRsZFwiIGZvcm1zXG4gICAgcmV0dXJuIG1hY2hpbmVJZC5zcGxpdChcIi5cIilbMF0gPT09IGRvbWFpblBhcnQ7XG59XG5cbi8vIE5PVEU6IFdlIGRvbid0IGhhdmUgYSBjYWNoZSBwZXIgQ0EsIGFzLi4uIHRoZSBDQSBzaG91bGQgYmUgc2V0IGZpcnN0XG4vLyBUT0RPOiBNYXliZSB0aHJvdyBpZiB0aGV5IHRyeSB0byBjaGFuZ2UgdGhlIENBIGFmdGVyIHRoZXkgZ2VuZXJhdGUgYW55IGNlcnRpZmljYXRlcz9cbi8vIFRPRE86IFJlZ2VuZXJhdGUgY2VydGlmaWNhdGVzIGFmdGVyIGVub3VnaCB0aW1lIChhcyB0aHJlYWQgY2VydHMgc2hvdWxkIGJlIHJlbGF0aXZlbHkgc2hvcnQgbGl2ZWQsIHNvIGl0IGlzIHBsYXVzaWJsZSBmb3IgdGhlbSB0byBleHBpcmUpLiBXZSB3aWxsIGFsc28gbmVlZCB0byBwcm92aWRlIGEgY2FsbGJhY2sgc28gdGhhdCB1c2VycyBvZiB0aGUgY2VydCBjYW4gdXBkYXRlIHRoZSBjZXJ0IHRoZXkgYXJlIHVzaW5nIGFzIHdlbGwuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhyZWFkS2V5Q2VydChkb21haW46IHN0cmluZykge1xuICAgIHJldHVybiBnZXRUaHJlYWRLZXlDZXJ0QmFzZShkb21haW4pKCk7XG59XG5jb25zdCBnZXRUaHJlYWRLZXlDZXJ0QmFzZSA9IGNhY2hlKChkb21haW46IHN0cmluZykgPT4gbGF6eSgoKSA9PiB7XG4gICAgbGV0IGNhID0gZ2V0SWRlbnRpdHlDQShkb21haW4pO1xuICAgIHJldHVybiBjcmVhdGVDZXJ0RnJvbUNBKHsgQ0FLZXlQYWlyOiBjYSB9KTtcbn0pKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE93bk5vZGVJZCgpOiBzdHJpbmcge1xuICAgIGxldCBub2RlSWQgPSBTb2NrZXRGdW5jdGlvbi5tb3VudGVkTm9kZUlkO1xuICAgIGlmICghbm9kZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBtdXN0IGJlIG1vdW50ZWQgYmVmb3JlIG5vZGVJZCBpcyBhY2Nlc3NlZGApO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZUlkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3duTm9kZUlkQWxsb3dVbmRlZmluZWQoKSB7XG4gICAgcmV0dXJuIFNvY2tldEZ1bmN0aW9uLm1vdW50ZWROb2RlSWQ7XG59Il19
|
|
465
|
-
/* _JS_SOURCE_HASH = "
|
|
465
|
+
/* _JS_SOURCE_HASH = "f7ecca2cb0fcb039a8e77aaa369124b8a1ee98f11ac3372f7d7d1be9ce04d73b"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -42,4 +42,4 @@ function getKeyStore(appName, key) {
|
|
|
42
42
|
}
|
|
43
43
|
exports.getKeyStore = getKeyStore;
|
|
44
44
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVudExvY2FsU3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBlcnNpc3RlbnRMb2NhbFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQWtEO0FBQ2xELDRDQUFvQjtBQUNwQiw0Q0FBb0I7QUFHcEIsU0FBZ0IsV0FBVyxDQUFJLE9BQWUsRUFBRSxHQUFXO0lBSXZELElBQUksSUFBQSxhQUFNLEdBQUUsRUFBRSxDQUFDO1FBQ1gsSUFBSSxJQUFJLEdBQUcsWUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLGFBQWEsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNsRSxPQUFPO1lBQ0gsR0FBRztnQkFDQyxJQUFJLFFBQVEsR0FBdUIsU0FBUyxDQUFDO2dCQUM3QyxJQUFJLENBQUM7b0JBQUMsUUFBUSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUFDLENBQUM7Z0JBQUMsV0FBTSxDQUFDLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFFBQVE7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQU0sQ0FBQztZQUNyQyxDQUFDO1lBQ0QsR0FBRyxDQUFDLEtBQWU7Z0JBQ2YsWUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPO1lBQ0gsR0FBRztnQkFDQyxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPLFNBQVMsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBTSxDQUFDO1lBQ2pDLENBQUM7WUFDRCxHQUFHLENBQUMsS0FBZTtnQkFDZixZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDckQsQ0FBQztTQUNKLENBQUM7SUFDTixDQUFDO0FBQ0wsQ0FBQztBQTdCRCxrQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vZGUgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgeyBjYWNoZSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhY2hpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEtleVN0b3JlPFQ+KGFwcE5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcpOiB7XG4gICAgZ2V0KCk6IFQgfCB1bmRlZmluZWQ7XG4gICAgc2V0KHZhbHVlOiBUIHwgbnVsbCk6IHZvaWQ7XG59IHtcbiAgICBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgbGV0IHBhdGggPSBvcy5ob21lZGlyKCkgKyBgL2tleXN0b3JlXyR7YXBwTmFtZX1fYCArIGtleSArIFwiLmpzb25cIjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udGVudHM6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0cnkgeyBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLCBcInV0ZjhcIik7IH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKCFjb250ZW50cykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50cykgYXMgVDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodmFsdWU6IFQgfCBudWxsKSB7XG4gICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGpzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghanNvbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKSBhcyBUO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCh2YWx1ZTogVCB8IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufSJdfQ==
|
|
45
|
-
/* _JS_SOURCE_HASH = "
|
|
45
|
+
/* _JS_SOURCE_HASH = "218014c9227e88372af9d132c69f93c89ab7ad4ce231a6f012c4478e3b0728ca"; */
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.observer = void 0;
|
|
4
4
|
process.env.NODE_ENV = "production";
|
|
@@ -36,4 +36,4 @@ function observer(Constructor) {
|
|
|
36
36
|
}
|
|
37
37
|
exports.observer = observer;
|
|
38
38
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvYnNlcnZlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBR3BDLCtCQUE0QztBQUM1Qyx1RUFBK0Q7QUFDL0QsSUFBQSxzQkFBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLG1FQUFxRTtBQUVyRSxJQUFJLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQUM3QixTQUFnQixRQUFRLENBU3BCLFdBQWM7SUFFZCxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQzVCLE9BQU8sS0FBTSxTQUFRLFdBQVc7UUFBekI7O1lBR0gsYUFBUSxHQUFHLElBQUksZUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUU7Z0JBQ3JFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztRQWNQLENBQUM7UUFsQkcsYUFBYTtRQUNiLE1BQU0sS0FBSyxJQUFJLEtBQUssT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUk5QyxvQkFBb0I7O1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsTUFBQSxLQUFLLENBQUMsb0JBQW9CLG9EQUFJLENBQUM7UUFDbkMsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLElBQVc7WUFDakIsSUFBSSxNQUE2QixDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDckIsSUFBQSxzQkFBWSxFQUFDLEdBQUcsRUFBRTtvQkFDZCxNQUFNLEdBQUksS0FBSyxDQUFDLE1BQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDO0FBaENELDRCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbInByb2Nlc3MuZW52Lk5PREVfRU5WID0gXCJwcm9kdWN0aW9uXCI7XG5cbmltcG9ydCAqIGFzIHByZWFjdCBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBvYnNlcnZhYmxlLCBSZWFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBzZXRGbGFnIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9yZXF1aXJlL2NvbXBpbGVGbGFnc1wiO1xuc2V0RmxhZyhyZXF1aXJlLCBcIm1vYnhcIiwgXCJhbGxvd2NsaWVudFwiLCB0cnVlKTtcbmltcG9ydCB7IG1lYXN1cmVCbG9jayB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL3Byb2ZpbGluZy9tZWFzdXJlXCI7XG5cbmxldCBnbG9iYWxDb25zdHJ1Y3RPcmRlciA9IDE7XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXI8XG4gICAgVCBleHRlbmRzIHtcbiAgICAgICAgbmV3KC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICAgICAgcmVuZGVyKCk6IHByZWFjdC5Db21wb25lbnRDaGlsZDtcbiAgICAgICAgICAgIGZvcmNlVXBkYXRlKGNhbGxiYWNrPzogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgICAgICBjb21wb25lbnRXaWxsVW5tb3VudD8oKTogdm9pZDtcbiAgICAgICAgfVxuICAgIH1cbj4oXG4gICAgQ29uc3RydWN0b3I6IFRcbikge1xuICAgIGxldCBuYW1lID0gQ29uc3RydWN0b3IubmFtZTtcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBDb25zdHJ1Y3RvciB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc3RhdGljIGdldCBuYW1lKCkgeyByZXR1cm4gQ29uc3RydWN0b3IubmFtZTsgfVxuICAgICAgICByZWFjdGlvbiA9IG5ldyBSZWFjdGlvbihgcmVuZGVyLiR7bmFtZX0uJHtnbG9iYWxDb25zdHJ1Y3RPcmRlcisrfWAsICgpID0+IHtcbiAgICAgICAgICAgIHN1cGVyLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgICAgIHRoaXMucmVhY3Rpb24uZGlzcG9zZSgpO1xuICAgICAgICAgICAgc3VwZXIuY29tcG9uZW50V2lsbFVubW91bnQ/LigpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgbGV0IG91dHB1dDogcHJlYWN0LkNvbXBvbmVudENoaWxkO1xuICAgICAgICAgICAgdGhpcy5yZWFjdGlvbi50cmFjaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgbWVhc3VyZUJsb2NrKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gKHN1cGVyLnJlbmRlciBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH0sIGAke25hbWV9fHJlbmRlcmApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9XG4gICAgfTtcbn0iXX0=
|
|
39
|
-
/* _JS_SOURCE_HASH = "
|
|
39
|
+
/* _JS_SOURCE_HASH = "66bf117905c840638829362c0f5010e30300b34621cecc47d4fbc18f0fe6fe54"; */
|
|
@@ -29,11 +29,13 @@ export async function copyArchiveFile(config: {
|
|
|
29
29
|
let size = info.size;
|
|
30
30
|
let writeTime = Math.round(config.preserveWriteTime && info.writeTime || Date.now());
|
|
31
31
|
if (config.preserveWriteTime) {
|
|
32
|
-
// A destination that already holds
|
|
33
|
-
let destInfo = await to.getInfo(toPath, { noFallbacks: config.noFallbacks });
|
|
32
|
+
// A destination that already holds something NEWER (a file OR a deletion - includeTombstones, so a tombstone is visible instead of reading as absence) must not be overwritten with our older copy - and the destination's own only-take-latest would drop the write SILENTLY, leaving the caller believing the copy happened. Refusing here, loudly, is what turns "the remote has something we missed" from a masked bug into a log line the caller can act on. (A fresh-stamped copy needs no such guard - nothing at the destination can be newer than now - so plain copies skip the round trip.)
|
|
33
|
+
let destInfo = await to.getInfo(toPath, { noFallbacks: config.noFallbacks, includeTombstones: true });
|
|
34
34
|
// Compared at whole-millisecond precision (ROUNDED, matching ArchivesDisk - see its get2), here and at the confirm below: disk mtimes carry fractional milliseconds, but utimes round-trips only whole ones, so sub-millisecond differences are storage artifacts of the SAME time, not ordering
|
|
35
35
|
if (destInfo && Math.round(destInfo.writeTime) > Math.round(writeTime)) {
|
|
36
|
-
|
|
36
|
+
// Size 0 IS a deletion, everywhere in this system - a live file can never be empty
|
|
37
|
+
let theirs = destInfo.size === 0 && `a deletion at ${formatDateTimeDetailed(destInfo.writeTime)}` || `${destInfo.size} bytes at ${formatDateTimeDetailed(destInfo.writeTime)}`;
|
|
38
|
+
logStorageError(`Copy refused - ${destInfo.size === 0 && "a newer deletion exists at the destination" || "a newer file exists at the destination"}. Refusing to copy ${JSON.stringify(path)} from ${from.getDebugName()} to ${to.getDebugName()}${toPath !== path && ` (as ${JSON.stringify(toPath)})` || ""}: ours ${size} bytes at ${formatDateTimeDetailed(writeTime)}, theirs ${theirs} - copying would roll it back`);
|
|
37
39
|
return undefined;
|
|
38
40
|
}
|
|
39
41
|
}
|
|
@@ -71,10 +73,20 @@ export async function copyArchiveFile(config: {
|
|
|
71
73
|
copiedSize = totalSize;
|
|
72
74
|
}
|
|
73
75
|
if (config.preserveWriteTime) {
|
|
74
|
-
// Every backend drops a superseded write SILENTLY (its only-take-latest is the last line of defense against races the up-front check can't see), so a returned set is not proof the copy landed - only the destination reporting the file at OUR time or newer is. Newer also counts as landed: the destination is at least as new as what we pushed (and b2 always stamps its own, later, upload time). Only for preserved stamps: a fresh stamp cannot lose the race, and moveArchiveFile does its own confirm before deleting anything.
|
|
75
|
-
let confirmed = await to.getInfo(toPath, { noFallbacks: config.noFallbacks });
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
// Every backend drops a superseded write SILENTLY (its only-take-latest is the last line of defense against races the up-front check can't see), so a returned set is not proof the copy landed - only the destination reporting the file at OUR time or newer is. Newer also counts as landed: the destination is at least as new as what we pushed (and b2 always stamps its own, later, upload time). Only for preserved stamps: a fresh stamp cannot lose the race, and moveArchiveFile does its own confirm before deleting anything. includeTombstones so the four failure cases are distinguishable instead of a tombstone reading as "nothing".
|
|
77
|
+
let confirmed = await to.getInfo(toPath, { noFallbacks: config.noFallbacks, includeTombstones: true });
|
|
78
|
+
let landed = confirmed && confirmed.size !== 0 && Math.round(confirmed.writeTime) >= Math.round(writeTime);
|
|
79
|
+
if (!landed) {
|
|
80
|
+
let detail = `Copy of ${JSON.stringify(path)} from ${from.getDebugName()} to ${to.getDebugName()}${toPath !== path && ` (as ${JSON.stringify(toPath)})` || ""}: ours was ${copiedSize} bytes at ${formatDateTimeDetailed(writeTime)}`;
|
|
81
|
+
if (!confirmed) {
|
|
82
|
+
logStorageError(`Copy dropped - the destination does not know the file at all. ${detail}, and the destination reports neither a file nor a deletion for it`);
|
|
83
|
+
} else if (confirmed.size === 0 && Math.round(confirmed.writeTime) >= Math.round(writeTime)) {
|
|
84
|
+
logStorageError(`Copy dropped - a newer deletion won. ${detail}, but the destination has a deletion at ${formatDateTimeDetailed(confirmed.writeTime)}`);
|
|
85
|
+
} else if (confirmed.size === 0) {
|
|
86
|
+
logStorageError(`Copy dropped - an OLDER deletion survived our write, so the set did not take. ${detail}, but the destination still has a deletion at ${formatDateTimeDetailed(confirmed.writeTime)}`);
|
|
87
|
+
} else {
|
|
88
|
+
logStorageError(`Copy dropped - an OLDER write survived ours, so the set did not take. ${detail}, but the destination still has ${confirmed.size} bytes at ${formatDateTimeDetailed(confirmed.writeTime)}`);
|
|
89
|
+
}
|
|
78
90
|
return undefined;
|
|
79
91
|
}
|
|
80
92
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
@@ -433,4 +433,4 @@ function applyFindInfoShape(files, prefix, config) {
|
|
|
433
433
|
}
|
|
434
434
|
exports.applyFindInfoShape = applyFindInfoShape;
|
|
435
435
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjaGl2ZXNEaXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQXJjaGl2ZXNEaXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIseURBQW1EO0FBQ25ELDJEQUErRDtBQUMvRCxtREFBbUU7QUFDbkUsa0VBQStFO0FBQy9FLDJDQUFzTjtBQUN0TiwrREFBNkQ7QUFFN0QsNGJBQTRiO0FBRTViLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN0QyxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDeEMsNlBBQTZQO0FBQzdQLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQVFyRCw4Y0FBOGM7QUFDOWMsTUFBTSxlQUFlO0lBTWpCO1FBTFEsWUFBTyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1FBQ2pELDBEQUEwRDtRQUNsRCxRQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFHL0MsSUFBQSwwQkFBZSxFQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwrRUFBK0U7SUFDeEUsR0FBRyxDQUFJLFFBQWdCLEVBQUUsR0FBcUI7UUFDakQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsMkZBQTJGO1FBQzNGLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcs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QyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgbGF6eSB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2NhY2hpbmdcIjtcbmltcG9ydCB7IHJ1bkluZmluaXRlUG9sbCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBzb3J0LCBiaW5hcnlTZWFyY2hCYXNpYyB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL21pc2NcIjtcbmltcG9ydCB7IGZvcm1hdERhdGVUaW1lRGV0YWlsZWQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2Zvcm1hdFwiO1xuaW1wb3J0IHsgSUFyY2hpdmVzLCBBcmNoaXZlRmlsZUluZm8sIEFyY2hpdmVzQ29uZmlnLCBDaGFuZ2VzQWZ0ZXJDb25maWcsIERlbENvbmZpZywgRmluZENvbmZpZywgR2V0Q29uZmlnLCBHZXRJbmZvQ29uZmlnLCBNb3ZlRmlsZUNvbmZpZywgU2V0Q29uZmlnLCBTZXRMYXJnZUZpbGVDb25maWcsIGFzc2VydFZhbGlkTGFzdE1vZGlmaWVkIH0gZnJvbSBcIi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBmaWx0ZXJDaGFuZ2VzIH0gZnJvbSBcIi4vcmVtb3RlU3RvcmFnZS9yZW1vdGVDb25maWdcIjtcblxuLy8gVGhlIGJhc2UgZmlsZS1zeXN0ZW0gSUFyY2hpdmVzOiBzdG9yYWdlIGlzIG9uZS10by1vbmUgd2l0aCB0aGUgZmlsZSBzeXN0ZW0sIGV2ZXJ5IGtleSBpcyBleGFjdGx5IG9uZSByZWFsIGZpbGUgdW5kZXIgPGZvbGRlcj4vZmlsZXMsIHNvIHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYgaXMgdGhlIGluZGV4LiBGaWxlIGhhbmRsZXMgYXJlIGNhY2hlZCBhbmQgcmV1c2VkLCBhbmQgY2xvc2VkIG9uY2UgaWRsZSAoc2VlIEZpbGVIYW5kbGVDYWNoZSkuIEFsbCBvcGVyYXRpb25zIG9uIGEgZmlsZSBydW4gaW4gc2VyaWFsLCBzbyB0aGV5IGNhbid0IGNvbGxpZGUgd2l0aCBlYWNoIG90aGVyIG9yIHdpdGggaGFuZGxlIGNsb3NpbmcuIFVzZWQgYXMgdGhlIGRpc2sgc3luY2hyb25pemF0aW9uIHNvdXJjZSBvZiBCbG9iU3RvcmUgKHNlZSByZW1vdGVTdG9yYWdlL2Jsb2JTdG9yZS50cykuXG5cbmNvbnN0IEhBTkRMRV9JRExFX1RJTUVPVVQgPSAxMDAwICogNjA7XG5jb25zdCBIQU5ETEVfU1dFRVBfSU5URVJWQUwgPSAxMDAwICogMTU7XG4vLyBVcGxvYWQgdGVtcCBmaWxlcyBhcmUgb25seSBnYXJiYWdlIG9uY2UgdGhleSBhcmUgY2xlYXJseSBhYmFuZG9uZWQuIEFub3RoZXIgcHJvY2VzcyBjYW4gc2hhcmUgb3VyIGZvbGRlciAoZXZlcnkgZGVwbG95IG92ZXJsYXAgZG9lcyksIHNvIGEgZnJlc2ggdGVtcCBmaWxlIG1heSBiZSBJVFMgaW4tcHJvZ3Jlc3MgdXBsb2FkIC0gZGVsZXRpbmcgaXQgd291bGQgc2lsZW50bHkgdHVybiB0aGF0IHVwbG9hZCBpbnRvIGFuIGVtcHR5IGZpbGUuXG5jb25zdCBVUExPQURfQUJBTkRPTkVEX0FHRSA9IDEwMDAgKiA2MCAqIDYwICogMjQgKiAzO1xuXG50eXBlIEhhbmRsZUVudHJ5ID0ge1xuICAgIGZpbGVQYXRoOiBzdHJpbmc7XG4gICAgaGFuZGxlOiBmcy5wcm9taXNlcy5GaWxlSGFuZGxlO1xuICAgIGxhc3RVc2U6IG51bWJlcjtcbn07XG5cbi8vIENhY2hlcyBvcGVuIGZpbGUgaGFuZGxlcywgY2xvc2luZyB0aGVtIG9uY2UgaWRsZSBmb3IgSEFORExFX0lETEVfVElNRU9VVC4gSW5zdGVhZCBvZiBvbmUgc2V0VGltZW91dCBwZXIgaGFuZGxlLCBhIGxpc3Qgc29ydGVkIGJ5IGxhc3QgdXNlIGlzIHN3ZXB0IHBlcmlvZGljYWxseSAoZW50cmllcyBhcmUgbW92ZWQgdmlhIGJpbmFyeSBzZWFyY2ggb24gYWNjZXNzLCBhbmQgbGFzdFVzZSB2YWx1ZXMgb25seSBpbmNyZWFzZSwgc28gdG91Y2hlZCBlbnRyaWVzIGFwcGVuZCBhdCB0aGUgZW5kKS4gQWxzbyBzZXJpYWxpemVzIG9wZXJhdGlvbnMgcGVyIGZpbGU6IGVhY2ggb3BlcmF0aW9uIG9ubHkgc3RhcnRzIG9uY2UgdGhlIHByZXZpb3VzIG9uZSBvbiB0aGUgc2FtZSBmaWxlIGZpbmlzaGVkLCBhbmQgYSBoYW5kbGUgaXMgbmV2ZXIgY2xvc2VkIHdoaWxlIGFuIG9wZXJhdGlvbiBpcyBwZW5kaW5nIG9uIGl0LlxuY2xhc3MgRmlsZUhhbmRsZUNhY2hlIHtcbiAgICBwcml2YXRlIGVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgSGFuZGxlRW50cnk+KCk7XG4gICAgLy8gU29ydGVkIGJ5IGxhc3RVc2UgYXNjZW5kaW5nIChsZWFzdCByZWNlbnRseSB1c2VkIGZpcnN0KVxuICAgIHByaXZhdGUgbHJ1OiBIYW5kbGVFbnRyeVtdID0gW107XG4gICAgcHJpdmF0ZSBwZW5kaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgcnVuSW5maW5pdGVQb2xsKEhBTkRMRV9TV0VFUF9JTlRFUlZBTCwgKCkgPT4gdGhpcy5zd2VlcCgpKTtcbiAgICB9XG5cbiAgICAvLyBSdW5zIGZuYyBhZnRlciBldmVyeSBwcmV2aW91c2x5IHNjaGVkdWxlZCBvcGVyYXRpb24gb24gZmlsZVBhdGggaGFzIGZpbmlzaGVkXG4gICAgcHVibGljIHJ1bjxUPihmaWxlUGF0aDogc3RyaW5nLCBmbmM6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgbGV0IHByZXYgPSB0aGlzLnBlbmRpbmcuZ2V0KGZpbGVQYXRoKSB8fCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHByZXYudGhlbihmbmMpO1xuICAgICAgICAvLyBUaGUgcGVuZGluZyBjaGFpbiBtdXN0IG5ldmVyIHJlamVjdCwgb3Igb25lIGZhaWxlZCBvcGVyYXRpb24gd291bGQgcG9pc29uIGFsbCBsYXRlciBvbmVzXG4gICAgICAgIGxldCBsYXN0ID0gcmVzdWx0LnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pO1xuICAgICAgICB0aGlzLnBlbmRpbmcuc2V0KGZpbGVQYXRoLCBsYXN0KTtcbiAgICAgICAgdm9pZCBsYXN0LnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgd2UncmUgc3RpbGwgdGhlIGxhc3QgcGVuZGluZyBvcGVyYXRpb24gb24gdGhpcyBmaWxlLCBjbGVhciBvdXJzZWx2ZXNcbiAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmcuZ2V0KGZpbGVQYXRoKSA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZy5kZWxldGUoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGNhbGwgaW5zaWRlIHJ1bigpIGZvciB0aGUgc2FtZSBmaWxlUGF0aCAoc28gb3BlbnMgY2FuJ3QgY29sbGlkZSB3aXRoIGNsb3NlcylcbiAgICBwdWJsaWMgYXN5bmMgZ2V0SGFuZGxlKGZpbGVQYXRoOiBzdHJpbmcsIGZsYWdzOiBudW1iZXIpOiBQcm9taXNlPGZzLnByb21pc2VzLkZpbGVIYW5kbGU+IHtcbiAgICAgICAgbGV0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChmaWxlUGF0aCk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTFJVKGVudHJ5KTtcbiAgICAgICAgICAgIGVudHJ5Lmxhc3RVc2UgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgdGhpcy5scnUucHVzaChlbnRyeSk7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuaGFuZGxlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoYW5kbGUgPSBhd2FpdCBmcy5wcm9taXNlcy5vcGVuKGZpbGVQYXRoLCBmbGFncyk7XG4gICAgICAgIGVudHJ5ID0geyBmaWxlUGF0aCwgaGFuZGxlLCBsYXN0VXNlOiBEYXRlLm5vdygpIH07XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoZmlsZVBhdGgsIGVudHJ5KTtcbiAgICAgICAgdGhpcy5scnUucHVzaChlbnRyeSk7XG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfVxuXG4gICAgLy8gT25seSBjYWxsIGluc2lkZSBydW4oKSBmb3IgdGhlIHNhbWUgZmlsZVBhdGhcbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VOb3coZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgZW50cnkgPSB0aGlzLmVudHJpZXMuZ2V0KGZpbGVQYXRoKTtcbiAgICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGZpbGVQYXRoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVGcm9tTFJVKGVudHJ5KTtcbiAgICAgICAgYXdhaXQgZW50cnkuaGFuZGxlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVGcm9tTFJVKGVudHJ5OiBIYW5kbGVFbnRyeSkge1xuICAgICAgICBsZXQgaW5kZXggPSBiaW5hcnlTZWFyY2hCYXNpYyh0aGlzLmxydSwgeCA9PiB4Lmxhc3RVc2UsIGVudHJ5Lmxhc3RVc2UpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIC8vIE11bHRpcGxlIGVudHJpZXMgY2FuIHNoYXJlIGEgbGFzdFVzZSwgc28gc2NhbiBmb3IgdGhlIGV4YWN0IG9uZVxuICAgICAgICB3aGlsZSAoaW5kZXggPCB0aGlzLmxydS5sZW5ndGggJiYgdGhpcy5scnVbaW5kZXhdLmxhc3RVc2UgPT09IGVudHJ5Lmxhc3RVc2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxydVtpbmRleF0gPT09IGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5scnUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzd2VlcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGN1dG9mZiA9IERhdGUubm93KCkgLSBIQU5ETEVfSURMRV9USU1FT1VUO1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCB0aGlzLmxydS5sZW5ndGggJiYgdGhpcy5scnVbaW5kZXhdLmxhc3RVc2UgPD0gY3V0b2ZmKSB7XG4gICAgICAgICAgICBsZXQgZW50cnkgPSB0aGlzLmxydVtpbmRleF07XG4gICAgICAgICAgICAvLyBDYW4ndCBjbG9zZSBhIGhhbmRsZSB3aXRoIGEgcGVuZGluZyBvcGVyYXRpb247IGl0J2xsIGJlIHN3ZXB0IGFmdGVyIGl0IGZpbmlzaGVzXG4gICAgICAgICAgICBpZiAodGhpcy5wZW5kaW5nLmhhcyhlbnRyeS5maWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5scnUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5kZWxldGUoZW50cnkuZmlsZVBhdGgpO1xuICAgICAgICAgICAgYXdhaXQgZW50cnkuaGFuZGxlLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcmNoaXZlc0Rpc2sgaW1wbGVtZW50cyBJQXJjaGl2ZXMge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9sZGVyOiBzdHJpbmcpIHsgfVxuXG4gICAgcHJpdmF0ZSBmaWxlc0RpciA9IHBhdGguam9pbih0aGlzLmZvbGRlciwgXCJmaWxlc1wiKTtcbiAgICBwcml2YXRlIHVwbG9hZHNEaXIgPSBwYXRoLmpvaW4odGhpcy5mb2xkZXIsIFwidXBsb2Fkc1wiKTtcbiAgICBwcml2YXRlIGhhbmRsZXMgPSBuZXcgRmlsZUhhbmRsZUNhY2hlKCk7XG4gICAgcHJpdmF0ZSBsYXJnZVVwbG9hZHMgPSBuZXcgTWFwPHN0cmluZywgeyB0bXBQYXRoOiBzdHJpbmcgfT4oKTtcbiAgICBwcml2YXRlIG5leHRMYXJnZVVwbG9hZElkID0gMTtcblxuICAgIHB1YmxpYyBpbml0ID0gbGF6eShhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHRoaXMuZmlsZXNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcih0aGlzLnVwbG9hZHNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBsZXQgY3V0b2ZmID0gRGF0ZS5ub3coKSAtIFVQTE9BRF9BQkFORE9ORURfQUdFO1xuICAgICAgICBmb3IgKGxldCBmaWxlIG9mIGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIodGhpcy51cGxvYWRzRGlyKSkge1xuICAgICAgICAgICAgbGV0IHVwbG9hZFBhdGggPSBwYXRoLmpvaW4odGhpcy51cGxvYWRzRGlyLCBmaWxlKTtcbiAgICAgICAgICAgIC8vIFRoZSBtdGltZSBhZHZhbmNlcyBvbiBldmVyeSBhcHBlbmQsIHNvIGFuIGFjdGl2ZSB1cGxvYWQgKGV2ZW4gYW5vdGhlciBwcm9jZXNzJ3MpIGFsd2F5cyBsb29rcyBmcmVzaFxuICAgICAgICAgICAgbGV0IHN0YXRzID0gYXdhaXQgc3RhdE9yVW5kZWZpbmVkKHVwbG9hZFBhdGgpO1xuICAgICAgICAgICAgaWYgKCFzdGF0cyB8fCBzdGF0cy5tdGltZU1zID4gY3V0b2ZmKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEZWxldGluZyBhYmFuZG9uZWQgdXBsb2FkIHRlbXAgZmlsZSAke3VwbG9hZFBhdGh9IChsYXN0IHdyaXR0ZW4gJHtmb3JtYXREYXRlVGltZURldGFpbGVkKHN0YXRzLm10aW1lTXMpfSlgKTtcbiAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnVubGluayh1cGxvYWRQYXRoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHVibGljIGdldERlYnVnTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIGBkaXNrICR7dGhpcy5mb2xkZXJ9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnKCk6IFByb21pc2U8QXJjaGl2ZXNDb25maWc+IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDaGFuZ2VzQWZ0ZXIyKGNvbmZpZzogQ2hhbmdlc0FmdGVyQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICAvLyBObyBuYXRpdmUgY2hhbmdlIGZlZWQgLSBhIGZ1bGwgbGlzdGluZyBmaWx0ZXJlZCBpbiBtZW1vcnkgKHNlZSB0aGUgc2Nhbm5pbmcgbm90ZSBpbiBTdG9yZVN5bmMucHVsbFNvdXJjZSBmb3Igd2h5IHRoZSBsaXN0aW5nIGl0c2VsZiB0YWtlcyBubyBmaWx0ZXJzKVxuICAgICAgICByZXR1cm4gZmlsdGVyQ2hhbmdlcyhhd2FpdCB0aGlzLmZpbmRJbmZvKFwiXCIpLCBjb25maWcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBoYXNXcml0ZUFjY2VzcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWxlUGF0aChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBwYXRoLmpvaW4odGhpcy5maWxlc0Rpciwga2V5KTtcbiAgICAgICAgaWYgKCFyZXN1bHQuc3RhcnRzV2l0aCh0aGlzLmZpbGVzRGlyICsgcGF0aC5zZXApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQga2V5ICR7SlNPTi5zdHJpbmdpZnkoa2V5LnNsaWNlKDAsIDIwMCkpfSwgaXQgZXNjYXBlcyB0aGUgc3RvcmUgZm9sZGVyYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBmb3JjZVNldEltbXV0YWJsZSBpcyBhY2NlcHRlZCBhbmQgbmVlZHMgbm8gaGFuZGxpbmc6IGRpc2sgc291cmNlcyBhcmUgbmV2ZXIgaW1tdXRhYmxlLCBhbmQgdGhlIG9sZGVyLXdyaXRlIG5vLW9wIGJlbG93IGFscmVhZHkgZ2l2ZXMgc3luY2hyb25pemF0aW9uIGl0cyBvbmx5LXRha2UtdGhlLWxhdGVzdCBzZW1hbnRpY3NcbiAgICBwdWJsaWMgYXN5bmMgc2V0KGtleTogc3RyaW5nLCBkYXRhOiBCdWZmZXIsIGNvbmZpZz86IFNldENvbmZpZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICghZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc2V0IHdhcyBjYWxsZWQgd2l0aCBhbiBlbXB0eSBidWZmZXIgZm9yICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gb24gJHt0aGlzLmdldERlYnVnTmFtZSgpfTogYW4gZW1wdHkgZmlsZSBJUyBhIGRlbGV0aW9uIGluIHRoaXMgc3lzdGVtIGFuZCB3b3VsZCByZWFkIGJhY2sgYXMgbWlzc2luZyAtIGNhbGwgZGVsIGluc3RlYWRgKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICAgICAgbGV0IGxhc3RNb2RpZmllZCA9IGNvbmZpZz8ubGFzdE1vZGlmaWVkO1xuICAgICAgICBpZiAobGFzdE1vZGlmaWVkKSB7XG4gICAgICAgICAgICBhc3NlcnRWYWxpZExhc3RNb2RpZmllZChsYXN0TW9kaWZpZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgoa2V5KTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVzLnJ1bihmaWxlUGF0aCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxhc3RNb2RpZmllZCkge1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZyA9IGF3YWl0IHN0YXRPclVuZGVmaW5lZChmaWxlUGF0aCk7XG4gICAgICAgICAgICAgICAgLy8gQW4gb2xkZXIgd3JpdGUgbmV2ZXIgb3ZlcndyaXRlcyBhIG5ld2VyIG9uZSAoc2VlIElBcmNoaXZlcy5zZXQpLiBCb3RoIHNpZGVzIHJvdW5kZWQ6IHN1Yi1taWxsaXNlY29uZCBtdGltZSBkaWdpdHMgYXJlIHN0b3JhZ2UgYXJ0aWZhY3RzLCBub3Qgb3JkZXJpbmcgKHNlZSBnZXQyKVxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBNYXRoLnJvdW5kKGxhc3RNb2RpZmllZCkgPCBNYXRoLnJvdW5kKGV4aXN0aW5nLm10aW1lTXMpKSByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSBhd2FpdCB0aGlzLmhhbmRsZXMuZ2V0SGFuZGxlKGZpbGVQYXRoLCBmcy5jb25zdGFudHMuT19SRFdSIHwgZnMuY29uc3RhbnRzLk9fQ1JFQVQpO1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlLnRydW5jYXRlKDApO1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlLndyaXRlKGRhdGEsIDAsIGRhdGEubGVuZ3RoLCAwKTtcbiAgICAgICAgICAgIGlmIChsYXN0TW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBoYW5kbGUudXRpbWVzKG5ldyBEYXRlKGxhc3RNb2RpZmllZCksIG5ldyBEYXRlKGxhc3RNb2RpZmllZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG5cbiAgICAvLyBjb25maWcgaXMgYWNjZXB0ZWQgYW5kIGlnbm9yZWQ6IGEgZGlzayBkZWxldGlvbiBpcyBhIHBoeXNpY2FsIHJlbW92ZSAobm8gdG9tYnN0b25lIHRvIHN0YW1wIC0gQmxvYlN0b3JlJ3MgaW5kZXggY2FycmllcyB0aGUgdG9tYnN0b25lIGZvciBkaXNrIHNvdXJjZXMpXG4gICAgcHVibGljIGFzeW5jIGRlbChrZXk6IHN0cmluZywgY29uZmlnPzogRGVsQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgICAgICBsZXQgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKGtleSk7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5ydW4oZmlsZVBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5jbG9zZU5vdyhmaWxlUGF0aCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhmaWxlUGF0aCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5jb2RlICE9PSBcIkVOT0VOVFwiKSB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbW92ZShjb25maWc6IE1vdmVGaWxlQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgICAgICBpZiAoY29uZmlnLmZyb21QYXRoID09PSBjb25maWcudG9QYXRoKSByZXR1cm47XG4gICAgICAgIGxldCBmcm9tUGF0aCA9IHRoaXMuZmlsZVBhdGgoY29uZmlnLmZyb21QYXRoKTtcbiAgICAgICAgbGV0IHRvUGF0aCA9IHRoaXMuZmlsZVBhdGgoY29uZmlnLnRvUGF0aCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5ydW4oZnJvbVBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5jbG9zZU5vdyhmcm9tUGF0aCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKHRvUGF0aCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5jbG9zZU5vdyh0b1BhdGgpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZSh0b1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5yZW5hbWUoZnJvbVBhdGgsIHRvUGF0aCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgIT09IFwiRU5PRU5UXCIpIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IG1vdmUgJHtKU09OLnN0cmluZ2lmeShjb25maWcuZnJvbVBhdGgpfSB0byAke0pTT04uc3RyaW5naWZ5KGNvbmZpZy50b1BhdGgpfSBvbiAke3RoaXMuZ2V0RGVidWdOYW1lKCl9OiB0aGUgc291cmNlIGZpbGUgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVGhlIHJlbmFtZSBwcmVzZXJ2ZXMgdGhlIG10aW1lLCBidXQgYSBtb3ZlIG11c3Qgc3RhbXAgRlJFU0ggKHNlZSBJQXJjaGl2ZXMubW92ZSkgLSB0aGUgb2xkIHN0YW1wIGlzIGhvdyBhIG1vdmVkIGZpbGUgbG9zZXMgdG8gYSBzdGFsZSB0b21ic3RvbmUgYXQgaXRzIG5ldyBwYXRoXG4gICAgICAgICAgICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudXRpbWVzKHRvUGF0aCwgbm93LCBub3cpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXQoa2V5OiBzdHJpbmcsIGNvbmZpZz86IEdldENvbmZpZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldDIoa2V5LCBjb25maWcpO1xuICAgICAgICByZXR1cm4gcmVzdWx0ICYmIHJlc3VsdC5kYXRhIHx8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0MihrZXk6IHN0cmluZywgY29uZmlnPzogR2V0Q29uZmlnKTogUHJvbWlzZTx7IGRhdGE6IEJ1ZmZlcjsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgICAgICBsZXQgcmFuZ2UgPSBjb25maWc/LnJhbmdlO1xuICAgICAgICBsZXQgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKGtleSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKGZpbGVQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlOiBmcy5wcm9taXNlcy5GaWxlSGFuZGxlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBoYW5kbGUgPSBhd2FpdCB0aGlzLmhhbmRsZXMuZ2V0SGFuZGxlKGZpbGVQYXRoLCBmcy5jb25zdGFudHMuT19SRFdSKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgPT09IFwiRU5PRU5UXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBzdGF0cyA9IGF3YWl0IGhhbmRsZS5zdGF0KCk7XG4gICAgICAgICAgICBsZXQgc2l6ZSA9IHN0YXRzLnNpemU7XG4gICAgICAgICAgICAvLyBBIHNpemUtMCBmaWxlIGlzIGEgdG9tYnN0b25lIChhbiBlbXB0eSBmaWxlIElTIGEgbWlzc2luZyBmaWxlKSAtIGFic2VudCwgdW5sZXNzIHRoZSBjYWxsZXIgYXNrZWQgZm9yIHRvbWJzdG9uZXMuIFJhbmdlZCByZWFkcyBvZiBhIFJFQUwgZmlsZSBjYW4gc3RpbGwgbGVnaXRpbWF0ZWx5IHJldHVybiBubyBieXRlcyAocmFuZ2UgcGFzdCBFT0YsIGJlbG93KS5cbiAgICAgICAgICAgIGlmICghc2l6ZSAmJiAhY29uZmlnPy5pbmNsdWRlVG9tYnN0b25lcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IHJhbmdlICYmIE1hdGgubWluKHJhbmdlLnN0YXJ0LCBzaXplKSB8fCAwO1xuICAgICAgICAgICAgbGV0IGVuZCA9IHJhbmdlICYmIE1hdGgubWluKHJhbmdlLmVuZCwgc2l6ZSkgfHwgc2l6ZTtcbiAgICAgICAgICAgIC8vIG10aW1lTXMgaXMgUk9VTkRFRCBldmVyeXdoZXJlIHRoaXMgZGlzayByZXBvcnRzIGEgdGltZTogaXQgY2FycmllcyBmcmFjdGlvbmFsIG1pbGxpc2Vjb25kcyAoa2VybmVsLXN0YW1wZWQgZmlsZXMgaGF2ZSBuYW5vc2Vjb25kIG10aW1lcyksIGJ1dCB1dGltZXMgcm91bmQtdHJpcHMgb25seSB3aG9sZSBvbmVzIC0gc28gYSBmcmFjdGlvbmFsIHRpbWUgaGFuZGVkIHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gY291bGQgbmV2ZXIgYmUgcmVwcm9kdWNlZCBieSBwcm9wYWdhdGlvbiwgYW5kIGV2ZXJ5IGNvcHkgb2YgdGhlIGZpbGUgd291bGQgY29tcGFyZSBcIm9sZGVyXCIgdGhhbiB0aGUgb3JpZ2luYWwgZm9yZXZlci4gUm91bmQgcmF0aGVyIHRoYW4gZmxvb3IsIGJlY2F1c2UgdXRpbWVzIGdvZXMgdGhyb3VnaCBhIHNlY29uZHMgRE9VQkxFIGFuZCBjYW4gbGFuZCBhIGhhaXIgQkVMT1cgdGhlIHN0YW1wZWQgbWlsbGlzZWNvbmQgLSBmbG9vcmluZyB0dXJuZWQgdGhhdCByZXByZXNlbnRhdGlvbiBlcnJvciBpbnRvIGEgZnVsbCBsb3N0IG1pbGxpc2Vjb25kLCB1bi1yZXByb2R1Y2luZyBvdXIgb3duIHN0YW1wcy5cbiAgICAgICAgICAgIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiB7IGRhdGE6IEJ1ZmZlci5hbGxvYygwKSwgd3JpdGVUaW1lOiBNYXRoLnJvdW5kKHN0YXRzLm10aW1lTXMpLCBzaXplIH07XG4gICAgICAgICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmFsbG9jKGVuZCAtIHN0YXJ0KTtcbiAgICAgICAgICAgIGxldCB7IGJ5dGVzUmVhZCB9ID0gYXdhaXQgaGFuZGxlLnJlYWQoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoLCBzdGFydCk7XG4gICAgICAgICAgICBpZiAoYnl0ZXNSZWFkICE9PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2J1ZmZlci5sZW5ndGh9IGJ5dGVzIGF0ICR7ZmlsZVBhdGh9OiR7c3RhcnR9LCByZWFkICR7Ynl0ZXNSZWFkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogYnVmZmVyLCB3cml0ZVRpbWU6IE1hdGgucm91bmQoc3RhdHMubXRpbWVNcyksIHNpemUgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm8oa2V5OiBzdHJpbmcsIGNvbmZpZz86IEdldEluZm9Db25maWcpOiBQcm9taXNlPHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgICAgICBsZXQgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKGtleSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKGZpbGVQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RhdHMgPSBhd2FpdCBzdGF0T3JVbmRlZmluZWQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgaWYgKCFzdGF0cyB8fCAhc3RhdHMuaXNGaWxlKCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIXN0YXRzLnNpemUgJiYgIWNvbmZpZz8uaW5jbHVkZVRvbWJzdG9uZXMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4geyB3cml0ZVRpbWU6IE1hdGgucm91bmQoc3RhdHMubXRpbWVNcyksIHNpemU6IHN0YXRzLnNpemUgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmQocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IEZpbmRDb25maWcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5maW5kSW5mbyhwcmVmaXgsIGNvbmZpZykpLm1hcCh4ID0+IHgucGF0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRJbmZvKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiBGaW5kQ29uZmlnKTogUHJvbWlzZTxBcmNoaXZlRmlsZUluZm9bXT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICAgICAgbGV0IGluZm9zID0gbmV3IE1hcDxzdHJpbmcsIEFyY2hpdmVGaWxlSW5mbz4oKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0RmlsZXMoXCJcIiwgcHJlZml4LCBpbmZvcyk7XG4gICAgICAgIGxldCBmaWxlcyA9IEFycmF5LmZyb20oaW5mb3MudmFsdWVzKCkpO1xuICAgICAgICBmaWxlcyA9IGFwcGx5RmluZEluZm9TaGFwZShmaWxlcywgcHJlZml4LCBjb25maWcpO1xuICAgICAgICBzb3J0KGZpbGVzLCB4ID0+IHgucGF0aCk7XG4gICAgICAgIHJldHVybiBmaWxlcztcbiAgICB9XG5cbiAgICAvLyByZWxEaXIgaXMgXCJcIiBvciBlbmRzIHdpdGggXCIvXCIuIE9ubHkgZGVzY2VuZHMgaW50byBkaXJlY3RvcmllcyB0aGF0IGNhbiBzdGlsbCBtYXRjaCB0aGUgcHJlZml4LlxuICAgIHByaXZhdGUgYXN5bmMgY29sbGVjdEZpbGVzKHJlbERpcjogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgaW5mb3M6IE1hcDxzdHJpbmcsIEFyY2hpdmVGaWxlSW5mbz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGVudHJpZXM6IGZzLkRpcmVudFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZW50cmllcyA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIocGF0aC5qb2luKHRoaXMuZmlsZXNEaXIsIHJlbERpciksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBpZiAoZS5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm47XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgIGxldCByZWxQYXRoID0gcmVsRGlyICsgZW50cnkubmFtZTtcbiAgICAgICAgICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRpclBhdGggPSByZWxQYXRoICsgXCIvXCI7XG4gICAgICAgICAgICAgICAgaWYgKGRpclBhdGguc3RhcnRzV2l0aChwcmVmaXgpIHx8IHByZWZpeC5zdGFydHNXaXRoKGRpclBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdEZpbGVzKGRpclBhdGgsIHByZWZpeCwgaW5mb3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZW50cnkuaXNGaWxlKCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCFyZWxQYXRoLnN0YXJ0c1dpdGgocHJlZml4KSkgY29udGludWU7XG4gICAgICAgICAgICBsZXQgc3RhdHMgPSBhd2FpdCBzdGF0T3JVbmRlZmluZWQocGF0aC5qb2luKHRoaXMuZmlsZXNEaXIsIHJlbFBhdGgpKTtcbiAgICAgICAgICAgIC8vIERlbGV0ZWQgd2hpbGUgd2Ugd2VyZSB3YWxraW5nXG4gICAgICAgICAgICBpZiAoIXN0YXRzKSBjb250aW51ZTtcbiAgICAgICAgICAgIGluZm9zLnNldChyZWxQYXRoLCB7IHBhdGg6IHJlbFBhdGgsIGNyZWF0ZVRpbWU6IE1hdGgucm91bmQoc3RhdHMubXRpbWVNcyksIHNpemU6IHN0YXRzLnNpemUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgcmF3IGRpc2sgaGFzIG5vIHdpbmRvd3MsIHJvdXRlcywgb3IgaW1tdXRhYmlsaXR5LCBzbyB0aGUgcmVzdCBvZiB0aGUgU2V0Q29uZmlnIGhhcyBub3RoaW5nIHRvIGFwcGx5IHRvIGhlcmUgKHRoZSBzdG9yZSB3cmFwcGluZyB0aGlzIGRpc2sgaXMgd2hhdCBlbmZvcmNlcyB0aGVtKVxuICAgIHB1YmxpYyBhc3luYyBzZXRMYXJnZUZpbGUoY29uZmlnOiBTZXRMYXJnZUZpbGVDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGlkID0gYXdhaXQgdGhpcy5zdGFydExhcmdlVXBsb2FkKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gYXdhaXQgY29uZmlnLmdldE5leHREYXRhKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhKSBicmVhaztcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFwcGVuZExhcmdlVXBsb2FkKGlkLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmluaXNoTGFyZ2VVcGxvYWQoaWQsIGNvbmZpZy5wYXRoLCBjb25maWcubGFzdE1vZGlmaWVkKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5jYW5jZWxMYXJnZVVwbG9hZChpZCk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFyZ2UgZmlsZXMgc3RyZWFtIGludG8gdGhlaXIgb3duIGZpbGUgdW5kZXIgdXBsb2Fkcy8sIHRoZW4gbW92ZSBpbnRvIHBsYWNlIG9uIGZpbmlzaC4gTm8gaGFuZGxlIGlzIG9wZW5lZCB1bnRpbCB0aGUgZmlyc3QgYXBwZW5kIGFjdHVhbGx5IGhhcHBlbnMuXG4gICAgcHVibGljIGFzeW5jIHN0YXJ0TGFyZ2VVcGxvYWQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgICAgIGxldCBpZCA9IGAke0RhdGUubm93KCl9XyR7dGhpcy5uZXh0TGFyZ2VVcGxvYWRJZCsrfWA7XG4gICAgICAgIHRoaXMubGFyZ2VVcGxvYWRzLnNldChpZCwgeyB0bXBQYXRoOiBwYXRoLmpvaW4odGhpcy51cGxvYWRzRGlyLCBgdXBsb2FkXyR7aWR9LnRtcGApIH0pO1xuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICAgIC8qKiBvZmZzZXQgbWFrZXMgdGhlIHdyaXRlIFBPU0lUSU9OQUwgaW5zdGVhZCBvZiBhcHBlbmRpbmc6IGEgcmV0cmllZCBwYXJ0IGxhbmRzIGV4YWN0bHkgd2hlcmUgdGhlIGZhaWxlZCBhdHRlbXB0IHdvdWxkIGhhdmUsIHNvIHBhcnQgcmV0cmllcyBhcmUgaWRlbXBvdGVudC4gT25lIHVwbG9hZCBtdXN0IHVzZSBlaXRoZXIgYXBwZW5kcyBvciBvZmZzZXRzIHRocm91Z2hvdXQsIG5ldmVyIGJvdGggLSB0aGUgY2FjaGVkIGhhbmRsZSBrZWVwcyBpdHMgZmlyc3QgZmxhZ3MsIGFuZCBPX0FQUEVORCBpZ25vcmVzIHRoZSBwb3NpdGlvbiBhcmd1bWVudC4gKi9cbiAgICBwdWJsaWMgYXN5bmMgYXBwZW5kTGFyZ2VVcGxvYWQoaWQ6IHN0cmluZywgZGF0YTogQnVmZmVyLCBvZmZzZXQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHVwbG9hZCA9IHRoaXMubGFyZ2VVcGxvYWRzLmdldChpZCk7XG4gICAgICAgIGlmICghdXBsb2FkKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbGFyZ2UgdXBsb2FkICR7aWR9YCk7XG4gICAgICAgIGNvbnN0IHRtcFBhdGggPSB1cGxvYWQudG1wUGF0aDtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVzLnJ1bih0bXBQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgaGFuZGxlID0gYXdhaXQgdGhpcy5oYW5kbGVzLmdldEhhbmRsZSh0bXBQYXRoLCBmcy5jb25zdGFudHMuT19XUk9OTFkgfCBmcy5jb25zdGFudHMuT19DUkVBVCB8IGZzLmNvbnN0YW50cy5PX0FQUEVORCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlLndyaXRlKGRhdGEsIDAsIGRhdGEubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0gYXdhaXQgdGhpcy5oYW5kbGVzLmdldEhhbmRsZSh0bXBQYXRoLCBmcy5jb25zdGFudHMuT19XUk9OTFkgfCBmcy5jb25zdGFudHMuT19DUkVBVCk7XG4gICAgICAgICAgICBhd2FpdCBoYW5kbGUud3JpdGUoZGF0YSwgMCwgZGF0YS5sZW5ndGgsIG9mZnNldCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZmluaXNoTGFyZ2VVcGxvYWQoaWQ6IHN0cmluZywga2V5OiBzdHJpbmcsIGxhc3RNb2RpZmllZD86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgdXBsb2FkID0gdGhpcy5sYXJnZVVwbG9hZHMuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCF1cGxvYWQpIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXJnZSB1cGxvYWQgJHtpZH1gKTtcbiAgICAgICAgaWYgKGxhc3RNb2RpZmllZCkge1xuICAgICAgICAgICAgYXNzZXJ0VmFsaWRMYXN0TW9kaWZpZWQobGFzdE1vZGlmaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0bXBQYXRoID0gdXBsb2FkLnRtcFBhdGg7XG4gICAgICAgIHRoaXMubGFyZ2VVcGxvYWRzLmRlbGV0ZShpZCk7XG4gICAgICAgIGxldCBmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgoa2V5KTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVzLnJ1bih0bXBQYXRoLCAoKSA9PiB0aGlzLmhhbmRsZXMuY2xvc2VOb3codG1wUGF0aCkpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKGZpbGVQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDbG9zZSBhbnkgY2FjaGVkIGhhbmRsZSB0byB0aGUgZmlsZSB3ZSdyZSByZXBsYWNpbmcsIHNvIGxhdGVyIHJlYWRzIHJlb3BlbiB0aGUgbmV3IGZpbGVcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5jbG9zZU5vdyhmaWxlUGF0aCk7XG4gICAgICAgICAgICBpZiAobGFzdE1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgLy8gQW4gb2xkZXIgd3JpdGUgbmV2ZXIgb3ZlcndyaXRlcyBhIG5ld2VyIG9uZSAoc2VlIElBcmNoaXZlcy5zZXQpIC0gcmUtY2hlY2tlZCBIRVJFLCBub3QganVzdCB3aGVuIHRoZSB1cGxvYWQgc3RhcnRlZCwgYmVjYXVzZSBhIGxhcmdlIHVwbG9hZCBzdHJlYW1zIGZvciBtaW51dGVzIGFuZCB0aGF0IHdpbmRvdyBpcyBleGFjdGx5IHdoZW4gYSBuZXdlciB3cml0ZSBsYW5kc1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZyA9IGF3YWl0IHN0YXRPclVuZGVmaW5lZChmaWxlUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nICYmIE1hdGgucm91bmQobGFzdE1vZGlmaWVkKSA8IE1hdGgucm91bmQoZXhpc3RpbmcubXRpbWVNcykpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMucm0odG1wUGF0aCwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5yZW5hbWUodG1wUGF0aCwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0gXCJFTk9FTlRcIikgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAvLyBFaXRoZXIgbm90aGluZyB3YXMgZXZlciBhcHBlbmRlZCwgb3IgdGhlIHRlbXAgZmlsZSB3YXMgZGVzdHJveWVkIHVuZGVyIHVzIC0gYm90aCBtdXN0IGZhaWwgbG91ZGx5LiBNYXRlcmlhbGl6aW5nIGFuIGVtcHR5IGZpbGUgaGVyZSAodGhlIG9sZCBiZWhhdmlvcikgc2lsZW50bHkgdHVybmVkIHRoZSB1cGxvYWQgaW50byBhIERFTEVUSU9OLCBzaW5jZSBhbiBlbXB0eSBmaWxlIElTIGEgbWlzc2luZyBmaWxlIGluIHRoaXMgc3lzdGVtLlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTGFyZ2UgdXBsb2FkIG9mICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gaGFzIG5vIGRhdGE6IHRoZSB1cGxvYWQgdGVtcCBmaWxlICR7dG1wUGF0aH0gZG9lcyBub3QgZXhpc3QuIEVpdGhlciBubyBkYXRhIHdhcyBldmVyIGFwcGVuZGVkIChlbXB0eSBmaWxlcyBhcmUgZm9yYmlkZGVuIC0gdGhleSByZWFkIGJhY2sgYXMgZGVsZXRpb25zOyB1c2UgZGVsIHRvIGRlbGV0ZSkgb3IgdGhlIHRlbXAgZmlsZSB3YXMgcmVtb3ZlZCB3aGlsZSB0aGUgdXBsb2FkIHdhcyBydW5uaW5nLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIHJlbmFtZSBwcmVzZXJ2ZXMgdGhlIHRlbXAgZmlsZSdzIG10aW1lLCB3aGljaCBpcyBqdXN0IHdoZW4gdGhlIGxhc3QgYXBwZW5kIGhhcHBlbmVkIC0gdGhlIGxvZ2ljYWwgd3JpdGUgdGltZSBoYXMgdG8gYmUgc3RhbXBlZCBleHBsaWNpdGx5IChpdCBpcyB0aGUgbWV0YWRhdGEgc2NhbnMgb3JkZXIgZXZlcnl0aGluZyBieSlcbiAgICAgICAgICAgIGlmIChsYXN0TW9kaWZpZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51dGltZXMoZmlsZVBhdGgsIG5ldyBEYXRlKGxhc3RNb2RpZmllZCksIG5ldyBEYXRlKGxhc3RNb2RpZmllZCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGNhbmNlbExhcmdlVXBsb2FkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHVwbG9hZCA9IHRoaXMubGFyZ2VVcGxvYWRzLmdldChpZCk7XG4gICAgICAgIGlmICghdXBsb2FkKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHRtcFBhdGggPSB1cGxvYWQudG1wUGF0aDtcbiAgICAgICAgdGhpcy5sYXJnZVVwbG9hZHMuZGVsZXRlKGlkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVzLnJ1bih0bXBQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMuY2xvc2VOb3codG1wUGF0aCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnVubGluayh0bXBQYXRoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgIT09IFwiRU5PRU5UXCIpIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRVUkwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBnZXRVUkwgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGlzayBhcmNoaXZlcyAoJHt0aGlzLmdldERlYnVnTmFtZSgpfSwgcGF0aCAke3BhdGh9KWApO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhdE9yVW5kZWZpbmVkKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGZzLlN0YXRzIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZzLnByb21pc2VzLnN0YXQoZmlsZVBhdGgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoZS5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgIH1cbn1cblxuLy8gVGhlIGZvbGRlcnMvc2hhbGxvdyBwb3N0LXByb2Nlc3Npbmcgc2hhcmVkIGJ5IGZpbmRJbmZvIGltcGxlbWVudGF0aW9ucyB0aGF0IGxpc3QgZmxhdCBmaWxlcyAodXNlZCBieSBBcmNoaXZlc0Rpc2sgb24gdGhlIHJhdyBkaXNrIHdhbGssIGFuZCBieSBCbG9iU3RvcmUgb24gaXRzIGluZGV4KS5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbmRJbmZvU2hhcGUoZmlsZXM6IEFyY2hpdmVGaWxlSW5mb1tdLCBwcmVmaXg6IHN0cmluZywgY29uZmlnPzogRmluZENvbmZpZyk6IEFyY2hpdmVGaWxlSW5mb1tdIHtcbiAgICBpZiAoY29uZmlnPy50eXBlID09PSBcImZvbGRlcnNcIikge1xuICAgICAgICBsZXQgZm9sZGVycyA9IG5ldyBNYXA8c3RyaW5nLCBBcmNoaXZlRmlsZUluZm8+KCk7XG4gICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGxldCByZXN0ID0gZmlsZS5wYXRoLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgICAgICAgICAgbGV0IHJlc3RQYXJ0cyA9IHJlc3Quc3BsaXQoXCIvXCIpO1xuICAgICAgICAgICAgaWYgKHJlc3RQYXJ0cy5sZW5ndGggPCAyKSBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCBmb2xkZXI6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChjb25maWcuc2hhbGxvdykge1xuICAgICAgICAgICAgICAgIGZvbGRlciA9IHByZWZpeCArIHJlc3RQYXJ0c1swXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9sZGVyID0gZmlsZS5wYXRoLnNwbGl0KFwiL1wiKS5zbGljZSgwLCAtMSkuam9pbihcIi9cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb2xkZXJzLnNldChmb2xkZXIsIHsgcGF0aDogZm9sZGVyLCBjcmVhdGVUaW1lOiBmaWxlLmNyZWF0ZVRpbWUsIHNpemU6IGZpbGUuc2l6ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShmb2xkZXJzLnZhbHVlcygpKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZz8uc2hhbGxvdykge1xuICAgICAgICByZXR1cm4gZmlsZXMuZmlsdGVyKGZpbGUgPT4gIWZpbGUucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKS5pbmNsdWRlcyhcIi9cIikpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZXM7XG59XG4iXX0=
|
|
436
|
-
/* _JS_SOURCE_HASH = "
|
|
436
|
+
/* _JS_SOURCE_HASH = "09933c5174ac064baeeb88387c0fb3c40b2ec90a6cdb9c1f321609a1e0d7761c"; */
|