sliftutils 1.7.71 → 1.7.72
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/index.d.ts +505 -257
- 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/hostServer.ts.cache +5 -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/spec.txt +10 -0
- package/storage/ArchivesDisk.d.ts +4 -13
- package/storage/ArchivesDisk.ts +6 -4
- package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
- package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
- package/storage/IArchives.d.ts +14 -10
- package/storage/IArchives.ts +16 -4
- package/storage/backblaze.d.ts +3 -9
- package/storage/backblaze.ts +22 -19
- package/storage/dist/ArchivesDisk.ts.cache +6 -3
- package/storage/dist/FileFolderAPI.tsx.cache +2 -2
- package/storage/dist/IArchives.ts.cache +18 -4
- 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/TransactionStorage.ts.cache +2 -2
- package/storage/dist/backblaze.ts.cache +36 -27
- package/storage/dist/fileSystemPointer.ts.cache +2 -2
- package/storage/dist/remoteFileStorage.ts.cache +2 -2
- package/storage/remoteStorage/ArchivesRemote.d.ts +5 -9
- package/storage/remoteStorage/ArchivesRemote.ts +25 -20
- package/storage/remoteStorage/ArchivesUrl.d.ts +3 -9
- package/storage/remoteStorage/ArchivesUrl.ts +7 -5
- package/storage/remoteStorage/accessPage.tsx +4 -4
- package/storage/remoteStorage/accessStats.d.ts +2 -0
- package/storage/remoteStorage/accessStats.ts +32 -0
- package/storage/remoteStorage/blobStore.d.ts +193 -88
- package/storage/remoteStorage/blobStore.ts +535 -400
- package/storage/remoteStorage/bucketDisk.d.ts +18 -0
- package/storage/remoteStorage/bucketDisk.ts +66 -0
- package/storage/remoteStorage/createArchives.d.ts +4 -10
- package/storage/remoteStorage/createArchives.ts +101 -62
- package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +29 -20
- package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +8 -5
- package/storage/remoteStorage/dist/accessPage.tsx.cache +6 -6
- package/storage/remoteStorage/dist/accessStats.ts.cache +39 -4
- package/storage/remoteStorage/dist/blobStore.ts.cache +517 -375
- package/storage/remoteStorage/dist/bucketDisk.ts.cache +72 -0
- package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
- package/storage/remoteStorage/dist/createArchives.ts.cache +112 -58
- package/storage/remoteStorage/dist/deployTakeover.ts.cache +2 -2
- package/storage/remoteStorage/dist/intermediateSources.ts.cache +13 -13
- package/storage/remoteStorage/dist/remoteConfig.ts.cache +19 -3
- package/storage/remoteStorage/dist/serverConfig.ts.cache +116 -0
- package/storage/remoteStorage/dist/sourceWrapper.ts.cache +7 -6
- package/storage/remoteStorage/dist/sourcesList.ts.cache +6 -3
- package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
- package/storage/remoteStorage/dist/storageController.ts.cache +224 -191
- package/storage/remoteStorage/dist/storageServer.ts.cache +9 -9
- package/storage/remoteStorage/dist/storageServerState.ts.cache +330 -567
- package/storage/remoteStorage/dist/storePlan.ts.cache +149 -0
- package/storage/remoteStorage/dist/validation.ts.cache +40 -0
- package/storage/remoteStorage/grantAccessCli.ts +1 -1
- package/storage/remoteStorage/intermediateSources.d.ts +3 -5
- package/storage/remoteStorage/intermediateSources.ts +14 -16
- package/storage/remoteStorage/remoteConfig.d.ts +2 -2
- package/storage/remoteStorage/remoteConfig.ts +19 -3
- package/storage/remoteStorage/serverConfig.d.ts +27 -0
- package/storage/remoteStorage/serverConfig.ts +109 -0
- package/storage/remoteStorage/sourceWrapper.d.ts +3 -3
- package/storage/remoteStorage/sourceWrapper.ts +7 -6
- package/storage/remoteStorage/sourcesList.ts +3 -0
- package/storage/remoteStorage/storageController.d.ts +118 -36
- package/storage/remoteStorage/storageController.ts +166 -168
- package/storage/remoteStorage/storageServer.ts +1 -1
- package/storage/remoteStorage/storageServerState.d.ts +52 -63
- package/storage/remoteStorage/storageServerState.ts +340 -584
- package/storage/remoteStorage/storePlan.d.ts +34 -0
- package/storage/remoteStorage/storePlan.ts +166 -0
- package/storage/remoteStorage/validation.d.ts +4 -0
- package/storage/remoteStorage/validation.ts +31 -0
|
@@ -13,7 +13,7 @@ const networking_1 = require("socket-function/src/networking");
|
|
|
13
13
|
const RequireController_1 = require("socket-function/require/RequireController");
|
|
14
14
|
const hostServer_1 = require("../../misc/https/hostServer");
|
|
15
15
|
const storageController_1 = require("./storageController");
|
|
16
|
-
const
|
|
16
|
+
const serverConfig_1 = require("./serverConfig");
|
|
17
17
|
const deployTakeover_1 = require("./deployTakeover");
|
|
18
18
|
const ArchivesRemote_1 = require("./ArchivesRemote");
|
|
19
19
|
// Import browser code, so it is allowed to be required by the client
|
|
@@ -31,7 +31,7 @@ async function checkDiskSpace(config) {
|
|
|
31
31
|
let free = Number(stats.bavail) * Number(stats.bsize);
|
|
32
32
|
let hardLimit = threshold * HARD_REJECT_FRACTION;
|
|
33
33
|
if (free >= threshold) {
|
|
34
|
-
(0,
|
|
34
|
+
(0, serverConfig_1.setWritesRejectedReason)(undefined);
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
37
|
let under = threshold - free;
|
|
@@ -40,12 +40,12 @@ async function checkDiskSpace(config) {
|
|
|
40
40
|
+ ` (warn threshold ${formatBytes(threshold)}, ${formatBytes(under)} under;`
|
|
41
41
|
+ ` hard-reject threshold ${formatBytes(hardLimit)}${rejecting ? ", REACHED — write ops now rejected" : ""}).`);
|
|
42
42
|
if (rejecting) {
|
|
43
|
-
(0,
|
|
43
|
+
(0, serverConfig_1.setWritesRejectedReason)(`Storage server is out of disk space: only ${formatBytes(free)} free on ${folder}`
|
|
44
44
|
+ ` (hard-reject threshold ${formatBytes(hardLimit)}, warn threshold ${formatBytes(threshold)}).`
|
|
45
45
|
+ ` Write operations (create/append/new bucket) are rejected; reads, findInfo, and deletes still work — please free space.`);
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
48
|
-
(0,
|
|
48
|
+
(0, serverConfig_1.setWritesRejectedReason)(undefined);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
// Full path to the grantAccess CLI bootstrap that lives next to this file. The SSH command shown on the access page invokes it via `node <path> ...` (found through __dirname so consumers don't have to know where our source lives).
|
|
@@ -65,7 +65,7 @@ async function hostStorageServer(config) {
|
|
|
65
65
|
}
|
|
66
66
|
await promises_1.default.mkdir(folder, { recursive: true });
|
|
67
67
|
let lowSpaceThreshold = (_a = config.lowSpaceThresholdBytes) !== null && _a !== void 0 ? _a : DEFAULT_LOW_SPACE_THRESHOLD_BYTES;
|
|
68
|
-
(0,
|
|
68
|
+
(0, serverConfig_1.setStorageServerConfig)({
|
|
69
69
|
domain,
|
|
70
70
|
port,
|
|
71
71
|
rootDomain,
|
|
@@ -102,12 +102,12 @@ async function hostStorageServer(config) {
|
|
|
102
102
|
var _a, _b;
|
|
103
103
|
if (isMainPort)
|
|
104
104
|
return;
|
|
105
|
-
(0,
|
|
105
|
+
(0, serverConfig_1.addExtraListenPort)(listeningPort);
|
|
106
106
|
(0, deployTakeover_1.setAltPort)(listeningPort);
|
|
107
107
|
let listenEnd = (0, deployTakeover_1.getAltPortListenEnd)();
|
|
108
108
|
let timer = setTimeout(() => {
|
|
109
109
|
console.log(`Alternate port ${listeningPort} reached its end of life at ${new Date(listenEnd).toISOString()}; it no longer counts as one of our addresses (the socket itself stays bound, as the main-port relay forwards into it)`);
|
|
110
|
-
(0,
|
|
110
|
+
(0, serverConfig_1.removeExtraListenPort)(listeningPort);
|
|
111
111
|
}, Math.max(0, listenEnd - Date.now()));
|
|
112
112
|
(_b = (_a = timer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
113
113
|
},
|
|
@@ -115,5 +115,5 @@ async function hostStorageServer(config) {
|
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
exports.hostStorageServer = hostStorageServer;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZVNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0b3JhZ2VTZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRXBDLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsMkRBQThCO0FBQzlCLG1FQUFnRTtBQUNoRSwrREFBK0Q7QUFDL0QsaUZBQThFO0FBQzlFLDREQUF5RDtBQUN6RCwyREFBOEQ7QUFDOUQsNkRBQWtJO0FBQ2xJLHFEQUFrSDtBQUNsSCxxREFBbUQ7QUFDbkQscUVBQXFFO0FBQ3JFLHdCQUFzQjtBQUV0QixNQUFNLGlDQUFpQyxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3pELE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDcEQsd0xBQXdMO0FBQ3hMLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBYWpDLFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDOUIsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNuRCxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FBQyxNQUE2QztJQUN2RSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxNQUFNLGtCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLFNBQVMsR0FBRyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7SUFDakQsSUFBSSxJQUFJLElB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QixNQUFNLElBQUEscUNBQW9CLEdBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsV0FBVyxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFOztnQkFDdkMsSUFBSSxVQUFVO29CQUFFLE9BQU87Z0JBQ3ZCLElBQUEsdUNBQWtCLEVBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2xDLElBQUEsMkJBQVUsRUFBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxTQUFTLEdBQUcsSUFBQSxvQ0FBbUIsR0FBRSxDQUFDO2dCQUN0QyxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixhQUFhLCtCQUErQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsd0hBQXdILENBQUMsQ0FBQztvQkFDck8sSUFBQSwwQ0FBcUIsRUFBQyxhQUFhLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxNQUFBLE1BQUMsS0FBZ0MsRUFBQyxLQUFLLGtEQUFJLENBQUM7WUFDaEQsQ0FBQztTQUNKO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQTdERCw4Q0E2REMiLCJzb3VyY2VzQ29udGVudCI6WyJwcm9jZXNzLmVudi5OT0RFX0VOViA9IFwicHJvZHVjdGlvblwiO1xuXG5pbXBvcnQgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzcCBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IFNvY2tldEZ1bmN0aW9uIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9Tb2NrZXRGdW5jdGlvblwiO1xuaW1wb3J0IHsgZ2V0RXh0ZXJuYWxJUCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL25ldHdvcmtpbmdcIjtcbmltcG9ydCB7IFJlcXVpcmVDb250cm9sbGVyIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9yZXF1aXJlL1JlcXVpcmVDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBob3N0U2VydmVyIH0gZnJvbSBcIi4uLy4uL21pc2MvaHR0cHMvaG9zdFNlcnZlclwiO1xuaW1wb3J0IHsgUmVtb3RlU3RvcmFnZUNvbnRyb2xsZXIgfSBmcm9tIFwiLi9zdG9yYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgc2V0U3RvcmFnZVNlcnZlckNvbmZpZywgc2V0V3JpdGVzUmVqZWN0ZWRSZWFzb24sIGFkZEV4dHJhTGlzdGVuUG9ydCwgcmVtb3ZlRXh0cmFMaXN0ZW5Qb3J0IH0gZnJvbSBcIi4vc3RvcmFnZVNlcnZlclN0YXRlXCI7XG5pbXBvcnQgeyBkZXRlY3REZXBsb3lUYWtlb3Zlciwgc2V0QWx0UG9ydCwgZ2V0QWx0UG9ydExpc3RlbkVuZCwgZ2V0TWFpblBvcnRBY3F1aXJlRGVsYXkgfSBmcm9tIFwiLi9kZXBsb3lUYWtlb3ZlclwiO1xuaW1wb3J0IHsgcGFyc2VTdG9yYWdlVXJsIH0gZnJvbSBcIi4vQXJjaGl2ZXNSZW1vdGVcIjtcbi8vIEltcG9ydCBicm93c2VyIGNvZGUsIHNvIGl0IGlzIGFsbG93ZWQgdG8gYmUgcmVxdWlyZWQgYnkgdGhlIGNsaWVudFxuaW1wb3J0IFwiLi9hY2Nlc3NQYWdlXCI7XG5cbmNvbnN0IERFRkFVTFRfTE9XX1NQQUNFX1RIUkVTSE9MRF9CWVRFUyA9IDI1ICogMTAyNCAqKiAzO1xuY29uc3QgRElTS19TUEFDRV9DSEVDS19JTlRFUlZBTF9NUyA9IDE1ICogNjAgKiAxMDAwO1xuLy8gQmVsb3cgdGhpcyBmcmFjdGlvbiBvZiB0aGUgd2FybiB0aHJlc2hvbGQsIHdlIHN0YXJ0IHJlamVjdGluZyB3cml0ZXMgc28gdGhlIHNlcnZlciBpdHNlbGYgZG9lc24ndCB0aXAgdGhlIG1hY2hpbmUgaW50byBpbnN0YWJpbGl0eS4gUmVhZHMvZGVsZXRlcyBzdGlsbCB3b3JrIHNvIHVzZXJzIGNhbiBmcmVlIHNwYWNlLlxuY29uc3QgSEFSRF9SRUpFQ1RfRlJBQ1RJT04gPSAwLjE7XG5cbi8vIFRoZSByZW1vdGUgc3RvcmFnZSBzZXJ2ZXIsIGFzIGEgbGlicmFyeSBmdW5jdGlvbjogY29uc3VtZXJzIGNhbGwgaG9zdFN0b3JhZ2VTZXJ2ZXIoKSBmcm9tIHRoZWlyIG93biBwcm9jZXNzIHRvIHN0YXJ0IGhvc3RpbmcgKG9yIHVzZSB0aGUgc3RvcmFnZXNlcnZlciBiaW4sIHNlZSBzdG9yYWdlU2VydmVyQ2xpLnRzKS4gVGhlIGdyYW50QWNjZXNzLmpzIGJvb3RzdHJhcCAobmV4dCB0byB0aGlzIGZpbGUpIGlzIHdoYXQgdGhlIGFjY2VzcyBwYWdlJ3Mgc2hvd24gU1NIIGNvbW1hbmQgcG9pbnRzIGF0LlxuXG5leHBvcnQgdHlwZSBIb3N0U3RvcmFnZVNlcnZlckNvbmZpZyA9IHtcbiAgICAvLyBGdWxsIFVSTCBvZiB0aGlzIHN0b3JhZ2Ugc2VydmVyLCBlLmcuIFwiaHR0cHM6Ly8xLTItMy00LmV4YW1wbGUuY29tOjQ0NDRcIi4gVGhlIHN1YmRvbWFpbiBtdXN0IGJlIGFuIGlwIGRvbWFpbiAtIHRoaXMgbWFjaGluZSdzIGV4dGVybmFsIElQIHdpdGggZGFzaGVzLCBvciAxMjctMC0wLTEgZm9yIGxvY2FsIHRlc3RpbmcgKHNlZSB0aGUgdmFsaWRhdGlvbiBpbiBob3N0U3RvcmFnZVNlcnZlcikuIFRoZSBkb21haW4gYW5kIHBvcnQgYXJlIGV4dHJhY3RlZCBmcm9tIGl0IChidWNrZXQgcm91dGluZyBVUkxzIGNsaWVudHMgdXNlIGxvb2sgbGlrZVxuICAgIC8vIGh0dHBzOi8vMS0yLTMtNC5leGFtcGxlLmNvbTo0NDQ0L2ZpbGUvPGFjY291bnQ+LzxidWNrZXROYW1lPi9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb24pLlxuICAgIHVybDogc3RyaW5nO1xuICAgIGZvbGRlcjogc3RyaW5nO1xuICAgIC8vIFdoZW4gZnJlZSBzcGFjZSBvbiB0aGUgZm9sZGVyJ3MgZHJpdmUgZHJvcHMgYmVsb3cgdGhpcyBtYW55IGJ5dGVzLCB0aGUgc2VydmVyIGNvbnNvbGUuZXJyb3JzIGV2ZXJ5IDE1IG1pbnV0ZXMuIEJlbG93IDEwJSBvZiBpdCwgdGhlIHNlcnZlciBhbHNvIHJlamVjdHMgd3JpdGUgb3BlcmF0aW9ucyAoY3JlYXRpbmcgZmlsZXMsIGxhcmdlIHVwbG9hZHMsIG5ldyBidWNrZXRzKSDigJQgcmVhZHMsIGZpbmRJbmZvLCBhbmQgZGVsZXRlcyBzdGlsbCB3b3JrIHNvIHRoZSB1c2VyIGNhbiBmcmVlIHNwYWNlLiBEZWZhdWx0IDI1IEdpQi5cbiAgICBsb3dTcGFjZVRocmVzaG9sZEJ5dGVzPzogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQgKiogMykudG9GaXhlZCgyKX0gR2lCYDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tEaXNrU3BhY2UoY29uZmlnOiB7IGZvbGRlcjogc3RyaW5nOyB0aHJlc2hvbGQ6IG51bWJlciB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHsgZm9sZGVyLCB0aHJlc2hvbGQgfSA9IGNvbmZpZztcbiAgICBsZXQgc3RhdHMgPSBhd2FpdCBmc3Auc3RhdGZzKGZvbGRlcik7XG4gICAgbGV0IGZyZWUgPSBOdW1iZXIoc3RhdHMuYmF2YWlsKSAqIE51bWJlcihzdGF0cy5ic2l6ZSk7XG4gICAgbGV0IGhhcmRMaW1pdCA9IHRocmVzaG9sZCAqIEhBUkRfUkVKRUNUX0ZSQUNUSU9OO1xuICAgIGlmIChmcmVlID49IHRocmVzaG9sZCkge1xuICAgICAgICBzZXRXcml0ZXNSZWplY3RlZFJlYXNvbih1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB1bmRlciA9IHRocmVzaG9sZCAtIGZyZWU7XG4gICAgbGV0IHJlamVjdGluZyA9IGZyZWUgPCBoYXJkTGltaXQ7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFN0b3JhZ2UgZm9sZGVyICR7Zm9sZGVyfSBpcyBsb3cgb24gZGlzazogJHtmb3JtYXRCeXRlcyhmcmVlKX0gZnJlZWBcbiAgICAgICAgKyBgICh3YXJuIHRocmVzaG9sZCAke2Zvcm1hdEJ5dGVzKHRocmVzaG9sZCl9LCAke2Zvcm1hdEJ5dGVzKHVuZGVyKX0gdW5kZXI7YFxuICAgICAgICArIGAgaGFyZC1yZWplY3QgdGhyZXNob2xkICR7Zm9ybWF0Qnl0ZXMoaGFyZExpbWl0KX0ke3JlamVjdGluZyA/IFwiLCBSRUFDSEVEIOKAlCB3cml0ZSBvcHMgbm93IHJlamVjdGVkXCIgOiBcIlwifSkuYFxuICAgICk7XG4gICAgaWYgKHJlamVjdGluZykge1xuICAgICAgICBzZXRXcml0ZXNSZWplY3RlZFJlYXNvbihcbiAgICAgICAgICAgIGBTdG9yYWdlIHNlcnZlciBpcyBvdXQgb2YgZGlzayBzcGFjZTogb25seSAke2Zvcm1hdEJ5dGVzKGZyZWUpfSBmcmVlIG9uICR7Zm9sZGVyfWBcbiAgICAgICAgICAgICsgYCAoaGFyZC1yZWplY3QgdGhyZXNob2xkICR7Zm9ybWF0Qnl0ZXMoaGFyZExpbWl0KX0sIHdhcm4gdGhyZXNob2xkICR7Zm9ybWF0Qnl0ZXModGhyZXNob2xkKX0pLmBcbiAgICAgICAgICAgICsgYCBXcml0ZSBvcGVyYXRpb25zIChjcmVhdGUvYXBwZW5kL25ldyBidWNrZXQpIGFyZSByZWplY3RlZDsgcmVhZHMsIGZpbmRJbmZvLCBhbmQgZGVsZXRlcyBzdGlsbCB3b3JrIOKAlCBwbGVhc2UgZnJlZSBzcGFjZS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2V0V3JpdGVzUmVqZWN0ZWRSZWFzb24odW5kZWZpbmVkKTtcbiAgICB9XG59XG5cbi8vIEZ1bGwgcGF0aCB0byB0aGUgZ3JhbnRBY2Nlc3MgQ0xJIGJvb3RzdHJhcCB0aGF0IGxpdmVzIG5leHQgdG8gdGhpcyBmaWxlLiBUaGUgU1NIIGNvbW1hbmQgc2hvd24gb24gdGhlIGFjY2VzcyBwYWdlIGludm9rZXMgaXQgdmlhIGBub2RlIDxwYXRoPiAuLi5gIChmb3VuZCB0aHJvdWdoIF9fZGlybmFtZSBzbyBjb25zdW1lcnMgZG9uJ3QgaGF2ZSB0byBrbm93IHdoZXJlIG91ciBzb3VyY2UgbGl2ZXMpLlxuZnVuY3Rpb24gZ2V0R3JhbnRBY2Nlc3NDbGlQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiZ3JhbnRBY2Nlc3MuanNcIik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBob3N0U3RvcmFnZVNlcnZlcihjb25maWc6IEhvc3RTdG9yYWdlU2VydmVyQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHsgdXJsLCBmb2xkZXIgfSA9IGNvbmZpZztcbiAgICBsZXQgeyBhZGRyZXNzOiBkb21haW4sIHBvcnQgfSA9IHBhcnNlU3RvcmFnZVVybCh1cmwpO1xuICAgIGxldCByb290RG9tYWluID0gZG9tYWluLnNwbGl0KFwiLlwiKS5zbGljZSgtMikuam9pbihcIi5cIik7XG4gICAgbGV0IGV4dGVybmFsSVAgPSAoYXdhaXQgZ2V0RXh0ZXJuYWxJUCgpKS50cmltKCk7XG4gICAgLy8gVGhlIHN1YmRvbWFpbiBtdXN0IGJlIGFuIGlwIGRvbWFpbjogdGhlIGRvbWFpbidzIEEgcmVjb3JkIHBvaW50cyBhdCBleGFjdGx5IG9uZSBtYWNoaW5lLCBzbyBhIGR5bmFtaWMgbmFtZSB3b3VsZCBsZXQgdGhlIHNhbWUgc2NyaXB0IHJ1biBvbiB0d28gc2VydmVycyBhbmQgc2lsZW50bHkgZmlnaHQgb3ZlciBpdC4gRW5jb2RpbmcgdGhlIElQIG1ha2VzIHRoYXQgbWlzdGFrZSBmYWlsIGxvdWRseSAtIHRoZSB3cm9uZyBtYWNoaW5lJ3MgZG9tYWluIGp1c3QgZG9lc24ndCBtYXRjaC5cbiAgICBsZXQgYWxsb3dlZERvbWFpbnMgPSBbYDEyNy0wLTAtMS4ke3Jvb3REb21haW59YCwgYCR7ZXh0ZXJuYWxJUC5yZXBsYWNlQWxsKFwiLlwiLCBcIi1cIil9LiR7cm9vdERvbWFpbn1gXTtcbiAgICBpZiAoIWFsbG93ZWREb21haW5zLmluY2x1ZGVzKGRvbWFpbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3RvcmFnZSBzZXJ2ZXIgZG9tYWluIGlzIGJhc2VkIG9uIHRoZSBtYWNoaW5lJ3MgSVAgKHRoZSBzdWJkb21haW4gaXMgdGhlIElQIHdpdGggZG90cyByZXBsYWNlZCBieSBkYXNoZXMpLiBFeHBlY3RlZCAke2FsbG93ZWREb21haW5zLmpvaW4oXCIgb3IgXCIpfSwgd2FzICR7ZG9tYWlufS4gWW91ciBleHRlcm5hbCBJUCBpcyAke2V4dGVybmFsSVB9LmApO1xuICAgIH1cbiAgICBhd2FpdCBmc3AubWtkaXIoZm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBsZXQgbG93U3BhY2VUaHJlc2hvbGQgPSBjb25maWcubG93U3BhY2VUaHJlc2hvbGRCeXRlcyA/PyBERUZBVUxUX0xPV19TUEFDRV9USFJFU0hPTERfQllURVM7XG4gICAgc2V0U3RvcmFnZVNlcnZlckNvbmZpZyh7XG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgcG9ydCxcbiAgICAgICAgcm9vdERvbWFpbixcbiAgICAgICAgc3NoVGFyZ2V0OiBgJHtvcy51c2VySW5mbygpLnVzZXJuYW1lfUAke2V4dGVybmFsSVB9YCxcbiAgICAgICAgc2VydmVyQ29tbWFuZDogYG5vZGUgJHtnZXRHcmFudEFjY2Vzc0NsaVBhdGgoKX0gLS11cmwgJHt1cmx9YCxcbiAgICAgICAgZm9sZGVyOiBwYXRoLnJlc29sdmUoZm9sZGVyKSxcbiAgICB9KTtcblxuICAgIFJlcXVpcmVDb250cm9sbGVyLmFsbG93QWxsTm9kZU1vZHVsZXMoKTtcbiAgICBTb2NrZXRGdW5jdGlvbi5leHBvc2UoUmVxdWlyZUNvbnRyb2xsZXIpO1xuICAgIFNvY2tldEZ1bmN0aW9uLmV4cG9zZShSZW1vdGVTdG9yYWdlQ29udHJvbGxlcik7XG4gICAgLy8gRXZlcnkgSFRUUCBwYXRoIGdvZXMgdGhyb3VnaCBodHRwRW50cnk6IC9maWxlLzxhY2NvdW50Pi88YnVja2V0TmFtZT4vLi4uIHNlcnZlcyBwdWJsaWMgYnVja2V0IGZpbGVzLCBldmVyeXRoaW5nIGVsc2Ugc2VydmVzIHRoZSBhY2Nlc3MgcGFnZSAodGhlIHBhdGggaXMgdGhlIGFjY291bnQgbmFtZSwgc2VlIGFjY2Vzc1BhZ2UudHN4KS4gQSBmdWxsIFVSTCwgc28gdGhlIHBhZ2UgcmVzb2x2ZXMgbW9kdWxlcyBmcm9tIHRoZSBvcmlnaW4gcm9vdCBldmVuIHdoZW4gc2VydmVkIGF0IC9hY2NvdW50TmFtZSAoYSByZWxhdGl2ZSByZXF1aXJlIHdvdWxkIHJlc29sdmUgaW5zaWRlIHRoZSBhY2NvdW50IHBhdGgpLlxuICAgIC8vIFRoZSBtb2R1bGUgcGF0aCBpcyByZXNvbHZlZCBzZXJ2ZXItc2lkZSBhZ2FpbnN0IGl0cyB3b3JraW5nIGRpcmVjdG9yeSwgd2hpY2ggaXMgdGhlIEhPU1QgYXBwbGljYXRpb24ncyBmb2xkZXIgLSBzbyBpdCBpcyBjb21wdXRlZCBmcm9tIHdoZXJlIHRoaXMgZmlsZSBhY3R1YWxseSBpcywgaW5zdGVhZCBvZiBhc3N1bWluZyB0aGUgc3RvcmFnZSBzZXJ2ZXIgcnVucyBmcm9tIGluc2lkZSBzbGlmdHV0aWxzIChpbiBhIGhvc3QgYXBwIGl0IGxpdmVzIHVuZGVyIG5vZGVfbW9kdWxlcy9zbGlmdHV0aWxzKS5cbiAgICBsZXQgYWNjZXNzUGFnZVBhdGggPSBcIi4vXCIgKyBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiYWNjZXNzUGFnZS50c3hcIikpLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiL1wiKTtcbiAgICBTb2NrZXRGdW5jdGlvbi5zZXREZWZhdWx0SFRUUENhbGwoUmVtb3RlU3RvcmFnZUNvbnRyb2xsZXIsIFwiaHR0cEVudHJ5XCIsIHtcbiAgICAgICAgcmVxdWlyZUNhbGxzOiBbYGh0dHBzOi8vJHtkb21haW59OiR7cG9ydH0vJHthY2Nlc3NQYWdlUGF0aH1gXSxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWwgY2hlY2sgc28gYSBzZXJ2ZXIgc3RhcnRpbmcgdW5kZXItbGltaXQgaW1tZWRpYXRlbHkgcmVqZWN0cyB3cml0ZXM7IHRoZW4ga2VlcCBjaGVja2luZyBldmVyeSAxNSBtaW51dGVzIHNvIHJlY292ZXJ5IChmcmVlZCBkaXNrIHNwYWNlKSBpcyBwaWNrZWQgdXAgYXV0b21hdGljYWxseS5cbiAgICBhd2FpdCBjaGVja0Rpc2tTcGFjZSh7IGZvbGRlciwgdGhyZXNob2xkOiBsb3dTcGFjZVRocmVzaG9sZCB9KTtcbiAgICBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIHZvaWQgY2hlY2tEaXNrU3BhY2UoeyBmb2xkZXIsIHRocmVzaG9sZDogbG93U3BhY2VUaHJlc2hvbGQgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IGNvbnNvbGUuZXJyb3IoYERpc2sgc3BhY2UgY2hlY2sgZmFpbGVkIGZvciAke2ZvbGRlcn06YCwgZSkpO1xuICAgIH0sIERJU0tfU1BBQ0VfQ0hFQ0tfSU5URVJWQUxfTVMpO1xuICAgIChpbnRlcnZhbCBhcyB7IHVucmVmPzogKCkgPT4gdm9pZCB9KS51bnJlZj8uKCk7XG5cbiAgICBhd2FpdCBob3N0U2VydmVyKHtcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBwb3J0LFxuICAgICAgICBzZXRETlNSZWNvcmQ6IHRydWUsXG4gICAgICAgIHBvcnRGYWxsYmFjazoge1xuICAgICAgICAgICAgZ2V0QWNxdWlyZURlbGF5OiBnZXRNYWluUG9ydEFjcXVpcmVEZWxheSxcbiAgICAgICAgICAgIG9uUG9ydEluVXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZGV0ZWN0RGVwbG95VGFrZW92ZXIoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkxpc3RlbmluZzogKGxpc3RlbmluZ1BvcnQsIGlzTWFpblBvcnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNNYWluUG9ydCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGFkZEV4dHJhTGlzdGVuUG9ydChsaXN0ZW5pbmdQb3J0KTtcbiAgICAgICAgICAgICAgICBzZXRBbHRQb3J0KGxpc3RlbmluZ1BvcnQpO1xuICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5FbmQgPSBnZXRBbHRQb3J0TGlzdGVuRW5kKCk7XG4gICAgICAgICAgICAgICAgbGV0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBbHRlcm5hdGUgcG9ydCAke2xpc3RlbmluZ1BvcnR9IHJlYWNoZWQgaXRzIGVuZCBvZiBsaWZlIGF0ICR7bmV3IERhdGUobGlzdGVuRW5kKS50b0lTT1N0cmluZygpfTsgaXQgbm8gbG9uZ2VyIGNvdW50cyBhcyBvbmUgb2Ygb3VyIGFkZHJlc3NlcyAodGhlIHNvY2tldCBpdHNlbGYgc3RheXMgYm91bmQsIGFzIHRoZSBtYWluLXBvcnQgcmVsYXkgZm9yd2FyZHMgaW50byBpdClgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRXh0cmFMaXN0ZW5Qb3J0KGxpc3RlbmluZ1BvcnQpO1xuICAgICAgICAgICAgICAgIH0sIE1hdGgubWF4KDAsIGxpc3RlbkVuZCAtIERhdGUubm93KCkpKTtcbiAgICAgICAgICAgICAgICAodGltZXIgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbiJdfQ==
|
|
119
|
-
/* _JS_SOURCE_HASH = "
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZVNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0b3JhZ2VTZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBRXBDLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIsMkRBQThCO0FBQzlCLG1FQUFnRTtBQUNoRSwrREFBK0Q7QUFDL0QsaUZBQThFO0FBQzlFLDREQUF5RDtBQUN6RCwyREFBOEQ7QUFDOUQsaURBQTRIO0FBQzVILHFEQUFrSDtBQUNsSCxxREFBbUQ7QUFDbkQscUVBQXFFO0FBQ3JFLHdCQUFzQjtBQUV0QixNQUFNLGlDQUFpQyxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3pELE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDcEQsd0xBQXdMO0FBQ3hMLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBYWpDLFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDOUIsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNuRCxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FBQyxNQUE2QztJQUN2RSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNuQyxJQUFJLEtBQUssR0FBRyxNQUFNLGtCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLFNBQVMsR0FBRyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7SUFDakQsSUFBSSxJQUFJLElB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QixNQUFNLElBQUEscUNBQW9CLEdBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsV0FBVyxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFOztnQkFDdkMsSUFBSSxVQUFVO29CQUFFLE9BQU87Z0JBQ3ZCLElBQUEsaUNBQWtCLEVBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2xDLElBQUEsMkJBQVUsRUFBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxTQUFTLEdBQUcsSUFBQSxvQ0FBbUIsR0FBRSxDQUFDO2dCQUN0QyxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixhQUFhLCtCQUErQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsd0hBQXdILENBQUMsQ0FBQztvQkFDck8sSUFBQSxvQ0FBcUIsRUFBQyxhQUFhLENBQUMsQ0FBQztnQkFDekMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxNQUFBLE1BQUMsS0FBZ0MsRUFBQyxLQUFLLGtEQUFJLENBQUM7WUFDaEQsQ0FBQztTQUNKO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQTdERCw4Q0E2REMiLCJzb3VyY2VzQ29udGVudCI6WyJwcm9jZXNzLmVudi5OT0RFX0VOViA9IFwicHJvZHVjdGlvblwiO1xuXG5pbXBvcnQgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGZzcCBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IFNvY2tldEZ1bmN0aW9uIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9Tb2NrZXRGdW5jdGlvblwiO1xuaW1wb3J0IHsgZ2V0RXh0ZXJuYWxJUCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL25ldHdvcmtpbmdcIjtcbmltcG9ydCB7IFJlcXVpcmVDb250cm9sbGVyIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9yZXF1aXJlL1JlcXVpcmVDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBob3N0U2VydmVyIH0gZnJvbSBcIi4uLy4uL21pc2MvaHR0cHMvaG9zdFNlcnZlclwiO1xuaW1wb3J0IHsgUmVtb3RlU3RvcmFnZUNvbnRyb2xsZXIgfSBmcm9tIFwiLi9zdG9yYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgc2V0U3RvcmFnZVNlcnZlckNvbmZpZywgc2V0V3JpdGVzUmVqZWN0ZWRSZWFzb24sIGFkZEV4dHJhTGlzdGVuUG9ydCwgcmVtb3ZlRXh0cmFMaXN0ZW5Qb3J0IH0gZnJvbSBcIi4vc2VydmVyQ29uZmlnXCI7XG5pbXBvcnQgeyBkZXRlY3REZXBsb3lUYWtlb3Zlciwgc2V0QWx0UG9ydCwgZ2V0QWx0UG9ydExpc3RlbkVuZCwgZ2V0TWFpblBvcnRBY3F1aXJlRGVsYXkgfSBmcm9tIFwiLi9kZXBsb3lUYWtlb3ZlclwiO1xuaW1wb3J0IHsgcGFyc2VTdG9yYWdlVXJsIH0gZnJvbSBcIi4vQXJjaGl2ZXNSZW1vdGVcIjtcbi8vIEltcG9ydCBicm93c2VyIGNvZGUsIHNvIGl0IGlzIGFsbG93ZWQgdG8gYmUgcmVxdWlyZWQgYnkgdGhlIGNsaWVudFxuaW1wb3J0IFwiLi9hY2Nlc3NQYWdlXCI7XG5cbmNvbnN0IERFRkFVTFRfTE9XX1NQQUNFX1RIUkVTSE9MRF9CWVRFUyA9IDI1ICogMTAyNCAqKiAzO1xuY29uc3QgRElTS19TUEFDRV9DSEVDS19JTlRFUlZBTF9NUyA9IDE1ICogNjAgKiAxMDAwO1xuLy8gQmVsb3cgdGhpcyBmcmFjdGlvbiBvZiB0aGUgd2FybiB0aHJlc2hvbGQsIHdlIHN0YXJ0IHJlamVjdGluZyB3cml0ZXMgc28gdGhlIHNlcnZlciBpdHNlbGYgZG9lc24ndCB0aXAgdGhlIG1hY2hpbmUgaW50byBpbnN0YWJpbGl0eS4gUmVhZHMvZGVsZXRlcyBzdGlsbCB3b3JrIHNvIHVzZXJzIGNhbiBmcmVlIHNwYWNlLlxuY29uc3QgSEFSRF9SRUpFQ1RfRlJBQ1RJT04gPSAwLjE7XG5cbi8vIFRoZSByZW1vdGUgc3RvcmFnZSBzZXJ2ZXIsIGFzIGEgbGlicmFyeSBmdW5jdGlvbjogY29uc3VtZXJzIGNhbGwgaG9zdFN0b3JhZ2VTZXJ2ZXIoKSBmcm9tIHRoZWlyIG93biBwcm9jZXNzIHRvIHN0YXJ0IGhvc3RpbmcgKG9yIHVzZSB0aGUgc3RvcmFnZXNlcnZlciBiaW4sIHNlZSBzdG9yYWdlU2VydmVyQ2xpLnRzKS4gVGhlIGdyYW50QWNjZXNzLmpzIGJvb3RzdHJhcCAobmV4dCB0byB0aGlzIGZpbGUpIGlzIHdoYXQgdGhlIGFjY2VzcyBwYWdlJ3Mgc2hvd24gU1NIIGNvbW1hbmQgcG9pbnRzIGF0LlxuXG5leHBvcnQgdHlwZSBIb3N0U3RvcmFnZVNlcnZlckNvbmZpZyA9IHtcbiAgICAvLyBGdWxsIFVSTCBvZiB0aGlzIHN0b3JhZ2Ugc2VydmVyLCBlLmcuIFwiaHR0cHM6Ly8xLTItMy00LmV4YW1wbGUuY29tOjQ0NDRcIi4gVGhlIHN1YmRvbWFpbiBtdXN0IGJlIGFuIGlwIGRvbWFpbiAtIHRoaXMgbWFjaGluZSdzIGV4dGVybmFsIElQIHdpdGggZGFzaGVzLCBvciAxMjctMC0wLTEgZm9yIGxvY2FsIHRlc3RpbmcgKHNlZSB0aGUgdmFsaWRhdGlvbiBpbiBob3N0U3RvcmFnZVNlcnZlcikuIFRoZSBkb21haW4gYW5kIHBvcnQgYXJlIGV4dHJhY3RlZCBmcm9tIGl0IChidWNrZXQgcm91dGluZyBVUkxzIGNsaWVudHMgdXNlIGxvb2sgbGlrZVxuICAgIC8vIGh0dHBzOi8vMS0yLTMtNC5leGFtcGxlLmNvbTo0NDQ0L2ZpbGUvPGFjY291bnQ+LzxidWNrZXROYW1lPi9zdG9yYWdlL3N0b3JhZ2Vyb3V0aW5nLmpzb24pLlxuICAgIHVybDogc3RyaW5nO1xuICAgIGZvbGRlcjogc3RyaW5nO1xuICAgIC8vIFdoZW4gZnJlZSBzcGFjZSBvbiB0aGUgZm9sZGVyJ3MgZHJpdmUgZHJvcHMgYmVsb3cgdGhpcyBtYW55IGJ5dGVzLCB0aGUgc2VydmVyIGNvbnNvbGUuZXJyb3JzIGV2ZXJ5IDE1IG1pbnV0ZXMuIEJlbG93IDEwJSBvZiBpdCwgdGhlIHNlcnZlciBhbHNvIHJlamVjdHMgd3JpdGUgb3BlcmF0aW9ucyAoY3JlYXRpbmcgZmlsZXMsIGxhcmdlIHVwbG9hZHMsIG5ldyBidWNrZXRzKSDigJQgcmVhZHMsIGZpbmRJbmZvLCBhbmQgZGVsZXRlcyBzdGlsbCB3b3JrIHNvIHRoZSB1c2VyIGNhbiBmcmVlIHNwYWNlLiBEZWZhdWx0IDI1IEdpQi5cbiAgICBsb3dTcGFjZVRocmVzaG9sZEJ5dGVzPzogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvIDEwMjQgKiogMykudG9GaXhlZCgyKX0gR2lCYDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tEaXNrU3BhY2UoY29uZmlnOiB7IGZvbGRlcjogc3RyaW5nOyB0aHJlc2hvbGQ6IG51bWJlciB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHsgZm9sZGVyLCB0aHJlc2hvbGQgfSA9IGNvbmZpZztcbiAgICBsZXQgc3RhdHMgPSBhd2FpdCBmc3Auc3RhdGZzKGZvbGRlcik7XG4gICAgbGV0IGZyZWUgPSBOdW1iZXIoc3RhdHMuYmF2YWlsKSAqIE51bWJlcihzdGF0cy5ic2l6ZSk7XG4gICAgbGV0IGhhcmRMaW1pdCA9IHRocmVzaG9sZCAqIEhBUkRfUkVKRUNUX0ZSQUNUSU9OO1xuICAgIGlmIChmcmVlID49IHRocmVzaG9sZCkge1xuICAgICAgICBzZXRXcml0ZXNSZWplY3RlZFJlYXNvbih1bmRlZmluZWQpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB1bmRlciA9IHRocmVzaG9sZCAtIGZyZWU7XG4gICAgbGV0IHJlamVjdGluZyA9IGZyZWUgPCBoYXJkTGltaXQ7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFN0b3JhZ2UgZm9sZGVyICR7Zm9sZGVyfSBpcyBsb3cgb24gZGlzazogJHtmb3JtYXRCeXRlcyhmcmVlKX0gZnJlZWBcbiAgICAgICAgKyBgICh3YXJuIHRocmVzaG9sZCAke2Zvcm1hdEJ5dGVzKHRocmVzaG9sZCl9LCAke2Zvcm1hdEJ5dGVzKHVuZGVyKX0gdW5kZXI7YFxuICAgICAgICArIGAgaGFyZC1yZWplY3QgdGhyZXNob2xkICR7Zm9ybWF0Qnl0ZXMoaGFyZExpbWl0KX0ke3JlamVjdGluZyA/IFwiLCBSRUFDSEVEIOKAlCB3cml0ZSBvcHMgbm93IHJlamVjdGVkXCIgOiBcIlwifSkuYFxuICAgICk7XG4gICAgaWYgKHJlamVjdGluZykge1xuICAgICAgICBzZXRXcml0ZXNSZWplY3RlZFJlYXNvbihcbiAgICAgICAgICAgIGBTdG9yYWdlIHNlcnZlciBpcyBvdXQgb2YgZGlzayBzcGFjZTogb25seSAke2Zvcm1hdEJ5dGVzKGZyZWUpfSBmcmVlIG9uICR7Zm9sZGVyfWBcbiAgICAgICAgICAgICsgYCAoaGFyZC1yZWplY3QgdGhyZXNob2xkICR7Zm9ybWF0Qnl0ZXMoaGFyZExpbWl0KX0sIHdhcm4gdGhyZXNob2xkICR7Zm9ybWF0Qnl0ZXModGhyZXNob2xkKX0pLmBcbiAgICAgICAgICAgICsgYCBXcml0ZSBvcGVyYXRpb25zIChjcmVhdGUvYXBwZW5kL25ldyBidWNrZXQpIGFyZSByZWplY3RlZDsgcmVhZHMsIGZpbmRJbmZvLCBhbmQgZGVsZXRlcyBzdGlsbCB3b3JrIOKAlCBwbGVhc2UgZnJlZSBzcGFjZS5gXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2V0V3JpdGVzUmVqZWN0ZWRSZWFzb24odW5kZWZpbmVkKTtcbiAgICB9XG59XG5cbi8vIEZ1bGwgcGF0aCB0byB0aGUgZ3JhbnRBY2Nlc3MgQ0xJIGJvb3RzdHJhcCB0aGF0IGxpdmVzIG5leHQgdG8gdGhpcyBmaWxlLiBUaGUgU1NIIGNvbW1hbmQgc2hvd24gb24gdGhlIGFjY2VzcyBwYWdlIGludm9rZXMgaXQgdmlhIGBub2RlIDxwYXRoPiAuLi5gIChmb3VuZCB0aHJvdWdoIF9fZGlybmFtZSBzbyBjb25zdW1lcnMgZG9uJ3QgaGF2ZSB0byBrbm93IHdoZXJlIG91ciBzb3VyY2UgbGl2ZXMpLlxuZnVuY3Rpb24gZ2V0R3JhbnRBY2Nlc3NDbGlQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiZ3JhbnRBY2Nlc3MuanNcIik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBob3N0U3RvcmFnZVNlcnZlcihjb25maWc6IEhvc3RTdG9yYWdlU2VydmVyQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHsgdXJsLCBmb2xkZXIgfSA9IGNvbmZpZztcbiAgICBsZXQgeyBhZGRyZXNzOiBkb21haW4sIHBvcnQgfSA9IHBhcnNlU3RvcmFnZVVybCh1cmwpO1xuICAgIGxldCByb290RG9tYWluID0gZG9tYWluLnNwbGl0KFwiLlwiKS5zbGljZSgtMikuam9pbihcIi5cIik7XG4gICAgbGV0IGV4dGVybmFsSVAgPSAoYXdhaXQgZ2V0RXh0ZXJuYWxJUCgpKS50cmltKCk7XG4gICAgLy8gVGhlIHN1YmRvbWFpbiBtdXN0IGJlIGFuIGlwIGRvbWFpbjogdGhlIGRvbWFpbidzIEEgcmVjb3JkIHBvaW50cyBhdCBleGFjdGx5IG9uZSBtYWNoaW5lLCBzbyBhIGR5bmFtaWMgbmFtZSB3b3VsZCBsZXQgdGhlIHNhbWUgc2NyaXB0IHJ1biBvbiB0d28gc2VydmVycyBhbmQgc2lsZW50bHkgZmlnaHQgb3ZlciBpdC4gRW5jb2RpbmcgdGhlIElQIG1ha2VzIHRoYXQgbWlzdGFrZSBmYWlsIGxvdWRseSAtIHRoZSB3cm9uZyBtYWNoaW5lJ3MgZG9tYWluIGp1c3QgZG9lc24ndCBtYXRjaC5cbiAgICBsZXQgYWxsb3dlZERvbWFpbnMgPSBbYDEyNy0wLTAtMS4ke3Jvb3REb21haW59YCwgYCR7ZXh0ZXJuYWxJUC5yZXBsYWNlQWxsKFwiLlwiLCBcIi1cIil9LiR7cm9vdERvbWFpbn1gXTtcbiAgICBpZiAoIWFsbG93ZWREb21haW5zLmluY2x1ZGVzKGRvbWFpbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3RvcmFnZSBzZXJ2ZXIgZG9tYWluIGlzIGJhc2VkIG9uIHRoZSBtYWNoaW5lJ3MgSVAgKHRoZSBzdWJkb21haW4gaXMgdGhlIElQIHdpdGggZG90cyByZXBsYWNlZCBieSBkYXNoZXMpLiBFeHBlY3RlZCAke2FsbG93ZWREb21haW5zLmpvaW4oXCIgb3IgXCIpfSwgd2FzICR7ZG9tYWlufS4gWW91ciBleHRlcm5hbCBJUCBpcyAke2V4dGVybmFsSVB9LmApO1xuICAgIH1cbiAgICBhd2FpdCBmc3AubWtkaXIoZm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBsZXQgbG93U3BhY2VUaHJlc2hvbGQgPSBjb25maWcubG93U3BhY2VUaHJlc2hvbGRCeXRlcyA/PyBERUZBVUxUX0xPV19TUEFDRV9USFJFU0hPTERfQllURVM7XG4gICAgc2V0U3RvcmFnZVNlcnZlckNvbmZpZyh7XG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgcG9ydCxcbiAgICAgICAgcm9vdERvbWFpbixcbiAgICAgICAgc3NoVGFyZ2V0OiBgJHtvcy51c2VySW5mbygpLnVzZXJuYW1lfUAke2V4dGVybmFsSVB9YCxcbiAgICAgICAgc2VydmVyQ29tbWFuZDogYG5vZGUgJHtnZXRHcmFudEFjY2Vzc0NsaVBhdGgoKX0gLS11cmwgJHt1cmx9YCxcbiAgICAgICAgZm9sZGVyOiBwYXRoLnJlc29sdmUoZm9sZGVyKSxcbiAgICB9KTtcblxuICAgIFJlcXVpcmVDb250cm9sbGVyLmFsbG93QWxsTm9kZU1vZHVsZXMoKTtcbiAgICBTb2NrZXRGdW5jdGlvbi5leHBvc2UoUmVxdWlyZUNvbnRyb2xsZXIpO1xuICAgIFNvY2tldEZ1bmN0aW9uLmV4cG9zZShSZW1vdGVTdG9yYWdlQ29udHJvbGxlcik7XG4gICAgLy8gRXZlcnkgSFRUUCBwYXRoIGdvZXMgdGhyb3VnaCBodHRwRW50cnk6IC9maWxlLzxhY2NvdW50Pi88YnVja2V0TmFtZT4vLi4uIHNlcnZlcyBwdWJsaWMgYnVja2V0IGZpbGVzLCBldmVyeXRoaW5nIGVsc2Ugc2VydmVzIHRoZSBhY2Nlc3MgcGFnZSAodGhlIHBhdGggaXMgdGhlIGFjY291bnQgbmFtZSwgc2VlIGFjY2Vzc1BhZ2UudHN4KS4gQSBmdWxsIFVSTCwgc28gdGhlIHBhZ2UgcmVzb2x2ZXMgbW9kdWxlcyBmcm9tIHRoZSBvcmlnaW4gcm9vdCBldmVuIHdoZW4gc2VydmVkIGF0IC9hY2NvdW50TmFtZSAoYSByZWxhdGl2ZSByZXF1aXJlIHdvdWxkIHJlc29sdmUgaW5zaWRlIHRoZSBhY2NvdW50IHBhdGgpLlxuICAgIC8vIFRoZSBtb2R1bGUgcGF0aCBpcyByZXNvbHZlZCBzZXJ2ZXItc2lkZSBhZ2FpbnN0IGl0cyB3b3JraW5nIGRpcmVjdG9yeSwgd2hpY2ggaXMgdGhlIEhPU1QgYXBwbGljYXRpb24ncyBmb2xkZXIgLSBzbyBpdCBpcyBjb21wdXRlZCBmcm9tIHdoZXJlIHRoaXMgZmlsZSBhY3R1YWxseSBpcywgaW5zdGVhZCBvZiBhc3N1bWluZyB0aGUgc3RvcmFnZSBzZXJ2ZXIgcnVucyBmcm9tIGluc2lkZSBzbGlmdHV0aWxzIChpbiBhIGhvc3QgYXBwIGl0IGxpdmVzIHVuZGVyIG5vZGVfbW9kdWxlcy9zbGlmdHV0aWxzKS5cbiAgICBsZXQgYWNjZXNzUGFnZVBhdGggPSBcIi4vXCIgKyBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiYWNjZXNzUGFnZS50c3hcIikpLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiL1wiKTtcbiAgICBTb2NrZXRGdW5jdGlvbi5zZXREZWZhdWx0SFRUUENhbGwoUmVtb3RlU3RvcmFnZUNvbnRyb2xsZXIsIFwiaHR0cEVudHJ5XCIsIHtcbiAgICAgICAgcmVxdWlyZUNhbGxzOiBbYGh0dHBzOi8vJHtkb21haW59OiR7cG9ydH0vJHthY2Nlc3NQYWdlUGF0aH1gXSxcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWwgY2hlY2sgc28gYSBzZXJ2ZXIgc3RhcnRpbmcgdW5kZXItbGltaXQgaW1tZWRpYXRlbHkgcmVqZWN0cyB3cml0ZXM7IHRoZW4ga2VlcCBjaGVja2luZyBldmVyeSAxNSBtaW51dGVzIHNvIHJlY292ZXJ5IChmcmVlZCBkaXNrIHNwYWNlKSBpcyBwaWNrZWQgdXAgYXV0b21hdGljYWxseS5cbiAgICBhd2FpdCBjaGVja0Rpc2tTcGFjZSh7IGZvbGRlciwgdGhyZXNob2xkOiBsb3dTcGFjZVRocmVzaG9sZCB9KTtcbiAgICBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIHZvaWQgY2hlY2tEaXNrU3BhY2UoeyBmb2xkZXIsIHRocmVzaG9sZDogbG93U3BhY2VUaHJlc2hvbGQgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IGNvbnNvbGUuZXJyb3IoYERpc2sgc3BhY2UgY2hlY2sgZmFpbGVkIGZvciAke2ZvbGRlcn06YCwgZSkpO1xuICAgIH0sIERJU0tfU1BBQ0VfQ0hFQ0tfSU5URVJWQUxfTVMpO1xuICAgIChpbnRlcnZhbCBhcyB7IHVucmVmPzogKCkgPT4gdm9pZCB9KS51bnJlZj8uKCk7XG5cbiAgICBhd2FpdCBob3N0U2VydmVyKHtcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBwb3J0LFxuICAgICAgICBzZXRETlNSZWNvcmQ6IHRydWUsXG4gICAgICAgIHBvcnRGYWxsYmFjazoge1xuICAgICAgICAgICAgZ2V0QWNxdWlyZURlbGF5OiBnZXRNYWluUG9ydEFjcXVpcmVEZWxheSxcbiAgICAgICAgICAgIG9uUG9ydEluVXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZGV0ZWN0RGVwbG95VGFrZW92ZXIoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkxpc3RlbmluZzogKGxpc3RlbmluZ1BvcnQsIGlzTWFpblBvcnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNNYWluUG9ydCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGFkZEV4dHJhTGlzdGVuUG9ydChsaXN0ZW5pbmdQb3J0KTtcbiAgICAgICAgICAgICAgICBzZXRBbHRQb3J0KGxpc3RlbmluZ1BvcnQpO1xuICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5FbmQgPSBnZXRBbHRQb3J0TGlzdGVuRW5kKCk7XG4gICAgICAgICAgICAgICAgbGV0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBbHRlcm5hdGUgcG9ydCAke2xpc3RlbmluZ1BvcnR9IHJlYWNoZWQgaXRzIGVuZCBvZiBsaWZlIGF0ICR7bmV3IERhdGUobGlzdGVuRW5kKS50b0lTT1N0cmluZygpfTsgaXQgbm8gbG9uZ2VyIGNvdW50cyBhcyBvbmUgb2Ygb3VyIGFkZHJlc3NlcyAodGhlIHNvY2tldCBpdHNlbGYgc3RheXMgYm91bmQsIGFzIHRoZSBtYWluLXBvcnQgcmVsYXkgZm9yd2FyZHMgaW50byBpdClgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRXh0cmFMaXN0ZW5Qb3J0KGxpc3RlbmluZ1BvcnQpO1xuICAgICAgICAgICAgICAgIH0sIE1hdGgubWF4KDAsIGxpc3RlbkVuZCAtIERhdGUubm93KCkpKTtcbiAgICAgICAgICAgICAgICAodGltZXIgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbiJdfQ==
|
|
119
|
+
/* _JS_SOURCE_HASH = "83117826c86c99fc2e93c16a8a182374c940690834d995f183d16d928eb6de5c"; */
|