testcafe
Version:
Automated browser testing for the modern web development stack.
95 lines • 13.3 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = require("events");
const phase_1 = __importDefault(require("./phase"));
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
const marker_symbol_1 = __importDefault(require("./marker-symbol"));
const nanoid_1 = require("nanoid");
const test_page_url_1 = require("../api/test-page-url");
class Role extends events_1.EventEmitter {
constructor(loginUrl, initFn, options = {}) {
super();
this[marker_symbol_1.default] = true;
this.id = (0, nanoid_1.nanoid)(7);
this.phase = loginUrl ? phase_1.default.uninitialized : phase_1.default.initialized;
this.loginUrl = loginUrl;
this._initFn = initFn;
this.opts = options;
this.redirectUrl = null;
this.stateSnapshot = testcafe_hammerhead_1.StateSnapshot.empty();
this.initErr = null;
}
async _storeStateSnapshot(testRun) {
if (this.initErr)
return;
this.stateSnapshot = await testRun.getStateSnapshot();
}
async _setInitError(err) {
this.initErr = err;
}
async _executeInitFn(testRun) {
if (this.initErr)
return;
try {
let fn = () => this._initFn(testRun);
fn = testRun.decoratePreventEmitActionEvents(fn, { prevent: false });
fn = testRun.decorateDisableDebugBreakpoints(fn, { disable: false });
await fn();
}
catch (err) {
await this._setInitError(err);
}
}
_prepareLoginUrl(loginUrl, baseUrl) {
if (!baseUrl)
(0, test_page_url_1.assertRoleUrl)(loginUrl, 'role');
return (0, test_page_url_1.getUrl)(loginUrl, baseUrl ? new URL(baseUrl) : void 0);
}
async _switchToCleanRun(testRun) {
try {
if (this.loginUrl)
this.loginUrl = this._prepareLoginUrl(this.loginUrl, testRun.baseUrl);
await testRun.switchToCleanRun(this.loginUrl);
}
catch (err) {
await this._setInitError(err);
}
}
async initialize(testRun) {
this.phase = phase_1.default.pendingInitialization;
await this._switchToCleanRun(testRun);
await this._executeInitFn(testRun);
await this._storeStateSnapshot(testRun);
if (this.opts.preserveUrl)
await this.setCurrentUrlAsRedirectUrl(testRun);
this.phase = phase_1.default.initialized;
this.emit('initialized');
}
async setCurrentUrlAsRedirectUrl(testRun) {
const currentUrl = await testRun.getCurrentUrl();
if (this.opts.preserveUrl)
this.redirectUrl = currentUrl;
else {
this.redirectUrl = this.redirectUrl || {};
this.redirectUrl[testRun.test.id] = currentUrl;
}
}
static from(init) {
if (!init)
return null;
const serializedRole = init;
const role = new Role(serializedRole.loginUrl, serializedRole._initFn, serializedRole.opts);
role.id = serializedRole.id;
role.phase = serializedRole.phase;
role.redirectUrl = serializedRole.redirectUrl;
role.stateSnapshot = serializedRole.stateSnapshot;
role.initErr = serializedRole.initErr;
return role;
}
}
exports.default = Role;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yb2xlL3JvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBc0M7QUFDdEMsb0RBQWdDO0FBQ2hDLDZEQUFvRDtBQUNwRCxvRUFBeUM7QUFDekMsbUNBQWdDO0FBR2hDLHdEQUE2RDtBQU03RCxNQUFxQixJQUFLLFNBQVEscUJBQVk7SUFXMUMsWUFBb0IsUUFBdUIsRUFBRSxNQUF1QixFQUFFLE9BQU8sR0FBRyxFQUFFO1FBQzlFLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLHVCQUFVLENBQUMsR0FBSyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLEVBQUUsR0FBYyxJQUFBLGVBQU0sRUFBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFXLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsZUFBUyxDQUFDLFdBQVcsQ0FBQztRQUNoRixJQUFJLENBQUMsUUFBUSxHQUFRLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFTLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFZLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFLLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLG1DQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBUyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBRSxPQUFnQjtRQUMvQyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQ1osT0FBTztRQUVYLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBRSxHQUFVO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFFLE9BQWdCO1FBQzFDLElBQUksSUFBSSxDQUFDLE9BQU87WUFDWixPQUFPO1FBRVgsSUFBSTtZQUNBLElBQUksRUFBRSxHQUFHLEdBQWtCLEVBQUUsQ0FBRSxJQUFJLENBQUMsT0FBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsRSxFQUFFLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsR0FBRyxPQUFPLENBQUMsK0JBQStCLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFckUsTUFBTSxFQUFFLEVBQUUsQ0FBQztTQUNkO1FBQ0QsT0FBTyxHQUFRLEVBQUU7WUFDYixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUUsUUFBZ0IsRUFBRSxPQUFlO1FBQ3ZELElBQUksQ0FBQyxPQUFPO1lBQ1IsSUFBQSw2QkFBYSxFQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLElBQUEsc0JBQU0sRUFBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFFLE9BQWdCO1FBQzdDLElBQUk7WUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTFFLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFrQixDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLEdBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFFLE9BQWdCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBUyxDQUFDLHFCQUFxQixDQUFDO1FBRTdDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUNyQixNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFFbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLDBCQUEwQixDQUFFLE9BQWdCO1FBQ3JELE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWpELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO2FBQzdCO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsV0FBMkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUNuRTtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFFLElBQWE7UUFDN0IsSUFBSSxDQUFDLElBQUk7WUFDTCxPQUFPLElBQUksQ0FBQztRQUVoQixNQUFNLGNBQWMsR0FBRyxJQUFZLENBQUM7UUFFcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1RixJQUFJLENBQUMsRUFBRSxHQUFjLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBVyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUssY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBUyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBRTVDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSjtBQWxIRCx1QkFrSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IFJvbGVQaGFzZSBmcm9tICcuL3BoYXNlJztcbmltcG9ydCB7IFN0YXRlU25hcHNob3QgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCByb2xlTWFya2VyIGZyb20gJy4vbWFya2VyLXN5bWJvbCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuaW1wb3J0IFRlc3RDYWZlRXJyb3JMaXN0IGZyb20gJy4uL2Vycm9ycy9lcnJvci1saXN0JztcbmltcG9ydCB7IGdldFVybCwgYXNzZXJ0Um9sZVVybCB9IGZyb20gJy4uL2FwaS90ZXN0LXBhZ2UtdXJsJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdFVybCB7XG4gICAgW3Rlc3RJZDogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb2xlIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgICBwdWJsaWMgcGhhc2U6IFJvbGVQaGFzZTtcbiAgICBwdWJsaWMgbG9naW5Vcmw6IHN0cmluZyB8IG51bGw7XG4gICAgcHVibGljIHJlZGlyZWN0VXJsOiBSZWRpcmVjdFVybCB8IHN0cmluZyB8IG51bGw7XG4gICAgcHVibGljIF9pbml0Rm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgb3B0czogUm9sZU9wdGlvbnM7XG4gICAgcHVibGljIGluaXRFcnI6IG51bGwgfCBFcnJvciB8IFRlc3RDYWZlRXJyb3JMaXN0O1xuICAgIHB1YmxpYyBzdGF0ZVNuYXBzaG90OiBTdGF0ZVNuYXBzaG90O1xuICAgIHByaXZhdGUgW3JvbGVNYXJrZXJdOiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yIChsb2dpblVybDogc3RyaW5nIHwgbnVsbCwgaW5pdEZuOiBGdW5jdGlvbiB8IG51bGwsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXNbcm9sZU1hcmtlcl0gICA9IHRydWU7XG4gICAgICAgIHRoaXMuaWQgICAgICAgICAgICA9IG5hbm9pZCg3KTtcbiAgICAgICAgdGhpcy5waGFzZSAgICAgICAgID0gbG9naW5VcmwgPyBSb2xlUGhhc2UudW5pbml0aWFsaXplZCA6IFJvbGVQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5sb2dpblVybCAgICAgID0gbG9naW5Vcmw7XG4gICAgICAgIHRoaXMuX2luaXRGbiAgICAgICA9IGluaXRGbjtcbiAgICAgICAgdGhpcy5vcHRzICAgICAgICAgID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVybCAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gU3RhdGVTbmFwc2hvdC5lbXB0eSgpO1xuICAgICAgICB0aGlzLmluaXRFcnIgICAgICAgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3N0b3JlU3RhdGVTbmFwc2hvdCAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pbml0RXJyKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdCA9IGF3YWl0IHRlc3RSdW4uZ2V0U3RhdGVTbmFwc2hvdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3NldEluaXRFcnJvciAoZXJyOiBFcnJvcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmluaXRFcnIgPSBlcnI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZXhlY3V0ZUluaXRGbiAodGVzdFJ1bjogVGVzdFJ1bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pbml0RXJyKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgZm4gPSAoKTogUHJvbWlzZTx2b2lkPiA9PiAodGhpcy5faW5pdEZuIGFzIEZ1bmN0aW9uKSh0ZXN0UnVuKTtcblxuICAgICAgICAgICAgZm4gPSB0ZXN0UnVuLmRlY29yYXRlUHJldmVudEVtaXRBY3Rpb25FdmVudHMoZm4sIHsgcHJldmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICBmbiA9IHRlc3RSdW4uZGVjb3JhdGVEaXNhYmxlRGVidWdCcmVha3BvaW50cyhmbiwgeyBkaXNhYmxlOiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldEluaXRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZUxvZ2luVXJsIChsb2dpblVybDogc3RyaW5nLCBiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWJhc2VVcmwpXG4gICAgICAgICAgICBhc3NlcnRSb2xlVXJsKGxvZ2luVXJsLCAncm9sZScpO1xuXG4gICAgICAgIHJldHVybiBnZXRVcmwobG9naW5VcmwsIGJhc2VVcmwgPyBuZXcgVVJMKGJhc2VVcmwpIDogdm9pZCAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9zd2l0Y2hUb0NsZWFuUnVuICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2dpblVybClcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luVXJsID0gdGhpcy5fcHJlcGFyZUxvZ2luVXJsKHRoaXMubG9naW5VcmwsIHRlc3RSdW4uYmFzZVVybCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRlc3RSdW4uc3dpdGNoVG9DbGVhblJ1bih0aGlzLmxvZ2luVXJsIGFzIHN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXRJbml0RXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0aWFsaXplICh0ZXN0UnVuOiBUZXN0UnVuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucGhhc2UgPSBSb2xlUGhhc2UucGVuZGluZ0luaXRpYWxpemF0aW9uO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX3N3aXRjaFRvQ2xlYW5SdW4odGVzdFJ1bik7XG4gICAgICAgIGF3YWl0IHRoaXMuX2V4ZWN1dGVJbml0Rm4odGVzdFJ1bik7XG4gICAgICAgIGF3YWl0IHRoaXMuX3N0b3JlU3RhdGVTbmFwc2hvdCh0ZXN0UnVuKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnByZXNlcnZlVXJsKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRDdXJyZW50VXJsQXNSZWRpcmVjdFVybCh0ZXN0UnVuKTtcblxuICAgICAgICB0aGlzLnBoYXNlID0gUm9sZVBoYXNlLmluaXRpYWxpemVkO1xuXG4gICAgICAgIHRoaXMuZW1pdCgnaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0Q3VycmVudFVybEFzUmVkaXJlY3RVcmwgKHRlc3RSdW46IFRlc3RSdW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IHRlc3RSdW4uZ2V0Q3VycmVudFVybCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMucHJlc2VydmVVcmwpXG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gY3VycmVudFVybDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gdGhpcy5yZWRpcmVjdFVybCB8fCB7fTtcbiAgICAgICAgICAgICh0aGlzLnJlZGlyZWN0VXJsIGFzIFJlZGlyZWN0VXJsKVt0ZXN0UnVuLnRlc3QuaWRdID0gY3VycmVudFVybDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbSAoaW5pdDogdW5rbm93bik6IFJvbGUgfCBudWxsIHtcbiAgICAgICAgaWYgKCFpbml0KVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFJvbGUgPSBpbml0IGFzIFJvbGU7XG5cbiAgICAgICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHNlcmlhbGl6ZWRSb2xlLmxvZ2luVXJsLCBzZXJpYWxpemVkUm9sZS5faW5pdEZuLCBzZXJpYWxpemVkUm9sZS5vcHRzKTtcblxuICAgICAgICByb2xlLmlkICAgICAgICAgICAgPSBzZXJpYWxpemVkUm9sZS5pZDtcbiAgICAgICAgcm9sZS5waGFzZSAgICAgICAgID0gc2VyaWFsaXplZFJvbGUucGhhc2U7XG4gICAgICAgIHJvbGUucmVkaXJlY3RVcmwgICA9IHNlcmlhbGl6ZWRSb2xlLnJlZGlyZWN0VXJsO1xuICAgICAgICByb2xlLnN0YXRlU25hcHNob3QgPSBzZXJpYWxpemVkUm9sZS5zdGF0ZVNuYXBzaG90O1xuICAgICAgICByb2xlLmluaXRFcnIgICAgICAgPSBzZXJpYWxpemVkUm9sZS5pbml0RXJyO1xuXG4gICAgICAgIHJldHVybiByb2xlO1xuICAgIH1cbn1cbiJdfQ==