@magic-xpa/engine 4.801.0-dev481.242 → 4.801.0-dev481.243
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/bundles/magic-xpa-engine.umd.js +45 -45
- package/bundles/magic-xpa-engine.umd.js.map +1 -1
- package/bundles/magic-xpa-engine.umd.min.js +2 -2
- package/bundles/magic-xpa-engine.umd.min.js.map +1 -1
- package/esm2015/src/CommandsProcessorBase.js +2 -2
- package/esm2015/src/CurrentClientVersion.js +2 -2
- package/esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js +2 -3
- package/esm2015/src/data/DataView.js +2 -3
- package/esm2015/src/data/Field.js +2 -3
- package/esm2015/src/data/Record.js +2 -3
- package/esm2015/src/env/LanguageData.js +2 -3
- package/esm2015/src/event/EventHandler.js +2 -3
- package/esm2015/src/event/EventHandlerPosition.js +2 -2
- package/esm2015/src/event/EventsManager.js +2 -3
- package/esm2015/src/exp/ExpressionEvaluator.js +2 -3
- package/esm2015/src/gui/MgForm.js +2 -3
- package/esm2015/src/http/client/HttpClientBase.js +2 -3
- package/esm2015/src/remote/RemoteCommandsProcessor.js +2 -3
- package/esm2015/src/remote/ServerError.js +2 -3
- package/esm2015/src/rt/DataviewHeadersSaxHandler.js +2 -3
- package/esm2015/src/tasks/Task.js +2 -3
- package/fesm2015/magic-xpa-engine.js +2 -3
- package/fesm2015/magic-xpa-engine.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { NString, RefParam, StringBuilder } from "@magic-xpa/mscorelib";
|
|
2
|
+
import { NString, RefParam, StringBuilder, isNullOrUndefined } from "@magic-xpa/mscorelib";
|
|
3
3
|
import { Logger, Logger_LogLevels, Logger_MessageDirection, Misc } from "@magic-xpa/utils";
|
|
4
|
-
import { isNullOrUndefined } from "util";
|
|
5
4
|
import { HttpClientEvents } from "./HttpClientEvents";
|
|
6
5
|
import { HttpHeaders } from "@angular/common/http";
|
|
7
6
|
const HTTP_EXPECT100CONTINUE = "Expect100Continue";
|
|
@@ -145,4 +144,4 @@ export class HttpClientBase {
|
|
|
145
144
|
return result;
|
|
146
145
|
}
|
|
147
146
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXpGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFHL0QsTUFBTSxzQkFBc0IsR0FBVyxtQkFBbUIsQ0FBQztBQUMzRCxNQUFNLDZCQUE2QixHQUFXLDRCQUE0QixDQUFDO0FBRTNFLE1BQU0sQ0FBTixJQUFZLGFBU1g7QUFURCxXQUFZLGFBQWE7SUFFdkIsK0NBQU8sQ0FBQTtJQUNQLGlEQUFRLENBQUE7SUFDUiwrQ0FBTyxDQUFBO0lBQ1AscURBQVUsQ0FBQTtJQUNWLHVEQUFXLENBQUE7SUFDWCxpREFBUSxDQUFBO0lBQ1IsbURBQVMsQ0FBQTtBQUNYLENBQUMsRUFUVyxhQUFhLEtBQWIsYUFBYSxRQVN4QjtBQVVELE1BQU0sT0FBZ0IsY0FBYztJQVVsQztRQVRRLHNCQUFpQixHQUFXLElBQUksQ0FBQztRQU96QyxpQ0FBNEIsR0FBa0MsSUFBSSxDQUFDO1FBR2pFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQU9PLHFCQUFxQixDQUFDLGNBQXNCLEVBQUUsVUFBNEI7UUFDaEYsSUFBSSxNQUFNLEdBQWtCLGFBQWEsQ0FBQyxHQUFHLENB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Qyx3QkFBd0I7UUFDckMsSUFBSSxNQUFNLEdBQVksSUFBSSxDQUFDO1FBQzNCLElBQUksaUJBQWlCLEdBQVcsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUc5RixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQyxNQUFNLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVyRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBS08sTUFBTSxDQUFDLDZCQUE2QjtRQUMxQyxJQUFJLE1BQU0sR0FBWSxLQUFLLENBQUM7UUFDNUIsSUFBSSxpQkFBaUIsR0FBVyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBR3JHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1lBQzNDLE1BQU0sR0FBRyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRXJELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FXRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TlN0cmluZywgUmVmUGFyYW0sIFN0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyX0xvZ0xldmVscywgTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24sIE1pc2N9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXJ9IGZyb20gXCIuL0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJ1dGlsXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSBcIi4vSHR0cENsaWVudEV2ZW50c1wiO1xyXG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuLy8gZXhlY3V0aW9uIHByb3BlcnRpZXNcclxuY29uc3QgSFRUUF9FWFBFQ1QxMDBDT05USU5VRTogc3RyaW5nID0gXCJFeHBlY3QxMDBDb250aW51ZVwiOyAvLyBBZGQgSFRUUCBoZWFkZXIgXCJFeHBlY3Q6MTAwQ29udGludWVcIlxyXG5jb25zdCBVU0VfSElHSEVTVF9TRUNVUklUWV9QUk9UT0NPTDogc3RyaW5nID0gXCJVc2VIaWdoZXN0U2VjdXJpdHlQcm90b2NvbFwiOyAvLyBUaGlzIHByb3BlcnR5IGRlY2lkZXMgdG8gdXNlIFRMUyB2MS4yIChpbXBsZW1lbnRlZCBhdCAuTkVUIHY0LjUpIG9yIFRMUyB2MS4wXHJcblxyXG5leHBvcnQgZW51bSBSZXF1ZXN0TWV0aG9kXHJcbntcclxuICBHZXQgPSAwLFxyXG4gIFBvc3QgPSAxLFxyXG4gIFB1dCA9IDIsXHJcbiAgRGVsZXRlID0gMyxcclxuICBPcHRpb25zID0gNCxcclxuICBIZWFkID0gNSxcclxuICBQYXRjaCA9IDZcclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gdGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3I6XHJcbi8vLyAgICAoaSkgZGVjaWRpbmcgd2hpY2ggbWV0aG9kIHRvIHVzZSAoR0VUL1BPU1QpLlxyXG4vLy8gICAoaWkpIGhhbmRsaW5nIGNvbW11bmljYXRpb24gZmFpbHVyZXMuXHJcbi8vLyAgKGlpaSkgYWRkaW5nIEhUVFAgaGVhZGVycyB0byByZXF1ZXN0cy5cclxuLy8vICAoaVYpIHJldHJpZXZpbmcgSFRUUCBoZWFkZXJzIGZyb20gcmVzcG9uc2VzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEh0dHBDbGllbnRCYXNlIHtcclxuICBwcml2YXRlIF9IVFRQTWF4VVJMTGVuZ3RoOiBudW1iZXIgPSAyMDQ4O1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgb3Igc2V0cyBhIGhhbmRsZXIgZm9yIGNvbW11bmljYXRpb25zIGZhaWx1cmUuIFRoaXMgcHJvcGVydHkgbWF5IGJlXHJcbiAgLy8vIHNldCB0byBudWxsLCBpbiB3aGljaCBjYXNlIHRoZSBIdHRwQ2xpZW50QmFzZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbCBhZnRlclxyXG4gIC8vLyB0aGUgZmlyc3QgcmVjb25uZWN0aW9uIGF0dGVtcHQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyOiBJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5Db21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0aGUgcmVxdWVzdCBtZXRob2QgKFBPU1Qgb3IgR0VUKSBiYXNlZCBvbiBpdHMgY29udGVudHMgYW5kIGxlbmd0aC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlcXVlc3RVUkxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBEZWNpZGVPblJlcXVlc3RNZXRob2QocmVxdWVzdENvbnRlbnQ6IHN0cmluZywgcmVxdWVzdFVSTDogUmVmUGFyYW08c3RyaW5nPik6IFJlcXVlc3RNZXRob2Qge1xyXG4gICAgbGV0IG1ldGhvZDogUmVxdWVzdE1ldGhvZCA9IFJlcXVlc3RNZXRob2QuR2V0O1xyXG5cclxuICAgIGlmIChyZXF1ZXN0Q29udGVudCA9PT0gbnVsbCkge1xyXG4gICAgICAvLyByZXF1ZXN0Q29udGVudCAoPT0gY29udGVudCB0byBiZSBzZW50IHRvIHNlcnZlcikgaXMgYWxsb3dlZCBvbmx5IGluIFBPU1QgcmVxdWVzdHMuIEluIGNhc2Ugbm8gY29udGVudCBpcyByZXF1aXJlZCwgb3B0IGZvciBHRVQgKGZvciB0aGUgYWZvcmVtZW50aW9uZWQgcGVyZm9ybWFuY2UgcmVhc29uKS5cclxuICAgICAgbWV0aG9kID0gUmVxdWVzdE1ldGhvZC5HZXQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHJlcXVlc3RVUkwudmFsdWUubGVuZ3RoICsgMSArIHJlcXVlc3RDb250ZW50Lmxlbmd0aCA8PSB0aGlzLl9IVFRQTWF4VVJMTGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gYXBwZW5kIHRoZSByZXF1ZXN0IGNvbnRlbnQgdG8gdGhlIFVSTCwgYW5kIHN3aXRjaCB0byB1c2luZyBhIEdFVCByZXF1ZXN0LlxyXG4gICAgICAgIHJlcXVlc3RVUkwudmFsdWUgPSByZXF1ZXN0VVJMLnZhbHVlICsgXCI/XCIgKyByZXF1ZXN0Q29udGVudDtcclxuICAgICAgICBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLkdldDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLlBvc3Q7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWV0aG9kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PkdldHMgY29udGVudHMgb2YgYSBVUkwsIHVzaW5nIGVpdGhlciBHRVQgb3IgUE9TVCBtZXRob2RzLlxyXG4gIC8vLyBUaGUgbWV0aG9kIGV4ZWN1dGVzIHRoZSBIVFRQIHJlcXVlc3QsIHJlYWRzIHRoZSByZXNwb25zZSBhbmQgcmV0dXJuIHRoZSBjb250ZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdFVSTFwiPlVSTCB0byBiZSBhY2Nlc3NlZC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlcXVlc3RDb250ZW50XCI+Y29udGVudCB0byBiZSBzZW50IHRvIHNlcnZlciAocmVsZXZhbnQgb25seSBmb3IgUE9TVCBtZXRob2QgLSBpcyBudWxsIGZvciBvdGhlciBtZXRob2RzKS48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5yZXNwb25zZSAoZnJvbSB0aGUgc2VydmVyKS48L3JldHVybnM+XHJcbiAgYXN5bmMgR2V0Q29udGVudChyZXF1ZXN0VVJMOiBzdHJpbmcsIHJlcXVlc3RDb250ZW50OiBhbnksIHVzZUNhY2hlOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGxldCBjb250ZW50RnJvbVNlcnZlcjogUmVmUGFyYW08c3RyaW5nPiA9IG5ldyBSZWZQYXJhbShudWxsKTtcclxuICAgIGxldCByZXF1ZXN0VXJsUmVmOiBSZWZQYXJhbTxzdHJpbmc+ID0gbmV3IFJlZlBhcmFtKHJlcXVlc3RVUkwpO1xyXG5cclxuICAgIGxldCBodHRwTWV0aG9kOiBSZXF1ZXN0TWV0aG9kID0gdGhpcy5EZWNpZGVPblJlcXVlc3RNZXRob2QocmVxdWVzdENvbnRlbnQsIHJlcXVlc3RVcmxSZWYpO1xyXG4gICAgcmVxdWVzdFVSTCA9IHJlcXVlc3RVcmxSZWYudmFsdWU7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gRXhlY3V0ZSB0aGUgaHR0cCByZXF1ZXN0XHJcbiAgICAgIGxldCByZXNwb25zZTogSHR0cFJlc3BvbnNlPHN0cmluZz4gPSBhd2FpdCB0aGlzLkV4ZWN1dGVIdHRwUmVxdWVzdChyZXF1ZXN0VVJMLCByZXF1ZXN0Q29udGVudCwgdXNlQ2FjaGUsIGh0dHBNZXRob2QsIGNvbnRlbnRGcm9tU2VydmVyKTtcclxuXHJcbiAgICAgIGlmKHJlc3BvbnNlICE9IG51bGwpIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhcIkluY29taW5nIEhlYWRlcnMgOiBcIiArIEh0dHBDbGllbnRCYXNlLkhlYWRlcnNUb1N0cmluZyhyZXNwb25zZS5oZWFkZXJzLCB0cnVlKSk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aGUgbmV4dCBzZXNzaW9uIGNvdW50ZXIgKHdoaWNoIHdpbGwgYmUgZXhwZWN0ZWQgYnkgdGhlIHNlcnZlciBpbiB0aGUgbmV4dCByZXF1ZXN0KS5cclxuICAgICAgICBsZXQgbmV4dFNlc3Npb25Db3VudGVyU3RyaW5nOiBzdHJpbmcgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIk1neHBhTmV4dFNlc3Npb25Db3VudGVyXCIudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChuZXh0U2Vzc2lvbkNvdW50ZXJTdHJpbmcpKSB7XHJcbiAgICAgICAgICBIdHRwQ2xpZW50RXZlbnRzLkNoZWNrQW5kU2V0U2Vzc2lvbkNvdW50ZXIoK25leHRTZXNzaW9uQ291bnRlclN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlV2FybmluZ1RvTG9nKGV4KTtcclxuICAgICAgdGhyb3cgZXg7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRGcm9tU2VydmVyLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlRoaXMgZnVuY3Rpb24gZXhlY3V0ZXMgdGhlIEhUVFAgcmVxdWVzdCBhbmQgbWFrZSB0aGUgcmVzcG9uc2Ugb2JqZWN0LiBJdCBjYW4gZXhlY3V0ZVxyXG4gIC8vLyAgIEdFVCBvciBQT1NUIHJlcXVlc3QuIEluIGNhc2Ugb2YgUE9TVCByZXF1ZXN0IHRoZSB2YXJpYWJsZXMgdG8gc2VydmVyIHdpbGwgY29udGFpbiB0aGVcclxuICAvLy8gICB2YXJpYWJsZXMgdG8gYmUgc2VuZCB0byB0aGUgc2VydmVyLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXJsU3RyaW5nXCI+VVJMIHRvIGJlIGFjY2Vzc2VkLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdENvbnRlbnRcIj5jb250ZW50IHRvIGJlIHNlbnQgdG8gc2VydmVyIChyZWxldmFudCBvbmx5IGZvciBQT1NUIG1ldGhvZCAtIGlzIG51bGwgZm9yIG90aGVyIG1ldGhvZHMpLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaHR0cE1ldGhvZFwiPmVudW0gUmVxdWVzdE1ldGhvZCB0byBzcGVjaWZ5IHRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgcmVxdWVzdC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRGcm9tU2VydmVyXCI+Y29udGVudCByZWNlaXZlZCBmcm9tIHRoZSByZXNwb25zZS4gW09VVF08L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBhc3luYyBFeGVjdXRlSHR0cFJlcXVlc3QodXJsU3RyaW5nOiBzdHJpbmcsIHJlcXVlc3RDb250ZW50OiBzdHJpbmcsIHVzZUNhY2hlOiBib29sZWFuLCBodHRwTWV0aG9kOiBSZXF1ZXN0TWV0aG9kLCBjb250ZW50RnJvbVNlcnZlcjogUmVmUGFyYW08YW55Pik6IFByb21pc2U8SHR0cFJlc3BvbnNlPHN0cmluZz4+XHJcbiAge1xyXG4gICAgbGV0IGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlPHN0cmluZz4gPSBudWxsO1xyXG5cclxuICAgIHRoaXMucHJlcGFyZVJlcXVlc3QoKTtcclxuXHJcbiAgICBsZXQgaHR0cENvbW11bmljYXRpb25UaW1lb3V0TVM6IG51bWJlciA9IEh0dHBDbGllbnRFdmVudHMuR2V0SHR0cENvbW11bmljYXRpb25UaW1lb3V0KCk7XHJcbiAgICBsZXQgY2xpZW50SUQ6IHN0cmluZyA9IEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk7XHJcblxyXG4gICAgbGV0IGV4ZWN1dGlvbkF0dGVtcHRzOiBudW1iZXIgPSAwOyAgLy8gZm9yIGxvZ2dpbmcgcHVycG9zZSBvbmx5LlxyXG5cclxuICAgIGxldCBzdGFydFRpbWU6IG51bWJlciA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcblxyXG4gICAgLy8gUmV0cnlpbmc6XHJcbiAgICAvLyAgICBJcyBjb250cm9sbGVkIGJ5OlxyXG4gICAgLy8gICAgICAgKEkpICBUaGUgbWV0aG9kIHZhcmlhYmxlICdodHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUycgKGFib3ZlKSxcclxuICAgIC8vICAgICAgIChJSSkgVGhlIGNsYXNzIG1lbWJlciAnQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcicgKGFib3ZlKS5cclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgIGV4ZWN1dGlvbkF0dGVtcHRzKys7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudCBUTFMgcHJvdG9jb2wuXHJcbiAgICAgICAgLy8gbGV0IHVzZUhpZ2hlc3RTZWN1cml0eVByb3RvY29sOiBib29sZWFuID0gSHR0cENsaWVudEJhc2UuR2V0VXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2woKTtcclxuICAgICAgICAvLyBpZiAodXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2wpIHtcclxuICAgICAgICAvLyAgIFNlcnZpY2VQb2ludE1hbmFnZXIuU2VjdXJpdHlQcm90b2NvbCA9IFNlY3VyaXR5UHJvdG9jb2xUeXBlLlRsczEyO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gRG8gbm90IGFkZCBNZ3hwYVJJQWdsb2JhbFVuaXF1ZVNlc3Npb25JRCB3aGlsZSBnZXR0aW5nIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzXHJcbiAgICAgICAgLy8gVE9ETzogaGVhZGVycyBzaG91bGQgbm90IGJlIHNlbnQgZm9yIGNhY2hlZCBmaWxlIHJlcXVlc3RzXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cclxuICAgICAgICBodHRwSGVhZGVycyA9IHRoaXMuYWRkSGVhZGVycyh1cmxTdHJpbmcsIHVzZUNhY2hlLCBodHRwSGVhZGVycywgY2xpZW50SUQpO1xyXG5cclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlJlcXVlc3QgVGltZW91dCBzZXQgdG8gezB9IG1zXCIsIGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TKSk7XHJcblxyXG4gICAgICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuTG9nTGV2ZWwgPT09IExvZ2dlcl9Mb2dMZXZlbHMuQmFzaWMpIHtcclxuICAgICAgICAgIGxldCBjb250ZW50TGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gICAgICAgICAgaWYgKGh0dHBNZXRob2QgPT09IFJlcXVlc3RNZXRob2QuR2V0KSB7XHJcbiAgICAgICAgICAgIGxldCBwYXJ0czogc3RyaW5nW10gPSB1cmxTdHJpbmcuc3BsaXQoJz8nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpXHJcbiAgICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHBhcnRzWzFdLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgLy8gKGh0dHBSZXF1ZXN0Lm1ldGhvZCA9PT0gUmVxdWVzdE1ldGhvZC5Qb3N0KVxyXG4gICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gcmVxdWVzdENvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUJhc2ljVG9Mb2coTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24uTWVzc2FnZUxlYXZpbmcsXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEKCksXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuR2V0U2Vzc2lvbkNvdW50ZXIoKSxcclxuICAgICAgICAgICAgY2xpZW50SUQsXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcigpID8gXCItXCIgOiBuZXcgVVJMKHVybFN0cmluZykuaG9zdCxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgJy0nLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShodHRwSGVhZGVycyksXHJcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRpbWVCZWZvcmVSZXF1ZXN0OiBudW1iZXIgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiQWNjZXNzaW5nIChtZXRob2Q6ICd7MH0nKTogJ3sxfSdcIiwgaHR0cE1ldGhvZCwgdXJsU3RyaW5nKSk7XHJcblxyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKFwiT3V0Z29pbmcgSGVhZGVycyA6IFwiICsgSHR0cENsaWVudEJhc2UuSGVhZGVyc1RvU3RyaW5nKGh0dHBIZWFkZXJzLCBmYWxzZSkpO1xyXG5cclxuICAgICAgICBpZiAoaHR0cE1ldGhvZCA9PT0gUmVxdWVzdE1ldGhvZC5Qb3N0KSB7XHJcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgRXhwZWN0MTAwQ29udGludWUuXHJcbiAgICAgICAgICAvLyBodHRwV2ViUmVxdWVzdC5TZXJ2aWNlUG9pbnQuRXhwZWN0MTAwQ29udGludWUgPSB0aGlzLkdldEhUVFBFeHBlY3QxMDBDb250aW51ZSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5Xcml0ZUNvbnRlbnRUb1JlcXVlc3QocmVxdWVzdENvbnRlbnQsIGh0dHBXZWJSZXF1ZXN0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgICAvLyBzZW5kIHRoZSByZXF1ZXN0ICYgZ2V0IHRoZSByZXNwb25zZTpcclxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgICAgLy8gVE9ETyA6IEhhbmRsZSBlcnJvcnNcclxuICAgICAgICAvLyBUT0RPOiBIYW5kbGUgdGltZW91dFxyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdFRpbWU6bnVtYmVyID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2dSZXF1ZXN0SW5mbyghaXNOdWxsT3JVbmRlZmluZWQocmVxdWVzdENvbnRlbnQpID8gcmVxdWVzdENvbnRlbnQubGVuZ3RoIDogMCwgcmVxdWVzdFRpbWUsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZW5kUmVxdWVzdFRvU2VydmVyKGh0dHBNZXRob2QsIHVybFN0cmluZywgaHR0cEhlYWRlcnMsIHJlcXVlc3RDb250ZW50LCBjb250ZW50RnJvbVNlcnZlcik7XHJcblxyXG4gICAgICAgIHRoaXMubG9nUmVzcG9uc2UoaHR0cFJlc3BvbnNlLCBjbGllbnRJRCwgdXJsU3RyaW5nLCBjb250ZW50RnJvbVNlcnZlciwgdGltZUJlZm9yZVJlcXVlc3QpO1xyXG5cclxuICAgICAgICB0aGlzLkxvZ1JlcXVlc3RJbmZvKCFpc051bGxPclVuZGVmaW5lZChyZXF1ZXN0Q29udGVudCkgPyByZXF1ZXN0Q29udGVudC5sZW5ndGggOiAwLCBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpIC0gcmVxdWVzdFRpbWUsIHRydWUpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLkxvZ0xldmVsID09PSBMb2dnZXJfTG9nTGV2ZWxzLkJhc2ljKVxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlQmFzaWNFcnJvclRvTG9nKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlV2FybmluZ1RvTG9nKGV4KTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVIdHRwRXJyb3JFeGNlcHRpb24oZXgsIHVybFN0cmluZyk7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVSZWY6IFJlZlBhcmFtPG51bWJlcj4gPSBuZXcgUmVmUGFyYW08bnVtYmVyPihzdGFydFRpbWUpO1xyXG4gICAgICAgIGlmKHRoaXMuc2hvdWxkUmV0cnkoaHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMsIHVybFN0cmluZywgdGhpcy5Db21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyLCBleCwgc3RhcnRUaW1lUmVmKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzdGFydFRpbWUgPSBzdGFydFRpbWVSZWYudmFsdWU7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nQW5kVGhyb3dFeGNlcHRpb24oZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2dFeGVjdXRpb25BdHRlbXB0cyhleGVjdXRpb25BdHRlbXB0cyk7XHJcblxyXG4gICAgcmV0dXJuIGh0dHBSZXNwb25zZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gTG9nIHRoZSByZXF1ZXN0IGluZm8gd2hpbGUgc2VuZGluZyByZXF1ZXN0L2FmdGVyIHJlY2VpdmluZyByZXNwb25zZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBMb2dSZXF1ZXN0SW5mbyhjb250ZW50TGVuZ3RoOiBudW1iZXIsIHJvdW5kVHJpcDogbnVtYmVyLCBpc0xvZ2dpbmdSZXNwb25zZTogYm9vbGVhbikge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5Mb2dMZXZlbCA9PSBMb2dnZXJfTG9nTGV2ZWxzLlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgIEh0dHBDbGllbnRFdmVudHMuQ29tcHV0ZUFuZExvZ1JlcXVlc3RJbmZvKGNvbnRlbnRMZW5ndGgsIHJvdW5kVHJpcCwgaXNMb2dnaW5nUmVzcG9uc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PldyaXRlIE1nKiBwcmVmaXhlZCBoZWFkZXJzIHRvIHN0cmluZyBpbiBmb3JtYXQgXCJIRUFERVIxOlZBTFVFMSBIRUFERVIyOlZBTFVFMiAuLi5cIjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZWFkZXJzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJiRmlsdGVyXCI+aWYgdHJ1ZSwgbGlzdCBvbmx5IGhlYWRlcnMgcHJlZml4ZWQgd2l0aCBcIk1nXCI8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIEhlYWRlcnNUb1N0cmluZyhoZWFkZXJzOiBIdHRwSGVhZGVycywgYkZpbHRlcjogYm9vbGVhbik6IFN0cmluZ0J1aWxkZXIge1xyXG4gICAgbGV0IGhlYWRlcnNTdHI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgbGV0IGhlYWRlcktleXM6IHN0cmluZ1tdID0gaGVhZGVycy5rZXlzKCk7XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIGhlYWRlcktleXMpIHtcclxuICAgICAgLy8gZmlsdGVyIG9ubHkgaGVhZGVycyB0aGF0IGFyZSBwcmVmaXhlZCB3aXRoIE1nKiAoc2VudCBmcm9tIHRoZSBNaWRkbGV3YXJlIGFuZCBTZXJ2ZXIpOlxyXG4gICAgICBpZiAoIWJGaWx0ZXIgfHwgaGVhZGVyS2V5c1trZXldLnN0YXJ0c1dpdGgoXCJNZ1wiKSlcclxuICAgICAgICBoZWFkZXJzU3RyLkFwcGVuZChOU3RyaW5nLkZvcm1hdChcInswfTp7MX0gXCIsIGhlYWRlcktleXNba2V5XSwgaGVhZGVycy5nZXQoaGVhZGVyS2V5c1trZXldKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBoZWFkZXJzU3RyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlJldHVybiB0aGUgcHJvcGVydHkgd2hpY2ggZGVjaWRlIHdoZXRoZXIgdG8gc2V0IEhUVFAgaGVhZGVyIFwiRXhwZWN0OjEwMENvbnRpbnVlXCI8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmJvb2w8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0SFRUUEV4cGVjdDEwMENvbnRpbnVlKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgZXhlY3V0aW9uUHJvcGVydHk6IHN0cmluZyA9IEh0dHBDbGllbnRFdmVudHMuR2V0RXhlY3V0aW9uUHJvcGVydHkoSFRUUF9FWFBFQ1QxMDBDT05USU5VRSk7XHJcblxyXG4gICAgLy8gSW4gY2FzZSB0aGUgcHJvcGVydHkgaXMgbm90IGdpdmVuIGluIHRoZSBleGVjdXRpb24gcHJvcGVydGllcywgaXQgc2hvdWxkIGRlZmF1bHQgdG8gdHJ1ZVxyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoZXhlY3V0aW9uUHJvcGVydHkpKVxyXG4gICAgICByZXN1bHQgPSAoZXhlY3V0aW9uUHJvcGVydHkudG9VcHBlckNhc2UoKSA9PT0gXCJZXCIpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+UmV0dXJuIHRoZSBwcm9wZXJ0eSB3aGljaCBhbGxvd3MgdG8gdXNlIFRMUyB2MS4yIChpbXBsZW1lbnRlZCBhdCAuTkVUIHY0LjUpIGFzIGEgaGlnaGVzdCBUTFMgcHJvdG9jb2wgdmVyc2lvbi5cclxuICAvLy8gT3RoZXJ3aXNlIHVzZSBUTFMgdjEuMCBhcyBhIGhpZ2hlc3QgVExTIHByb3RvY29sIHZlcnNpb248L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmJvb2w8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0VXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2woKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgZXhlY3V0aW9uUHJvcGVydHk6IHN0cmluZyA9IEh0dHBDbGllbnRFdmVudHMuR2V0RXhlY3V0aW9uUHJvcGVydHkoVVNFX0hJR0hFU1RfU0VDVVJJVFlfUFJPVE9DT0wpO1xyXG5cclxuICAgIC8vIEluIGNhc2UgdGhlIHByb3BlcnR5IGlzIG5vdCBnaXZlbiBpbiB0aGUgZXhlY3V0aW9uIHByb3BlcnRpZXMsIGl0IHNob3VsZCBkZWZhdWx0IHRvIGZhbHNlIChhIGhpZ2hlc3QgVExTIHByb3RvY29sIHZlcnNpb24gaXMgdjEuMClcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KGV4ZWN1dGlvblByb3BlcnR5KSlcclxuICAgICAgcmVzdWx0ID0gKGV4ZWN1dGlvblByb3BlcnR5LnRvVXBwZXJDYXNlKCkgPT09IFwiWVwiKTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8gQWJzdHJhY3QgbWV0aG9kc1xyXG4gIGFic3RyYWN0IHByZXBhcmVSZXF1ZXN0KCk7XHJcbiAgYWJzdHJhY3QgYWRkSGVhZGVycyh1cmxTdHJpbmc6IHN0cmluZywgdXNlQ2FjaGU6IGJvb2xlYW4sIGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycywgY2xpZW50SUQ6IHN0cmluZyk6IEh0dHBIZWFkZXJzO1xyXG4gIGFic3RyYWN0IGFzeW5jIHNlbmRSZXF1ZXN0VG9TZXJ2ZXIoaHR0cE1ldGhvZDogUmVxdWVzdE1ldGhvZCwgdXJsU3RyaW5nOiBzdHJpbmcsIGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycywgcmVxdWVzdENvbnRlbnQ6IHN0cmluZywgY29udGVudEZyb21TZXJ2ZXI6IFJlZlBhcmFtPHN0cmluZz4pOiBQcm9taXNlPGFueT47XHJcbiAgYWJzdHJhY3QgbG9nUmVzcG9uc2UoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPiwgY2xpZW50SUQ6IHN0cmluZywgdXJsU3RyaW5nOiBzdHJpbmcsIGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxhbnk+LCB0aW1lQmVmb3JlUmVxdWVzdDogbnVtYmVyKTtcclxuICBhYnN0cmFjdCBoYW5kbGVIdHRwRXJyb3JFeGNlcHRpb24oZXg6IGFueSwgdXJsU3RyaW5nOiBzdHJpbmcpO1xyXG4gIGFic3RyYWN0IGFzeW5jIHNob3VsZFJldHJ5KGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TOiBudW1iZXIsIHVybFN0cmluZzogc3RyaW5nLCBjb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyOiBJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciwgZXg6IGFueSwgc3RhcnRUaW1lUmVmOiBSZWZQYXJhbTxudW1iZXI+KTtcclxuICBhYnN0cmFjdCBsb2dBbmRUaHJvd0V4Y2VwdGlvbihleDogYW55KTtcclxuICBhYnN0cmFjdCBsb2dFeGVjdXRpb25BdHRlbXB0cyhleGVjdXRpb25BdHRlbXB0czogbnVtYmVyKTtcclxufVxyXG4iXX0=
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cENsaWVudEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXpGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUcvRCxNQUFNLHNCQUFzQixHQUFXLG1CQUFtQixDQUFDO0FBQzNELE1BQU0sNkJBQTZCLEdBQVcsNEJBQTRCLENBQUM7QUFFM0UsTUFBTSxDQUFOLElBQVksYUFTWDtBQVRELFdBQVksYUFBYTtJQUV2QiwrQ0FBTyxDQUFBO0lBQ1AsaURBQVEsQ0FBQTtJQUNSLCtDQUFPLENBQUE7SUFDUCxxREFBVSxDQUFBO0lBQ1YsdURBQVcsQ0FBQTtJQUNYLGlEQUFRLENBQUE7SUFDUixtREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQVRXLGFBQWEsS0FBYixhQUFhLFFBU3hCO0FBVUQsTUFBTSxPQUFnQixjQUFjO0lBVWxDO1FBVFEsc0JBQWlCLEdBQVcsSUFBSSxDQUFDO1FBT3pDLGlDQUE0QixHQUFrQyxJQUFJLENBQUM7UUFHakUsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztJQUMzQyxDQUFDO0lBT08scUJBQXFCLENBQUMsY0FBc0IsRUFBRSxVQUE0QjtRQUNoRixJQUFJLE1BQU0sR0FBa0IsYUFBYSxDQUFDLEdBQUcsQ0FBQztRQUU5QyxJQUFJLGNBQWMsS0FBSyxJQUFJLEVB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QUFJLENBQUM7UUFDM0IsSUFBSSxpQkFBaUIsR0FBVyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRzlGLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1lBQzNDLE1BQU0sR0FBRyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRXJELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFLTyxNQUFNLENBQUMsNkJBQTZCO1FBQzFDLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUM1QixJQUFJLGlCQUFpQixHQUFXLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFHckcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUM7WUFDM0MsTUFBTSxHQUFHLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFckQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQVdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOU3RyaW5nLCBSZWZQYXJhbSwgU3RyaW5nQnVpbGRlciwgaXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyX0xvZ0xldmVscywgTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24sIE1pc2N9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXJ9IGZyb20gXCIuL0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudEV2ZW50c30gZnJvbSBcIi4vSHR0cENsaWVudEV2ZW50c1wiO1xyXG5pbXBvcnQge0h0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuLy8gZXhlY3V0aW9uIHByb3BlcnRpZXNcclxuY29uc3QgSFRUUF9FWFBFQ1QxMDBDT05USU5VRTogc3RyaW5nID0gXCJFeHBlY3QxMDBDb250aW51ZVwiOyAvLyBBZGQgSFRUUCBoZWFkZXIgXCJFeHBlY3Q6MTAwQ29udGludWVcIlxyXG5jb25zdCBVU0VfSElHSEVTVF9TRUNVUklUWV9QUk9UT0NPTDogc3RyaW5nID0gXCJVc2VIaWdoZXN0U2VjdXJpdHlQcm90b2NvbFwiOyAvLyBUaGlzIHByb3BlcnR5IGRlY2lkZXMgdG8gdXNlIFRMUyB2MS4yIChpbXBsZW1lbnRlZCBhdCAuTkVUIHY0LjUpIG9yIFRMUyB2MS4wXHJcblxyXG5leHBvcnQgZW51bSBSZXF1ZXN0TWV0aG9kXHJcbntcclxuICBHZXQgPSAwLFxyXG4gIFBvc3QgPSAxLFxyXG4gIFB1dCA9IDIsXHJcbiAgRGVsZXRlID0gMyxcclxuICBPcHRpb25zID0gNCxcclxuICBIZWFkID0gNSxcclxuICBQYXRjaCA9IDZcclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gdGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3I6XHJcbi8vLyAgICAoaSkgZGVjaWRpbmcgd2hpY2ggbWV0aG9kIHRvIHVzZSAoR0VUL1BPU1QpLlxyXG4vLy8gICAoaWkpIGhhbmRsaW5nIGNvbW11bmljYXRpb24gZmFpbHVyZXMuXHJcbi8vLyAgKGlpaSkgYWRkaW5nIEhUVFAgaGVhZGVycyB0byByZXF1ZXN0cy5cclxuLy8vICAoaVYpIHJldHJpZXZpbmcgSFRUUCBoZWFkZXJzIGZyb20gcmVzcG9uc2VzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEh0dHBDbGllbnRCYXNlIHtcclxuICBwcml2YXRlIF9IVFRQTWF4VVJMTGVuZ3RoOiBudW1iZXIgPSAyMDQ4O1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgb3Igc2V0cyBhIGhhbmRsZXIgZm9yIGNvbW11bmljYXRpb25zIGZhaWx1cmUuIFRoaXMgcHJvcGVydHkgbWF5IGJlXHJcbiAgLy8vIHNldCB0byBudWxsLCBpbiB3aGljaCBjYXNlIHRoZSBIdHRwQ2xpZW50QmFzZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbCBhZnRlclxyXG4gIC8vLyB0aGUgZmlyc3QgcmVjb25uZWN0aW9uIGF0dGVtcHQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyOiBJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5Db21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0aGUgcmVxdWVzdCBtZXRob2QgKFBPU1Qgb3IgR0VUKSBiYXNlZCBvbiBpdHMgY29udGVudHMgYW5kIGxlbmd0aC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlcXVlc3RVUkxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBEZWNpZGVPblJlcXVlc3RNZXRob2QocmVxdWVzdENvbnRlbnQ6IHN0cmluZywgcmVxdWVzdFVSTDogUmVmUGFyYW08c3RyaW5nPik6IFJlcXVlc3RNZXRob2Qge1xyXG4gICAgbGV0IG1ldGhvZDogUmVxdWVzdE1ldGhvZCA9IFJlcXVlc3RNZXRob2QuR2V0O1xyXG5cclxuICAgIGlmIChyZXF1ZXN0Q29udGVudCA9PT0gbnVsbCkge1xyXG4gICAgICAvLyByZXF1ZXN0Q29udGVudCAoPT0gY29udGVudCB0byBiZSBzZW50IHRvIHNlcnZlcikgaXMgYWxsb3dlZCBvbmx5IGluIFBPU1QgcmVxdWVzdHMuIEluIGNhc2Ugbm8gY29udGVudCBpcyByZXF1aXJlZCwgb3B0IGZvciBHRVQgKGZvciB0aGUgYWZvcmVtZW50aW9uZWQgcGVyZm9ybWFuY2UgcmVhc29uKS5cclxuICAgICAgbWV0aG9kID0gUmVxdWVzdE1ldGhvZC5HZXQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHJlcXVlc3RVUkwudmFsdWUubGVuZ3RoICsgMSArIHJlcXVlc3RDb250ZW50Lmxlbmd0aCA8PSB0aGlzLl9IVFRQTWF4VVJMTGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gYXBwZW5kIHRoZSByZXF1ZXN0IGNvbnRlbnQgdG8gdGhlIFVSTCwgYW5kIHN3aXRjaCB0byB1c2luZyBhIEdFVCByZXF1ZXN0LlxyXG4gICAgICAgIHJlcXVlc3RVUkwudmFsdWUgPSByZXF1ZXN0VVJMLnZhbHVlICsgXCI/XCIgKyByZXF1ZXN0Q29udGVudDtcclxuICAgICAgICBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLkdldDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLlBvc3Q7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWV0aG9kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PkdldHMgY29udGVudHMgb2YgYSBVUkwsIHVzaW5nIGVpdGhlciBHRVQgb3IgUE9TVCBtZXRob2RzLlxyXG4gIC8vLyBUaGUgbWV0aG9kIGV4ZWN1dGVzIHRoZSBIVFRQIHJlcXVlc3QsIHJlYWRzIHRoZSByZXNwb25zZSBhbmQgcmV0dXJuIHRoZSBjb250ZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdFVSTFwiPlVSTCB0byBiZSBhY2Nlc3NlZC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJlcXVlc3RDb250ZW50XCI+Y29udGVudCB0byBiZSBzZW50IHRvIHNlcnZlciAocmVsZXZhbnQgb25seSBmb3IgUE9TVCBtZXRob2QgLSBpcyBudWxsIGZvciBvdGhlciBtZXRob2RzKS48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5yZXNwb25zZSAoZnJvbSB0aGUgc2VydmVyKS48L3JldHVybnM+XHJcbiAgYXN5bmMgR2V0Q29udGVudChyZXF1ZXN0VVJMOiBzdHJpbmcsIHJlcXVlc3RDb250ZW50OiBhbnksIHVzZUNhY2hlOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGxldCBjb250ZW50RnJvbVNlcnZlcjogUmVmUGFyYW08c3RyaW5nPiA9IG5ldyBSZWZQYXJhbShudWxsKTtcclxuICAgIGxldCByZXF1ZXN0VXJsUmVmOiBSZWZQYXJhbTxzdHJpbmc+ID0gbmV3IFJlZlBhcmFtKHJlcXVlc3RVUkwpO1xyXG5cclxuICAgIGxldCBodHRwTWV0aG9kOiBSZXF1ZXN0TWV0aG9kID0gdGhpcy5EZWNpZGVPblJlcXVlc3RNZXRob2QocmVxdWVzdENvbnRlbnQsIHJlcXVlc3RVcmxSZWYpO1xyXG4gICAgcmVxdWVzdFVSTCA9IHJlcXVlc3RVcmxSZWYudmFsdWU7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gRXhlY3V0ZSB0aGUgaHR0cCByZXF1ZXN0XHJcbiAgICAgIGxldCByZXNwb25zZTogSHR0cFJlc3BvbnNlPHN0cmluZz4gPSBhd2FpdCB0aGlzLkV4ZWN1dGVIdHRwUmVxdWVzdChyZXF1ZXN0VVJMLCByZXF1ZXN0Q29udGVudCwgdXNlQ2FjaGUsIGh0dHBNZXRob2QsIGNvbnRlbnRGcm9tU2VydmVyKTtcclxuXHJcbiAgICAgIGlmKHJlc3BvbnNlICE9IG51bGwpIHtcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhcIkluY29taW5nIEhlYWRlcnMgOiBcIiArIEh0dHBDbGllbnRCYXNlLkhlYWRlcnNUb1N0cmluZyhyZXNwb25zZS5oZWFkZXJzLCB0cnVlKSk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aGUgbmV4dCBzZXNzaW9uIGNvdW50ZXIgKHdoaWNoIHdpbGwgYmUgZXhwZWN0ZWQgYnkgdGhlIHNlcnZlciBpbiB0aGUgbmV4dCByZXF1ZXN0KS5cclxuICAgICAgICBsZXQgbmV4dFNlc3Npb25Db3VudGVyU3RyaW5nOiBzdHJpbmcgPSByZXNwb25zZS5oZWFkZXJzLmdldChcIk1neHBhTmV4dFNlc3Npb25Db3VudGVyXCIudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChuZXh0U2Vzc2lvbkNvdW50ZXJTdHJpbmcpKSB7XHJcbiAgICAgICAgICBIdHRwQ2xpZW50RXZlbnRzLkNoZWNrQW5kU2V0U2Vzc2lvbkNvdW50ZXIoK25leHRTZXNzaW9uQ291bnRlclN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlV2FybmluZ1RvTG9nKGV4KTtcclxuICAgICAgdGhyb3cgZXg7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRGcm9tU2VydmVyLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlRoaXMgZnVuY3Rpb24gZXhlY3V0ZXMgdGhlIEhUVFAgcmVxdWVzdCBhbmQgbWFrZSB0aGUgcmVzcG9uc2Ugb2JqZWN0LiBJdCBjYW4gZXhlY3V0ZVxyXG4gIC8vLyAgIEdFVCBvciBQT1NUIHJlcXVlc3QuIEluIGNhc2Ugb2YgUE9TVCByZXF1ZXN0IHRoZSB2YXJpYWJsZXMgdG8gc2VydmVyIHdpbGwgY29udGFpbiB0aGVcclxuICAvLy8gICB2YXJpYWJsZXMgdG8gYmUgc2VuZCB0byB0aGUgc2VydmVyLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXJsU3RyaW5nXCI+VVJMIHRvIGJlIGFjY2Vzc2VkLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVxdWVzdENvbnRlbnRcIj5jb250ZW50IHRvIGJlIHNlbnQgdG8gc2VydmVyIChyZWxldmFudCBvbmx5IGZvciBQT1NUIG1ldGhvZCAtIGlzIG51bGwgZm9yIG90aGVyIG1ldGhvZHMpLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaHR0cE1ldGhvZFwiPmVudW0gUmVxdWVzdE1ldGhvZCB0byBzcGVjaWZ5IHRoZSBtZXRob2QgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgcmVxdWVzdC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRlbnRGcm9tU2VydmVyXCI+Y29udGVudCByZWNlaXZlZCBmcm9tIHRoZSByZXNwb25zZS4gW09VVF08L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBhc3luYyBFeGVjdXRlSHR0cFJlcXVlc3QodXJsU3RyaW5nOiBzdHJpbmcsIHJlcXVlc3RDb250ZW50OiBzdHJpbmcsIHVzZUNhY2hlOiBib29sZWFuLCBodHRwTWV0aG9kOiBSZXF1ZXN0TWV0aG9kLCBjb250ZW50RnJvbVNlcnZlcjogUmVmUGFyYW08YW55Pik6IFByb21pc2U8SHR0cFJlc3BvbnNlPHN0cmluZz4+XHJcbiAge1xyXG4gICAgbGV0IGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlPHN0cmluZz4gPSBudWxsO1xyXG5cclxuICAgIHRoaXMucHJlcGFyZVJlcXVlc3QoKTtcclxuXHJcbiAgICBsZXQgaHR0cENvbW11bmljYXRpb25UaW1lb3V0TVM6IG51bWJlciA9IEh0dHBDbGllbnRFdmVudHMuR2V0SHR0cENvbW11bmljYXRpb25UaW1lb3V0KCk7XHJcbiAgICBsZXQgY2xpZW50SUQ6IHN0cmluZyA9IEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk7XHJcblxyXG4gICAgbGV0IGV4ZWN1dGlvbkF0dGVtcHRzOiBudW1iZXIgPSAwOyAgLy8gZm9yIGxvZ2dpbmcgcHVycG9zZSBvbmx5LlxyXG5cclxuICAgIGxldCBzdGFydFRpbWU6IG51bWJlciA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcblxyXG4gICAgLy8gUmV0cnlpbmc6XHJcbiAgICAvLyAgICBJcyBjb250cm9sbGVkIGJ5OlxyXG4gICAgLy8gICAgICAgKEkpICBUaGUgbWV0aG9kIHZhcmlhYmxlICdodHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUycgKGFib3ZlKSxcclxuICAgIC8vICAgICAgIChJSSkgVGhlIGNsYXNzIG1lbWJlciAnQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlcicgKGFib3ZlKS5cclxuICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgIGV4ZWN1dGlvbkF0dGVtcHRzKys7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudCBUTFMgcHJvdG9jb2wuXHJcbiAgICAgICAgLy8gbGV0IHVzZUhpZ2hlc3RTZWN1cml0eVByb3RvY29sOiBib29sZWFuID0gSHR0cENsaWVudEJhc2UuR2V0VXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2woKTtcclxuICAgICAgICAvLyBpZiAodXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2wpIHtcclxuICAgICAgICAvLyAgIFNlcnZpY2VQb2ludE1hbmFnZXIuU2VjdXJpdHlQcm90b2NvbCA9IFNlY3VyaXR5UHJvdG9jb2xUeXBlLlRsczEyO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gRG8gbm90IGFkZCBNZ3hwYVJJQWdsb2JhbFVuaXF1ZVNlc3Npb25JRCB3aGlsZSBnZXR0aW5nIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzXHJcbiAgICAgICAgLy8gVE9ETzogaGVhZGVycyBzaG91bGQgbm90IGJlIHNlbnQgZm9yIGNhY2hlZCBmaWxlIHJlcXVlc3RzXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cclxuICAgICAgICBodHRwSGVhZGVycyA9IHRoaXMuYWRkSGVhZGVycyh1cmxTdHJpbmcsIHVzZUNhY2hlLCBodHRwSGVhZGVycywgY2xpZW50SUQpO1xyXG5cclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTZXJ2ZXJUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlJlcXVlc3QgVGltZW91dCBzZXQgdG8gezB9IG1zXCIsIGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TKSk7XHJcblxyXG4gICAgICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuTG9nTGV2ZWwgPT09IExvZ2dlcl9Mb2dMZXZlbHMuQmFzaWMpIHtcclxuICAgICAgICAgIGxldCBjb250ZW50TGVuZ3RoOiBudW1iZXIgPSAwO1xyXG4gICAgICAgICAgaWYgKGh0dHBNZXRob2QgPT09IFJlcXVlc3RNZXRob2QuR2V0KSB7XHJcbiAgICAgICAgICAgIGxldCBwYXJ0czogc3RyaW5nW10gPSB1cmxTdHJpbmcuc3BsaXQoJz8nKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpXHJcbiAgICAgICAgICAgICAgY29udGVudExlbmd0aCA9IHBhcnRzWzFdLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgLy8gKGh0dHBSZXF1ZXN0Lm1ldGhvZCA9PT0gUmVxdWVzdE1ldGhvZC5Qb3N0KVxyXG4gICAgICAgICAgICBjb250ZW50TGVuZ3RoID0gcmVxdWVzdENvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUJhc2ljVG9Mb2coTG9nZ2VyX01lc3NhZ2VEaXJlY3Rpb24uTWVzc2FnZUxlYXZpbmcsXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEKCksXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuR2V0U2Vzc2lvbkNvdW50ZXIoKSxcclxuICAgICAgICAgICAgY2xpZW50SUQsXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcigpID8gXCItXCIgOiBuZXcgVVJMKHVybFN0cmluZykuaG9zdCxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgJy0nLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShodHRwSGVhZGVycyksXHJcbiAgICAgICAgICAgIGNvbnRlbnRMZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRpbWVCZWZvcmVSZXF1ZXN0OiBudW1iZXIgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiQWNjZXNzaW5nIChtZXRob2Q6ICd7MH0nKTogJ3sxfSdcIiwgaHR0cE1ldGhvZCwgdXJsU3RyaW5nKSk7XHJcblxyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVNlcnZlclRvTG9nKFwiT3V0Z29pbmcgSGVhZGVycyA6IFwiICsgSHR0cENsaWVudEJhc2UuSGVhZGVyc1RvU3RyaW5nKGh0dHBIZWFkZXJzLCBmYWxzZSkpO1xyXG5cclxuICAgICAgICBpZiAoaHR0cE1ldGhvZCA9PT0gUmVxdWVzdE1ldGhvZC5Qb3N0KSB7XHJcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgRXhwZWN0MTAwQ29udGludWUuXHJcbiAgICAgICAgICAvLyBodHRwV2ViUmVxdWVzdC5TZXJ2aWNlUG9pbnQuRXhwZWN0MTAwQ29udGludWUgPSB0aGlzLkdldEhUVFBFeHBlY3QxMDBDb250aW51ZSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5Xcml0ZUNvbnRlbnRUb1JlcXVlc3QocmVxdWVzdENvbnRlbnQsIGh0dHBXZWJSZXF1ZXN0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgICAvLyBzZW5kIHRoZSByZXF1ZXN0ICYgZ2V0IHRoZSByZXNwb25zZTpcclxuICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgICAgLy8gVE9ETyA6IEhhbmRsZSBlcnJvcnNcclxuICAgICAgICAvLyBUT0RPOiBIYW5kbGUgdGltZW91dFxyXG5cclxuICAgICAgICBsZXQgcmVxdWVzdFRpbWU6bnVtYmVyID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2dSZXF1ZXN0SW5mbyghaXNOdWxsT3JVbmRlZmluZWQocmVxdWVzdENvbnRlbnQpID8gcmVxdWVzdENvbnRlbnQubGVuZ3RoIDogMCwgcmVxdWVzdFRpbWUsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5zZW5kUmVxdWVzdFRvU2VydmVyKGh0dHBNZXRob2QsIHVybFN0cmluZywgaHR0cEhlYWRlcnMsIHJlcXVlc3RDb250ZW50LCBjb250ZW50RnJvbVNlcnZlcik7XHJcblxyXG4gICAgICAgIHRoaXMubG9nUmVzcG9uc2UoaHR0cFJlc3BvbnNlLCBjbGllbnRJRCwgdXJsU3RyaW5nLCBjb250ZW50RnJvbVNlcnZlciwgdGltZUJlZm9yZVJlcXVlc3QpO1xyXG5cclxuICAgICAgICB0aGlzLkxvZ1JlcXVlc3RJbmZvKCFpc051bGxPclVuZGVmaW5lZChyZXF1ZXN0Q29udGVudCkgPyByZXF1ZXN0Q29udGVudC5sZW5ndGggOiAwLCBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpIC0gcmVxdWVzdFRpbWUsIHRydWUpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLkxvZ0xldmVsID09PSBMb2dnZXJfTG9nTGV2ZWxzLkJhc2ljKVxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlQmFzaWNFcnJvclRvTG9nKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlV2FybmluZ1RvTG9nKGV4KTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVIdHRwRXJyb3JFeGNlcHRpb24oZXgsIHVybFN0cmluZyk7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVSZWY6IFJlZlBhcmFtPG51bWJlcj4gPSBuZXcgUmVmUGFyYW08bnVtYmVyPihzdGFydFRpbWUpO1xyXG4gICAgICAgIGlmKHRoaXMuc2hvdWxkUmV0cnkoaHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMsIHVybFN0cmluZywgdGhpcy5Db21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyLCBleCwgc3RhcnRUaW1lUmVmKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzdGFydFRpbWUgPSBzdGFydFRpbWVSZWYudmFsdWU7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nQW5kVGhyb3dFeGNlcHRpb24oZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2dFeGVjdXRpb25BdHRlbXB0cyhleGVjdXRpb25BdHRlbXB0cyk7XHJcblxyXG4gICAgcmV0dXJuIGh0dHBSZXNwb25zZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gTG9nIHRoZSByZXF1ZXN0IGluZm8gd2hpbGUgc2VuZGluZyByZXF1ZXN0L2FmdGVyIHJlY2VpdmluZyByZXNwb25zZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBMb2dSZXF1ZXN0SW5mbyhjb250ZW50TGVuZ3RoOiBudW1iZXIsIHJvdW5kVHJpcDogbnVtYmVyLCBpc0xvZ2dpbmdSZXNwb25zZTogYm9vbGVhbikge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5Mb2dMZXZlbCA9PSBMb2dnZXJfTG9nTGV2ZWxzLlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgIEh0dHBDbGllbnRFdmVudHMuQ29tcHV0ZUFuZExvZ1JlcXVlc3RJbmZvKGNvbnRlbnRMZW5ndGgsIHJvdW5kVHJpcCwgaXNMb2dnaW5nUmVzcG9uc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PldyaXRlIE1nKiBwcmVmaXhlZCBoZWFkZXJzIHRvIHN0cmluZyBpbiBmb3JtYXQgXCJIRUFERVIxOlZBTFVFMSBIRUFERVIyOlZBTFVFMiAuLi5cIjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZWFkZXJzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJiRmlsdGVyXCI+aWYgdHJ1ZSwgbGlzdCBvbmx5IGhlYWRlcnMgcHJlZml4ZWQgd2l0aCBcIk1nXCI8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIEhlYWRlcnNUb1N0cmluZyhoZWFkZXJzOiBIdHRwSGVhZGVycywgYkZpbHRlcjogYm9vbGVhbik6IFN0cmluZ0J1aWxkZXIge1xyXG4gICAgbGV0IGhlYWRlcnNTdHI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgbGV0IGhlYWRlcktleXM6IHN0cmluZ1tdID0gaGVhZGVycy5rZXlzKCk7XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIGhlYWRlcktleXMpIHtcclxuICAgICAgLy8gZmlsdGVyIG9ubHkgaGVhZGVycyB0aGF0IGFyZSBwcmVmaXhlZCB3aXRoIE1nKiAoc2VudCBmcm9tIHRoZSBNaWRkbGV3YXJlIGFuZCBTZXJ2ZXIpOlxyXG4gICAgICBpZiAoIWJGaWx0ZXIgfHwgaGVhZGVyS2V5c1trZXldLnN0YXJ0c1dpdGgoXCJNZ1wiKSlcclxuICAgICAgICBoZWFkZXJzU3RyLkFwcGVuZChOU3RyaW5nLkZvcm1hdChcInswfTp7MX0gXCIsIGhlYWRlcktleXNba2V5XSwgaGVhZGVycy5nZXQoaGVhZGVyS2V5c1trZXldKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBoZWFkZXJzU3RyO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlJldHVybiB0aGUgcHJvcGVydHkgd2hpY2ggZGVjaWRlIHdoZXRoZXIgdG8gc2V0IEhUVFAgaGVhZGVyIFwiRXhwZWN0OjEwMENvbnRpbnVlXCI8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmJvb2w8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0SFRUUEV4cGVjdDEwMENvbnRpbnVlKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgZXhlY3V0aW9uUHJvcGVydHk6IHN0cmluZyA9IEh0dHBDbGllbnRFdmVudHMuR2V0RXhlY3V0aW9uUHJvcGVydHkoSFRUUF9FWFBFQ1QxMDBDT05USU5VRSk7XHJcblxyXG4gICAgLy8gSW4gY2FzZSB0aGUgcHJvcGVydHkgaXMgbm90IGdpdmVuIGluIHRoZSBleGVjdXRpb24gcHJvcGVydGllcywgaXQgc2hvdWxkIGRlZmF1bHQgdG8gdHJ1ZVxyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoZXhlY3V0aW9uUHJvcGVydHkpKVxyXG4gICAgICByZXN1bHQgPSAoZXhlY3V0aW9uUHJvcGVydHkudG9VcHBlckNhc2UoKSA9PT0gXCJZXCIpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+UmV0dXJuIHRoZSBwcm9wZXJ0eSB3aGljaCBhbGxvd3MgdG8gdXNlIFRMUyB2MS4yIChpbXBsZW1lbnRlZCBhdCAuTkVUIHY0LjUpIGFzIGEgaGlnaGVzdCBUTFMgcHJvdG9jb2wgdmVyc2lvbi5cclxuICAvLy8gT3RoZXJ3aXNlIHVzZSBUTFMgdjEuMCBhcyBhIGhpZ2hlc3QgVExTIHByb3RvY29sIHZlcnNpb248L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmJvb2w8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0VXNlSGlnaGVzdFNlY3VyaXR5UHJvdG9jb2woKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgZXhlY3V0aW9uUHJvcGVydHk6IHN0cmluZyA9IEh0dHBDbGllbnRFdmVudHMuR2V0RXhlY3V0aW9uUHJvcGVydHkoVVNFX0hJR0hFU1RfU0VDVVJJVFlfUFJPVE9DT0wpO1xyXG5cclxuICAgIC8vIEluIGNhc2UgdGhlIHByb3BlcnR5IGlzIG5vdCBnaXZlbiBpbiB0aGUgZXhlY3V0aW9uIHByb3BlcnRpZXMsIGl0IHNob3VsZCBkZWZhdWx0IHRvIGZhbHNlIChhIGhpZ2hlc3QgVExTIHByb3RvY29sIHZlcnNpb24gaXMgdjEuMClcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KGV4ZWN1dGlvblByb3BlcnR5KSlcclxuICAgICAgcmVzdWx0ID0gKGV4ZWN1dGlvblByb3BlcnR5LnRvVXBwZXJDYXNlKCkgPT09IFwiWVwiKTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8gQWJzdHJhY3QgbWV0aG9kc1xyXG4gIGFic3RyYWN0IHByZXBhcmVSZXF1ZXN0KCk7XHJcbiAgYWJzdHJhY3QgYWRkSGVhZGVycyh1cmxTdHJpbmc6IHN0cmluZywgdXNlQ2FjaGU6IGJvb2xlYW4sIGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycywgY2xpZW50SUQ6IHN0cmluZyk6IEh0dHBIZWFkZXJzO1xyXG4gIGFic3RyYWN0IGFzeW5jIHNlbmRSZXF1ZXN0VG9TZXJ2ZXIoaHR0cE1ldGhvZDogUmVxdWVzdE1ldGhvZCwgdXJsU3RyaW5nOiBzdHJpbmcsIGh0dHBIZWFkZXJzOiBIdHRwSGVhZGVycywgcmVxdWVzdENvbnRlbnQ6IHN0cmluZywgY29udGVudEZyb21TZXJ2ZXI6IFJlZlBhcmFtPHN0cmluZz4pOiBQcm9taXNlPGFueT47XHJcbiAgYWJzdHJhY3QgbG9nUmVzcG9uc2UoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2U8c3RyaW5nPiwgY2xpZW50SUQ6IHN0cmluZywgdXJsU3RyaW5nOiBzdHJpbmcsIGNvbnRlbnRGcm9tU2VydmVyOiBSZWZQYXJhbTxhbnk+LCB0aW1lQmVmb3JlUmVxdWVzdDogbnVtYmVyKTtcclxuICBhYnN0cmFjdCBoYW5kbGVIdHRwRXJyb3JFeGNlcHRpb24oZXg6IGFueSwgdXJsU3RyaW5nOiBzdHJpbmcpO1xyXG4gIGFic3RyYWN0IGFzeW5jIHNob3VsZFJldHJ5KGh0dHBDb21tdW5pY2F0aW9uVGltZW91dE1TOiBudW1iZXIsIHVybFN0cmluZzogc3RyaW5nLCBjb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyOiBJQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlciwgZXg6IGFueSwgc3RhcnRUaW1lUmVmOiBSZWZQYXJhbTxudW1iZXI+KTtcclxuICBhYnN0cmFjdCBsb2dBbmRUaHJvd0V4Y2VwdGlvbihleDogYW55KTtcclxuICBhYnN0cmFjdCBsb2dFeGVjdXRpb25BdHRlbXB0cyhleGVjdXRpb25BdHRlbXB0czogbnVtYmVyKTtcclxufVxyXG4iXX0=
|