active-connect-ng2 0.2.28 → 0.2.30
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/esm2020/lib/websocket/client.mjs +35 -17
- package/esm2020/lib/websocket/decorators/websocket/outbound.mjs +81 -35
- package/esm2020/lib/websocket/decorators/websocket/route.mjs +7 -2
- package/esm2020/lib/websocket/objects/outbound-object.mjs +90 -53
- package/fesm2015/active-connect-ng2.mjs +210 -104
- package/fesm2015/active-connect-ng2.mjs.map +1 -1
- package/fesm2020/active-connect-ng2.mjs +209 -103
- package/fesm2020/active-connect-ng2.mjs.map +1 -1
- package/lib/websocket/client.d.ts +1 -0
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ export class WebsocketClient {
|
|
|
8
8
|
this._token = '';
|
|
9
9
|
this.connectionEstablishedOnce = false;
|
|
10
10
|
this.messageId = 0;
|
|
11
|
+
this.rejectCallbacks = new Map();
|
|
11
12
|
this.expectedMethods = new Map();
|
|
12
13
|
this.closed = false;
|
|
13
14
|
if (supportsCache)
|
|
@@ -82,7 +83,7 @@ export class WebsocketClient {
|
|
|
82
83
|
this.ws = new WebSocket(url + (this.supportsCache ? '?cache=true' : ''));
|
|
83
84
|
this.ws.onerror = (err) => {
|
|
84
85
|
this.ws.close();
|
|
85
|
-
console.log(err);
|
|
86
|
+
console.log('ActiveConnect: ' + err);
|
|
86
87
|
};
|
|
87
88
|
this.ws.onopen = () => {
|
|
88
89
|
this.Connected = true;
|
|
@@ -128,9 +129,10 @@ export class WebsocketClient {
|
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
expectMethod(method, messageId) {
|
|
131
|
-
return new Promise((resolve) => {
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
132
133
|
if (messageId) {
|
|
133
134
|
this.expectedMethods.set(messageId, [resolve]);
|
|
135
|
+
this.rejectCallbacks.set(messageId, reject);
|
|
134
136
|
}
|
|
135
137
|
else {
|
|
136
138
|
if (this.expectedMethods.has(method)) {
|
|
@@ -148,6 +150,13 @@ export class WebsocketClient {
|
|
|
148
150
|
this.handleOutboundCacheRequest(value);
|
|
149
151
|
}
|
|
150
152
|
if (messageId) {
|
|
153
|
+
if (method) {
|
|
154
|
+
const reject = this.rejectCallbacks.get(messageId);
|
|
155
|
+
if (reject) {
|
|
156
|
+
reject(value);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
151
160
|
const callback = this.expectedMethods.get(messageId);
|
|
152
161
|
if (callback) {
|
|
153
162
|
const func = callback.shift();
|
|
@@ -180,20 +189,29 @@ export class WebsocketClient {
|
|
|
180
189
|
}
|
|
181
190
|
handleOutboundCacheRequest(method) {
|
|
182
191
|
if (this.dbService) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
try {
|
|
193
|
+
this.dbService.getByKey('outbound', method).subscribe((item) => {
|
|
194
|
+
if (item) {
|
|
195
|
+
this.send('___cache', {
|
|
196
|
+
method,
|
|
197
|
+
specificHash: item.specificHash || null,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.send('___cache', {
|
|
202
|
+
method,
|
|
203
|
+
specificHash: null,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
this.send('___cache', {
|
|
210
|
+
method,
|
|
211
|
+
specificHash: null,
|
|
212
|
+
});
|
|
213
|
+
console.error('ActiveConnect: ' + e);
|
|
214
|
+
}
|
|
197
215
|
}
|
|
198
216
|
else {
|
|
199
217
|
this.send('___cache', {
|
|
@@ -287,4 +305,4 @@ WebsocketClient.resetRequestedStateCallbacks = [];
|
|
|
287
305
|
WebsocketClient.outbounds = new Map();
|
|
288
306
|
WebsocketClient.handles = new Map();
|
|
289
307
|
WebsocketClient.onSuccessHandlers = [];
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWN0aXZlLWNvbm5lY3QtbmcyL3NyYy9saWIvd2Vic29ja2V0L2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxHQUFZLEVBQ1osYUFBdUIsRUFDeEIsU0FBK0I7UUFGOUIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNaLGtCQUFhLEdBQWIsYUFBYSxDQUFVO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBZ0NoQyxpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUV6QixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBNEJaLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQXNDM0MsY0FBUyxHQUFXLENBQUMsQ0FBQztRQXdDdEIsb0JBQWUsR0FBMEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWlOcEUsV0FBTSxHQUFHLEtBQUssQ0FBQztRQTNWcEIsSUFBSSxhQUFhO1lBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLFFBQVEsQ0FBQztZQUNiLElBQUksSUFBSSxDQUFDO1lBQ1QsUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDbEMsS0FBSyxRQUFRLENBQUMsQ0FBQztvQkFDYixRQUFRLEdBQUcsTUFBTSxDQUFDO29CQUNsQixJQUFJLEdBQUcsTUFBTSxDQUFDO29CQUNkLE1BQU07aUJBQ1A7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7b0JBQ1AsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDakIsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFDYixNQUFNO2lCQUNQO2FBQ0Y7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLEdB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QUFpQixFQUFFLENBQUM7WUFDMUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDbkIsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ1o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHTSxVQUFVLENBQUMsT0FBaUI7UUFDakMsSUFBSSxDQUFDLE9BQU87WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxTQUFTLEtBQUksQ0FBQzs7QUF0U1AsNENBQTRCLEdBQWUsRUFBRSxDQUFDO0FBNEs5Qyx5QkFBUyxHQVdwQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBZ0JDLHVCQUFPLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7QUFzRXBELGlDQUFpQixHQUcxQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xyXG5pbXBvcnQgeyBEZWNvcmFibGVGdW5jdGlvbiB9IGZyb20gJy4vZGVjb3JhdG9ycy9mdW5jdGlvbic7XHJcbmltcG9ydCB7IEpzb25QYXJzZXIgfSBmcm9tICcuL2pzb24vanNvbi1wYXJzZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldENsaWVudCB7XHJcbiAgd3MhOiBXZWJTb2NrZXQ7XHJcbiAgcG9vbCE6IHsgV3NzQ29ubmVjdGVkOiBib29sZWFuIH0gfCBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXJsPzogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBzdXBwb3J0c0NhY2hlPzogYm9vbGVhbixcclxuICAgIHB1YmxpYyBkYlNlcnZpY2U/OiBOZ3hJbmRleGVkREJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBpZiAoc3VwcG9ydHNDYWNoZSkgdGhpcy5pbml0Q2FjaGUoKTtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGxldCBwcm90b2NvbDtcclxuICAgICAgbGV0IHBvcnQ7XHJcbiAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpIHtcclxuICAgICAgICBjYXNlICdodHRwczonOiB7XHJcbiAgICAgICAgICBwcm90b2NvbCA9ICd3c3M6JztcclxuICAgICAgICAgIHBvcnQgPSAnOjQ0Myc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgcHJvdG9jb2wgPSAnd3M6JztcclxuICAgICAgICAgIHBvcnQgPSAnOjgwJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVybCA9IHByb3RvY29sICsgJy8vJyArIGRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lICsgcG9ydCArICcvd3NzJztcclxuICAgIH1cclxuICAgIHRoaXMuY29ubmVjdCh0aGlzLnVybCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgc3ViamVjdDogYW55O1xyXG5cclxuICBwcml2YXRlIGNvbm5lY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5zdWJqZWN0KSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlKHVybCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0U3RhY2s6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3Rva2VuID0gJyc7XHJcbiAgcHVibGljIGdldCBUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLl90b2tlbikge1xyXG4gICAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSlcclxuICAgICAgICB0aGlzLl90b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSB8fCAnJztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl90b2tlbjtcclxuICB9XHJcbiAgcHVibGljIHNldCBUb2tlbih2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdG9rZW4gPSB2YWw7XHJcbiAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSkgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbicsIHZhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldCBDb25uZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbmRCcm93c2VySW5mb1RvU2VydmVyKCk7XHJcblxyXG4gICAgICB0aGlzLmF1dGgodGhpcy5Ub2tlbikudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldFJlcXVlc3RlZFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0U3RhY2suZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZW5kVG9Tb2NrZXQoZS5tZXRob2QsIGUuZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3RTdGFjayA9IHRoaXMucmVxdWVzdFN0YWNrLmZpbHRlcigoZTEpID0+IGUxICE9IGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBvb2wgJiYgdGhpcy5wb29sLldzc0Nvbm5lY3RlZCkgdGhpcy5wb29sLldzc0Nvbm5lY3RlZCA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyByZXNldFJlcXVlc3RlZFN0YXRlQ2FsbGJhY2tzOiBGdW5jdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBjb25uZWN0aW9uRXN0YWJsaXNoZWRPbmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXNldFJlcXVlc3RlZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbkVzdGFibGlzaGVkT25jZSkge1xyXG4gICAgICAvLyByZXNldCByZXF1ZXN0ZWQgc3RhdGUgZm9yIG91dGJvdW5kc1xyXG4gICAgICBXZWJzb2NrZXRDbGllbnQucmVzZXRSZXF1ZXN0ZWRTdGF0ZUNhbGxiYWNrcy5mb3JFYWNoKChyZXNldCkgPT4ge1xyXG4gICAgICAgIHJlc2V0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uRXN0YWJsaXNoZWRPbmNlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBhZGRSZXNldFJlcXVlc3RpbmdTdGF0ZUNhbGxiYWNrKGNhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgV2Vic29ja2V0Q2xpZW50LnJlc2V0UmVxdWVzdGVkU3RhdGVDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZSh1cmw6IHN0cmluZykge1xyXG4gICAgLy8gY3JlYXRlIG5ldyBjb25uZWN0aW9uXHJcbiAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldCh1cmwgKyAodGhpcy5zdXBwb3J0c0NhY2hlID8gJz9jYWNoZT10cnVlJyA6ICcnKSk7XHJcbiAgICB0aGlzLndzLm9uZXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgIHRoaXMud3MuY2xvc2UoKTtcclxuICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgIH07XHJcbiAgICB0aGlzLndzLm9ub3BlbiA9ICgpID0+IHtcclxuICAgICAgdGhpcy5Db25uZWN0ZWQgPSB0cnVlO1xyXG4gICAgfTtcclxuICAgIHRoaXMud3Mub25tZXNzYWdlID0gKGUpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlUmVjZWl2ZWQoSnNvblBhcnNlci5wYXJzZShlLmRhdGEudG9TdHJpbmcoKSkpO1xyXG4gICAgfTtcclxuICAgIHRoaXMud3Mub25jbG9zZSA9ICgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBvb2wgJiYgdGhpcy5wb29sLldzc0Nvbm5lY3RlZCkgdGhpcy5wb29sLldzc0Nvbm5lY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb25uZWN0KHVybCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1lc3NhZ2VJZDogbnVtYmVyID0gMDtcclxuICBwcm90ZWN0ZWQgc2VuZFRvU29ja2V0KFxyXG4gICAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBkb250RW5zdXJlVHJhbnNtaXNzaW9uPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgbWVzc2FnZUlkID0gKyt0aGlzLm1lc3NhZ2VJZDtcclxuICAgIGlmICh0aGlzLndzLnJlYWR5U3RhdGUgIT0gdGhpcy53cy5PUEVOKSB7XHJcbiAgICAgIGlmICghZG9udEVuc3VyZVRyYW5zbWlzc2lvbilcclxuICAgICAgICB0aGlzLnJlcXVlc3RTdGFjay5wdXNoKHsgbWV0aG9kLCBkYXRhLCBtZXNzYWdlSWQgfSk7XHJcbiAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53cy5zZW5kKEpzb25QYXJzZXIuc3RyaW5naWZ5KHsgbWV0aG9kLCB2YWx1ZTogZGF0YSwgbWVzc2FnZUlkIH0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXNzYWdlSWQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBhdXRoKHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VuZFRvU29ja2V0KCdhdXRoLnRva2VuJywgdG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbmQoXHJcbiAgICBtZXRob2Q6IHN0cmluZyxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGRvbnRFbnN1cmVUcmFuc21pc3Npb24/OiBib29sZWFuXHJcbiAgKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMuc2VuZFRvU29ja2V0KFxyXG4gICAgICBtZXRob2QsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGRvbnRFbnN1cmVUcmFuc21pc3Npb24gfHwgZmFsc2VcclxuICAgICk7XHJcbiAgICBpZiAobWVzc2FnZUlkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmV4cGVjdE1ldGhvZChgbS4ke21ldGhvZH1gLCBtZXNzYWdlSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBlY3RlZE1ldGhvZHM6IE1hcDxzdHJpbmcgfCBudW1iZXIsIEFycmF5PEZ1bmN0aW9uPj4gPSBuZXcgTWFwKCk7XHJcbiAgcHJpdmF0ZSBleHBlY3RNZXRob2QobWV0aG9kOiBzdHJpbmcsIG1lc3NhZ2VJZD86IG51bWJlciB8IG51bGwpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAobWVzc2FnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5leHBlY3RlZE1ldGhvZHMuc2V0KG1lc3NhZ2VJZCwgW3Jlc29sdmVdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5leHBlY3RlZE1ldGhvZHMuaGFzKG1ldGhvZCkpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSB0aGlzLmV4cGVjdGVkTWV0aG9kcy5nZXQobWV0aG9kKTtcclxuICAgICAgICAgIChhcnIgYXMgQXJyYXk8RnVuY3Rpb24+KS5wdXNoKHJlc29sdmUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGVjdGVkTWV0aG9kcy5zZXQobWV0aG9kLCBbcmVzb2x2ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1lc3NhZ2VSZWNlaXZlZCh7XHJcbiAgICBtZXRob2QsXHJcbiAgICB2YWx1ZSxcclxuICAgIG1lc3NhZ2VJZCxcclxuICAgIHNwZWNpZmljSGFzaCxcclxuICAgIGluc2VydGVkLFxyXG4gICAgdXBkYXRlZCxcclxuICAgIGRlbGV0ZWQsXHJcbiAgICBsZW5ndGgsXHJcbiAgfToge1xyXG4gICAgbWV0aG9kOiBzdHJpbmc7XHJcbiAgICB2YWx1ZTogYW55O1xyXG4gICAgbWVzc2FnZUlkOiBudW1iZXIgfCBudWxsO1xyXG4gICAgc3BlY2lmaWNIYXNoOiBudW1iZXIgfCBudWxsO1xyXG4gICAgaW5zZXJ0ZWQ6IGFueVtdIHwgbnVsbDtcclxuICAgIHVwZGF0ZWQ6IGFueVtdIHwgbnVsbDtcclxuICAgIGRlbGV0ZWQ6IGFueVtdIHwgbnVsbDtcclxuICAgIGxlbmd0aDogbnVtYmVyIHwgbnVsbDtcclxuICB9KSB7XHJcbiAgICBpZiAobWV0aG9kID09ICdfX19jYWNoZScpIHtcclxuICAgICAgdGhpcy5oYW5kbGVPdXRib3VuZENhY2hlUmVxdWVzdCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAobWVzc2FnZUlkKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5leHBlY3RlZE1ldGhvZHMuZ2V0KG1lc3NhZ2VJZCk7XHJcbiAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgIGNvbnN0IGZ1bmMgPSBjYWxsYmFjay5zaGlmdCgpO1xyXG4gICAgICAgIGlmIChmdW5jKSBmdW5jKHZhbHVlKTtcclxuICAgICAgICB0aGlzLmludm9rZVN1Y2Nlc3NIYW5kbGVycyhtZXRob2QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5leHBlY3RlZE1ldGhvZHMuZ2V0KG1ldGhvZCk7XHJcbiAgICAgICAgaWYgKGNhbGxiYWNrICYmIGNhbGxiYWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IGZ1bmMgPSBjYWxsYmFjay5zaGlmdCgpO1xyXG4gICAgICAgICAgaWYgKGZ1bmMpIGZ1bmModmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBvdXQgPSBXZWJzb2NrZXRDbGllbnQub3V0Ym91bmRzLmdldChtZXRob2QpO1xyXG4gICAgICAgICAgaWYgKG91dCkge1xyXG4gICAgICAgICAgICBvdXQodmFsdWUsIHNwZWNpZmljSGFzaCwgaW5zZXJ0ZWQsIHVwZGF0ZWQsIGRlbGV0ZWQsIGxlbmd0aCwgdGhpcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGUgPSBXZWJzb2NrZXRDbGllbnQuaGFuZGxlcy5nZXQobWV0aG9kKTtcclxuICAgICAgICAgIGlmIChoYW5kbGUpIHtcclxuICAgICAgICAgICAgKGhhbmRsZS5GdW5jIGFzIEZ1bmN0aW9uKSh2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBFcnJvcihcclxuICAgICAgICAnTm8gTWVzc2FnZUlkIHdhcyBwcm92aWRlZCwgdGhlIGNvbm5lY3Rpb24gaXMgbm90IHN1cHBvcnRlZC4nXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU91dGJvdW5kQ2FjaGVSZXF1ZXN0KG1ldGhvZDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kYlNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5kYlNlcnZpY2UuZ2V0QnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKS5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbmQoJ19fX2NhY2hlJywge1xyXG4gICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgIHNwZWNpZmljSGFzaDogaXRlbS5zcGVjaWZpY0hhc2ggfHwgbnVsbCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbmQoJ19fX2NhY2hlJywge1xyXG4gICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgIHNwZWNpZmljSGFzaDogbnVsbCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbmQoJ19fX2NhY2hlJywge1xyXG4gICAgICAgIG1ldGhvZCxcclxuICAgICAgICBzcGVjaWZpY0hhc2g6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICdBY3RpdmUtQ29ubmVjdDogQ2FjaGluZyBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBvdXRib3VuZHM6IE1hcDxcclxuICAgIHN0cmluZyxcclxuICAgIChcclxuICAgICAgZGF0YTogYW55LFxyXG4gICAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGwsXHJcbiAgICAgIGluc2VydGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgIHVwZGF0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgZGVsZXRlZDogYW55W10gfCBudWxsLFxyXG4gICAgICBsZW5ndGg6IG51bWJlciB8IG51bGwsXHJcbiAgICAgIF90aGlzOiBXZWJzb2NrZXRDbGllbnRcclxuICAgICkgPT4gdm9pZFxyXG4gID4gPSBuZXcgTWFwKCk7XHJcbiAgc3RhdGljIGV4cGVjdE91dGJvdW5kKFxyXG4gICAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgICBjYWxsYmFjazogKFxyXG4gICAgICBkYXRhOiBhbnksXHJcbiAgICAgIHNwZWNpZmljSGFzaDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgaW5zZXJ0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgdXBkYXRlZDogYW55W10gfCBudWxsLFxyXG4gICAgICBkZWxldGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgIGxlbmd0aDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgX3RoaXM6IFdlYnNvY2tldENsaWVudFxyXG4gICAgKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBXZWJzb2NrZXRDbGllbnQub3V0Ym91bmRzLnNldChtZXRob2QsIGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZXM6IE1hcDxzdHJpbmcsIERlY29yYWJsZUZ1bmN0aW9uPiA9IG5ldyBNYXAoKTtcclxuICBzdGF0aWMgcmVnaXN0ZXJIYW5kbGUobWV0aG9kOiBzdHJpbmcsIGNhbGxiYWNrOiBEZWNvcmFibGVGdW5jdGlvbikge1xyXG4gICAgV2Vic29ja2V0Q2xpZW50LmhhbmRsZXMuc2V0KG1ldGhvZCwgY2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0Nvbm5lY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLndzKSByZXR1cm4gdGhpcy53cy5yZWFkeVN0YXRlID09IFdlYlNvY2tldC5PUEVOO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRCcm93c2VySW5mb1RvU2VydmVyKCkge1xyXG4gICAgLy8gc2VuZCBicm93c2VyIC8gb3MgaW5mb3JtYXRpb25cclxuICAgIGNvbnN0IGJyb3dzZXIgPSB0aGlzLmdldEJyb3dzZXIoKTtcclxuICAgIGNvbnN0IG9zID0gdGhpcy5nZXRPUygpO1xyXG4gICAgdGhpcy5zZW5kKCdfX19icm93c2VyJywge1xyXG4gICAgICBicm93c2VyOiBgJHticm93c2VyLm5hbWV9ICR7YnJvd3Nlci52ZXJzaW9ufSAke29zfWAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCcm93c2VyKCk6IHsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfSB7XHJcbiAgICAvLyBodHRwczovL3d3dy5ncmVnb3J5dmFyZ2hlc2UuY29tL2hvdy10by1nZXQtYnJvd3Nlci1uYW1lLWFuZC12ZXJzaW9uLXZpYS1qYXZhc2NyaXB0L1xyXG4gICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudCxcclxuICAgICAgdGVtLFxyXG4gICAgICBNID1cclxuICAgICAgICB1YS5tYXRjaChcclxuICAgICAgICAgIC8ob3BlcmF8Y2hyb21lfHNhZmFyaXxmaXJlZm94fG1zaWV8dHJpZGVudCg/PVxcLykpXFwvP1xccyooXFxkKykvaVxyXG4gICAgICAgICkgfHwgW107XHJcbiAgICBpZiAoL3RyaWRlbnQvaS50ZXN0KE1bMV0pKSB7XHJcbiAgICAgIHRlbSA9IC9cXGJydlsgOl0rKFxcZCspL2cuZXhlYyh1YSkgfHwgW107XHJcbiAgICAgIHJldHVybiB7IG5hbWU6ICdJRSAnLCB2ZXJzaW9uOiB0ZW1bMV0gfHwgJycgfTtcclxuICAgIH1cclxuICAgIGlmIChNWzFdID09PSAnQ2hyb21lJykge1xyXG4gICAgICB0ZW0gPSB1YS5tYXRjaCgvXFxiT1BSXFwvKFxcZCspLyk7XHJcbiAgICAgIGlmICh0ZW0gIT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiB7IG5hbWU6ICdPcGVyYScsIHZlcnNpb246IHRlbVsxXSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNID0gTVsyXSA/IFtNWzFdLCBNWzJdXSA6IFtuYXZpZ2F0b3IuYXBwTmFtZSwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICctPyddO1xyXG4gICAgaWYgKCh0ZW0gPSB1YS5tYXRjaCgvdmVyc2lvblxcLyhcXGQrKS9pKSkgIT0gbnVsbCkge1xyXG4gICAgICBNLnNwbGljZSgxLCAxLCB0ZW1bMV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmFtZTogTVswXSxcclxuICAgICAgdmVyc2lvbjogTVsxXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0T1MoKTogc3RyaW5nIHtcclxuICAgIHZhciB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxcclxuICAgICAgcGxhdGZvcm0gPSB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtLFxyXG4gICAgICBtYWNvc1BsYXRmb3JtcyA9IFsnTWFjaW50b3NoJywgJ01hY0ludGVsJywgJ01hY1BQQycsICdNYWM2OEsnXSxcclxuICAgICAgd2luZG93c1BsYXRmb3JtcyA9IFsnV2luMzInLCAnV2luNjQnLCAnV2luZG93cycsICdXaW5DRSddLFxyXG4gICAgICBpb3NQbGF0Zm9ybXMgPSBbJ2lQaG9uZScsICdpUGFkJywgJ2lQb2QnXSxcclxuICAgICAgb3MgPSBudWxsO1xyXG5cclxuICAgIGlmIChtYWNvc1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnTWFjIE9TJztcclxuICAgIH0gZWxzZSBpZiAoaW9zUGxhdGZvcm1zLmluZGV4T2YocGxhdGZvcm0pICE9PSAtMSkge1xyXG4gICAgICBvcyA9ICdpT1MnO1xyXG4gICAgfSBlbHNlIGlmICh3aW5kb3dzUGxhdGZvcm1zLmluZGV4T2YocGxhdGZvcm0pICE9PSAtMSkge1xyXG4gICAgICBvcyA9ICdXaW5kb3dzJztcclxuICAgIH0gZWxzZSBpZiAoL0FuZHJvaWQvLnRlc3QodXNlckFnZW50KSkge1xyXG4gICAgICBvcyA9ICdBbmRyb2lkJztcclxuICAgIH0gZWxzZSBpZiAoIW9zICYmIC9MaW51eC8udGVzdChwbGF0Zm9ybSkpIHtcclxuICAgICAgb3MgPSAnTGludXgnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcyB8fCAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIG9uU3VjY2Vzc0hhbmRsZXJzOiB7XHJcbiAgICBjYWxsYmFjazogRGVjb3JhYmxlRnVuY3Rpb247XHJcbiAgICByZWdleHA6IFJlZ0V4cDtcclxuICB9W10gPSBbXTtcclxuICBwdWJsaWMgc3RhdGljIG9uU3VjY2VzcyhjYWxsYmFjazogRGVjb3JhYmxlRnVuY3Rpb24sIHJlZ2V4cDogUmVnRXhwKSB7XHJcbiAgICB0aGlzLm9uU3VjY2Vzc0hhbmRsZXJzLnB1c2goeyBjYWxsYmFjaywgcmVnZXhwIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnZva2VTdWNjZXNzSGFuZGxlcnMobWV0aG9kOiBzdHJpbmcpIHtcclxuICAgIFdlYnNvY2tldENsaWVudC5vblN1Y2Nlc3NIYW5kbGVyc1xyXG4gICAgICAuZmlsdGVyKChlKSA9PiBlLnJlZ2V4cC50ZXN0KG1ldGhvZCkpXHJcbiAgICAgIC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgdmFyIHJlcyA9IChlLmNhbGxiYWNrLkZ1bmMgYXMgRnVuY3Rpb24pKCk7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xyXG4gICAgICAgICAgcmVzLnRoZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkaXNjb25uZWN0KHJlc3RhcnQ/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIXJlc3RhcnQpIHRoaXMuY2xvc2VkID0gdHJ1ZTtcclxuICAgIHRoaXMud3MuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENhY2hlKCkge31cclxufVxyXG4iXX0=
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWN0aXZlLWNvbm5lY3QtbmcyL3NyYy9saWIvd2Vic29ja2V0L2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxHQUFZLEVBQ1osYUFBdUIsRUFDeEIsU0FBK0I7UUFGOUIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNaLGtCQUFhLEdBQWIsYUFBYSxDQUFVO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBZ0NoQyxpQkFBWSxHQUFVLEVBQUUsQ0FBQztRQUV6QixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBNEJaLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQXNDM0MsY0FBUyxHQUFXLENBQUMsQ0FBQztRQXdDdEIsb0JBQWUsR0FBMEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuRCxvQkFBZSxHQUEwQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBa09wRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBN1dwQixJQUFJLGFBQWE7WUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksUUFBUSxDQUFDO1lBQ2IsSUFBSSxJQUFJLENBQUM7WUFDVCxRQUFRLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO29CQUNiLFFBQVEsR0FBRyxNQUFNLENBQUM7b0JBQ2xCLElBQUksR0FBRyxNQUFNLENBQUM7b0JBQ2QsTUFBTTtpQkFDUDtnQkFDRCxPQUFPLENBQUMsQ0FBQztvQkFDUCxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUNqQixJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNiLE1BQU07aUJBQ1A7YUFDRjtZQUNE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eyBOZ3hJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnbmd4LWluZGV4ZWQtZGInO1xyXG5pbXBvcnQgeyBEZWNvcmFibGVGdW5jdGlvbiB9IGZyb20gJy4vZGVjb3JhdG9ycy9mdW5jdGlvbic7XHJcbmltcG9ydCB7IEpzb25QYXJzZXIgfSBmcm9tICcuL2pzb24vanNvbi1wYXJzZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFdlYnNvY2tldENsaWVudCB7XHJcbiAgd3MhOiBXZWJTb2NrZXQ7XHJcbiAgcG9vbCE6IHsgV3NzQ29ubmVjdGVkOiBib29sZWFuIH0gfCBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXJsPzogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSBzdXBwb3J0c0NhY2hlPzogYm9vbGVhbixcclxuICAgIHB1YmxpYyBkYlNlcnZpY2U/OiBOZ3hJbmRleGVkREJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBpZiAoc3VwcG9ydHNDYWNoZSkgdGhpcy5pbml0Q2FjaGUoKTtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGxldCBwcm90b2NvbDtcclxuICAgICAgbGV0IHBvcnQ7XHJcbiAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpIHtcclxuICAgICAgICBjYXNlICdodHRwczonOiB7XHJcbiAgICAgICAgICBwcm90b2NvbCA9ICd3c3M6JztcclxuICAgICAgICAgIHBvcnQgPSAnOjQ0Myc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgcHJvdG9jb2wgPSAnd3M6JztcclxuICAgICAgICAgIHBvcnQgPSAnOjgwJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVybCA9IHByb3RvY29sICsgJy8vJyArIGRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lICsgcG9ydCArICcvd3NzJztcclxuICAgIH1cclxuICAgIHRoaXMuY29ubmVjdCh0aGlzLnVybCBhcyBzdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgc3ViamVjdDogYW55O1xyXG5cclxuICBwcml2YXRlIGNvbm5lY3QodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5zdWJqZWN0KSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlKHVybCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0U3RhY2s6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3Rva2VuID0gJyc7XHJcbiAgcHVibGljIGdldCBUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLl90b2tlbikge1xyXG4gICAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSlcclxuICAgICAgICB0aGlzLl90b2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9rZW4nKSB8fCAnJztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl90b2tlbjtcclxuICB9XHJcbiAgcHVibGljIHNldCBUb2tlbih2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdG9rZW4gPSB2YWw7XHJcbiAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSkgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2tlbicsIHZhbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldCBDb25uZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbmRCcm93c2VySW5mb1RvU2VydmVyKCk7XHJcblxyXG4gICAgICB0aGlzLmF1dGgodGhpcy5Ub2tlbikudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNldFJlcXVlc3RlZFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0U3RhY2suZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZW5kVG9Tb2NrZXQoZS5tZXRob2QsIGUuZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3RTdGFjayA9IHRoaXMucmVxdWVzdFN0YWNrLmZpbHRlcigoZTEpID0+IGUxICE9IGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnBvb2wgJiYgdGhpcy5wb29sLldzc0Nvbm5lY3RlZCkgdGhpcy5wb29sLldzc0Nvbm5lY3RlZCA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIHN0YXRpYyByZXNldFJlcXVlc3RlZFN0YXRlQ2FsbGJhY2tzOiBGdW5jdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBjb25uZWN0aW9uRXN0YWJsaXNoZWRPbmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXNldFJlcXVlc3RlZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbkVzdGFibGlzaGVkT25jZSkge1xyXG4gICAgICAvLyByZXNldCByZXF1ZXN0ZWQgc3RhdGUgZm9yIG91dGJvdW5kc1xyXG4gICAgICBXZWJzb2NrZXRDbGllbnQucmVzZXRSZXF1ZXN0ZWRTdGF0ZUNhbGxiYWNrcy5mb3JFYWNoKChyZXNldCkgPT4ge1xyXG4gICAgICAgIHJlc2V0KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uRXN0YWJsaXNoZWRPbmNlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBhZGRSZXNldFJlcXVlc3RpbmdTdGF0ZUNhbGxiYWNrKGNhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgV2Vic29ja2V0Q2xpZW50LnJlc2V0UmVxdWVzdGVkU3RhdGVDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZSh1cmw6IHN0cmluZykge1xyXG4gICAgLy8gY3JlYXRlIG5ldyBjb25uZWN0aW9uXHJcbiAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldCh1cmwgKyAodGhpcy5zdXBwb3J0c0NhY2hlID8gJz9jYWNoZT10cnVlJyA6ICcnKSk7XHJcbiAgICB0aGlzLndzLm9uZXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgIHRoaXMud3MuY2xvc2UoKTtcclxuICAgICAgY29uc29sZS5sb2coJ0FjdGl2ZUNvbm5lY3Q6ICcgKyBlcnIpO1xyXG4gICAgfTtcclxuICAgIHRoaXMud3Mub25vcGVuID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbm5lY3RlZCA9IHRydWU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy53cy5vbm1lc3NhZ2UgPSAoZSkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VSZWNlaXZlZChKc29uUGFyc2VyLnBhcnNlKGUuZGF0YS50b1N0cmluZygpKSk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy53cy5vbmNsb3NlID0gKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9vbCAmJiB0aGlzLnBvb2wuV3NzQ29ubmVjdGVkKSB0aGlzLnBvb2wuV3NzQ29ubmVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbm5lY3QodXJsKTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWVzc2FnZUlkOiBudW1iZXIgPSAwO1xyXG4gIHByb3RlY3RlZCBzZW5kVG9Tb2NrZXQoXHJcbiAgICBtZXRob2Q6IHN0cmluZyxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGRvbnRFbnN1cmVUcmFuc21pc3Npb24/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBtZXNzYWdlSWQgPSArK3RoaXMubWVzc2FnZUlkO1xyXG4gICAgaWYgKHRoaXMud3MucmVhZHlTdGF0ZSAhPSB0aGlzLndzLk9QRU4pIHtcclxuICAgICAgaWYgKCFkb250RW5zdXJlVHJhbnNtaXNzaW9uKVxyXG4gICAgICAgIHRoaXMucmVxdWVzdFN0YWNrLnB1c2goeyBtZXRob2QsIGRhdGEsIG1lc3NhZ2VJZCB9KTtcclxuICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndzLnNlbmQoSnNvblBhcnNlci5zdHJpbmdpZnkoeyBtZXRob2QsIHZhbHVlOiBkYXRhLCBtZXNzYWdlSWQgfSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1lc3NhZ2VJZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGF1dGgodG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZW5kVG9Tb2NrZXQoJ2F1dGgudG9rZW4nLCB0b2tlbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VuZChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZG9udEVuc3VyZVRyYW5zbWlzc2lvbj86IGJvb2xlYW5cclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3QgbWVzc2FnZUlkID0gdGhpcy5zZW5kVG9Tb2NrZXQoXHJcbiAgICAgIG1ldGhvZCxcclxuICAgICAgZGF0YSxcclxuICAgICAgZG9udEVuc3VyZVRyYW5zbWlzc2lvbiB8fCBmYWxzZVxyXG4gICAgKTtcclxuICAgIGlmIChtZXNzYWdlSWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwZWN0TWV0aG9kKGBtLiR7bWV0aG9kfWAsIG1lc3NhZ2VJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlamVjdENhbGxiYWNrczogTWFwPG51bWJlciwgRnVuY3Rpb24+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgZXhwZWN0ZWRNZXRob2RzOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBBcnJheTxGdW5jdGlvbj4+ID0gbmV3IE1hcCgpO1xyXG4gIHByaXZhdGUgZXhwZWN0TWV0aG9kKG1ldGhvZDogc3RyaW5nLCBtZXNzYWdlSWQ/OiBudW1iZXIgfCBudWxsKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAobWVzc2FnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5leHBlY3RlZE1ldGhvZHMuc2V0KG1lc3NhZ2VJZCwgW3Jlc29sdmVdKTtcclxuICAgICAgICB0aGlzLnJlamVjdENhbGxiYWNrcy5zZXQobWVzc2FnZUlkLCByZWplY3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmV4cGVjdGVkTWV0aG9kcy5oYXMobWV0aG9kKSkge1xyXG4gICAgICAgICAgbGV0IGFyciA9IHRoaXMuZXhwZWN0ZWRNZXRob2RzLmdldChtZXRob2QpO1xyXG4gICAgICAgICAgKGFyciBhcyBBcnJheTxGdW5jdGlvbj4pLnB1c2gocmVzb2x2ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRNZXRob2RzLnNldChtZXRob2QsIFtyZXNvbHZlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWVzc2FnZVJlY2VpdmVkKHtcclxuICAgIG1ldGhvZCxcclxuICAgIHZhbHVlLFxyXG4gICAgbWVzc2FnZUlkLFxyXG4gICAgc3BlY2lmaWNIYXNoLFxyXG4gICAgaW5zZXJ0ZWQsXHJcbiAgICB1cGRhdGVkLFxyXG4gICAgZGVsZXRlZCxcclxuICAgIGxlbmd0aCxcclxuICB9OiB7XHJcbiAgICBtZXRob2Q6IHN0cmluZztcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgICBtZXNzYWdlSWQ6IG51bWJlciB8IG51bGw7XHJcbiAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGw7XHJcbiAgICBpbnNlcnRlZDogYW55W10gfCBudWxsO1xyXG4gICAgdXBkYXRlZDogYW55W10gfCBudWxsO1xyXG4gICAgZGVsZXRlZDogYW55W10gfCBudWxsO1xyXG4gICAgbGVuZ3RoOiBudW1iZXIgfCBudWxsO1xyXG4gIH0pIHtcclxuICAgIGlmIChtZXRob2QgPT0gJ19fX2NhY2hlJykge1xyXG4gICAgICB0aGlzLmhhbmRsZU91dGJvdW5kQ2FjaGVSZXF1ZXN0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChtZXNzYWdlSWQpIHtcclxuICAgICAgaWYgKG1ldGhvZCkge1xyXG4gICAgICAgIGNvbnN0IHJlamVjdCA9IHRoaXMucmVqZWN0Q2FsbGJhY2tzLmdldChtZXNzYWdlSWQpO1xyXG4gICAgICAgIGlmIChyZWplY3QpIHtcclxuICAgICAgICAgIHJlamVjdCh2YWx1ZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBjYWxsYmFjayA9IHRoaXMuZXhwZWN0ZWRNZXRob2RzLmdldChtZXNzYWdlSWQpO1xyXG4gICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBmdW5jID0gY2FsbGJhY2suc2hpZnQoKTtcclxuICAgICAgICBpZiAoZnVuYykgZnVuYyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5pbnZva2VTdWNjZXNzSGFuZGxlcnMobWV0aG9kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjYWxsYmFjayA9IHRoaXMuZXhwZWN0ZWRNZXRob2RzLmdldChtZXRob2QpO1xyXG4gICAgICAgIGlmIChjYWxsYmFjayAmJiBjYWxsYmFjay5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBmdW5jID0gY2FsbGJhY2suc2hpZnQoKTtcclxuICAgICAgICAgIGlmIChmdW5jKSBmdW5jKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb3V0ID0gV2Vic29ja2V0Q2xpZW50Lm91dGJvdW5kcy5nZXQobWV0aG9kKTtcclxuICAgICAgICAgIGlmIChvdXQpIHtcclxuICAgICAgICAgICAgb3V0KHZhbHVlLCBzcGVjaWZpY0hhc2gsIGluc2VydGVkLCB1cGRhdGVkLCBkZWxldGVkLCBsZW5ndGgsIHRoaXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaGFuZGxlID0gV2Vic29ja2V0Q2xpZW50LmhhbmRsZXMuZ2V0KG1ldGhvZCk7XHJcbiAgICAgICAgICBpZiAoaGFuZGxlKSB7XHJcbiAgICAgICAgICAgIChoYW5kbGUuRnVuYyBhcyBGdW5jdGlvbikodmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgJ05vIE1lc3NhZ2VJZCB3YXMgcHJvdmlkZWQsIHRoZSBjb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVPdXRib3VuZENhY2hlUmVxdWVzdChtZXRob2Q6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZGJTZXJ2aWNlKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5kYlNlcnZpY2UuZ2V0QnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKS5zdWJzY3JpYmUoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kKCdfX19jYWNoZScsIHtcclxuICAgICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgICAgc3BlY2lmaWNIYXNoOiBpdGVtLnNwZWNpZmljSGFzaCB8fCBudWxsLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZCgnX19fY2FjaGUnLCB7XHJcbiAgICAgICAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgICAgICAgIHNwZWNpZmljSGFzaDogbnVsbCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB0aGlzLnNlbmQoJ19fX2NhY2hlJywge1xyXG4gICAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgICAgc3BlY2lmaWNIYXNoOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGl2ZUNvbm5lY3Q6ICcgKyBlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZW5kKCdfX19jYWNoZScsIHtcclxuICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgc3BlY2lmaWNIYXNoOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhY2hpbmcgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgb3V0Ym91bmRzOiBNYXA8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAoXHJcbiAgICAgIGRhdGE6IGFueSxcclxuICAgICAgc3BlY2lmaWNIYXNoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICBpbnNlcnRlZDogYW55W10gfCBudWxsLFxyXG4gICAgICB1cGRhdGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgIGRlbGV0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgbGVuZ3RoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICBfdGhpczogV2Vic29ja2V0Q2xpZW50XHJcbiAgICApID0+IHZvaWRcclxuICA+ID0gbmV3IE1hcCgpO1xyXG4gIHN0YXRpYyBleHBlY3RPdXRib3VuZChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgY2FsbGJhY2s6IChcclxuICAgICAgZGF0YTogYW55LFxyXG4gICAgICBzcGVjaWZpY0hhc2g6IG51bWJlciB8IG51bGwsXHJcbiAgICAgIGluc2VydGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgIHVwZGF0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgZGVsZXRlZDogYW55W10gfCBudWxsLFxyXG4gICAgICBsZW5ndGg6IG51bWJlciB8IG51bGwsXHJcbiAgICAgIF90aGlzOiBXZWJzb2NrZXRDbGllbnRcclxuICAgICkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgV2Vic29ja2V0Q2xpZW50Lm91dGJvdW5kcy5zZXQobWV0aG9kLCBjYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBoYW5kbGVzOiBNYXA8c3RyaW5nLCBEZWNvcmFibGVGdW5jdGlvbj4gPSBuZXcgTWFwKCk7XHJcbiAgc3RhdGljIHJlZ2lzdGVySGFuZGxlKG1ldGhvZDogc3RyaW5nLCBjYWxsYmFjazogRGVjb3JhYmxlRnVuY3Rpb24pIHtcclxuICAgIFdlYnNvY2tldENsaWVudC5oYW5kbGVzLnNldChtZXRob2QsIGNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNDb25uZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy53cykgcmV0dXJuIHRoaXMud3MucmVhZHlTdGF0ZSA9PSBXZWJTb2NrZXQuT1BFTjtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kQnJvd3NlckluZm9Ub1NlcnZlcigpIHtcclxuICAgIC8vIHNlbmQgYnJvd3NlciAvIG9zIGluZm9ybWF0aW9uXHJcbiAgICBjb25zdCBicm93c2VyID0gdGhpcy5nZXRCcm93c2VyKCk7XHJcbiAgICBjb25zdCBvcyA9IHRoaXMuZ2V0T1MoKTtcclxuICAgIHRoaXMuc2VuZCgnX19fYnJvd3NlcicsIHtcclxuICAgICAgYnJvd3NlcjogYCR7YnJvd3Nlci5uYW1lfSAke2Jyb3dzZXIudmVyc2lvbn0gJHtvc31gLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QnJvd3NlcigpOiB7IG5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH0ge1xyXG4gICAgLy8gaHR0cHM6Ly93d3cuZ3JlZ29yeXZhcmdoZXNlLmNvbS9ob3ctdG8tZ2V0LWJyb3dzZXItbmFtZS1hbmQtdmVyc2lvbi12aWEtamF2YXNjcmlwdC9cclxuICAgIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgIHRlbSxcclxuICAgICAgTSA9XHJcbiAgICAgICAgdWEubWF0Y2goXHJcbiAgICAgICAgICAvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2lcclxuICAgICAgICApIHx8IFtdO1xyXG4gICAgaWYgKC90cmlkZW50L2kudGVzdChNWzFdKSkge1xyXG4gICAgICB0ZW0gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModWEpIHx8IFtdO1xyXG4gICAgICByZXR1cm4geyBuYW1lOiAnSUUgJywgdmVyc2lvbjogdGVtWzFdIHx8ICcnIH07XHJcbiAgICB9XHJcbiAgICBpZiAoTVsxXSA9PT0gJ0Nocm9tZScpIHtcclxuICAgICAgdGVtID0gdWEubWF0Y2goL1xcYk9QUlxcLyhcXGQrKS8pO1xyXG4gICAgICBpZiAodGVtICE9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4geyBuYW1lOiAnT3BlcmEnLCB2ZXJzaW9uOiB0ZW1bMV0gfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTSA9IE1bMl0gPyBbTVsxXSwgTVsyXV0gOiBbbmF2aWdhdG9yLmFwcE5hbWUsIG5hdmlnYXRvci5hcHBWZXJzaW9uLCAnLT8nXTtcclxuICAgIGlmICgodGVtID0gdWEubWF0Y2goL3ZlcnNpb25cXC8oXFxkKykvaSkpICE9IG51bGwpIHtcclxuICAgICAgTS5zcGxpY2UoMSwgMSwgdGVtWzFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IE1bMF0sXHJcbiAgICAgIHZlcnNpb246IE1bMV0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9TKCk6IHN0cmluZyB7XHJcbiAgICB2YXIgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgIHBsYXRmb3JtID0gd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybSxcclxuICAgICAgbWFjb3NQbGF0Zm9ybXMgPSBbJ01hY2ludG9zaCcsICdNYWNJbnRlbCcsICdNYWNQUEMnLCAnTWFjNjhLJ10sXHJcbiAgICAgIHdpbmRvd3NQbGF0Zm9ybXMgPSBbJ1dpbjMyJywgJ1dpbjY0JywgJ1dpbmRvd3MnLCAnV2luQ0UnXSxcclxuICAgICAgaW9zUGxhdGZvcm1zID0gWydpUGhvbmUnLCAnaVBhZCcsICdpUG9kJ10sXHJcbiAgICAgIG9zID0gbnVsbDtcclxuXHJcbiAgICBpZiAobWFjb3NQbGF0Zm9ybXMuaW5kZXhPZihwbGF0Zm9ybSkgIT09IC0xKSB7XHJcbiAgICAgIG9zID0gJ01hYyBPUyc7XHJcbiAgICB9IGVsc2UgaWYgKGlvc1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnaU9TJztcclxuICAgIH0gZWxzZSBpZiAod2luZG93c1BsYXRmb3Jtcy5pbmRleE9mKHBsYXRmb3JtKSAhPT0gLTEpIHtcclxuICAgICAgb3MgPSAnV2luZG93cyc7XHJcbiAgICB9IGVsc2UgaWYgKC9BbmRyb2lkLy50ZXN0KHVzZXJBZ2VudCkpIHtcclxuICAgICAgb3MgPSAnQW5kcm9pZCc7XHJcbiAgICB9IGVsc2UgaWYgKCFvcyAmJiAvTGludXgvLnRlc3QocGxhdGZvcm0pKSB7XHJcbiAgICAgIG9zID0gJ0xpbnV4JztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3MgfHwgJyc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBvblN1Y2Nlc3NIYW5kbGVyczoge1xyXG4gICAgY2FsbGJhY2s6IERlY29yYWJsZUZ1bmN0aW9uO1xyXG4gICAgcmVnZXhwOiBSZWdFeHA7XHJcbiAgfVtdID0gW107XHJcbiAgcHVibGljIHN0YXRpYyBvblN1Y2Nlc3MoY2FsbGJhY2s6IERlY29yYWJsZUZ1bmN0aW9uLCByZWdleHA6IFJlZ0V4cCkge1xyXG4gICAgdGhpcy5vblN1Y2Nlc3NIYW5kbGVycy5wdXNoKHsgY2FsbGJhY2ssIHJlZ2V4cCB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlU3VjY2Vzc0hhbmRsZXJzKG1ldGhvZDogc3RyaW5nKSB7XHJcbiAgICBXZWJzb2NrZXRDbGllbnQub25TdWNjZXNzSGFuZGxlcnNcclxuICAgICAgLmZpbHRlcigoZSkgPT4gZS5yZWdleHAudGVzdChtZXRob2QpKVxyXG4gICAgICAuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIHZhciByZXMgPSAoZS5jYWxsYmFjay5GdW5jIGFzIEZ1bmN0aW9uKSgpO1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLnRoZW4pIHtcclxuICAgICAgICAgIHJlcy50aGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgZGlzY29ubmVjdChyZXN0YXJ0PzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFyZXN0YXJ0KSB0aGlzLmNsb3NlZCA9IHRydWU7XHJcbiAgICB0aGlzLndzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDYWNoZSgpIHt9XHJcbn1cclxuIl19
|
|
@@ -13,29 +13,51 @@ export function Outbound(method, requestingRequired, cached, sortBy) {
|
|
|
13
13
|
if (!target.___requested)
|
|
14
14
|
target.___requested = {};
|
|
15
15
|
if (!cached) {
|
|
16
|
-
if (_this.dbService)
|
|
17
|
-
|
|
16
|
+
if (_this.dbService) {
|
|
17
|
+
try {
|
|
18
|
+
_this.dbService
|
|
19
|
+
.deleteByKey('outbound', method)
|
|
20
|
+
.subscribe(() => { });
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
console.error('ActiveConnect: could not delete indexdb cache entry');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
18
26
|
}
|
|
19
27
|
if (data == 'cache_restore') {
|
|
20
28
|
if (_this.dbService) {
|
|
21
|
-
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
try {
|
|
30
|
+
_this.dbService
|
|
31
|
+
.getByKey('outbound', method)
|
|
32
|
+
.subscribe((result) => {
|
|
33
|
+
target.___received[propertyKey] = true;
|
|
34
|
+
target.___data[propertyKey] = result.data;
|
|
35
|
+
target.loading.set(propertyKey, false);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
console.error('ActiveConnect: Unable to restore cached data.');
|
|
40
|
+
console.error(e);
|
|
41
|
+
}
|
|
28
42
|
}
|
|
29
43
|
else {
|
|
30
|
-
console.error('
|
|
44
|
+
console.error('ActiveConnect: Caching / restore not possible as the indexedDB is not accessible');
|
|
31
45
|
}
|
|
32
46
|
}
|
|
33
47
|
else if (data == 'cache_delete') {
|
|
34
48
|
if (_this.dbService) {
|
|
35
|
-
|
|
49
|
+
try {
|
|
50
|
+
_this.dbService
|
|
51
|
+
.deleteByKey('outbound', method)
|
|
52
|
+
.subscribe(() => { });
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
console.error('ActiveConnect: Unable to delete cached data');
|
|
56
|
+
console.error(e);
|
|
57
|
+
}
|
|
36
58
|
}
|
|
37
59
|
else {
|
|
38
|
-
console.error('
|
|
60
|
+
console.error('ActiveConnect: Caching / restore not possible as the indexedDB is not accessible');
|
|
39
61
|
}
|
|
40
62
|
target.___received[propertyKey] = false;
|
|
41
63
|
target.___data[propertyKey] = undefined;
|
|
@@ -77,22 +99,34 @@ export function Outbound(method, requestingRequired, cached, sortBy) {
|
|
|
77
99
|
if (cached && specificHash) {
|
|
78
100
|
if (_this.dbService) {
|
|
79
101
|
if (data && data?.length > 0) {
|
|
80
|
-
|
|
81
|
-
.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
102
|
+
try {
|
|
103
|
+
_this.dbService
|
|
104
|
+
.update('outbound', {
|
|
105
|
+
method,
|
|
106
|
+
data,
|
|
107
|
+
specificHash,
|
|
108
|
+
})
|
|
109
|
+
.subscribe(() => { });
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
console.error('ActiveConnect: Unable to update cached data');
|
|
113
|
+
console.error(e);
|
|
114
|
+
}
|
|
87
115
|
}
|
|
88
116
|
else {
|
|
89
|
-
|
|
90
|
-
.
|
|
91
|
-
|
|
117
|
+
try {
|
|
118
|
+
_this.dbService
|
|
119
|
+
.deleteByKey('outbound', method)
|
|
120
|
+
.subscribe(() => { });
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
console.error('ActiveConnect: Unable to delete cached data');
|
|
124
|
+
console.error(e);
|
|
125
|
+
}
|
|
92
126
|
}
|
|
93
127
|
}
|
|
94
128
|
else {
|
|
95
|
-
console.error('
|
|
129
|
+
console.error('ActiveConnect: Caching not possible as the indexedDB has not been initialized');
|
|
96
130
|
}
|
|
97
131
|
}
|
|
98
132
|
}
|
|
@@ -105,22 +139,34 @@ export function Outbound(method, requestingRequired, cached, sortBy) {
|
|
|
105
139
|
if (cached && specificHash) {
|
|
106
140
|
if (_this.dbService) {
|
|
107
141
|
if (data && data?.length > 0) {
|
|
108
|
-
|
|
109
|
-
.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
142
|
+
try {
|
|
143
|
+
_this.dbService
|
|
144
|
+
.update('outbound', {
|
|
145
|
+
method,
|
|
146
|
+
data,
|
|
147
|
+
specificHash,
|
|
148
|
+
})
|
|
149
|
+
.subscribe(() => { });
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
console.error('ActiveConnect: Unable to update cached data');
|
|
153
|
+
console.error(e);
|
|
154
|
+
}
|
|
115
155
|
}
|
|
116
156
|
else {
|
|
117
|
-
|
|
118
|
-
.
|
|
119
|
-
|
|
157
|
+
try {
|
|
158
|
+
_this.dbService
|
|
159
|
+
.deleteByKey('outbound', method)
|
|
160
|
+
.subscribe(() => { });
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
console.error('ActiveConnect: Unable to update cached data');
|
|
164
|
+
console.error(e);
|
|
165
|
+
}
|
|
120
166
|
}
|
|
121
167
|
}
|
|
122
168
|
else {
|
|
123
|
-
console.error('
|
|
169
|
+
console.error('ActiveConnect: Caching not possible as the indexedDB has not been initialized');
|
|
124
170
|
}
|
|
125
171
|
}
|
|
126
172
|
}
|
|
@@ -164,4 +210,4 @@ export function Outbound(method, requestingRequired, cached, sortBy) {
|
|
|
164
210
|
return obj;
|
|
165
211
|
};
|
|
166
212
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY3RpdmUtY29ubmVjdC1uZzIvc3JjL2xpYi93ZWJzb2NrZXQvZGVjb3JhdG9ycy93ZWJzb2NrZXQvb3V0Ym91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxNQUFNLFVBQVUsUUFBUSxDQUN0QixNQUFjLEVBQ2Qsa0JBQTRCLEVBQzVCLE1BQWdCLEVBQ2hCLE1BQW1DO0lBRW5DLE9BQU8sU0FBUyxTQUFTLENBQUMsTUFBVyxFQUFFLFdBQW1CO1FBQ3hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFDNUMsc0JBQXNCO1FBQ3RCLGVBQWUsQ0FBQyxjQUFjLENBQzVCLE1BQU0sRUFDTixTQUFTLFdBQVcsQ0FDbEIsSUFBUyxFQUNULFlBQTJCLEVBQzNCLFFBQXNCLEVBQ3RCLE9BQXFCLEVBQ3JCLE9BQXFCLEVBQ3JCLE1BQXFCLEVBQ3JCLEtBQXNCO1lBRXRCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztnQkFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUFFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFBRSxNQUFNLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLElBQUksS0FBSyxDQUFDLFNBQVM7b0JBQ2pCLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLENB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Q3ZDLElBQUksTUFBTSxJQUFJLEdBQUc7b0JBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7U0FDRixDQUFDO1FBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJzb2NrZXRDbGllbnQgfSBmcm9tICcuLi8uLi9jbGllbnQnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE91dGJvdW5kKFxyXG4gIG1ldGhvZDogc3RyaW5nLFxyXG4gIHJlcXVlc3RpbmdSZXF1aXJlZD86IGJvb2xlYW4sXHJcbiAgY2FjaGVkPzogYm9vbGVhbixcclxuICBzb3J0Qnk/OiAoYTogYW55LCBiOiBhbnkpID0+IG51bWJlclxyXG4pIHtcclxuICByZXR1cm4gZnVuY3Rpb24gX091dGJvdW5kKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55IHtcclxuICAgIHRhcmdldC5sb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XHJcbiAgICAvLyBwcm9wZXJ0eSBhbm5vdGF0aW9uXHJcbiAgICBXZWJzb2NrZXRDbGllbnQuZXhwZWN0T3V0Ym91bmQoXHJcbiAgICAgIG1ldGhvZCxcclxuICAgICAgZnVuY3Rpb24gc2V0T3V0Ym91bmQoXHJcbiAgICAgICAgZGF0YTogYW55LFxyXG4gICAgICAgIHNwZWNpZmljSGFzaDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgICBpbnNlcnRlZDogYW55W10gfCBudWxsLFxyXG4gICAgICAgIHVwZGF0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgICBkZWxldGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgICAgbGVuZ3RoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICAgIF90aGlzOiBXZWJzb2NrZXRDbGllbnRcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX3JlcXVlc3RlZCkgdGFyZ2V0Ll9fX3JlcXVlc3RlZCA9IHt9O1xyXG4gICAgICAgIGlmICghY2FjaGVkKSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuZGJTZXJ2aWNlKVxyXG4gICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2UuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEgPT0gJ2NhY2hlX3Jlc3RvcmUnKSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuZGJTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLmRiU2VydmljZVxyXG4gICAgICAgICAgICAgIC5nZXRCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5fX19yZWNlaXZlZFtwcm9wZXJ0eUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQubG9hZGluZy5zZXQocHJvcGVydHlLZXksIGZhbHNlKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgJ0FjdGl2ZSAtIENvbm5lY3Q6IENhY2hpbmcgLyByZXN0b3JlIG5vdCBwb3NzaWJsZSBhcyB0aGUgaW5kZXhlZERCIGlzIG5vdCBhY2Nlc3NpYmxlJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnY2FjaGVfZGVsZXRlJykge1xyXG4gICAgICAgICAgaWYgKF90aGlzLmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2UuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKS5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAnQWN0aXZlIC0gQ29ubmVjdDogQ2FjaGluZyAvIHJlc3RvcmUgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaXMgbm90IGFjY2Vzc2libGUnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0YXJnZXQuX19fcmVjZWl2ZWRbcHJvcGVydHlLZXldID0gZmFsc2U7XHJcbiAgICAgICAgICB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB0YXJnZXQubG9hZGluZy5zZXQocHJvcGVydHlLZXksIGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPT0gJ2RhdGFfZGVsZXRlJykge1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgICB0YXJnZXQuX19fcmVjZWl2ZWRbcHJvcGVydHlLZXldID0gZmFsc2U7XHJcbiAgICAgICAgICB0YXJnZXQuX19fcmVxdWVzdGVkW3Byb3BlcnR5S2V5XSA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnZGF0YV9kaWZmJykge1xyXG4gICAgICAgICAgdmFyIGRhdGEgPSB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gfHwgW107XHJcbiAgICAgICAgICBpbnNlcnRlZD8uZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IGRhdGEuZmlsdGVyKChkOiBhbnkpID0+IGQuaWQgPT0gZS5pZCk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgZGF0YVtkYXRhLmluZGV4T2YobWF0Y2hpbmdbMF0pXSA9IGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5wdXNoKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHVwZGF0ZWQ/LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSBkYXRhLmZpbHRlcigoZDogYW55KSA9PiBkLmlkID09IGUuaWQpO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hpbmcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGRhdGFbZGF0YS5pbmRleE9mKG1hdGNoaW5nWzBdKV0gPSBlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRhdGEucHVzaChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkZWxldGVkPy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcigoZDogYW55KSA9PiBkLmlkICE9IGUuaWQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoc29ydEJ5ICYmIGRhdGEpIGRhdGEgPSBkYXRhLnNvcnQoc29ydEJ5KTtcclxuICAgICAgICAgIHRhcmdldC5fX19kYXRhW3Byb3BlcnR5S2V5XSA9IGRhdGE7XHJcbiAgICAgICAgICB0YXJnZXQubG9hZGluZy5zZXQocHJvcGVydHlLZXksIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICBpZiAoY2FjaGVkICYmIHNwZWNpZmljSGFzaCkge1xyXG4gICAgICAgICAgICBpZiAoX3RoaXMuZGJTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuZGJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgIC51cGRhdGUoJ291dGJvdW5kJywge1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZCxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljSGFzaCxcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICdBY3RpdmUtQ29ubmVjdDogQ2FjaGluZyBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoc29ydEJ5ICYmIGRhdGEpIGRhdGEgPSBkYXRhLnNvcnQoc29ydEJ5KTtcclxuICAgICAgICAgIHRhcmdldC5fX19yZWNlaXZlZFtwcm9wZXJ0eUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gZGF0YTtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKGNhY2hlZCAmJiBzcGVjaWZpY0hhc2gpIHtcclxuICAgICAgICAgICAgaWYgKF90aGlzLmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAudXBkYXRlKCdvdXRib3VuZCcsIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgLmRlbGV0ZUJ5S2V5KCdvdXRib3VuZCcsIG1ldGhvZClcclxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnQWN0aXZlLUNvbm5lY3Q6IENhY2hpbmcgbm90IHBvc3NpYmxlIGFzIHRoZSBpbmRleGVkREIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAocmVxdWVzdGluZ1JlcXVpcmVkKSB7XHJcbiAgICAgIFdlYnNvY2tldENsaWVudC5hZGRSZXNldFJlcXVlc3RpbmdTdGF0ZUNhbGxiYWNrKGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xyXG4gICAgICAgIGlmICh0YXJnZXQuX19fcmVxdWVzdGVkKSB7XHJcbiAgICAgICAgICB0YXJnZXQuX19fcmVxdWVzdGVkW3Byb3BlcnR5S2V5XSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICBpZiAoIXRhcmdldC5fX19yZXF1ZXN0ZWQpIHRhcmdldC5fX19yZXF1ZXN0ZWQgPSB7fTtcclxuICAgICAgICBpZiAocmVxdWVzdGluZ1JlcXVpcmVkICYmICF0YXJnZXQuX19fcmVxdWVzdGVkW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX3JlcXVlc3RlZFtwcm9wZXJ0eUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgKHRoaXMgYXMgYW55KS5zZW5kKCdyZXF1ZXN0LicgKyBtZXRob2QsIG51bGwpLnRoZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fZGF0YSkgdGFyZ2V0Ll9fX2RhdGEgPSB7fTtcclxuICAgICAgICBpZiAoIXRhcmdldC5fX19kYXRhW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCB0cnVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldC5sb2FkaW5nW3Byb3BlcnR5S2V5XSkge1xyXG4gICAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV07XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWw6IGFueSkge1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgdGFyZ2V0LmxvYWRpbmcuc2V0KHByb3BlcnR5S2V5LCBmYWxzZSk7XHJcbiAgICAgICAgaWYgKHNvcnRCeSAmJiB2YWwpIHZhbCA9IHZhbC5zb3J0KHNvcnRCeSk7XHJcbiAgICAgICAgcmV0dXJuICh0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gPSB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRhcmdldFtwcm9wZXJ0eUtleV0gPSBvYmo7XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY3RpdmUtY29ubmVjdC1uZzIvc3JjL2xpYi93ZWJzb2NrZXQvZGVjb3JhdG9ycy93ZWJzb2NrZXQvb3V0Ym91bmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxNQUFNLFVBQVUsUUFBUSxDQUN0QixNQUFjLEVBQ2Qsa0JBQTRCLEVBQzVCLE1BQWdCLEVBQ2hCLE1BQW1DO0lBRW5DLE9BQU8sU0FBUyxTQUFTLENBQUMsTUFBVyxFQUFFLFdBQW1CO1FBQ3hELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFDNUMsc0JBQXNCO1FBQ3RCLGVBQWUsQ0FBQyxjQUFjLENBQzVCLE1BQU0sRUFDTixTQUFTLFdBQVcsQ0FDbEIsSUFBUyxFQUNULFlBQTJCLEVBQzNCLFFBQXNCLEVBQ3RCLE9BQXFCLEVBQ3JCLE9BQXFCLEVBQ3JCLE1BQXFCLEVBQ3JCLEtBQXNCO1lBRXRCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztnQkFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO2dCQUFFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFBRSxNQUFNLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNYLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtvQkFDbkIsSUFBSTt3QkFDRixLQUFLLENBQUMsU0FBUzs2QkFDWixXQUFXLENBQUMs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QUFJLEdBQUc7b0JBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7U0FDRixDQUFDO1FBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJzb2NrZXRDbGllbnQgfSBmcm9tICcuLi8uLi9jbGllbnQnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE91dGJvdW5kKFxyXG4gIG1ldGhvZDogc3RyaW5nLFxyXG4gIHJlcXVlc3RpbmdSZXF1aXJlZD86IGJvb2xlYW4sXHJcbiAgY2FjaGVkPzogYm9vbGVhbixcclxuICBzb3J0Qnk/OiAoYTogYW55LCBiOiBhbnkpID0+IG51bWJlclxyXG4pIHtcclxuICByZXR1cm4gZnVuY3Rpb24gX091dGJvdW5kKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55IHtcclxuICAgIHRhcmdldC5sb2FkaW5nID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XHJcbiAgICAvLyBwcm9wZXJ0eSBhbm5vdGF0aW9uXHJcbiAgICBXZWJzb2NrZXRDbGllbnQuZXhwZWN0T3V0Ym91bmQoXHJcbiAgICAgIG1ldGhvZCxcclxuICAgICAgZnVuY3Rpb24gc2V0T3V0Ym91bmQoXHJcbiAgICAgICAgZGF0YTogYW55LFxyXG4gICAgICAgIHNwZWNpZmljSGFzaDogbnVtYmVyIHwgbnVsbCxcclxuICAgICAgICBpbnNlcnRlZDogYW55W10gfCBudWxsLFxyXG4gICAgICAgIHVwZGF0ZWQ6IGFueVtdIHwgbnVsbCxcclxuICAgICAgICBkZWxldGVkOiBhbnlbXSB8IG51bGwsXHJcbiAgICAgICAgbGVuZ3RoOiBudW1iZXIgfCBudWxsLFxyXG4gICAgICAgIF90aGlzOiBXZWJzb2NrZXRDbGllbnRcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVjZWl2ZWQpIHRhcmdldC5fX19yZWNlaXZlZCA9IHt9O1xyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX3JlcXVlc3RlZCkgdGFyZ2V0Ll9fX3JlcXVlc3RlZCA9IHt9O1xyXG4gICAgICAgIGlmICghY2FjaGVkKSB7XHJcbiAgICAgICAgICBpZiAoX3RoaXMuZGJTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgX3RoaXMuZGJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgJ0FjdGl2ZUNvbm5lY3Q6IGNvdWxkIG5vdCBkZWxldGUgaW5kZXhkYiBjYWNoZSBlbnRyeSdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YSA9PSAnY2FjaGVfcmVzdG9yZScpIHtcclxuICAgICAgICAgIGlmIChfdGhpcy5kYlNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5nZXRCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0YXJnZXQuX19fcmVjZWl2ZWRbcHJvcGVydHlLZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBY3RpdmVDb25uZWN0OiBVbmFibGUgdG8gcmVzdG9yZSBjYWNoZWQgZGF0YS4nKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICdBY3RpdmVDb25uZWN0OiBDYWNoaW5nIC8gcmVzdG9yZSBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBpcyBub3QgYWNjZXNzaWJsZSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGRhdGEgPT0gJ2NhY2hlX2RlbGV0ZScpIHtcclxuICAgICAgICAgIGlmIChfdGhpcy5kYlNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5kZWxldGVCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGl2ZUNvbm5lY3Q6IFVuYWJsZSB0byBkZWxldGUgY2FjaGVkIGRhdGEnKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAgICdBY3RpdmVDb25uZWN0OiBDYWNoaW5nIC8gcmVzdG9yZSBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBpcyBub3QgYWNjZXNzaWJsZSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRhcmdldC5fX19yZWNlaXZlZFtwcm9wZXJ0eUtleV0gPSBmYWxzZTtcclxuICAgICAgICAgIHRhcmdldC5fX19kYXRhW3Byb3BlcnR5S2V5XSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YSA9PSAnZGF0YV9kZWxldGUnKSB7XHJcbiAgICAgICAgICB0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICB0YXJnZXQubG9hZGluZy5zZXQocHJvcGVydHlLZXksIGZhbHNlKTtcclxuICAgICAgICAgIHRhcmdldC5fX19yZWNlaXZlZFtwcm9wZXJ0eUtleV0gPSBmYWxzZTtcclxuICAgICAgICAgIHRhcmdldC5fX19yZXF1ZXN0ZWRbcHJvcGVydHlLZXldID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhID09ICdkYXRhX2RpZmYnKSB7XHJcbiAgICAgICAgICB2YXIgZGF0YSA9IHRhcmdldC5fX19kYXRhW3Byb3BlcnR5S2V5XSB8fCBbXTtcclxuICAgICAgICAgIGluc2VydGVkPy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nID0gZGF0YS5maWx0ZXIoKGQ6IGFueSkgPT4gZC5pZCA9PSBlLmlkKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBkYXRhW2RhdGEuaW5kZXhPZihtYXRjaGluZ1swXSldID0gZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkYXRhLnB1c2goZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXBkYXRlZD8uZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IGRhdGEuZmlsdGVyKChkOiBhbnkpID0+IGQuaWQgPT0gZS5pZCk7XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgZGF0YVtkYXRhLmluZGV4T2YobWF0Y2hpbmdbMF0pXSA9IGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZGF0YS5wdXNoKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRlbGV0ZWQ/LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKChkOiBhbnkpID0+IGQuaWQgIT0gZS5pZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChzb3J0QnkgJiYgZGF0YSkgZGF0YSA9IGRhdGEuc29ydChzb3J0QnkpO1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gZGF0YTtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgIGlmIChjYWNoZWQgJiYgc3BlY2lmaWNIYXNoKSB7XHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5kYlNlcnZpY2UpIHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAudXBkYXRlKCdvdXRib3VuZCcsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQWN0aXZlQ29ubmVjdDogVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZWQgZGF0YScpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5kYlNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAuZGVsZXRlQnlLZXkoJ291dGJvdW5kJywgbWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBY3RpdmVDb25uZWN0OiBVbmFibGUgdG8gZGVsZXRlIGNhY2hlZCBkYXRhJyk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnQWN0aXZlQ29ubmVjdDogQ2FjaGluZyBub3QgcG9zc2libGUgYXMgdGhlIGluZGV4ZWREQiBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoc29ydEJ5ICYmIGRhdGEpIGRhdGEgPSBkYXRhLnNvcnQoc29ydEJ5KTtcclxuICAgICAgICAgIHRhcmdldC5fX19yZWNlaXZlZFtwcm9wZXJ0eUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gZGF0YTtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKGNhY2hlZCAmJiBzcGVjaWZpY0hhc2gpIHtcclxuICAgICAgICAgICAgaWYgKF90aGlzLmRiU2VydmljZSkge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC51cGRhdGUoJ291dGJvdW5kJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljSGFzaCxcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge30pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBY3RpdmVDb25uZWN0OiBVbmFibGUgdG8gdXBkYXRlIGNhY2hlZCBkYXRhJyk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLmRiU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxldGVCeUtleSgnb3V0Ym91bmQnLCBtZXRob2QpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGl2ZUNvbm5lY3Q6IFVuYWJsZSB0byB1cGRhdGUgY2FjaGVkIGRhdGEnKTtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICdBY3RpdmVDb25uZWN0OiBDYWNoaW5nIG5vdCBwb3NzaWJsZSBhcyB0aGUgaW5kZXhlZERCIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHJlcXVlc3RpbmdSZXF1aXJlZCkge1xyXG4gICAgICBXZWJzb2NrZXRDbGllbnQuYWRkUmVzZXRSZXF1ZXN0aW5nU3RhdGVDYWxsYmFjayhmdW5jdGlvbiBjYWxsYmFjaygpIHtcclxuICAgICAgICBpZiAodGFyZ2V0Ll9fX3JlcXVlc3RlZCkge1xyXG4gICAgICAgICAgdGFyZ2V0Ll9fX3JlcXVlc3RlZFtwcm9wZXJ0eUtleV0gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fcmVxdWVzdGVkKSB0YXJnZXQuX19fcmVxdWVzdGVkID0ge307XHJcbiAgICAgICAgaWYgKHJlcXVlc3RpbmdSZXF1aXJlZCAmJiAhdGFyZ2V0Ll9fX3JlcXVlc3RlZFtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgIHRhcmdldC5fX19yZXF1ZXN0ZWRbcHJvcGVydHlLZXldID0gdHJ1ZTtcclxuICAgICAgICAgICh0aGlzIGFzIGFueSkuc2VuZCgncmVxdWVzdC4nICsgbWV0aG9kLCBudWxsKS50aGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGFyZ2V0Ll9fX2RhdGEpIHRhcmdldC5fX19kYXRhID0ge307XHJcbiAgICAgICAgaWYgKCF0YXJnZXQuX19fZGF0YVtwcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgdHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQubG9hZGluZ1twcm9wZXJ0eUtleV0pIHtcclxuICAgICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsOiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRhcmdldC5fX19kYXRhKSB0YXJnZXQuX19fZGF0YSA9IHt9O1xyXG4gICAgICAgIHRhcmdldC5sb2FkaW5nLnNldChwcm9wZXJ0eUtleSwgZmFsc2UpO1xyXG4gICAgICAgIGlmIChzb3J0QnkgJiYgdmFsKSB2YWwgPSB2YWwuc29ydChzb3J0QnkpO1xyXG4gICAgICAgIHJldHVybiAodGFyZ2V0Ll9fX2RhdGFbcHJvcGVydHlLZXldID0gdmFsKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0YXJnZXRbcHJvcGVydHlLZXldID0gb2JqO1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -12,7 +12,12 @@ export function Route(method, loadingKey, dontEnsureTransmission) {
|
|
|
12
12
|
const promise = original.bind(this)(...data);
|
|
13
13
|
let res = null;
|
|
14
14
|
if (this.client) {
|
|
15
|
-
res = await this.client
|
|
15
|
+
res = await this.client
|
|
16
|
+
.send(method, data[0], dontEnsureTransmission)
|
|
17
|
+
?.catch(() => {
|
|
18
|
+
if (loadingKey)
|
|
19
|
+
this.loadingElements[loadingKey]--;
|
|
20
|
+
});
|
|
16
21
|
}
|
|
17
22
|
await promise;
|
|
18
23
|
if (loadingKey)
|
|
@@ -22,4 +27,4 @@ export function Route(method, loadingKey, dontEnsureTransmission) {
|
|
|
22
27
|
return target;
|
|
23
28
|
};
|
|
24
29
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY3RpdmUtY29ubmVjdC1uZzIvc3JjL2xpYi93ZWJzb2NrZXQvZGVjb3JhdG9ycy93ZWJzb2NrZXQvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEtBQUssQ0FDbkIsTUFBYyxFQUNkLFVBQW1CLEVBQ25CLHNCQUFnQztJQUVoQyxPQUFPLFNBQVMsTUFBTSxDQUFDLE1BQVcsRUFBRSxXQUFtQjtRQUNyRCxvQkFBb0I7UUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLFVBQVUsU0FBUyxDQUFDLEdBQUcsSUFBUztZQUN6RCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQzthQUNwQztZQUNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU07cUJBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO29CQUM5QyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ1gsSUFBSSxVQUFVO3dCQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELE1BQU0sT0FBTyxDQUFDO1lBQ2QsSUFBSSxVQUFVO2dCQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gUm91dGUoXHJcbiAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgbG9hZGluZ0tleT86IHN0cmluZyxcclxuICBkb250RW5zdXJlVHJhbnNtaXNzaW9uPzogYm9vbGVhblxyXG4pIHtcclxuICByZXR1cm4gZnVuY3Rpb24gX1JvdXRlKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogYW55IHtcclxuICAgIC8vIG1ldGhvZCBhbm5vdGF0aW9uXHJcbiAgICBjb25zdCBvcmlnaW5hbCA9IHRhcmdldFtwcm9wZXJ0eUtleV07XHJcbiAgICB0YXJnZXRbcHJvcGVydHlLZXldID0gYXN5bmMgZnVuY3Rpb24gZXhlY1JvdXRlKC4uLmRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgIGlmIChsb2FkaW5nS2V5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmdFbGVtZW50c1tsb2FkaW5nS2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nRWxlbWVudHNbbG9hZGluZ0tleV0gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRpbmdFbGVtZW50c1tsb2FkaW5nS2V5XSsrO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHByb21pc2UgPSBvcmlnaW5hbC5iaW5kKHRoaXMpKC4uLmRhdGEpO1xyXG4gICAgICBsZXQgcmVzID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuY2xpZW50KSB7XHJcbiAgICAgICAgcmVzID0gYXdhaXQgdGhpcy5jbGllbnRcclxuICAgICAgICAgIC5zZW5kKG1ldGhvZCwgZGF0YVswXSwgZG9udEVuc3VyZVRyYW5zbWlzc2lvbilcclxuICAgICAgICAgID8uY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobG9hZGluZ0tleSkgdGhpcy5sb2FkaW5nRWxlbWVudHNbbG9hZGluZ0tleV0tLTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHByb21pc2U7XHJcbiAgICAgIGlmIChsb2FkaW5nS2V5KSB0aGlzLmxvYWRpbmdFbGVtZW50c1tsb2FkaW5nS2V5XS0tO1xyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgfTtcclxufVxyXG4iXX0=
|