@ibm-aspera/sdk 0.2.8 → 0.2.12
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/.whitesource +3 -0
- package/README.md +1 -1
- package/dist/commonjs/app/core.d.ts +8 -37
- package/dist/commonjs/app/core.js +198 -70
- package/dist/commonjs/connect/core.d.ts +11 -0
- package/dist/commonjs/connect/core.js +73 -0
- package/dist/commonjs/constants/constants.d.ts +1 -1
- package/dist/commonjs/constants/messages.d.ts +5 -0
- package/dist/commonjs/constants/messages.js +5 -0
- package/dist/commonjs/helpers/client/http-client.js +1 -1
- package/dist/commonjs/helpers/client/safari-client.js +1 -1
- package/dist/commonjs/helpers/helpers.d.ts +20 -2
- package/dist/commonjs/helpers/helpers.js +40 -2
- package/dist/commonjs/helpers/ws.js +3 -9
- package/dist/commonjs/http-gateway/core.d.ts +76 -0
- package/dist/commonjs/http-gateway/core.js +254 -0
- package/dist/commonjs/http-gateway/download.d.ts +14 -0
- package/dist/commonjs/http-gateway/download.js +186 -0
- package/dist/commonjs/http-gateway/index.d.ts +11 -0
- package/dist/commonjs/http-gateway/index.js +11 -0
- package/dist/commonjs/http-gateway/models.d.ts +16 -0
- package/dist/commonjs/http-gateway/models.js +2 -0
- package/dist/commonjs/http-gateway/upload.d.ts +14 -0
- package/dist/commonjs/http-gateway/upload.js +124 -0
- package/dist/commonjs/index.d.ts +2 -2
- package/dist/commonjs/index.js +36 -9
- package/dist/commonjs/models/aspera-sdk.model.d.ts +60 -47
- package/dist/commonjs/models/aspera-sdk.model.js +84 -92
- package/dist/commonjs/models/models.d.ts +69 -3
- package/dist/js/aspera-sdk.js +1 -1
- package/dist/js/aspera-sdk.js.LICENSE.txt +9 -1
- package/dist/js/aspera-sdk.js.map +1 -1
- package/package.json +23 -27
- package/scripts/version.sh +24 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aspera-sdk.js","mappings":"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","sources":["webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/client.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/index.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/interfaces.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/internal.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/models.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server-and-client.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server.js","webpack://@ibm-aspera/sdk/webpack/bootstrap","webpack://@ibm-aspera/sdk/webpack/runtime/define property getters","webpack://@ibm-aspera/sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@ibm-aspera/sdk/./src/constants/constants.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/safari-client.ts","webpack://@ibm-aspera/sdk/./src/constants/messages.ts","webpack://@ibm-aspera/sdk/./src/helpers/helpers.ts","webpack://@ibm-aspera/sdk/./src/helpers/ws.ts","webpack://@ibm-aspera/sdk/./src/models/aspera-sdk.model.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/http-client.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/client.ts","webpack://@ibm-aspera/sdk/./src/app/core.ts","webpack://@ibm-aspera/sdk/./src/index.ts","webpack://@ibm-aspera/sdk/./src/app/installer.ts","webpack://@ibm-aspera/sdk/./src/helpers/http.ts"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCClient = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar JSONRPCClient = /** @class */ (function () {\n function JSONRPCClient(_send, createID) {\n this._send = _send;\n this.createID = createID;\n this.idToResolveMap = new Map();\n this.id = 0;\n }\n JSONRPCClient.prototype._createID = function () {\n if (this.createID) {\n return this.createID();\n }\n else {\n return ++this.id;\n }\n };\n JSONRPCClient.prototype.timeout = function (delay, overrideCreateJSONRPCErrorResponse) {\n var _this = this;\n if (overrideCreateJSONRPCErrorResponse === void 0) { overrideCreateJSONRPCErrorResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, \"Request timeout\");\n }; }\n var timeoutRequest = function (ids, request) {\n var timeoutID = setTimeout(function () {\n ids.forEach(function (id) {\n var resolve = _this.idToResolveMap.get(id);\n if (resolve) {\n _this.idToResolveMap.delete(id);\n resolve(overrideCreateJSONRPCErrorResponse(id));\n }\n });\n }, delay);\n return request().then(function (result) {\n clearTimeout(timeoutID);\n return result;\n }, function (error) {\n clearTimeout(timeoutID);\n return Promise.reject(error);\n });\n };\n var requestAdvanced = function (request, clientParams) {\n var ids = (!Array.isArray(request) ? [request] : request)\n .map(function (request) { return request.id; })\n .filter(isDefinedAndNonNull);\n return timeoutRequest(ids, function () {\n return _this.requestAdvanced(request, clientParams);\n });\n };\n return {\n request: function (method, params, clientParams) {\n var id = _this._createID();\n return timeoutRequest([id], function () {\n return _this.requestWithID(method, params, clientParams, id);\n });\n },\n requestAdvanced: function (request, clientParams) { return requestAdvanced(request, clientParams); },\n };\n };\n JSONRPCClient.prototype.request = function (method, params, clientParams) {\n return this.requestWithID(method, params, clientParams, this._createID());\n };\n JSONRPCClient.prototype.requestWithID = function (method, params, clientParams, id) {\n return __awaiter(this, void 0, void 0, function () {\n var request, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n request = (0, models_1.createJSONRPCRequest)(id, method, params);\n return [4 /*yield*/, this.requestAdvanced(request, clientParams)];\n case 1:\n response = _a.sent();\n if (response.result !== undefined && !response.error) {\n return [2 /*return*/, response.result];\n }\n else if (response.result === undefined && response.error) {\n return [2 /*return*/, Promise.reject(new models_1.JSONRPCErrorException(response.error.message, response.error.code, response.error.data))];\n }\n else {\n return [2 /*return*/, Promise.reject(new Error(\"An unexpected error occurred\"))];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCClient.prototype.requestAdvanced = function (requests, clientParams) {\n var _this = this;\n var areRequestsOriginallyArray = Array.isArray(requests);\n if (!Array.isArray(requests)) {\n requests = [requests];\n }\n var requestsWithID = requests.filter(function (request) {\n return isDefinedAndNonNull(request.id);\n });\n var promises = requestsWithID.map(function (request) {\n return new Promise(function (resolve) { return _this.idToResolveMap.set(request.id, resolve); });\n });\n var promise = Promise.all(promises).then(function (responses) {\n if (areRequestsOriginallyArray || !responses.length) {\n return responses;\n }\n else {\n return responses[0];\n }\n });\n return this.send(areRequestsOriginallyArray ? requests : requests[0], clientParams).then(function () { return promise; }, function (error) {\n requestsWithID.forEach(function (request) {\n _this.receive((0, models_1.createJSONRPCErrorResponse)(request.id, internal_1.DefaultErrorCode, (error && error.message) || \"Failed to send a request\"));\n });\n return promise;\n });\n };\n JSONRPCClient.prototype.notify = function (method, params, clientParams) {\n var request = (0, models_1.createJSONRPCNotification)(method, params);\n this.send(request, clientParams).then(undefined, function () { return undefined; });\n };\n JSONRPCClient.prototype.send = function (payload, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._send(payload, clientParams)];\n });\n });\n };\n JSONRPCClient.prototype.rejectAllPendingRequests = function (message) {\n this.idToResolveMap.forEach(function (resolve, id) {\n return resolve((0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, message));\n });\n this.idToResolveMap.clear();\n };\n JSONRPCClient.prototype.receive = function (responses) {\n var _this = this;\n if (!Array.isArray(responses)) {\n responses = [responses];\n }\n responses.forEach(function (response) {\n var resolve = _this.idToResolveMap.get(response.id);\n if (resolve) {\n _this.idToResolveMap.delete(response.id);\n resolve(response);\n }\n });\n };\n return JSONRPCClient;\n}());\nexports.JSONRPCClient = JSONRPCClient;\nvar isDefinedAndNonNull = function (value) {\n return value !== undefined && value !== null;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./server\"), exports);\n__exportStar(require(\"./server-and-client\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultErrorCode = void 0;\nexports.DefaultErrorCode = 0;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createJSONRPCNotification = exports.createJSONRPCRequest = exports.createJSONRPCSuccessResponse = exports.createJSONRPCErrorResponse = exports.JSONRPCErrorCode = exports.JSONRPCErrorException = exports.isJSONRPCResponses = exports.isJSONRPCResponse = exports.isJSONRPCRequests = exports.isJSONRPCRequest = exports.isJSONRPCID = exports.JSONRPC = void 0;\nexports.JSONRPC = \"2.0\";\nvar isJSONRPCID = function (id) {\n return typeof id === \"string\" || typeof id === \"number\" || id === null;\n};\nexports.isJSONRPCID = isJSONRPCID;\nvar isJSONRPCRequest = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.method !== undefined &&\n payload.result === undefined &&\n payload.error === undefined);\n};\nexports.isJSONRPCRequest = isJSONRPCRequest;\nvar isJSONRPCRequests = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCRequest);\n};\nexports.isJSONRPCRequests = isJSONRPCRequests;\nvar isJSONRPCResponse = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.id !== undefined &&\n (payload.result !== undefined || payload.error !== undefined));\n};\nexports.isJSONRPCResponse = isJSONRPCResponse;\nvar isJSONRPCResponses = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCResponse);\n};\nexports.isJSONRPCResponses = isJSONRPCResponses;\nvar createJSONRPCError = function (code, message, data) {\n var error = { code: code, message: message };\n if (data != null) {\n error.data = data;\n }\n return error;\n};\nvar JSONRPCErrorException = /** @class */ (function (_super) {\n __extends(JSONRPCErrorException, _super);\n function JSONRPCErrorException(message, code, data) {\n var _this = _super.call(this, message) || this;\n // Manually set the prototype to fix TypeScript issue:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(_this, JSONRPCErrorException.prototype);\n _this.code = code;\n _this.data = data;\n return _this;\n }\n JSONRPCErrorException.prototype.toObject = function () {\n return createJSONRPCError(this.code, this.message, this.data);\n };\n return JSONRPCErrorException;\n}(Error));\nexports.JSONRPCErrorException = JSONRPCErrorException;\nvar JSONRPCErrorCode;\n(function (JSONRPCErrorCode) {\n JSONRPCErrorCode[JSONRPCErrorCode[\"ParseError\"] = -32700] = \"ParseError\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidRequest\"] = -32600] = \"InvalidRequest\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"MethodNotFound\"] = -32601] = \"MethodNotFound\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidParams\"] = -32602] = \"InvalidParams\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InternalError\"] = -32603] = \"InternalError\";\n})(JSONRPCErrorCode = exports.JSONRPCErrorCode || (exports.JSONRPCErrorCode = {}));\nvar createJSONRPCErrorResponse = function (id, code, message, data) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n error: createJSONRPCError(code, message, data),\n };\n};\nexports.createJSONRPCErrorResponse = createJSONRPCErrorResponse;\nvar createJSONRPCSuccessResponse = function (id, result) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n result: result !== null && result !== void 0 ? result : null,\n };\n};\nexports.createJSONRPCSuccessResponse = createJSONRPCSuccessResponse;\nvar createJSONRPCRequest = function (id, method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCRequest = createJSONRPCRequest;\nvar createJSONRPCNotification = function (method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCNotification = createJSONRPCNotification;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServerAndClient = void 0;\nvar models_1 = require(\"./models\");\nvar JSONRPCServerAndClient = /** @class */ (function () {\n function JSONRPCServerAndClient(server, client, options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.server = server;\n this.client = client;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServerAndClient.prototype.applyServerMiddleware = function () {\n var _a;\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n (_a = this.server).applyMiddleware.apply(_a, middlewares);\n };\n JSONRPCServerAndClient.prototype.hasMethod = function (name) {\n return this.server.hasMethod(name);\n };\n JSONRPCServerAndClient.prototype.addMethod = function (name, method) {\n this.server.addMethod(name, method);\n };\n JSONRPCServerAndClient.prototype.addMethodAdvanced = function (name, method) {\n this.server.addMethodAdvanced(name, method);\n };\n JSONRPCServerAndClient.prototype.timeout = function (delay) {\n return this.client.timeout(delay);\n };\n JSONRPCServerAndClient.prototype.request = function (method, params, clientParams) {\n return this.client.request(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.requestAdvanced = function (jsonRPCRequest, clientParams) {\n return this.client.requestAdvanced(jsonRPCRequest, clientParams);\n };\n JSONRPCServerAndClient.prototype.notify = function (method, params, clientParams) {\n this.client.notify(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.rejectAllPendingRequests = function (message) {\n this.client.rejectAllPendingRequests(message);\n };\n JSONRPCServerAndClient.prototype.receiveAndSend = function (payload, serverParams, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n var response, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!((0, models_1.isJSONRPCResponse)(payload) || (0, models_1.isJSONRPCResponses)(payload))) return [3 /*break*/, 1];\n this.client.receive(payload);\n return [3 /*break*/, 4];\n case 1:\n if (!((0, models_1.isJSONRPCRequest)(payload) || (0, models_1.isJSONRPCRequests)(payload))) return [3 /*break*/, 3];\n return [4 /*yield*/, this.server.receive(payload, serverParams)];\n case 2:\n response = _a.sent();\n if (response) {\n return [2 /*return*/, this.client.send(response, clientParams)];\n }\n return [3 /*break*/, 4];\n case 3:\n message = \"Received an invalid JSON-RPC message\";\n this.errorListener(message, payload);\n return [2 /*return*/, Promise.reject(new Error(message))];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return JSONRPCServerAndClient;\n}());\nexports.JSONRPCServerAndClient = JSONRPCServerAndClient;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServer = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar createParseErrorResponse = function () {\n return (0, models_1.createJSONRPCErrorResponse)(null, models_1.JSONRPCErrorCode.ParseError, \"Parse error\");\n};\nvar createInvalidRequestResponse = function (request) {\n return (0, models_1.createJSONRPCErrorResponse)((0, models_1.isJSONRPCID)(request.id) ? request.id : null, models_1.JSONRPCErrorCode.InvalidRequest, \"Invalid Request\");\n};\nvar createMethodNotFoundResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, models_1.JSONRPCErrorCode.MethodNotFound, \"Method not found\");\n};\nvar JSONRPCServer = /** @class */ (function () {\n function JSONRPCServer(options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.mapErrorToJSONRPCErrorResponse = defaultMapErrorToJSONRPCErrorResponse;\n this.nameToMethodDictionary = {};\n this.middleware = null;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServer.prototype.hasMethod = function (name) {\n return !!this.nameToMethodDictionary[name];\n };\n JSONRPCServer.prototype.addMethod = function (name, method) {\n this.addMethodAdvanced(name, this.toJSONRPCMethod(method));\n };\n JSONRPCServer.prototype.toJSONRPCMethod = function (method) {\n return function (request, serverParams) {\n var response = method(request.params, serverParams);\n return Promise.resolve(response).then(function (result) {\n return mapResultToJSONRPCResponse(request.id, result);\n });\n };\n };\n JSONRPCServer.prototype.addMethodAdvanced = function (name, method) {\n var _a;\n this.nameToMethodDictionary = __assign(__assign({}, this.nameToMethodDictionary), (_a = {}, _a[name] = method, _a));\n };\n JSONRPCServer.prototype.receiveJSON = function (json, serverParams) {\n var request = this.tryParseRequestJSON(json);\n if (request) {\n return this.receive(request, serverParams);\n }\n else {\n return Promise.resolve(createParseErrorResponse());\n }\n };\n JSONRPCServer.prototype.tryParseRequestJSON = function (json) {\n try {\n return JSON.parse(json);\n }\n catch (_a) {\n return null;\n }\n };\n JSONRPCServer.prototype.receive = function (request, serverParams) {\n if (Array.isArray(request)) {\n return this.receiveMultiple(request, serverParams);\n }\n else {\n return this.receiveSingle(request, serverParams);\n }\n };\n JSONRPCServer.prototype.receiveMultiple = function (requests, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var responses;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(requests.map(function (request) { return _this.receiveSingle(request, serverParams); }))];\n case 1:\n responses = (_a.sent()).filter(isNonNull);\n if (responses.length === 1) {\n return [2 /*return*/, responses[0]];\n }\n else if (responses.length) {\n return [2 /*return*/, responses];\n }\n else {\n return [2 /*return*/, null];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCServer.prototype.receiveSingle = function (request, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var method, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n method = this.nameToMethodDictionary[request.method];\n if (!!(0, models_1.isJSONRPCRequest)(request)) return [3 /*break*/, 1];\n return [2 /*return*/, createInvalidRequestResponse(request)];\n case 1: return [4 /*yield*/, this.callMethod(method, request, serverParams)];\n case 2:\n response = _a.sent();\n return [2 /*return*/, mapResponse(request, response)];\n }\n });\n });\n };\n JSONRPCServer.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n if (this.middleware) {\n this.middleware = this.combineMiddlewares(__spreadArray([\n this.middleware\n ], middlewares, true));\n }\n else {\n this.middleware = this.combineMiddlewares(middlewares);\n }\n };\n JSONRPCServer.prototype.combineMiddlewares = function (middlewares) {\n if (!middlewares.length) {\n return null;\n }\n else {\n return middlewares.reduce(this.middlewareReducer);\n }\n };\n JSONRPCServer.prototype.middlewareReducer = function (prevMiddleware, nextMiddleware) {\n return function (next, request, serverParams) {\n return prevMiddleware(function (request, serverParams) { return nextMiddleware(next, request, serverParams); }, request, serverParams);\n };\n };\n JSONRPCServer.prototype.callMethod = function (method, request, serverParams) {\n var _this = this;\n var callMethod = function (request, serverParams) {\n if (method) {\n return method(request, serverParams);\n }\n else if (request.id !== undefined) {\n return Promise.resolve(createMethodNotFoundResponse(request.id));\n }\n else {\n return Promise.resolve(null);\n }\n };\n var onError = function (error) {\n _this.errorListener(\"An unexpected error occurred while executing \\\"\".concat(request.method, \"\\\" JSON-RPC method:\"), error);\n return Promise.resolve(_this.mapErrorToJSONRPCErrorResponseIfNecessary(request.id, error));\n };\n try {\n return (this.middleware || noopMiddleware)(callMethod, request, serverParams).then(undefined, onError);\n }\n catch (error) {\n return onError(error);\n }\n };\n JSONRPCServer.prototype.mapErrorToJSONRPCErrorResponseIfNecessary = function (id, error) {\n if (id !== undefined) {\n return this.mapErrorToJSONRPCErrorResponse(id, error);\n }\n else {\n return null;\n }\n };\n return JSONRPCServer;\n}());\nexports.JSONRPCServer = JSONRPCServer;\nvar isNonNull = function (value) { return value !== null; };\nvar noopMiddleware = function (next, request, serverParams) { return next(request, serverParams); };\nvar mapResultToJSONRPCResponse = function (id, result) {\n if (id !== undefined) {\n return (0, models_1.createJSONRPCSuccessResponse)(id, result);\n }\n else {\n return null;\n }\n};\nvar defaultMapErrorToJSONRPCErrorResponse = function (id, error) {\n var _a;\n var message = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : \"An unexpected error occurred\";\n var code = internal_1.DefaultErrorCode;\n var data;\n if (error instanceof models_1.JSONRPCErrorException) {\n code = error.code;\n data = error.data;\n }\n return (0, models_1.createJSONRPCErrorResponse)(id, code, message, data);\n};\nvar mapResponse = function (request, response) {\n if (response) {\n return response;\n }\n else if (request.id !== undefined) {\n return (0, models_1.createJSONRPCErrorResponse)(request.id, models_1.JSONRPCErrorCode.InternalError, \"Internal error\");\n }\n else {\n return null;\n }\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/** @ignore */\nexport var hiddenStyleList = \"\\n display: none !important;\\n width: 1px !important;\\n height: 1px !important;\\n position: fixed !important;\\n z-index: -99 !important;\\n bottom: 0px !important;\\n right: 0px !important;\\n\";\n/** @ignore */\nexport var protocol = 'aspera://';\n/** @ignore */\nexport var baseInstallerUrl = 'https://downloads.ibmaspera.com/downloads/desktop';\n/** @ignore */\nexport var installerUrl = \"\".concat(baseInstallerUrl, \"/latest/stable\");\n","import { randomUUID } from '../helpers';\nimport { asperaSdk } from '../../index';\n/**\n * Enum defining different types of Safari extension events.\n */\nvar SafariExtensionEventType;\n(function (SafariExtensionEventType) {\n SafariExtensionEventType[\"Monitor\"] = \"Monitor\";\n SafariExtensionEventType[\"Ping\"] = \"Ping\";\n SafariExtensionEventType[\"Request\"] = \"Request\";\n})(SafariExtensionEventType || (SafariExtensionEventType = {}));\n/**\n * Global keep alive timeout to prevent recursion.\n */\nvar keepAliveTimeout;\n/**\n * Handles communication with the Safari extension using JSON-RPC over custom events.\n */\nvar SafariClient = /** @class */ (function () {\n /**\n * Initializes the SafariExtensionHandler instance.\n * Sets up the promise executor map and starts listening to extension events.\n */\n function SafariClient() {\n var _this = this;\n this.keepAliveInterval = 1000;\n this.lastPing = null;\n this.lastPong = null;\n this.safariExtensionEnabled = false;\n this.subscribedTransferActivity = false;\n /**\n * Sends a JSON-RPC request to the Safari extension.\n * @param method The method name to invoke on the extension.\n * @param payload Optional payload for the request.\n * @returns A Promise that resolves with the response from the extension.\n */\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return _this.dispatchPromiseEvent(SafariExtensionEventType.Request, method, payload);\n };\n this.promiseExecutors = new Map();\n this.listenResponseEvents();\n this.listenTransferActivityEvents();\n this.listenStatusEvents();\n this.listenClientStatusEvents();\n this.listenPongEvents();\n if (keepAliveTimeout) {\n clearTimeout(keepAliveTimeout);\n }\n this.keepAlive();\n }\n /**\n * Monitors transfer activity.\n * @returns A Promise that resolves with the response from the extension.\n */\n SafariClient.prototype.monitorTransferActivity = function () {\n var _this = this;\n var dispatchMonitorEvent = function () {\n var promise = _this.dispatchPromiseEvent(SafariExtensionEventType.Monitor, 'subscribe_transfer_activity', [asperaSdk.globals.appId]);\n return promise.then(function () {\n _this.subscribedTransferActivity = true;\n });\n };\n if (this.safariExtensionEnabled) {\n return dispatchMonitorEvent();\n }\n return new Promise(function (resolve, reject) {\n var extensionInterval = setInterval(function () {\n if (!_this.safariExtensionEnabled) {\n return;\n }\n dispatchMonitorEvent()\n .then(resolve)\n .catch(reject);\n clearInterval(extensionInterval);\n }, 1000);\n });\n };\n /**\n * Builds a JSON-RPC request object with a unique identifier.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n * @returns The constructed JSON-RPC request object.\n */\n SafariClient.prototype.buildRPCRequest = function (method, payload) {\n return {\n jsonrpc: '2.0',\n method: method,\n params: payload,\n id: randomUUID()\n };\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param request Optional JSON-RPC request payload to send with the event.\n */\n SafariClient.prototype.dispatchEvent = function (type, request) {\n var payload = {\n detail: request !== null && request !== void 0 ? request : {}\n };\n document.dispatchEvent(new CustomEvent(\"AsperaDesktop.\".concat(type), payload));\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n */\n SafariClient.prototype.dispatchPromiseEvent = function (type, method, payload) {\n var _this = this;\n var request = this.buildRPCRequest(method, payload);\n return new Promise(function (resolve, reject) {\n if (_this.safariExtensionEnabled) {\n _this.promiseExecutors.set(request.id, { resolve: resolve, reject: reject });\n _this.dispatchEvent(type, request);\n }\n else {\n console.warn('The Safari extension is disabled or unresponsive (dispatch event)');\n console.warn(\"Failed event: \".concat(JSON.stringify(request)));\n reject('The Safari extension is disabled or unresponsive (dispatch event)');\n }\n });\n };\n /**\n * Handles incoming JSON-RPC responses from the Safari extension.\n * Resolves or rejects promises based on the response.\n * @param response The JSON-RPC response object received from the extension.\n */\n SafariClient.prototype.handleResponse = function (response) {\n var requestId = response.id;\n var executor = this.promiseExecutors.get(requestId);\n if (!executor) {\n console.warn(\"Unable to find a promise executor for \".concat(requestId));\n console.warn(\"Response: \".concat(response));\n return;\n }\n this.promiseExecutors.delete(requestId);\n if (response.error) {\n executor.reject(response.error);\n return;\n }\n executor.resolve(response.result);\n };\n /**\n * Listens for 'AsperaDesktop.Response' events.\n */\n SafariClient.prototype.listenResponseEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Response', function (event) {\n if (!event.detail) {\n return;\n }\n _this.handleResponse(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.TransferActivity' events.\n */\n SafariClient.prototype.listenTransferActivityEvents = function () {\n document.addEventListener('AsperaDesktop.TransferActivity', function (event) {\n if (!event.detail) {\n return;\n }\n asperaSdk.activityTracking.handleTransferActivity(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Status' events.\n */\n SafariClient.prototype.listenStatusEvents = function () {\n document.addEventListener('AsperaDesktop.Status', function (event) {\n if (!event.detail) {\n return;\n }\n asperaSdk.activityTracking.handleWebSocketEvents(event.detail);\n });\n };\n /**\n * Listens for 'isAppAlive' events. This was introduced in version 1.0.9.\n */\n SafariClient.prototype.listenClientStatusEvents = function () {\n document.addEventListener('isAppAlive', function (event) {\n var _a;\n if (!((_a = event.detail) === null || _a === void 0 ? void 0 : _a.running)) {\n return;\n }\n asperaSdk.activityTracking.handleClientEvents(event.detail.running);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Pong' events.\n */\n SafariClient.prototype.listenPongEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Pong', function () {\n _this.lastPong = Date.now();\n _this.safariExtensionStatusChanged(true);\n });\n };\n /**\n * Sends a keep alive ping according to the defined interval.\n */\n SafariClient.prototype.keepAlive = function () {\n var _this = this;\n this.lastPing = Date.now();\n this.dispatchEvent(SafariExtensionEventType.Ping);\n keepAliveTimeout = setTimeout(function () {\n _this.keepAlive();\n }, this.keepAliveInterval);\n };\n /**\n * Listens for Safari extension status changes.\n * If the extension was disabled and enabled again after initializing the SDK, it\n * will call 'monitorTransferActivity' to resume transfer activities.\n */\n SafariClient.prototype.safariExtensionStatusChanged = function (isEnabled) {\n var _this = this;\n if (isEnabled === this.safariExtensionEnabled) {\n return;\n }\n this.safariExtensionEnabled = isEnabled;\n if (isEnabled) {\n if (this.subscribedTransferActivity) {\n var resumeTransferActivity_1 = function () {\n _this.monitorTransferActivity()\n .catch(function () {\n console.error('Failed to resume transfer activity, will try again in 1s');\n setTimeout(function () {\n resumeTransferActivity_1();\n }, 1000);\n });\n };\n resumeTransferActivity_1();\n }\n }\n else {\n asperaSdk.activityTracking.handleWebSocketEvents('CLOSED');\n this.promiseExecutors.forEach(function (promiseExecutor) {\n promiseExecutor.reject('The Safari extension is disabled or unresponsive (extension status)');\n });\n this.promiseExecutors.clear();\n }\n asperaSdk.activityTracking.handleSafariExtensionEvents(this.safariExtensionEnabled ? 'ENABLED' : 'DISABLED');\n };\n /**\n * Checks if the last pong received was longer than the max interval.\n */\n SafariClient.prototype.checkSafariExtensionStatus = function () {\n var pingPongDiff = this.lastPong - this.lastPing;\n if (this.lastPong == null || pingPongDiff < 0 || pingPongDiff > 500) {\n this.safariExtensionStatusChanged(false);\n }\n };\n return SafariClient;\n}());\nexport { SafariClient };\nexport var safariClient = new SafariClient();\nexport default {\n safariClient: safariClient\n};\n","/** @ignore */\nexport var messages = {\n callbackIsNotFunction: 'The provided callback is not a function',\n dragDropInitFailed: 'Unable to initialize drag-drop',\n dragDropInitFailedInit: 'Unable to initialize drag-drop as part of init flow',\n failedToGenerateIframe: 'Unable to generate IFRAME for download. Using new window',\n getInstallerError: 'Unable to get latest installers',\n getAllTransfersFailed: 'Unable to get all transfers',\n getTransferFailed: 'Unable to get transfer',\n invalidEndpoint: 'The specified endpoint is not a valid URL',\n loadingProtocol: 'Launching IBM Aspera for Desktop',\n modifyTransferFailed: 'Unable to modify transfer',\n notValidTransferSpec: 'The supplied transferSpec is not valid',\n removeTransferFailed: 'Unable to remove transfer',\n resumeTransferFailed: 'Unable to resume transfer',\n serverError: 'Unable to connect to IBM Aspera for Desktop server',\n serverNotVerified: 'IBM Aspera SDK has not been verified. Run test or init first',\n setBrandingFailed: 'Unable to set custom branding',\n showDirectoryFailed: 'Unable to show transfer directory',\n showSelectFileDialogFailed: 'Unable to show select file dialog',\n showSelectFolderDialogFailed: 'Unable to show select folder dialog',\n showPreferencesFailed: 'Unable to show preferences',\n stopTransferFailed: 'Unable to stop transfer',\n transferFailed: 'The transfer failed to initiate',\n unableToFindElementOnPage: 'Unable to find the element on the current page',\n unableToReadDropped: 'The dropped item could not be parsed. Please try selecting via the select file/folder option',\n websocketClosedError: 'The websocket was closed due to an error',\n websocketClosedUnexpect: 'The websocket was closed unexpectedly',\n websocketNotReady: 'The websocket is not ready. Run init first',\n};\n","import { baseInstallerUrl, installerUrl } from '../constants/constants';\n/**\n * Generates promise object that can be resolved or rejected via functions\n *\n * @returns an object containing the promise, the resolver and rejecter\n */\nexport var generatePromiseObjects = function () {\n var resolver;\n var rejecter;\n var promise = new Promise(function (resolve, reject) {\n resolver = resolve;\n rejecter = reject;\n });\n return {\n promise: promise,\n resolver: resolver,\n rejecter: rejecter\n };\n};\n/**\n * Log errors from Aspera SDK\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n */\nexport var errorLog = function (message, debugData) {\n if (debugData && debugData.code && debugData.message) {\n debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n if (typeof window === 'object') {\n if (!Array.isArray(window.asperaSdkLogs)) {\n window.asperaSdkLogs = [];\n }\n window.asperaSdkLogs.push({ message: message, debugData: debugData });\n }\n console.warn(\"Aspera SDK: \".concat(message), debugData);\n};\n/**\n * Generate error object for rejecter responses\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns object containing standardized error response\n */\nexport var generateErrorBody = function (message, debugData) {\n var errorResponse = {\n error: true,\n message: message\n };\n if (debugData && debugData.code && debugData.message) {\n errorResponse.debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n return errorResponse;\n};\n/**\n * Validate if transferSpec is valid for server communication\n *\n * @param transferSpec the transferSpec to test\n *\n * @returns boolean indicating whether supplied transferSpec is valid\n */\nexport var isValidTransferSpec = function (transferSpec) {\n if (transferSpec &&\n typeof transferSpec === 'object' &&\n typeof transferSpec.direction === 'string' &&\n typeof transferSpec.remote_host === 'string' &&\n Array.isArray(transferSpec.paths)) {\n return true;\n }\n return false;\n};\n/**\n * Returns a string indicating the websocket URL to use for talking to the server\n *\n * @returns a string of the full Websocket URL\n */\nexport var getWebsocketUrl = function (serverUrl) {\n var wsProtocol;\n if (serverUrl.indexOf('http:') === 0) {\n wsProtocol = 'ws';\n }\n else if (serverUrl.indexOf('https:') === 0) {\n wsProtocol = 'wss';\n }\n var url = serverUrl.replace('http://', '//').replace('https://', '//');\n return \"\".concat(wsProtocol, \":\").concat(url);\n};\n/**\n * Simple function to get the current platform.\n *\n * @returns a string indicating the current platform\n */\nexport var getCurrentPlatform = function () {\n var ua = navigator.userAgent;\n if (/Mac/.test(ua)) {\n return 'macos';\n }\n else if (/Win/.test(ua)) {\n return 'windows';\n }\n else if (/Linux/.test(ua)) {\n return 'linux';\n }\n else {\n return 'unknown';\n }\n};\n/**\n * Function used to create a random UUID\n *\n * @returns string\n */\nexport var randomUUID = function () {\n var _a;\n var fallback = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Number(((new Date().getTime() + 16) * Math.random()).toFixed()) % 16;\n if (c !== 'x') {\n // eslint-disable-next-line no-bitwise\n r = r & 0x3 | 0x8;\n }\n return r.toString(16);\n });\n };\n return ((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) ? window.crypto.randomUUID() : fallback();\n};\n/**\n * Return a rejected promise\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns a rejected promise\n */\nexport var throwError = function (message, debugData) {\n errorLog(message, debugData);\n return new Promise(function (resolve, reject) {\n reject(generateErrorBody(message, debugData));\n });\n};\n/**\n * Check if the given string is a valid URL\n *\n * @param url string to check if valid URL\n *\n * @returns boolean\n */\nexport var isValidURL = function (url) {\n try {\n new URL(url);\n return true;\n }\n catch (error) {\n return false;\n }\n};\n/**\n * Checks if the current browser is Safari.\n * @returns {boolean} Whether the browser is Safari.\n */\nexport var isSafari = function () {\n // eslint-disable-next-line\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;\n};\n/**\n * Get the URLs for installer management.\n *\n * @returns Info on URLs where installers live\n */\nexport var getInstallerUrls = function () {\n return {\n base: baseInstallerUrl,\n latest: installerUrl,\n };\n};\nexport default {\n errorLog: errorLog,\n generateErrorBody: generateErrorBody,\n generatePromiseObjects: generatePromiseObjects,\n getCurrentPlatform: getCurrentPlatform,\n getWebsocketUrl: getWebsocketUrl,\n isSafari: isSafari,\n isValidURL: isValidURL,\n isValidTransferSpec: isValidTransferSpec,\n randomUUID: randomUUID,\n throwError: throwError,\n getInstallerUrls: getInstallerUrls,\n};\n","import { errorLog, generatePromiseObjects, getWebsocketUrl } from './helpers';\nimport { messages } from '../constants/messages';\nimport { asperaSdk } from '../index';\nvar WebsocketService = /** @class */ (function () {\n function WebsocketService() {\n var _this = this;\n /** A map of requested subscription names and the callback for them */\n this.sockets = new Map();\n /** Indicator if the websocket is already connected */\n this.isConnected = false;\n /** Global promise object that resolves when init completes */\n this.initPromise = generatePromiseObjects();\n /**\n * This function handles when a connection is opened\n */\n this.handleOpen = function () {\n if (_this.isConnected || !_this.joinChannel()) {\n return;\n }\n _this.isConnected = true;\n _this.updateRpcPort();\n _this.notifyEvent('RECONNECT');\n };\n /**\n * This function handles completed subscription\n */\n this.handleClose = function () {\n if (_this.isConnected) {\n _this.isConnected = false;\n _this.notifyEvent('CLOSED');\n }\n if (!_this.globalSocket) {\n _this.handleNotReady();\n return;\n }\n _this.reconnect();\n };\n /**\n * This function handles errors received from the websocket\n */\n this.handleError = function () {\n errorLog(messages.websocketClosedError);\n };\n /**\n * This function handles messages received from the websocket\n */\n this.handleMessage = function (message) {\n var data;\n try {\n data = JSON.parse(message.data);\n }\n catch (error) {\n errorLog('Unable to parse Websocket message', { error: error, message: message });\n }\n // Message we get on subscription\n if (data && data.id === 1) {\n _this.initPromise.resolver(data);\n return;\n }\n var socket = _this.sockets.get(data.method);\n if (socket && data.params) {\n socket(data.params);\n }\n };\n }\n /** Log call for not being ready */\n WebsocketService.prototype.handleNotReady = function () {\n errorLog(messages.websocketNotReady);\n };\n /**\n * This function joins the channel to be able to subscribe to events\n */\n WebsocketService.prototype.joinChannel = function () {\n if (!this.globalSocket) {\n this.handleNotReady();\n return false;\n }\n this.globalSocket.send(JSON.stringify({ jsonrpc: '2.0', method: 'subscribe_transfer_activity', params: [asperaSdk.globals.appId], id: 1 }));\n return true;\n };\n /**\n * This function registers clients to listen to a certain message name. Returns any to allow functions to declare proper type\n *\n * @param messageName - the name of messages to listen to (one message name per subscription)\n * @param callback - the callback function\n */\n WebsocketService.prototype.registerMessage = function (messageName, callback) {\n if (!this.sockets.get(messageName)) {\n this.sockets.set(messageName, function (data) {\n callback(data.result);\n });\n }\n };\n /**\n *\n * @param callback This function registers clients to a certain WebSocket event.\n *\n * @param callback - the callback function to call with the event name.\n */\n WebsocketService.prototype.registerEvent = function (callback) {\n this.eventListener = callback;\n this.eventListener(this.isConnected ? 'RECONNECT' : 'CLOSED');\n };\n /**\n * This function starts the websocket subscription with the websocket provider\n *\n * @returns a promise that resolves when the websocket connection is established\n */\n WebsocketService.prototype.init = function () {\n this.connect();\n return this.initPromise.promise;\n };\n WebsocketService.prototype.connect = function () {\n var _this = this;\n this.getWebSocketConnection(33024, asperaSdk.globals.supportMultipleUsers ? 33029 : 33024)\n .then(function (webSocket) {\n _this.globalSocket = webSocket;\n _this.globalSocket.onerror = _this.handleError;\n _this.globalSocket.onclose = _this.handleClose;\n _this.globalSocket.onopen = _this.handleOpen;\n _this.globalSocket.onmessage = _this.handleMessage;\n _this.handleOpen();\n }).catch(function () {\n _this.reconnect();\n });\n };\n WebsocketService.prototype.reconnect = function () {\n var _this = this;\n if (this.globalSocket) {\n this.globalSocket.close();\n }\n setTimeout(function () {\n _this.connect();\n }, 1000);\n };\n WebsocketService.prototype.getWebSocketConnection = function (startPort, endPort) {\n var webSocketUrl = getWebsocketUrl(asperaSdk.globals.asperaAppUrl);\n var checkPort = function (port) {\n return new Promise(function (resolve, reject) {\n var webSocket = new WebSocket(\"\".concat(webSocketUrl, \":\").concat(port));\n webSocket.onopen = function () {\n resolve(webSocket);\n };\n webSocket.onerror = function () {\n reject(\"Connection failed on port \".concat(port));\n };\n });\n };\n return new Promise(function (resolve, reject) {\n var connectPort = function (port) {\n if (port > endPort) {\n return reject('No available WebSocket connection found');\n }\n checkPort(port)\n .then(function (ws) { return resolve(ws); })\n .catch(function (error) {\n connectPort(port + 1);\n });\n };\n connectPort(startPort);\n });\n };\n WebsocketService.prototype.notifyEvent = function (event) {\n if (typeof this.eventListener === 'function') {\n this.eventListener(event);\n }\n };\n WebsocketService.prototype.updateRpcPort = function () {\n if (!this.globalSocket) {\n return;\n }\n var url = new URL(this.globalSocket.url);\n asperaSdk.globals.rpcPort = Number(url.port);\n };\n return WebsocketService;\n}());\nexport { WebsocketService };\nexport var websocketService = new WebsocketService();\nexport default WebsocketService;\n","import { hiddenStyleList, installerUrl, protocol } from '../constants/constants';\nimport { messages } from '../constants/messages';\nimport { safariClient } from '../helpers/client/safari-client';\nimport { errorLog, isSafari } from '../helpers/helpers';\nimport { websocketService } from '../helpers/ws';\nimport { asperaSdk } from '../index';\nvar AsperaSdkGlobals = /** @class */ (function () {\n function AsperaSdkGlobals() {\n /** The URL of the IBM Aspera HTTP server to use with the SDK */\n this.asperaAppUrl = 'http://127.0.0.1';\n /** The URL of the IBM Aspera Desktop HTTP server to use with the SDK */\n this.rpcPort = 33024;\n /** The default URL to check for latest Aspera installers */\n this.installerUrl = installerUrl;\n /** Indication that the server has been verified as working */\n this.asperaAppVerified = false;\n /** Indicate if multiple session is supported */\n this.supportMultipleUsers = false;\n /** Map of drop zones created by querySelector */\n this.dropZonesCreated = new Map();\n }\n AsperaSdkGlobals.prototype.backupLaunchMethod = function (url) {\n window.alert(messages.loadingProtocol);\n window.location.href = url;\n };\n /**\n * Launch the IBM Aspera App via protocol url. By default, a hidden IFRAME attempts to\n * open the app but if that fails a fallback of opening a new window happens.\n */\n AsperaSdkGlobals.prototype.launch = function () {\n var _this = this;\n try {\n var element = document.createElement('iframe');\n element.src = protocol;\n element.onerror = function (error) {\n errorLog(messages.failedToGenerateIframe, error);\n _this.backupLaunchMethod(protocol);\n };\n element.setAttribute('style', hiddenStyleList);\n document.body.appendChild(element);\n }\n catch (error) {\n errorLog(messages.failedToGenerateIframe, error);\n this.backupLaunchMethod(protocol);\n }\n };\n return AsperaSdkGlobals;\n}());\nvar AsperaSdkInfo = /** @class */ (function () {\n function AsperaSdkInfo() {\n }\n return AsperaSdkInfo;\n}());\nexport { AsperaSdkInfo };\nvar TransferResponse = /** @class */ (function () {\n function TransferResponse() {\n }\n return TransferResponse;\n}());\nexport { TransferResponse };\nvar ActivityMessage = /** @class */ (function () {\n function ActivityMessage() {\n }\n return ActivityMessage;\n}());\nexport { ActivityMessage };\nvar ActivityTracking = /** @class */ (function () {\n function ActivityTracking() {\n /** Map of callbacks that receive transfer update events */\n this.activity_callbacks = new Map();\n /** Map of callbacks that received removed transfer events */\n this.removed_callbacks = new Map();\n /** Map of callbacks that receive connection events */\n this.event_callbacks = new Map();\n /** Map of callbacks that receive Safari extension events */\n this.safari_extension_callbacks = new Map();\n /** Keep track of the last WebSocket event **/\n this.lastWebSocketEvent = 'CLOSED';\n /** Keep track of the last notified WebSocket event **/\n this.lastNotifiedWebSocketEvent = undefined;\n /** Keep track of the last Safari extension event **/\n this.lastSafariExtensionEvent = 'DISABLED';\n }\n /**\n * Notify all consumers when a message is received from the websocket\n *\n * @param message the message received from the websocket\n */\n ActivityTracking.prototype.handleTransferActivity = function (message) {\n if (message.type === 'transferUpdated') {\n this.activity_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n if (message.type === 'transferRemoved') {\n this.removed_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n };\n /**\n * Handle and notify if needed when a connection webSocketEvent occurs. For example, when the SDK\n * websocket connection to IBM Aspera App is closed or reconnected.\n *\n * @param webSocketEvent the event type.\n */\n ActivityTracking.prototype.handleWebSocketEvents = function (webSocketEvent) {\n if (this.lastWebSocketEvent === webSocketEvent) {\n return;\n }\n this.lastWebSocketEvent = webSocketEvent;\n this.notifyWebSocketEvent(webSocketEvent);\n };\n /**\n * Notify all consumers when a connection webSocketEvent occurs.\n *\n * @param webSocketEvent the event type.\n */\n ActivityTracking.prototype.notifyWebSocketEvent = function (webSocketEvent) {\n if (this.lastNotifiedWebSocketEvent === webSocketEvent) {\n return;\n }\n this.lastNotifiedWebSocketEvent = webSocketEvent;\n this.event_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(webSocketEvent);\n }\n });\n };\n /**\n * Notify all consumers when the client changes status. For example, when\n * IBM Aspera App is launched or closed.\n *\n * @param running whether the client is running or not.\n */\n ActivityTracking.prototype.handleClientEvents = function (running) {\n var webSocketEvent;\n if (!running) {\n webSocketEvent = 'CLOSED';\n }\n else {\n webSocketEvent = this.lastWebSocketEvent;\n }\n this.notifyWebSocketEvent(webSocketEvent);\n };\n /**\n * Notify all consumers when a Safari extension safariExtensionEvent occurs (enabled/disabled).\n *\n * @param safariExtensionEvent the event type.\n */\n ActivityTracking.prototype.handleSafariExtensionEvents = function (safariExtensionEvent) {\n if (this.lastSafariExtensionEvent === safariExtensionEvent) {\n return;\n }\n this.safari_extension_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(safariExtensionEvent);\n }\n });\n this.lastSafariExtensionEvent = safariExtensionEvent;\n };\n /**\n * Set up the activity tracking with IBM Aspera.\n *\n * @returns a promise that resolves when the websocket connection is established.\n * Currently, this promise does not reject.\n */\n ActivityTracking.prototype.setup = function () {\n var _this = this;\n if (asperaSdk.globals.sessionId) {\n this.registerDesktopAppSession();\n }\n if (isSafari()) {\n return safariClient.monitorTransferActivity();\n }\n return websocketService.init()\n .then(function () {\n websocketService.registerMessage('transfer_activity', function (data) { return _this.handleTransferActivity(data); });\n websocketService.registerEvent(function (status) { return _this.handleWebSocketEvents(status); });\n });\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.activity_callbacks.size + 1);\n this.activity_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeCallback = function (id) {\n this.activity_callbacks.delete(id);\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setRemovedCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.removed_callbacks.size + 1);\n this.removed_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeRemovedCallback = function (id) {\n this.removed_callbacks.delete(id);\n };\n /**\n * Register a callback for getting websocket events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setWebSocketEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.event_callbacks.size + 1);\n this.event_callbacks.set(id, callback);\n callback(this.lastWebSocketEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeWebSocketEventCallback = function (id) {\n this.event_callbacks.delete(id);\n };\n /**\n * Register a callback for getting Safari extension events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setSafariExtensionEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n errorLog(messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.safari_extension_callbacks.size + 1);\n this.safari_extension_callbacks.set(id, callback);\n callback(this.lastSafariExtensionEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeSafariExtensionEventCallback = function (id) {\n this.safari_extension_callbacks.delete(id);\n };\n ActivityTracking.prototype.registerDesktopAppSession = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = \"aspera://initialize?app_id=\".concat(asperaSdk.globals.appId, \"&session_id=\").concat(asperaSdk.globals.sessionId);\n document.body.appendChild(iframe);\n setTimeout(function () {\n document.body.removeChild(iframe);\n }, 1000);\n };\n return ActivityTracking;\n}());\nexport { ActivityTracking };\nvar AsperaSdk = /** @class */ (function () {\n function AsperaSdk() {\n /** Global information about IBM Aspera */\n this.globals = new AsperaSdkGlobals();\n /** Activity tracking for watching transfers */\n this.activityTracking = new ActivityTracking();\n }\n Object.defineProperty(AsperaSdk.prototype, \"isReady\", {\n /**\n * Check if IBM Aspera is ready to be used and has been verified.\n *\n * @returns a boolean indicating if SDK can be used for requests\n */\n get: function () {\n return this.globals.asperaAppVerified && this.globals.appId !== '';\n },\n enumerable: false,\n configurable: true\n });\n return AsperaSdk;\n}());\nexport { AsperaSdk };\n","import { JSONRPCClient } from 'json-rpc-2.0';\nimport { generatePromiseObjects } from '../helpers';\nimport { asperaSdk } from '../../index';\nexport var getRpcServerUrl = function () {\n return \"\".concat(asperaSdk.globals.asperaAppUrl, \":\").concat(asperaSdk.globals.rpcPort);\n};\n/**\n * Wraps a promise like object and returns a promise that supports catch.\n *\n * @param promise the HTTP promise like to wrap\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nexport var handlePromiseLikeErrors = function (promise) {\n var promiseInfo = generatePromiseObjects();\n promise.then(function (response) {\n promiseInfo.resolver(response);\n }, function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\n/**\n * JSON RPC client using HTTP (fetch) as transport.\n */\nvar JSONRPCHttpClient = /** @class */ (function () {\n function JSONRPCHttpClient() {\n var _this = this;\n /**\n * Request handler for the JSON-RPC client. This function is called by the JSON-RPC library\n * after forming the RPC request.\n *\n * @param request JSON-RPC request to send to the server\n */\n this.handleRequest = function (request) {\n var options = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify(request),\n };\n var rpcServerURL = getRpcServerUrl();\n return fetch(rpcServerURL, options).then(function (response) {\n if (response.ok) {\n return response.json().then(function (rpcResponse) { return _this.client.receive(rpcResponse); });\n }\n else if (request.id !== undefined) {\n throw Promise.reject(response.statusText);\n }\n });\n };\n this.request = function (method, data) {\n return _this.client.request(method, data);\n };\n this.client = new JSONRPCClient(this.handleRequest);\n }\n return JSONRPCHttpClient;\n}());\n/**\n * Client used for making requests to Aspera.\n */\nvar HttpClient = /** @class */ (function () {\n function HttpClient() {\n var _this = this;\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return handlePromiseLikeErrors(_this.httpClient.request(method, payload));\n };\n this.httpClient = new JSONRPCHttpClient();\n }\n ;\n return HttpClient;\n}());\nexport var httpClient = new HttpClient();\nexport default {\n httpClient: httpClient,\n handlePromiseLikeErrors: handlePromiseLikeErrors,\n};\n","import { httpClient } from './http-client';\nimport { safariClient } from './safari-client';\nimport { isSafari } from '../helpers';\nexport var client = isSafari() ? safariClient : httpClient;\n","import { messages } from '../constants/messages';\nimport { client } from '../helpers/client/client';\nimport { errorLog, generateErrorBody, generatePromiseObjects, isValidTransferSpec, randomUUID, throwError } from '../helpers/helpers';\nimport { asperaSdk } from '../index';\n/**\n * Check if IBM Aspera for Desktop connection works. This function is called by init\n * when initializing the SDK. This function can be used at any point for checking.\n *\n * @returns a promise that resolves if server can connect or rejects if not\n */\nexport var testConnection = function () {\n return client.request('get_info')\n .then(function (data) {\n asperaSdk.globals.AsperaSdkInfo = data;\n asperaSdk.globals.asperaAppVerified = true;\n return data;\n });\n};\n/**\n * Initialize drag and drop.\n * @param initCall - Indicate if called via init flow and should not reject\n *\n * @returns a promise that resolves if the initialization was successful or not\n */\nexport var initDragDrop = function (initCall) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n client.request('init_drag_drop')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.dragDropInitFailed, error);\n if (initCall) {\n promiseInfo.resolver(false);\n errorLog(messages.dragDropInitFailedInit, error);\n }\n else {\n promiseInfo.rejecter(generateErrorBody(messages.dragDropInitFailed, error));\n }\n });\n return promiseInfo.promise;\n};\n/**\n * Initialize IBM Aspera client. If client cannot (reject/catch), then\n * client should attempt fixing server URL or trying again. If still fails disable UI elements.\n *\n * @param options initialization options:\n *\n * - `appId` the unique ID for the website. Transfers initiated during this session\n * will be associated with this ID. It is recommended to use a unique ID to keep transfer\n * information private from other websites.\n *\n * - `supportMultipleUsers` when enabled (defaults to false), the SDK will iterate over a port\n * range and generate a session id to determine the running instance of the desktop app for the\n * current user. This is needed when multiple users may be logged into the same machine\n * simultaneously, for example on a Windows Server.\n *\n * @returns a promise that resolves if IBM Aspera Desktop is running properly or\n * rejects if unable to connect\n */\nexport var init = function (options) {\n var _a, _b;\n var appId = (_a = options === null || options === void 0 ? void 0 : options.appId) !== null && _a !== void 0 ? _a : randomUUID();\n var supportMultipleUsers = (_b = options === null || options === void 0 ? void 0 : options.supportMultipleUsers) !== null && _b !== void 0 ? _b : false;\n asperaSdk.globals.appId = appId;\n if (supportMultipleUsers) {\n asperaSdk.globals.supportMultipleUsers = true;\n asperaSdk.globals.sessionId = randomUUID();\n }\n return asperaSdk.activityTracking.setup()\n .then(function () { return testConnection(); })\n .then(function () { return initDragDrop(true); })\n .catch(function (error) {\n errorLog(messages.serverError, error);\n asperaSdk.globals.asperaAppVerified = false;\n throw generateErrorBody(messages.serverError, error);\n });\n};\n/**\n * Start a transfer\n *\n * @param transferSpec standard transferSpec for transfer\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer\n *\n * @returns a promise that resolves if transfer initiation is successful and rejects if transfer cannot be started\n */\nexport var startTransfer = function (transferSpec, asperaSdkSpec) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n if (!isValidTransferSpec(transferSpec)) {\n return throwError(messages.notValidTransferSpec, { transferSpec: transferSpec });\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_spec: transferSpec,\n desktop_spec: asperaSdkSpec,\n app_id: asperaSdk.globals.appId,\n };\n client.request('start_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.transferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.transferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Register a callback event for getting transfer updates\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerActivityCallback = function (callback) {\n return asperaSdk.activityTracking.setCallback(callback);\n};\n/**\n * Remove a callback from the transfer callback\n *\n * @param id the ID returned by `registerActivityCallback`\n */\nexport var deregisterActivityCallback = function (id) {\n asperaSdk.activityTracking.removeCallback(id);\n};\n/**\n * Register a callback event for when a user removes or cancels a transfer\n * directly from IBM Aspera. This may also be called if IBM Aspera\n * is configured to automatically remove completed transfers.\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerRemovedCallback = function (callback) {\n return asperaSdk.activityTracking.setRemovedCallback(callback);\n};\n/**\n * Remove a callback from the removed transfer callback\n *\n * @param id the ID returned by `registerRemovedCallback`\n */\nexport var deregisterRemovedCallback = function (id) {\n asperaSdk.activityTracking.removeRemovedCallback(id);\n};\n/**\n * Register a callback for getting updates about the connection status of IBM Aspera SDK.\n *\n * For example, to be notified of when the SDK loses connection with the application or connection\n * is re-established. This can be useful if you want to handle the case where the user quits IBM Aspera\n * after `init` has already been called, and want to prompt the user to relaunch the application.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerStatusCallback = function (callback) {\n return asperaSdk.activityTracking.setWebSocketEventCallback(callback);\n};\n/**\n * Remove a callback from getting connection status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nexport var deregisterStatusCallback = function (id) {\n asperaSdk.activityTracking.removeWebSocketEventCallback(id);\n};\n/**\n * Register a callback for getting updates about the Safari extension status.\n *\n * This can be useful if you want to handle the case where the user enable or disable the Safari extension.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nexport var registerSafariExtensionStatusCallback = function (callback) {\n return asperaSdk.activityTracking.setSafariExtensionEventCallback(callback);\n};\n/**\n * Remove a callback from getting Safari extension status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nexport var deregisterSafariExtensionStatusCallback = function (id) {\n asperaSdk.activityTracking.removeSafariExtensionEventCallback(id);\n};\n/**\n * Remove a transfer. This will stop the transfer if it is in progress.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is removed and rejects if transfer cannot be removed\n */\nexport var removeTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('remove_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.removeTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.removeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Stop a transfer.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is stopped and rejects if transfer cannot be stopped\n */\nexport var stopTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('stop_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.stopTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.stopTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Resume a paused or failed transfer.\n *\n * @param id transfer uuid\n * @param options resume transfer options\n *\n * @returns a promise that resolves with the new transfer object if transfer is resumed\n */\nexport var resumeTransfer = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client.request('resume_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.resumeTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.resumeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Displays a file browser dialog for the user to select files.\n *\n * @param options file dialog options\n *\n * @returns a promise that resolves with the selected file(s) and rejects if user cancels dialog\n */\nexport var showSelectFileDialog = function (options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n options: options || {},\n app_id: asperaSdk.globals.appId,\n };\n client.request('show_file_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showSelectFileDialogFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showSelectFileDialogFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Displays a folder browser dialog for the user to select folders.\n *\n * @param options folder dialog options\n *\n * @returns a promise that resolves with the selected folder(s) and rejects if user cancels dialog\n */\nexport var showSelectFolderDialog = function (options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n options: options || {},\n app_id: asperaSdk.globals.appId,\n };\n client.request('show_folder_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showSelectFolderDialogFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showSelectFolderDialogFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Opens the IBM Aspera preferences page.\n *\n * @returns a promise that resolves when the preferences page is opened.\n */\nexport var showPreferences = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n client.request('open_preferences')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showPreferencesFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showPreferencesFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Get all transfers associated with the current application.\n *\n * @returns a promise that resolves with an array of transfers.\n */\nexport var getAllTransfers = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n app_id: asperaSdk.globals.appId,\n };\n client.request('get_all_transfers', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.getAllTransfersFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.getAllTransfersFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Get a specific transfer by ID.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves with the transfer.\n */\nexport var getTransfer = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('get_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.getTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.getTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Opens and highlights the downloaded file in Finder or Windows Explorer. If multiple files,\n * then only the first file will be selected.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if the file can be shown and rejects if not\n */\nexport var showDirectory = function (id) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n };\n client.request('show_directory', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.showDirectoryFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.showDirectoryFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Modify the speed of a running transfer.\n *\n * @param id transfer uuid\n * @param options transfer rate options\n *\n * @returns a promise that resolves if the transfer rate can be modified and rejects if not\n */\nexport var modifyTransfer = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client.request('modify_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.modifyTransferFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.modifyTransferFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Set the custom branding template to be used by IBM Aspera. If the app is already\n * configured to use a different branding, then the branding template you specify will be\n * stored by the app, allowing the end user to switch at any point.\n *\n * @param id custom branding template id. This should be consistent across page loads.\n * @param options custom branding options\n *\n * @returns a promise that resolves if the branding was properly set.\n */\nexport var setBranding = function (id, options) {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n var promiseInfo = generatePromiseObjects();\n var branding = {\n id: id,\n name: options.name,\n theme: options.theme,\n };\n var payload = {\n branding: branding,\n };\n client.request('update_branding', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n errorLog(messages.setBrandingFailed, error);\n promiseInfo.rejecter(generateErrorBody(messages.setBrandingFailed, error));\n });\n return promiseInfo.promise;\n};\n/**\n * Create a dropzone for the given element selector.\n *\n * @param callback the function to call once the files are dropped\n * @param elementSelector the selector of the element on the page that should watch for drop events\n */\nexport var createDropzone = function (callback, elementSelector) {\n var elements = document.querySelectorAll(elementSelector);\n if (!elements || !elements.length) {\n errorLog(messages.unableToFindElementOnPage);\n return;\n }\n var dragEvent = function (event) {\n event.preventDefault();\n };\n var dropEvent = function (event) {\n event.preventDefault();\n var files = [];\n if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length && event.dataTransfer.files[0]) {\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n var file = event.dataTransfer.files[i];\n files.push({\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n });\n }\n var payload = {\n files: files,\n app_id: asperaSdk.globals.appId,\n };\n client.request('dropped_files', payload)\n .then(function (data) { return callback({ event: event, files: data }); })\n .catch(function (error) {\n errorLog(messages.unableToReadDropped, error);\n });\n }\n };\n elements.forEach(function (element) {\n element.addEventListener('dragover', dragEvent);\n element.addEventListener('drop', dropEvent);\n asperaSdk.globals.dropZonesCreated.set(elementSelector, [{ event: 'dragover', callback: dragEvent }, { event: 'drop', callback: dropEvent }]);\n });\n};\n/**\n * Remove dropzone.\n *\n * @param elementSelector the selector of the element on the page that should remove\n */\nexport var removeDropzone = function (elementSelector) {\n var foundDropzone = asperaSdk.globals.dropZonesCreated.get(elementSelector);\n if (foundDropzone) {\n foundDropzone.forEach(function (data) {\n var elements = document.querySelectorAll(elementSelector);\n if (elements && elements.length) {\n elements.forEach(function (element) {\n element.removeEventListener(data.event, data.callback);\n });\n }\n });\n }\n};\n/**\n * Get metadata about the IBM Aspera installation.\n *\n * @returns a promise that returns information about the user's IBM Aspera installation.\n */\nexport var getInfo = function () {\n if (!asperaSdk.isReady) {\n return throwError(messages.serverNotVerified);\n }\n return new Promise(function (resolve, _) {\n resolve(asperaSdk.globals.AsperaSdkInfo);\n });\n};\n","import { AsperaSdk } from './models/aspera-sdk.model';\nimport { createDropzone, deregisterActivityCallback, deregisterRemovedCallback, deregisterSafariExtensionStatusCallback, deregisterStatusCallback, getAllTransfers, getInfo, getTransfer, init, initDragDrop, modifyTransfer, registerActivityCallback, registerRemovedCallback, registerSafariExtensionStatusCallback, registerStatusCallback, removeDropzone, removeTransfer, resumeTransfer, setBranding, showDirectory, showPreferences, showSelectFileDialog, showSelectFolderDialog, startTransfer, stopTransfer, testConnection, } from './app/core';\nimport { getInstallerInfo } from './app/installer';\nimport { getInstallerUrls, isSafari } from './helpers/helpers';\nexport var asperaSdk = new AsperaSdk();\nasperaSdk.init = init;\nasperaSdk.testConnection = testConnection;\nasperaSdk.startTransfer = startTransfer;\nasperaSdk.registerActivityCallback = registerActivityCallback;\nasperaSdk.deregisterActivityCallback = deregisterActivityCallback;\nasperaSdk.removeTransfer = removeTransfer;\nasperaSdk.showDirectory = showDirectory;\nasperaSdk.stopTransfer = stopTransfer;\nasperaSdk.resumeTransfer = resumeTransfer;\nasperaSdk.getAllTransfers = getAllTransfers;\nasperaSdk.getTransfer = getTransfer;\nasperaSdk.registerRemovedCallback = registerRemovedCallback;\nasperaSdk.deregisterRemovedCallback = deregisterRemovedCallback;\nasperaSdk.showSelectFileDialog = showSelectFileDialog;\nasperaSdk.showSelectFolderDialog = showSelectFolderDialog;\nasperaSdk.showPreferences = showPreferences;\nasperaSdk.modifyTransfer = modifyTransfer;\nasperaSdk.createDropzone = createDropzone;\nasperaSdk.removeDropzone = removeDropzone;\nasperaSdk.getInstallerInfo = getInstallerInfo;\nasperaSdk.registerStatusCallback = registerStatusCallback;\nasperaSdk.deregisterStatusCallback = deregisterStatusCallback;\nasperaSdk.registerSafariExtensionStatusCallback = registerSafariExtensionStatusCallback;\nasperaSdk.deregisterSafariExtensionStatusCallback = deregisterSafariExtensionStatusCallback;\nasperaSdk.initDragDrop = initDragDrop;\nasperaSdk.setBranding = setBranding;\nasperaSdk.getInfo = getInfo;\nasperaSdk.isSafari = isSafari;\nasperaSdk.getInstallerUrls = getInstallerUrls;\nvar launch = asperaSdk.globals.launch;\nasperaSdk.launch = launch;\nif (typeof window === 'object') {\n window.asperaSdk = asperaSdk;\n}\nexport { isSafari, init, testConnection, startTransfer, launch, registerActivityCallback, deregisterActivityCallback, removeTransfer, showDirectory, stopTransfer, resumeTransfer, getAllTransfers, getTransfer, registerRemovedCallback, deregisterRemovedCallback, showSelectFileDialog, showSelectFolderDialog, showPreferences, modifyTransfer, createDropzone, removeDropzone, initDragDrop, getInstallerInfo, registerStatusCallback, deregisterStatusCallback, registerSafariExtensionStatusCallback, deregisterSafariExtensionStatusCallback, setBranding, getInfo, getInstallerUrls, };\nexport default asperaSdk;\n","import { asperaSdk } from '../index';\nimport { errorLog, generateErrorBody, generatePromiseObjects, getCurrentPlatform, isValidURL, throwError } from '../helpers/helpers';\nimport { apiGet } from '../helpers/http';\nimport { messages } from '../constants/messages';\n/**\n * Get the latest Aspera SDK installer information such as download URL and version.\n *\n * @param options Installer info options\n *\n * @returns a promise that resolves with the installer info and rejects if there is an error\n */\nexport var getInstallerInfo = function (options) {\n if (options === void 0) { options = {}; }\n var url = options.endpoint || asperaSdk.globals.installerUrl;\n if (url.endsWith('/latest.json')) {\n url = url.replace('/latest.json', '');\n }\n if (!isValidURL(url)) {\n return throwError(messages.invalidEndpoint, { url: url });\n }\n var promiseInfo = generatePromiseObjects();\n apiGet(\"\".concat(url, \"/latest.json\")).then(function (response) {\n response.json().then(function (data) {\n if (options.endpoint) {\n for (var _i = 0, _a = data.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (!isValidURL(entry.url)) {\n entry.url = \"\".concat(options.endpoint, \"/\").concat(entry.url);\n }\n }\n }\n if (options.all) {\n promiseInfo.resolver(data);\n }\n else {\n var platform_1 = getCurrentPlatform();\n data.entries = data.entries.filter(function (entry) { return entry.platform === platform_1; });\n promiseInfo.resolver(data);\n }\n });\n }).catch(function (error) {\n errorLog(messages.getInstallerError, error);\n promiseInfo.rejecter(generateErrorBody(messages.getInstallerError, error));\n });\n return promiseInfo.promise;\n};\n","import { generatePromiseObjects } from './helpers';\n/**\n * Check HTTP promise response for server error response (non 2XX status) and reject promise is error\n *\n * @param promise the HTTP promise to check for HTTP status code of 2XX for success\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nexport var handlePromiseErrors = function (promise) {\n var promiseInfo = generatePromiseObjects();\n promise.then(function (response) {\n if (response.ok) {\n promiseInfo.resolver(response);\n }\n else {\n promiseInfo.rejecter(response);\n }\n return response;\n }).catch(function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\n/**\n * Make a GET for retrieving data from a server\n *\n * @param url the url string of the resource on the server\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nexport var apiGet = function (url) {\n return handlePromiseErrors(fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n }));\n};\n"],"names":["__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","Object","defineProperty","exports","JSONRPCClient","models_1","internal_1","_send","createID","idToResolveMap","Map","id","prototype","_createID","timeout","delay","overrideCreateJSONRPCErrorResponse","_this","createJSONRPCErrorResponse","DefaultErrorCode","timeoutRequest","ids","request","timeoutID","setTimeout","forEach","get","delete","clearTimeout","error","method","params","clientParams","requestWithID","requestAdvanced","Array","isArray","map","filter","isDefinedAndNonNull","response","_a","createJSONRPCRequest","undefined","JSONRPCErrorException","message","code","data","Error","requests","areRequestsOriginallyArray","requestsWithID","promises","set","promise","all","responses","send","receive","notify","createJSONRPCNotification","payload","rejectAllPendingRequests","clear","__createBinding","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__exportStar","p","hasOwnProperty","extendStatics","__extends","d","b","setPrototypeOf","__proto__","String","__","constructor","createJSONRPCSuccessResponse","JSONRPCErrorCode","isJSONRPCResponses","isJSONRPCResponse","isJSONRPCRequests","isJSONRPCRequest","isJSONRPCID","JSONRPC","jsonrpc","every","createJSONRPCError","_super","toObject","JSONRPCServerAndClient","server","client","options","errorListener","console","warn","applyServerMiddleware","middlewares","_i","arguments","applyMiddleware","hasMethod","name","addMethod","addMethodAdvanced","jsonRPCRequest","receiveAndSend","serverParams","__assign","assign","s","i","__spreadArray","to","from","pack","ar","l","slice","concat","JSONRPCServer","createInvalidRequestResponse","InvalidRequest","mapErrorToJSONRPCErrorResponse","defaultMapErrorToJSONRPCErrorResponse","nameToMethodDictionary","middleware","toJSONRPCMethod","mapResultToJSONRPCResponse","receiveJSON","json","tryParseRequestJSON","ParseError","JSON","parse","receiveMultiple","receiveSingle","isNonNull","callMethod","mapResponse","combineMiddlewares","reduce","middlewareReducer","prevMiddleware","nextMiddleware","onError","mapErrorToJSONRPCErrorResponseIfNecessary","noopMiddleware","MethodNotFound","InternalError","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","definition","key","obj","prop","SafariExtensionEventType","keepAliveTimeout","protocol","baseInstallerUrl","installerUrl","messages","generatePromiseObjects","resolver","rejecter","errorLog","debugData","window","asperaSdkLogs","generateErrorBody","errorResponse","randomUUID","crypto","replace","c","r","Number","Date","getTime","Math","random","toFixed","toString","throwError","isValidURL","url","URL","isSafari","test","navigator","userAgent","MSStream","safariClient","SafariClient","keepAliveInterval","lastPing","lastPong","safariExtensionEnabled","subscribedTransferActivity","dispatchPromiseEvent","Request","promiseExecutors","listenResponseEvents","listenTransferActivityEvents","listenStatusEvents","listenClientStatusEvents","listenPongEvents","keepAlive","monitorTransferActivity","dispatchMonitorEvent","Monitor","asperaSdk","globals","appId","extensionInterval","setInterval","catch","clearInterval","buildRPCRequest","dispatchEvent","type","detail","document","CustomEvent","stringify","handleResponse","requestId","executor","addEventListener","event","activityTracking","handleTransferActivity","handleWebSocketEvents","running","handleClientEvents","now","safariExtensionStatusChanged","Ping","isEnabled","resumeTransferActivity_1","promiseExecutor","handleSafariExtensionEvents","checkSafariExtensionStatus","pingPongDiff","websocketService","WebsocketService","sockets","isConnected","initPromise","handleOpen","joinChannel","updateRpcPort","notifyEvent","handleClose","globalSocket","reconnect","handleNotReady","handleError","handleMessage","socket","registerMessage","messageName","callback","registerEvent","eventListener","init","connect","getWebSocketConnection","supportMultipleUsers","webSocket","onerror","onclose","onopen","onmessage","close","startPort","endPort","webSocketUrl","serverUrl","wsProtocol","indexOf","getWebsocketUrl","asperaAppUrl","connectPort","port","WebSocket","checkPort","ws","rpcPort","AsperaSdkGlobals","asperaAppVerified","dropZonesCreated","backupLaunchMethod","alert","location","href","launch","element","createElement","src","setAttribute","appendChild","ActivityTracking","activity_callbacks","removed_callbacks","event_callbacks","safari_extension_callbacks","lastWebSocketEvent","lastNotifiedWebSocketEvent","lastSafariExtensionEvent","webSocketEvent","notifyWebSocketEvent","safariExtensionEvent","setup","sessionId","registerDesktopAppSession","status","setCallback","size","removeCallback","setRemovedCallback","removeRemovedCallback","setWebSocketEventCallback","removeWebSocketEventCallback","setSafariExtensionEventCallback","removeSafariExtensionEventCallback","iframe","style","display","removeChild","AsperaSdk","JSONRPCHttpClient","handleRequest","headers","rpcServerURL","fetch","ok","rpcResponse","statusText","httpClient","promiseInfo","testConnection","AsperaSdkInfo","initDragDrop","initCall","isReady","_b","startTransfer","transferSpec","asperaSdkSpec","direction","remote_host","paths","isValidTransferSpec","transfer_spec","desktop_spec","app_id","registerActivityCallback","deregisterActivityCallback","removeTransfer","transfer_id","showDirectory","stopTransfer","resumeTransfer","getAllTransfers","getTransfer","registerRemovedCallback","deregisterRemovedCallback","showSelectFileDialog","showSelectFolderDialog","showPreferences","modifyTransfer","createDropzone","elementSelector","elements","querySelectorAll","dragEvent","preventDefault","dropEvent","files","dataTransfer","file","lastModified","removeDropzone","foundDropzone","removeEventListener","getInstallerInfo","endpoint","endsWith","apiGet","entries","entry","platform_1","ua","platform","registerStatusCallback","deregisterStatusCallback","registerSafariExtensionStatusCallback","deregisterSafariExtensionStatusCallback","setBranding","branding","theme","getInfo","getInstallerUrls","base","latest"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"aspera-sdk.js","mappings":"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","sources":["webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/app/download.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/client.js","webpack://@ibm-aspera/sdk/./src/helpers/client/safari-client.ts","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/constants/constants.js","webpack://@ibm-aspera/sdk/./src/index.ts","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/index.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/helpers/helpers.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/models.js","webpack://@ibm-aspera/sdk/./src/helpers/http.ts","webpack://@ibm-aspera/sdk/./src/app/core.ts","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/helpers/http.js","webpack://@ibm-aspera/sdk/./src/http-gateway/upload.ts","webpack://@ibm-aspera/sdk/./src/http-gateway/index.ts","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/app/core.js","webpack://@ibm-aspera/sdk/./src/constants/messages.ts","webpack://@ibm-aspera/sdk/./node_modules/es6-promise/auto.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/server-and-client.js","webpack://@ibm-aspera/sdk/./src/constants/constants.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/client.ts","webpack://@ibm-aspera/sdk/./src/helpers/client/http-client.ts","webpack://@ibm-aspera/sdk/./src/connect/core.ts","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/internal.js","webpack://@ibm-aspera/sdk/./src/app/installer.ts","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/app/streaming.js","webpack://@ibm-aspera/sdk/./src/http-gateway/download.ts","webpack://@ibm-aspera/sdk/./src/http-gateway/core.ts","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/app/upload.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/index.js","webpack://@ibm-aspera/sdk/./node_modules/tslib/tslib.es6.mjs","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/constants/installer.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/constants/local-storage.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/constants/shared.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/constants/endpoints.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/logger.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/helpers/browser.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/helpers/globals.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/utils.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/extension/base-ext.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/extension/nmh.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/extension/safari.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/installer.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/constants/banner.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/npapi/npapi.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/npapi/index.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/http/index.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/http/http.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/constants/http.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/strategy/provider.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/request/handler.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/core/api.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/core/validators.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/core/request.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/connect.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/index.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/connect-sdk-js/dist/esm/core/aspera-web-global.model.js","webpack://@ibm-aspera/sdk/./src/helpers/ws.ts","webpack://@ibm-aspera/sdk/./src/helpers/helpers.ts","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/models/models.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/models/http-gateway-global.model.js","webpack://@ibm-aspera/sdk/./node_modules/@ibm-aspera/http-gateway-sdk-js/commonjs/constants/messages.js","webpack://@ibm-aspera/sdk/./src/models/aspera-sdk.model.ts","webpack://@ibm-aspera/sdk/./node_modules/es6-promise/dist/es6-promise.js","webpack://@ibm-aspera/sdk/./node_modules/json-rpc-2.0/dist/interfaces.js","webpack://@ibm-aspera/sdk/webpack/bootstrap","webpack://@ibm-aspera/sdk/webpack/runtime/define property getters","webpack://@ibm-aspera/sdk/webpack/runtime/global","webpack://@ibm-aspera/sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@ibm-aspera/sdk/webpack/runtime/make namespace object","webpack://@ibm-aspera/sdk/webpack/startup"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.download = void 0;\nvar http_1 = require(\"../helpers/http\");\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar core_1 = require(\"./core\");\n/**\n * Start a HTTP Gateway download. Progress is not provided on downloads, browser handles download directly\n * When in software mode the promise will return transfer_spec_id and the URL. The URL has not been used\n * therefore a client can open it and start the download using software specific methods (like file reader).\n *\n * @param transferSpec standard Connect transferSpec for downloading\n *\n * @returns a promise that resolves if download is started successfully or rejects if error occurs\n */\nvar download = function (transferSpec, options) {\n if (options === void 0) { options = {}; }\n if (!index_1.asperaHttpGateway.isReady) {\n (0, helpers_1.errorLog)(messages_1.messages.serverNotVerified);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.serverNotVerified));\n });\n }\n if (!(0, helpers_1.isValidTransferSpec)(transferSpec)) {\n (0, helpers_1.errorLog)(messages_1.messages.notValidTransferSpec);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.notValidTransferSpec, { transferSpec: transferSpec }));\n });\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n if (typeof options.zipRequire === 'boolean') {\n transferSpec.zip_required = options.zipRequire;\n }\n var payload = {\n transfer_spec: transferSpec\n };\n var finalServerUrl = options.serverUrlOverride ? (0, core_1.cleanupServerUrl)(options.serverUrlOverride) : index_1.asperaHttpGateway.globals.serverUrl;\n (0, http_1.apiPost)(\"\".concat(finalServerUrl, \"/v1/download\"), payload).then(function (response) {\n response.json().then(function (data) {\n if (data.transfer_spec_id) {\n var downloadUrl = \"\".concat(finalServerUrl, \"/v1/download/\").concat(data.transfer_spec_id);\n if (index_1.asperaHttpGateway.globals.softwareMode || (options === null || options === void 0 ? void 0 : options.disableAutoDownload)) {\n promiseInfo.resolver({\n transfer_spec_id: data.transfer_spec_id,\n url: downloadUrl,\n });\n return;\n }\n index_1.asperaHttpGateway.globals.triggerDownloadFromUrl(downloadUrl);\n promiseInfo.resolver();\n }\n else {\n (0, helpers_1.errorLog)(messages_1.messages.failedToGetDownloadUrl, { response: data });\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.failedToGetDownloadUrl, { response: data }));\n }\n });\n }).catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.downloadFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.downloadFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.download = download;\nexports.default = {\n download: exports.download\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCClient = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar JSONRPCClient = /** @class */ (function () {\n function JSONRPCClient(_send, createID) {\n this._send = _send;\n this.createID = createID;\n this.idToResolveMap = new Map();\n this.id = 0;\n }\n JSONRPCClient.prototype._createID = function () {\n if (this.createID) {\n return this.createID();\n }\n else {\n return ++this.id;\n }\n };\n JSONRPCClient.prototype.timeout = function (delay, overrideCreateJSONRPCErrorResponse) {\n var _this = this;\n if (overrideCreateJSONRPCErrorResponse === void 0) { overrideCreateJSONRPCErrorResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, \"Request timeout\");\n }; }\n var timeoutRequest = function (ids, request) {\n var timeoutID = setTimeout(function () {\n ids.forEach(function (id) {\n var resolve = _this.idToResolveMap.get(id);\n if (resolve) {\n _this.idToResolveMap.delete(id);\n resolve(overrideCreateJSONRPCErrorResponse(id));\n }\n });\n }, delay);\n return request().then(function (result) {\n clearTimeout(timeoutID);\n return result;\n }, function (error) {\n clearTimeout(timeoutID);\n return Promise.reject(error);\n });\n };\n var requestAdvanced = function (request, clientParams) {\n var ids = (!Array.isArray(request) ? [request] : request)\n .map(function (request) { return request.id; })\n .filter(isDefinedAndNonNull);\n return timeoutRequest(ids, function () {\n return _this.requestAdvanced(request, clientParams);\n });\n };\n return {\n request: function (method, params, clientParams) {\n var id = _this._createID();\n return timeoutRequest([id], function () {\n return _this.requestWithID(method, params, clientParams, id);\n });\n },\n requestAdvanced: function (request, clientParams) { return requestAdvanced(request, clientParams); },\n };\n };\n JSONRPCClient.prototype.request = function (method, params, clientParams) {\n return this.requestWithID(method, params, clientParams, this._createID());\n };\n JSONRPCClient.prototype.requestWithID = function (method, params, clientParams, id) {\n return __awaiter(this, void 0, void 0, function () {\n var request, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n request = (0, models_1.createJSONRPCRequest)(id, method, params);\n return [4 /*yield*/, this.requestAdvanced(request, clientParams)];\n case 1:\n response = _a.sent();\n if (response.result !== undefined && !response.error) {\n return [2 /*return*/, response.result];\n }\n else if (response.result === undefined && response.error) {\n return [2 /*return*/, Promise.reject(new models_1.JSONRPCErrorException(response.error.message, response.error.code, response.error.data))];\n }\n else {\n return [2 /*return*/, Promise.reject(new Error(\"An unexpected error occurred\"))];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCClient.prototype.requestAdvanced = function (requests, clientParams) {\n var _this = this;\n var areRequestsOriginallyArray = Array.isArray(requests);\n if (!Array.isArray(requests)) {\n requests = [requests];\n }\n var requestsWithID = requests.filter(function (request) {\n return isDefinedAndNonNull(request.id);\n });\n var promises = requestsWithID.map(function (request) {\n return new Promise(function (resolve) { return _this.idToResolveMap.set(request.id, resolve); });\n });\n var promise = Promise.all(promises).then(function (responses) {\n if (areRequestsOriginallyArray || !responses.length) {\n return responses;\n }\n else {\n return responses[0];\n }\n });\n return this.send(areRequestsOriginallyArray ? requests : requests[0], clientParams).then(function () { return promise; }, function (error) {\n requestsWithID.forEach(function (request) {\n _this.receive((0, models_1.createJSONRPCErrorResponse)(request.id, internal_1.DefaultErrorCode, (error && error.message) || \"Failed to send a request\"));\n });\n return promise;\n });\n };\n JSONRPCClient.prototype.notify = function (method, params, clientParams) {\n var request = (0, models_1.createJSONRPCNotification)(method, params);\n this.send(request, clientParams).then(undefined, function () { return undefined; });\n };\n JSONRPCClient.prototype.send = function (payload, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._send(payload, clientParams)];\n });\n });\n };\n JSONRPCClient.prototype.rejectAllPendingRequests = function (message) {\n this.idToResolveMap.forEach(function (resolve, id) {\n return resolve((0, models_1.createJSONRPCErrorResponse)(id, internal_1.DefaultErrorCode, message));\n });\n this.idToResolveMap.clear();\n };\n JSONRPCClient.prototype.receive = function (responses) {\n var _this = this;\n if (!Array.isArray(responses)) {\n responses = [responses];\n }\n responses.forEach(function (response) {\n var resolve = _this.idToResolveMap.get(response.id);\n if (resolve) {\n _this.idToResolveMap.delete(response.id);\n resolve(response);\n }\n });\n };\n return JSONRPCClient;\n}());\nexports.JSONRPCClient = JSONRPCClient;\nvar isDefinedAndNonNull = function (value) {\n return value !== undefined && value !== null;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.safariClient = exports.SafariClient = void 0;\nvar helpers_1 = require(\"../helpers\");\nvar index_1 = require(\"../../index\");\n/**\n * Enum defining different types of Safari extension events.\n */\nvar SafariExtensionEventType;\n(function (SafariExtensionEventType) {\n SafariExtensionEventType[\"Monitor\"] = \"Monitor\";\n SafariExtensionEventType[\"Ping\"] = \"Ping\";\n SafariExtensionEventType[\"Request\"] = \"Request\";\n})(SafariExtensionEventType || (SafariExtensionEventType = {}));\n/**\n * Global keep alive timeout to prevent recursion.\n */\nvar keepAliveTimeout;\n/**\n * Handles communication with the Safari extension using JSON-RPC over custom events.\n */\nvar SafariClient = /** @class */ (function () {\n /**\n * Initializes the SafariExtensionHandler instance.\n * Sets up the promise executor map and starts listening to extension events.\n */\n function SafariClient() {\n var _this = this;\n this.keepAliveInterval = 1000;\n this.lastPing = null;\n this.lastPong = null;\n this.safariExtensionEnabled = false;\n this.subscribedTransferActivity = false;\n /**\n * Sends a JSON-RPC request to the Safari extension.\n * @param method The method name to invoke on the extension.\n * @param payload Optional payload for the request.\n * @returns A Promise that resolves with the response from the extension.\n */\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return _this.dispatchPromiseEvent(SafariExtensionEventType.Request, method, payload);\n };\n this.promiseExecutors = new Map();\n this.listenResponseEvents();\n this.listenTransferActivityEvents();\n this.listenStatusEvents();\n this.listenClientStatusEvents();\n this.listenPongEvents();\n if (keepAliveTimeout) {\n clearTimeout(keepAliveTimeout);\n }\n this.keepAlive();\n }\n /**\n * Monitors transfer activity.\n * @returns A Promise that resolves with the response from the extension.\n */\n SafariClient.prototype.monitorTransferActivity = function () {\n var _this = this;\n var dispatchMonitorEvent = function () {\n var promise = _this.dispatchPromiseEvent(SafariExtensionEventType.Monitor, 'subscribe_transfer_activity', [index_1.asperaSdk.globals.appId]);\n return promise.then(function () {\n _this.subscribedTransferActivity = true;\n });\n };\n if (this.safariExtensionEnabled) {\n return dispatchMonitorEvent();\n }\n return new Promise(function (resolve, reject) {\n var extensionInterval = setInterval(function () {\n if (!_this.safariExtensionEnabled) {\n return;\n }\n dispatchMonitorEvent()\n .then(resolve)\n .catch(reject);\n clearInterval(extensionInterval);\n }, 1000);\n });\n };\n /**\n * Builds a JSON-RPC request object with a unique identifier.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n * @returns The constructed JSON-RPC request object.\n */\n SafariClient.prototype.buildRPCRequest = function (method, payload) {\n return {\n jsonrpc: '2.0',\n method: method,\n params: payload,\n id: (0, helpers_1.randomUUID)()\n };\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param request Optional JSON-RPC request payload to send with the event.\n */\n SafariClient.prototype.dispatchEvent = function (type, request) {\n var payload = {\n detail: request !== null && request !== void 0 ? request : {}\n };\n document.dispatchEvent(new CustomEvent(\"AsperaDesktop.\".concat(type), payload));\n };\n /**\n * Dispatches a custom event to the document to communicate with the Safari extension.\n * @param type The type of Safari extension event to dispatch.\n * @param method The method name to invoke on the extension.\n * @param payload Optional parameters for the method.\n */\n SafariClient.prototype.dispatchPromiseEvent = function (type, method, payload) {\n var _this = this;\n var request = this.buildRPCRequest(method, payload);\n return new Promise(function (resolve, reject) {\n if (_this.safariExtensionEnabled) {\n _this.promiseExecutors.set(request.id, { resolve: resolve, reject: reject });\n _this.dispatchEvent(type, request);\n }\n else {\n console.warn('The Safari extension is disabled or unresponsive (dispatch event)');\n console.warn(\"Failed event: \".concat((0, helpers_1.safeJsonString)(request)));\n reject('The Safari extension is disabled or unresponsive (dispatch event)');\n }\n });\n };\n /**\n * Handles incoming JSON-RPC responses from the Safari extension.\n * Resolves or rejects promises based on the response.\n * @param response The JSON-RPC response object received from the extension.\n */\n SafariClient.prototype.handleResponse = function (response) {\n var requestId = response.id;\n var executor = this.promiseExecutors.get(requestId);\n if (!executor) {\n console.warn(\"Unable to find a promise executor for \".concat(requestId));\n console.warn(\"Response: \".concat(response));\n return;\n }\n this.promiseExecutors.delete(requestId);\n if (response.error) {\n executor.reject(response.error);\n return;\n }\n executor.resolve(response.result);\n };\n /**\n * Listens for 'AsperaDesktop.Response' events.\n */\n SafariClient.prototype.listenResponseEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Response', function (event) {\n if (!event.detail) {\n return;\n }\n _this.handleResponse(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.TransferActivity' events.\n */\n SafariClient.prototype.listenTransferActivityEvents = function () {\n document.addEventListener('AsperaDesktop.TransferActivity', function (event) {\n if (!event.detail) {\n return;\n }\n index_1.asperaSdk.activityTracking.handleTransferActivity(event.detail);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Status' events.\n */\n SafariClient.prototype.listenStatusEvents = function () {\n document.addEventListener('AsperaDesktop.Status', function (event) {\n if (!event.detail) {\n return;\n }\n index_1.asperaSdk.activityTracking.handleWebSocketEvents(event.detail);\n });\n };\n /**\n * Listens for 'isAppAlive' events. This was introduced in version 1.0.9.\n */\n SafariClient.prototype.listenClientStatusEvents = function () {\n document.addEventListener('isAppAlive', function (event) {\n var _a;\n if (!((_a = event.detail) === null || _a === void 0 ? void 0 : _a.running)) {\n return;\n }\n index_1.asperaSdk.activityTracking.handleClientEvents(event.detail.running);\n });\n };\n /**\n * Listens for 'AsperaDesktop.Pong' events.\n */\n SafariClient.prototype.listenPongEvents = function () {\n var _this = this;\n document.addEventListener('AsperaDesktop.Pong', function () {\n _this.lastPong = Date.now();\n _this.safariExtensionStatusChanged(true);\n });\n };\n /**\n * Sends a keep alive ping according to the defined interval.\n */\n SafariClient.prototype.keepAlive = function () {\n var _this = this;\n this.lastPing = Date.now();\n this.dispatchEvent(SafariExtensionEventType.Ping);\n keepAliveTimeout = setTimeout(function () {\n _this.keepAlive();\n }, this.keepAliveInterval);\n };\n /**\n * Listens for Safari extension status changes.\n * If the extension was disabled and enabled again after initializing the SDK, it\n * will call 'monitorTransferActivity' to resume transfer activities.\n */\n SafariClient.prototype.safariExtensionStatusChanged = function (isEnabled) {\n var _this = this;\n if (isEnabled === this.safariExtensionEnabled) {\n return;\n }\n this.safariExtensionEnabled = isEnabled;\n if (isEnabled) {\n if (this.subscribedTransferActivity) {\n var resumeTransferActivity_1 = function () {\n _this.monitorTransferActivity()\n .catch(function () {\n console.error('Failed to resume transfer activity, will try again in 1s');\n setTimeout(function () {\n resumeTransferActivity_1();\n }, 1000);\n });\n };\n resumeTransferActivity_1();\n }\n }\n else {\n index_1.asperaSdk.activityTracking.handleWebSocketEvents('CLOSED');\n this.promiseExecutors.forEach(function (promiseExecutor) {\n promiseExecutor.reject('The Safari extension is disabled or unresponsive (extension status)');\n });\n this.promiseExecutors.clear();\n }\n index_1.asperaSdk.activityTracking.handleSafariExtensionEvents(this.safariExtensionEnabled ? 'ENABLED' : 'DISABLED');\n };\n /**\n * Checks if the last pong received was longer than the max interval.\n */\n SafariClient.prototype.checkSafariExtensionStatus = function () {\n var pingPongDiff = this.lastPong - this.lastPing;\n if (this.lastPong == null || pingPongDiff < 0 || pingPongDiff > 500) {\n this.safariExtensionStatusChanged(false);\n }\n };\n return SafariClient;\n}());\nexports.SafariClient = SafariClient;\nexports.safariClient = new SafariClient();\nexports.default = {\n safariClient: exports.safariClient\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dropContainerName = exports.keySplit = exports.hiddenStyleList = void 0;\n/** @ignore */\nexports.hiddenStyleList = \"\\n display: none !important;\\n width: 1px !important;\\n height: 1px !important;\\n position: fixed !important;\\n z-index: -99 !important;\\n bottom: 0px !important;\\n right: 0px !important;\\n\";\n/** @ignore */\nexports.keySplit = '-*ASPGTW*-';\n/** @ignore */\nexports.dropContainerName = 'http-dropzone-container';\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInstallerUrls = exports.getInfo = exports.setBranding = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.getInstallerInfo = exports.initDragDrop = exports.removeDropzone = exports.createDropzone = exports.modifyTransfer = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.getTransfer = exports.getAllTransfers = exports.resumeTransfer = exports.stopTransfer = exports.showDirectory = exports.removeTransfer = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.launch = exports.startTransfer = exports.testConnection = exports.init = exports.isSafari = exports.asperaSdk = void 0;\nvar aspera_sdk_model_1 = require(\"./models/aspera-sdk.model\");\nvar core_1 = require(\"./app/core\");\nObject.defineProperty(exports, \"createDropzone\", { enumerable: true, get: function () { return core_1.createDropzone; } });\nObject.defineProperty(exports, \"deregisterActivityCallback\", { enumerable: true, get: function () { return core_1.deregisterActivityCallback; } });\nObject.defineProperty(exports, \"deregisterStatusCallback\", { enumerable: true, get: function () { return core_1.deregisterStatusCallback; } });\nObject.defineProperty(exports, \"getAllTransfers\", { enumerable: true, get: function () { return core_1.getAllTransfers; } });\nObject.defineProperty(exports, \"getInfo\", { enumerable: true, get: function () { return core_1.getInfo; } });\nObject.defineProperty(exports, \"getTransfer\", { enumerable: true, get: function () { return core_1.getTransfer; } });\nObject.defineProperty(exports, \"init\", { enumerable: true, get: function () { return core_1.init; } });\nObject.defineProperty(exports, \"initDragDrop\", { enumerable: true, get: function () { return core_1.initDragDrop; } });\nObject.defineProperty(exports, \"modifyTransfer\", { enumerable: true, get: function () { return core_1.modifyTransfer; } });\nObject.defineProperty(exports, \"registerActivityCallback\", { enumerable: true, get: function () { return core_1.registerActivityCallback; } });\nObject.defineProperty(exports, \"registerStatusCallback\", { enumerable: true, get: function () { return core_1.registerStatusCallback; } });\nObject.defineProperty(exports, \"removeDropzone\", { enumerable: true, get: function () { return core_1.removeDropzone; } });\nObject.defineProperty(exports, \"removeTransfer\", { enumerable: true, get: function () { return core_1.removeTransfer; } });\nObject.defineProperty(exports, \"resumeTransfer\", { enumerable: true, get: function () { return core_1.resumeTransfer; } });\nObject.defineProperty(exports, \"setBranding\", { enumerable: true, get: function () { return core_1.setBranding; } });\nObject.defineProperty(exports, \"showDirectory\", { enumerable: true, get: function () { return core_1.showDirectory; } });\nObject.defineProperty(exports, \"showPreferences\", { enumerable: true, get: function () { return core_1.showPreferences; } });\nObject.defineProperty(exports, \"showSelectFileDialog\", { enumerable: true, get: function () { return core_1.showSelectFileDialog; } });\nObject.defineProperty(exports, \"showSelectFolderDialog\", { enumerable: true, get: function () { return core_1.showSelectFolderDialog; } });\nObject.defineProperty(exports, \"startTransfer\", { enumerable: true, get: function () { return core_1.startTransfer; } });\nObject.defineProperty(exports, \"stopTransfer\", { enumerable: true, get: function () { return core_1.stopTransfer; } });\nObject.defineProperty(exports, \"testConnection\", { enumerable: true, get: function () { return core_1.testConnection; } });\nvar installer_1 = require(\"./app/installer\");\nObject.defineProperty(exports, \"getInstallerInfo\", { enumerable: true, get: function () { return installer_1.getInstallerInfo; } });\nvar helpers_1 = require(\"./helpers/helpers\");\nObject.defineProperty(exports, \"getInstallerUrls\", { enumerable: true, get: function () { return helpers_1.getInstallerUrls; } });\nObject.defineProperty(exports, \"isSafari\", { enumerable: true, get: function () { return helpers_1.isSafari; } });\nvar httpGatewayCalls = __importStar(require(\"./http-gateway\"));\nexports.asperaSdk = new aspera_sdk_model_1.AsperaSdk();\nexports.asperaSdk.init = core_1.init;\nexports.asperaSdk.testConnection = core_1.testConnection;\nexports.asperaSdk.startTransfer = core_1.startTransfer;\nexports.asperaSdk.registerActivityCallback = core_1.registerActivityCallback;\nexports.asperaSdk.deregisterActivityCallback = core_1.deregisterActivityCallback;\nexports.asperaSdk.removeTransfer = core_1.removeTransfer;\nexports.asperaSdk.showDirectory = core_1.showDirectory;\nexports.asperaSdk.stopTransfer = core_1.stopTransfer;\nexports.asperaSdk.resumeTransfer = core_1.resumeTransfer;\nexports.asperaSdk.getAllTransfers = core_1.getAllTransfers;\nexports.asperaSdk.getTransfer = core_1.getTransfer;\nexports.asperaSdk.showSelectFileDialog = core_1.showSelectFileDialog;\nexports.asperaSdk.showSelectFolderDialog = core_1.showSelectFolderDialog;\nexports.asperaSdk.showPreferences = core_1.showPreferences;\nexports.asperaSdk.modifyTransfer = core_1.modifyTransfer;\nexports.asperaSdk.createDropzone = core_1.createDropzone;\nexports.asperaSdk.removeDropzone = core_1.removeDropzone;\nexports.asperaSdk.getInstallerInfo = installer_1.getInstallerInfo;\nexports.asperaSdk.registerStatusCallback = core_1.registerStatusCallback;\nexports.asperaSdk.deregisterStatusCallback = core_1.deregisterStatusCallback;\nexports.asperaSdk.initDragDrop = core_1.initDragDrop;\nexports.asperaSdk.setBranding = core_1.setBranding;\nexports.asperaSdk.getInfo = core_1.getInfo;\nexports.asperaSdk.isSafari = helpers_1.isSafari;\nexports.asperaSdk.getInstallerUrls = helpers_1.getInstallerUrls;\nexports.asperaSdk.httpGatewayCalls = httpGatewayCalls;\nvar launch = exports.asperaSdk.globals.launch;\nexports.launch = launch;\nexports.asperaSdk.launch = launch;\nif (typeof window === 'object') {\n window.asperaSdk = exports.asperaSdk;\n}\nexports.default = exports.asperaSdk;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.startStream = exports.injectStreamToDom = exports.removeDropzone = exports.createDropzone = exports.getFoldersForUploadPromise = exports.getFoldersForUpload = exports.getFilesForUploadPromise = exports.getFilesForUpload = exports.upload = exports.download = exports.removeTransfer = exports.cancelTransfer = exports.clearNonActiveTransfers = exports.getAllTransfers = exports.getTransferById = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.testHttpGatewayConnection = exports.initHttpGateway = exports.asperaHttpGateway = void 0;\nrequire('es6-promise').polyfill();\nvar http_gateway_global_model_1 = require(\"./models/http-gateway-global.model\");\nvar core_1 = require(\"./app/core\");\nvar download_1 = require(\"./app/download\");\nvar upload_1 = require(\"./app/upload\");\nvar streaming_1 = require(\"./app/streaming\");\nexports.asperaHttpGateway = new http_gateway_global_model_1.HttpGateway();\nexports.asperaHttpGateway.initHttpGateway = core_1.initHttpGateway;\nexports.asperaHttpGateway.testHttpGatewayConnection = core_1.testHttpGatewayConnection;\nexports.asperaHttpGateway.download = download_1.download;\nexports.asperaHttpGateway.upload = upload_1.upload;\nexports.asperaHttpGateway.getFilesForUpload = upload_1.getFilesForUpload;\nexports.asperaHttpGateway.getFilesForUploadPromise = upload_1.getFilesForUploadPromise;\nexports.asperaHttpGateway.getFoldersForUpload = upload_1.getFoldersForUpload;\nexports.asperaHttpGateway.getFoldersForUploadPromise = upload_1.getFoldersForUploadPromise;\nexports.asperaHttpGateway.createDropzone = upload_1.createDropzone;\nexports.asperaHttpGateway.removeDropzone = upload_1.removeDropzone;\nexports.asperaHttpGateway.registerActivityCallback = core_1.registerActivityCallback;\nexports.asperaHttpGateway.deregisterActivityCallback = core_1.deregisterActivityCallback;\nexports.asperaHttpGateway.getTransferById = core_1.getTransferById;\nexports.asperaHttpGateway.getAllTransfers = core_1.getAllTransfers;\nexports.asperaHttpGateway.clearNonActiveTransfers = core_1.clearNonActiveTransfers;\nexports.asperaHttpGateway.removeTransfer = core_1.removeTransfer;\nexports.asperaHttpGateway.cancelTransfer = core_1.cancelTransfer;\nexports.asperaHttpGateway.startStream = streaming_1.startStream;\nexports.asperaHttpGateway.injectStreamToDom = streaming_1.injectStreamToDom;\nif (typeof window === 'object') {\n window.onbeforeunload = exports.asperaHttpGateway.checkForPageLeave;\n window.addEventListener('beforeunload', exports.asperaHttpGateway.checkForPageLeave);\n window.asperaHttpGateway = exports.asperaHttpGateway;\n}\nvar core_2 = require(\"./app/core\");\nObject.defineProperty(exports, \"initHttpGateway\", { enumerable: true, get: function () { return core_2.initHttpGateway; } });\nObject.defineProperty(exports, \"testHttpGatewayConnection\", { enumerable: true, get: function () { return core_2.testHttpGatewayConnection; } });\nObject.defineProperty(exports, \"registerActivityCallback\", { enumerable: true, get: function () { return core_2.registerActivityCallback; } });\nObject.defineProperty(exports, \"deregisterActivityCallback\", { enumerable: true, get: function () { return core_2.deregisterActivityCallback; } });\nObject.defineProperty(exports, \"getTransferById\", { enumerable: true, get: function () { return core_2.getTransferById; } });\nObject.defineProperty(exports, \"getAllTransfers\", { enumerable: true, get: function () { return core_2.getAllTransfers; } });\nObject.defineProperty(exports, \"clearNonActiveTransfers\", { enumerable: true, get: function () { return core_2.clearNonActiveTransfers; } });\nObject.defineProperty(exports, \"cancelTransfer\", { enumerable: true, get: function () { return core_2.cancelTransfer; } });\nObject.defineProperty(exports, \"removeTransfer\", { enumerable: true, get: function () { return core_2.removeTransfer; } });\nvar download_2 = require(\"./app/download\");\nObject.defineProperty(exports, \"download\", { enumerable: true, get: function () { return download_2.download; } });\nvar upload_2 = require(\"./app/upload\");\nObject.defineProperty(exports, \"upload\", { enumerable: true, get: function () { return upload_2.upload; } });\nObject.defineProperty(exports, \"getFilesForUpload\", { enumerable: true, get: function () { return upload_2.getFilesForUpload; } });\nObject.defineProperty(exports, \"getFilesForUploadPromise\", { enumerable: true, get: function () { return upload_2.getFilesForUploadPromise; } });\nObject.defineProperty(exports, \"getFoldersForUpload\", { enumerable: true, get: function () { return upload_2.getFoldersForUpload; } });\nObject.defineProperty(exports, \"getFoldersForUploadPromise\", { enumerable: true, get: function () { return upload_2.getFoldersForUploadPromise; } });\nObject.defineProperty(exports, \"createDropzone\", { enumerable: true, get: function () { return upload_2.createDropzone; } });\nObject.defineProperty(exports, \"removeDropzone\", { enumerable: true, get: function () { return upload_2.removeDropzone; } });\nvar streaming_2 = require(\"./app/streaming\");\nObject.defineProperty(exports, \"injectStreamToDom\", { enumerable: true, get: function () { return streaming_2.injectStreamToDom; } });\nObject.defineProperty(exports, \"startStream\", { enumerable: true, get: function () { return streaming_2.startStream; } });\nexports.default = {\n asperaHttpGateway: exports.asperaHttpGateway,\n initHttpGateway: core_1.initHttpGateway,\n testHttpGatewayConnection: core_1.testHttpGatewayConnection,\n download: download_1.download,\n upload: upload_1.upload,\n getFilesForUpload: upload_1.getFilesForUpload,\n getFilesForUploadPromise: upload_1.getFilesForUploadPromise,\n getFoldersForUpload: upload_1.getFoldersForUpload,\n getFoldersForUploadPromise: upload_1.getFoldersForUploadPromise,\n createDropzone: upload_1.createDropzone,\n removeDropzone: upload_1.removeDropzone,\n registerActivityCallback: core_1.registerActivityCallback,\n deregisterActivityCallback: core_1.deregisterActivityCallback,\n getTransferById: core_1.getTransferById,\n getAllTransfers: core_1.getAllTransfers,\n clearNonActiveTransfers: core_1.clearNonActiveTransfers,\n removeTransfer: core_1.removeTransfer,\n cancelTransfer: core_1.cancelTransfer,\n startStream: streaming_1.startStream,\n injectStreamToDom: streaming_1.injectStreamToDom\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWebsocketUrl = exports.getFeatureFlag = exports.iterableToArray = exports.getFilesForTransfer = exports.folderTransferSpecExplode = exports.parseFilesFromSpec = exports.isValidForm = exports.checkChildrenForFiles = exports.isValidTransferSpec = exports.isValidUrl = exports.generateErrorBody = exports.errorLog = exports.generatePromiseObjects = void 0;\nvar index_1 = require(\"../index\");\nvar constants_1 = require(\"../constants/constants\");\nvar messages_1 = require(\"../constants/messages\");\n/**\n * Generates promise object that can be resolved or rejected via functions\n *\n * @returns an object containing the promise, the resolver and rejecter\n */\nvar generatePromiseObjects = function () {\n var resolver;\n var rejecter;\n var promise = new Promise(function (resolve, reject) {\n resolver = resolve;\n rejecter = reject;\n });\n return {\n promise: promise,\n resolver: resolver,\n rejecter: rejecter\n };\n};\nexports.generatePromiseObjects = generatePromiseObjects;\n/**\n * Log errors from HTTP Gateway SDK\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n */\nvar errorLog = function (message, debugData) {\n if (typeof window === 'object') {\n if (!Array.isArray(window.httpGatewayLogs)) {\n window.httpGatewayLogs = [];\n }\n window.httpGatewayLogs.push({ message: message, debugData: debugData });\n }\n console.warn(\"Aspera HTTP Gateway SDK: \".concat(message), debugData);\n};\nexports.errorLog = errorLog;\n/**\n * Generate error object for rejecter responses\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns object containing standardized error response\n */\nvar generateErrorBody = function (message, debugData) {\n var errorResponse = {\n error: true,\n message: message\n };\n if (debugData) {\n errorResponse.debugData = debugData;\n }\n return errorResponse;\n};\nexports.generateErrorBody = generateErrorBody;\n/**\n * Validate if URL is valid URL\n *\n * @param serverUrl the url to test\n *\n * @returns boolean indicating whether supplied url is valid\n */\nvar isValidUrl = function (url) {\n if (url &&\n typeof url === 'string' &&\n url.indexOf('//') > -1) {\n return true;\n }\n return false;\n};\nexports.isValidUrl = isValidUrl;\n/**\n * Validate if transferSpec is valid for server communication\n *\n * @param transferSpec the transferSpec to test\n *\n * @returns boolean indicating whether supplied transferSpec is valid\n */\nvar isValidTransferSpec = function (transferSpec) {\n if (transferSpec &&\n typeof transferSpec === 'object' &&\n typeof transferSpec.direction === 'string' &&\n typeof transferSpec.remote_host === 'string' &&\n Array.isArray(transferSpec.paths)) {\n return true;\n }\n return false;\n};\nexports.isValidTransferSpec = isValidTransferSpec;\n/**\n * Get files from a form\n *\n * @param children form children list\n *\n * @returns an array of Files pulled from an HTML form\n */\nvar checkChildrenForFiles = function (children) {\n var filesFromForm = [];\n children.forEach(function (child) {\n if (child.files) {\n for (var i = 0; i < child.files.length; i++) {\n filesFromForm.push(child.files[i]);\n }\n }\n });\n return filesFromForm;\n};\nexports.checkChildrenForFiles = checkChildrenForFiles;\n/**\n * Validate if form has required items\n *\n * @param form HTML form element\n */\nvar isValidForm = function (form) {\n if (form &&\n typeof form === 'object' &&\n form.nodeType &&\n form.tagName === 'FORM') {\n return true;\n }\n return false;\n};\nexports.isValidForm = isValidForm;\n/**\n * Take a list of files and match them to a provided transferSpec to find only files to use\n *\n * @param files list of files in JavaScript memory\n * @param transferSpec the transferSpec to compare to for what files to use\n */\nvar parseFilesFromSpec = function (files, transferSpec) {\n var transferSpecFilesMap = new Map();\n var filesAddedList = new Map();\n transferSpec.paths.forEach(function (path) {\n transferSpecFilesMap.set(path.source, path);\n });\n return files.filter(function (file) {\n if (filesAddedList.get(file.name)) {\n return false;\n }\n var specPath = transferSpecFilesMap.get(file.name);\n if (specPath) {\n specPath.file_size = file.size;\n filesAddedList.set(file.name, true);\n }\n return !!specPath;\n });\n};\nexports.parseFilesFromSpec = parseFilesFromSpec;\n/**\n * Take a transferSpec and find folders being used in the form and explode for uploading and explode transferSpec to know all files in folder\n *\n * @param formId the form item to use for parsing\n * @param transferSpec he transfer spec to test with for file list\n *\n * @returns object with files to add to upload and a new transferSpec Path array to use with exploded files\n */\nvar folderTransferSpecExplode = function (formId, transferSpec) {\n var _a;\n var folderList = index_1.asperaHttpGateway.globals.getOrCreateFolderDataList(formId);\n var folderDropList = index_1.asperaHttpGateway.globals.getOrCreateFolderDataList(constants_1.dropContainerName);\n var newPaths = [];\n var foundFiles = [];\n var handleFolderData = function (file, path) {\n foundFiles.push(file);\n newPaths.push({\n source: file.asperaDropPath || file.webkitRelativePath || file.name,\n destination: path.destination,\n });\n };\n (_a = transferSpec.paths) === null || _a === void 0 ? void 0 : _a.forEach(function (path) {\n if (folderList.get(path.source)) {\n folderList.get(path.source).files.forEach(function (file) {\n handleFolderData(file, path);\n });\n }\n else if (folderDropList.get(path.source)) {\n folderDropList.get(path.source).files.forEach(function (file) {\n handleFolderData(file, path);\n });\n }\n else {\n newPaths.push(path);\n }\n });\n return {\n files: foundFiles,\n newPath: newPaths,\n };\n};\nexports.folderTransferSpecExplode = folderTransferSpecExplode;\n/**\n * Return array of File items to use for transfer\n *\n * @param formId the form item to use for parsing\n * @param transferSpec the transfer spec to test with for file list\n *\n * @returns the array of Files to use\n */\nvar getFilesForTransfer = function (formId, transferSpec) {\n var form = index_1.asperaHttpGateway.globals.createOrUseForm(formId);\n if (!(0, exports.isValidForm)(form)) {\n return [];\n }\n var filesFromForm = (0, exports.checkChildrenForFiles)(form.childNodes);\n var dropFiles = index_1.asperaHttpGateway.globals.getOrCreateFormFileListFromDrop(constants_1.dropContainerName);\n dropFiles.forEach(function (file) {\n filesFromForm.push(file);\n });\n return (0, exports.parseFilesFromSpec)(filesFromForm, transferSpec);\n};\nexports.getFilesForTransfer = getFilesForTransfer;\n/**\n * Convert an irritable into an array. This is useful for taking Maps and making Arrays (Map.values() Map.keys())\n *\n * @param iterable - an iterable to take and convert to an array\n *\n * @returns an array containing the iterable values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar iterableToArray = function (iterable) {\n var newArray = [];\n (function addItem() {\n var value = iterable.next();\n if (!value.done) {\n newArray.push(value.value);\n addItem();\n }\n }());\n return newArray;\n};\nexports.iterableToArray = iterableToArray;\n/**\n * Figure out which feature to use based on current version of system.\n *\n * @param featureFlag - name of the feature flag to test\n *\n * @returns indicator if feature should be used\n */\nvar getFeatureFlag = function (featureFlag) {\n var _a;\n if (!((_a = index_1.asperaHttpGateway.globals.serverInfo) === null || _a === void 0 ? void 0 : _a.version)) {\n (0, exports.errorLog)(messages_1.messages.serverNotVerified);\n return false;\n }\n var versionData = index_1.asperaHttpGateway.globals.serverInfo.version.split('.');\n var major = versionData[0] ? Number(versionData[0]) : 0;\n var minor = versionData[1] ? Number(versionData[1]) : 0;\n var patch = versionData[2] ? Number(versionData[2]) : 0;\n var numberBased = (major * 10000000000) + (minor * 100000) + patch;\n switch (featureFlag) {\n case 'noBase64Encoding':\n return numberBased >= 20000300000;\n }\n};\nexports.getFeatureFlag = getFeatureFlag;\n/**\n * Returns a string indicating the websocket URL to use for talking to the server\n *\n * @returns a string of the full Websocket URL\n */\nvar getWebsocketUrl = function (serverUrl, protocol) {\n var wsProtocol;\n if (serverUrl.indexOf('http:') === 0) {\n wsProtocol = 'ws';\n }\n else if (serverUrl.indexOf('https:') === 0) {\n wsProtocol = 'wss';\n }\n else {\n wsProtocol = protocol === 'https:' ? 'wss' : 'ws';\n }\n var url = serverUrl.replace('http://', '//').replace('https://', '//');\n return \"\".concat(wsProtocol, \":\").concat(url, \"/\").concat((0, exports.getFeatureFlag)('noBase64Encoding') ? 'v2' : 'v1', \"/upload\");\n};\nexports.getWebsocketUrl = getWebsocketUrl;\nexports.default = {\n generatePromiseObjects: exports.generatePromiseObjects,\n errorLog: exports.errorLog,\n generateErrorBody: exports.generateErrorBody,\n isValidUrl: exports.isValidUrl,\n isValidTransferSpec: exports.isValidTransferSpec,\n checkChildrenForFiles: exports.checkChildrenForFiles,\n isValidForm: exports.isValidForm,\n getFilesForTransfer: exports.getFilesForTransfer,\n folderTransferSpecExplode: exports.folderTransferSpecExplode,\n parseFilesFromSpec: exports.parseFilesFromSpec,\n iterableToArray: exports.iterableToArray,\n getFeatureFlag: exports.getFeatureFlag,\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createJSONRPCNotification = exports.createJSONRPCRequest = exports.createJSONRPCSuccessResponse = exports.createJSONRPCErrorResponse = exports.JSONRPCErrorCode = exports.JSONRPCErrorException = exports.isJSONRPCResponses = exports.isJSONRPCResponse = exports.isJSONRPCRequests = exports.isJSONRPCRequest = exports.isJSONRPCID = exports.JSONRPC = void 0;\nexports.JSONRPC = \"2.0\";\nvar isJSONRPCID = function (id) {\n return typeof id === \"string\" || typeof id === \"number\" || id === null;\n};\nexports.isJSONRPCID = isJSONRPCID;\nvar isJSONRPCRequest = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.method !== undefined &&\n payload.result === undefined &&\n payload.error === undefined);\n};\nexports.isJSONRPCRequest = isJSONRPCRequest;\nvar isJSONRPCRequests = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCRequest);\n};\nexports.isJSONRPCRequests = isJSONRPCRequests;\nvar isJSONRPCResponse = function (payload) {\n return (payload.jsonrpc === exports.JSONRPC &&\n payload.id !== undefined &&\n (payload.result !== undefined || payload.error !== undefined));\n};\nexports.isJSONRPCResponse = isJSONRPCResponse;\nvar isJSONRPCResponses = function (payload) {\n return Array.isArray(payload) && payload.every(exports.isJSONRPCResponse);\n};\nexports.isJSONRPCResponses = isJSONRPCResponses;\nvar createJSONRPCError = function (code, message, data) {\n var error = { code: code, message: message };\n if (data != null) {\n error.data = data;\n }\n return error;\n};\nvar JSONRPCErrorException = /** @class */ (function (_super) {\n __extends(JSONRPCErrorException, _super);\n function JSONRPCErrorException(message, code, data) {\n var _this = _super.call(this, message) || this;\n // Manually set the prototype to fix TypeScript issue:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(_this, JSONRPCErrorException.prototype);\n _this.code = code;\n _this.data = data;\n return _this;\n }\n JSONRPCErrorException.prototype.toObject = function () {\n return createJSONRPCError(this.code, this.message, this.data);\n };\n return JSONRPCErrorException;\n}(Error));\nexports.JSONRPCErrorException = JSONRPCErrorException;\nvar JSONRPCErrorCode;\n(function (JSONRPCErrorCode) {\n JSONRPCErrorCode[JSONRPCErrorCode[\"ParseError\"] = -32700] = \"ParseError\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidRequest\"] = -32600] = \"InvalidRequest\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"MethodNotFound\"] = -32601] = \"MethodNotFound\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InvalidParams\"] = -32602] = \"InvalidParams\";\n JSONRPCErrorCode[JSONRPCErrorCode[\"InternalError\"] = -32603] = \"InternalError\";\n})(JSONRPCErrorCode = exports.JSONRPCErrorCode || (exports.JSONRPCErrorCode = {}));\nvar createJSONRPCErrorResponse = function (id, code, message, data) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n error: createJSONRPCError(code, message, data),\n };\n};\nexports.createJSONRPCErrorResponse = createJSONRPCErrorResponse;\nvar createJSONRPCSuccessResponse = function (id, result) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n result: result !== null && result !== void 0 ? result : null,\n };\n};\nexports.createJSONRPCSuccessResponse = createJSONRPCSuccessResponse;\nvar createJSONRPCRequest = function (id, method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n id: id,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCRequest = createJSONRPCRequest;\nvar createJSONRPCNotification = function (method, params) {\n return {\n jsonrpc: exports.JSONRPC,\n method: method,\n params: params,\n };\n};\nexports.createJSONRPCNotification = createJSONRPCNotification;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.apiGet = exports.handlePromiseErrors = void 0;\nvar helpers_1 = require(\"./helpers\");\n/**\n * Check HTTP promise response for server error response (non 2XX status) and reject promise is error\n *\n * @param promise the HTTP promise to check for HTTP status code of 2XX for success\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nvar handlePromiseErrors = function (promise) {\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n promise.then(function (response) {\n if (response.ok) {\n promiseInfo.resolver(response);\n }\n else {\n promiseInfo.rejecter(response);\n }\n return response;\n }).catch(function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\nexports.handlePromiseErrors = handlePromiseErrors;\n/**\n * Make a GET for retrieving data from a server\n *\n * @param url the url string of the resource on the server\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nvar apiGet = function (url) {\n return (0, exports.handlePromiseErrors)(fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n },\n }));\n};\nexports.apiGet = apiGet;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInfo = exports.removeDropzone = exports.createDropzone = exports.setBranding = exports.modifyTransfer = exports.showDirectory = exports.getTransfer = exports.getAllTransfers = exports.showPreferences = exports.showSelectFolderDialog = exports.showSelectFileDialog = exports.resumeTransfer = exports.stopTransfer = exports.removeTransfer = exports.deregisterStatusCallback = exports.registerStatusCallback = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.startTransfer = exports.init = exports.initDragDrop = exports.testConnection = void 0;\nvar messages_1 = require(\"../constants/messages\");\nvar client_1 = require(\"../helpers/client/client\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar http_gateway_1 = require(\"../http-gateway\");\nvar core_1 = require(\"../http-gateway/core\");\nvar index_1 = require(\"../index\");\nvar http_gateway_sdk_js_1 = require(\"@ibm-aspera/http-gateway-sdk-js\");\nvar connect_sdk_js_1 = require(\"@ibm-aspera/connect-sdk-js\");\nvar core_2 = require(\"../connect/core\");\n/**\n * Check if IBM Aspera for Desktop connection works. This function is called by init\n * when initializing the SDK. This function can be used at any point for checking.\n *\n * @returns a promise that resolves if server can connect or rejects if not\n */\nvar testConnection = function () {\n if (index_1.asperaSdk.useHttpGateway || index_1.asperaSdk.useConnect) {\n return Promise.resolve(index_1.asperaSdk.globals.sdkResponseData);\n }\n return client_1.client.request('get_info')\n .then(function (data) {\n index_1.asperaSdk.globals.asperaSdkInfo = data;\n index_1.asperaSdk.globals.asperaAppVerified = true;\n return index_1.asperaSdk.globals.sdkResponseData;\n });\n};\nexports.testConnection = testConnection;\n/**\n * Initialize drag and drop. HTTP Gateway and Connect does not need to init.\n * Ignore if only HTTP Gateway\n * @param initCall - Indicate if called via init flow and should not reject\n *\n * @returns a promise that resolves if the initialization was successful or not\n */\nvar initDragDrop = function (initCall) {\n if (index_1.asperaSdk.useHttpGateway || index_1.asperaSdk.useConnect) {\n return Promise.resolve(true);\n }\n else if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n client_1.client.request('init_drag_drop')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.dragDropInitFailed, error);\n if (initCall) {\n promiseInfo.resolver(false);\n (0, helpers_1.errorLog)(messages_1.messages.dragDropInitFailedInit, error);\n }\n else {\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.dragDropInitFailed, error));\n }\n });\n return promiseInfo.promise;\n};\nexports.initDragDrop = initDragDrop;\n/**\n * Initialize IBM Aspera client. If client cannot (reject/catch), then\n * client should attempt fixing server URL or trying again. If still fails disable UI elements.\n *\n * @param options initialization options:\n *\n * - `appId` the unique ID for the website. Transfers initiated during this session\n * will be associated with this ID. It is recommended to use a unique ID to keep transfer\n * information private from other websites.\n *\n * - `supportMultipleUsers` when enabled (defaults to false), the SDK will iterate over a port\n * range and generate a session id to determine the running instance of the desktop app for the\n * current user. This is needed when multiple users may be logged into the same machine\n * simultaneously, for example on a Windows Server.\n *\n * @returns a promise that resolves if IBM Aspera Desktop is running properly or\n * rejects if unable to connect\n */\nvar init = function (options) {\n var _a, _b, _c, _d;\n var appId = (_a = options === null || options === void 0 ? void 0 : options.appId) !== null && _a !== void 0 ? _a : (0, helpers_1.randomUUID)();\n var supportMultipleUsers = (_b = options === null || options === void 0 ? void 0 : options.supportMultipleUsers) !== null && _b !== void 0 ? _b : false;\n index_1.asperaSdk.globals.appId = appId;\n // Watch for old HTTP Gateway transfers in case used.\n (0, http_gateway_sdk_js_1.registerActivityCallback)(function (oldHttpTransfers) {\n oldHttpTransfers.transfers.forEach(function (oldHttpTransfer) {\n (0, core_1.sendTransferUpdate)(oldHttpTransfer);\n });\n });\n if (supportMultipleUsers) {\n index_1.asperaSdk.globals.supportMultipleUsers = true;\n index_1.asperaSdk.globals.sessionId = (0, helpers_1.randomUUID)();\n }\n var handleErrors = function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.serverError, error);\n index_1.asperaSdk.globals.asperaAppVerified = false;\n throw (0, helpers_1.generateErrorBody)(messages_1.messages.serverError, error);\n };\n var getConnectStartCalls = function () {\n index_1.asperaSdk.globals.connect = new connect_sdk_js_1.Connect({\n minVersion: options.connectSettings.minVersion || '3.10.1',\n dragDropEnabled: options.connectSettings.dragDropEnabled,\n connectMethod: options.connectSettings.method,\n });\n index_1.asperaSdk.globals.connectInstaller = new connect_sdk_js_1.ConnectInstaller({\n sdkLocation: options.connectSettings.sdkLocation,\n correlationId: options.connectSettings.correlationId,\n style: 'carbon',\n });\n index_1.asperaSdk.globals.connectAW4 = {\n Connect: connect_sdk_js_1.Connect,\n ConnectInstaller: connect_sdk_js_1.ConnectInstaller,\n };\n return (0, core_2.initConnect)(!options.connectSettings.hideIncludedInstaller);\n };\n var getDesktopStartCalls = function () {\n return index_1.asperaSdk.activityTracking.setup()\n .then(function () { return (0, exports.testConnection)(); })\n .then(function () { return (0, exports.initDragDrop)(true); })\n .then(function () { return index_1.asperaSdk.globals.sdkResponseData; })\n .catch(handleErrors);\n };\n if (((_c = options === null || options === void 0 ? void 0 : options.httpGatewaySettings) === null || _c === void 0 ? void 0 : _c.url) && !index_1.asperaSdk.globals.httpGatewayVerified) {\n var finalHttpGatewayUrl = options.httpGatewaySettings.url.trim();\n if (finalHttpGatewayUrl.indexOf('http') !== 0) {\n finalHttpGatewayUrl = \"https://\".concat(finalHttpGatewayUrl);\n }\n if (finalHttpGatewayUrl.endsWith('/')) {\n finalHttpGatewayUrl = finalHttpGatewayUrl.slice(0, -1);\n }\n index_1.asperaSdk.globals.httpGatewayUrl = finalHttpGatewayUrl;\n return fetch(\"\".concat(index_1.asperaSdk.globals.httpGatewayUrl, \"/info\"), { method: 'GET' }).then(function (response) {\n return response.json().then(function (responseData) {\n if (response.status >= 400) {\n throw Error(responseData);\n }\n return responseData;\n });\n }).then(function (response) {\n var _a, _b;\n index_1.asperaSdk.globals.httpGatewayInfo = response;\n index_1.asperaSdk.globals.httpGatewayVerified = true;\n var iframeContainer = document.createElement('div');\n iframeContainer.id = 'aspera-http-gateway-iframes';\n iframeContainer.style = 'display: none;';\n document.body.appendChild(iframeContainer);\n index_1.asperaSdk.globals.httpGatewayIframeContainer = iframeContainer;\n if ((_a = options === null || options === void 0 ? void 0 : options.httpGatewaySettings) === null || _a === void 0 ? void 0 : _a.forceGateway) {\n return Promise.resolve(index_1.asperaSdk.globals.sdkResponseData);\n }\n else {\n return ((_b = options === null || options === void 0 ? void 0 : options.connectSettings) === null || _b === void 0 ? void 0 : _b.useConnect) ? getConnectStartCalls() : getDesktopStartCalls();\n }\n }).catch(function (error) {\n var _a;\n // If HTTP Gateway fails log and move on to desktop\n (0, helpers_1.errorLog)(messages_1.messages.httpInitFail, error);\n return ((_a = options === null || options === void 0 ? void 0 : options.connectSettings) === null || _a === void 0 ? void 0 : _a.useConnect) ? getConnectStartCalls() : getDesktopStartCalls();\n });\n }\n return ((_d = options === null || options === void 0 ? void 0 : options.connectSettings) === null || _d === void 0 ? void 0 : _d.useConnect) ? getConnectStartCalls() : getDesktopStartCalls();\n};\nexports.init = init;\n/**\n * Start a transfer\n *\n * @param transferSpec standard transferSpec for transfer\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer.\n *\n * @returns a promise that resolves if transfer initiation is successful and rejects if transfer cannot be started\n */\nvar startTransfer = function (transferSpec, asperaSdkSpec) {\n if (!(0, helpers_1.isValidTransferSpec)(transferSpec)) {\n return (0, helpers_1.throwError)(messages_1.messages.notValidTransferSpec, { transferSpec: transferSpec });\n }\n if (index_1.asperaSdk.useHttpGateway) {\n return transferSpec.direction === 'receive' ? (0, http_gateway_1.httpDownload)(transferSpec, asperaSdkSpec) : (0, http_gateway_1.httpUpload)(transferSpec, asperaSdkSpec);\n }\n else if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.startTransferPromise(transferSpec, asperaSdkSpec).then(function (response) {\n return response.transfer_specs[0];\n });\n }\n else if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_spec: transferSpec,\n desktop_spec: asperaSdkSpec,\n app_id: index_1.asperaSdk.globals.appId,\n };\n client_1.client.request('start_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.transferFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.transferFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.startTransfer = startTransfer;\n/**\n * Register a callback event for getting transfer updates\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nvar registerActivityCallback = function (callback) {\n return index_1.asperaSdk.activityTracking.setCallback(callback);\n};\nexports.registerActivityCallback = registerActivityCallback;\n/**\n * Remove a callback from the transfer callback\n *\n * @param id the ID returned by `registerActivityCallback`\n */\nvar deregisterActivityCallback = function (id) {\n index_1.asperaSdk.activityTracking.removeCallback(id);\n};\nexports.deregisterActivityCallback = deregisterActivityCallback;\n/**\n * Register a callback for getting updates about the connection status of IBM Aspera SDK.\n *\n * For example, to be notified of when the SDK loses connection with the application or connection\n * is re-established. This can be useful if you want to handle the case where the user quits IBM Aspera\n * after `init` has already been called, and want to prompt the user to relaunch the application.\n *\n * @param callback callback function to receive events\n *\n * @returns ID representing the callback for deregistration purposes\n */\nvar registerStatusCallback = function (callback) {\n return index_1.asperaSdk.activityTracking.setWebSocketEventCallback(callback);\n};\nexports.registerStatusCallback = registerStatusCallback;\n/**\n * Remove a callback from getting connection status events.\n *\n * @param id the ID returned by `registerStatusCallback`\n */\nvar deregisterStatusCallback = function (id) {\n index_1.asperaSdk.activityTracking.removeWebSocketEventCallback(id);\n};\nexports.deregisterStatusCallback = deregisterStatusCallback;\n/**\n * Remove a transfer. This will stop the transfer if it is in progress.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is removed and rejects if transfer cannot be removed\n */\nvar removeTransfer = function (id) {\n if (index_1.asperaSdk.useHttpGateway) {\n return (0, core_1.httpRemoveTransfer)(id);\n }\n else if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.removeTransfer(id);\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_id: id,\n };\n client_1.client.request('remove_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.removeTransferFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.removeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.removeTransfer = removeTransfer;\n/**\n * Stop a transfer.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if transfer is stopped and rejects if transfer cannot be stopped\n */\nvar stopTransfer = function (id) {\n if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.stopTransfer(id);\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_id: id,\n };\n client_1.client.request('stop_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.stopTransferFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.stopTransferFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.stopTransfer = stopTransfer;\n/**\n * Resume a paused or failed transfer.\n *\n * @param id transfer uuid\n * @param options resume transfer options\n *\n * @returns a promise that resolves with the new transfer object if transfer is resumed\n */\nvar resumeTransfer = function (id, options) {\n if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.resumeTransfer(id, options).then(function (response) {\n return response.transfer_spec;\n });\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client_1.client.request('resume_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.resumeTransferFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.resumeTransferFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.resumeTransfer = resumeTransfer;\n/**\n * Displays a file browser dialog for the user to select files.\n *\n * @param options file dialog options\n *\n * @returns a promise that resolves with the selected file(s) and rejects if user cancels dialog\n */\nvar showSelectFileDialog = function (options) {\n if (index_1.asperaSdk.useHttpGateway) {\n return (0, core_1.httpGatewaySelectFileFolderDialog)(options, false);\n }\n else if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.showSelectFileDialogPromise(options).then(function (response) {\n return response;\n });\n }\n else if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n options: options || {},\n app_id: index_1.asperaSdk.globals.appId,\n };\n client_1.client.request('show_file_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.showSelectFileDialogFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.showSelectFileDialogFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.showSelectFileDialog = showSelectFileDialog;\n/**\n * Displays a folder browser dialog for the user to select folders.\n *\n * @param options folder dialog options\n *\n * @returns a promise that resolves with the selected folder(s) and rejects if user cancels dialog\n */\nvar showSelectFolderDialog = function (options) {\n if (index_1.asperaSdk.useHttpGateway) {\n return (0, core_1.httpGatewaySelectFileFolderDialog)(options, true);\n }\n else if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.showSelectFolderDialogPromise(options).then(function (response) {\n return response;\n });\n }\n else if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n options: options || {},\n app_id: index_1.asperaSdk.globals.appId,\n };\n client_1.client.request('show_folder_dialog', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.showSelectFolderDialogFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.showSelectFolderDialogFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.showSelectFolderDialog = showSelectFolderDialog;\n/**\n * Opens the IBM Aspera preferences page.\n *\n * @returns a promise that resolves when the preferences page is opened.\n */\nvar showPreferences = function () {\n if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.showPreferences();\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n client_1.client.request('open_preferences')\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.showPreferencesFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.showPreferencesFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.showPreferences = showPreferences;\n/**\n * Get all transfers associated with the current application.\n *\n * @returns a promise that resolves with an array of transfers.\n */\nvar getAllTransfers = function () {\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n if (index_1.asperaSdk.useHttpGateway) {\n return Promise.resolve((0, core_1.httpGetAllTransfers)());\n }\n else if (index_1.asperaSdk.useConnect) {\n index_1.asperaSdk.globals.connect.getAllTransfers({\n success: function (data) {\n promiseInfo.resolver(data.transfers);\n }, error: function (error) {\n promiseInfo.rejecter(error);\n },\n });\n return promiseInfo.promise;\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var payload = {\n app_id: index_1.asperaSdk.globals.appId,\n };\n client_1.client.request('get_all_transfers', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.getAllTransfersFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.getAllTransfersFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.getAllTransfers = getAllTransfers;\n/**\n * Get a specific transfer by ID.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves with the transfer.\n */\nvar getTransfer = function (id) {\n if (index_1.asperaSdk.useHttpGateway) {\n var transfer = (0, core_1.httpGetTransfer)(id);\n if (transfer) {\n return Promise.resolve(transfer);\n }\n else {\n return Promise.reject((0, helpers_1.generateErrorBody)(messages_1.messages.getTransferFailed, { reason: 'Not found' }));\n }\n }\n else if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.getTransfer(id).then(function (response) {\n return response.transfer_info;\n });\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_id: id,\n };\n client_1.client.request('get_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.getTransferFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.getTransferFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.getTransfer = getTransfer;\n/**\n * Opens and highlights the downloaded file in Finder or Windows Explorer. If multiple files,\n * then only the first file will be selected.\n *\n * @param id transfer uuid\n *\n * @returns a promise that resolves if the file can be shown and rejects if not\n */\nvar showDirectory = function (id) {\n if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.showDirectory(id);\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_id: id,\n };\n client_1.client.request('show_directory', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.showDirectoryFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.showDirectoryFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.showDirectory = showDirectory;\n/**\n * Modify the speed of a running transfer.\n *\n * @param id transfer uuid\n * @param options transfer rate options\n *\n * @returns a promise that resolves if the transfer rate can be modified and rejects if not\n */\nvar modifyTransfer = function (id, options) {\n if (index_1.asperaSdk.useConnect) {\n return index_1.asperaSdk.globals.connect.modifyTransfer(id, options).then(function (response) {\n return response;\n });\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_id: id,\n transfer_spec: options,\n };\n client_1.client.request('modify_transfer', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.modifyTransferFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.modifyTransferFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.modifyTransfer = modifyTransfer;\n/**\n * Set the custom branding template to be used by IBM Aspera. If the app is already\n * configured to use a different branding, then the branding template you specify will be\n * stored by the app, allowing the end user to switch at any point.\n *\n * @param id custom branding template id. This should be consistent across page loads.\n * @param options custom branding options\n *\n * @returns a promise that resolves if the branding was properly set.\n */\nvar setBranding = function (id, options) {\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var branding = {\n id: id,\n name: options.name,\n theme: options.theme,\n };\n var payload = {\n branding: branding,\n };\n client_1.client.request('update_branding', payload)\n .then(function (data) { return promiseInfo.resolver(data); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.setBrandingFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.setBrandingFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.setBranding = setBranding;\n/**\n * Create a dropzone for the given element selector.\n *\n * @param callback the function to call once the files are dropped\n * @param elementSelector the selector of the element on the page that should watch for drop events\n * @param connectOptions options for connect\n */\nvar createDropzone = function (callback, elementSelector, connectOptions) {\n if (index_1.asperaSdk.useConnect) {\n index_1.asperaSdk.globals.connect.setDragDropTargets(elementSelector, connectOptions, function (result) {\n callback({\n event: result.event,\n files: result.files,\n });\n });\n return;\n }\n var elements = document.querySelectorAll(elementSelector);\n if (!elements || !elements.length) {\n (0, helpers_1.errorLog)(messages_1.messages.unableToFindElementOnPage);\n return;\n }\n var dragEvent = function (event) {\n event.preventDefault();\n };\n var dropEvent = function (event) {\n event.preventDefault();\n if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length && event.dataTransfer.files[0]) {\n var files = [];\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n var file = event.dataTransfer.files[i];\n files.push({\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n });\n }\n var payload = {\n files: files,\n app_id: index_1.asperaSdk.globals.appId,\n };\n if (index_1.asperaSdk.isReady) {\n client_1.client.request('dropped_files', payload)\n .then(function (data) { return callback({ event: event, files: data }); })\n .catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.unableToReadDropped, error);\n });\n }\n else if (index_1.asperaSdk.httpGatewayIsReady) {\n (0, core_1.handleHttpGatewayDrop)(event.dataTransfer.items, callback, event);\n }\n }\n };\n elements.forEach(function (element) {\n element.addEventListener('dragover', dragEvent);\n element.addEventListener('drop', dropEvent);\n index_1.asperaSdk.globals.dropZonesCreated.set(elementSelector, [{ event: 'dragover', callback: dragEvent }, { event: 'drop', callback: dropEvent }]);\n });\n};\nexports.createDropzone = createDropzone;\n/**\n * Remove dropzone.\n *\n * @param elementSelector the selector of the element on the page that should remove\n */\nvar removeDropzone = function (elementSelector) {\n var foundDropzone = index_1.asperaSdk.globals.dropZonesCreated.get(elementSelector);\n if (foundDropzone) {\n foundDropzone.forEach(function (data) {\n var elements = document.querySelectorAll(elementSelector);\n if (elements && elements.length) {\n elements.forEach(function (element) {\n element.removeEventListener(data.event, data.callback);\n });\n }\n });\n }\n};\nexports.removeDropzone = removeDropzone;\n/**\n * Get metadata about the IBM Aspera installation.\n *\n * @returns a promise that returns information about the user's IBM Aspera installation.\n */\nvar getInfo = function () {\n if (index_1.asperaSdk.useHttpGateway || index_1.asperaSdk.useConnect) {\n return Promise.resolve(index_1.asperaSdk.globals.sdkResponseData);\n }\n if (!index_1.asperaSdk.isReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified);\n }\n return new Promise(function (resolve, _) {\n resolve(index_1.asperaSdk.globals.sdkResponseData);\n });\n};\nexports.getInfo = getInfo;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.apiDelete = exports.apiPut = exports.apiPost = exports.apiGet = exports.getHeaders = exports.getUrlWithQueryParams = exports.getQueryString = exports.handlePromiseErrors = void 0;\nvar helpers_1 = require(\"./helpers\");\n/**\n * Check HTTP promise response for server error response (non 2XX status) and reject promise is error\n *\n * @param promise the HTTP promise to check for HTTP status code of 2XX for success\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nvar handlePromiseErrors = function (promise) {\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n promise.then(function (response) {\n if (response.ok) {\n promiseInfo.resolver(response);\n }\n else {\n promiseInfo.rejecter(response);\n }\n return response;\n }).catch(function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\nexports.handlePromiseErrors = handlePromiseErrors;\n/**\n * Make params into string for query params\n *\n * @param params object of key:value pairs\n *\n * @returns a string of query params that is URL safe\n */\nvar getQueryString = function (params) {\n var queryString = '';\n Object.keys(params || {}).forEach(function (key) {\n var value = params[key];\n queryString += \"\".concat(key, \"=\").concat(encodeURIComponent(value), \"&\");\n });\n return queryString.slice(0, -1);\n};\nexports.getQueryString = getQueryString;\n/**\n * Create URL with query params if params are set\n *\n * @param url the url string\n * @param params object of key:value pairs\n *\n * @returns a string of url and query params together\n */\nvar getUrlWithQueryParams = function (url, params) {\n if (params) {\n var queryString = (0, exports.getQueryString)(params);\n url = url + (queryString ? \"?\".concat(queryString) : '');\n }\n return url;\n};\nexports.getUrlWithQueryParams = getUrlWithQueryParams;\n/**\n * Add required headers and additional headers together for network requests\n *\n * @param additionalHeaders object of key:value of extra header items\n *\n * @returns an object of key:value of all headers (additional and required)\n */\nvar getHeaders = function (additionalHeaders) {\n var requiredHeaders = {\n 'Content-Type': 'application/json'\n };\n Object.keys(additionalHeaders || {}).forEach(function (key) {\n requiredHeaders[key] = additionalHeaders[key];\n });\n return requiredHeaders;\n};\nexports.getHeaders = getHeaders;\n/**\n * Make a GET for retrieving data from a server\n *\n * @param url the url string of the resource on the server\n * @param queryParams an object of key:value to be used for the query params\n * @param additionalHeaders an object of key:value to be used for additional headers\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nvar apiGet = function (url, queryParams, additionalHeaders) {\n return (0, exports.handlePromiseErrors)(fetch((0, exports.getUrlWithQueryParams)(url, queryParams), {\n headers: (0, exports.getHeaders)(additionalHeaders)\n }));\n};\nexports.apiGet = apiGet;\n/**\n * Make a POST for creating data on the server\n *\n * @param url the url string of the resource on the server\n * @param data the data (JSON) to send to the server\n * @param queryParams an object of key:value to be used for the query params\n * @param additionalHeaders an object of key:value to be used for additional headers\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nvar apiPost = function (url, data, queryParams, additionalHeaders) {\n return (0, exports.handlePromiseErrors)(fetch((0, exports.getUrlWithQueryParams)(url, queryParams), {\n method: 'POST',\n body: JSON.stringify(data),\n headers: (0, exports.getHeaders)(additionalHeaders)\n }));\n};\nexports.apiPost = apiPost;\n/**\n * Make a PUT for creating data on the server\n *\n * @param url the url string of the resource on the server\n * @param data the data (JSON) to send to the server\n * @param queryParams an object of key:value to be used for the query params\n * @param additionalHeaders an object of key:value to be used for additional headers\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nvar apiPut = function (url, data, queryParams, additionalHeaders) {\n return (0, exports.handlePromiseErrors)(fetch((0, exports.getUrlWithQueryParams)(url, queryParams), {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: (0, exports.getHeaders)(additionalHeaders)\n }));\n};\nexports.apiPut = apiPut;\n/**\n * Make a DELETE on a resource on the server\n *\n * @param url the url string of the resource on the server\n * @param queryParams an object of key:value to be used for the query params\n * @param additionalHeaders an object of key:value to be used for additional headers\n *\n * @returns a promise that will resolve with the response from the server or reject if network/server error\n */\nvar apiDelete = function (url, queryParams, additionalHeaders) {\n return (0, exports.handlePromiseErrors)(fetch((0, exports.getUrlWithQueryParams)(url, queryParams), {\n method: 'DELETE',\n headers: (0, exports.getHeaders)(additionalHeaders)\n }));\n};\nexports.apiDelete = apiDelete;\nexports.default = {\n apiGet: exports.apiGet,\n apiPost: exports.apiPost,\n apiPut: exports.apiPut,\n apiDelete: exports.apiDelete,\n getHeaders: exports.getHeaders,\n getUrlWithQueryParams: exports.getUrlWithQueryParams,\n getQueryString: exports.getQueryString,\n handlePromiseErrors: exports.handlePromiseErrors\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.httpUpload = void 0;\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar core_1 = require(\"./core\");\nvar http_gateway_sdk_js_1 = require(\"@ibm-aspera/http-gateway-sdk-js\");\n/**\n * HTTP Gateway Upload Logic\n *\n * @param transferSpec - TransferSpec for the upload\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer.\n *\n * @returns Promise that resolves on success invoke or rejects if unable to start\n *\n * @remarks\n * Most logic is called directly by Desktop SDK functions\n * You may not need to import anything from this file.\n */\nvar httpUpload = function (transferSpec, asperaSdkSpec) {\n if (!index_1.asperaSdk.httpGatewayIsReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified, { type: 'upload' });\n }\n if (index_1.asperaSdk.useOldHttpGateway) {\n return (0, http_gateway_sdk_js_1.upload)(transferSpec, (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_v2_transfer_id) || '');\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var request = new XMLHttpRequest();\n var body = new FormData();\n body.append('x-aspera-spec', (0, helpers_1.safeJsonString)(transferSpec));\n var hasBadFile = [];\n transferSpec.paths.forEach(function (path) {\n var foundFile = index_1.asperaSdk.httpGatewaySelectedFiles.get(path.source);\n if (foundFile) {\n body.append('Content-Length', String(foundFile.size));\n body.append('file', foundFile);\n }\n else {\n hasBadFile.push(path.source);\n }\n });\n if (hasBadFile.length) {\n return (0, helpers_1.throwError)(messages_1.messages.fileNotAllowed, { type: 'upload', invalidFiles: hasBadFile, transferSpec: transferSpec });\n }\n var transferObject = (0, core_1.getSdkTransfer)(transferSpec);\n if (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_authentication) {\n request.setRequestHeader('Authorization', \"Bearer \".concat(asperaSdkSpec.http_gateway_authentication.token));\n request.setRequestHeader('X-Aspera-AccessKey', asperaSdkSpec.http_gateway_authentication.access_key);\n }\n request.open('POST', \"\".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl, \"/upload\"), true);\n var triggerUpdate = function () {\n (0, core_1.sendTransferUpdate)(transferObject);\n };\n var triggerFailed = function () {\n var errorData = (0, core_1.getMessageFromError)(request.response);\n transferObject.httpRequestId = request.getResponseHeader('X-Request-Id');\n transferObject.status = 'failed';\n transferObject.error_code = errorData.code;\n transferObject.error_desc = errorData.message;\n triggerUpdate();\n };\n request.upload.addEventListener('progress', function (event) {\n if (transferObject.status === 'failed') {\n return;\n }\n transferObject.status = 'running';\n transferObject.elapsed_usec = (new Date().getTime() - new Date(transferObject.add_time).getTime()) * 1000;\n if (event.lengthComputable) {\n transferObject.bytes_expected = event.total;\n transferObject.bytes_written = event.loaded;\n transferObject.percentage = (event.loaded / event.total);\n }\n triggerUpdate();\n });\n request.addEventListener('load', function () {\n transferObject.httpRequestId = request.getResponseHeader('X-Request-Id');\n });\n request.upload.addEventListener('load', function (event) {\n if (transferObject.status === 'failed') {\n return;\n }\n transferObject.status = 'completed';\n transferObject.elapsed_usec = (new Date().getTime() - new Date(transferObject.add_time).getTime()) * 1000;\n if (event.lengthComputable) {\n transferObject.bytes_expected = event.total;\n transferObject.bytes_written = event.loaded;\n transferObject.percentage = (event.loaded / event.total);\n }\n triggerUpdate();\n });\n request.upload.addEventListener('loadstart', function () {\n if (transferObject.status === 'failed') {\n return;\n }\n transferObject.status = 'running';\n promiseInfo.resolver(transferObject);\n triggerUpdate();\n });\n request.addEventListener('readystatechange', function () {\n if (request.status >= 400) {\n triggerFailed();\n }\n });\n request.upload.addEventListener('error', function (event) {\n triggerFailed();\n promiseInfo.rejecter(event);\n });\n request.upload.addEventListener('abort', function (event) {\n triggerFailed();\n promiseInfo.rejecter(event);\n });\n request.addEventListener('error', function (event) {\n triggerFailed();\n promiseInfo.rejecter(event);\n });\n request.addEventListener('abort', function (event) {\n triggerFailed();\n promiseInfo.rejecter(event);\n });\n request.send(body);\n return promiseInfo.promise;\n};\nexports.httpUpload = httpUpload;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createHtmlInputElement = exports.httpGatewaySelectFileFolderDialog = exports.handleHttpGatewayDrop = exports.httpDownload = exports.httpUpload = void 0;\nvar download_1 = require(\"./download\");\nObject.defineProperty(exports, \"httpDownload\", { enumerable: true, get: function () { return download_1.httpDownload; } });\nvar upload_1 = require(\"./upload\");\nObject.defineProperty(exports, \"httpUpload\", { enumerable: true, get: function () { return upload_1.httpUpload; } });\nvar core_1 = require(\"./core\");\nObject.defineProperty(exports, \"handleHttpGatewayDrop\", { enumerable: true, get: function () { return core_1.handleHttpGatewayDrop; } });\nObject.defineProperty(exports, \"httpGatewaySelectFileFolderDialog\", { enumerable: true, get: function () { return core_1.httpGatewaySelectFileFolderDialog; } });\nObject.defineProperty(exports, \"createHtmlInputElement\", { enumerable: true, get: function () { return core_1.createHtmlInputElement; } });\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServer = void 0;\nvar models_1 = require(\"./models\");\nvar internal_1 = require(\"./internal\");\nvar createParseErrorResponse = function () {\n return (0, models_1.createJSONRPCErrorResponse)(null, models_1.JSONRPCErrorCode.ParseError, \"Parse error\");\n};\nvar createInvalidRequestResponse = function (request) {\n return (0, models_1.createJSONRPCErrorResponse)((0, models_1.isJSONRPCID)(request.id) ? request.id : null, models_1.JSONRPCErrorCode.InvalidRequest, \"Invalid Request\");\n};\nvar createMethodNotFoundResponse = function (id) {\n return (0, models_1.createJSONRPCErrorResponse)(id, models_1.JSONRPCErrorCode.MethodNotFound, \"Method not found\");\n};\nvar JSONRPCServer = /** @class */ (function () {\n function JSONRPCServer(options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.mapErrorToJSONRPCErrorResponse = defaultMapErrorToJSONRPCErrorResponse;\n this.nameToMethodDictionary = {};\n this.middleware = null;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServer.prototype.hasMethod = function (name) {\n return !!this.nameToMethodDictionary[name];\n };\n JSONRPCServer.prototype.addMethod = function (name, method) {\n this.addMethodAdvanced(name, this.toJSONRPCMethod(method));\n };\n JSONRPCServer.prototype.removeMethod = function (name) {\n delete this.nameToMethodDictionary[name];\n };\n JSONRPCServer.prototype.toJSONRPCMethod = function (method) {\n return function (request, serverParams) {\n var response = method(request.params, serverParams);\n return Promise.resolve(response).then(function (result) {\n return mapResultToJSONRPCResponse(request.id, result);\n });\n };\n };\n JSONRPCServer.prototype.addMethodAdvanced = function (name, method) {\n var _a;\n this.nameToMethodDictionary = __assign(__assign({}, this.nameToMethodDictionary), (_a = {}, _a[name] = method, _a));\n };\n JSONRPCServer.prototype.receiveJSON = function (json, serverParams) {\n var request = this.tryParseRequestJSON(json);\n if (request) {\n return this.receive(request, serverParams);\n }\n else {\n return Promise.resolve(createParseErrorResponse());\n }\n };\n JSONRPCServer.prototype.tryParseRequestJSON = function (json) {\n try {\n return JSON.parse(json);\n }\n catch (_a) {\n return null;\n }\n };\n JSONRPCServer.prototype.receive = function (request, serverParams) {\n if (Array.isArray(request)) {\n return this.receiveMultiple(request, serverParams);\n }\n else {\n return this.receiveSingle(request, serverParams);\n }\n };\n JSONRPCServer.prototype.receiveMultiple = function (requests, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var responses;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(requests.map(function (request) { return _this.receiveSingle(request, serverParams); }))];\n case 1:\n responses = (_a.sent()).filter(isNonNull);\n if (responses.length === 1) {\n return [2 /*return*/, responses[0]];\n }\n else if (responses.length) {\n return [2 /*return*/, responses];\n }\n else {\n return [2 /*return*/, null];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n JSONRPCServer.prototype.receiveSingle = function (request, serverParams) {\n return __awaiter(this, void 0, void 0, function () {\n var method, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n method = this.nameToMethodDictionary[request.method];\n if (!!(0, models_1.isJSONRPCRequest)(request)) return [3 /*break*/, 1];\n return [2 /*return*/, createInvalidRequestResponse(request)];\n case 1: return [4 /*yield*/, this.callMethod(method, request, serverParams)];\n case 2:\n response = _a.sent();\n return [2 /*return*/, mapResponse(request, response)];\n }\n });\n });\n };\n JSONRPCServer.prototype.applyMiddleware = function () {\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n if (this.middleware) {\n this.middleware = this.combineMiddlewares(__spreadArray([\n this.middleware\n ], middlewares, true));\n }\n else {\n this.middleware = this.combineMiddlewares(middlewares);\n }\n };\n JSONRPCServer.prototype.combineMiddlewares = function (middlewares) {\n if (!middlewares.length) {\n return null;\n }\n else {\n return middlewares.reduce(this.middlewareReducer);\n }\n };\n JSONRPCServer.prototype.middlewareReducer = function (prevMiddleware, nextMiddleware) {\n return function (next, request, serverParams) {\n return prevMiddleware(function (request, serverParams) { return nextMiddleware(next, request, serverParams); }, request, serverParams);\n };\n };\n JSONRPCServer.prototype.callMethod = function (method, request, serverParams) {\n var _this = this;\n var callMethod = function (request, serverParams) {\n if (method) {\n return method(request, serverParams);\n }\n else if (request.id !== undefined) {\n return Promise.resolve(createMethodNotFoundResponse(request.id));\n }\n else {\n return Promise.resolve(null);\n }\n };\n var onError = function (error) {\n _this.errorListener(\"An unexpected error occurred while executing \\\"\".concat(request.method, \"\\\" JSON-RPC method:\"), error);\n return Promise.resolve(_this.mapErrorToJSONRPCErrorResponseIfNecessary(request.id, error));\n };\n try {\n return (this.middleware || noopMiddleware)(callMethod, request, serverParams).then(undefined, onError);\n }\n catch (error) {\n return onError(error);\n }\n };\n JSONRPCServer.prototype.mapErrorToJSONRPCErrorResponseIfNecessary = function (id, error) {\n if (id !== undefined) {\n return this.mapErrorToJSONRPCErrorResponse(id, error);\n }\n else {\n return null;\n }\n };\n return JSONRPCServer;\n}());\nexports.JSONRPCServer = JSONRPCServer;\nvar isNonNull = function (value) { return value !== null; };\nvar noopMiddleware = function (next, request, serverParams) { return next(request, serverParams); };\nvar mapResultToJSONRPCResponse = function (id, result) {\n if (id !== undefined) {\n return (0, models_1.createJSONRPCSuccessResponse)(id, result);\n }\n else {\n return null;\n }\n};\nvar defaultMapErrorToJSONRPCErrorResponse = function (id, error) {\n var _a;\n var message = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : \"An unexpected error occurred\";\n var code = internal_1.DefaultErrorCode;\n var data;\n if (error instanceof models_1.JSONRPCErrorException) {\n code = error.code;\n data = error.data;\n }\n return (0, models_1.createJSONRPCErrorResponse)(id, code, message, data);\n};\nvar mapResponse = function (request, response) {\n if (response) {\n return response;\n }\n else if (request.id !== undefined) {\n return (0, models_1.createJSONRPCErrorResponse)(request.id, models_1.JSONRPCErrorCode.InternalError, \"Internal error\");\n }\n else {\n return null;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cancelTransfer = exports.removeTransfer = exports.clearNonActiveTransfers = exports.getAllTransfers = exports.getTransferById = exports.deregisterActivityCallback = exports.registerActivityCallback = exports.initHttpGateway = exports.cleanupServerUrl = exports.testHttpGatewayConnection = void 0;\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar http_1 = require(\"../helpers/http\");\n/**\n * Check if HTTP Gateway server connection works. This function is called by init\n * when initializing the SDK. This function can be used at any point for sanity checking.\n *\n * @returns promise that resolves if server can connect or rejects if server unable to connect\n */\nvar testHttpGatewayConnection = function () {\n if (!index_1.asperaHttpGateway.globals.serverUrl && !index_1.asperaHttpGateway.globals.supportMultipleServers) {\n (0, helpers_1.errorLog)(messages_1.messages.serverUrlNotSet);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.serverUrlNotSet));\n });\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var backupServerData = {\n endpoints: [\n '/aspera/http-gwy/v1/info',\n '/aspera/http-gwy/v1/upload',\n '/aspera/http-gwy/v2/upload',\n '/aspera/http-gwy/v1/download'\n ],\n name: 'IBM Aspera HTTP Gateway',\n version: '2.3.0',\n sdkVerificationFailed: true,\n };\n (0, http_1.apiGet)(\"\".concat(index_1.asperaHttpGateway.globals.serverUrl || '', \"/v1/info\")).then(function (response) {\n response.json().then(function (data) {\n index_1.asperaHttpGateway.globals.serverInfo = data;\n index_1.asperaHttpGateway.globals.serverVerified = true;\n promiseInfo.resolver(data);\n });\n }).catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.serverError, error);\n if (index_1.asperaHttpGateway.globals.supportMultipleServers) {\n index_1.asperaHttpGateway.globals.serverInfo = backupServerData;\n index_1.asperaHttpGateway.globals.serverVerified = true;\n promiseInfo.resolver(backupServerData);\n }\n else {\n index_1.asperaHttpGateway.globals.serverVerified = false;\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.serverError, error));\n }\n });\n return promiseInfo.promise;\n};\nexports.testHttpGatewayConnection = testHttpGatewayConnection;\nvar cleanupServerUrl = function (serverUrl) {\n if (typeof serverUrl !== 'string') {\n return '';\n }\n if (serverUrl[serverUrl.length - 1] === '/') {\n serverUrl = serverUrl.slice(0, -1);\n }\n return serverUrl.replace('/v1', '/').replace(/\\/$/, '').replace(/\\/$/, '');\n};\nexports.cleanupServerUrl = cleanupServerUrl;\n/**\n * Initialize HTTP gateway client. If client cannot (reject/catch)\n * client should attempt fixing server URL or trying again. If still fails disable UI elements.\n * If supportMultipleServers is used the failure of the first test will not lock out the SDK.\n *\n * @param serverUrl URL indicating location of the HTTP server\n * @param softwareMode indicate if the SDK should run in software mode instead of DOM mode\n * @param supportMultipleServers indicates if the SDK should support multiple servers (not restricting to setup server)\n *\n * @returns a promise that resolves if HTTP Gateway is running properly or rejects if unable to load\n */\nvar initHttpGateway = function (serverUrl, softwareMode, supportMultipleServers) {\n if (!(0, helpers_1.isValidUrl)(serverUrl)) {\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.invalidServerUrl));\n });\n }\n index_1.asperaHttpGateway.globals.setUpServer((0, exports.cleanupServerUrl)(serverUrl), softwareMode, supportMultipleServers);\n return (0, exports.testHttpGatewayConnection)();\n};\nexports.initHttpGateway = initHttpGateway;\n/**\n * Register a callback event for getting transfer data\n *\n * @param callback callback function to receive transfers\n *\n * @returns ID representing the callback for deregistration purposes\n */\nvar registerActivityCallback = function (callback) {\n return index_1.asperaHttpGateway.activityTracking.setCallback(callback);\n};\nexports.registerActivityCallback = registerActivityCallback;\n/**\n * Remove a callback from the transfer callback\n * @param id the ID returned by `registerActivityCallback`\n */\nvar deregisterActivityCallback = function (id) {\n index_1.asperaHttpGateway.activityTracking.removeCallback(id);\n};\nexports.deregisterActivityCallback = deregisterActivityCallback;\n/**\n * Returns the transfer requested based on the uuid of the transfer.\n * NOTE: transferId from Node is not accepted as an ID. It must be the ID used by the HTTP Gateway.\n *\n * @param id gateway based ID of the HTTP part of the transfer\n *\n * @returns an object containing the transfer (or undefined if not found) located at key `transfer_info`\n */\nvar getTransferById = function (id) {\n return { transfer_info: index_1.asperaHttpGateway.activityTracking.getTransferById(id) };\n};\nexports.getTransferById = getTransferById;\n/**\n * Get transfer response object including all transfers\n *\n * @returns transfer data object with transfers array\n */\nvar getAllTransfers = function () {\n return index_1.asperaHttpGateway.activityTracking.getAllTransfersResponse();\n};\nexports.getAllTransfers = getAllTransfers;\n/**\n * Remove all transfers that are not active\n */\nvar clearNonActiveTransfers = function () {\n index_1.asperaHttpGateway.activityTracking.clearNonActiveTransfers();\n};\nexports.clearNonActiveTransfers = clearNonActiveTransfers;\n/**\n * Removes a transfer from the transfers list in HTTP Gateway\n * If an active transfer is removed it will continue to be uploaded/downloaded but progress will not be tracked\n *\n * @param id HTTP Gateway transfer uuid\n */\nvar removeTransfer = function (id) {\n index_1.asperaHttpGateway.activityTracking.removeTransfer(id);\n};\nexports.removeTransfer = removeTransfer;\n/**\n * Cancel a transfer from the transfers list in HTTP Gateway\n *\n * @param id HTTP Gateway transfer uuid\n */\nvar cancelTransfer = function (id) {\n var transfer = index_1.asperaHttpGateway.activityTracking.getTransferById(id);\n if (transfer) {\n transfer.status = 'canceled';\n }\n};\nexports.cancelTransfer = cancelTransfer;\nexports.default = {\n initHttpGateway: exports.initHttpGateway,\n testHttpGatewayConnection: exports.testHttpGatewayConnection,\n registerActivityCallback: exports.registerActivityCallback,\n cleanupServerUrl: exports.cleanupServerUrl,\n deregisterActivityCallback: exports.deregisterActivityCallback,\n getTransferById: exports.getTransferById,\n getAllTransfers: exports.getAllTransfers,\n clearNonActiveTransfers: exports.clearNonActiveTransfers,\n removeTransfer: exports.removeTransfer,\n cancelTransfer: exports.cancelTransfer\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.messages = void 0;\n/** @ignore */\nexports.messages = {\n callbackIsNotFunction: 'The provided callback is not a function',\n dragDropInitFailed: 'Unable to initialize drag-drop',\n dragDropInitFailedInit: 'Unable to initialize drag-drop as part of init flow',\n failedToGenerateIframe: 'Unable to generate IFRAME for download. Using new window',\n getInstallerError: 'Unable to get latest installers',\n getAllTransfersFailed: 'Unable to get all transfers',\n getTransferFailed: 'Unable to get transfer',\n invalidEndpoint: 'The specified endpoint is not a valid URL',\n loadingProtocol: 'Launching IBM Aspera for Desktop',\n modifyTransferFailed: 'Unable to modify transfer',\n notValidTransferSpec: 'The supplied transferSpec is not valid',\n removeTransferFailed: 'Unable to remove transfer',\n resumeTransferFailed: 'Unable to resume transfer',\n serverError: 'Unable to connect to IBM Aspera for Desktop server',\n serverNotVerified: 'IBM Aspera SDK has not been verified. Run test or init first',\n setBrandingFailed: 'Unable to set custom branding',\n showDirectoryFailed: 'Unable to show transfer directory',\n showSelectFileDialogFailed: 'Unable to show select file dialog',\n showSelectFolderDialogFailed: 'Unable to show select folder dialog',\n showPreferencesFailed: 'Unable to show preferences',\n stopTransferFailed: 'Unable to stop transfer',\n transferFailed: 'The transfer failed to initiate',\n unableToFindElementOnPage: 'Unable to find the element on the current page',\n unableToReadDropped: 'The dropped item could not be parsed. Please try selecting via the select file/folder option',\n websocketClosedError: 'The websocket was closed due to an error',\n websocketClosedUnexpect: 'The websocket was closed unexpectedly',\n websocketNotReady: 'The websocket is not ready. Run init first',\n httpNotAvailable: 'IBM Aspera HTTP Gateway is not available',\n httpInitFail: 'IBM Aspera HTTP Gateway could not be started',\n filePickerCancel: 'User canceled the select file or folder dialog.',\n fileNotAllowed: 'TransferSpec contained file not selected by user.',\n httpNetworkFail: 'HTTP network encountered unknown error.',\n};\n","// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCServerAndClient = void 0;\nvar models_1 = require(\"./models\");\nvar JSONRPCServerAndClient = /** @class */ (function () {\n function JSONRPCServerAndClient(server, client, options) {\n if (options === void 0) { options = {}; }\n var _a;\n this.server = server;\n this.client = client;\n this.errorListener = (_a = options.errorListener) !== null && _a !== void 0 ? _a : console.warn;\n }\n JSONRPCServerAndClient.prototype.applyServerMiddleware = function () {\n var _a;\n var middlewares = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n middlewares[_i] = arguments[_i];\n }\n (_a = this.server).applyMiddleware.apply(_a, middlewares);\n };\n JSONRPCServerAndClient.prototype.hasMethod = function (name) {\n return this.server.hasMethod(name);\n };\n JSONRPCServerAndClient.prototype.addMethod = function (name, method) {\n this.server.addMethod(name, method);\n };\n JSONRPCServerAndClient.prototype.addMethodAdvanced = function (name, method) {\n this.server.addMethodAdvanced(name, method);\n };\n JSONRPCServerAndClient.prototype.removeMethod = function (name) {\n this.server.removeMethod(name);\n };\n JSONRPCServerAndClient.prototype.timeout = function (delay) {\n return this.client.timeout(delay);\n };\n JSONRPCServerAndClient.prototype.request = function (method, params, clientParams) {\n return this.client.request(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.requestAdvanced = function (jsonRPCRequest, clientParams) {\n return this.client.requestAdvanced(jsonRPCRequest, clientParams);\n };\n JSONRPCServerAndClient.prototype.notify = function (method, params, clientParams) {\n this.client.notify(method, params, clientParams);\n };\n JSONRPCServerAndClient.prototype.rejectAllPendingRequests = function (message) {\n this.client.rejectAllPendingRequests(message);\n };\n JSONRPCServerAndClient.prototype.receiveAndSend = function (payload, serverParams, clientParams) {\n return __awaiter(this, void 0, void 0, function () {\n var response, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!((0, models_1.isJSONRPCResponse)(payload) || (0, models_1.isJSONRPCResponses)(payload))) return [3 /*break*/, 1];\n this.client.receive(payload);\n return [3 /*break*/, 4];\n case 1:\n if (!((0, models_1.isJSONRPCRequest)(payload) || (0, models_1.isJSONRPCRequests)(payload))) return [3 /*break*/, 3];\n return [4 /*yield*/, this.server.receive(payload, serverParams)];\n case 2:\n response = _a.sent();\n if (response) {\n return [2 /*return*/, this.client.send(response, clientParams)];\n }\n return [3 /*break*/, 4];\n case 3:\n message = \"Received an invalid JSON-RPC message\";\n this.errorListener(message, payload);\n return [2 /*return*/, Promise.reject(new Error(message))];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return JSONRPCServerAndClient;\n}());\nexports.JSONRPCServerAndClient = JSONRPCServerAndClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.installerUrl = exports.baseInstallerUrl = exports.protocol = exports.hiddenStyleList = void 0;\n/** @ignore */\nexports.hiddenStyleList = \"\\n display: none !important;\\n width: 1px !important;\\n height: 1px !important;\\n position: fixed !important;\\n z-index: -99 !important;\\n bottom: 0px !important;\\n right: 0px !important;\\n\";\n/** @ignore */\nexports.protocol = 'aspera://';\n/** @ignore */\nexports.baseInstallerUrl = 'https://downloads.ibmaspera.com/downloads/desktop';\n/** @ignore */\nexports.installerUrl = \"\".concat(exports.baseInstallerUrl, \"/latest/stable\");\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.client = void 0;\nvar http_client_1 = require(\"./http-client\");\nvar safari_client_1 = require(\"./safari-client\");\nvar helpers_1 = require(\"../helpers\");\nexports.client = (0, helpers_1.isSafari)() ? safari_client_1.safariClient : http_client_1.httpClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.httpClient = exports.handlePromiseLikeErrors = exports.getRpcServerUrl = void 0;\nvar json_rpc_2_0_1 = require(\"json-rpc-2.0\");\nvar helpers_1 = require(\"../helpers\");\nvar index_1 = require(\"../../index\");\nvar getRpcServerUrl = function () {\n return \"\".concat(index_1.asperaSdk.globals.asperaAppUrl, \":\").concat(index_1.asperaSdk.globals.rpcPort);\n};\nexports.getRpcServerUrl = getRpcServerUrl;\n/**\n * Wraps a promise like object and returns a promise that supports catch.\n *\n * @param promise the HTTP promise like to wrap\n *\n * @returns promise for the HTTP connection with catch supporting error\n */\nvar handlePromiseLikeErrors = function (promise) {\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n promise.then(function (response) {\n promiseInfo.resolver(response);\n }, function (error) {\n promiseInfo.rejecter(error);\n });\n return promiseInfo.promise;\n};\nexports.handlePromiseLikeErrors = handlePromiseLikeErrors;\n/**\n * JSON RPC client using HTTP (fetch) as transport.\n */\nvar JSONRPCHttpClient = /** @class */ (function () {\n function JSONRPCHttpClient() {\n var _this = this;\n /**\n * Request handler for the JSON-RPC client. This function is called by the JSON-RPC library\n * after forming the RPC request.\n *\n * @param request JSON-RPC request to send to the server\n */\n this.handleRequest = function (request) {\n var options = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: (0, helpers_1.safeJsonString)(request),\n };\n var rpcServerURL = (0, exports.getRpcServerUrl)();\n return fetch(rpcServerURL, options).then(function (response) {\n if (response.ok) {\n return response.json().then(function (rpcResponse) { return _this.client.receive(rpcResponse); });\n }\n else if (request.id !== undefined) {\n throw Promise.reject(response.statusText);\n }\n });\n };\n this.request = function (method, data) {\n return _this.client.request(method, data);\n };\n this.client = new json_rpc_2_0_1.JSONRPCClient(this.handleRequest);\n }\n return JSONRPCHttpClient;\n}());\n/**\n * Client used for making requests to Aspera.\n */\nvar HttpClient = /** @class */ (function () {\n function HttpClient() {\n var _this = this;\n this.request = function (method, payload) {\n if (payload === void 0) { payload = {}; }\n return (0, exports.handlePromiseLikeErrors)(_this.httpClient.request(method, payload));\n };\n this.httpClient = new JSONRPCHttpClient();\n }\n ;\n return HttpClient;\n}());\nexports.httpClient = new HttpClient();\nexports.default = {\n httpClient: exports.httpClient,\n handlePromiseLikeErrors: exports.handlePromiseLikeErrors,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.initConnect = exports.connectInstallationFlow = exports.handleTransfers = void 0;\nvar index_1 = require(\"../index\");\nvar connect_sdk_js_1 = require(\"@ibm-aspera/connect-sdk-js\");\nvar transferMonitorActivated = false;\nvar installerFlowActivated = false;\n/**\n * Connect Core Logic\n *\n * @remarks\n * Most logic is called directly by Desktop SDK functions\n * You may not need to import anything from this file.\n */\nvar handleTransfers = function (transfers) {\n index_1.asperaSdk.activityTracking.handleTransferActivity({\n type: 'transferUpdated',\n data: { transfers: transfers },\n });\n};\nexports.handleTransfers = handleTransfers;\nvar connectInstallationFlow = function () {\n if (installerFlowActivated) {\n return;\n }\n installerFlowActivated = true;\n var handleInstallerEvent = function (eventType, eventStatus) {\n // Verify that the event matches\n if (index_1.asperaSdk.globals.connectAW4.Connect.EVENT.STATUS !== eventType) {\n return;\n }\n // Depending on status show the proper installer screen\n switch (eventStatus) {\n case index_1.asperaSdk.globals.connectAW4.Connect.STATUS.INITIALIZING:\n index_1.asperaSdk.globals.connectInstaller.showLaunching();\n break;\n case index_1.asperaSdk.globals.connectAW4.Connect.STATUS.EXTENSION_INSTALL:\n index_1.asperaSdk.globals.connectInstaller.showExtensionInstall();\n break;\n case index_1.asperaSdk.globals.connectAW4.Connect.STATUS.FAILED:\n index_1.asperaSdk.globals.connectInstaller.showDownload();\n break;\n case index_1.asperaSdk.globals.connectAW4.Connect.STATUS.OUTDATED:\n index_1.asperaSdk.globals.connectInstaller.showUpdate();\n break;\n case index_1.asperaSdk.globals.connectAW4.Connect.STATUS.RUNNING:\n index_1.asperaSdk.globals.connectInstaller.connected();\n break;\n }\n };\n index_1.asperaSdk.globals.connect.addEventListener(index_1.asperaSdk.globals.connectAW4.Connect.EVENT.STATUS, handleInstallerEvent);\n};\nexports.connectInstallationFlow = connectInstallationFlow;\nvar initConnect = function (useIncludedInstaller) {\n index_1.asperaSdk.globals.connect.addEventListener(connect_sdk_js_1.Connect.EVENT.STATUS, function (eventType, eventStatus) {\n if (eventType === connect_sdk_js_1.Connect.EVENT.STATUS) {\n index_1.asperaSdk.globals.connectStatus = eventStatus;\n index_1.asperaSdk.activityTracking.sendManualEventCallback(eventStatus);\n if (eventStatus === 'RUNNING' && !transferMonitorActivated) {\n transferMonitorActivated = true;\n index_1.asperaSdk.globals.connect.addEventListener(connect_sdk_js_1.Connect.EVENT.TRANSFER, function (_event, data) {\n (0, exports.handleTransfers)(data.transfers);\n });\n }\n }\n });\n index_1.asperaSdk.globals.connect.initSession(index_1.asperaSdk.globals.appId);\n if (useIncludedInstaller) {\n (0, exports.connectInstallationFlow)();\n }\n return Promise.resolve({ connectMode: true });\n};\nexports.initConnect = initConnect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultErrorCode = void 0;\nexports.DefaultErrorCode = 0;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInstallerInfo = void 0;\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar http_1 = require(\"../helpers/http\");\nvar messages_1 = require(\"../constants/messages\");\n/**\n * Get the latest Aspera SDK installer information such as download URL and version.\n *\n * @param options Installer info options\n *\n * @returns a promise that resolves with the installer info and rejects if there is an error\n */\nvar getInstallerInfo = function (options) {\n if (options === void 0) { options = {}; }\n var url = options.endpoint || index_1.asperaSdk.globals.installerUrl;\n if (url.endsWith('/latest.json')) {\n url = url.replace('/latest.json', '');\n }\n if (!(0, helpers_1.isValidURL)(url)) {\n return (0, helpers_1.throwError)(messages_1.messages.invalidEndpoint, { url: url });\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n (0, http_1.apiGet)(\"\".concat(url, \"/latest.json\")).then(function (response) {\n response.json().then(function (data) {\n if (options.endpoint) {\n for (var _i = 0, _a = data.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (!(0, helpers_1.isValidURL)(entry.url)) {\n entry.url = \"\".concat(options.endpoint, \"/\").concat(entry.url);\n }\n }\n }\n if (options.all) {\n promiseInfo.resolver(data);\n }\n else {\n var platform_1 = (0, helpers_1.getCurrentPlatform)();\n data.entries = data.entries.filter(function (entry) { return entry.platform === platform_1; });\n promiseInfo.resolver(data);\n }\n });\n }).catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.getInstallerError, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.getInstallerError, error));\n });\n return promiseInfo.promise;\n};\nexports.getInstallerInfo = getInstallerInfo;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.startStream = exports.injectStreamToDom = void 0;\nvar http_1 = require(\"../helpers/http\");\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar core_1 = require(\"./core\");\n/**\n * Inject the video into the DOM\n *\n * @param url URL of the stream returned from HTTP Gateway Server\n * @param videoDomQuery an injection point for the video. Should be a `div`. If found the content will be removed before loading. If not set will do nothing and let client handle video playback.\n */\nvar injectStreamToDom = function (url, videoDomQuery, videoOptions) {\n if (videoOptions === void 0) { videoOptions = {}; }\n var injectPoint = document.querySelector(videoDomQuery);\n if (!injectPoint) {\n (0, helpers_1.errorLog)(messages_1.messages.streamInjectDomInvalid, { query: videoDomQuery });\n return;\n }\n // Empty DOM inject point\n while (injectPoint.firstChild) {\n injectPoint.removeChild(injectPoint.firstChild);\n }\n var video = document.createElement('video');\n video.classList.add('aspera-http-gateway-video');\n video.controls = true;\n if (videoOptions.controls !== undefined) {\n video.controls = videoOptions.controls;\n }\n if (videoOptions.autoplay !== undefined) {\n video.autoplay = videoOptions.autoplay;\n }\n if (videoOptions.loop !== undefined) {\n video.loop = videoOptions.loop;\n }\n if (videoOptions.muted !== undefined) {\n video.muted = videoOptions.muted;\n }\n if (videoOptions.poster !== undefined) {\n video.poster = videoOptions.poster;\n }\n if (videoOptions.height !== undefined) {\n video.height = videoOptions.height;\n }\n if (videoOptions.width !== undefined) {\n video.width = videoOptions.width;\n }\n else {\n video.setAttribute('style', 'width: 100%;');\n }\n injectPoint.appendChild(video);\n if (video.canPlayType('application/vnd.apple.mpegurl')) {\n video.src = url;\n video.addEventListener('loadedmetadata', function () {\n video.play();\n });\n }\n else if (window.Hls.isSupported()) {\n var hls = new window.Hls();\n hls.loadSource(url);\n hls.attachMedia(video);\n hls.on(window.Hls.Events.MANIFEST_PARSED, function () {\n video.play();\n });\n }\n};\nexports.injectStreamToDom = injectStreamToDom;\n/**\n * Start a HTTP Gateway video. stream. transferSpec is ONLY accepted if contains ONE file.\n *\n * It is recommended to add this https://cdn.jsdelivr.net/npm/hls.js to your project\n *\n * @param transferSpec standard Connect transferSpec for downloading\n * @param videoDomQuery an injection point for the video. Should be a `div`. If found the content will be removed before loading. If not set will do nothing and let client handle video playback.\n *\n * @returns a promise that resolves if stream is started successfully or rejects if error occurs\n */\nvar startStream = function (transferSpec, videoDomQuery, videoOptions) {\n if (videoOptions === void 0) { videoOptions = {}; }\n if (!index_1.asperaHttpGateway.isReady) {\n (0, helpers_1.errorLog)(messages_1.messages.serverNotVerified);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.serverNotVerified));\n });\n }\n if (!(0, helpers_1.isValidTransferSpec)(transferSpec)) {\n (0, helpers_1.errorLog)(messages_1.messages.notValidTransferSpec);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.notValidTransferSpec, { transferSpec: transferSpec }));\n });\n }\n if (transferSpec.paths.length !== 1) {\n (0, helpers_1.errorLog)(messages_1.messages.streamingTooManyFiles);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.streamingTooManyFiles, { transferSpec: transferSpec }));\n });\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n var payload = {\n transfer_spec: transferSpec\n };\n var finalServerUrl = videoOptions.serverUrlOverride ? (0, core_1.cleanupServerUrl)(videoOptions.serverUrlOverride) : index_1.asperaHttpGateway.globals.serverUrl;\n // TODO: what is the URL made of. Assuming same as download but with /stream endpoint. Simpler if just get back direct URL.\n (0, http_1.apiPost)(\"\".concat(finalServerUrl, \"/v1/start-stream\"), payload).then(function (response) {\n response.json().then(function (data) {\n if (data.transfer_spec_id) {\n var streamUrl = \"\".concat(finalServerUrl, \"/v1/stream/\").concat(data.transfer_spec_id, \"/\").concat(data.transfer_spec_id, \".m3u8\");\n if (index_1.asperaHttpGateway.globals.softwareMode) {\n promiseInfo.resolver({\n transfer_spec_id: data.transfer_spec_id,\n url: streamUrl,\n });\n return;\n }\n if (videoDomQuery) {\n (0, exports.injectStreamToDom)(streamUrl, videoDomQuery, videoOptions);\n }\n promiseInfo.resolver();\n }\n else {\n (0, helpers_1.errorLog)(messages_1.messages.failedToGetStreamUrl, { response: data });\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.failedToGetStreamUrl, { response: data }));\n }\n });\n }).catch(function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.streamFailed, error);\n promiseInfo.rejecter((0, helpers_1.generateErrorBody)(messages_1.messages.streamFailed, error));\n });\n return promiseInfo.promise;\n};\nexports.startStream = startStream;\nexports.default = {\n startStream: exports.startStream,\n injectStreamToDom: exports.injectStreamToDom\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.httpDownload = void 0;\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar core_1 = require(\"./core\");\nvar http_gateway_sdk_js_1 = require(\"@ibm-aspera/http-gateway-sdk-js\");\n/**\n * HTTP Gateway Download Logic for presigned flow\n * Presigned flow is when used files are too large or unknown file size\n *\n * @param transferSpec - TransferSpec for the download\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer.\n *\n * @returns Promise that resolves on success invoke or rejects if unable to start\n *\n * @remarks\n * This function is used internally and not exported.\n */\nvar httpDownloadPresigned = function (transferSpec, asperaSdkSpec) {\n // create a transfer sdk object\n var transferObject = (0, core_1.getSdkTransfer)(transferSpec);\n transferObject.httpDownloadExternalHandle = true;\n (0, core_1.sendTransferUpdate)(transferObject);\n var triggerFailed = function (error) {\n var errorData = (0, core_1.getMessageFromError)(error.response || error);\n transferObject.status = 'failed';\n transferObject.error_code = errorData.code;\n transferObject.error_desc = errorData.message;\n (0, core_1.sendTransferUpdate)(transferObject);\n };\n var url = new URL((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl);\n var headers = {\n 'Content-Type': 'application/json',\n accept: 'application/json',\n };\n if (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_authentication) {\n headers['Authorization'] = \"Bearer \".concat(asperaSdkSpec.http_gateway_authentication.token);\n headers['X-Aspera-AccessKey'] = asperaSdkSpec.http_gateway_authentication.access_key;\n }\n return fetch(\"\".concat(url.toString(), \"/presign\"), {\n method: 'POST',\n headers: headers,\n body: (0, helpers_1.safeJsonString)({\n transfer_spec: transferSpec,\n method: 'GET',\n protocol: 'http',\n headers: {\n host: url.host,\n },\n }),\n }).then(function (response) {\n return response.json().then(function (data) {\n return {\n headers: response.headers,\n body: data,\n status: response.status,\n };\n });\n }).then(function (response) {\n if (response.status >= 400) {\n triggerFailed(response.body);\n return transferObject;\n }\n transferObject.httpRequestId = response.headers.get('X-Request-Id');\n transferObject.status = 'running';\n (0, core_1.sendTransferUpdate)(transferObject);\n var iframe = document.createElement('iframe');\n iframe.src = response.body.signed_url;\n iframe.width = '1px';\n iframe.height = '1px';\n index_1.asperaSdk.globals.httpGatewayIframeContainer.appendChild(iframe);\n return transferObject;\n }).catch(function (error) {\n triggerFailed(error);\n return transferObject;\n });\n};\n/**\n * HTTP Gateway Download Logic for in browser download with progress\n * This is used when the transfer size is known and under the threshold\n *\n * @param transferSpec - TransferSpec for the download\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer.\n *\n * @returns Promise that resolves on success invoke or rejects if unable to start\n *\n * @remarks\n * This function is used internally and not exported.\n */\nvar httpDownloadInBrowser = function (transferSpec, asperaSdkSpec) {\n // create a transfer sdk object\n var transferObject = (0, core_1.getSdkTransfer)(transferSpec);\n var triggerFailed = function (error) {\n var errorData = (0, core_1.getMessageFromError)(error.response || error);\n transferObject.status = 'failed';\n transferObject.error_code = errorData.code;\n transferObject.error_desc = errorData.message;\n (0, core_1.sendTransferUpdate)(transferObject);\n };\n (0, core_1.sendTransferUpdate)(transferObject);\n var headers = {\n 'X-Aspera-Spec': (0, core_1.base64Encoding)((0, helpers_1.safeJsonString)(transferSpec)),\n };\n if (asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_authentication) {\n headers['Authorization'] = \"Bearer \".concat(asperaSdkSpec.http_gateway_authentication.token);\n headers['X-Aspera-AccessKey'] = asperaSdkSpec.http_gateway_authentication.access_key;\n }\n fetch(\"\".concat((asperaSdkSpec === null || asperaSdkSpec === void 0 ? void 0 : asperaSdkSpec.http_gateway_override_server_url) || index_1.asperaSdk.globals.httpGatewayUrl, \"/download\"), { method: 'GET', headers: headers }).then(function (data) {\n var responseHeaders = data.headers;\n transferObject.httpRequestId = responseHeaders.get('X-Request-Id');\n var chunks = [];\n var reader = data.body.getReader();\n transferObject.status = 'running';\n (0, core_1.sendTransferUpdate)(transferObject);\n transferObject.bytes_expected = Number(responseHeaders.get('Content-Length') || 0);\n var readBytes = function () {\n reader.read().then(function (content) {\n var _a;\n if (content.done) {\n if (data.status >= 400 || !transferObject.bytes_written) {\n triggerFailed(data.body);\n return;\n }\n transferObject.status = 'completed';\n (0, core_1.sendTransferUpdate)(transferObject);\n var blobData = new Blob(chunks, { type: responseHeaders.get('Content-Type') });\n var objectURL = URL.createObjectURL(blobData);\n var a = document.createElement('a');\n a.href = objectURL;\n a.setAttribute('style', 'display: none;');\n a.download = (responseHeaders.get('Content-Disposition') || 'download').replace('attachment; filename=\"', '').replace('\"', '');\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(objectURL);\n }\n else {\n chunks.push(content.value);\n transferObject.status = 'running';\n transferObject.bytes_written += ((_a = content.value) === null || _a === void 0 ? void 0 : _a.length) || 0;\n transferObject.percentage = (transferObject.bytes_written / transferObject.bytes_expected);\n (0, core_1.sendTransferUpdate)(transferObject);\n readBytes();\n }\n }).catch(function (error) {\n triggerFailed(error);\n });\n };\n readBytes();\n }).catch(function (error) {\n triggerFailed(error);\n });\n return Promise.resolve(transferObject);\n};\n/**\n * HTTP Gateway Download Logic\n *\n * @param transferSpec - TransferSpec for the download\n * @param asperaSdkSpec IBM Aspera settings when starting a transfer.\n *\n * @returns Promise that resolves on success invoke or rejects if unable to start\n *\n * @remarks\n * Most logic is called directly by Desktop SDK functions\n * You may not need to import anything from this file.\n */\nvar httpDownload = function (transferSpec, asperaSdkSpec) {\n if (!index_1.asperaSdk.httpGatewayIsReady) {\n return (0, helpers_1.throwError)(messages_1.messages.serverNotVerified, { type: 'download' });\n }\n if (index_1.asperaSdk.useOldHttpGateway) {\n return (0, http_gateway_sdk_js_1.download)(transferSpec);\n }\n if (transferSpec.tags &&\n transferSpec.tags.aspera &&\n transferSpec.tags.aspera['http-gateway'] &&\n transferSpec.tags.aspera['http-gateway'].expected_size <= index_1.asperaSdk.httpGatewayInBrowserDownloadThreshold) {\n return httpDownloadInBrowser(transferSpec, asperaSdkSpec);\n }\n else {\n return httpDownloadPresigned(transferSpec, asperaSdkSpec);\n }\n};\nexports.httpDownload = httpDownload;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64Encoding = exports.getMessageFromError = exports.sendTransferUpdate = exports.getSdkTransfer = exports.httpGatewaySelectFileFolderDialog = exports.handleHttpGatewayDrop = exports.createHtmlInputElement = exports.httpGetTransfer = exports.httpGetAllTransfers = exports.httpRemoveTransfer = void 0;\nvar messages_1 = require(\"../constants/messages\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar index_1 = require(\"../index\");\nvar http_gateway_sdk_js_1 = require(\"@ibm-aspera/http-gateway-sdk-js\");\n/**\n * HTTP Gateway Core Logic\n * - File/Folder picking\n * - Starting and testing\n *\n * @remarks\n * Most logic is called directly by Desktop SDK functions\n * You may not need to import anything from this file.\n */\n/**\n * Remove a transfer from HTTP Gateway systems\n * @param id - ID of the transfer\n *\n * @returns Promise indicating success\n */\nvar httpRemoveTransfer = function (id) {\n if (index_1.asperaSdk.useOldHttpGateway) {\n (0, http_gateway_sdk_js_1.removeTransfer)(id);\n return Promise.resolve({ removed: true });\n }\n var transfer = index_1.asperaSdk.httpGatewayTransferStore.get(id);\n if (transfer) {\n index_1.asperaSdk.httpGatewayTransferStore.delete(id);\n return Promise.resolve({ removed: true });\n }\n else {\n return Promise.reject((0, helpers_1.generateErrorBody)(messages_1.messages.removeTransferFailed, { reason: 'Not found' }));\n }\n};\nexports.httpRemoveTransfer = httpRemoveTransfer;\n/**\n * Get the list of http gateway transfers\n *\n * @returns list of HTTP Gateway\n */\nvar httpGetAllTransfers = function () {\n if (index_1.asperaSdk.useOldHttpGateway) {\n return (0, http_gateway_sdk_js_1.getAllTransfers)().transfers;\n }\n return Array.from(index_1.asperaSdk.httpGatewayTransferStore.values());\n};\nexports.httpGetAllTransfers = httpGetAllTransfers;\n/**\n * Get a HTTP Gateway transfer by ID\n *\n * @returns a transfer or null\n */\nvar httpGetTransfer = function (id) {\n if (index_1.asperaSdk.useOldHttpGateway) {\n return (0, http_gateway_sdk_js_1.getTransferById)(id);\n }\n return index_1.asperaSdk.httpGatewayTransferStore.get(id);\n};\nexports.httpGetTransfer = httpGetTransfer;\n/**\n * Create HTML input element for file picking\n */\nvar createHtmlInputElement = function () {\n var element = window.document.createElement('input');\n element.type = 'file';\n element.style = 'display: none;';\n window.document.body.appendChild(element);\n return element;\n};\nexports.createHtmlInputElement = createHtmlInputElement;\n/**\n * Handle drop events and store files for HTTP Gateway\n * This works on top of desktop.\n */\nvar handleHttpGatewayDrop = function (items, callback, event) {\n var files = [];\n var callbackCount = 0;\n var callbackFinishCount = 0;\n var finalCallback = function () {\n if (callbackFinishCount >= callbackCount) {\n var finalFiles = files.map(function (file) {\n index_1.asperaSdk.httpGatewaySelectedFiles.set(file.name, file);\n return {\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n };\n });\n callback({ event: event, files: { dataTransfer: { files: finalFiles } } });\n }\n };\n var traverse = function (item) {\n if (item.isFile) {\n item.file(function (file) {\n files.push(file);\n callbackFinishCount++;\n finalCallback();\n });\n }\n else if (item.isDirectory) {\n var dirReader = item.createReader();\n dirReader.readEntries(function (entries) {\n for (var k = 0; k < entries.length; k++) {\n callbackCount++;\n traverse(entries[k]);\n }\n });\n callbackFinishCount++;\n }\n else {\n callbackFinishCount++;\n finalCallback();\n }\n };\n for (var i = 0; i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item) {\n callbackCount++;\n traverse(item);\n }\n }\n};\nexports.handleHttpGatewayDrop = handleHttpGatewayDrop;\n/**\n * Open native browser file or folder picker for files\n *\n * @param options - File picker options\n * @param folder - Indicate if choosing folders\n *\n * @returns Promise that resolves with info about the files picked\n */\nvar httpGatewaySelectFileFolderDialog = function (options, folder) {\n if (index_1.asperaSdk.useOldHttpGateway) {\n return (folder ? (0, http_gateway_sdk_js_1.getFoldersForUploadPromise)((options === null || options === void 0 ? void 0 : options.http_gateway_v2_transfer_id) || '') : (0, http_gateway_sdk_js_1.getFilesForUploadPromise)((options === null || options === void 0 ? void 0 : options.http_gateway_v2_transfer_id) || ''));\n }\n var _a = (0, helpers_1.generatePromiseObjects)(), promise = _a.promise, rejecter = _a.rejecter, resolver = _a.resolver;\n var element = (0, exports.createHtmlInputElement)();\n element.multiple = !!(options === null || options === void 0 ? void 0 : options.multiple);\n if (folder) {\n element.webkitdirectory = true;\n }\n element.oncancel = function () {\n rejecter({ debugData: { code: -32002, message: messages_1.messages.filePickerCancel } });\n };\n element.onchange = function () {\n var returnFiles = [];\n for (var i = 0; i < element.files.length; i++) {\n var file = element.files[i];\n returnFiles.push(file);\n index_1.asperaSdk.httpGatewaySelectedFiles.set(file.name, file);\n }\n resolver({\n dataTransfer: {\n files: returnFiles.map(function (file) {\n return {\n size: file.size,\n lastModified: file.lastModified,\n name: file.webkitRelativePath || file.name,\n type: file.type,\n };\n })\n }\n });\n };\n element.click();\n return promise;\n};\nexports.httpGatewaySelectFileFolderDialog = httpGatewaySelectFileFolderDialog;\n/**\n * Get a generic transfer object for HTTP Gateway transfers.\n *\n * @param transferSpec - TransferSpec being provided for the HTTP Gateway transfer\n *\n * @returns a transfer object to track status and send to consumers\n */\nvar getSdkTransfer = function (transferSpec) {\n return {\n uuid: (0, helpers_1.randomUUID)(),\n transfer_spec: transferSpec,\n current_file: '',\n add_time: new Date().toISOString(),\n file_counts: {\n attempted: 0,\n completed: 0,\n failed: 0,\n skipped: 0,\n },\n end_time: '',\n explorer_path: '',\n status: 'queued',\n bytes_written: 0,\n bytes_expected: 0,\n calculated_rate_kbps: 0,\n elapsed_usec: 0,\n percentage: 0,\n title: '',\n remaining_usec: 0,\n httpGatewayTransfer: true,\n httpDownloadExternalHandle: false,\n };\n};\nexports.getSdkTransfer = getSdkTransfer;\n/**\n * Send a transfer update through the SDK\n *\n * @param transfer - Transsfer object to send to consumers\n */\nvar sendTransferUpdate = function (transfer) {\n index_1.asperaSdk.httpGatewayTransferStore.set(transfer.uuid, transfer);\n index_1.asperaSdk.activityTracking.handleTransferActivity({\n type: 'transferUpdated',\n data: { transfers: [transfer] },\n });\n};\nexports.sendTransferUpdate = sendTransferUpdate;\n/**\n * Try to parse and get a useful string from API calls for HTTP Gateway\n *\n * @param error - Error from API call for Gateway\n *\n * @returns a string to use for errors\n */\nvar getMessageFromError = function (error) {\n var data = (0, helpers_1.safeJsonParse)(error);\n var message = messages_1.messages.httpNetworkFail;\n var code = 500;\n if (data && typeof data === 'object') {\n message = data.message || data.description || messages_1.messages.httpNetworkFail;\n code = data.code || 500;\n }\n else if (error && typeof error === 'object') {\n message = error.message || error.description || messages_1.messages.httpNetworkFail;\n code = error.code || 500;\n }\n else if (typeof error === 'string') {\n message = error;\n }\n return {\n message: message,\n code: code,\n };\n};\nexports.getMessageFromError = getMessageFromError;\nvar base64Encoding = function (jsonString) {\n var bytes = new TextEncoder().encode(jsonString);\n var binString = Array.from(bytes, function (byte) {\n return String.fromCodePoint(byte);\n }).join('');\n return btoa(binString);\n};\nexports.base64Encoding = base64Encoding;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeDropzone = exports.createDropzone = exports.upload = exports.startWebSocketTransfer = exports.getFoldersForUploadPromise = exports.getFoldersForUpload = exports.getFilesForUploadPromise = exports.getFilesForUpload = exports.addFolderPickerToForm = exports.addFilePickerToForm = exports.startSendingData = exports.handleSoftwareModeSlicing = exports.handleBlobSlicing = exports.updateTransferActivity = void 0;\nvar index_1 = require(\"../index\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar models_1 = require(\"../models/models\");\nvar constants_1 = require(\"../constants/constants\");\nvar core_1 = require(\"./core\");\n/**\n * Used to update the transfer in the activity monitor for a specific transfer. If transfer not found it is ignored\n *\n * @param id the id of the transfer to update\n * @param status the status of the transfer\n * @param total the total bytes of the transfer\n * @param current the amount of bytes transferred thus far\n * @param error error body\n * @param currentFile the current file being transferred\n */\nvar updateTransferActivity = function (id, status, total, current, error, currentFile) {\n var transfer = index_1.asperaHttpGateway.activityTracking.getTransferById(id);\n if (!transfer || transfer.status === 'canceled' || transfer.status === 'completed') {\n return;\n }\n transfer.status = status;\n transfer.bytes_expected = total ? total : transfer.bytes_expected;\n transfer.bytes_written = current ? current : transfer.bytes_written;\n if (currentFile) {\n transfer.current_file = currentFile.name;\n }\n if (status === 'completed' || status === 'failed') {\n if (index_1.asperaHttpGateway.activityTracking.queuedUploads.length) {\n var transferToStart = index_1.asperaHttpGateway.activityTracking.queuedUploads.shift();\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n (0, exports.startWebSocketTransfer)(transferToStart.id, transferToStart.transferSpec, transferToStart.files, undefined, { serverUrlOverride: transfer.serverUrlOverride || undefined });\n }\n }\n if (status === 'completed') {\n transfer.setEndTime();\n index_1.asperaHttpGateway.globals.deleteFormFromContainer(id.split(constants_1.keySplit)[0]);\n }\n else if (status === 'failed') {\n transfer.error_desc = error.reason;\n transfer.error_code = error.code;\n index_1.asperaHttpGateway.globals.deleteFormFromContainer(id.split(constants_1.keySplit)[0]);\n }\n index_1.asperaHttpGateway.activityTracking.triggerActivityCallbacks();\n};\nexports.updateTransferActivity = updateTransferActivity;\n/**\n * Slice a file and read it in with FileReader. This uses the callback to send the read event.\n * This function supports falling back to vendor prefix versions\n * of the slice function for older Firefox and Webkit browsers.\n *\n * @param file the file to slice\n * @param filePosition the start position of the file to slice\n * @param chunksize the end position of the file to slice\n * @param callback the callback to use for FileReader\n * @param fileReader the FileReader to use for reading in data\n */\nvar handleBlobSlicing = function (file, filePosition, chunksize, callback, fileReader) {\n var chunk;\n if (typeof file.slice === 'function') {\n chunk = file.slice(filePosition, filePosition + chunksize);\n }\n else if (typeof file.mozSlice === 'function') {\n chunk = file.mozSlice(filePosition, filePosition + chunksize);\n }\n else if (typeof file.webkitSlice === 'function') {\n chunk = file.webkitSlice(filePosition, filePosition + chunksize);\n }\n fileReader.onload = callback;\n fileReader[(0, helpers_1.getFeatureFlag)('noBase64Encoding') ? 'readAsArrayBuffer' : 'readAsDataURL'](chunk);\n};\nexports.handleBlobSlicing = handleBlobSlicing;\n/**\n * Software mode version of `handleBlobSlicing` for dealing with Buffer instead of File API\n *\n * @param file the file to slice (data string is a FileSystem readFile in binary format)\n * @param filePosition the start position of the file to slice\n * @param chunksize the end position of the file to slice\n * @param callback the callback to use for triggering event on slice\n *\n * @example\n * ```javascript\n * const fileInfo = fs.statSync(filePointer);\n * const file = {\n * data: fs.readFileSync(filePointer, {encoding: 'binary'}),\n * size: fileInfo.size,\n * type: 'file',\n * lastModified: fileInfo.mtime.toISOString(),\n * name: filePointer,\n * }\n * ```\n */\nvar handleSoftwareModeSlicing = function (file, filePosition, chunksize, callback) {\n var chunk = file.data.slice(filePosition, filePosition + chunksize);\n callback({\n total: chunk.length,\n target: {\n result: (0, helpers_1.getFeatureFlag)('noBase64Encoding') ? chunk : Buffer.from(chunk).toString('base64'),\n }\n });\n};\nexports.handleSoftwareModeSlicing = handleSoftwareModeSlicing;\n/**\n * Start sending chunked data through the opened websocket\n *\n * @param socket the WebSocket to use for data transfer\n * @param transferSpec the transferSpec to send for the upload\n * @param id the ID of the transfer for monitoring\n * @param queue the array of functions to call for sending data\n * @param fileReaderToUse the file reader to use for this transfer\n */\nvar startSendingData = function (socket, transferSpec, files, id, queue, fileReaderToUse) {\n var totalFileSize = 0;\n var totalSentSize = 0;\n files.forEach(function (file) {\n totalFileSize += file.size;\n });\n (0, exports.updateTransferActivity)(id, 'running', totalFileSize);\n files.forEach(function (file, index) {\n var filePiece = 0;\n var totalSlices = Math.ceil(file.size / index_1.asperaHttpGateway.globals.chunkSize);\n var _loop_1 = function (filePosition) {\n queue.push(function () {\n var sendChunkCallback = function (event) {\n var transfer = index_1.asperaHttpGateway.activityTracking.getTransferById(id);\n if (transfer && transfer.status === 'failed') {\n return;\n }\n if (transfer && transfer.status === 'canceled') {\n socket.close();\n return;\n }\n var binaryString = event.target.result;\n try {\n if ((0, helpers_1.getFeatureFlag)('noBase64Encoding')) {\n if (filePiece === 0) {\n socket.send(JSON.stringify({\n slice_upload: {\n name: file.asperaDropPath || file.webkitRelativePath || file.name,\n type: file.type,\n size: file.size,\n slice: filePiece,\n total_slices: totalSlices,\n fileIndex: index\n }\n }));\n }\n socket.send(binaryString);\n if (filePiece === totalSlices - 1) {\n socket.send(JSON.stringify({\n slice_upload: {\n name: file.asperaDropPath || file.webkitRelativePath || file.name,\n type: file.type,\n size: file.size,\n slice: filePiece,\n total_slices: totalSlices,\n fileIndex: index\n }\n }));\n }\n }\n else {\n if (typeof event.target.result === 'string' && event.target.result.indexOf('base64,') > -1) {\n binaryString = event.target.result.split('base64,')[1];\n }\n socket.send(JSON.stringify({\n slice_upload: {\n name: file.asperaDropPath || file.webkitRelativePath || file.name,\n type: file.type,\n size: file.size,\n data: binaryString,\n slice: filePiece,\n total_slices: totalSlices,\n fileIndex: index\n }\n }));\n }\n }\n catch (error) {\n (0, exports.updateTransferActivity)(id, 'failed');\n (0, helpers_1.errorLog)(messages_1.messages.unableToParseDataForUpload, error);\n throw Error();\n }\n filePiece++;\n if (event.total) {\n totalSentSize += event.total;\n }\n var foundTransfer = index_1.asperaHttpGateway.activityTracking.getTransferById(id);\n if (foundTransfer) {\n foundTransfer.recentPacketTransfer(event.total);\n }\n (0, exports.updateTransferActivity)(id, 'running', undefined, totalSentSize, undefined, file);\n queue.shift();\n };\n if (index_1.asperaHttpGateway.globals.softwareMode) {\n (0, exports.handleSoftwareModeSlicing)(file, filePosition, index_1.asperaHttpGateway.globals.chunkSize, sendChunkCallback);\n }\n else {\n (0, exports.handleBlobSlicing)(file, filePosition, index_1.asperaHttpGateway.globals.chunkSize, sendChunkCallback, fileReaderToUse);\n }\n });\n };\n for (var filePosition = 0; filePosition < file.size; filePosition += index_1.asperaHttpGateway.globals.chunkSize) {\n _loop_1(filePosition);\n }\n });\n try {\n socket.send(JSON.stringify({\n transfer_spec: transferSpec\n }));\n }\n catch (error) {\n (0, exports.updateTransferActivity)(id, 'failed');\n (0, helpers_1.errorLog)(messages_1.messages.unableToParseDataForUpload, error);\n throw Error();\n }\n};\nexports.startSendingData = startSendingData;\n/**\n * Add file input to a form for getting files from the local computer\n *\n * @param form form to add new file input to\n */\nvar addFilePickerToForm = function (form) {\n var element = document.createElement('input');\n element.type = 'file';\n element.multiple = true;\n element.name = 'file-' + form.children.length;\n form.appendChild(element);\n return element;\n};\nexports.addFilePickerToForm = addFilePickerToForm;\n/**\n * Add file input to a form with folder support for getting folders from the local computer\n *\n * NOTE: this cannot stop files from being picked.\n *\n * @param form form to add new file input to\n */\nvar addFolderPickerToForm = function (form) {\n var element = document.createElement('input');\n element.type = 'file';\n element.multiple = true;\n element.webkitdirectory = true;\n element.mozdirectory = true;\n element.msdirectory = true;\n element.odirectory = true;\n element.directory = true;\n element.name = 'file-' + form.children.length;\n form.appendChild(element);\n return element;\n};\nexports.addFolderPickerToForm = addFolderPickerToForm;\n/**\n * Request file picker for choosing files\n *\n * @param id the ID of the form to use (must be unique to each transfer grouping)\n * @param callback the function to call once the files are added\n */\nvar getFilesForUpload = function (callback, id) {\n if (!index_1.asperaHttpGateway.isReady) {\n (0, helpers_1.errorLog)(messages_1.messages.serverNotVerified);\n return;\n }\n var formToUse = index_1.asperaHttpGateway.globals.createOrUseForm(id);\n var inputFile = (0, exports.addFilePickerToForm)(formToUse);\n inputFile.onchange = function () {\n var files = [];\n if (!inputFile.files) {\n callback({ dataTransfer: { files: files } });\n return;\n }\n for (var i = 0; i < inputFile.files.length; i++) {\n files.push(new models_1.FileSelected(inputFile.files[i]));\n }\n callback({ dataTransfer: { files: files } });\n };\n inputFile.click();\n};\nexports.getFilesForUpload = getFilesForUpload;\n/**\n * Request file picker for choosing files and use promise.\n * Uses `getFilesForUpload` logic wrapped in a Promise\n *\n * @param id the ID of the form to use (must be unique to each transfer grouping)\n *\n * @returns promise that resolves with the files (error state is never used)\n */\nvar getFilesForUploadPromise = function (id) {\n var promiseToUse = (0, helpers_1.generatePromiseObjects)();\n var promiseCallback = function (data) {\n promiseToUse.resolver(data);\n };\n (0, exports.getFilesForUpload)(promiseCallback, id);\n return promiseToUse.promise;\n};\nexports.getFilesForUploadPromise = getFilesForUploadPromise;\n/**\n * Request folder picker for choosing folders\n * @remarks Feature not supported. Will be introduced in future release.\n *\n * @param id the ID of the form to use (must be unique to each transfer grouping)\n * @param callback the function to call once the folders are added\n */\nvar getFoldersForUpload = function (callback, id) {\n if (!index_1.asperaHttpGateway.isReady) {\n (0, helpers_1.errorLog)(messages_1.messages.serverNotVerified);\n return;\n }\n var formToUse = index_1.asperaHttpGateway.globals.createOrUseForm(id);\n var inputFile = (0, exports.addFolderPickerToForm)(formToUse);\n inputFile.onchange = function () {\n var files = [];\n var folders = new Map();\n if (!inputFile.files) {\n callback({ dataTransfer: { files: files } });\n return;\n }\n for (var i = 0; i < inputFile.files.length; i++) {\n var file = inputFile.files[i];\n if (file.webkitRelativePath) {\n // TODO: Does Windows return using forward slash?\n var rootFolder = file.webkitRelativePath.split('/')[0];\n if (!folders.get(rootFolder)) {\n folders.set(rootFolder, { path: rootFolder, files: [] });\n }\n folders.get(rootFolder).files.push(file);\n }\n else {\n files.push(new models_1.FileSelected(inputFile.files[i]));\n }\n }\n var formFolderData = index_1.asperaHttpGateway.globals.getOrCreateFolderDataList(id);\n (0, helpers_1.iterableToArray)(folders.values()).forEach(function (folder) {\n formFolderData.set(folder.path, folder);\n files.push(new models_1.FileSelected({ name: folder.path, size: 0, type: 'inode/directory' }));\n });\n callback({ dataTransfer: { files: files } });\n };\n inputFile.click();\n};\nexports.getFoldersForUpload = getFoldersForUpload;\n/**\n * Request folder picker for choosing folders and use promise.\n * Uses `getFoldersForUpload` logic wrapped in a Promise\n * @remarks Feature not supported. Will be introduced in future release.\n *\n * @param id the ID of the form to use (must be unique to each transfer grouping)\n *\n * @returns promise that resolves with the folders/file list (error state is never used)\n */\nvar getFoldersForUploadPromise = function (id) {\n var promiseToUse = (0, helpers_1.generatePromiseObjects)();\n var promiseCallback = function (data) {\n promiseToUse.resolver(data);\n };\n (0, exports.getFoldersForUpload)(promiseCallback, id);\n return promiseToUse.promise;\n};\nexports.getFoldersForUploadPromise = getFoldersForUploadPromise;\n/**\n * Start the Websockets and transfer\n *\n * @param id the ID to use for the transfer\n * @param transferSpec the transferSpec of the transfer\n * @param files the files to transfer\n * @param promiseInfo the promise data to resolve for the transfer if needed\n */\nvar startWebSocketTransfer = function (id, transferSpec, files, promiseInfo, options) {\n if (options === void 0) { options = {}; }\n var queue = [];\n var fileReaderToUse = typeof FileReader === 'function' ? new FileReader() : null;\n var finalServerUrl = options.serverUrlOverride ? (0, core_1.cleanupServerUrl)(options.serverUrlOverride) : index_1.asperaHttpGateway.globals.serverUrl;\n var socket = new WebSocket((0, helpers_1.getWebsocketUrl)(finalServerUrl, location.protocol));\n socket.onopen = function (data) {\n if (promiseInfo) {\n promiseInfo.resolver(data);\n }\n index_1.asperaHttpGateway.activityTracking.setTransfer(id, new models_1.HttpTransfer(id, transferSpec, files, undefined, { serverUrlOverride: options.serverUrlOverride }));\n (0, exports.startSendingData)(socket, transferSpec, files, id, queue, fileReaderToUse);\n };\n socket.onclose = function (data) {\n var transfer = index_1.asperaHttpGateway.activityTracking.getTransferById(id);\n if (transfer && transfer.status !== 'completed') {\n (0, exports.updateTransferActivity)(id, 'failed', undefined, undefined, data);\n (0, helpers_1.errorLog)(messages_1.messages.websocketClosedUnexpect, { error: data });\n }\n };\n socket.onmessage = function (data) {\n if (data.data === 'end upload') {\n // TODO: check if fileReader is available due to dupe `end upload` events\n if (queue.length) {\n queue[0]();\n }\n else {\n setTimeout(function () {\n socket.close(1000);\n }, 5000);\n (0, exports.updateTransferActivity)(id, 'completed');\n }\n }\n };\n socket.onerror = function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.websocketClosedUnexpect, error);\n (0, exports.updateTransferActivity)(id, 'failed', undefined, undefined, error);\n if (promiseInfo) {\n promiseInfo.rejecter(error);\n }\n };\n};\nexports.startWebSocketTransfer = startWebSocketTransfer;\n/**\n * Start a HTTP Gateway upload.\n *\n * @param transferSpec standard Connect transferSpec for uploading\n * @param id the ID of the form group to use for files\n * @param memoryFilesToLoad array of files from memory to use. These will be used all the time and if transferSpec does not contain them an error will raise.\n * @param options options for customizing the upload\n *\n * @returns a promise that resolves if upload is successful and rejects if upload cannot be started\n */\nvar upload = function (transferSpec, id, memoryFilesToLoad, options) {\n if (options === void 0) { options = {}; }\n if (!index_1.asperaHttpGateway.isReady) {\n (0, helpers_1.errorLog)(messages_1.messages.serverNotVerified);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.serverNotVerified));\n });\n }\n if (!(0, helpers_1.isValidTransferSpec)(transferSpec)) {\n (0, helpers_1.errorLog)(messages_1.messages.notValidTransferSpec);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.notValidTransferSpec, { transferSpec: transferSpec }));\n });\n }\n var files = (0, helpers_1.getFilesForTransfer)(id, transferSpec);\n if (memoryFilesToLoad) {\n memoryFilesToLoad.forEach(function (file) {\n files.push(file);\n });\n }\n var folderExplodeData = (0, helpers_1.folderTransferSpecExplode)(id, transferSpec);\n if (folderExplodeData.files.length) {\n folderExplodeData.files.forEach(function (file) {\n files.push(file);\n });\n transferSpec.paths = folderExplodeData.newPath;\n }\n if (!files.length) {\n (0, helpers_1.errorLog)(messages_1.messages.unableToGetFilesForUpload);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.unableToGetFilesForUpload, { transferSpec: transferSpec, files: files }));\n });\n }\n else if (files.length !== transferSpec.paths.length) {\n (0, helpers_1.errorLog)(messages_1.messages.unauthorizedFilesForUpload);\n return new Promise(function (resolve, reject) {\n reject((0, helpers_1.generateErrorBody)(messages_1.messages.unauthorizedFilesForUpload, { transferSpec: transferSpec, files: files }));\n });\n }\n var promiseInfo = (0, helpers_1.generatePromiseObjects)();\n id = \"\".concat(id).concat(constants_1.keySplit).concat((Math.random() * 10000000).toFixed());\n var currentRunningTransfers = index_1.asperaHttpGateway.activityTracking.getActiveTransfers();\n if (currentRunningTransfers.length >= index_1.asperaHttpGateway.globals.concurrentUploads) {\n index_1.asperaHttpGateway.activityTracking.queuedUploads.push({ id: id, transferSpec: transferSpec, files: files });\n index_1.asperaHttpGateway.activityTracking.setTransfer(id, new models_1.HttpTransfer(id, transferSpec, files, 'queued', { serverUrlOverride: options.serverUrlOverride }));\n setTimeout(function () {\n promiseInfo.resolver({});\n }, 100);\n }\n else {\n (0, exports.startWebSocketTransfer)(id, transferSpec, files, promiseInfo, options);\n }\n return promiseInfo.promise;\n};\nexports.upload = upload;\n/**\n * Create a dropzone linked to a form grouping.\n * All drops are stored in same place to allow body drops.\n *\n * @param callback the function to call once the files are dropped\n * @param elementSelector the selector of the element on the page that should watch for drop events\n */\nvar createDropzone = function (callback, elementSelector) {\n var elements = document.querySelectorAll(elementSelector);\n if (!elements || !elements.length) {\n (0, helpers_1.errorLog)(messages_1.messages.unableToFindElementOnPage);\n return;\n }\n index_1.asperaHttpGateway.globals.createOrUseForm(constants_1.dropContainerName);\n var currentFiles = index_1.asperaHttpGateway.globals.getOrCreateFormFileListFromDrop(constants_1.dropContainerName);\n var formFolderData = index_1.asperaHttpGateway.globals.getOrCreateFolderDataList(constants_1.dropContainerName);\n var dragEvent = function (event) {\n event.preventDefault();\n };\n var dropEvent = function (event) {\n event.preventDefault();\n var files = [];\n if (event.dataTransfer && event.dataTransfer.items && event.dataTransfer.items.length && event.dataTransfer.items[0] && event.dataTransfer.items[0].kind !== 'string') {\n try {\n var _loop_2 = function (i) {\n var fileEntry = event.dataTransfer.items[i].webkitGetAsEntry();\n if (fileEntry.isFile) {\n var file = event.dataTransfer.items[i].getAsFile();\n currentFiles.push(file);\n files.push({\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n });\n }\n else if (fileEntry.isDirectory) {\n var folder_1 = {\n path: fileEntry.name,\n files: [],\n };\n files.push({\n lastModified: 0,\n name: fileEntry.name,\n size: 0,\n type: 'inode/directory'\n });\n var recursiveReader_1 = function (entry) {\n var reader = entry.createReader();\n reader.readEntries(function (entries) {\n entries.forEach(function (entryItem) {\n if (entryItem.isFile) {\n entryItem.file(function (file) {\n file.asperaDropPath = entryItem.fullPath;\n folder_1.files.push(file);\n });\n }\n else if (entryItem.isDirectory) {\n recursiveReader_1(entryItem);\n }\n });\n formFolderData.set(folder_1.path, folder_1);\n });\n };\n recursiveReader_1(fileEntry);\n }\n };\n for (var i = 0; i < event.dataTransfer.items.length; i++) {\n _loop_2(i);\n }\n }\n catch (error) {\n (0, helpers_1.errorLog)(messages_1.messages.unableToReadFolder, { event: event, error: error });\n alert(messages_1.messages.unableToReadFolder);\n }\n }\n else if (event.dataTransfer.files) {\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n currentFiles.push(event.dataTransfer.files[i]);\n files.push(event.dataTransfer.files[i]);\n }\n }\n callback({ event: event, files: { dataTransfer: { files: files } } });\n };\n elements.forEach(function (element) {\n element.addEventListener('dragover', dragEvent);\n element.addEventListener('drop', dropEvent);\n index_1.asperaHttpGateway.globals.dropzonesCreated.set(elementSelector, [{ event: 'dragover', callback: dragEvent }, { event: 'drop', callback: dropEvent }]);\n });\n};\nexports.createDropzone = createDropzone;\n/**\n * Remove dropzone added by gateway.\n *\n * @param elementSelector the selector of the element on the page that should remove\n */\nvar removeDropzone = function (elementSelector) {\n var foundDropzone = index_1.asperaHttpGateway.globals.dropzonesCreated.get(elementSelector);\n if (foundDropzone) {\n foundDropzone.forEach(function (data) {\n var elements = document.querySelectorAll(elementSelector);\n if (elements && elements.length) {\n elements.forEach(function (element) {\n element.removeEventListener(data.event, data.callback);\n });\n }\n });\n }\n};\nexports.removeDropzone = removeDropzone;\nexports.default = {\n upload: exports.upload,\n updateTransferActivity: exports.updateTransferActivity,\n startSendingData: exports.startSendingData,\n addFilePickerToForm: exports.addFilePickerToForm,\n createDropzone: exports.createDropzone,\n removeDropzone: exports.removeDropzone,\n getFilesForUploadPromise: exports.getFilesForUploadPromise,\n getFilesForUpload: exports.getFilesForUpload,\n getFoldersForUploadPromise: exports.getFoldersForUploadPromise,\n getFoldersForUpload: exports.getFoldersForUpload,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./client\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./server\"), exports);\n__exportStar(require(\"./server-and-client\"), exports);\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var INSTALL_EVENT = {\n DOWNLOAD_CONNECT: 'downloadconnect',\n REFRESH_PAGE: 'refresh',\n IFRAME_REMOVED: 'removeiframe',\n IFRAME_LOADED: 'iframeloaded',\n TROUBLESHOOT: 'troubleshoot',\n CONTINUE: 'continue',\n RESIZE: 'px',\n RETRY: 'retry',\n EXTENSION_INSTALL: 'extension_install',\n DOWNLOAD_EXTENSION: 'download_extension'\n};\nexport var ACTIVITY_EVENT = {\n CONNECT_BAR_VISIBLE: 'connect_bar_visible',\n CLICKED_INSTALL_EXTENSION: 'clicked_install_extension',\n CLICKED_ENABLE_EXTENSION: 'clicked_enable_extension',\n CLICKED_INSTALL_ADDON: 'clicked_install_addon',\n CLICKED_DOWNLOAD_APP: 'clicked_download_app',\n CLICKED_INSTALL_APP: 'clicked_install_app',\n CLICKED_TROUBLESHOOT: 'clicked_troubleshoot',\n CLICKED_DOWNLOAD_INDICATOR: 'clicked_download_indicator',\n DOWNLOAD_INDICATOR_VISIBLE: 'download_indicator_visible',\n CLICKED_HOW_LINK: 'clicked_how_link',\n CONNECT_BAR_REMOVED: 'connect_bar_removed',\n CLICKED_RETRY: 'mitigate_with_tab'\n};\nexport var EVENT_TYPE = {\n CONNECT_BAR_EVENT: 'connect_bar_event'\n};\n","export var LS_CONTINUED_KEY = 'connect-version-continued';\nexport var LS_CONNECT_APP_ID = 'connect-app-id';\nexport var LS_LOG_KEY = 'aspera-log-level';\nexport var LS_CONNECT_DETECTED = 'aspera-last-detected';\n","export var MIN_SECURE_VERSION = '3.9.0';\nexport var HTTP_METHOD = {\n GET: 'GET',\n POST: 'POST',\n DELETE: 'DELETE',\n REVERT: 'REVERT'\n};\nexport var STATUS = {\n INITIALIZING: 'INITIALIZING',\n RETRYING: 'RETRYING',\n RUNNING: 'RUNNING',\n OUTDATED: 'OUTDATED',\n FAILED: 'FAILED',\n EXTENSION_INSTALL: 'EXTENSION_INSTALL',\n STOPPED: 'STOPPED',\n WAITING: 'WAITING',\n DEGRADED: 'DEGRADED'\n};\nexport var EVENT = {\n ALL: 'all',\n TRANSFER: 'transfer',\n STATUS: 'status'\n};\nexport var TRANSFER_STATUS = {\n CANCELLED: 'cancelled',\n COMPLETED: 'completed',\n FAILED: 'failed',\n INITIATING: 'initiating',\n QUEUED: 'queued',\n REMOVED: 'removed',\n RUNNING: 'running',\n WILLRETRY: 'willretry'\n};\n","export var apiEndpoints = {\n activity: {\n route: 'activity',\n prefix: '/connect/transfers/'\n },\n authenticate: {\n route: 'authenticate',\n prefix: '/connect/info/'\n },\n droppedFiles: {\n route: 'dropped-files',\n prefix: '/connect/file/'\n },\n getTransfer: {\n route: 'info/${id}',\n prefix: '/connect/transfers/'\n },\n initDragDrop: {\n route: 'initialize-drag-drop',\n prefix: '/connect/file/'\n },\n modifyTransfer: {\n route: 'modify/${id}',\n prefix: '/connect/transfers/'\n },\n ping: {\n route: 'ping',\n prefix: '/connect/info/'\n },\n readAsArrayBuffer: {\n route: 'read-as-array-buffer/',\n prefix: '/connect/file/'\n },\n readChunkAsArrayBuffer: {\n route: 'read-chunk-as-array-buffer/',\n prefix: '/connect/file/'\n },\n getChecksum: {\n route: 'checksum/',\n prefix: '/connect/file/'\n },\n removeTransfer: {\n route: 'remove/${id}',\n prefix: '/connect/transfers/'\n },\n resumeTransfer: {\n route: 'resume/${id}',\n prefix: '/connect/transfers/'\n },\n showAbout: {\n route: 'about',\n prefix: '/connect/windows/'\n },\n showDirectory: {\n route: 'finder/${id}',\n prefix: '/connect/windows/'\n },\n showPreferences: {\n route: 'preferences',\n prefix: '/connect/windows/'\n },\n showPreferencesPage: {\n route: 'preferences/${id}',\n prefix: '/connect/windows/'\n },\n showSaveFileDialog: {\n route: 'select-save-file-dialog/',\n prefix: '/connect/windows/'\n },\n showSelectFileDialog: {\n route: 'select-open-file-dialog/',\n prefix: '/connect/windows/'\n },\n showSelectFolderDialog: {\n route: 'select-open-folder-dialog/',\n prefix: '/connect/windows/'\n },\n showTransferManager: {\n route: 'transfer-manager',\n prefix: '/connect/windows/'\n },\n showTransferMonitor: {\n route: 'transfer-monitor/${id}',\n prefix: '/connect/windows/'\n },\n startTransfer: {\n route: 'start',\n prefix: '/connect/transfers/'\n },\n stopTransfer: {\n route: 'stop/${id}',\n prefix: '/connect/transfers/'\n },\n testSshPorts: {\n route: 'ports',\n prefix: '/connect/info/'\n },\n version: {\n route: 'version',\n prefix: '/connect/info/'\n }\n};\n","import { __read, __spreadArray } from \"tslib\";\nimport { LS_LOG_KEY } from './constants';\nvar LEVEL = {\n INFO: 0,\n DEBUG: 1,\n TRACE: 2\n};\nvar LogLevel = LEVEL.INFO;\nif (typeof localStorage !== 'undefined' && Object.prototype.hasOwnProperty.call(localStorage, LS_LOG_KEY)) {\n LogLevel = Number(localStorage.getItem(LS_LOG_KEY));\n}\nfunction trace() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (LogLevel >= LEVEL.TRACE) {\n print('log', args);\n }\n}\nfunction debug() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (LogLevel >= LEVEL.DEBUG) {\n print('log', args);\n }\n}\n/*\n * AW4.Logger.log(message) -> No return value\n * -message (String): A check for if window.console is defined is performed,\n * and if window.console is defined, then message will be sent to\n * console.log.\n */\nfunction log() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n print('log', args);\n}\n/*\n * AW4.Logger.warn(message) -> No return value\n * -message (String): A check for if window.console is defined is performed,\n * and if window.console is defined, then message will be sent to\n * console.warn.\n */\nfunction warn() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n print('warn', args);\n}\n/*\n * AW4.Logger.error(message) -> No return value\n * -message (String): A check for if window.console is defined is performed,\n * and if window.console is defined, then message will be sent to\n * console.error.\n */\nfunction error() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n print('error', args);\n}\nfunction print(level, message) {\n var _a;\n if (typeof window.console !== 'undefined') {\n (_a = window.console)[level].apply(_a, __spreadArray([], __read(message), false));\n }\n}\n/*\n * Sets the logging level for the Connect SDK.\n *\n * Levels:\n * * `0` - INFO\n * * `1` - DEBUG\n * * `2` - TRACE\n */\nfunction setLevel(level) {\n LogLevel = level;\n localStorage[LS_LOG_KEY] = level;\n}\nexport var Logger = { debug: debug, error: error, log: log, setLevel: setLevel, trace: trace, warn: warn };\n","var ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\nvar checkSafari = function (ua, minver) {\n var match = ua.match(/(?:Version)[/](\\d+(\\.\\d+)?)/i);\n var ver = parseInt((match && match.length > 1 && match[1] || '0'), 10);\n return (ver >= minver);\n};\nvar checkEdge = function (ua, minver) {\n var match = ua.match(/(?:Edge)[/](\\d+(\\.\\d+)?)/i);\n var ver = parseInt((match && match.length > 1 && match[1] || '0'), 10);\n return (ver >= minver);\n};\nvar checkFirefox = function (ua, minver) {\n var match = ua.match(/(?:Firefox)[/](\\d+(\\.\\d+)?)/i);\n var ver = parseInt((match && match.length > 1 && match[1] || '0'), 10);\n return (ver >= minver);\n};\nvar isAndroid = function () { return /(android)/i.test(ua); };\nvar isIos = function () { return /iPad|iPhone|iPod/.test(ua) && !window['MSStream']; };\nexport default {\n ANDROID: isAndroid(),\n OPERA: /opera|opr/i.test(ua) && !/edge/i.test(ua),\n IE: /msie|trident/i.test(ua) && !/edge/i.test(ua),\n IOS: isIos(),\n CHROME: /chrome|crios|crmo/i.test(ua) && !/opera|opr/i.test(ua) && !/edge/i.test(ua),\n FIREFOX: /firefox|iceweasel/i.test(ua) && !/edge/i.test(ua) && checkFirefox(ua, 50),\n FIREFOX_LEGACY: /firefox|iceweasel/i.test(ua) && !/edge/i.test(ua) && !checkFirefox(ua, 50),\n EDGE_CHROMIUM: /edg/i.test(ua) && !/edge/i.test(ua),\n EDGE_WITH_EXTENSION: /edge/i.test(ua) && checkEdge(ua, 14),\n EDGE_LEGACY: /edge/i.test(ua) && !checkEdge(ua, 14),\n SAFARI: /safari/i.test(ua) && !/chrome|crios|crmo/i.test(ua) && !/edge/i.test(ua),\n SAFARI_NO_NPAPI: /safari/i.test(ua) && !/chrome|crios|crmo/i.test(ua) && !/edge/i.test(ua) && checkSafari(ua, 10)\n};\n","// Expose various shared variables across all modules\nvar ConnectGlobals = {\n connectVersion: '',\n minVersion: '',\n sessionId: '',\n sessionKey: ''\n};\nexport { ConnectGlobals };\n","/**\n * @desc Contains helper functions for the developer.\n *\n * @module Utils\n * @property {Object} BROWSER Contains the type of browser that we are currently\n * on (based on user agent).\n *\n * Format:\n * ```\n * {\n * \"OPERA\": false,\n * \"IE\": false,\n * \"CHROME\": true,\n * \"FIREFOX\": false,\n * \"FIREFOX_LEGACY\": false,\n * \"EDGE_WITH_EXTENSION\": false,\n * \"EDGE_LEGACY\": false,\n * \"SAFARI\": false,\n * \"SAFARI_NO_NPAPI\": false\n * }\n * ```\n */\nimport { Logger } from './logger';\nimport BROWSER from './helpers/browser';\nimport { LS_CONNECT_DETECTED, LS_CONTINUED_KEY } from './constants';\nimport { ConnectGlobals } from './helpers/globals';\nConnectGlobals.sessionId = generateUuid();\nConnectGlobals.sessionKey = generateRandomStr(32);\nvar nextObjId = 0;\n// Returns fasp initialize protocol\nexport function getInitUrl() {\n return 'fasp://initialize';\n}\nexport function getXMLHttpRequest() {\n if (typeof XMLHttpRequest === 'undefined') {\n // @ts-ignore\n XMLHttpRequest = function () {\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n }\n catch (e) { }\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n }\n catch (e) { }\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n }\n catch (e) { }\n // This browser does not support XMLHttpRequest\n return;\n };\n }\n return new XMLHttpRequest();\n}\n// Returns standardized error object\nexport function createError(errorCode, message) {\n var internalMessage = '';\n if (errorCode === -1) {\n internalMessage = 'Invalid request';\n }\n return { error: { code: errorCode, internal_message: internalMessage, user_message: message } };\n}\nexport function parseJson(str) {\n var obj;\n if (typeof str === 'string' && (str.length === 0 || str.replace(/\\s/g, '') === '{}')) {\n // return {};\n }\n try {\n obj = JSON.parse(str);\n }\n catch (e) {\n obj = createError(-1, e);\n }\n return obj;\n}\nexport function copyObject(obj) {\n var localObj = {};\n if (!isNullOrUndefinedOrEmpty(obj)) {\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n localObj[property] = obj[property];\n }\n }\n }\n return localObj;\n}\n// Checks if variable is null or undefined or empty.\nexport function isNullOrUndefinedOrEmpty(x) {\n return x === '' || x === null || typeof x === 'undefined';\n}\n/*\n * AW4.Utils.versionLessThan(version1, version2) -> bool\n * - version1 (Number): a version Integer\n * - version2 (Number): a version Integer\n *\n * Compares two version strings.\n * Returns true if version string 'a' is less than version string 'b'\n * '1.2.1' < '1.11.3'\n * '1.1' < '2.1'\n * '1' = '1'\n * '1.2' < '2'\n * Note the following behavior:\n * '1' = '1.2'\n * '1.2' = '1'\n * This helps with upgrade checks. If at least version '4' is required, and\n * '4.4.2' is installed, versionLessThan('4.4.2','4') will return false.\n *\n * If the version number contains a character that is not a numeral it ignores\n * it\n */\nexport function versionLessThan(a, b) {\n var versionToArray = function (version) {\n var splits = version.split('.');\n var versionArray = [];\n for (var i_1 = 0; i_1 < splits.length; i_1++) {\n var versionPart = parseInt(splits[i_1], 10);\n if (!isNaN(versionPart)) {\n versionArray.push(versionPart);\n }\n }\n return versionArray;\n };\n var aArr = versionToArray(a);\n var bArr = versionToArray(b);\n var i;\n for (i = 0; i < Math.min(aArr.length, bArr.length); i++) {\n // if i=2, a=[0,0,1,0] and b=[0,0,2,0]\n if (aArr[i] < bArr[i]) {\n return true;\n }\n // if i=2, a=[0,0,2,0] and b=[0,0,1,0]\n if (aArr[i] > bArr[i]) {\n return false;\n }\n // a[i] and b[i] exist and are equal:\n // move on to the next version number\n }\n // all numbers equal (or all are equal and we reached the end of a or b)\n return false;\n}\n// Checks if user has previously chosen to continue with current version.\nexport function checkVersionException() {\n if (typeof (localStorage) === 'undefined') {\n return false;\n }\n var prevContinuedSeconds = localStorage.getItem(LS_CONTINUED_KEY);\n if (prevContinuedSeconds !== undefined && prevContinuedSeconds !== null) {\n var currentTimeSeconds = Math.round(new Date().getTime() / 1000);\n if ((currentTimeSeconds - Number(prevContinuedSeconds)) < 60 * 24) {\n Logger.debug('User opted out of update');\n return true;\n }\n }\n return false;\n}\nexport function addVersionException() {\n if (typeof (localStorage) === 'undefined') {\n return;\n }\n localStorage.setItem(LS_CONTINUED_KEY, String(Math.round(new Date().getTime() / 1000)));\n}\n// Helper function to generate deferred promise\nexport function generatePromiseData() {\n var resolver;\n var rejecter;\n var promise = new Promise(function (resolve, reject) {\n resolver = resolve;\n rejecter = reject;\n });\n return {\n promise: promise,\n resolver: resolver,\n rejecter: rejecter\n };\n}\nexport function generateUuid() {\n var date = new Date().getTime();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r;\n // @ts-ignore\n r = ((date + 16) * Math.random()).toFixed() % 16;\n if (c !== 'x') {\n /* jslint bitwise: true */\n r = r & 0x3 | 0x8;\n /* jslint bitwise: false */\n }\n return r.toString(16);\n });\n}\nexport function generateRandomStr(size) {\n var text = '';\n var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < size; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text;\n}\n/**\n * Attempt to launch Connect. It will handle different browser\n * implementations to not end in an error page or launch multiple\n * times.\n *\n * @function\n * @static\n * @name launchConnect\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n *\n * Result returned to success callback:\n * * `true` - If Connect is installed.\n * * `false` - If Connect is either not installed or we could not detect it.\n * @return {null}\n */\nexport function launchConnect(userCallback) {\n var isRegistered = false;\n var callback = function (installed) {\n if (typeof userCallback === 'function') {\n userCallback(installed);\n }\n };\n var launchUri = getInitUrl();\n Logger.debug('Starting Connect session: ' + launchUri);\n if (BROWSER.CHROME || BROWSER.OPERA) {\n document.body.focus();\n document.body.onblur = function () {\n isRegistered = true;\n };\n // will trigger onblur\n document.location.href = launchUri;\n // Note: timeout could lety as per the browser version, have a higher value\n setTimeout(function () {\n // tslint:disable-next-line\n document.body.onblur = null;\n callback(isRegistered);\n }, 500);\n }\n else if (BROWSER.EDGE_LEGACY || BROWSER.EDGE_WITH_EXTENSION) {\n document.location.href = launchUri;\n }\n else if (BROWSER.FIREFOX_LEGACY || BROWSER.FIREFOX || BROWSER.SAFARI_NO_NPAPI) {\n var hiddenIframe = document.createElement('IFRAME');\n hiddenIframe.src = launchUri;\n // Don't show the iframe and don't allow it to take up space\n hiddenIframe.style.visibility = 'hidden';\n hiddenIframe.style.position = 'absolute';\n hiddenIframe.style.width = '0px';\n hiddenIframe.style.height = '0px';\n hiddenIframe.style.border = '0px';\n document.body.appendChild(hiddenIframe);\n }\n // ELSE is handled by the NPAPI plugin\n return;\n}\n/**\n * Returns full URL from relative URL\n *\n * @function\n * @static\n * @name getFullURI\n *\n * @param {String} relativeURL The relative URL that we want the full path to. It\n * must be relative to the current page being rendered. If a full URL is\n * provided, it will return the same.\n * @return {String}\n * @example\n * // If current rendered page is https://example.com/my/page\n * let relativeURL = 'foo.txt'\n * AW4.Utils.getFullURI(relativeURL) // returns \"https://example.com/my/page/foo.txt\"\n */\nexport function getFullURI(relativeURL) {\n if (typeof relativeURL !== 'string') {\n return;\n }\n var url = relativeURL;\n var a = document.createElement('a');\n a.href = url;\n var fullURL = a.href;\n if (fullURL.indexOf('/', fullURL.length - 1) !== -1) {\n fullURL = fullURL.slice(0, -1);\n }\n return fullURL;\n}\n// Output base64 string from utf8 or unicode string\nexport function utoa(inputString) {\n if (window.btoa) {\n return window.btoa(unescape(encodeURIComponent(inputString)));\n }\n else {\n return inputString;\n }\n}\n// Output unicode string from base64 string\nexport function atou(inputString) {\n if (window.atob) {\n return decodeURIComponent(escape(window.atob(inputString)));\n }\n else {\n return inputString;\n }\n}\nexport function nextObjectId() {\n // Return an incrementing id even if file was reloaded\n nextObjId++;\n return nextObjId;\n}\n// Returns true if status code is 2xx\nexport function isSuccessCode(code) {\n return code >= 200 && code < 300;\n}\nexport function getLocalStorage(key) {\n try {\n if (typeof (localStorage) !== 'undefined') {\n return localStorage.getItem(key);\n }\n }\n catch (error) {\n // Accessing local storage can be blocked by third party cookie settings\n Logger.error('Error accessing localStorage: ', JSON.stringify(error));\n }\n return '';\n}\nexport function recordConnectDetected() {\n window.localStorage.setItem(LS_CONNECT_DETECTED, Date.now().toString());\n}\nexport function setLocalStorage(key, value) {\n try {\n if (typeof (localStorage) !== 'undefined') {\n localStorage.setItem(key, value);\n }\n }\n catch (error) {\n // Accessing local storage can be blocked by third party cookie settings\n Logger.error('Error accessing localStorage: ', JSON.stringify(error));\n }\n}\nexport function entropyOk(id) {\n var entropy = 0;\n var len = id.length;\n var charFreq = Object.create({});\n id.split('').forEach(function (s) {\n if (charFreq[s]) {\n charFreq[s] += 1;\n }\n else {\n charFreq[s] = 1;\n }\n });\n for (var s in charFreq) {\n var percent = charFreq[s] / len;\n entropy -= percent * (Math.log(percent) / Math.log(2));\n }\n return entropy > 3.80;\n}\nexport function isError(x) {\n return (x && x.error !== undefined);\n}\nexport function isMobile() {\n return (BROWSER.IOS || BROWSER.ANDROID);\n}\nexport { BROWSER };\nexport var Utils = {\n atou: atou,\n getFullURI: getFullURI,\n launchConnect: launchConnect,\n utoa: utoa,\n BROWSER: BROWSER\n};\n","import { isNullOrUndefinedOrEmpty, generatePromiseData } from '../../../utils';\nimport { STATUS } from '../../../constants';\nimport { Logger } from '../../../logger';\n/*\n * Abstract base class that holds all code that is common to any extension\n * request handler.\n */\nvar BaseExtensionStrategy = /** @class */ (function () {\n function BaseExtensionStrategy(options) {\n var _this = this;\n /** Internal cache for active requests */\n this.outstandingRequests = {};\n this.connectStatus = STATUS.INITIALIZING;\n /** Default dialog timeout (24 hours) */\n this.defaultDialogTimeout = 86400000;\n this.changeConnectStatus = function (newConnectStatus) {\n if (_this.connectStatus === newConnectStatus) {\n return;\n }\n _this.connectStatus = newConnectStatus;\n _this.options.requestStatusCallback(newConnectStatus);\n };\n this.httpRequest = function (endpoint, requestId) {\n var requestPromise = generatePromiseData();\n if (endpoint.path.indexOf('/v5/') > -1 || endpoint.path.indexOf('/v6/') > -1) {\n // TODO: Don't mutate original object\n endpoint.path = endpoint.path.replace('/v5', '').replace('/v6', '');\n }\n // Safari extension doesn't accept undefined data even if it is a GET request\n if (isNullOrUndefinedOrEmpty(endpoint.body)) {\n endpoint.body = '';\n }\n var req = {\n 'request_id': requestId,\n 'min_version': _this.options.minVersion || '',\n 'method': endpoint.method,\n 'uri_reference': endpoint.path,\n 'body': endpoint.body\n };\n /**\n * If it's a dialog api and user sets a request timeout, set the request timeout here.\n * Otherwise, use default 24 hour timeout.\n */\n if (/select/i.test(endpoint.path)) {\n if (_this.options.extensionRequestTimeout) {\n req.timeout = _this.options.extensionRequestTimeout;\n }\n else {\n req.timeout = _this.defaultDialogTimeout;\n }\n }\n Logger.debug(req);\n _this.outstandingRequests[requestId] = {\n 'req': req,\n 'response': '',\n 'resolve': requestPromise.resolver\n };\n // TODO: Validate the data length is not over 100MB\n document.dispatchEvent(new CustomEvent('AsperaConnectRequest', { 'detail': req }));\n return requestPromise.promise;\n };\n this.options = options;\n }\n return BaseExtensionStrategy;\n}());\nexport default BaseExtensionStrategy;\n","import { __awaiter, __extends, __generator, __read, __spreadArray } from \"tslib\";\nimport { Logger } from '../../../logger';\nimport { atou, recordConnectDetected } from '../../../utils';\nimport { STATUS } from '../../../constants';\nimport BaseExtensionStrategy from './base-ext';\nvar NativeHostStrategy = /** @class */ (function (_super) {\n __extends(NativeHostStrategy, _super);\n function NativeHostStrategy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._extensionDetected = false;\n _this.name = 'nmh';\n /**\n * Handles disconnect messages from the extension.\n */\n _this.handleDisconnect = function (evt) { return __awaiter(_this, void 0, void 0, function () {\n var installIssueDetected_1, connectFound;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n Logger.debug('Native host disconnected. Detail: ' + evt.detail);\n /** Disconnect is expected if Connect is outdated */\n if (this.connectStatus === STATUS.OUTDATED) {\n return [2 /*return*/];\n }\n if (evt && evt.detail) {\n installIssueDetected_1 = false;\n [\n 'native messaging host not found',\n 'Error when communicating with the native messaging host',\n 'Access to the specified native messaging host is forbidden',\n 'No such native application' // Firefox\n ].forEach(function (message) {\n if (evt.detail.indexOf(message) !== -1) {\n installIssueDetected_1 = true;\n }\n });\n if (installIssueDetected_1) {\n this.changeConnectStatus(STATUS.FAILED);\n document.removeEventListener('AsperaConnectDisconnect', this.handleDisconnect);\n return [2 /*return*/];\n }\n }\n if (!(this.connectStatus !== STATUS.DEGRADED)) return [3 /*break*/, 2];\n this.changeConnectStatus(STATUS.DEGRADED);\n return [4 /*yield*/, this.detectConnect(this.options.connectLaunchWaitTimeoutMs)];\n case 1:\n connectFound = _a.sent();\n if (connectFound) {\n this.changeConnectStatus(STATUS.RUNNING);\n }\n else {\n this.changeConnectStatus(STATUS.FAILED);\n }\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); };\n /**\n * Resolves the extension response\n */\n _this.resolveExtensionResponse = function (evt) {\n var data;\n if (evt.type === 'message' &&\n typeof evt.data === 'object' &&\n 'type' in evt.data &&\n evt.data.type === 'AsperaConnectResponse' &&\n 'detail' in evt.data) {\n data = evt.data.detail;\n }\n else if ('detail' in evt) {\n /**\n * CustomEvent interface used in disconnect event\n */\n // @ts-ignore\n data = evt.detail;\n }\n if (data) {\n Logger.trace('Native host impl received response: ' + JSON.stringify(data));\n var id = data.request_id;\n /**\n * Each instance of this class will receive document events, but\n * the request might not have originated from this instance.\n */\n if (!(id in _this.outstandingRequests)) {\n return;\n }\n var resolve = _this.outstandingRequests[id].resolve;\n if ('body64' in data) {\n _this.outstandingRequests[id].response += data.body64;\n if (data.complete === true) {\n var resp = atou(_this.outstandingRequests[id].response);\n delete _this.outstandingRequests[id];\n resolve({\n status: data.status,\n body: resp,\n requestId: id\n });\n }\n }\n else {\n delete _this.outstandingRequests[id];\n resolve({\n status: data.status,\n body: data.body,\n requestId: id\n });\n }\n }\n };\n _this.detectionLoop = function (timeoutMs, loop) {\n if (timeoutMs === void 0) { timeoutMs = -1; }\n return __awaiter(_this, void 0, void 0, function () {\n var timeoutPromise, found;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n timeoutPromise = new Promise(function (resolve) {\n setTimeout(resolve, timeoutMs, false);\n });\n return [4 /*yield*/, Promise.race(__spreadArray(__spreadArray([], __read(timeoutMs !== -1 ? [timeoutPromise] : []), false), [\n loop()\n ], false))];\n case 1:\n found = _a.sent();\n clearInterval(this._detectionRetry);\n return [2 /*return*/, found];\n }\n });\n });\n };\n /**\n * Returns promise that resolves with true | false if Connect is detected or not.\n */\n _this.detectConnect = function (timeoutMs) {\n if (timeoutMs === void 0) { timeoutMs = -1; }\n return __awaiter(_this, void 0, void 0, function () {\n var waitUntilDetected;\n var _this = this;\n return __generator(this, function (_a) {\n waitUntilDetected = function () {\n return new Promise(function (resolve) {\n var attemptNumber = 1;\n var check = function () { return __awaiter(_this, void 0, void 0, function () {\n var endpoint, detectConnectRequestId, status_1, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n Logger.debug('Detecting Connect installation via extension. Attempt ' + attemptNumber);\n attemptNumber++;\n endpoint = {\n method: 'GET',\n path: '/connect/info/version'\n };\n detectConnectRequestId = this.options.objectId * 10500;\n return [4 /*yield*/, this.httpRequest(endpoint, detectConnectRequestId)];\n case 1:\n status_1 = (_a.sent()).status;\n if (status_1 === 503) {\n Logger.debug('Detected old version of Connect via extension.');\n this.changeConnectStatus(STATUS.OUTDATED);\n }\n else {\n Logger.debug('Detected Connect installation via extension.');\n recordConnectDetected();\n /** Go to running here if Connect was installed during loop after initial timeout */\n this.changeConnectStatus(STATUS.RUNNING);\n clearInterval(this._detectionRetry);\n resolve(true);\n }\n return [3 /*break*/, 3];\n case 2:\n error_1 = _a.sent();\n /** If there was an error, avoid infinitely retrying */\n clearInterval(this._detectionRetry);\n resolve(false);\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this._detectionRetry = setInterval(check, 1000);\n /** Call check() directly to avoid waiting the initial 1 second */\n void check();\n });\n };\n return [2 /*return*/, this.detectionLoop(timeoutMs, waitUntilDetected)];\n });\n });\n };\n /**\n * Returns promise that resolves with true | false if extension is detected or not.\n */\n _this.detectExtension = function (timeoutMs) {\n if (timeoutMs === void 0) { timeoutMs = -1; }\n return __awaiter(_this, void 0, void 0, function () {\n var waitUntilDetected;\n var _this = this;\n return __generator(this, function (_a) {\n if (this._extensionDetected) {\n return [2 /*return*/, true];\n }\n waitUntilDetected = function () {\n return new Promise(function (resolve) {\n var attemptNumber = 1;\n var check = function () {\n Logger.debug('Detecting Connect extension. Attempt ' + attemptNumber);\n attemptNumber++;\n document.dispatchEvent(new CustomEvent('AsperaConnectCheck', {}));\n };\n var versionResponse = function (evt) {\n if (evt.type === 'message' && typeof evt.data === 'object' && 'type' in evt.data\n && evt.data.type === 'AsperaConnectCheckResponse') {\n window.removeEventListener('message', versionResponse);\n Logger.debug('Extension detected: ' + JSON.stringify(evt.data));\n _this._extensionDetected = true;\n clearInterval(_this._detectionRetry);\n resolve(true);\n }\n };\n window.addEventListener('message', versionResponse);\n var interval = timeoutMs === -1 ? 1000 : 200;\n _this._detectionRetry = setInterval(check, interval);\n void check();\n });\n };\n return [2 /*return*/, this.detectionLoop(timeoutMs, waitUntilDetected)];\n });\n });\n };\n _this.stop = function () {\n clearInterval(_this._detectionRetry);\n };\n /**\n * Returns only once extension and Connect are both detected. Caller handles\n * any timeout.\n */\n _this.startup = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /** Setup extension response handlers */\n // @ts-ignore\n document.addEventListener('AsperaConnectResponse', this.resolveExtensionResponse);\n window.addEventListener('message', this.resolveExtensionResponse);\n /** Register disconnect handler before init to handle native host not found issues during install */\n document.addEventListener('AsperaConnectDisconnect', this.handleDisconnect);\n /** Await extension detection */\n return [4 /*yield*/, this.detectExtension()];\n case 1:\n /** Await extension detection */\n _a.sent();\n /** Await Connect detection */\n return [4 /*yield*/, this.detectConnect()];\n case 2:\n /** Await Connect detection */\n _a.sent();\n Logger.debug('nmh init finished');\n return [2 /*return*/];\n }\n });\n }); };\n return _this;\n }\n return NativeHostStrategy;\n}(BaseExtensionStrategy));\nexport default NativeHostStrategy;\n","import { __awaiter, __extends, __generator, __read, __spreadArray } from \"tslib\";\nimport { Logger } from '../../../logger';\nimport { STATUS } from '../../../constants';\nimport BaseExtensionStrategy from './base-ext';\nvar MAX_POLLING_ERRORS = 3;\nvar SafariAppStrategy = /** @class */ (function (_super) {\n __extends(SafariAppStrategy, _super);\n function SafariAppStrategy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pollingRequestErrors = 0;\n _this.extensionDetected = false;\n _this.name = 'safari';\n /**\n * Resolves the http response\n */\n _this.resolveHttpResponse = function (evt) {\n if (evt.detail) {\n Logger.trace('Safari extension impl received response: ' + JSON.stringify(evt));\n var id = evt.detail.request_id;\n /**\n * Each instance of this class will receive document events, but\n * the request might not have originated from this instance.\n */\n if (!(id in _this.outstandingRequests)) {\n return;\n }\n var path = _this.outstandingRequests[id].req.uri_reference;\n var resolve = _this.outstandingRequests[id].resolve;\n delete _this.outstandingRequests[id];\n if (evt.detail.status === 0 && path.indexOf('/connect/transfers/activity') > 0\n && _this.pollingRequestErrors < MAX_POLLING_ERRORS) {\n _this.pollingRequestErrors++;\n return;\n }\n else {\n _this.pollingRequestErrors = 0;\n resolve({\n status: evt.detail.status,\n body: evt.detail.body,\n requestId: id\n });\n }\n }\n };\n _this.checkEvent = function () {\n document.dispatchEvent(new CustomEvent('AsperaConnectCheck', {}));\n };\n _this.detectExtension = function (timeoutMs) {\n if (timeoutMs === void 0) { timeoutMs = -1; }\n return __awaiter(_this, void 0, void 0, function () {\n var timeoutPromise, waitUntilDetected, found;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /** First check if we have already detected the extension */\n if (this.extensionDetected) {\n Logger.debug('Skipping extension check - already detected.');\n return [2 /*return*/, true];\n }\n timeoutPromise = new Promise(function (resolve) {\n setTimeout(resolve, timeoutMs, false);\n });\n waitUntilDetected = function () {\n return new Promise(function (resolve) {\n var attemptNumber = 1;\n var check = function () {\n Logger.debug('Detecting Connect extension. Attempt ' + attemptNumber);\n attemptNumber++;\n // Event based\n _this.checkEvent();\n // DOM based extension detector\n var connectDetected = document.getElementById('aspera-connect-detector');\n if (connectDetected) {\n var extensionEnable = connectDetected.getAttribute('extension-enable');\n if (extensionEnable === 'true') {\n Logger.debug('Detected extension');\n clearInterval(_this.detectionRetry);\n // Additional check to see if connect check is responding\n _this.checkEvent();\n // wait for connect check response for 1 second\n setTimeout(function () {\n if (!_this.extensionDetected) {\n window.postMessage('show_safari_mitigate', '*');\n resolve(false);\n }\n else {\n /** Go to running here if Connect was installed during loop after initial timeout */\n _this.changeConnectStatus(STATUS.RUNNING);\n resolve(true);\n }\n }, 1000);\n }\n }\n // create detector\n if (!connectDetected) {\n Logger.debug('Creating detector in sdk...');\n var div = document.createElement('div');\n div.id = 'aspera-connect-detector';\n div.setAttribute('extension-enable', 'false');\n document.body.appendChild(div);\n }\n };\n // NOTE: Safari bugs sometime leads to breakdown in getting responses\n var versionResponse = function (evt) {\n if (evt.type === 'AsperaConnectCheckResponse' && 'detail' in evt && typeof evt.detail === 'object') {\n document.removeEventListener('AsperaConnectCheckResponse', versionResponse);\n Logger.debug('Got response from Connect: ' + JSON.stringify(evt.detail));\n clearInterval(_this.detectionRetry);\n _this.extensionDetected = true;\n resolve(true);\n }\n };\n document.addEventListener('AsperaConnectCheckResponse', versionResponse);\n var interval = timeoutMs === -1 ? 500 : 200;\n _this.detectionRetry = setInterval(check, interval);\n check();\n });\n };\n return [4 /*yield*/, Promise.race(__spreadArray(__spreadArray([], __read(timeoutMs !== -1 ? [timeoutPromise] : []), false), [\n waitUntilDetected()\n ], false))];\n case 1:\n found = _a.sent();\n clearInterval(this.detectionRetry);\n return [2 /*return*/, found];\n }\n });\n });\n };\n _this.stop = function () {\n clearTimeout(_this.detectionRetry);\n };\n _this.startup = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n Logger.debug('startup()');\n // @ts-ignore\n document.addEventListener('AsperaConnectResponse', this.resolveHttpResponse);\n /** Await extension detection */\n return [4 /*yield*/, this.detectExtension()];\n case 1:\n /** Await extension detection */\n _a.sent();\n Logger.debug('safari init finished');\n return [2 /*return*/];\n }\n });\n }); };\n return _this;\n }\n SafariAppStrategy.prototype.triggerExtensionCheck = function () {\n var hiddenIframe = document.createElement('IFRAME');\n hiddenIframe.src = 'fasp://initialize?checkextensions';\n hiddenIframe.style.visibility = 'hidden';\n hiddenIframe.style.position = 'absolute';\n hiddenIframe.style.width = '0px';\n hiddenIframe.style.height = '0px';\n hiddenIframe.style.border = '0px';\n document.body.appendChild(hiddenIframe);\n };\n return SafariAppStrategy;\n}(BaseExtensionStrategy));\nexport default SafariAppStrategy;\n","import * as Utils from './utils';\nimport { Logger } from './logger';\nimport { NativeHostStrategy, SafariAppStrategy } from './request/strategy/extension';\nimport { INSTALL_EVENT as EVENT, ACTIVITY_EVENT, EVENT_TYPE } from './constants';\nimport { connectInstallerBanner } from './constants/banner';\n/**\n * @classdesc Contains methods to support Connect installation\n *\n * @name ConnectInstaller\n * @class\n * @memberof AW4\n *\n * @property {Object} EVENT Event types\n *\n * Types:\n * * `EVENT.DOWNLOAD_CONNECT` - \"downloadconnect\"\n * * `EVENT.REFERESH_PAGE` - \"refresh\"\n * * `EVENT.IFRAME_REMOVED` - \"removeiframe\"\n * * `EVENT.IFRAME_LOADED` - \"iframeloaded\"\n * * `EVENT.TROUBLESHOOT` - \"troubleshoot\"\n * * `EVENT.CONTINUE` - \"continue\"\n * @property {Boolean} supportsInstallingExtensions=false To enable Connect extensions,\n * this property must be set to `true`.\n *\n * If you have a custom Connect install experience that can handle the EXTENSION_INSTALL state, set this value to 'true'\n * This value is used by {@link AW4.Connect} to determine if the EXTENSION_INSTALL event should be used.\n *\n * @param {String} [iframeClass=\"aspera-iframe-container\"] Class to be added to\n * the iframe that is going to be inserted in the DOM, for easier use with a custom stylesheet.\n * @param {String} [iframeId=\"aspera-iframe-container\"] Id of the iframe that is\n * going to be inserted in the DOM.\n * @param {String} [sdkLocation=\"//d3gcli72yxqn2z.cloudfront.net/downloads/connect/latest\"] URL\n * to the SDK location to serve Connect installers from. Needs to be served in\n * the same level of security as the web page (HTTP/HTTPS). This option is often used\n * if you are hosting your own instance of the Connect SDK.\n *\n * Format:\n * `//domain/path/to/connect/sdk`\n * @param {\"carbon\"|\"none\"} [style=\"carbon\"] Style of the Connect bar design. Specify \"none\" if you have\n * a custom Connect install experience. Default: \"carbon\"\n * @param {String} [stylesheetLocation] URL to a stylesheet. Needs to be served\n * in the same level of security as the web page (HTTP/HTTPS).\n *\n * Format:\n * `//domain/path/to/css/file.css`\n * @param {String} [version=\"latest\"] Connect installer version to offer for downloads. This option is ignored\n * if `sdkLocation` is specified. Only supports versions `4.x.x` and up.\n *\n * For example, to offer 4.1.2 Connect Installers, specify `4.1.2`.\n *\n * @example\n * let options = {\n * style: 'carbon'\n * }\n * let asperaInstaller = new AW4.ConnectInstaller(options)\n */\nvar ConnectInstaller = function ConnectInstaller(options) {\n var _newTarget = this && this instanceof ConnectInstaller ? this.constructor : void 0;\n var _this = this;\n if (!_newTarget) {\n throw new Error('ConnectInstaller() must be called with new');\n }\n var DEFAULT_SDK_LOCATION = '//d3gcli72yxqn2z.cloudfront.net/downloads/connect';\n var CONNECT_VERSIONS_JS = '/versions.js';\n var connectOptions = {};\n var listeners = [];\n var connectJSONreferences;\n var showInstallTimerID = 0;\n var iframeLoadedFlag = false;\n var connectInstallerListeners = [];\n var isSupportedBrowser = !Utils.BROWSER.IE;\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n if (Utils.isNullOrUndefinedOrEmpty(Utils.getLocalStorage('aspera-install-attempted'))) {\n Utils.setLocalStorage('aspera-install-attempted', 'true');\n }\n if (Utils.isNullOrUndefinedOrEmpty(Utils.getLocalStorage('aspera-last-detected'))) {\n Utils.setLocalStorage('aspera-last-detected', '');\n }\n connectOptions.version = options.version || 'latest';\n connectOptions.iframeId = options.iframeId || 'aspera-iframe-container';\n connectOptions.sdkLocation = (Utils.isNullOrUndefinedOrEmpty(options.sdkLocation)) ? \"\".concat(DEFAULT_SDK_LOCATION, \"/\").concat(connectOptions.version) : Utils.getFullURI(options.sdkLocation);\n connectOptions.stylesheetLocation = Utils.getFullURI(options.stylesheetLocation);\n connectOptions.correlationId = options.correlationId;\n connectOptions.style = options.style || 'carbon';\n if (typeof (Storage) !== 'undefined') {\n var overrideStyle = Utils.getLocalStorage('aspera-connect-install-style');\n if (overrideStyle) {\n connectOptions.style = overrideStyle;\n }\n }\n if (connectOptions.style === 'carbon') {\n // @ts-ignore\n ConnectInstaller.supportsInstallingExtensions = true;\n }\n /*\n * loadFiles(files, type, callback) -> null\n * - files (Array): Set of files to load\n * - type (String): type of the files to load: `js` or `css`\n * - callback (function): to be called when all scripts provided have been loaded,\n *\n * `true` : if files loaded correctly\n *\n * `false` : if files failed to load\n *\n */\n var loadFiles = function (files, type, callback) {\n if (files === null || typeof files === 'undefined' || !(files instanceof Array)) {\n return;\n }\n else if (type === null || typeof type !== 'string') {\n return;\n }\n var numberOfFiles = 0;\n var head = document.getElementsByTagName('head')[0] || document.documentElement;\n /* Loads the file given, and sets a callback, when the file is the last one and a callback is\n * provided, it will call it\n * Loading mechanism based on https://jquery.org (MIT license)\n */\n var loadFilesHelper = function (file) {\n // IE9+ supports both script.onload AND script.onreadystatechange thus the done check\n var done = false;\n var fileref;\n if (type.toLowerCase() === 'js') {\n fileref = document.createElement('script');\n fileref.setAttribute('type', 'text/javascript');\n fileref.setAttribute('src', file);\n }\n else if (type.toLowerCase() === 'css') {\n fileref = document.createElement('link');\n fileref.setAttribute('rel', 'stylesheet');\n fileref.setAttribute('type', 'text/css');\n fileref.setAttribute('href', file);\n }\n else {\n return;\n }\n if (typeof callback === 'function') {\n /** Attach handlers for all browsers */\n fileref.onload = fileref.onreadystatechange = function () {\n if (!done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {\n done = false;\n /** Handle memory leak in IE */\n // tslint:disable-next-line\n fileref.onload = fileref.onreadystatechange = null;\n if (head && fileref.parentNode) {\n head.removeChild(fileref);\n }\n if (--numberOfFiles <= 0 && typeof callback === 'function') {\n callback(true);\n }\n }\n };\n fileref.onerror = function () {\n callback(false);\n };\n }\n // Use insertBefore instead of appendChild to circumvent an IE6 bug.\n head.insertBefore(fileref, head.firstChild);\n };\n numberOfFiles = files.length;\n for (var i = 0; i < numberOfFiles; i++) {\n if (typeof files[i] === 'string') {\n loadFilesHelper(files[i]);\n }\n }\n };\n var osPlatform = function () {\n var os = 'unsupported';\n if (/Win/.test(navigator.platform)) {\n os = 'win64';\n }\n else if (/CrOS/.test(navigator.userAgent)) {\n // Chrome OS not supported\n return os;\n }\n else if (/Mac/.test(navigator.platform)) {\n os = 'macOS';\n }\n else if (/Linux/.test(navigator.platform)) {\n os = 'linux';\n }\n return os;\n };\n var notifyListeners = function (event) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](event);\n }\n };\n var notifyActivityListeners = function (status) {\n for (var i = 0; i < connectInstallerListeners.length; i++) {\n connectInstallerListeners[i](status);\n }\n };\n var supportsExtensions = function () {\n return ((Utils.BROWSER.CHROME || Utils.BROWSER.EDGE_WITH_EXTENSION || Utils.BROWSER.FIREFOX) ||\n Utils.BROWSER.SAFARI_NO_NPAPI);\n };\n this.addEventListener = function (listener) {\n if (typeof listener !== 'function') {\n return;\n }\n listeners.push(listener);\n return;\n };\n this.addActivityListener = function (type, listener) {\n if (typeof listener !== 'function') {\n return;\n }\n if (type === EVENT_TYPE.CONNECT_BAR_EVENT) {\n connectInstallerListeners.push(listener);\n }\n return;\n };\n /**\n * Queries the Connect SDK for the current system's information, returning the full spec of all the\n * documentation and binaries available for it.\n *\n * @function\n * @name AW4.ConnectInstaller#installationJSON\n * @param {Function} callbacks Function that will be called when the result is\n * retrieved.\n *\n * Object returned to callback function:\n * ```\n * {\n * \"title\": \"Aspera Connect for Windows\",\n * \"platform\": {\n * \"os\": \"win64\"\n * },\n * \"version\": \"4.1.1.73\",\n * \"updated\": \"2021-12-08T22:07:40.390Z\",\n * \"links\": [\n * {\n * \"title\": \"Windows 64-bit Installer\",\n * \"type\": \"application/octet-stream\",\n * \"href\": \"bin/ibm-aspera-connect_4.1.1.73_win64.exe\",\n * \"hreflang\": \"en\",\n * \"rel\": \"enclosure\"\n * },\n * {\n * \"title\": \"Aspera Connect Release Notes for Windows\",\n * \"type\": \"text/html\",\n * \"href\": \"https://www.ibm.com/docs/en/aspera-connect/4.1?topic=notes-release-aspera-connect-411\",\n * \"hreflang\": \"en\",\n * \"rel\": \"release-notes\"\n * }\n * ]\n * }\n * ...\n * ```\n * @return {null}\n */\n this.installationJSON = function (callback) {\n var _this = this;\n if (typeof callback !== 'function') {\n return;\n }\n if (connectJSONreferences !== undefined) {\n callback(connectJSONreferences);\n return;\n }\n var updatesURL = connectOptions.sdkLocation;\n var replaceJSONWithFullHref = function (connectversionsSdkLocation, entryJSON) {\n for (var i = 0; i < entryJSON.links.length; i++) {\n var hrefLink = entryJSON.links[i].href;\n if (!/^https?:\\/\\//i.test(hrefLink) && !/^\\/\\//.test(hrefLink)) {\n entryJSON.links[i].hrefAbsolute = connectversionsSdkLocation + '/' + hrefLink;\n }\n }\n };\n // Load references from file and parse to load in the iframe\n var parseInstallJSON = function (connectversionsSdkLocation) {\n var parsedInstallJSON = window.connectVersions;\n var installEntries = parsedInstallJSON.entries;\n // Prefix the installer filename with `sdkLocation` to generate the full URL to the installer\n var procesJSONentry = function (entryJSON) {\n replaceJSONWithFullHref(connectversionsSdkLocation, entryJSON);\n connectJSONreferences = entryJSON;\n callback(entryJSON);\n };\n // Find the installer for the user's current OS\n var userOS = osPlatform();\n for (var i = 0; i < installEntries.length; i++) {\n var entry = installEntries[i];\n if (userOS === entry.platform.os) {\n procesJSONentry(entry);\n return;\n }\n }\n Logger.error(\"Unable to find installer info for current platform: \".concat(userOS));\n _this.showUnsupportedBrowser();\n };\n var scriptLoaded = function (success) {\n var fallbackURL = \"\".concat(DEFAULT_SDK_LOCATION, \"/\").concat(connectOptions.version);\n if (success && window.connectVersions !== undefined) {\n parseInstallJSON(updatesURL);\n }\n else if (updatesURL !== fallbackURL) {\n updatesURL = fallbackURL;\n }\n };\n loadFiles([updatesURL + CONNECT_VERSIONS_JS], 'js', scriptLoaded);\n return;\n };\n /**\n * Determines if user has already installed the Connect extensions.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @ignore\n * @name AW4.ConnectInstaller#isExtensionInstalled\n * @param {Number} timeout Timeout (in milliseconds) to wait before the extension\n * is considered not to be installed.\n * @param {Callbacks} callbacks `success` and `timedout` functions to receive\n * results.\n * @return {null}\n */\n this.isExtensionInstalled = function (timeout, callbacks) {\n var _a, _b;\n // Prereq: connect-sdk needs to be loaded first\n // @ts-ignore\n var extReqImpl = Utils.BROWSER.SAFARI_NO_NPAPI ? new SafariAppStrategy() : new NativeHostStrategy();\n if (!supportsExtensions()) {\n Logger.debug('This browser does not use extensions.');\n return;\n }\n if (callbacks) {\n (_a = extReqImpl.detectExtension) === null || _a === void 0 ? void 0 : _a.call(extReqImpl, timeout).then(function (success) {\n if (success && typeof callbacks.success === 'function') {\n callbacks.success();\n }\n if (!success && typeof callbacks.timedout === 'function') {\n callbacks.timedout();\n }\n }).catch(function (err) {\n Logger.debug('Error trying to detect extension:', err);\n if (typeof callbacks.timedout === 'function') {\n callbacks.timedout();\n }\n });\n }\n else {\n return (_b = extReqImpl.detectExtension) === null || _b === void 0 ? void 0 : _b.call(extReqImpl, timeout);\n }\n };\n /**\n * Determine if current browser requires web store to install extensions.\n *\n * @function\n * @name AW4.ConnectInstaller#doesBrowserNeedExtensionStore\n * @return {Boolean}\n */\n this.doesBrowserNeedExtensionStore = function () {\n if (Utils.BROWSER.CHROME === true ||\n Utils.BROWSER.FIREFOX === true ||\n Utils.BROWSER.EDGE_WITH_EXTENSION === true) {\n return true;\n }\n // IE = ActiveX\n // Safari = bundled app extension\n return false;\n };\n /**\n * For supported browsers, returns a url for extension installation.\n *\n * @function\n * @name AW4.ConnectInstaller#getExtensionStoreLink\n * @return {String}\n *\n * @example\n * // On a Chrome browser\n * asperaInstaller.getExtensionStoreLink()\n * // returns \"https://chrome.google.com/webstore/detail/ibm-aspera-connect/kpoecbkildamnnchnlgoboipnblgikpn\"\n */\n this.getExtensionStoreLink = function () {\n if (Utils.BROWSER.FIREFOX === true) {\n return 'https://addons.mozilla.org/en-US/firefox/addon/ibm-aspera-connect';\n }\n else if (Utils.BROWSER.EDGE_WITH_EXTENSION === true) {\n return 'ms-windows-store://pdp/?productid=9N6XL57H8BMG';\n }\n else if (Utils.BROWSER.EDGE_CHROMIUM === true) {\n return 'https://microsoftedge.microsoft.com/addons/detail/ibm-aspera-connect/kbffkbiljjejklcpnfmoiaehplhcifki';\n }\n else if (Utils.BROWSER.CHROME === true) {\n return 'https://chrome.google.com/webstore/detail/ibm-aspera-connect/kpoecbkildamnnchnlgoboipnblgikpn';\n }\n Logger.debug('This browser does not use extensions.');\n return '';\n };\n /*\n * AW4.ConnectInstaller#startExtensionInstall() -> null\n *\n * In supported browsers, starts the extension installation experience.\n * To avoid issues with popup blockers, considering using anchor tag with `AW4.ConnectInstaller#getExtensionStoreLink`\n *\n */\n this.startExtensionInstall = function () {\n var lnk = this.getExtensionStoreLink();\n if (lnk !== '') {\n window.open(lnk, '_blank');\n }\n };\n var getRefreshWindow = function () {\n // Fix for refreshing only window in which we are contained, if we are an iframe just refresh the iframe (Sharepoint bug)\n var inIframe = false;\n try {\n inIframe = window.self !== window.top;\n }\n catch (e) {\n inIframe = true;\n }\n if (inIframe) {\n var iframe = document.getElementById(connectOptions.iframeId);\n if (iframe.contentWindow) {\n return iframe.contentWindow;\n }\n }\n return window;\n };\n // Get top window href and open in new tab\n var openNewTab = function () {\n // @ts-ignore\n var url = window.top.location.href;\n window.open(url, '_blank');\n };\n var isActivityEvent = function (e) {\n for (var key in ACTIVITY_EVENT) {\n if (ACTIVITY_EVENT[key] === e) {\n return true;\n }\n }\n return false;\n };\n // Apply the carbon installer inline styles\n var setCarbonBannerStyle = function (iframe, small) {\n iframe.style.position = 'fixed';\n iframe.style.border = 'none';\n iframe.style.outline = 'none';\n iframe.style.overflow = 'hidden';\n iframe.style.top = '0';\n iframe.style.right = '0';\n iframe.style.left = '0';\n iframe.style.zIndex = '9999';\n iframe.style.boxShadow = '0 12px 24px 0 rgba(0, 0, 0, 0.1)';\n if (small) {\n iframe.style.height = '80px';\n iframe.style.width = '100%';\n iframe.style.margin = '0 auto';\n iframe.style.maxWidth = '600px';\n }\n else {\n iframe.style.height = '100%';\n iframe.style.width = '100%';\n iframe.style.margin = '0';\n iframe.style.maxWidth = '100%';\n iframe.style.backgroundColor = 'rgba(223, 227, 230, 0.75)';\n }\n };\n var setHideClass = function (hide) {\n var iframe = document.getElementById(connectOptions.iframeId);\n if (iframe) {\n iframe.style.display = hide ? 'none' : '';\n // TODO: remove redundant visibility style (required by Faspex GA)\n iframe.style.visibility = hide ? 'hidden' : '';\n }\n };\n /*\n * AW4.ConnectInstaller#show(eventType) -> null\n * - eventType (String): the event type\n *\n * ##### Event types\n *\n * 1. `connecting` (`String`).\n * 2. `unable-to-launch` (`String`).\n * 3. `refresh` (`String`).\n * 4. `outdated` (`String`).\n * 5. `running` (`String`).\n *\n */\n var show = function (eventType) {\n var _a, _b;\n // We always need to check if launching was going to be popped up, if so delete it\n if (showInstallTimerID !== 0) {\n clearTimeout(showInstallTimerID);\n }\n var iframe = document.getElementById(connectOptions.iframeId);\n // To support old browser that don't have it\n if (typeof (String.prototype.endsWith) === 'undefined') {\n String.prototype.endsWith = function (suffix) {\n return this.indexOf(suffix, this.length - suffix.length) !== -1;\n };\n }\n // IE will complain that in strict mode functions cannot be nested inside a statement, so we have to define it here\n var handleMessage = function (event) {\n // iFrame installation: Handling of messages by the parent window.\n if (isActivityEvent(event.data)) {\n Logger.debug('Connect bar activity: ', event.data);\n notifyActivityListeners(event.data);\n if (event.data === ACTIVITY_EVENT.CLICKED_DOWNLOAD_APP) {\n // Track if the user downloaded the app\n Utils.setLocalStorage('aspera-connect-app-download', Date.now().toString());\n }\n else if (event.data === ACTIVITY_EVENT.CLICKED_INSTALL_APP) {\n if (Utils.BROWSER.SAFARI || Utils.BROWSER.IE) {\n // Transition to extension_installs state if user clicks install app\n // on Safari or IE.\n _this.showExtensionInstall();\n }\n }\n else if (event.data === ACTIVITY_EVENT.CLICKED_RETRY) {\n openNewTab();\n }\n }\n if (event.data === EVENT.DOWNLOAD_CONNECT) {\n notifyListeners(event.data);\n _this.showInstall();\n }\n else if (event.data === EVENT.DOWNLOAD_EXTENSION) {\n notifyListeners(event.data);\n _this.showDownload();\n }\n else if (event.data === EVENT.REFRESH_PAGE) {\n notifyListeners(event.data);\n var refreshWindow = getRefreshWindow();\n // @ts-ignore\n refreshWindow.location.reload(true);\n }\n else if (event.data === EVENT.IFRAME_REMOVED) {\n notifyListeners(event.data);\n _this.dismiss();\n }\n else if (event.data === EVENT.TROUBLESHOOT) {\n notifyListeners(event.data);\n var refreshWindow = getRefreshWindow();\n refreshWindow.location.href = 'https://test-connect.ibmaspera.com';\n }\n else if (event.data === EVENT.CONTINUE) {\n Utils.addVersionException();\n notifyListeners(event.data);\n if ((Utils.BROWSER.SAFARI && !Utils.BROWSER.SAFARI_NO_NPAPI) || Utils.BROWSER.IE) {\n var refreshWindow = getRefreshWindow();\n // @ts-ignore\n refreshWindow.location.reload(true);\n }\n else {\n _this.showLaunching();\n }\n }\n else if (event.data === EVENT.RETRY) {\n notifyListeners(event.data);\n _this.showLaunching();\n }\n else if (event.data === '100%') {\n setCarbonBannerStyle(iframe, false);\n }\n else if (typeof event.data === 'string' && event.data.endsWith(EVENT.RESIZE)) {\n iframe.style.height = event.data;\n iframe.style.maxWidth = '600px';\n }\n else if (event.data === EVENT.EXTENSION_INSTALL) {\n notifyListeners(event.data);\n _this.startExtensionInstall();\n }\n };\n // IE will complain that in strict mode functions cannot be nested inside a statement, so we have to define it here\n var iframeLoaded = function () {\n var _a, _b, _c;\n iframeLoadedFlag = true;\n notifyListeners(EVENT.IFRAME_LOADED);\n var iframe = document.getElementById(connectOptions.iframeId);\n if (Utils.BROWSER.SAFARI || Utils.BROWSER.IE) {\n var downloadTimestamp = Utils.getLocalStorage('aspera-connect-app-download');\n if (!Utils.isNullOrUndefinedOrEmpty(downloadTimestamp)) {\n (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage('downloadTimestamp=' + downloadTimestamp, '*');\n }\n }\n // populate the iframe with the information pulled from connectversions.js\n var populateIframe = function (referencesJSON) {\n var _a, _b, _c;\n if (referencesJSON) {\n for (var i = 0; i < referencesJSON.links.length; i++) {\n var link = referencesJSON.links[i];\n if (link.rel === 'enclosure-one-click') {\n if (typeof iframe !== 'undefined' && iframe !== null) {\n (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage('downloadlink=' + link.hrefAbsolute, '*');\n (_b = iframe.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage('downloadVersion=' + referencesJSON.version, '*');\n }\n }\n }\n }\n else {\n Logger.error('Could not load Connect installation json!');\n }\n // Set dialog type\n (_c = iframe.contentWindow) === null || _c === void 0 ? void 0 : _c.postMessage(eventType, '*');\n };\n _this.installationJSON(populateIframe);\n // load an stylesheet if provided\n if (connectOptions.stylesheetLocation) {\n // Inserting a stylesheet into the DOM for more manageable styles.\n if (typeof iframe !== 'undefined' && iframe !== null) {\n (_b = iframe.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage('insertstylesheet=' + connectOptions.stylesheetLocation, '*');\n }\n }\n if (connectOptions.correlationId) {\n (_c = iframe.contentWindow) === null || _c === void 0 ? void 0 : _c.postMessage('correlationId=' + connectOptions.correlationId, '*');\n }\n };\n if (!iframe) {\n if (connectOptions.style === 'none') {\n Logger.debug('style=none specified, will not load banner.');\n return;\n }\n // Build and insert the iframe.\n iframe = document.createElement('iframe');\n iframe.id = connectOptions.iframeId;\n iframe.className = connectOptions.iframeId;\n iframe.frameBorder = '0';\n setCarbonBannerStyle(iframe, true);\n iframe.srcdoc = connectInstallerBanner;\n document.body.appendChild(iframe);\n // Check for tight security policies\n if (!((_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage)) {\n return;\n }\n // Set listener for messages from the iframe installer.\n if (window.attachEvent) {\n window.attachEvent('onmessage', handleMessage);\n }\n else {\n window.addEventListener('message', handleMessage, false);\n }\n }\n // if the iframe is hidden due to dismiss, reset the display style\n setHideClass(false);\n if (iframeLoadedFlag) {\n (_b = iframe.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage(eventType, '*');\n }\n else {\n // Give time to the iFrame to be loaded #31040\n // @ts-ignore\n if (iframe.attachEvent) {\n // @ts-ignore\n iframe.attachEvent('onload', iframeLoaded);\n }\n else {\n iframe.onload = iframeLoaded;\n }\n }\n };\n // Direct communication from Connect\n window.addEventListener('message', function (event) {\n if (event.data === 'show_extension_install') {\n _this.showExtensionInstall();\n }\n else if (event.data === 'show_safari_mitigate') {\n show('safari_mitigate');\n }\n }, false);\n /**\n * Displays a banner at the top of the screen explaining to the user that Connect\n * is trying to be launched.\n *\n * @function\n * @name AW4.ConnectInstaller#showLaunching\n * @param {Number} [timeout=3500] Timeout to show the banner in milliseconds. If at any point\n * during this timeout {@link AW4.ConnectInstaller#connected} or {@link AW4.ConnectInstaller#dismiss}\n * are called, the banner will not appear.\n * @return {null}\n */\n this.showLaunching = function (timeout) {\n if (timeout === void 0) { timeout = 3500; }\n if (showInstallTimerID !== 0) {\n clearTimeout(showInstallTimerID);\n }\n var showLaunchingHelperFunction = function () {\n show('launching');\n };\n showInstallTimerID = setTimeout(showLaunchingHelperFunction, timeout);\n };\n /**\n * Displays a banner at the top of the screen notifying the user to download Connect.\n *\n * @function\n * @name AW4.ConnectInstaller#showDownload\n * @return {null}\n */\n this.showDownload = function () {\n if (isSupportedBrowser) {\n show('download');\n }\n else {\n this.showUnsupportedBrowser();\n }\n };\n /**\n * Displays a banner at the top of the screen explaining to the user what to do once\n * Connect has been downloaded.\n *\n * @function\n * @name AW4.ConnectInstaller#showInstall\n * @return {null}\n */\n this.showInstall = function () {\n if (isSupportedBrowser) {\n show('install');\n Utils.setLocalStorage('aspera-install-attempted', 'true');\n }\n else {\n this.showUnsupportedBrowser();\n }\n };\n /**\n * Displays a banner at the top of the screen notifying the user to update Connect\n * to the latest version.\n *\n * @function\n * @name AW4.ConnectInstaller#showUpdate\n * @return {null}\n */\n this.showUpdate = function () {\n if (isSupportedBrowser) {\n show('update');\n }\n else {\n this.showUnsupportedBrowser();\n }\n };\n /**\n * Displays a banner with the option to retry launching Connect.\n *\n * @function\n * @name AW4.ConnectInstaller#showRetry\n * @return {null}\n */\n this.showRetry = function () {\n show('retry');\n };\n /**\n * Displays a page with instructions to install the browser extension.\n *\n * @function\n * @name AW4.ConnectInstaller#showExtensionInstall\n * @return {null}\n */\n this.showExtensionInstall = function () {\n show('extension_install');\n if (!Utils.BROWSER.IE) {\n // Create a DOM element to help the extension return to the right page\n var extHelper = document.createElement('div');\n extHelper.className = 'aspera-connect-ext-locator'; // TODO: Document\n extHelper.style.display = 'none';\n document.body.appendChild(extHelper);\n }\n };\n /**\n * Displays the last page that was shown.\n *\n * @function\n * @name AW4.ConnectInstaller#showPrevious\n * @return {null}\n */\n this.showPrevious = function () {\n show('previous');\n };\n /**\n * Displays a banner explaining that the browser is not supported by Connect.\n *\n * @function\n * @name AW4.ConnectInstaller#showUnsupportedBrowser\n * @return {null}\n */\n this.showUnsupportedBrowser = function () {\n show('unsupported_browser');\n };\n /**\n * Displays a temporary message that Connect has been found, and after `timeout` dismisses the\n * banner\n *\n * @function\n * @name AW4.ConnectInstaller#connected\n *\n * @param {Number} [timeout=2000] Timeout (in milliseconds) until the banner\n * is dismissed..\n * @return {null}\n */\n this.connected = function (timeout) {\n if (timeout === void 0) { timeout = 2000; }\n clearTimeout(showInstallTimerID);\n var iframe = document.getElementById(connectOptions.iframeId);\n if (typeof iframe !== 'undefined' && iframe !== null) {\n show('running');\n setTimeout(_this.dismiss, timeout);\n Utils.setLocalStorage('aspera-last-detected', String(Date.now().toString()));\n }\n return;\n };\n /**\n * Dismisses the banner.\n *\n * @function\n * @name AW4.ConnectInstaller#dismiss\n * @return {null}\n */\n this.dismiss = function () {\n if (showInstallTimerID !== 0) {\n clearTimeout(showInstallTimerID);\n }\n setHideClass(true);\n return;\n };\n};\nConnectInstaller.EVENT = EVENT;\nConnectInstaller.ACTIVITY_EVENT = ACTIVITY_EVENT;\nConnectInstaller.EVENT_TYPE = EVENT_TYPE;\nConnectInstaller.supportsInstallingExtensions = false;\nexport { ConnectInstaller };\n","export const connectInstallerBanner = '<!doctype html><html lang=\"en\"> <head> <title>IBM Aspera Connect</title> <meta charset=\"UTF-8\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /> <script type=\\'module\\'>(function(){const t=document.createElement(\"link\").relList;if(t&&t.supports&&t.supports(\"modulepreload\"))return;for(const i of document.querySelectorAll(\\'link[rel=\"modulepreload\"]\\'))r(i);new MutationObserver(i=>{for(const l of i)if(l.type===\"childList\")for(const o of l.addedNodes)o.tagName===\"LINK\"&&o.rel===\"modulepreload\"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const l={};return i.integrity&&(l.integrity=i.integrity),i.referrerPolicy&&(l.referrerPolicy=i.referrerPolicy),i.crossOrigin===\"use-credentials\"?l.credentials=\"include\":i.crossOrigin===\"anonymous\"?l.credentials=\"omit\":l.credentials=\"same-origin\",l}function r(i){if(i.ep)return;i.ep=!0;const l=n(i);fetch(i.href,l)}})();function Ka(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var Tu={exports:{}},Nn={},ku={exports:{}},R={};/*object-assign(c) Sindre Sorhus@license MIT*/var uo=Object.getOwnPropertySymbols,Xa=Object.prototype.hasOwnProperty,Ya=Object.prototype.propertyIsEnumerable;function Ga(e){if(e==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}function Za(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",Object.getOwnPropertyNames(e)[0]===\"5\")return!1;for(var t={},n=0;n<10;n++)t[\"_\"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(l){return t[l]});if(r.join(\"\")!==\"0123456789\")return!1;var i={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(l){i[l]=l}),Object.keys(Object.assign({},i)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}var _u=Za()?Object.assign:function(e,t){for(var n,r=Ga(e),i,l=1;l<arguments.length;l++){n=Object(arguments[l]);for(var o in n)Xa.call(n,o)&&(r[o]=n[o]);if(uo){i=uo(n);for(var u=0;u<i.length;u++)Ya.call(n,i[u])&&(r[i[u]]=n[i[u]])}}return r};/** @license React v16.14.0 * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var al=_u,Ee=typeof Symbol==\"function\"&&Symbol.for,Pn=Ee?Symbol.for(\"react.element\"):60103,Ja=Ee?Symbol.for(\"react.portal\"):60106,qa=Ee?Symbol.for(\"react.fragment\"):60107,ba=Ee?Symbol.for(\"react.strict_mode\"):60108,ec=Ee?Symbol.for(\"react.profiler\"):60114,tc=Ee?Symbol.for(\"react.provider\"):60109,nc=Ee?Symbol.for(\"react.context\"):60110,rc=Ee?Symbol.for(\"react.forward_ref\"):60112,ic=Ee?Symbol.for(\"react.suspense\"):60113,lc=Ee?Symbol.for(\"react.memo\"):60115,oc=Ee?Symbol.for(\"react.lazy\"):60116,so=typeof Symbol==\"function\"&&Symbol.iterator;function In(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=1;n<arguments.length;n++)t+=\"&args[]=\"+encodeURIComponent(arguments[n]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var Su={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Nu={};function Xt(e,t,n){this.props=e,this.context=t,this.refs=Nu,this.updater=n||Su}Xt.prototype.isReactComponent={};Xt.prototype.setState=function(e,t){if(typeof e!=\"object\"&&typeof e!=\"function\"&&e!=null)throw Error(In(85));this.updater.enqueueSetState(this,e,t,\"setState\")};Xt.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function Pu(){}Pu.prototype=Xt.prototype;function cl(e,t,n){this.props=e,this.context=t,this.refs=Nu,this.updater=n||Su}var fl=cl.prototype=new Pu;fl.constructor=cl;al(fl,Xt.prototype);fl.isPureReactComponent=!0;var dl={current:null},Iu=Object.prototype.hasOwnProperty,Lu={key:!0,ref:!0,__self:!0,__source:!0};function Ou(e,t,n){var r,i={},l=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(l=\"\"+t.key),t)Iu.call(t,r)&&!Lu.hasOwnProperty(r)&&(i[r]=t[r]);var u=arguments.length-2;if(u===1)i.children=n;else if(1<u){for(var c=Array(u),f=0;f<u;f++)c[f]=arguments[f+2];i.children=c}if(e&&e.defaultProps)for(r in u=e.defaultProps,u)i[r]===void 0&&(i[r]=u[r]);return{$$typeof:Pn,type:e,key:l,ref:o,props:i,_owner:dl.current}}function uc(e,t){return{$$typeof:Pn,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function pl(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===Pn}function sc(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+e).replace(/[=:]/g,function(n){return t[n]})}var Ru=/\\\\/+/g,cr=[];function ju(e,t,n,r){if(cr.length){var i=cr.pop();return i.result=e,i.keyPrefix=t,i.func=n,i.context=r,i.count=0,i}return{result:e,keyPrefix:t,func:n,context:r,count:0}}function Mu(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,e.count=0,10>cr.length&&cr.push(e)}function vi(e,t,n,r){var i=typeof e;(i===\"undefined\"||i===\"boolean\")&&(e=null);var l=!1;if(e===null)l=!0;else switch(i){case\"string\":case\"number\":l=!0;break;case\"object\":switch(e.$$typeof){case Pn:case Ja:l=!0}}if(l)return n(r,e,t===\"\"?\".\"+ei(e,0):t),1;if(l=0,t=t===\"\"?\".\":t+\":\",Array.isArray(e))for(var o=0;o<e.length;o++){i=e[o];var u=t+ei(i,o);l+=vi(i,u,n,r)}else if(e===null||typeof e!=\"object\"?u=null:(u=so&&e[so]||e[\"@@iterator\"],u=typeof u==\"function\"?u:null),typeof u==\"function\")for(e=u.call(e),o=0;!(i=e.next()).done;)i=i.value,u=t+ei(i,o++),l+=vi(i,u,n,r);else if(i===\"object\")throw n=\"\"+e,Error(In(31,n===\"[object Object]\"?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":n,\"\"));return l}function yi(e,t,n){return e==null?0:vi(e,\"\",t,n)}function ei(e,t){return typeof e==\"object\"&&e!==null&&e.key!=null?sc(e.key):t.toString(36)}function ac(e,t){e.func.call(e.context,t,e.count++)}function cc(e,t,n){var r=e.result,i=e.keyPrefix;e=e.func.call(e.context,t,e.count++),Array.isArray(e)?wi(e,r,n,function(l){return l}):e!=null&&(pl(e)&&(e=uc(e,i+(!e.key||t&&t.key===e.key?\"\":(\"\"+e.key).replace(Ru,\"$&/\")+\"/\")+n)),r.push(e))}function wi(e,t,n,r,i){var l=\"\";n!=null&&(l=(\"\"+n).replace(Ru,\"$&/\")+\"/\"),t=ju(t,l,r,i),yi(e,cc,t),Mu(t)}var Au={current:null};function Be(){var e=Au.current;if(e===null)throw Error(In(321));return e}var fc={ReactCurrentDispatcher:Au,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:dl,IsSomeRendererActing:{current:!1},assign:al};R.Children={map:function(e,t,n){if(e==null)return e;var r=[];return wi(e,r,null,t,n),r},forEach:function(e,t,n){if(e==null)return e;t=ju(null,null,t,n),yi(e,ac,t),Mu(t)},count:function(e){return yi(e,function(){return null},null)},toArray:function(e){var t=[];return wi(e,t,null,function(n){return n}),t},only:function(e){if(!pl(e))throw Error(In(143));return e}};R.Component=Xt;R.Fragment=qa;R.Profiler=ec;R.PureComponent=cl;R.StrictMode=ba;R.Suspense=ic;R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=fc;R.cloneElement=function(e,t,n){if(e==null)throw Error(In(267,e));var r=al({},e.props),i=e.key,l=e.ref,o=e._owner;if(t!=null){if(t.ref!==void 0&&(l=t.ref,o=dl.current),t.key!==void 0&&(i=\"\"+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)Iu.call(t,c)&&!Lu.hasOwnProperty(c)&&(r[c]=t[c]===void 0&&u!==void 0?u[c]:t[c])}var c=arguments.length-2;if(c===1)r.children=n;else if(1<c){u=Array(c);for(var f=0;f<c;f++)u[f]=arguments[f+2];r.children=u}return{$$typeof:Pn,type:e.type,key:i,ref:l,props:r,_owner:o}};R.createContext=function(e,t){return t===void 0&&(t=null),e={$$typeof:nc,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider={$$typeof:tc,_context:e},e.Consumer=e};R.createElement=Ou;R.createFactory=function(e){var t=Ou.bind(null,e);return t.type=e,t};R.createRef=function(){return{current:null}};R.forwardRef=function(e){return{$$typeof:rc,render:e}};R.isValidElement=pl;R.lazy=function(e){return{$$typeof:oc,_ctor:e,_status:-1,_result:null}};R.memo=function(e,t){return{$$typeof:lc,type:e,compare:t===void 0?null:t}};R.useCallback=function(e,t){return Be().useCallback(e,t)};R.useContext=function(e,t){return Be().useContext(e,t)};R.useDebugValue=function(){};R.useEffect=function(e,t){return Be().useEffect(e,t)};R.useImperativeHandle=function(e,t,n){return Be().useImperativeHandle(e,t,n)};R.useLayoutEffect=function(e,t){return Be().useLayoutEffect(e,t)};R.useMemo=function(e,t){return Be().useMemo(e,t)};R.useReducer=function(e,t,n){return Be().useReducer(e,t,n)};R.useRef=function(e){return Be().useRef(e)};R.useState=function(e){return Be().useState(e)};R.version=\"16.14.0\";ku.exports=R;var zr=ku.exports;/** @license React v16.14.0 * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var dc=zr,Fu=60103;Nn.Fragment=60107;if(typeof Symbol==\"function\"&&Symbol.for){var ao=Symbol.for;Fu=ao(\"react.element\"),Nn.Fragment=ao(\"react.fragment\")}var pc=dc.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,mc=Object.prototype.hasOwnProperty,hc={key:!0,ref:!0,__self:!0,__source:!0};function Du(e,t,n){var r,i={},l=null,o=null;n!==void 0&&(l=\"\"+n),t.key!==void 0&&(l=\"\"+t.key),t.ref!==void 0&&(o=t.ref);for(r in t)mc.call(t,r)&&!hc.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:Fu,type:e,key:l,ref:o,props:i,_owner:pc.current}}Nn.jsx=Du;Nn.jsxs=Du;Tu.exports=Nn;var y=Tu.exports,zu={exports:{}},ve={},Bu={exports:{}},Uu={};/** @license React v0.19.1 * scheduler.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */(function(e){var t,n,r,i,l;if(typeof window>\"u\"||typeof MessageChannel!=\"function\"){var o=null,u=null,c=function(){if(o!==null)try{var g=e.unstable_now();o(!0,g),o=null}catch(T){throw setTimeout(c,0),T}},f=Date.now();e.unstable_now=function(){return Date.now()-f},t=function(g){o!==null?setTimeout(t,0,g):(o=g,setTimeout(c,0))},n=function(g,T){u=setTimeout(g,T)},r=function(){clearTimeout(u)},i=function(){return!1},l=e.unstable_forceFrameRate=function(){}}else{var v=window.performance,w=window.Date,N=window.setTimeout,O=window.clearTimeout;if(typeof console<\"u\"){var te=window.cancelAnimationFrame;typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn\\'t support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),typeof te!=\"function\"&&console.error(\"This browser doesn\\'t support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(typeof v==\"object\"&&typeof v.now==\"function\")e.unstable_now=function(){return v.now()};else{var V=w.now();e.unstable_now=function(){return w.now()-V}}var a=!1,s=null,d=-1,p=5,h=0;i=function(){return e.unstable_now()>=h},l=function(){},e.unstable_forceFrameRate=function(g){0>g||125<g?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):p=0<g?Math.floor(1e3/g):5};var x=new MessageChannel,C=x.port2;x.port1.onmessage=function(){if(s!==null){var g=e.unstable_now();h=g+p;try{s(!0,g)?C.postMessage(null):(a=!1,s=null)}catch(T){throw C.postMessage(null),T}}else a=!1},t=function(g){s=g,a||(a=!0,C.postMessage(null))},n=function(g,T){d=N(function(){g(e.unstable_now())},T)},r=function(){O(d),d=-1}}function P(g,T){var L=g.length;g.push(T);e:for(;;){var B=L-1>>>1,$=g[B];if($!==void 0&&0<oe($,T))g[B]=T,g[L]=$,L=B;else break e}}function I(g){return g=g[0],g===void 0?null:g}function _(g){var T=g[0];if(T!==void 0){var L=g.pop();if(L!==T){g[0]=L;e:for(var B=0,$=g.length;B<$;){var ut=2*(B+1)-1,st=g[ut],Jt=ut+1,St=g[Jt];if(st!==void 0&&0>oe(st,L))St!==void 0&&0>oe(St,st)?(g[B]=St,g[Jt]=L,B=Jt):(g[B]=st,g[ut]=L,B=ut);else if(St!==void 0&&0>oe(St,L))g[B]=St,g[Jt]=L,B=Jt;else break e}}return T}return null}function oe(g,T){var L=g.sortIndex-T.sortIndex;return L!==0?L:g.id-T.id}var ue=[],Ue=[],Ha=1,q=null,Y=3,Dn=!1,ot=!1,Zt=!1;function zn(g){for(var T=I(Ue);T!==null;){if(T.callback===null)_(Ue);else if(T.startTime<=g)_(Ue),T.sortIndex=T.expirationTime,P(ue,T);else break;T=I(Ue)}}function qr(g){if(Zt=!1,zn(g),!ot)if(I(ue)!==null)ot=!0,t(br);else{var T=I(Ue);T!==null&&n(qr,T.startTime-g)}}function br(g,T){ot=!1,Zt&&(Zt=!1,r()),Dn=!0;var L=Y;try{for(zn(T),q=I(ue);q!==null&&(!(q.expirationTime>T)||g&&!i());){var B=q.callback;if(B!==null){q.callback=null,Y=q.priorityLevel;var $=B(q.expirationTime<=T);T=e.unstable_now(),typeof $==\"function\"?q.callback=$:q===I(ue)&&_(ue),zn(T)}else _(ue);q=I(ue)}if(q!==null)var ut=!0;else{var st=I(Ue);st!==null&&n(qr,st.startTime-T),ut=!1}return ut}finally{q=null,Y=L,Dn=!1}}function oo(g){switch(g){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var Qa=l;e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(g){g.callback=null},e.unstable_continueExecution=function(){ot||Dn||(ot=!0,t(br))},e.unstable_getCurrentPriorityLevel=function(){return Y},e.unstable_getFirstCallbackNode=function(){return I(ue)},e.unstable_next=function(g){switch(Y){case 1:case 2:case 3:var T=3;break;default:T=Y}var L=Y;Y=T;try{return g()}finally{Y=L}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=Qa,e.unstable_runWithPriority=function(g,T){switch(g){case 1:case 2:case 3:case 4:case 5:break;default:g=3}var L=Y;Y=g;try{return T()}finally{Y=L}},e.unstable_scheduleCallback=function(g,T,L){var B=e.unstable_now();if(typeof L==\"object\"&&L!==null){var $=L.delay;$=typeof $==\"number\"&&0<$?B+$:B,L=typeof L.timeout==\"number\"?L.timeout:oo(g)}else L=oo(g),$=B;return L=$+L,g={id:Ha++,callback:T,priorityLevel:g,startTime:$,expirationTime:L,sortIndex:-1},$>B?(g.sortIndex=$,P(Ue,g),I(ue)===null&&g===I(Ue)&&(Zt?r():Zt=!0,n(qr,$-B))):(g.sortIndex=L,P(ue,g),ot||Dn||(ot=!0,t(br))),g},e.unstable_shouldYield=function(){var g=e.unstable_now();zn(g);var T=I(ue);return T!==q&&q!==null&&T!==null&&T.callback!==null&&T.startTime<=g&&T.expirationTime<q.expirationTime||i()},e.unstable_wrapCallback=function(g){var T=Y;return function(){var L=Y;Y=T;try{return g.apply(this,arguments)}finally{Y=L}}}})(Uu);Bu.exports=Uu;var gc=Bu.exports;/** @license React v16.14.0 * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var Br=zr,b=_u,K=gc;function m(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=1;n<arguments.length;n++)t+=\"&args[]=\"+encodeURIComponent(arguments[n]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!Br)throw Error(m(227));function vc(e,t,n,r,i,l,o,u,c){var f=Array.prototype.slice.call(arguments,3);try{t.apply(n,f)}catch(v){this.onError(v)}}var an=!1,fr=null,dr=!1,xi=null,yc={onError:function(e){an=!0,fr=e}};function wc(e,t,n,r,i,l,o,u,c){an=!1,fr=null,vc.apply(yc,arguments)}function xc(e,t,n,r,i,l,o,u,c){if(wc.apply(this,arguments),an){if(an){var f=fr;an=!1,fr=null}else throw Error(m(198));dr||(dr=!0,xi=f)}}var ml=null,Vu=null,$u=null;function co(e,t,n){var r=e.type||\"unknown-event\";e.currentTarget=$u(n),xc(r,t,void 0,e),e.currentTarget=null}var pr=null,Nt={};function Wu(){if(pr)for(var e in Nt){var t=Nt[e],n=pr.indexOf(e);if(!(-1<n))throw Error(m(96,e));if(!mr[n]){if(!t.extractEvents)throw Error(m(97,e));mr[n]=t,n=t.eventTypes;for(var r in n){var i=void 0,l=n[r],o=t,u=r;if(Ei.hasOwnProperty(u))throw Error(m(99,u));Ei[u]=l;var c=l.phasedRegistrationNames;if(c){for(i in c)c.hasOwnProperty(i)&&fo(c[i],o,u);i=!0}else l.registrationName?(fo(l.registrationName,o,u),i=!0):i=!1;if(!i)throw Error(m(98,r,e))}}}}function fo(e,t,n){if(Vt[e])throw Error(m(100,e));Vt[e]=t,hl[e]=t.eventTypes[n].dependencies}var mr=[],Ei={},Vt={},hl={};function Hu(e){var t=!1,n;for(n in e)if(e.hasOwnProperty(n)){var r=e[n];if(!Nt.hasOwnProperty(n)||Nt[n]!==r){if(Nt[n])throw Error(m(102,n));Nt[n]=r,t=!0}}t&&Wu()}var it=!(typeof window>\"u\"||typeof window.document>\"u\"||typeof window.document.createElement>\"u\"),Ci=null,At=null,Ft=null;function po(e){if(e=Vu(e)){if(typeof Ci!=\"function\")throw Error(m(280));var t=e.stateNode;t&&(t=ml(t),Ci(e.stateNode,e.type,t))}}function Qu(e){At?Ft?Ft.push(e):Ft=[e]:At=e}function Ku(){if(At){var e=At,t=Ft;if(Ft=At=null,po(e),t)for(e=0;e<t.length;e++)po(t[e])}}function gl(e,t){return e(t)}function Xu(e,t,n,r,i){return e(t,n,r,i)}function vl(){}var Yu=gl,ft=!1,ti=!1;function yl(){(At!==null||Ft!==null)&&(vl(),Ku())}function Gu(e,t,n){if(ti)return e(t,n);ti=!0;try{return Yu(e,t,n)}finally{ti=!1,yl()}}var Ec=/^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$/,mo=Object.prototype.hasOwnProperty,ho={},go={};function Cc(e){return mo.call(go,e)?!0:mo.call(ho,e)?!1:Ec.test(e)?go[e]=!0:(ho[e]=!0,!1)}function Tc(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!==\"data-\"&&e!==\"aria-\");default:return!1}}function kc(e,t,n,r){if(t===null||typeof t>\"u\"||Tc(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ee(e,t,n,r,i,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l}var X={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(e){X[e]=new ee(e,0,!1,e,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(e){var t=e[0];X[t]=new ee(t,1,!1,e[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(e){X[e]=new ee(e,2,!1,e.toLowerCase(),null,!1)});[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(e){X[e]=new ee(e,2,!1,e,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(e){X[e]=new ee(e,3,!1,e.toLowerCase(),null,!1)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(e){X[e]=new ee(e,3,!0,e,null,!1)});[\"capture\",\"download\"].forEach(function(e){X[e]=new ee(e,4,!1,e,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(e){X[e]=new ee(e,6,!1,e,null,!1)});[\"rowSpan\",\"start\"].forEach(function(e){X[e]=new ee(e,5,!1,e.toLowerCase(),null,!1)});var wl=/[\\\\-:]([a-z])/g;function xl(e){return e[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(e){var t=e.replace(wl,xl);X[t]=new ee(t,1,!1,e,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(e){var t=e.replace(wl,xl);X[t]=new ee(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(e){var t=e.replace(wl,xl);X[t]=new ee(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(e){X[e]=new ee(e,1,!1,e.toLowerCase(),null,!1)});X.xlinkHref=new ee(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(e){X[e]=new ee(e,1,!1,e.toLowerCase(),null,!0)});var we=Br.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;we.hasOwnProperty(\"ReactCurrentDispatcher\")||(we.ReactCurrentDispatcher={current:null});we.hasOwnProperty(\"ReactCurrentBatchConfig\")||(we.ReactCurrentBatchConfig={suspense:null});function El(e,t,n,r){var i=X.hasOwnProperty(t)?X[t]:null,l=i!==null?i.type===0:r?!1:!(!(2<t.length)||t[0]!==\"o\"&&t[0]!==\"O\"||t[1]!==\"n\"&&t[1]!==\"N\");l||(kc(t,n,i,r)&&(n=null),r||i===null?Cc(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,\"\"+n)):i.mustUseProperty?e[i.propertyName]=n===null?i.type===3?!1:\"\":n:(t=i.attributeName,r=i.attributeNamespace,n===null?e.removeAttribute(t):(i=i.type,n=i===3||i===4&&n===!0?\"\":\"\"+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}var _c=/^(.*)[\\\\\\\\\\\\/]/,le=typeof Symbol==\"function\"&&Symbol.for,Bn=le?Symbol.for(\"react.element\"):60103,Pt=le?Symbol.for(\"react.portal\"):60106,ct=le?Symbol.for(\"react.fragment\"):60107,Zu=le?Symbol.for(\"react.strict_mode\"):60108,Zn=le?Symbol.for(\"react.profiler\"):60114,Ju=le?Symbol.for(\"react.provider\"):60109,qu=le?Symbol.for(\"react.context\"):60110,Sc=le?Symbol.for(\"react.concurrent_mode\"):60111,Cl=le?Symbol.for(\"react.forward_ref\"):60112,Jn=le?Symbol.for(\"react.suspense\"):60113,Ti=le?Symbol.for(\"react.suspense_list\"):60120,Tl=le?Symbol.for(\"react.memo\"):60115,bu=le?Symbol.for(\"react.lazy\"):60116,es=le?Symbol.for(\"react.block\"):60121,vo=typeof Symbol==\"function\"&&Symbol.iterator;function qt(e){return e===null||typeof e!=\"object\"?null:(e=vo&&e[vo]||e[\"@@iterator\"],typeof e==\"function\"?e:null)}function Nc(e){if(e._status===-1){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then(function(n){e._status===0&&(n=n.default,e._status=1,e._result=n)},function(n){e._status===0&&(e._status=2,e._result=n)})}}function ze(e){if(e==null)return null;if(typeof e==\"function\")return e.displayName||e.name||null;if(typeof e==\"string\")return e;switch(e){case ct:return\"Fragment\";case Pt:return\"Portal\";case Zn:return\"Profiler\";case Zu:return\"StrictMode\";case Jn:return\"Suspense\";case Ti:return\"SuspenseList\"}if(typeof e==\"object\")switch(e.$$typeof){case qu:return\"Context.Consumer\";case Ju:return\"Context.Provider\";case Cl:var t=e.render;return t=t.displayName||t.name||\"\",e.displayName||(t!==\"\"?\"ForwardRef(\"+t+\")\":\"ForwardRef\");case Tl:return ze(e.type);case es:return ze(e.render);case bu:if(e=e._status===1?e._result:null)return ze(e)}return null}function kl(e){var t=\"\";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n=\"\";break e;default:var r=e._debugOwner,i=e._debugSource,l=ze(e.type);n=null,r&&(n=ze(r.type)),r=l,l=\"\",i?l=\" (at \"+i.fileName.replace(_c,\"\")+\":\"+i.lineNumber+\")\":n&&(l=\" (created by \"+n+\")\"),n=` in `+(r||\"Unknown\")+l}t+=n,e=e.return}while(e);return t}function tt(e){switch(typeof e){case\"boolean\":case\"number\":case\"object\":case\"string\":case\"undefined\":return e;default:return\"\"}}function ts(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===\"input\"&&(t===\"checkbox\"||t===\"radio\")}function Pc(e){var t=ts(e)?\"checked\":\"value\",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=\"\"+e[t];if(!e.hasOwnProperty(t)&&typeof n<\"u\"&&typeof n.get==\"function\"&&typeof n.set==\"function\"){var i=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=\"\"+o,l.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=\"\"+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Un(e){e._valueTracker||(e._valueTracker=Pc(e))}function ns(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=\"\";return e&&(r=ts(e)?e.checked?\"true\":\"false\":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ki(e,t){var n=t.checked;return b({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function yo(e,t){var n=t.defaultValue==null?\"\":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=tt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type===\"checkbox\"||t.type===\"radio\"?t.checked!=null:t.value!=null}}function rs(e,t){t=t.checked,t!=null&&El(e,\"checked\",t,!1)}function _i(e,t){rs(e,t);var n=tt(t.value),r=t.type;if(n!=null)r===\"number\"?(n===0&&e.value===\"\"||e.value!=n)&&(e.value=\"\"+n):e.value!==\"\"+n&&(e.value=\"\"+n);else if(r===\"submit\"||r===\"reset\"){e.removeAttribute(\"value\");return}t.hasOwnProperty(\"value\")?Si(e,t.type,n):t.hasOwnProperty(\"defaultValue\")&&Si(e,t.type,tt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function wo(e,t,n){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var r=t.type;if(!(r!==\"submit\"&&r!==\"reset\"||t.value!==void 0&&t.value!==null))return;t=\"\"+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==\"\"&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,n!==\"\"&&(e.name=n)}function Si(e,t,n){(t!==\"number\"||e.ownerDocument.activeElement!==e)&&(n==null?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+n&&(e.defaultValue=\"\"+n))}function Ic(e){var t=\"\";return Br.Children.forEach(e,function(n){n!=null&&(t+=n)}),t}function Ni(e,t){return e=b({children:void 0},t),(t=Ic(t.children))&&(e.children=t),e}function Dt(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[\"$\"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(\"$\"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=\"\"+tt(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function Pi(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(m(91));return b({},t,{value:void 0,defaultValue:void 0,children:\"\"+e._wrapperState.initialValue})}function xo(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(m(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(m(93));n=n[0]}t=n}t==null&&(t=\"\"),n=t}e._wrapperState={initialValue:tt(n)}}function is(e,t){var n=tt(t.value),r=tt(t.defaultValue);n!=null&&(n=\"\"+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),r!=null&&(e.defaultValue=\"\"+r)}function Eo(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==\"\"&&t!==null&&(e.value=t)}var ls={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};function os(e){switch(e){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ii(e,t){return e==null||e===\"http://www.w3.org/1999/xhtml\"?os(t):e===\"http://www.w3.org/2000/svg\"&&t===\"foreignObject\"?\"http://www.w3.org/1999/xhtml\":e}var Vn,us=function(e){return typeof MSApp<\"u\"&&MSApp.execUnsafeLocalFunction?function(t,n,r,i){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,i)})}:e}(function(e,t){if(e.namespaceURI!==ls.svg||\"innerHTML\"in e)e.innerHTML=t;else{for(Vn=Vn||document.createElement(\"div\"),Vn.innerHTML=\"<svg>\"+t.valueOf().toString()+\"</svg>\",t=Vn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function vn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}function $n(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var It={animationend:$n(\"Animation\",\"AnimationEnd\"),animationiteration:$n(\"Animation\",\"AnimationIteration\"),animationstart:$n(\"Animation\",\"AnimationStart\"),transitionend:$n(\"Transition\",\"TransitionEnd\")},ni={},ss={};it&&(ss=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete It.animationend.animation,delete It.animationiteration.animation,delete It.animationstart.animation),\"TransitionEvent\"in window||delete It.transitionend.transition);function Ur(e){if(ni[e])return ni[e];if(!It[e])return e;var t=It[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in ss)return ni[e]=t[n];return e}var as=Ur(\"animationend\"),cs=Ur(\"animationiteration\"),fs=Ur(\"animationstart\"),ds=Ur(\"transitionend\"),on=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Co=new(typeof WeakMap==\"function\"?WeakMap:Map);function _l(e){var t=Co.get(e);return t===void 0&&(t=new Map,Co.set(e,t)),t}function _t(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.effectTag&1026&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function ps(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function To(e){if(_t(e)!==e)throw Error(m(188))}function Lc(e){var t=e.alternate;if(!t){if(t=_t(e),t===null)throw Error(m(188));return t!==e?null:e}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var l=i.alternate;if(l===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===l.child){for(l=i.child;l;){if(l===n)return To(i),e;if(l===r)return To(i),t;l=l.sibling}throw Error(m(188))}if(n.return!==r.return)n=i,r=l;else{for(var o=!1,u=i.child;u;){if(u===n){o=!0,n=i,r=l;break}if(u===r){o=!0,r=i,n=l;break}u=u.sibling}if(!o){for(u=l.child;u;){if(u===n){o=!0,n=l,r=i;break}if(u===r){o=!0,r=l,n=i;break}u=u.sibling}if(!o)throw Error(m(189))}}if(n.alternate!==r)throw Error(m(190))}if(n.tag!==3)throw Error(m(188));return n.stateNode.current===n?e:t}function ms(e){if(e=Lc(e),!e)return null;for(var t=e;;){if(t.tag===5||t.tag===6)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function $t(e,t){if(t==null)throw Error(m(30));return e==null?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}function Sl(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}var bt=null;function Oc(e){if(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t))for(var r=0;r<t.length&&!e.isPropagationStopped();r++)co(e,t[r],n[r]);else t&&co(e,t,n);e._dispatchListeners=null,e._dispatchInstances=null,e.isPersistent()||e.constructor.release(e)}}function Vr(e){if(e!==null&&(bt=$t(bt,e)),e=bt,bt=null,e){if(Sl(e,Oc),bt)throw Error(m(95));if(dr)throw e=xi,dr=!1,xi=null,e}}function Nl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}function hs(e){if(!it)return!1;e=\"on\"+e;var t=e in document;return t||(t=document.createElement(\"div\"),t.setAttribute(e,\"return;\"),t=typeof t[e]==\"function\"),t}var hr=[];function gs(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,e.ancestors.length=0,10>hr.length&&hr.push(e)}function vs(e,t,n,r){if(hr.length){var i=hr.pop();return i.topLevelType=e,i.eventSystemFlags=r,i.nativeEvent=t,i.targetInst=n,i}return{topLevelType:e,eventSystemFlags:r,nativeEvent:t,targetInst:n,ancestors:[]}}function ys(e){var t=e.targetInst,n=t;do{if(!n){e.ancestors.push(n);break}var r=n;if(r.tag===3)r=r.stateNode.containerInfo;else{for(;r.return;)r=r.return;r=r.tag!==3?null:r.stateNode.containerInfo}if(!r)break;t=n.tag,t!==5&&t!==6||e.ancestors.push(n),n=On(r)}while(n);for(n=0;n<e.ancestors.length;n++){t=e.ancestors[n];var i=Nl(e.nativeEvent);r=e.topLevelType;var l=e.nativeEvent,o=e.eventSystemFlags;n===0&&(o|=64);for(var u=null,c=0;c<mr.length;c++){var f=mr[c];f&&(f=f.extractEvents(r,t,l,i,o))&&(u=$t(u,f))}Vr(u)}}function Li(e,t,n){if(!n.has(e)){switch(e){case\"scroll\":un(t,\"scroll\",!0);break;case\"focus\":case\"blur\":un(t,\"focus\",!0),un(t,\"blur\",!0),n.set(\"blur\",null),n.set(\"focus\",null);break;case\"cancel\":case\"close\":hs(e)&&un(t,e,!0);break;case\"invalid\":case\"submit\":case\"reset\":break;default:on.indexOf(e)===-1&&D(e,t)}n.set(e,null)}}var ws,Pl,xs,Oi=!1,Ce=[],Ye=null,Ge=null,Ze=null,yn=new Map,wn=new Map,en=[],Ri=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Rc=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");function jc(e,t){var n=_l(t);Ri.forEach(function(r){Li(r,t,n)}),Rc.forEach(function(r){Li(r,t,n)})}function ji(e,t,n,r,i){return{blockedOn:e,topLevelType:t,eventSystemFlags:n|32,nativeEvent:i,container:r}}function ko(e,t){switch(e){case\"focus\":case\"blur\":Ye=null;break;case\"dragenter\":case\"dragleave\":Ge=null;break;case\"mouseover\":case\"mouseout\":Ze=null;break;case\"pointerover\":case\"pointerout\":yn.delete(t.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":wn.delete(t.pointerId)}}function tn(e,t,n,r,i,l){return e===null||e.nativeEvent!==l?(e=ji(t,n,r,i,l),t!==null&&(t=Rn(t),t!==null&&Pl(t)),e):(e.eventSystemFlags|=r,e)}function Mc(e,t,n,r,i){switch(t){case\"focus\":return Ye=tn(Ye,e,t,n,r,i),!0;case\"dragenter\":return Ge=tn(Ge,e,t,n,r,i),!0;case\"mouseover\":return Ze=tn(Ze,e,t,n,r,i),!0;case\"pointerover\":var l=i.pointerId;return yn.set(l,tn(yn.get(l)||null,e,t,n,r,i)),!0;case\"gotpointercapture\":return l=i.pointerId,wn.set(l,tn(wn.get(l)||null,e,t,n,r,i)),!0}return!1}function Ac(e){var t=On(e.target);if(t!==null){var n=_t(t);if(n!==null){if(t=n.tag,t===13){if(t=ps(n),t!==null){e.blockedOn=t,K.unstable_runWithPriority(e.priority,function(){xs(n)});return}}else if(t===3&&n.stateNode.hydrate){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function qn(e){if(e.blockedOn!==null)return!1;var t=Ol(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);if(t!==null){var n=Rn(t);return n!==null&&Pl(n),e.blockedOn=t,!1}return!0}function _o(e,t,n){qn(e)&&n.delete(t)}function Fc(){for(Oi=!1;0<Ce.length;){var e=Ce[0];if(e.blockedOn!==null){e=Rn(e.blockedOn),e!==null&&ws(e);break}var t=Ol(e.topLevelType,e.eventSystemFlags,e.container,e.nativeEvent);t!==null?e.blockedOn=t:Ce.shift()}Ye!==null&&qn(Ye)&&(Ye=null),Ge!==null&&qn(Ge)&&(Ge=null),Ze!==null&&qn(Ze)&&(Ze=null),yn.forEach(_o),wn.forEach(_o)}function nn(e,t){e.blockedOn===t&&(e.blockedOn=null,Oi||(Oi=!0,K.unstable_scheduleCallback(K.unstable_NormalPriority,Fc)))}function Es(e){function t(i){return nn(i,e)}if(0<Ce.length){nn(Ce[0],e);for(var n=1;n<Ce.length;n++){var r=Ce[n];r.blockedOn===e&&(r.blockedOn=null)}}for(Ye!==null&&nn(Ye,e),Ge!==null&&nn(Ge,e),Ze!==null&&nn(Ze,e),yn.forEach(t),wn.forEach(t),n=0;n<en.length;n++)r=en[n],r.blockedOn===e&&(r.blockedOn=null);for(;0<en.length&&(n=en[0],n.blockedOn===null);)Ac(n),n.blockedOn===null&&en.shift()}var Cs={},Ts=new Map,Il=new Map,Dc=[\"abort\",\"abort\",as,\"animationEnd\",cs,\"animationIteration\",fs,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",ds,\"transitionEnd\",\"waiting\",\"waiting\"];function Ll(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],i=e[n+1],l=\"on\"+(i[0].toUpperCase()+i.slice(1));l={phasedRegistrationNames:{bubbled:l,captured:l+\"Capture\"},dependencies:[r],eventPriority:t},Il.set(r,t),Ts.set(r,l),Cs[i]=l}}Ll(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);Ll(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Ll(Dc,2);for(var So=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),ri=0;ri<So.length;ri++)Il.set(So[ri],0);var zc=K.unstable_UserBlockingPriority,Bc=K.unstable_runWithPriority,bn=!0;function D(e,t){un(t,e,!1)}function un(e,t,n){var r=Il.get(t);switch(r===void 0?2:r){case 0:r=Uc.bind(null,t,1,e);break;case 1:r=Vc.bind(null,t,1,e);break;default:r=$r.bind(null,t,1,e)}n?e.addEventListener(t,r,!0):e.addEventListener(t,r,!1)}function Uc(e,t,n,r){ft||vl();var i=$r,l=ft;ft=!0;try{Xu(i,e,t,n,r)}finally{(ft=l)||yl()}}function Vc(e,t,n,r){Bc(zc,$r.bind(null,e,t,n,r))}function $r(e,t,n,r){if(bn)if(0<Ce.length&&-1<Ri.indexOf(e))e=ji(null,e,t,n,r),Ce.push(e);else{var i=Ol(e,t,n,r);if(i===null)ko(e,r);else if(-1<Ri.indexOf(e))e=ji(i,e,t,n,r),Ce.push(e);else if(!Mc(i,e,t,n,r)){ko(e,r),e=vs(e,r,null,t);try{Gu(ys,e)}finally{gs(e)}}}}function Ol(e,t,n,r){if(n=Nl(r),n=On(n),n!==null){var i=_t(n);if(i===null)n=null;else{var l=i.tag;if(l===13){if(n=ps(i),n!==null)return n;n=null}else if(l===3){if(i.stateNode.hydrate)return i.tag===3?i.stateNode.containerInfo:null;n=null}else i!==n&&(n=null)}}e=vs(e,r,n,t);try{Gu(ys,e)}finally{gs(e)}return null}var cn={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},$c=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(cn).forEach(function(e){$c.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),cn[t]=cn[e]})});function ks(e,t,n){return t==null||typeof t==\"boolean\"||t===\"\"?\"\":n||typeof t!=\"number\"||t===0||cn.hasOwnProperty(e)&&cn[e]?(\"\"+t).trim():t+\"px\"}function _s(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf(\"--\")===0,i=ks(n,t[n],r);n===\"float\"&&(n=\"cssFloat\"),r?e.setProperty(n,i):e[n]=i}}var Wc=b({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Mi(e,t){if(t){if(Wc[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(m(137,e,\"\"));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(m(60));if(!(typeof t.dangerouslySetInnerHTML==\"object\"&&\"__html\"in t.dangerouslySetInnerHTML))throw Error(m(61))}if(t.style!=null&&typeof t.style!=\"object\")throw Error(m(62,\"\"))}}function Ai(e,t){if(e.indexOf(\"-\")===-1)return typeof t.is==\"string\";switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var No=ls.html;function Oe(e,t){e=e.nodeType===9||e.nodeType===11?e:e.ownerDocument;var n=_l(e);t=hl[t];for(var r=0;r<t.length;r++)Li(t[r],e,n)}function gr(){}function Fi(e){if(e=e||(typeof document<\"u\"?document:void 0),typeof e>\"u\")return null;try{return e.activeElement||e.body}catch{return e.body}}function Po(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Io(e,t){var n=Po(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Po(n)}}function Ss(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ss(e,t.parentNode):\"contains\"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Lo(){for(var e=window,t=Fi();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==\"string\"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Fi(e.document)}return t}function Di(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===\"input\"&&(e.type===\"text\"||e.type===\"search\"||e.type===\"tel\"||e.type===\"url\"||e.type===\"password\")||t===\"textarea\"||e.contentEditable===\"true\")}var Ns=\"$\",Ps=\"/$\",Rl=\"$?\",jl=\"$!\",ii=null,li=null;function Is(e,t){switch(e){case\"button\":case\"input\":case\"select\":case\"textarea\":return!!t.autoFocus}return!1}function zi(e,t){return e===\"textarea\"||e===\"option\"||e===\"noscript\"||typeof t.children==\"string\"||typeof t.children==\"number\"||typeof t.dangerouslySetInnerHTML==\"object\"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var oi=typeof setTimeout==\"function\"?setTimeout:void 0,Hc=typeof clearTimeout==\"function\"?clearTimeout:void 0;function zt(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break}return e}function Oo(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===Ns||n===jl||n===Rl){if(t===0)return e;t--}else n===Ps&&t++}e=e.previousSibling}return null}var Ml=Math.random().toString(36).slice(2),We=\"__reactInternalInstance$\"+Ml,vr=\"__reactEventHandlers$\"+Ml,Ln=\"__reactContainere$\"+Ml;function On(e){var t=e[We];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Ln]||n[We]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Oo(e);e!==null;){if(n=e[We])return n;e=Oo(e)}return t}e=n,n=e.parentNode}return null}function Rn(e){return e=e[We]||e[Ln],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Et(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(m(33))}function Al(e){return e[vr]||null}function Re(e){do e=e.return;while(e&&e.tag!==5);return e||null}function Ls(e,t){var n=e.stateNode;if(!n)return null;var r=ml(n);if(!r)return null;n=r[t];e:switch(t){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(r=!r.disabled)||(e=e.type,r=!(e===\"button\"||e===\"input\"||e===\"select\"||e===\"textarea\")),e=!r;break e;default:e=!1}if(e)return null;if(n&&typeof n!=\"function\")throw Error(m(231,t,typeof n));return n}function Ro(e,t,n){(t=Ls(e,n.dispatchConfig.phasedRegistrationNames[t]))&&(n._dispatchListeners=$t(n._dispatchListeners,t),n._dispatchInstances=$t(n._dispatchInstances,e))}function Qc(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var t=e._targetInst,n=[];t;)n.push(t),t=Re(t);for(t=n.length;0<t--;)Ro(n[t],\"captured\",e);for(t=0;t<n.length;t++)Ro(n[t],\"bubbled\",e)}}function Bi(e,t,n){e&&n&&n.dispatchConfig.registrationName&&(t=Ls(e,n.dispatchConfig.registrationName))&&(n._dispatchListeners=$t(n._dispatchListeners,t),n._dispatchInstances=$t(n._dispatchInstances,e))}function Kc(e){e&&e.dispatchConfig.registrationName&&Bi(e._targetInst,null,e)}function Wt(e){Sl(e,Qc)}var He=null,Fl=null,er=null;function Os(){if(er)return er;var e,t=Fl,n=t.length,r,i=\"value\"in He?He.value:He.textContent,l=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[l-r];r++);return er=i.slice(e,1<r?1-r:void 0)}function tr(){return!0}function yr(){return!1}function de(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n,e=this.constructor.Interface;for(var i in e)e.hasOwnProperty(i)&&((t=e[i])?this[i]=t(n):i===\"target\"?this.target=r:this[i]=n[i]);return this.isDefaultPrevented=(n.defaultPrevented!=null?n.defaultPrevented:n.returnValue===!1)?tr:yr,this.isPropagationStopped=yr,this}b(de.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=\"unknown\"&&(e.returnValue=!1),this.isDefaultPrevented=tr)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=\"unknown\"&&(e.cancelBubble=!0),this.isPropagationStopped=tr)},persist:function(){this.isPersistent=tr},isPersistent:yr,destructor:function(){var e=this.constructor.Interface,t;for(t in e)this[t]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=yr,this._dispatchInstances=this._dispatchListeners=null}});de.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};de.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return b(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=b({},r.Interface,e),n.extend=r.extend,Rs(n),n};Rs(de);function Xc(e,t,n,r){if(this.eventPool.length){var i=this.eventPool.pop();return this.call(i,e,t,n,r),i}return new this(e,t,n,r)}function Yc(e){if(!(e instanceof this))throw Error(m(279));e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function Rs(e){e.eventPool=[],e.getPooled=Xc,e.release=Yc}var Gc=de.extend({data:null}),Zc=de.extend({data:null}),Jc=[9,13,27,32],Dl=it&&\"CompositionEvent\"in window,fn=null;it&&\"documentMode\"in document&&(fn=document.documentMode);var qc=it&&\"TextEvent\"in window&&!fn,js=it&&(!Dl||fn&&8<fn&&11>=fn),jo=\" \",Le={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",captured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},Mo=!1;function Ms(e,t){switch(e){case\"keyup\":return Jc.indexOf(t.keyCode)!==-1;case\"keydown\":return t.keyCode!==229;case\"keypress\":case\"mousedown\":case\"blur\":return!0;default:return!1}}function As(e){return e=e.detail,typeof e==\"object\"&&\"data\"in e?e.data:null}var Lt=!1;function bc(e,t){switch(e){case\"compositionend\":return As(t);case\"keypress\":return t.which!==32?null:(Mo=!0,jo);case\"textInput\":return e=t.data,e===jo&&Mo?null:e;default:return null}}function ef(e,t){if(Lt)return e===\"compositionend\"||!Dl&&Ms(e,t)?(e=Os(),er=Fl=He=null,Lt=!1,e):null;switch(e){case\"paste\":return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case\"compositionend\":return js&&t.locale!==\"ko\"?null:t.data;default:return null}}var tf={eventTypes:Le,extractEvents:function(e,t,n,r){var i;if(Dl)e:{switch(e){case\"compositionstart\":var l=Le.compositionStart;break e;case\"compositionend\":l=Le.compositionEnd;break e;case\"compositionupdate\":l=Le.compositionUpdate;break e}l=void 0}else Lt?Ms(e,n)&&(l=Le.compositionEnd):e===\"keydown\"&&n.keyCode===229&&(l=Le.compositionStart);return l?(js&&n.locale!==\"ko\"&&(Lt||l!==Le.compositionStart?l===Le.compositionEnd&&Lt&&(i=Os()):(He=r,Fl=\"value\"in He?He.value:He.textContent,Lt=!0)),l=Gc.getPooled(l,t,n,r),i?l.data=i:(i=As(n),i!==null&&(l.data=i)),Wt(l),i=l):i=null,(e=qc?bc(e,n):ef(e,n))?(t=Zc.getPooled(Le.beforeInput,t,n,r),t.data=e,Wt(t)):t=null,i===null?t:t===null?i:[i,t]}},nf={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Fs(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===\"input\"?!!nf[e.type]:t===\"textarea\"}var Ds={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function zs(e,t,n){return e=de.getPooled(Ds.change,e,t,n),e.type=\"change\",Qu(n),Wt(e),e}var dn=null,xn=null;function rf(e){Vr(e)}function Wr(e){var t=Et(e);if(ns(t))return e}function lf(e,t){if(e===\"change\")return t}var Ui=!1;it&&(Ui=hs(\"input\")&&(!document.documentMode||9<document.documentMode));function Ao(){dn&&(dn.detachEvent(\"onpropertychange\",Bs),xn=dn=null)}function Bs(e){if(e.propertyName===\"value\"&&Wr(xn))if(e=zs(xn,e,Nl(e)),ft)Vr(e);else{ft=!0;try{gl(rf,e)}finally{ft=!1,yl()}}}function of(e,t,n){e===\"focus\"?(Ao(),dn=t,xn=n,dn.attachEvent(\"onpropertychange\",Bs)):e===\"blur\"&&Ao()}function uf(e){if(e===\"selectionchange\"||e===\"keyup\"||e===\"keydown\")return Wr(xn)}function sf(e,t){if(e===\"click\")return Wr(t)}function af(e,t){if(e===\"input\"||e===\"change\")return Wr(t)}var cf={eventTypes:Ds,_isInputEventSupported:Ui,extractEvents:function(e,t,n,r){var i=t?Et(t):window,l=i.nodeName&&i.nodeName.toLowerCase();if(l===\"select\"||l===\"input\"&&i.type===\"file\")var o=lf;else if(Fs(i))if(Ui)o=af;else{o=uf;var u=of}else(l=i.nodeName)&&l.toLowerCase()===\"input\"&&(i.type===\"checkbox\"||i.type===\"radio\")&&(o=sf);if(o&&(o=o(e,t)))return zs(o,n,r);u&&u(e,i,t),e===\"blur\"&&(e=i._wrapperState)&&e.controlled&&i.type===\"number\"&&Si(i,\"number\",i.value)}},jn=de.extend({view:null,detail:null}),ff={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function df(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=ff[e])?!!t[e]:!1}function zl(){return df}var Fo=0,Do=0,zo=!1,Bo=!1,Mn=jn.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:zl,button:null,buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},movementX:function(e){if(\"movementX\"in e)return e.movementX;var t=Fo;return Fo=e.screenX,zo?e.type===\"mousemove\"?e.screenX-t:0:(zo=!0,0)},movementY:function(e){if(\"movementY\"in e)return e.movementY;var t=Do;return Do=e.screenY,Bo?e.type===\"mousemove\"?e.screenY-t:0:(Bo=!0,0)}}),Us=Mn.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),rn={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",dependencies:[\"pointerout\",\"pointerover\"]}},pf={eventTypes:rn,extractEvents:function(e,t,n,r,i){var l=e===\"mouseover\"||e===\"pointerover\",o=e===\"mouseout\"||e===\"pointerout\";if(l&&!(i&32)&&(n.relatedTarget||n.fromElement)||!o&&!l)return null;if(l=r.window===r?r:(l=r.ownerDocument)?l.defaultView||l.parentWindow:window,o){if(o=t,t=(t=n.relatedTarget||n.toElement)?On(t):null,t!==null){var u=_t(t);(t!==u||t.tag!==5&&t.tag!==6)&&(t=null)}}else o=null;if(o===t)return null;if(e===\"mouseout\"||e===\"mouseover\")var c=Mn,f=rn.mouseLeave,v=rn.mouseEnter,w=\"mouse\";else(e===\"pointerout\"||e===\"pointerover\")&&(c=Us,f=rn.pointerLeave,v=rn.pointerEnter,w=\"pointer\");if(e=o==null?l:Et(o),l=t==null?l:Et(t),f=c.getPooled(f,o,n,r),f.type=w+\"leave\",f.target=e,f.relatedTarget=l,n=c.getPooled(v,t,n,r),n.type=w+\"enter\",n.target=l,n.relatedTarget=e,r=o,w=t,r&&w)e:{for(c=r,v=w,o=0,e=c;e;e=Re(e))o++;for(e=0,t=v;t;t=Re(t))e++;for(;0<o-e;)c=Re(c),o--;for(;0<e-o;)v=Re(v),e--;for(;o--;){if(c===v||c===v.alternate)break e;c=Re(c),v=Re(v)}c=null}else c=null;for(v=c,c=[];r&&r!==v&&(o=r.alternate,!(o!==null&&o===v));)c.push(r),r=Re(r);for(r=[];w&&w!==v&&(o=w.alternate,!(o!==null&&o===v));)r.push(w),w=Re(w);for(w=0;w<c.length;w++)Bi(c[w],\"bubbled\",f);for(w=r.length;0<w--;)Bi(r[w],\"captured\",n);return i&64?[f,n]:[f]}};function mf(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Ct=typeof Object.is==\"function\"?Object.is:mf,hf=Object.prototype.hasOwnProperty;function En(e,t){if(Ct(e,t))return!0;if(typeof e!=\"object\"||e===null||typeof t!=\"object\"||t===null)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!hf.call(t,n[r])||!Ct(e[n[r]],t[n[r]]))return!1;return!0}var gf=it&&\"documentMode\"in document&&11>=document.documentMode,Vs={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Ot=null,Vi=null,pn=null,$i=!1;function Uo(e,t){var n=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;return $i||Ot==null||Ot!==Fi(n)?null:(n=Ot,\"selectionStart\"in n&&Di(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),pn&&En(pn,n)?null:(pn=n,e=de.getPooled(Vs.select,Vi,e,t),e.type=\"select\",e.target=Ot,Wt(e),e))}var vf={eventTypes:Vs,extractEvents:function(e,t,n,r,i,l){if(i=l||(r.window===r?r.document:r.nodeType===9?r:r.ownerDocument),!(l=!i)){e:{i=_l(i),l=hl.onSelect;for(var o=0;o<l.length;o++)if(!i.has(l[o])){i=!1;break e}i=!0}l=!i}if(l)return null;switch(i=t?Et(t):window,e){case\"focus\":(Fs(i)||i.contentEditable===\"true\")&&(Ot=i,Vi=t,pn=null);break;case\"blur\":pn=Vi=Ot=null;break;case\"mousedown\":$i=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":return $i=!1,Uo(n,r);case\"selectionchange\":if(gf)break;case\"keydown\":case\"keyup\":return Uo(n,r)}return null}},yf=de.extend({animationName:null,elapsedTime:null,pseudoElement:null}),wf=de.extend({clipboardData:function(e){return\"clipboardData\"in e?e.clipboardData:window.clipboardData}}),xf=jn.extend({relatedTarget:null});function nr(e){var t=e.keyCode;return\"charCode\"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}var Ef={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Cf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Tf=jn.extend({key:function(e){if(e.key){var t=Ef[e.key]||e.key;if(t!==\"Unidentified\")return t}return e.type===\"keypress\"?(e=nr(e),e===13?\"Enter\":String.fromCharCode(e)):e.type===\"keydown\"||e.type===\"keyup\"?Cf[e.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:zl,charCode:function(e){return e.type===\"keypress\"?nr(e):0},keyCode:function(e){return e.type===\"keydown\"||e.type===\"keyup\"?e.keyCode:0},which:function(e){return e.type===\"keypress\"?nr(e):e.type===\"keydown\"||e.type===\"keyup\"?e.keyCode:0}}),kf=Mn.extend({dataTransfer:null}),_f=jn.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:zl}),Sf=de.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),Nf=Mn.extend({deltaX:function(e){return\"deltaX\"in e?e.deltaX:\"wheelDeltaX\"in e?-e.wheelDeltaX:0},deltaY:function(e){return\"deltaY\"in e?e.deltaY:\"wheelDeltaY\"in e?-e.wheelDeltaY:\"wheelDelta\"in e?-e.wheelDelta:0},deltaZ:null,deltaMode:null}),Pf={eventTypes:Cs,extractEvents:function(e,t,n,r){var i=Ts.get(e);if(!i)return null;switch(e){case\"keypress\":if(nr(n)===0)return null;case\"keydown\":case\"keyup\":e=Tf;break;case\"blur\":case\"focus\":e=xf;break;case\"click\":if(n.button===2)return null;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":e=Mn;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":e=kf;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":e=_f;break;case as:case cs:case fs:e=yf;break;case ds:e=Sf;break;case\"scroll\":e=jn;break;case\"wheel\":e=Nf;break;case\"copy\":case\"cut\":case\"paste\":e=wf;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":e=Us;break;default:e=de}return t=e.getPooled(i,t,n,r),Wt(t),t}};if(pr)throw Error(m(101));pr=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));Wu();var If=Rn;ml=Al;Vu=If;$u=Et;Hu({SimpleEventPlugin:Pf,EnterLeaveEventPlugin:pf,ChangeEventPlugin:cf,SelectEventPlugin:vf,BeforeInputEventPlugin:tf});var Wi=[],Rt=-1;function F(e){0>Rt||(e.current=Wi[Rt],Wi[Rt]=null,Rt--)}function U(e,t){Rt++,Wi[Rt]=e.current,e.current=t}var nt={},J={current:nt},ne={current:!1},Tt=nt;function Ht(e,t){var n=e.type.contextTypes;if(!n)return nt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},l;for(l in n)i[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function re(e){return e=e.childContextTypes,e!=null}function wr(){F(ne),F(J)}function Vo(e,t,n){if(J.current!==nt)throw Error(m(168));U(J,t),U(ne,n)}function $s(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,typeof r.getChildContext!=\"function\")return n;r=r.getChildContext();for(var i in r)if(!(i in e))throw Error(m(108,ze(t)||\"Unknown\",i));return b({},n,{},r)}function rr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||nt,Tt=J.current,U(J,e),U(ne,ne.current),!0}function $o(e,t,n){var r=e.stateNode;if(!r)throw Error(m(169));n?(e=$s(e,t,Tt),r.__reactInternalMemoizedMergedChildContext=e,F(ne),F(J),U(J,e)):F(ne),U(ne,n)}var Lf=K.unstable_runWithPriority,Bl=K.unstable_scheduleCallback,Ws=K.unstable_cancelCallback,Wo=K.unstable_requestPaint,Hi=K.unstable_now,Of=K.unstable_getCurrentPriorityLevel,Hr=K.unstable_ImmediatePriority,Hs=K.unstable_UserBlockingPriority,Qs=K.unstable_NormalPriority,Ks=K.unstable_LowPriority,Xs=K.unstable_IdlePriority,Ys={},Rf=K.unstable_shouldYield,jf=Wo!==void 0?Wo:function(){},je=null,ir=null,ui=!1,Ho=Hi(),me=1e4>Ho?Hi:function(){return Hi()-Ho};function Qr(){switch(Of()){case Hr:return 99;case Hs:return 98;case Qs:return 97;case Ks:return 96;case Xs:return 95;default:throw Error(m(332))}}function Gs(e){switch(e){case 99:return Hr;case 98:return Hs;case 97:return Qs;case 96:return Ks;case 95:return Xs;default:throw Error(m(332))}}function rt(e,t){return e=Gs(e),Lf(e,t)}function Zs(e,t,n){return e=Gs(e),Bl(e,t,n)}function Qo(e){return je===null?(je=[e],ir=Bl(Hr,Js)):je.push(e),Ys}function Ie(){if(ir!==null){var e=ir;ir=null,Ws(e)}Js()}function Js(){if(!ui&&je!==null){ui=!0;var e=0;try{var t=je;rt(99,function(){for(;e<t.length;e++){var n=t[e];do n=n(!0);while(n!==null)}}),je=null}catch(n){throw je!==null&&(je=je.slice(e+1)),Bl(Hr,Ie),n}finally{ui=!1}}}function lr(e,t,n){return n/=10,1073741821-(((1073741821-e+t/10)/n|0)+1)*n}function ye(e,t){if(e&&e.defaultProps){t=b({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n])}return t}var xr={current:null},Er=null,jt=null,Cr=null;function Ul(){Cr=jt=Er=null}function Vl(e){var t=xr.current;F(xr),e.type._context._currentValue=t}function qs(e,t){for(;e!==null;){var n=e.alternate;if(e.childExpirationTime<t)e.childExpirationTime=t,n!==null&&n.childExpirationTime<t&&(n.childExpirationTime=t);else if(n!==null&&n.childExpirationTime<t)n.childExpirationTime=t;else break;e=e.return}}function Bt(e,t){Er=e,Cr=jt=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.expirationTime>=t&&(Te=!0),e.firstContext=null)}function ge(e,t){if(Cr!==e&&t!==!1&&t!==0)if((typeof t!=\"number\"||t===1073741823)&&(Cr=e,t=1073741823),t={context:e,observedBits:t,next:null},jt===null){if(Er===null)throw Error(m(308));jt=t,Er.dependencies={expirationTime:0,firstContext:t,responders:null}}else jt=jt.next=t;return e._currentValue}var $e=!1;function $l(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}function Wl(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,baseQueue:e.baseQueue,shared:e.shared,effects:e.effects})}function Je(e,t){return e={expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null},e.next=e}function qe(e,t){if(e=e.updateQueue,e!==null){e=e.shared;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function Ko(e,t){var n=e.alternate;n!==null&&Wl(n,e),e=e.updateQueue,n=e.baseQueue,n===null?(e.baseQueue=t.next=t,t.next=t):(t.next=n.next,n.next=t)}function Cn(e,t,n,r){var i=e.updateQueue;$e=!1;var l=i.baseQueue,o=i.shared.pending;if(o!==null){if(l!==null){var u=l.next;l.next=o.next,o.next=u}l=o,i.shared.pending=null,u=e.alternate,u!==null&&(u=u.updateQueue,u!==null&&(u.baseQueue=o))}if(l!==null){u=l.next;var c=i.baseState,f=0,v=null,w=null,N=null;if(u!==null){var O=u;do{if(o=O.expirationTime,o<r){var te={expirationTime:O.expirationTime,suspenseConfig:O.suspenseConfig,tag:O.tag,payload:O.payload,callback:O.callback,next:null};N===null?(w=N=te,v=c):N=N.next=te,o>f&&(f=o)}else{N!==null&&(N=N.next={expirationTime:1073741823,suspenseConfig:O.suspenseConfig,tag:O.tag,payload:O.payload,callback:O.callback,next:null}),Pa(o,O.suspenseConfig);e:{var V=e,a=O;switch(o=t,te=n,a.tag){case 1:if(V=a.payload,typeof V==\"function\"){c=V.call(te,c,o);break e}c=V;break e;case 3:V.effectTag=V.effectTag&-4097|64;case 0:if(V=a.payload,o=typeof V==\"function\"?V.call(te,c,o):V,o==null)break e;c=b({},c,o);break e;case 2:$e=!0}}O.callback!==null&&(e.effectTag|=32,o=i.effects,o===null?i.effects=[O]:o.push(O))}if(O=O.next,O===null||O===u){if(o=i.shared.pending,o===null)break;O=l.next=o.next,o.next=u,i.baseQueue=l=o,i.shared.pending=null}}while(!0)}N===null?v=c:N.next=w,i.baseState=v,i.baseQueue=N,Zr(f),e.expirationTime=f,e.memoizedState=c}}function Xo(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var r=e[t],i=r.callback;if(i!==null){if(r.callback=null,r=i,i=n,typeof r!=\"function\")throw Error(m(191,r));r.call(i)}}}var mn=we.ReactCurrentBatchConfig,bs=new Br.Component().refs;function Tr(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:b({},t,n),e.memoizedState=n,e.expirationTime===0&&(e.updateQueue.baseState=n)}var Kr={isMounted:function(e){return(e=e._reactInternalFiber)?_t(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternalFiber;var r=Se(),i=mn.suspense;r=wt(r,e,i),i=Je(r,i),i.payload=t,n!=null&&(i.callback=n),qe(e,i),et(e,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternalFiber;var r=Se(),i=mn.suspense;r=wt(r,e,i),i=Je(r,i),i.tag=1,i.payload=t,n!=null&&(i.callback=n),qe(e,i),et(e,r)},enqueueForceUpdate:function(e,t){e=e._reactInternalFiber;var n=Se(),r=mn.suspense;n=wt(n,e,r),r=Je(n,r),r.tag=2,t!=null&&(r.callback=t),qe(e,r),et(e,n)}};function Yo(e,t,n,r,i,l,o){return e=e.stateNode,typeof e.shouldComponentUpdate==\"function\"?e.shouldComponentUpdate(r,l,o):t.prototype&&t.prototype.isPureReactComponent?!En(n,r)||!En(i,l):!0}function ea(e,t,n){var r=!1,i=nt,l=t.contextType;return typeof l==\"object\"&&l!==null?l=ge(l):(i=re(t)?Tt:J.current,r=t.contextTypes,l=(r=r!=null)?Ht(e,i):nt),t=new t(n,l),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=Kr,e.stateNode=t,t._reactInternalFiber=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=l),t}function Go(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==\"function\"&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==\"function\"&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Kr.enqueueReplaceState(t,t.state,null)}function Qi(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs=bs,$l(e);var l=t.contextType;typeof l==\"object\"&&l!==null?i.context=ge(l):(l=re(t)?Tt:J.current,i.context=Ht(e,l)),Cn(e,n,i,r),i.state=e.memoizedState,l=t.getDerivedStateFromProps,typeof l==\"function\"&&(Tr(e,t,l,n),i.state=e.memoizedState),typeof t.getDerivedStateFromProps==\"function\"||typeof i.getSnapshotBeforeUpdate==\"function\"||typeof i.UNSAFE_componentWillMount!=\"function\"&&typeof i.componentWillMount!=\"function\"||(t=i.state,typeof i.componentWillMount==\"function\"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount==\"function\"&&i.UNSAFE_componentWillMount(),t!==i.state&&Kr.enqueueReplaceState(i,i.state,null),Cn(e,n,i,r),i.state=e.memoizedState),typeof i.componentDidMount==\"function\"&&(e.effectTag|=4)}var Wn=Array.isArray;function ln(e,t,n){if(e=n.ref,e!==null&&typeof e!=\"function\"&&typeof e!=\"object\"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(m(309));var r=n.stateNode}if(!r)throw Error(m(147,e));var i=\"\"+e;return t!==null&&t.ref!==null&&typeof t.ref==\"function\"&&t.ref._stringRef===i?t.ref:(t=function(l){var o=r.refs;o===bs&&(o=r.refs={}),l===null?delete o[i]:o[i]=l},t._stringRef=i,t)}if(typeof e!=\"string\")throw Error(m(284));if(!n._owner)throw Error(m(290,e))}return e}function Hn(e,t){if(e.type!==\"textarea\")throw Error(m(31,Object.prototype.toString.call(t)===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":t,\"\"))}function ta(e){function t(a,s){if(e){var d=a.lastEffect;d!==null?(d.nextEffect=s,a.lastEffect=s):a.firstEffect=a.lastEffect=s,s.nextEffect=null,s.effectTag=8}}function n(a,s){if(!e)return null;for(;s!==null;)t(a,s),s=s.sibling;return null}function r(a,s){for(a=new Map;s!==null;)s.key!==null?a.set(s.key,s):a.set(s.index,s),s=s.sibling;return a}function i(a,s){return a=kt(a,s),a.index=0,a.sibling=null,a}function l(a,s,d){return a.index=d,e?(d=a.alternate,d!==null?(d=d.index,d<s?(a.effectTag=2,s):d):(a.effectTag=2,s)):s}function o(a){return e&&a.alternate===null&&(a.effectTag=2),a}function u(a,s,d,p){return s===null||s.tag!==6?(s=pi(d,a.mode,p),s.return=a,s):(s=i(s,d),s.return=a,s)}function c(a,s,d,p){return s!==null&&s.elementType===d.type?(p=i(s,d.props),p.ref=ln(a,s,d),p.return=a,p):(p=ar(d.type,d.key,d.props,null,a.mode,p),p.ref=ln(a,s,d),p.return=a,p)}function f(a,s,d,p){return s===null||s.tag!==4||s.stateNode.containerInfo!==d.containerInfo||s.stateNode.implementation!==d.implementation?(s=mi(d,a.mode,p),s.return=a,s):(s=i(s,d.children||[]),s.return=a,s)}function v(a,s,d,p,h){return s===null||s.tag!==7?(s=Xe(d,a.mode,p,h),s.return=a,s):(s=i(s,d),s.return=a,s)}function w(a,s,d){if(typeof s==\"string\"||typeof s==\"number\")return s=pi(\"\"+s,a.mode,d),s.return=a,s;if(typeof s==\"object\"&&s!==null){switch(s.$$typeof){case Bn:return d=ar(s.type,s.key,s.props,null,a.mode,d),d.ref=ln(a,null,s),d.return=a,d;case Pt:return s=mi(s,a.mode,d),s.return=a,s}if(Wn(s)||qt(s))return s=Xe(s,a.mode,d,null),s.return=a,s;Hn(a,s)}return null}function N(a,s,d,p){var h=s!==null?s.key:null;if(typeof d==\"string\"||typeof d==\"number\")return h!==null?null:u(a,s,\"\"+d,p);if(typeof d==\"object\"&&d!==null){switch(d.$$typeof){case Bn:return d.key===h?d.type===ct?v(a,s,d.props.children,p,h):c(a,s,d,p):null;case Pt:return d.key===h?f(a,s,d,p):null}if(Wn(d)||qt(d))return h!==null?null:v(a,s,d,p,null);Hn(a,d)}return null}function O(a,s,d,p,h){if(typeof p==\"string\"||typeof p==\"number\")return a=a.get(d)||null,u(s,a,\"\"+p,h);if(typeof p==\"object\"&&p!==null){switch(p.$$typeof){case Bn:return a=a.get(p.key===null?d:p.key)||null,p.type===ct?v(s,a,p.props.children,h,p.key):c(s,a,p,h);case Pt:return a=a.get(p.key===null?d:p.key)||null,f(s,a,p,h)}if(Wn(p)||qt(p))return a=a.get(d)||null,v(s,a,p,h,null);Hn(s,p)}return null}function te(a,s,d,p){for(var h=null,x=null,C=s,P=s=0,I=null;C!==null&&P<d.length;P++){C.index>P?(I=C,C=null):I=C.sibling;var _=N(a,C,d[P],p);if(_===null){C===null&&(C=I);break}e&&C&&_.alternate===null&&t(a,C),s=l(_,s,P),x===null?h=_:x.sibling=_,x=_,C=I}if(P===d.length)return n(a,C),h;if(C===null){for(;P<d.length;P++)C=w(a,d[P],p),C!==null&&(s=l(C,s,P),x===null?h=C:x.sibling=C,x=C);return h}for(C=r(a,C);P<d.length;P++)I=O(C,a,P,d[P],p),I!==null&&(e&&I.alternate!==null&&C.delete(I.key===null?P:I.key),s=l(I,s,P),x===null?h=I:x.sibling=I,x=I);return e&&C.forEach(function(oe){return t(a,oe)}),h}function V(a,s,d,p){var h=qt(d);if(typeof h!=\"function\")throw Error(m(150));if(d=h.call(d),d==null)throw Error(m(151));for(var x=h=null,C=s,P=s=0,I=null,_=d.next();C!==null&&!_.done;P++,_=d.next()){C.index>P?(I=C,C=null):I=C.sibling;var oe=N(a,C,_.value,p);if(oe===null){C===null&&(C=I);break}e&&C&&oe.alternate===null&&t(a,C),s=l(oe,s,P),x===null?h=oe:x.sibling=oe,x=oe,C=I}if(_.done)return n(a,C),h;if(C===null){for(;!_.done;P++,_=d.next())_=w(a,_.value,p),_!==null&&(s=l(_,s,P),x===null?h=_:x.sibling=_,x=_);return h}for(C=r(a,C);!_.done;P++,_=d.next())_=O(C,a,P,_.value,p),_!==null&&(e&&_.alternate!==null&&C.delete(_.key===null?P:_.key),s=l(_,s,P),x===null?h=_:x.sibling=_,x=_);return e&&C.forEach(function(ue){return t(a,ue)}),h}return function(a,s,d,p){var h=typeof d==\"object\"&&d!==null&&d.type===ct&&d.key===null;h&&(d=d.props.children);var x=typeof d==\"object\"&&d!==null;if(x)switch(d.$$typeof){case Bn:e:{for(x=d.key,h=s;h!==null;){if(h.key===x){switch(h.tag){case 7:if(d.type===ct){n(a,h.sibling),s=i(h,d.props.children),s.return=a,a=s;break e}break;default:if(h.elementType===d.type){n(a,h.sibling),s=i(h,d.props),s.ref=ln(a,h,d),s.return=a,a=s;break e}}n(a,h);break}else t(a,h);h=h.sibling}d.type===ct?(s=Xe(d.props.children,a.mode,p,d.key),s.return=a,a=s):(p=ar(d.type,d.key,d.props,null,a.mode,p),p.ref=ln(a,s,d),p.return=a,a=p)}return o(a);case Pt:e:{for(h=d.key;s!==null;){if(s.key===h)if(s.tag===4&&s.stateNode.containerInfo===d.containerInfo&&s.stateNode.implementation===d.implementation){n(a,s.sibling),s=i(s,d.children||[]),s.return=a,a=s;break e}else{n(a,s);break}else t(a,s);s=s.sibling}s=mi(d,a.mode,p),s.return=a,a=s}return o(a)}if(typeof d==\"string\"||typeof d==\"number\")return d=\"\"+d,s!==null&&s.tag===6?(n(a,s.sibling),s=i(s,d),s.return=a,a=s):(n(a,s),s=pi(d,a.mode,p),s.return=a,a=s),o(a);if(Wn(d))return te(a,s,d,p);if(qt(d))return V(a,s,d,p);if(x&&Hn(a,d),typeof d>\"u\"&&!h)switch(a.tag){case 1:case 0:throw a=a.type,Error(m(152,a.displayName||a.name||\"Component\"))}return n(a,s)}}var Qt=ta(!0),Hl=ta(!1),An={},_e={current:An},Tn={current:An},kn={current:An};function dt(e){if(e===An)throw Error(m(174));return e}function Ki(e,t){switch(U(kn,t),U(Tn,e),U(_e,An),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ii(null,\"\");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ii(t,e)}F(_e),U(_e,t)}function Kt(){F(_e),F(Tn),F(kn)}function Zo(e){dt(kn.current);var t=dt(_e.current),n=Ii(t,e.type);t!==n&&(U(Tn,e),U(_e,n))}function Ql(e){Tn.current===e&&(F(_e),F(Tn))}var z={current:0};function kr(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data===Rl||n.data===jl))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.effectTag&64)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Kl(e,t){return{responder:e,props:t}}var or=we.ReactCurrentDispatcher,he=we.ReactCurrentBatchConfig,Qe=0,W=null,G=null,Z=null,_r=!1;function se(){throw Error(m(321))}function Xl(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Ct(e[n],t[n]))return!1;return!0}function Yl(e,t,n,r,i,l){if(Qe=l,W=t,t.memoizedState=null,t.updateQueue=null,t.expirationTime=0,or.current=e===null||e.memoizedState===null?Mf:Af,e=n(r,i),t.expirationTime===Qe){l=0;do{if(t.expirationTime=0,!(25>l))throw Error(m(301));l+=1,Z=G=null,t.updateQueue=null,or.current=Ff,e=n(r,i)}while(t.expirationTime===Qe)}if(or.current=Pr,t=G!==null&&G.next!==null,Qe=0,Z=G=W=null,_r=!1,t)throw Error(m(300));return e}function Ut(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Z===null?W.memoizedState=Z=e:Z=Z.next=e,Z}function Yt(){if(G===null){var e=W.alternate;e=e!==null?e.memoizedState:null}else e=G.next;var t=Z===null?W.memoizedState:Z.next;if(t!==null)Z=t,G=e;else{if(e===null)throw Error(m(310));G=e,e={memoizedState:G.memoizedState,baseState:G.baseState,baseQueue:G.baseQueue,queue:G.queue,next:null},Z===null?W.memoizedState=Z=e:Z=Z.next=e}return Z}function gt(e,t){return typeof t==\"function\"?t(e):t}function Qn(e){var t=Yt(),n=t.queue;if(n===null)throw Error(m(311));n.lastRenderedReducer=e;var r=G,i=r.baseQueue,l=n.pending;if(l!==null){if(i!==null){var o=i.next;i.next=l.next,l.next=o}r.baseQueue=i=l,n.pending=null}if(i!==null){i=i.next,r=r.baseState;var u=o=l=null,c=i;do{var f=c.expirationTime;if(f<Qe){var v={expirationTime:c.expirationTime,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};u===null?(o=u=v,l=r):u=u.next=v,f>W.expirationTime&&(W.expirationTime=f,Zr(f))}else u!==null&&(u=u.next={expirationTime:1073741823,suspenseConfig:c.suspenseConfig,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),Pa(f,c.suspenseConfig),r=c.eagerReducer===e?c.eagerState:e(r,c.action);c=c.next}while(c!==null&&c!==i);u===null?l=r:u.next=o,Ct(r,t.memoizedState)||(Te=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function Kn(e){var t=Yt(),n=t.queue;if(n===null)throw Error(m(311));n.lastRenderedReducer=e;var r=n.dispatch,i=n.pending,l=t.memoizedState;if(i!==null){n.pending=null;var o=i=i.next;do l=e(l,o.action),o=o.next;while(o!==i);Ct(l,t.memoizedState)||(Te=!0),t.memoizedState=l,t.baseQueue===null&&(t.baseState=l),n.lastRenderedState=l}return[l,r]}function si(e){var t=Ut();return typeof e==\"function\"&&(e=e()),t.memoizedState=t.baseState=e,e=t.queue={pending:null,dispatch:null,lastRenderedReducer:gt,lastRenderedState:e},e=e.dispatch=ua.bind(null,W,e),[t.memoizedState,e]}function Xi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},t=W.updateQueue,t===null?(t={lastEffect:null},W.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e)),e}function na(){return Yt().memoizedState}function Yi(e,t,n,r){var i=Ut();W.effectTag|=e,i.memoizedState=Xi(1|t,n,void 0,r===void 0?null:r)}function Gl(e,t,n,r){var i=Yt();r=r===void 0?null:r;var l=void 0;if(G!==null){var o=G.memoizedState;if(l=o.destroy,r!==null&&Xl(r,o.deps)){Xi(t,n,l,r);return}}W.effectTag|=e,i.memoizedState=Xi(1|t,n,l,r)}function Jo(e,t){return Yi(516,4,e,t)}function Sr(e,t){return Gl(516,4,e,t)}function ra(e,t){return Gl(4,2,e,t)}function ia(e,t){if(typeof t==\"function\")return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function la(e,t,n){return n=n!=null?n.concat([e]):null,Gl(4,2,ia.bind(null,t,e),n)}function Zl(){}function qo(e,t){return Ut().memoizedState=[e,t===void 0?null:t],e}function Nr(e,t){var n=Yt();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Xl(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function oa(e,t){var n=Yt();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Xl(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Jl(e,t,n){var r=Qr();rt(98>r?98:r,function(){e(!0)}),rt(97<r?97:r,function(){var i=he.suspense;he.suspense=t===void 0?null:t;try{e(!1),n()}finally{he.suspense=i}})}function ua(e,t,n){var r=Se(),i=mn.suspense;r=wt(r,e,i),i={expirationTime:r,suspenseConfig:i,action:n,eagerReducer:null,eagerState:null,next:null};var l=t.pending;if(l===null?i.next=i:(i.next=l.next,l.next=i),t.pending=i,l=e.alternate,e===W||l!==null&&l===W)_r=!0,i.expirationTime=Qe,W.expirationTime=Qe;else{if(e.expirationTime===0&&(l===null||l.expirationTime===0)&&(l=t.lastRenderedReducer,l!==null))try{var o=t.lastRenderedState,u=l(o,n);if(i.eagerReducer=l,i.eagerState=u,Ct(u,o))return}catch{}finally{}et(e,r)}}var Pr={readContext:ge,useCallback:se,useContext:se,useEffect:se,useImperativeHandle:se,useLayoutEffect:se,useMemo:se,useReducer:se,useRef:se,useState:se,useDebugValue:se,useResponder:se,useDeferredValue:se,useTransition:se},Mf={readContext:ge,useCallback:qo,useContext:ge,useEffect:Jo,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Yi(4,2,ia.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Yi(4,2,e,t)},useMemo:function(e,t){var n=Ut();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ut();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},e=e.dispatch=ua.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Ut();return e={current:e},t.memoizedState=e},useState:si,useDebugValue:Zl,useResponder:Kl,useDeferredValue:function(e,t){var n=si(e),r=n[0],i=n[1];return Jo(function(){var l=he.suspense;he.suspense=t===void 0?null:t;try{i(e)}finally{he.suspense=l}},[e,t]),r},useTransition:function(e){var t=si(!1),n=t[0];return t=t[1],[qo(Jl.bind(null,t,e),[t,e]),n]}},Af={readContext:ge,useCallback:Nr,useContext:ge,useEffect:Sr,useImperativeHandle:la,useLayoutEffect:ra,useMemo:oa,useReducer:Qn,useRef:na,useState:function(){return Qn(gt)},useDebugValue:Zl,useResponder:Kl,useDeferredValue:function(e,t){var n=Qn(gt),r=n[0],i=n[1];return Sr(function(){var l=he.suspense;he.suspense=t===void 0?null:t;try{i(e)}finally{he.suspense=l}},[e,t]),r},useTransition:function(e){var t=Qn(gt),n=t[0];return t=t[1],[Nr(Jl.bind(null,t,e),[t,e]),n]}},Ff={readContext:ge,useCallback:Nr,useContext:ge,useEffect:Sr,useImperativeHandle:la,useLayoutEffect:ra,useMemo:oa,useReducer:Kn,useRef:na,useState:function(){return Kn(gt)},useDebugValue:Zl,useResponder:Kl,useDeferredValue:function(e,t){var n=Kn(gt),r=n[0],i=n[1];return Sr(function(){var l=he.suspense;he.suspense=t===void 0?null:t;try{i(e)}finally{he.suspense=l}},[e,t]),r},useTransition:function(e){var t=Kn(gt),n=t[0];return t=t[1],[Nr(Jl.bind(null,t,e),[t,e]),n]}},Fe=null,Ke=null,vt=!1;function sa(e,t){var n=ke(5,null,null,0);n.elementType=\"DELETED\",n.type=\"DELETED\",n.stateNode=t,n.return=e,n.effectTag=8,e.lastEffect!==null?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function bo(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,!0):!1;case 6:return t=e.pendingProps===\"\"||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,!0):!1;case 13:return!1;default:return!1}}function Gi(e){if(vt){var t=Ke;if(t){var n=t;if(!bo(e,t)){if(t=zt(n.nextSibling),!t||!bo(e,t)){e.effectTag=e.effectTag&-1025|2,vt=!1,Fe=e;return}sa(Fe,n)}Fe=e,Ke=zt(t.firstChild)}else e.effectTag=e.effectTag&-1025|2,vt=!1,Fe=e}}function eu(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Fe=e}function Xn(e){if(e!==Fe)return!1;if(!vt)return eu(e),vt=!0,!1;var t=e.type;if(e.tag!==5||t!==\"head\"&&t!==\"body\"&&!zi(t,e.memoizedProps))for(t=Ke;t;)sa(e,t),t=zt(t.nextSibling);if(eu(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(m(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n===Ps){if(t===0){Ke=zt(e.nextSibling);break e}t--}else n!==Ns&&n!==jl&&n!==Rl||t++}e=e.nextSibling}Ke=null}}else Ke=Fe?zt(e.stateNode.nextSibling):null;return!0}function ai(){Ke=Fe=null,vt=!1}var Df=we.ReactCurrentOwner,Te=!1;function ae(e,t,n,r){t.child=e===null?Hl(t,null,n,r):Qt(t,e.child,n,r)}function tu(e,t,n,r,i){n=n.render;var l=t.ref;return Bt(t,i),r=Yl(e,t,n,r,l,i),e!==null&&!Te?(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),De(e,t,i)):(t.effectTag|=1,ae(e,t,r,i),t.child)}function nu(e,t,n,r,i,l){if(e===null){var o=n.type;return typeof o==\"function\"&&!no(o)&&o.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=o,aa(e,t,o,r,i,l)):(e=ar(n.type,null,r,null,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}return o=e.child,i<l&&(i=o.memoizedProps,n=n.compare,n=n!==null?n:En,n(i,r)&&e.ref===t.ref)?De(e,t,l):(t.effectTag|=1,e=kt(o,r),e.ref=t.ref,e.return=t,t.child=e)}function aa(e,t,n,r,i,l){return e!==null&&En(e.memoizedProps,r)&&e.ref===t.ref&&(Te=!1,i<l)?(t.expirationTime=e.expirationTime,De(e,t,l)):Zi(e,t,n,r,l)}function ca(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.effectTag|=128)}function Zi(e,t,n,r,i){var l=re(n)?Tt:J.current;return l=Ht(t,l),Bt(t,i),n=Yl(e,t,n,r,l,i),e!==null&&!Te?(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),De(e,t,i)):(t.effectTag|=1,ae(e,t,n,i),t.child)}function ru(e,t,n,r,i){if(re(n)){var l=!0;rr(t)}else l=!1;if(Bt(t,i),t.stateNode===null)e!==null&&(e.alternate=null,t.alternate=null,t.effectTag|=2),ea(t,n,r),Qi(t,n,r,i),r=!0;else if(e===null){var o=t.stateNode,u=t.memoizedProps;o.props=u;var c=o.context,f=n.contextType;typeof f==\"object\"&&f!==null?f=ge(f):(f=re(n)?Tt:J.current,f=Ht(t,f));var v=n.getDerivedStateFromProps,w=typeof v==\"function\"||typeof o.getSnapshotBeforeUpdate==\"function\";w||typeof o.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof o.componentWillReceiveProps!=\"function\"||(u!==r||c!==f)&&Go(t,o,r,f),$e=!1;var N=t.memoizedState;o.state=N,Cn(t,r,o,i),c=t.memoizedState,u!==r||N!==c||ne.current||$e?(typeof v==\"function\"&&(Tr(t,n,v,r),c=t.memoizedState),(u=$e||Yo(t,n,u,r,N,c,f))?(w||typeof o.UNSAFE_componentWillMount!=\"function\"&&typeof o.componentWillMount!=\"function\"||(typeof o.componentWillMount==\"function\"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount==\"function\"&&o.UNSAFE_componentWillMount()),typeof o.componentDidMount==\"function\"&&(t.effectTag|=4)):(typeof o.componentDidMount==\"function\"&&(t.effectTag|=4),t.memoizedProps=r,t.memoizedState=c),o.props=r,o.state=c,o.context=f,r=u):(typeof o.componentDidMount==\"function\"&&(t.effectTag|=4),r=!1)}else o=t.stateNode,Wl(e,t),u=t.memoizedProps,o.props=t.type===t.elementType?u:ye(t.type,u),c=o.context,f=n.contextType,typeof f==\"object\"&&f!==null?f=ge(f):(f=re(n)?Tt:J.current,f=Ht(t,f)),v=n.getDerivedStateFromProps,(w=typeof v==\"function\"||typeof o.getSnapshotBeforeUpdate==\"function\")||typeof o.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof o.componentWillReceiveProps!=\"function\"||(u!==r||c!==f)&&Go(t,o,r,f),$e=!1,c=t.memoizedState,o.state=c,Cn(t,r,o,i),N=t.memoizedState,u!==r||c!==N||ne.current||$e?(typeof v==\"function\"&&(Tr(t,n,v,r),N=t.memoizedState),(v=$e||Yo(t,n,u,r,c,N,f))?(w||typeof o.UNSAFE_componentWillUpdate!=\"function\"&&typeof o.componentWillUpdate!=\"function\"||(typeof o.componentWillUpdate==\"function\"&&o.componentWillUpdate(r,N,f),typeof o.UNSAFE_componentWillUpdate==\"function\"&&o.UNSAFE_componentWillUpdate(r,N,f)),typeof o.componentDidUpdate==\"function\"&&(t.effectTag|=4),typeof o.getSnapshotBeforeUpdate==\"function\"&&(t.effectTag|=256)):(typeof o.componentDidUpdate!=\"function\"||u===e.memoizedProps&&c===e.memoizedState||(t.effectTag|=4),typeof o.getSnapshotBeforeUpdate!=\"function\"||u===e.memoizedProps&&c===e.memoizedState||(t.effectTag|=256),t.memoizedProps=r,t.memoizedState=N),o.props=r,o.state=N,o.context=f,r=v):(typeof o.componentDidUpdate!=\"function\"||u===e.memoizedProps&&c===e.memoizedState||(t.effectTag|=4),typeof o.getSnapshotBeforeUpdate!=\"function\"||u===e.memoizedProps&&c===e.memoizedState||(t.effectTag|=256),r=!1);return Ji(e,t,n,r,l,i)}function Ji(e,t,n,r,i,l){ca(e,t);var o=(t.effectTag&64)!==0;if(!r&&!o)return i&&$o(t,n,!1),De(e,t,l);r=t.stateNode,Df.current=t;var u=o&&typeof n.getDerivedStateFromError!=\"function\"?null:r.render();return t.effectTag|=1,e!==null&&o?(t.child=Qt(t,e.child,null,l),t.child=Qt(t,null,u,l)):ae(e,t,u,l),t.memoizedState=r.state,i&&$o(t,n,!0),t.child}function iu(e){var t=e.stateNode;t.pendingContext?Vo(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Vo(e,t.context,!1),Ki(e,t.containerInfo)}var ci={dehydrated:null,retryTime:0};function lu(e,t,n){var r=t.mode,i=t.pendingProps,l=z.current,o=!1,u;if((u=(t.effectTag&64)!==0)||(u=(l&2)!==0&&(e===null||e.memoizedState!==null)),u?(o=!0,t.effectTag&=-65):e!==null&&e.memoizedState===null||i.fallback===void 0||i.unstable_avoidThisFallback===!0||(l|=1),U(z,l&1),e===null){if(i.fallback!==void 0&&Gi(t),o){if(o=i.fallback,i=Xe(null,r,0,null),i.return=t,!(t.mode&2))for(e=t.memoizedState!==null?t.child.child:t.child,i.child=e;e!==null;)e.return=i,e=e.sibling;return n=Xe(o,r,n,null),n.return=t,i.sibling=n,t.memoizedState=ci,t.child=i,n}return r=i.children,t.memoizedState=null,t.child=Hl(t,null,r,n)}if(e.memoizedState!==null){if(e=e.child,r=e.sibling,o){if(i=i.fallback,n=kt(e,e.pendingProps),n.return=t,!(t.mode&2)&&(o=t.memoizedState!==null?t.child.child:t.child,o!==e.child))for(n.child=o;o!==null;)o.return=n,o=o.sibling;return r=kt(r,i),r.return=t,n.sibling=r,n.childExpirationTime=0,t.memoizedState=ci,t.child=n,r}return n=Qt(t,e.child,i.children,n),t.memoizedState=null,t.child=n}if(e=e.child,o){if(o=i.fallback,i=Xe(null,r,0,null),i.return=t,i.child=e,e!==null&&(e.return=i),!(t.mode&2))for(e=t.memoizedState!==null?t.child.child:t.child,i.child=e;e!==null;)e.return=i,e=e.sibling;return n=Xe(o,r,n,null),n.return=t,i.sibling=n,n.effectTag|=2,i.childExpirationTime=0,t.memoizedState=ci,t.child=i,n}return t.memoizedState=null,t.child=Qt(t,e,i.children,n)}function ou(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;n!==null&&n.expirationTime<t&&(n.expirationTime=t),qs(e.return,t)}function fi(e,t,n,r,i,l){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailExpiration:0,tailMode:i,lastEffect:l}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailExpiration=0,o.tailMode=i,o.lastEffect=l)}function uu(e,t,n){var r=t.pendingProps,i=r.revealOrder,l=r.tail;if(ae(e,t,r.children,n),r=z.current,r&2)r=r&1|2,t.effectTag|=64;else{if(e!==null&&e.effectTag&64)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&ou(e,n);else if(e.tag===19)ou(e,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(U(z,r),!(t.mode&2))t.memoizedState=null;else switch(i){case\"forwards\":for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&kr(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),fi(t,!1,i,n,l,t.lastEffect);break;case\"backwards\":for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&kr(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}fi(t,!0,n,null,l,t.lastEffect);break;case\"together\":fi(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function De(e,t,n){e!==null&&(t.dependencies=e.dependencies);var r=t.expirationTime;if(r!==0&&Zr(r),t.childExpirationTime<n)return null;if(e!==null&&t.child!==e.child)throw Error(m(153));if(t.child!==null){for(e=t.child,n=kt(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=kt(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}var fa,qi,da,pa;fa=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};qi=function(){};da=function(e,t,n,r,i){var l=e.memoizedProps;if(l!==r){var o=t.stateNode;switch(dt(_e.current),e=null,n){case\"input\":l=ki(o,l),r=ki(o,r),e=[];break;case\"option\":l=Ni(o,l),r=Ni(o,r),e=[];break;case\"select\":l=b({},l,{value:void 0}),r=b({},r,{value:void 0}),e=[];break;case\"textarea\":l=Pi(o,l),r=Pi(o,r),e=[];break;default:typeof l.onClick!=\"function\"&&typeof r.onClick==\"function\"&&(o.onclick=gr)}Mi(n,r);var u,c;n=null;for(u in l)if(!r.hasOwnProperty(u)&&l.hasOwnProperty(u)&&l[u]!=null)if(u===\"style\")for(c in o=l[u],o)o.hasOwnProperty(c)&&(n||(n={}),n[c]=\"\");else u!==\"dangerouslySetInnerHTML\"&&u!==\"children\"&&u!==\"suppressContentEditableWarning\"&&u!==\"suppressHydrationWarning\"&&u!==\"autoFocus\"&&(Vt.hasOwnProperty(u)?e||(e=[]):(e=e||[]).push(u,null));for(u in r){var f=r[u];if(o=l!=null?l[u]:void 0,r.hasOwnProperty(u)&&f!==o&&(f!=null||o!=null))if(u===\"style\")if(o){for(c in o)!o.hasOwnProperty(c)||f&&f.hasOwnProperty(c)||(n||(n={}),n[c]=\"\");for(c in f)f.hasOwnProperty(c)&&o[c]!==f[c]&&(n||(n={}),n[c]=f[c])}else n||(e||(e=[]),e.push(u,n)),n=f;else u===\"dangerouslySetInnerHTML\"?(f=f?f.__html:void 0,o=o?o.__html:void 0,f!=null&&o!==f&&(e=e||[]).push(u,f)):u===\"children\"?o===f||typeof f!=\"string\"&&typeof f!=\"number\"||(e=e||[]).push(u,\"\"+f):u!==\"suppressContentEditableWarning\"&&u!==\"suppressHydrationWarning\"&&(Vt.hasOwnProperty(u)?(f!=null&&Oe(i,u),e||o===f||(e=[])):(e=e||[]).push(u,f))}n&&(e=e||[]).push(\"style\",n),i=e,(t.updateQueue=i)&&(t.effectTag|=4)}};pa=function(e,t,n,r){n!==r&&(t.effectTag|=4)};function Yn(e,t){switch(e.tailMode){case\"hidden\":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case\"collapsed\":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function zf(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return re(t.type)&&wr(),null;case 3:return Kt(),F(ne),F(J),n=t.stateNode,n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),e!==null&&e.child!==null||!Xn(t)||(t.effectTag|=4),qi(t),null;case 5:Ql(t),n=dt(kn.current);var i=t.type;if(e!==null&&t.stateNode!=null)da(e,t,i,r,n),e.ref!==t.ref&&(t.effectTag|=128);else{if(!r){if(t.stateNode===null)throw Error(m(166));return null}if(e=dt(_e.current),Xn(t)){r=t.stateNode,i=t.type;var l=t.memoizedProps;switch(r[We]=t,r[vr]=l,i){case\"iframe\":case\"object\":case\"embed\":D(\"load\",r);break;case\"video\":case\"audio\":for(e=0;e<on.length;e++)D(on[e],r);break;case\"source\":D(\"error\",r);break;case\"img\":case\"image\":case\"link\":D(\"error\",r),D(\"load\",r);break;case\"form\":D(\"reset\",r),D(\"submit\",r);break;case\"details\":D(\"toggle\",r);break;case\"input\":yo(r,l),D(\"invalid\",r),Oe(n,\"onChange\");break;case\"select\":r._wrapperState={wasMultiple:!!l.multiple},D(\"invalid\",r),Oe(n,\"onChange\");break;case\"textarea\":xo(r,l),D(\"invalid\",r),Oe(n,\"onChange\")}Mi(i,l),e=null;for(var o in l)if(l.hasOwnProperty(o)){var u=l[o];o===\"children\"?typeof u==\"string\"?r.textContent!==u&&(e=[\"children\",u]):typeof u==\"number\"&&r.textContent!==\"\"+u&&(e=[\"children\",\"\"+u]):Vt.hasOwnProperty(o)&&u!=null&&Oe(n,o)}switch(i){case\"input\":Un(r),wo(r,l,!0);break;case\"textarea\":Un(r),Eo(r);break;case\"select\":case\"option\":break;default:typeof l.onClick==\"function\"&&(r.onclick=gr)}n=e,t.updateQueue=n,n!==null&&(t.effectTag|=4)}else{switch(o=n.nodeType===9?n:n.ownerDocument,e===No&&(e=os(i)),e===No?i===\"script\"?(e=o.createElement(\"div\"),e.innerHTML=\"<script type=\\'module\\'><\\\\/script>\",e=e.removeChild(e.firstChild)):typeof r.is==\"string\"?e=o.createElement(i,{is:r.is}):(e=o.createElement(i),i===\"select\"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,i),e[We]=t,e[vr]=r,fa(e,t,!1,!1),t.stateNode=e,o=Ai(i,r),i){case\"iframe\":case\"object\":case\"embed\":D(\"load\",e),u=r;break;case\"video\":case\"audio\":for(u=0;u<on.length;u++)D(on[u],e);u=r;break;case\"source\":D(\"error\",e),u=r;break;case\"img\":case\"image\":case\"link\":D(\"error\",e),D(\"load\",e),u=r;break;case\"form\":D(\"reset\",e),D(\"submit\",e),u=r;break;case\"details\":D(\"toggle\",e),u=r;break;case\"input\":yo(e,r),u=ki(e,r),D(\"invalid\",e),Oe(n,\"onChange\");break;case\"option\":u=Ni(e,r);break;case\"select\":e._wrapperState={wasMultiple:!!r.multiple},u=b({},r,{value:void 0}),D(\"invalid\",e),Oe(n,\"onChange\");break;case\"textarea\":xo(e,r),u=Pi(e,r),D(\"invalid\",e),Oe(n,\"onChange\");break;default:u=r}Mi(i,u);var c=u;for(l in c)if(c.hasOwnProperty(l)){var f=c[l];l===\"style\"?_s(e,f):l===\"dangerouslySetInnerHTML\"?(f=f?f.__html:void 0,f!=null&&us(e,f)):l===\"children\"?typeof f==\"string\"?(i!==\"textarea\"||f!==\"\")&&vn(e,f):typeof f==\"number\"&&vn(e,\"\"+f):l!==\"suppressContentEditableWarning\"&&l!==\"suppressHydrationWarning\"&&l!==\"autoFocus\"&&(Vt.hasOwnProperty(l)?f!=null&&Oe(n,l):f!=null&&El(e,l,f,o))}switch(i){case\"input\":Un(e),wo(e,r,!1);break;case\"textarea\":Un(e),Eo(e);break;case\"option\":r.value!=null&&e.setAttribute(\"value\",\"\"+tt(r.value));break;case\"select\":e.multiple=!!r.multiple,n=r.value,n!=null?Dt(e,!!r.multiple,n,!1):r.defaultValue!=null&&Dt(e,!!r.multiple,r.defaultValue,!0);break;default:typeof u.onClick==\"function\"&&(e.onclick=gr)}Is(i,r)&&(t.effectTag|=4)}t.ref!==null&&(t.effectTag|=128)}return null;case 6:if(e&&t.stateNode!=null)pa(e,t,e.memoizedProps,r);else{if(typeof r!=\"string\"&&t.stateNode===null)throw Error(m(166));n=dt(kn.current),dt(_e.current),Xn(t)?(n=t.stateNode,r=t.memoizedProps,n[We]=t,n.nodeValue!==r&&(t.effectTag|=4)):(n=(n.nodeType===9?n:n.ownerDocument).createTextNode(r),n[We]=t,t.stateNode=n)}return null;case 13:return F(z),r=t.memoizedState,t.effectTag&64?(t.expirationTime=n,t):(n=r!==null,r=!1,e===null?t.memoizedProps.fallback!==void 0&&Xn(t):(i=e.memoizedState,r=i!==null,n||i===null||(i=e.child.sibling,i!==null&&(l=t.firstEffect,l!==null?(t.firstEffect=i,i.nextEffect=l):(t.firstEffect=t.lastEffect=i,i.nextEffect=null),i.effectTag=8))),n&&!r&&t.mode&2&&(e===null&&t.memoizedProps.unstable_avoidThisFallback!==!0||z.current&1?H===yt&&(H=Or):((H===yt||H===Or)&&(H=Xr),Sn!==0&&ce!==null&&(ht(ce,ie),ja(ce,Sn)))),(n||r)&&(t.effectTag|=4),null);case 4:return Kt(),qi(t),null;case 10:return Vl(t),null;case 17:return re(t.type)&&wr(),null;case 19:if(F(z),r=t.memoizedState,r===null)return null;if(i=(t.effectTag&64)!==0,l=r.rendering,l===null){if(i)Yn(r,!1);else if(H!==yt||e!==null&&e.effectTag&64)for(l=t.child;l!==null;){if(e=kr(l),e!==null){for(t.effectTag|=64,Yn(r,!1),i=e.updateQueue,i!==null&&(t.updateQueue=i,t.effectTag|=4),r.lastEffect===null&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=t.child;r!==null;)i=r,l=n,i.effectTag&=2,i.nextEffect=null,i.firstEffect=null,i.lastEffect=null,e=i.alternate,e===null?(i.childExpirationTime=0,i.expirationTime=l,i.child=null,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null):(i.childExpirationTime=e.childExpirationTime,i.expirationTime=e.expirationTime,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,l=e.dependencies,i.dependencies=l===null?null:{expirationTime:l.expirationTime,firstContext:l.firstContext,responders:l.responders}),r=r.sibling;return U(z,z.current&1|2),t.child}l=l.sibling}}else{if(!i)if(e=kr(l),e!==null){if(t.effectTag|=64,i=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.effectTag|=4),Yn(r,!0),r.tail===null&&r.tailMode===\"hidden\"&&!l.alternate)return t=t.lastEffect=r.lastEffect,t!==null&&(t.nextEffect=null),null}else 2*me()-r.renderingStartTime>r.tailExpiration&&1<n&&(t.effectTag|=64,i=!0,Yn(r,!1),t.expirationTime=t.childExpirationTime=n-1);r.isBackwards?(l.sibling=t.child,t.child=l):(n=r.last,n!==null?n.sibling=l:t.child=l,r.last=l)}return r.tail!==null?(r.tailExpiration===0&&(r.tailExpiration=me()+500),n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=me(),n.sibling=null,t=z.current,U(z,i?t&1|2:t&1),n):null}throw Error(m(156,t.tag))}function Bf(e){switch(e.tag){case 1:re(e.type)&&wr();var t=e.effectTag;return t&4096?(e.effectTag=t&-4097|64,e):null;case 3:if(Kt(),F(ne),F(J),t=e.effectTag,t&64)throw Error(m(285));return e.effectTag=t&-4097|64,e;case 5:return Ql(e),null;case 13:return F(z),t=e.effectTag,t&4096?(e.effectTag=t&-4097|64,e):null;case 19:return F(z),null;case 4:return Kt(),null;case 10:return Vl(e),null;default:return null}}function ql(e,t){return{value:e,source:t,stack:kl(t)}}var Uf=typeof WeakSet==\"function\"?WeakSet:Set;function bi(e,t){var n=t.source,r=t.stack;r===null&&n!==null&&(r=kl(n)),n!==null&&ze(n.type),t=t.value,e!==null&&e.tag===1&&ze(e.type);try{console.error(t)}catch(i){setTimeout(function(){throw i})}}function Vf(e,t){try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(n){xt(e,n)}}function su(e){var t=e.ref;if(t!==null)if(typeof t==\"function\")try{t(null)}catch(n){xt(e,n)}else t.current=null}function $f(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(t.effectTag&256&&e!==null){var n=e.memoizedProps,r=e.memoizedState;e=t.stateNode,t=e.getSnapshotBeforeUpdate(t.elementType===t.type?n:ye(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(m(163))}function ma(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.destroy;n.destroy=void 0,r!==void 0&&r()}n=n.next}while(n!==t)}}function ha(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Wf(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:ha(3,n);return;case 1:if(e=n.stateNode,n.effectTag&4)if(t===null)e.componentDidMount();else{var r=n.elementType===n.type?t.memoizedProps:ye(n.type,t.memoizedProps);e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate)}t=n.updateQueue,t!==null&&Xo(n,t,e);return;case 3:if(t=n.updateQueue,t!==null){if(e=null,n.child!==null)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}Xo(n,t,e)}return;case 5:e=n.stateNode,t===null&&n.effectTag&4&&Is(n.type,n.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:n.memoizedState===null&&(n=n.alternate,n!==null&&(n=n.memoizedState,n!==null&&(n=n.dehydrated,n!==null&&Es(n))));return;case 19:case 17:case 20:case 21:return}throw Error(m(163))}function au(e,t,n){switch(typeof ul==\"function\"&&ul(t),t.tag){case 0:case 11:case 14:case 15:case 22:if(e=t.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var r=e.next;rt(97<n?97:n,function(){var i=r;do{var l=i.destroy;if(l!==void 0){var o=t;try{l()}catch(u){xt(o,u)}}i=i.next}while(i!==r)})}break;case 1:su(t),n=t.stateNode,typeof n.componentWillUnmount==\"function\"&&Vf(t,n);break;case 5:su(t);break;case 4:va(e,t,n)}}function ga(e){var t=e.alternate;e.return=null,e.child=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.alternate=null,e.firstEffect=null,e.lastEffect=null,e.pendingProps=null,e.memoizedProps=null,e.stateNode=null,t!==null&&ga(t)}function cu(e){return e.tag===5||e.tag===3||e.tag===4}function fu(e){e:{for(var t=e.return;t!==null;){if(cu(t)){var n=t;break e}t=t.return}throw Error(m(160))}switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:t=t.containerInfo,r=!0;break;case 4:t=t.containerInfo,r=!0;break;default:throw Error(m(161))}n.effectTag&16&&(vn(t,\"\"),n.effectTag&=-17);e:t:for(n=e;;){for(;n.sibling===null;){if(n.return===null||cu(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.effectTag&2||n.child===null||n.tag===4)continue t;n.child.return=n,n=n.child}if(!(n.effectTag&2)){n=n.stateNode;break e}}r?el(e,n,t):tl(e,n,t)}function el(e,t,n){var r=e.tag,i=r===5||r===6;if(i)e=i?e.stateNode:e.stateNode.instance,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=gr));else if(r!==4&&(e=e.child,e!==null))for(el(e,t,n),e=e.sibling;e!==null;)el(e,t,n),e=e.sibling}function tl(e,t,n){var r=e.tag,i=r===5||r===6;if(i)e=i?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(tl(e,t,n),e=e.sibling;e!==null;)tl(e,t,n),e=e.sibling}function va(e,t,n){for(var r=t,i=!1,l,o;;){if(!i){i=r.return;e:for(;;){if(i===null)throw Error(m(160));switch(l=i.stateNode,i.tag){case 5:o=!1;break e;case 3:l=l.containerInfo,o=!0;break e;case 4:l=l.containerInfo,o=!0;break e}i=i.return}i=!0}if(r.tag===5||r.tag===6){e:for(var u=e,c=r,f=n,v=c;;)if(au(u,v,f),v.child!==null&&v.tag!==4)v.child.return=v,v=v.child;else{if(v===c)break e;for(;v.sibling===null;){if(v.return===null||v.return===c)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}o?(u=l,c=r.stateNode,u.nodeType===8?u.parentNode.removeChild(c):u.removeChild(c)):l.removeChild(r.stateNode)}else if(r.tag===4){if(r.child!==null){l=r.stateNode.containerInfo,o=!0,r.child.return=r,r=r.child;continue}}else if(au(e,r,n),r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return,r.tag===4&&(i=!1)}r.sibling.return=r.return,r=r.sibling}}function di(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:ma(3,t);return;case 1:return;case 5:var n=t.stateNode;if(n!=null){var r=t.memoizedProps,i=e!==null?e.memoizedProps:r;e=t.type;var l=t.updateQueue;if(t.updateQueue=null,l!==null){for(n[vr]=r,e===\"input\"&&r.type===\"radio\"&&r.name!=null&&rs(n,r),Ai(e,i),t=Ai(e,r),i=0;i<l.length;i+=2){var o=l[i],u=l[i+1];o===\"style\"?_s(n,u):o===\"dangerouslySetInnerHTML\"?us(n,u):o===\"children\"?vn(n,u):El(n,o,u,t)}switch(e){case\"input\":_i(n,r);break;case\"textarea\":is(n,r);break;case\"select\":t=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,e=r.value,e!=null?Dt(n,!!r.multiple,e,!1):t!==!!r.multiple&&(r.defaultValue!=null?Dt(n,!!r.multiple,r.defaultValue,!0):Dt(n,!!r.multiple,r.multiple?[]:\"\",!1))}}}return;case 6:if(t.stateNode===null)throw Error(m(162));t.stateNode.nodeValue=t.memoizedProps;return;case 3:t=t.stateNode,t.hydrate&&(t.hydrate=!1,Es(t.containerInfo));return;case 12:return;case 13:if(n=t,t.memoizedState===null?r=!1:(r=!0,n=t.child,to=me()),n!==null)e:for(e=n;;){if(e.tag===5)l=e.stateNode,r?(l=l.style,typeof l.setProperty==\"function\"?l.setProperty(\"display\",\"none\",\"important\"):l.display=\"none\"):(l=e.stateNode,i=e.memoizedProps.style,i=i!=null&&i.hasOwnProperty(\"display\")?i.display:null,l.style.display=ks(\"display\",i));else if(e.tag===6)e.stateNode.nodeValue=r?\"\":e.memoizedProps;else if(e.tag===13&&e.memoizedState!==null&&e.memoizedState.dehydrated===null){l=e.child.sibling,l.return=e,e=l;continue}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}du(t);return;case 19:du(t);return;case 17:return}throw Error(m(163))}function du(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Uf),t.forEach(function(r){var i=bf.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}var Hf=typeof WeakMap==\"function\"?WeakMap:Map;function ya(e,t,n){n=Je(n,null),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Mr||(Mr=!0,nl=r),bi(e,t)},n}function wa(e,t,n){n=Je(n,null),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r==\"function\"){var i=t.value;n.payload=function(){return bi(e,t),r(i)}}var l=e.stateNode;return l!==null&&typeof l.componentDidCatch==\"function\"&&(n.callback=function(){typeof r!=\"function\"&&(be===null?be=new Set([this]):be.add(this),bi(e,t));var o=t.stack;this.componentDidCatch(t.value,{componentStack:o!==null?o:\"\"})}),n}var Qf=Math.ceil,Ir=we.ReactCurrentDispatcher,xa=we.ReactCurrentOwner,Q=0,bl=8,xe=16,Pe=32,yt=0,Lr=1,Ea=2,Or=3,Xr=4,eo=5,k=Q,ce=null,S=null,ie=0,H=yt,Yr=null,Me=1073741823,_n=1073741823,Rr=null,Sn=0,jr=!1,to=0,Ca=500,E=null,Mr=!1,nl=null,be=null,Ar=!1,hn=null,sn=90,pt=null,gn=0,rl=null,ur=0;function Se(){return(k&(xe|Pe))!==Q?1073741821-(me()/10|0):ur!==0?ur:ur=1073741821-(me()/10|0)}function wt(e,t,n){if(t=t.mode,!(t&2))return 1073741823;var r=Qr();if(!(t&4))return r===99?1073741823:1073741822;if((k&xe)!==Q)return ie;if(n!==null)e=lr(e,n.timeoutMs|0||5e3,250);else switch(r){case 99:e=1073741823;break;case 98:e=lr(e,150,100);break;case 97:case 96:e=lr(e,5e3,250);break;case 95:e=2;break;default:throw Error(m(326))}return ce!==null&&e===ie&&--e,e}function et(e,t){if(50<gn)throw gn=0,rl=null,Error(m(185));if(e=Gr(e,t),e!==null){var n=Qr();t===1073741823?(k&bl)!==Q&&(k&(xe|Pe))===Q?il(e):(fe(e),k===Q&&Ie()):fe(e),(k&4)===Q||n!==98&&n!==99||(pt===null?pt=new Map([[e,t]]):(n=pt.get(e),(n===void 0||n>t)&&pt.set(e,t)))}}function Gr(e,t){e.expirationTime<t&&(e.expirationTime=t);var n=e.alternate;n!==null&&n.expirationTime<t&&(n.expirationTime=t);var r=e.return,i=null;if(r===null&&e.tag===3)i=e.stateNode;else for(;r!==null;){if(n=r.alternate,r.childExpirationTime<t&&(r.childExpirationTime=t),n!==null&&n.childExpirationTime<t&&(n.childExpirationTime=t),r.return===null&&r.tag===3){i=r.stateNode;break}r=r.return}return i!==null&&(ce===i&&(Zr(t),H===Xr&&ht(i,ie)),ja(i,t)),i}function sr(e){var t=e.lastExpiredTime;if(t!==0||(t=e.firstPendingTime,!Ra(e,t)))return t;var n=e.lastPingedTime;return e=e.nextKnownPendingLevel,e=n>e?n:e,2>=e&&t!==e?0:e}function fe(e){if(e.lastExpiredTime!==0)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=Qo(il.bind(null,e));else{var t=sr(e),n=e.callbackNode;if(t===0)n!==null&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=Se();if(t===1073741823?r=99:t===1||t===2?r=95:(r=10*(1073741821-t)-10*(1073741821-r),r=0>=r?99:250>=r?98:5250>=r?97:95),n!==null){var i=e.callbackPriority;if(e.callbackExpirationTime===t&&i>=r)return;n!==Ys&&Ws(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=t===1073741823?Qo(il.bind(null,e)):Zs(r,Ta.bind(null,e),{timeout:10*(1073741821-t)-me()}),e.callbackNode=t}}}function Ta(e,t){if(ur=0,t)return t=Se(),sl(e,t),fe(e),null;var n=sr(e);if(n!==0){if(t=e.callbackNode,(k&(xe|Pe))!==Q)throw Error(m(327));if(Gt(),e===ce&&n===ie||mt(e,n),S!==null){var r=k;k|=xe;var i=Na();do try{Yf();break}catch(u){Sa(e,u)}while(!0);if(Ul(),k=r,Ir.current=i,H===Lr)throw t=Yr,mt(e,n),ht(e,n),fe(e),t;if(S===null)switch(i=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=H,ce=null,r){case yt:case Lr:throw Error(m(345));case Ea:sl(e,2<n?2:n);break;case Or:if(ht(e,n),r=e.lastSuspendedTime,n===r&&(e.nextKnownPendingLevel=ll(i)),Me===1073741823&&(i=to+Ca-me(),10<i)){if(jr){var l=e.lastPingedTime;if(l===0||l>=n){e.lastPingedTime=n,mt(e,n);break}}if(l=sr(e),l!==0&&l!==n)break;if(r!==0&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=oi(at.bind(null,e),i);break}at(e);break;case Xr:if(ht(e,n),r=e.lastSuspendedTime,n===r&&(e.nextKnownPendingLevel=ll(i)),jr&&(i=e.lastPingedTime,i===0||i>=n)){e.lastPingedTime=n,mt(e,n);break}if(i=sr(e),i!==0&&i!==n)break;if(r!==0&&r!==n){e.lastPingedTime=r;break}if(_n!==1073741823?r=10*(1073741821-_n)-me():Me===1073741823?r=0:(r=10*(1073741821-Me)-5e3,i=me(),n=10*(1073741821-n)-i,r=i-r,0>r&&(r=0),r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Qf(r/1960))-r,n<r&&(r=n)),10<r){e.timeoutHandle=oi(at.bind(null,e),r);break}at(e);break;case eo:if(Me!==1073741823&&Rr!==null){l=Me;var o=Rr;if(r=o.busyMinDurationMs|0,0>=r?r=0:(i=o.busyDelayMs|0,l=me()-(10*(1073741821-l)-(o.timeoutMs|0||5e3)),r=l<=i?0:i+r-l),10<r){ht(e,n),e.timeoutHandle=oi(at.bind(null,e),r);break}}at(e);break;default:throw Error(m(329))}if(fe(e),e.callbackNode===t)return Ta.bind(null,e)}}return null}function il(e){var t=e.lastExpiredTime;if(t=t!==0?t:1073741823,(k&(xe|Pe))!==Q)throw Error(m(327));if(Gt(),e===ce&&t===ie||mt(e,t),S!==null){var n=k;k|=xe;var r=Na();do try{Xf();break}catch(i){Sa(e,i)}while(!0);if(Ul(),k=n,Ir.current=r,H===Lr)throw n=Yr,mt(e,t),ht(e,t),fe(e),n;if(S!==null)throw Error(m(261));e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,ce=null,at(e),fe(e)}return null}function Kf(){if(pt!==null){var e=pt;pt=null,e.forEach(function(t,n){sl(n,t),fe(n)}),Ie()}}function ka(e,t){var n=k;k|=1;try{return e(t)}finally{k=n,k===Q&&Ie()}}function _a(e,t){var n=k;k&=-2,k|=bl;try{return e(t)}finally{k=n,k===Q&&Ie()}}function mt(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,Hc(n)),S!==null)for(n=S.return;n!==null;){var r=n;switch(r.tag){case 1:r=r.type.childContextTypes,r!=null&&wr();break;case 3:Kt(),F(ne),F(J);break;case 5:Ql(r);break;case 4:Kt();break;case 13:F(z);break;case 19:F(z);break;case 10:Vl(r)}n=n.return}ce=e,S=kt(e.current,null),ie=t,H=yt,Yr=null,_n=Me=1073741823,Rr=null,Sn=0,jr=!1}function Sa(e,t){do{try{if(Ul(),or.current=Pr,_r)for(var n=W.memoizedState;n!==null;){var r=n.queue;r!==null&&(r.pending=null),n=n.next}if(Qe=0,Z=G=W=null,_r=!1,S===null||S.return===null)return H=Lr,Yr=t,S=null;e:{var i=e,l=S.return,o=S,u=t;if(t=ie,o.effectTag|=2048,o.firstEffect=o.lastEffect=null,u!==null&&typeof u==\"object\"&&typeof u.then==\"function\"){var c=u;if(!(o.mode&2)){var f=o.alternate;f?(o.updateQueue=f.updateQueue,o.memoizedState=f.memoizedState,o.expirationTime=f.expirationTime):(o.updateQueue=null,o.memoizedState=null)}var v=(z.current&1)!==0,w=l;do{var N;if(N=w.tag===13){var O=w.memoizedState;if(O!==null)N=O.dehydrated!==null;else{var te=w.memoizedProps;N=te.fallback===void 0?!1:te.unstable_avoidThisFallback!==!0?!0:!v}}if(N){var V=w.updateQueue;if(V===null){var a=new Set;a.add(c),w.updateQueue=a}else V.add(c);if(!(w.mode&2)){if(w.effectTag|=64,o.effectTag&=-2981,o.tag===1)if(o.alternate===null)o.tag=17;else{var s=Je(1073741823,null);s.tag=2,qe(o,s)}o.expirationTime=1073741823;break e}u=void 0,o=t;var d=i.pingCache;if(d===null?(d=i.pingCache=new Hf,u=new Set,d.set(c,u)):(u=d.get(c),u===void 0&&(u=new Set,d.set(c,u))),!u.has(o)){u.add(o);var p=qf.bind(null,i,c,o);c.then(p,p)}w.effectTag|=4096,w.expirationTime=t;break e}w=w.return}while(w!==null);u=Error((ze(o.type)||\"A React component\")+` suspended while rendering, but no fallback UI was specified.Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+kl(o))}H!==eo&&(H=Ea),u=ql(u,o),w=l;do{switch(w.tag){case 3:c=u,w.effectTag|=4096,w.expirationTime=t;var h=ya(w,c,t);Ko(w,h);break e;case 1:c=u;var x=w.type,C=w.stateNode;if(!(w.effectTag&64)&&(typeof x.getDerivedStateFromError==\"function\"||C!==null&&typeof C.componentDidCatch==\"function\"&&(be===null||!be.has(C)))){w.effectTag|=4096,w.expirationTime=t;var P=wa(w,c,t);Ko(w,P);break e}}w=w.return}while(w!==null)}S=La(S)}catch(I){t=I;continue}break}while(!0)}function Na(){var e=Ir.current;return Ir.current=Pr,e===null?Pr:e}function Pa(e,t){e<Me&&2<e&&(Me=e),t!==null&&e<_n&&2<e&&(_n=e,Rr=t)}function Zr(e){e>Sn&&(Sn=e)}function Xf(){for(;S!==null;)S=Ia(S)}function Yf(){for(;S!==null&&!Rf();)S=Ia(S)}function Ia(e){var t=Oa(e.alternate,e,ie);return e.memoizedProps=e.pendingProps,t===null&&(t=La(e)),xa.current=null,t}function La(e){S=e;do{var t=S.alternate;if(e=S.return,S.effectTag&2048){if(t=Bf(S),t!==null)return t.effectTag&=2047,t;e!==null&&(e.firstEffect=e.lastEffect=null,e.effectTag|=2048)}else{if(t=zf(t,S,ie),ie===1||S.childExpirationTime!==1){for(var n=0,r=S.child;r!==null;){var i=r.expirationTime,l=r.childExpirationTime;i>n&&(n=i),l>n&&(n=l),r=r.sibling}S.childExpirationTime=n}if(t!==null)return t;e!==null&&!(e.effectTag&2048)&&(e.firstEffect===null&&(e.firstEffect=S.firstEffect),S.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=S.firstEffect),e.lastEffect=S.lastEffect),1<S.effectTag&&(e.lastEffect!==null?e.lastEffect.nextEffect=S:e.firstEffect=S,e.lastEffect=S))}if(t=S.sibling,t!==null)return t;S=e}while(S!==null);return H===yt&&(H=eo),null}function ll(e){var t=e.expirationTime;return e=e.childExpirationTime,t>e?t:e}function at(e){var t=Qr();return rt(99,Gf.bind(null,e,t)),null}function Gf(e,t){do Gt();while(hn!==null);if((k&(xe|Pe))!==Q)throw Error(m(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(n===null)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(m(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var i=ll(n);if(e.firstPendingTime=i,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===ce&&(S=ce=null,ie=0),1<n.effectTag?n.lastEffect!==null?(n.lastEffect.nextEffect=n,i=n.firstEffect):i=n:i=n.firstEffect,i!==null){var l=k;k|=Pe,xa.current=null,ii=bn;var o=Lo();if(Di(o)){if(\"selectionStart\"in o)var u={start:o.selectionStart,end:o.selectionEnd};else e:{u=(u=o.ownerDocument)&&u.defaultView||window;var c=u.getSelection&&u.getSelection();if(c&&c.rangeCount!==0){u=c.anchorNode;var f=c.anchorOffset,v=c.focusNode;c=c.focusOffset;try{u.nodeType,v.nodeType}catch{u=null;break e}var w=0,N=-1,O=-1,te=0,V=0,a=o,s=null;t:for(;;){for(var d;a!==u||f!==0&&a.nodeType!==3||(N=w+f),a!==v||c!==0&&a.nodeType!==3||(O=w+c),a.nodeType===3&&(w+=a.nodeValue.length),(d=a.firstChild)!==null;)s=a,a=d;for(;;){if(a===o)break t;if(s===u&&++te===f&&(N=w),s===v&&++V===c&&(O=w),(d=a.nextSibling)!==null)break;a=s,s=a.parentNode}a=d}u=N===-1||O===-1?null:{start:N,end:O}}else u=null}u=u||{start:0,end:0}}else u=null;li={activeElementDetached:null,focusedElem:o,selectionRange:u},bn=!1,E=i;do try{Zf()}catch(_){if(E===null)throw Error(m(330));xt(E,_),E=E.nextEffect}while(E!==null);E=i;do try{for(o=e,u=t;E!==null;){var p=E.effectTag;if(p&16&&vn(E.stateNode,\"\"),p&128){var h=E.alternate;if(h!==null){var x=h.ref;x!==null&&(typeof x==\"function\"?x(null):x.current=null)}}switch(p&1038){case 2:fu(E),E.effectTag&=-3;break;case 6:fu(E),E.effectTag&=-3,di(E.alternate,E);break;case 1024:E.effectTag&=-1025;break;case 1028:E.effectTag&=-1025,di(E.alternate,E);break;case 4:di(E.alternate,E);break;case 8:f=E,va(o,f,u),ga(f)}E=E.nextEffect}}catch(_){if(E===null)throw Error(m(330));xt(E,_),E=E.nextEffect}while(E!==null);if(x=li,h=Lo(),p=x.focusedElem,u=x.selectionRange,h!==p&&p&&p.ownerDocument&&Ss(p.ownerDocument.documentElement,p)){for(u!==null&&Di(p)&&(h=u.start,x=u.end,x===void 0&&(x=h),\"selectionStart\"in p?(p.selectionStart=h,p.selectionEnd=Math.min(x,p.value.length)):(x=(h=p.ownerDocument||document)&&h.defaultView||window,x.getSelection&&(x=x.getSelection(),f=p.textContent.length,o=Math.min(u.start,f),u=u.end===void 0?o:Math.min(u.end,f),!x.extend&&o>u&&(f=u,u=o,o=f),f=Io(p,o),v=Io(p,u),f&&v&&(x.rangeCount!==1||x.anchorNode!==f.node||x.anchorOffset!==f.offset||x.focusNode!==v.node||x.focusOffset!==v.offset)&&(h=h.createRange(),h.setStart(f.node,f.offset),x.removeAllRanges(),o>u?(x.addRange(h),x.extend(v.node,v.offset)):(h.setEnd(v.node,v.offset),x.addRange(h)))))),h=[],x=p;x=x.parentNode;)x.nodeType===1&&h.push({element:x,left:x.scrollLeft,top:x.scrollTop});for(typeof p.focus==\"function\"&&p.focus(),p=0;p<h.length;p++)x=h[p],x.element.scrollLeft=x.left,x.element.scrollTop=x.top}bn=!!ii,li=ii=null,e.current=n,E=i;do try{for(p=e;E!==null;){var C=E.effectTag;if(C&36&&Wf(p,E.alternate,E),C&128){h=void 0;var P=E.ref;if(P!==null){var I=E.stateNode;switch(E.tag){case 5:h=I;break;default:h=I}typeof P==\"function\"?P(h):P.current=h}}E=E.nextEffect}}catch(_){if(E===null)throw Error(m(330));xt(E,_),E=E.nextEffect}while(E!==null);E=null,jf(),k=l}else e.current=n;if(Ar)Ar=!1,hn=e,sn=t;else for(E=i;E!==null;)t=E.nextEffect,E.nextEffect=null,E=t;if(t=e.firstPendingTime,t===0&&(be=null),t===1073741823?e===rl?gn++:(gn=0,rl=e):gn=0,typeof ol==\"function\"&&ol(n.stateNode,r),fe(e),Mr)throw Mr=!1,e=nl,nl=null,e;return(k&bl)!==Q||Ie(),null}function Zf(){for(;E!==null;){var e=E.effectTag;e&256&&$f(E.alternate,E),!(e&512)||Ar||(Ar=!0,Zs(97,function(){return Gt(),null})),E=E.nextEffect}}function Gt(){if(sn!==90){var e=97<sn?97:sn;return sn=90,rt(e,Jf)}}function Jf(){if(hn===null)return!1;var e=hn;if(hn=null,(k&(xe|Pe))!==Q)throw Error(m(331));var t=k;for(k|=Pe,e=e.current.firstEffect;e!==null;){try{var n=e;if(n.effectTag&512)switch(n.tag){case 0:case 11:case 15:case 22:ma(5,n),ha(5,n)}}catch(r){if(e===null)throw Error(m(330));xt(e,r)}n=e.nextEffect,e.nextEffect=null,e=n}return k=t,Ie(),!0}function pu(e,t,n){t=ql(n,t),t=ya(e,t,1073741823),qe(e,t),e=Gr(e,1073741823),e!==null&&fe(e)}function xt(e,t){if(e.tag===3)pu(e,e,t);else for(var n=e.return;n!==null;){if(n.tag===3){pu(n,e,t);break}else if(n.tag===1){var r=n.stateNode;if(typeof n.type.getDerivedStateFromError==\"function\"||typeof r.componentDidCatch==\"function\"&&(be===null||!be.has(r))){e=ql(t,e),e=wa(n,e,1073741823),qe(n,e),n=Gr(n,1073741823),n!==null&&fe(n);break}}n=n.return}}function qf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),ce===e&&ie===n?H===Xr||H===Or&&Me===1073741823&&me()-to<Ca?mt(e,ie):jr=!0:Ra(e,n)&&(t=e.lastPingedTime,t!==0&&t<n||(e.lastPingedTime=n,fe(e)))}function bf(e,t){var n=e.stateNode;n!==null&&n.delete(t),t=0,t===0&&(t=Se(),t=wt(t,e,null)),e=Gr(e,t),e!==null&&fe(e)}var Oa;Oa=function(e,t,n){var r=t.expirationTime;if(e!==null){var i=t.pendingProps;if(e.memoizedProps!==i||ne.current)Te=!0;else{if(r<n){switch(Te=!1,t.tag){case 3:iu(t),ai();break;case 5:if(Zo(t),t.mode&4&&n!==1&&i.hidden)return t.expirationTime=t.childExpirationTime=1,null;break;case 1:re(t.type)&&rr(t);break;case 4:Ki(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value,i=t.type._context,U(xr,i._currentValue),i._currentValue=r;break;case 13:if(t.memoizedState!==null)return r=t.child.childExpirationTime,r!==0&&r>=n?lu(e,t,n):(U(z,z.current&1),t=De(e,t,n),t!==null?t.sibling:null);U(z,z.current&1);break;case 19:if(r=t.childExpirationTime>=n,e.effectTag&64){if(r)return uu(e,t,n);t.effectTag|=64}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null),U(z,z.current),!r)return null}return De(e,t,n)}Te=!1}}else Te=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,e!==null&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=Ht(t,J.current),Bt(t,n),i=Yl(null,t,r,e,i,n),t.effectTag|=1,typeof i==\"object\"&&i!==null&&typeof i.render==\"function\"&&i.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,re(r)){var l=!0;rr(t)}else l=!1;t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,$l(t);var o=r.getDerivedStateFromProps;typeof o==\"function\"&&Tr(t,r,o,e),i.updater=Kr,t.stateNode=i,i._reactInternalFiber=t,Qi(t,r,e,n),t=Ji(null,t,r,!0,l,n)}else t.tag=0,ae(null,t,i,n),t=t.child;return t;case 16:e:{if(i=t.elementType,e!==null&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,Nc(i),i._status!==1)throw i._result;switch(i=i._result,t.type=i,l=t.tag=nd(i),e=ye(i,e),l){case 0:t=Zi(null,t,i,e,n);break e;case 1:t=ru(null,t,i,e,n);break e;case 11:t=tu(null,t,i,e,n);break e;case 14:t=nu(null,t,i,ye(i.type,e),r,n);break e}throw Error(m(306,i,\"\"))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ye(r,i),Zi(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ye(r,i),ru(e,t,r,i,n);case 3:if(iu(t),r=t.updateQueue,e===null||r===null)throw Error(m(282));if(r=t.pendingProps,i=t.memoizedState,i=i!==null?i.element:null,Wl(e,t),Cn(t,r,null,n),r=t.memoizedState.element,r===i)ai(),t=De(e,t,n);else{if((i=t.stateNode.hydrate)&&(Ke=zt(t.stateNode.containerInfo.firstChild),Fe=t,i=vt=!0),i)for(n=Hl(t,null,r,n),t.child=n;n;)n.effectTag=n.effectTag&-3|1024,n=n.sibling;else ae(e,t,r,n),ai();t=t.child}return t;case 5:return Zo(t),e===null&&Gi(t),r=t.type,i=t.pendingProps,l=e!==null?e.memoizedProps:null,o=i.children,zi(r,i)?o=null:l!==null&&zi(r,l)&&(t.effectTag|=16),ca(e,t),t.mode&4&&n!==1&&i.hidden?(t.expirationTime=t.childExpirationTime=1,t=null):(ae(e,t,o,n),t=t.child),t;case 6:return e===null&&Gi(t),null;case 13:return lu(e,t,n);case 4:return Ki(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Qt(t,null,r,n):ae(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ye(r,i),tu(e,t,r,i,n);case 7:return ae(e,t,t.pendingProps,n),t.child;case 8:return ae(e,t,t.pendingProps.children,n),t.child;case 12:return ae(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,i=t.pendingProps,o=t.memoizedProps,l=i.value;var u=t.type._context;if(U(xr,u._currentValue),u._currentValue=l,o!==null)if(u=o.value,l=Ct(u,l)?0:(typeof r._calculateChangedBits==\"function\"?r._calculateChangedBits(u,l):1073741823)|0,l===0){if(o.children===i.children&&!ne.current){t=De(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var c=u.dependencies;if(c!==null){o=u.child;for(var f=c.firstContext;f!==null;){if(f.context===r&&f.observedBits&l){u.tag===1&&(f=Je(n,null),f.tag=2,qe(u,f)),u.expirationTime<n&&(u.expirationTime=n),f=u.alternate,f!==null&&f.expirationTime<n&&(f.expirationTime=n),qs(u.return,n),c.expirationTime<n&&(c.expirationTime=n);break}f=f.next}}else o=u.tag===10&&u.type===t.type?null:u.child;if(o!==null)o.return=u;else for(o=u;o!==null;){if(o===t){o=null;break}if(u=o.sibling,u!==null){u.return=o.return,o=u;break}o=o.return}u=o}ae(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,l=t.pendingProps,r=l.children,Bt(t,n),i=ge(i,l.unstable_observedBits),r=r(i),t.effectTag|=1,ae(e,t,r,n),t.child;case 14:return i=t.type,l=ye(i,t.pendingProps),l=ye(i.type,l),nu(e,t,i,l,r,n);case 15:return aa(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ye(r,i),e!==null&&(e.alternate=null,t.alternate=null,t.effectTag|=2),t.tag=1,re(r)?(e=!0,rr(t)):e=!1,Bt(t,n),ea(t,r,i),Qi(t,r,i,n),Ji(null,t,r,!0,e,n);case 19:return uu(e,t,n)}throw Error(m(156,t.tag))};var ol=null,ul=null;function ed(e){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);ol=function(r){try{t.onCommitFiberRoot(n,r,void 0,(r.current.effectTag&64)===64)}catch{}},ul=function(r){try{t.onCommitFiberUnmount(n,r)}catch{}}}catch{}return!0}function td(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function ke(e,t,n,r){return new td(e,t,n,r)}function no(e){return e=e.prototype,!(!e||!e.isReactComponent)}function nd(e){if(typeof e==\"function\")return no(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Cl)return 11;if(e===Tl)return 14}return 2}function kt(e,t){var n=e.alternate;return n===null?(n=ke(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ar(e,t,n,r,i,l){var o=2;if(r=e,typeof e==\"function\")no(e)&&(o=1);else if(typeof e==\"string\")o=5;else e:switch(e){case ct:return Xe(n.children,i,l,t);case Sc:o=8,i|=7;break;case Zu:o=8,i|=1;break;case Zn:return e=ke(12,n,t,i|8),e.elementType=Zn,e.type=Zn,e.expirationTime=l,e;case Jn:return e=ke(13,n,t,i),e.type=Jn,e.elementType=Jn,e.expirationTime=l,e;case Ti:return e=ke(19,n,t,i),e.elementType=Ti,e.expirationTime=l,e;default:if(typeof e==\"object\"&&e!==null)switch(e.$$typeof){case Ju:o=10;break e;case qu:o=9;break e;case Cl:o=11;break e;case Tl:o=14;break e;case bu:o=16,r=null;break e;case es:o=22;break e}throw Error(m(130,e==null?e:typeof e,\"\"))}return t=ke(o,n,t,i),t.elementType=e,t.type=r,t.expirationTime=l,t}function Xe(e,t,n,r){return e=ke(7,e,r,t),e.expirationTime=n,e}function pi(e,t,n){return e=ke(6,e,null,t),e.expirationTime=n,e}function mi(e,t,n){return t=ke(4,e.children!==null?e.children:[],e.key,t),t.expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function rd(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Ra(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,n!==0&&n>=t&&e<=t}function ht(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;n<t&&(e.firstSuspendedTime=t),(r>t||n===0)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function ja(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;n!==0&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function sl(e,t){var n=e.lastExpiredTime;(n===0||n>t)&&(e.lastExpiredTime=t)}function Fr(e,t,n,r){var i=t.current,l=Se(),o=mn.suspense;l=wt(l,i,o);e:if(n){n=n._reactInternalFiber;t:{if(_t(n)!==n||n.tag!==1)throw Error(m(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(re(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(u!==null);throw Error(m(171))}if(n.tag===1){var c=n.type;if(re(c)){n=$s(n,c,u);break e}}n=u}else n=nt;return t.context===null?t.context=n:t.pendingContext=n,t=Je(l,o),t.payload={element:e},r=r===void 0?null:r,r!==null&&(t.callback=r),qe(i,t),et(i,l),l}function hi(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function mu(e,t){e=e.memoizedState,e!==null&&e.dehydrated!==null&&e.retryTime<t&&(e.retryTime=t)}function ro(e,t){mu(e,t),(e=e.alternate)&&mu(e,t)}function io(e,t,n){n=n!=null&&n.hydrate===!0;var r=new rd(e,t,n),i=ke(3,null,null,t===2?7:t===1?3:0);r.current=i,i.stateNode=r,$l(i),e[Ln]=r.current,n&&t!==0&&jc(e,e.nodeType===9?e:e.ownerDocument),this._internalRoot=r}io.prototype.render=function(e){Fr(e,this._internalRoot,null,null)};io.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Fr(null,e,null,function(){t[Ln]=null})};function Fn(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==\" react-mount-point-unstable \"))}function id(e,t){if(t||(t=e?e.nodeType===9?e.documentElement:e.firstChild:null,t=!(!t||t.nodeType!==1||!t.hasAttribute(\"data-reactroot\"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new io(e,0,t?{hydrate:!0}:void 0)}function Jr(e,t,n,r,i){var l=n._reactRootContainer;if(l){var o=l._internalRoot;if(typeof i==\"function\"){var u=i;i=function(){var f=hi(o);u.call(f)}}Fr(t,o,e,i)}else{if(l=n._reactRootContainer=id(n,r),o=l._internalRoot,typeof i==\"function\"){var c=i;i=function(){var f=hi(o);c.call(f)}}_a(function(){Fr(t,o,e,i)})}return hi(o)}function ld(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Pt,key:r==null?null:\"\"+r,children:e,containerInfo:t,implementation:n}}ws=function(e){if(e.tag===13){var t=lr(Se(),150,100);et(e,t),ro(e,t)}};Pl=function(e){e.tag===13&&(et(e,3),ro(e,3))};xs=function(e){if(e.tag===13){var t=Se();t=wt(t,e,null),et(e,t),ro(e,t)}};Ci=function(e,t,n){switch(t){case\"input\":if(_i(e,n),t=n.name,n.type===\"radio\"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+t)+\\'][type=\"radio\"]\\'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var i=Al(r);if(!i)throw Error(m(90));ns(r),_i(r,i)}}}break;case\"textarea\":is(e,n);break;case\"select\":t=n.value,t!=null&&Dt(e,!!n.multiple,t,!1)}};gl=ka;Xu=function(e,t,n,r,i){var l=k;k|=4;try{return rt(98,e.bind(null,t,n,r,i))}finally{k=l,k===Q&&Ie()}};vl=function(){(k&(1|xe|Pe))===Q&&(Kf(),Gt())};Yu=function(e,t){var n=k;k|=2;try{return e(t)}finally{k=n,k===Q&&Ie()}};function Ma(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Fn(t))throw Error(m(200));return ld(e,t,null,n)}var od={Events:[Rn,Et,Al,Hu,Ei,Wt,function(e){Sl(e,Kc)},Qu,Ku,$r,Vr,Gt,{current:!1}]};(function(e){var t=e.findFiberByHostInstance;return ed(b({},e,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:we.ReactCurrentDispatcher,findHostInstanceByFiber:function(n){return n=ms(n),n===null?null:n.stateNode},findFiberByHostInstance:function(n){return t?t(n):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:On,bundleType:0,version:\"16.14.0\",rendererPackageName:\"react-dom\"});ve.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=od;ve.createPortal=Ma;ve.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternalFiber;if(t===void 0)throw typeof e.render==\"function\"?Error(m(188)):Error(m(268,Object.keys(e)));return e=ms(t),e=e===null?null:e.stateNode,e};ve.flushSync=function(e,t){if((k&(xe|Pe))!==Q)throw Error(m(187));var n=k;k|=1;try{return rt(99,e.bind(null,t))}finally{k=n,Ie()}};ve.hydrate=function(e,t,n){if(!Fn(t))throw Error(m(200));return Jr(null,e,t,!0,n)};ve.render=function(e,t,n){if(!Fn(t))throw Error(m(200));return Jr(null,e,t,!1,n)};ve.unmountComponentAtNode=function(e){if(!Fn(e))throw Error(m(40));return e._reactRootContainer?(_a(function(){Jr(null,null,e,!1,function(){e._reactRootContainer=null,e[Ln]=null})}),!0):!1};ve.unstable_batchedUpdates=ka;ve.unstable_createPortal=function(e,t){return Ma(e,t,2<arguments.length&&arguments[2]!==void 0?arguments[2]:null)};ve.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Fn(n))throw Error(m(200));if(e==null||e._reactInternalFiber===void 0)throw Error(m(38));return Jr(e,t,n,!1,r)};ve.version=\"16.14.0\";function Aa(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=\"function\"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Aa)}catch(e){console.error(e)}}Aa(),zu.exports=ve;var ud=zu.exports;const sd=Ka(ud),ad={launching:\"正在启动 IBM Aspera Connect...\",restartBanner:\"IBM Aspera Connect 安装完成后,请重新启动浏览器。\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"重试\",retry:\"无法连接 Connect\",running:\"IBM Aspera Connect 正在运行!\",alreadyInstalled:\"已安装?\",troubleshoot:\"疑难解答\",refreshButton:\"刷新\",bannerTitle:\"要启用 Aspera 上传和下载,您需要安装或升级至 IBM Aspera Connect {3.9.1}。\",tryRestarting:\"或者,请尝试重新启动浏览器。\",pleaseDownload:\"请稍等。正在下载 Connect 应用安装程序...\",runInstaller:\"请运行 Connect 应用安装程序\",stepOne:\"第 1 步\",stepTwo:\"第 2 步\",stepThree:\"第 3 步\",how:\"如何?\",new:\"新的\",installAddon:\"安装附加组件\",installExtension:\"安装扩展\",enableExtension:\"启用扩展\",required:\"必要步骤\",downloadConnect:\"下载 Connect\",downloadApp:\"下载应用\",installConnect:\"安装 Connect\",upgradeConnect:\"升级 Connect\",notSupported:\"IBM Aspera Connect 不支持此浏览器。要获取受支持浏览器列表,请<a>单击此处</a>。\",previousVersion:\"尝试返回至先前版本。\"},cd={launching:\"Launching IBM Aspera Connect...\",restartBanner:\"Once IBM Aspera Connect is installed, please restart the browser.\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"Retry\",retry:\"Cannot reach Connect\",running:\"IBM Aspera Connect is running!\",alreadyInstalled:\"Already installed?\",troubleshoot:\"Troubleshoot\",refreshButton:\"Refresh\",bannerTitle:\"To enable Aspera uploads and downloads, you need to install or upgrade to IBM Aspera Connect {3.9.1}.\",tryRestarting:\"Or, try restarting the browser.\",pleaseDownload:\"Please wait. Downloading the Connect app installer...\",runInstaller:\"Please run the Connect app installer\",stepOne:\"Step 1\",stepTwo:\"Step 2\",stepThree:\"Step 3\",how:\"How?\",new:\"New\",installAddon:\"Install add-on\",installExtension:\"Install Extension\",enableExtension:\"Enable Extension\",required:\"Required Steps\",downloadConnect:\"Download Connect\",downloadApp:\"Download the App\",installConnect:\"Install Connect\",upgradeConnect:\"Upgrade Connect\",notSupported:\"This browser is not supported by IBM Aspera Connect. For a list of supported browsers, <a>click here</a>.\",previousVersion:\"Try returning to previous version.\"},fd={launching:\"Lancement d\\'IBM Aspera Connect...\",restartBanner:\"Une fois IBM Aspera Connect installé, redémarrez le navigateur.\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"Nouvelle tentative\",retry:\"Impossible d\\'atteindre Connect\",running:\"IBM Aspera Connect est en cours d\\'exécution !\",alreadyInstalled:\"Déjà installé ?\",troubleshoot:\"Traitement des incidents\",refreshButton:\"Actualiser\",bannerTitle:\"Pour activer les envois et réceptions par téléchargement d\\'Aspera, vous devez installer ou mettre à niveau IBM Aspera Connect {3.9.1}.\",tryRestarting:\"Vous pouvez aussi essayer de redémarrer le navigateur.\",pleaseDownload:\"Veuillez patienter. Téléchargement du programme d\\'installation de l\\'application Connect...\",runInstaller:\"Veuillez exécuter le programme d\\'installation de l\\'application Connect.\",stepOne:\"Etape 1\",stepTwo:\"Etape 2\",stepThree:\"Etape 3\",how:\"Comment ?\",new:\"Nouveau\",installAddon:\"Installer le module complémentaire\",installExtension:\"Installer l\\'extension\",enableExtension:\"Activer l\\'extension\",required:\"Etapes obligatoires\",downloadConnect:\"Télécharger Connect\",downloadApp:\"Télécharger l\\'application\",installConnect:\"Installer Connect\",upgradeConnect:\"Mettre à niveau Connect\",notSupported:\"Ce navigateur n\\'est pas pris en charge par IBM Aspera Connect. <a>Cliquez ici</a> pour voir la liste des navigateurs pris en charge.\",previousVersion:\"Essayez de revenir à la version précédente.\"},dd={launching:\"IBM Aspera Connect を起動しています...\",restartBanner:\"IBM Aspera Connect がインストールされたら、ブラウザーを再始動してください。\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"リトライ\",retry:\"Connect に到達できません\",running:\"IBM Aspera Connect は実行中です!\",alreadyInstalled:\"インストール済みですか?\",troubleshoot:\"トラブルシューティング\",refreshButton:\"更新\",bannerTitle:\"Aspera のアップロードとダウンロードを有効にするには、IBM Aspera Connect {3.9.1} をインストールするか、このバージョンにアップグレードする必要があります。\",tryRestarting:\"または、ブラウザーを再始動してください。\",pleaseDownload:\"お待ちください。 Connect アプリケーション・インストーラーをダウンロードしています...\",runInstaller:\"Connect アプリケーション・インストーラーを実行してください。\",stepOne:\"ステップ 1\",stepTwo:\"ステップ 2\",stepThree:\"ステップ 3\",how:\"方法\",new:\"新規\",installAddon:\"アドオンのインストール\",installExtension:\"拡張機能のインストール\",enableExtension:\"拡張機能の有効化\",required:\"必須ステップ\",downloadConnect:\"Connect のダウンロード\",downloadApp:\"アプリケーションのダウンロード\",installConnect:\"Connect のインストール\",upgradeConnect:\"Connect のアップグレード\",notSupported:\"このブラウザーは、IBM Aspera Connect でサポートされていません。 サポートされるブラウザーのリストについては、<a>ここをクリック</a>してください。\",previousVersion:\"前のバージョンに戻す\"},pd={launching:\"IBM Aspera Connect 시작 중...\",restartBanner:\"IBM Aspera Connect가 설치되면 브라우저를 다시 시작하십시오.\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"재시도\",retry:\"Connect에 연결할 수 없음\",running:\"IBM Aspera Connect가 실행 중입니다!\",alreadyInstalled:\"이미 설치하셨습니까?\",troubleshoot:\"문제점 해결\",refreshButton:\"새로 고치기\",bannerTitle:\"Aspera 업로드 및 다운로드를 사용하려면 IBM Aspera Connect {3.9.1}을 설치하거나 해당 버전으로 업그레이드해야 합니다.\",tryRestarting:\"브라우저를 다시 시작해 보십시오.\",pleaseDownload:\"잠시 기다려 주십시오. Connect 앱 설치 프로그램을 다운로드하는 중입니다...\",runInstaller:\"Connect 앱 설치 프로그램을 실행하십시오.\",stepOne:\"1단계\",stepTwo:\"2단계\",stepThree:\"3단계\",how:\"방법\",new:\"신규\",installAddon:\"추가 기능 설치\",installExtension:\"확장 기능 설치\",enableExtension:\"확장 기능 사용\",required:\"필수 단계\",downloadConnect:\"Connect 다운로드\",downloadApp:\"앱 다운로드\",installConnect:\"Connect 설치\",upgradeConnect:\"Connect 업그레이드\",notSupported:\"이 브라우저는 IBM Aspera Connect에서 지원하지 않습니다. 지원되는 브라우저 목록은 <a>여기를 클릭</a>하십시오.\",previousVersion:\"이전 버전으로 돌아가십시오.\"},md={launching:\"Iniciando IBM Aspera Connect...\",restartBanner:\"Una vez que IBM Aspera Connect esté instalada, reinicie el navegador.\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"Reintentar\",retry:\"No se puede acceder a Connect\",running:\"IBM Aspera Connect se está ejecutando\",alreadyInstalled:\"¿Ya está instalado?\",troubleshoot:\"Resolver problemas\",refreshButton:\"Renovar\",bannerTitle:\"Para habilitar las cargas y descargas de Aspera, debe instalar o actualizar IBM Aspera Connect {3.9.1}.\",tryRestarting:\"O bien, reinicie el navegador.\",pleaseDownload:\"Espere. Descargando el instalador de la aplicación Connect...\",runInstaller:\"Ejecute el instalador de la aplicación Connect\",stepOne:\"Paso 1\",stepTwo:\"Paso 2\",stepThree:\"Paso 3\",how:\"¿Cómo?\",new:\"Nuevo\",installAddon:\"Instalar el complemento\",installExtension:\"Instalar la extensión\",enableExtension:\"Habilitar la extensión\",required:\"Pasos necesarios\",downloadConnect:\"Descargar Connect\",downloadApp:\"Descargar la aplicación\",installConnect:\"Instalar Connect\",upgradeConnect:\"Actualizar Connect\",notSupported:\"Este navegador no tiene el soporte de IBM Aspera Connect. Para ver una lista de los navegadores soportados, <a>pulse aquí</a>.\",previousVersion:\"Intente volver a la versión anterior.\"},hd={launching:\"IBM Aspera Connect wordt gestart ...\",restartBanner:\"Start de browser opnieuw zodra IBM Aspera Connect geïnstalleerd is.\",restartFooter:\"Restart the browser once the upgrade is complete.\",retryButton:\"Opnieuw proberen\",retry:\"Connect is niet bereikbaar\",running:\"IBM Aspera Connect is actief!\",alreadyInstalled:\"Al geïnstalleerd?\",troubleshoot:\"Problemen oplossen\",refreshButton:\"Vernieuwen\",bannerTitle:\"Om uploads en downloads van Aspera in te schakelen, moet u IBM Aspera Connect {3.9.1} installeren of upgraden.\",tryRestarting:\"Of probeer de browser opnieuw te starten.\",pleaseDownload:\"Even geduld a.u.b. Het installatieprogramma voor de Connect-app wordt gedownload ...\",runInstaller:\"Voer het programma voor installatie van de app Connect uit\",stepOne:\"Stap 1\",stepTwo:\"Stap 2\",stepThree:\"Stap 3\",how:\"Hoe?\",new:\"Nieuw\",installAddon:\"Addon installeren\",installExtension:\"Extensie installeren\",enableExtension:\"Extensie inschakelen\",required:\"Vereiste stappen\",downloadConnect:\"Connect downloaden\",downloadApp:\"App downloaden\",installConnect:\"Connect installeren\",upgradeConnect:\"Connect upgraden\",notSupported:\"Deze browser wordt niet ondersteund door IBM Aspera Connect. Voor een lijst van ondersteunde browsers <a>klikt u hier</a>.\",previousVersion:\"Probeer terug te keren naar de vorige versie.\"},Ve={zhCN:ad,enUS:cd,frFR:fd,koKR:pd,jaJP:dd,esES:md,nlNL:hd};class gd{constructor(){this.availableLanguages={\"en-us\":{name:\"English (US)\",dictionary:Ve.enUS,code:\"en\"},\"es-es\":{name:\"Español (España)\",dictionary:Ve.esES,code:\"es\"},\"fr-fr\":{name:\"Français (France)\",dictionary:Ve.frFR,code:\"fr\"},\"ja-jp\":{name:\"日本語 (日本)\",dictionary:Ve.jaJP,code:\"ja\"},\"ko-kr\":{name:\"한국어 (대한민국)\",dictionary:Ve.koKR,code:\"ko\"},\"nl-nl\":{name:\"Dutch (Netherlands)\",dictionary:Ve.nlNL,code:\"nl\"},\"zh-cn\":{name:\"简体中文\",dictionary:Ve.zhCN,code:\"zh\"}},this.languageToUse=this.findClosestLanguage(this.getBrowserLanguage()||this.defaultLanguage()),this.currentLanguage=this.availableLanguages[this.languageToUse],this.dictionary=this.currentLanguage.dictionary}defaultLanguage(){return console.log(\"Defaulting to English (US).\"),\"en-us\"}findClosestLanguage(t){if(this.availableLanguages[t])return t;if(t){const n=t.split(\"-\")[0];return Object.keys(this.availableLanguages).filter(i=>i.indexOf(`${n}-`)>-1)[0]||this.defaultLanguage()}else return this.defaultLanguage()}get(t){if(!this.currentLanguage)return console.log(\"Dictionary not loaded.\"),t;let n=this.dictionary[t]||Ve.enUS[t];return n||(console.log(`Could not find ${t} in any language.`),\"\")}getBrowserLanguage(){if(navigator&&typeof navigator.language==\"string\")return navigator.language.toLowerCase();console.log(\"Could not detect browser language. Defaulting to English (US).\")}getCurrentLanguage(){return this.currentLanguage}getCurrentLanguageCode(){return this.currentLanguage.code}}const A=new gd;let M=typeof navigator<\"u\"?navigator.userAgent:\"\",vd=function(e,t){var n=e.match(/(?:Version)[\\\\/](\\\\d+(\\\\.\\\\d+)?)/i),r=parseInt(n&&n.length>1&&n[1]||\"0\");return r>=t},hu=function(e,t){var n=e.match(/(?:Edge)[\\\\/](\\\\d+(\\\\.\\\\d+)?)/i),r=parseInt(n&&n.length>1&&n[1]||\"0\");return r>=t},gu=function(e,t){var n=e.match(/(?:Firefox)[\\\\/](\\\\d+(\\\\.\\\\d+)?)/i),r=parseInt(n&&n.length>1&&n[1]||\"0\");return r>=t};const Ne={CLICKED_DOWNLOAD_APP:\"clicked_download_app\",CLICKED_ENABLE_EXTENSION:\"clicked_enable_extension\",CLICKED_INSTALL_ADDON:\"clicked_install_addon\",CLICKED_INSTALL_APP:\"clicked_install_app\",CLICKED_INSTALL_EXTENSION:\"clicked_install_extension\",CLICKED_TROUBLESHOOT:\"clicked_troubleshoot\",CONNECT_BAR_VISIBLE:\"connect_bar_visible\",CONTINUE:\"continue\",DOWNLOAD_CONNECT:\"downloadconnect\",DOWNLOAD_INDICATOR_VISIBLE:\"download_indicator_visible\",REFRESH:\"refresh\",REMOVE_IFRAME:\"removeiframe\",RESIZE:\"100%\",SAFARI_MITIGATE:\"mitigate_with_tab\"},j={OPERA:/opera|opr/i.test(M)&&!/edge/i.test(M),IE:/msie|trident/i.test(M)&&!/edge/i.test(M),CHROME:/chrome|crios|crmo/i.test(M)&&!/opera|opr/i.test(M)&&!/edge/i.test(M),FIREFOX:/firefox|iceweasel/i.test(M)&&!/edge/i.test(M)&&gu(M,50),FIREFOX_LEGACY:/firefox|iceweasel/i.test(M)&&!/edge/i.test(M)&&!gu(M,50),EDGE_CHROMIUM:/edg/i.test(M)&&!/edge/i.test(M),EDGE_WITH_EXTENSION:/edge/i.test(M)&&hu(M,14),EDGE_LEGACY:/edge/i.test(M)&&!hu(M,14),SAFARI:/safari/i.test(M)&&!/chrome|crios|crmo/i.test(M)&&!/edge/i.test(M),SAFARI_NO_NPAPI:/safari/i.test(M)&&!/chrome|crios|crmo/i.test(M)&&!/edge/i.test(M)&&vd(M,10)},lo=j.SAFARI||j.IE||j.EDGE_LEGACY||j.FIREFOX_LEGACY,Mt=!lo;let Dr={};function yd(){let e=\"\";return window&&window.btoa&&Object.keys(Dr).map(function(t,n){let r=Dr[t];return e+=(n===0?\"?\":\"&\")+t+\"=\"+window.btoa(r),console.log(\"getQueryString(): \",e),e}),e}function wd(){let e;return/Win/.test(navigator.platform)?e=\"windows\":/Mac OS X 10[._]6/.test(navigator.userAgent)||/Mac/.test(navigator.platform)?e=\"macos\":(/Linux x86_64/.test(navigator.platform)||/Linux/.test(navigator.platform))&&(e=\"linux\"),e}function Fa(){return wd()===\"windows\"}function Da(){let e=\"https://test-connect.ibmaspera.com\",t=yd();return t&&(e+=t),e}function za(e){let t=window.open(e,\"_blank\");t&&t.focus()}function xd(){lt(Ne.REMOVE_IFRAME)}function Ed(){lt(Ne.CONNECT_BAR_VISIBLE)}function Cd(){lt(Ne.CLICKED_DOWNLOAD_APP)}function lt(e){e&&kd(e)}function Td(){let e;j.CHROME||j.EDGE_WITH_EXTENSION?e=Ne.CLICKED_INSTALL_EXTENSION:j.FIREFOX?e=Ne.CLICKED_INSTALL_ADDON:(j.IE||j.SAFARI)&&(e=Ne.CLICKED_ENABLE_EXTENSION),lt(e)}function kd(e){window.parent.postMessage(e,\"*\")}function Ba(){lt(Ne.REFRESH)}function _d(){lt(Ne.RESIZE)}function Sd(){lt(Ne.SAFARI_MITIGATE)}function Nd(){lt(Ne.CLICKED_TROUBLESHOOT)}function Pd(e){Dr.id=e}function Id(e){Dr.ver=e}function Ua(){Nd();let e=Da();return za(e),!1}const Ld=\"_checkmark_1e6df_1\",Od=\"_visible_1e6df_9 _checkmark_1e6df_1\",Rd=\"_hidden_1e6df_14 _checkmark_1e6df_1\",vu={checkmark:Ld,visible:Od,hidden:Rd},yu=({isVisible:e})=>y.jsx(\"span\",{className:e?vu.visible:vu.hidden,children:y.jsxs(\"svg\",{width:\"18px\",height:\"18px\",viewBox:\"0 0 18 18\",version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",children:[y.jsxs(\"defs\",{children:[y.jsx(\"circle\",{id:\"path-1\",cx:\"10\",cy:\"10\",r:\"8.75\"}),y.jsx(\"polygon\",{id:\"path-3\",points:\"8.75 13.4375 5.625 10.3125 6.61875 9.375 8.75 11.46875 13.38125 6.875 14.375 7.8625\"})]}),y.jsx(\"g\",{id:\"Extension-Experience\",stroke:\"none\",strokeWidth:\"1\",fill:\"none\",fillRule:\"evenodd\",children:y.jsx(\"g\",{id:\"Welcome-1-Copy-46\",transform:\"translate(-556.000000, -188.000000)\",children:y.jsxs(\"g\",{id:\"icon/status/checkmark/filled/20\",transform:\"translate(555.000000, 187.000000)\",children:[y.jsx(\"mask\",{id:\"mask-2\",fill:\"white\",children:y.jsx(\"use\",{xlinkHref:\"#path-1\"})}),y.jsx(\"use\",{id:\"icon-color\",fill:\"#24A148\",fillRule:\"evenodd\",xlinkHref:\"#path-1\"}),y.jsx(\"mask\",{id:\"mask-4\",fill:\"white\",children:y.jsx(\"use\",{xlinkHref:\"#path-3\"})}),y.jsx(\"use\",{id:\"icon-color\",fill:\"#FFFFFF\",fillRule:\"evenodd\",xlinkHref:\"#path-3\"})]})})})]})}),jd=\"_notActive_2texh_1\",Md=\"_active_2texh_1\",wu={notActive:jd,active:Md},Va=({children:e,disabled:t,href:n,...r})=>{const l={className:t?wu.notActive:wu.active};let o={...r};return y.jsx(\"div\",{...l,children:y.jsx(\"a\",{...o,href:n,children:e})})},xu=({href:e,isActive:t=!1,isOutdated:n=!1,setState:r})=>{let i=n?A.get(\"upgradeConnect\"):A.get(\"installConnect\");const l=()=>{if(Cd(),t&&r&&lo){let o=4e3;if(j.SAFARI){if(n)return;o=3e4}r(\"extension_install\",o)}};return y.jsx(Va,{onClick:l,href:e,download:\"\",disabled:!t,children:i})},Ad=\"_pictograms_17gjx_1\",Fd=\"_downloadBox_17gjx_10\",Dd=\"_puzzle_17gjx_16\",zd={pictograms:Ad,downloadBox:Fd,puzzle:Dd},$a=()=>y.jsx(\"svg\",{className:\"downloadBox\",width:\"32px\",height:\"32px\",viewBox:\"0 0 32 32\",version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",children:y.jsx(\"g\",{id:\"Extension-Experience\",stroke:\"none\",strokeWidth:\"1\",fill:\"none\",fillRule:\"evenodd\",children:y.jsx(\"g\",{id:\"Welcome-1-Copy-45\",transform:\"translate(-644.000000, -249.000000)\",fill:\"#152935\",children:y.jsx(\"g\",{id:\"Fill-5\",transform:\"translate(644.000000, 249.000000)\",children:y.jsx(\"path\",{d:\"M15.6251042,24.0943322 L15.6251042,0 L16.3751042,0 L16.3751042,24.0940625 L22.3635417,18.105625 L22.89375,18.6358333 L16,25.530625 L9.10520833,18.6358333 L9.63541667,18.105625 L15.6251042,24.0943322 Z M31.625,31.625 L0.375,31.625 C0.167708333,31.625 0,31.4572917 0,31.25 L0,9.375 C0,9.16770833 0.167708333,9 0.375,9 L8.70833333,9 L8.70833333,9.75 L0.75,9.75 L0.75,30.875 L31.25,30.875 L31.25,9.75 L23.2916667,9.75 L23.2916667,9 L31.625,9 C31.8322917,9 32,9.16770833 32,9.375 L32,31.25 C32,31.4572917 31.8322917,31.625 31.625,31.625 Z\",id:\"Fill-2\"})})})})}),Wa=()=>y.jsx(\"svg\",{className:\"puzzle\",width:\"32px\",height:\"32px\",viewBox:\"0 0 32 32\",version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",children:y.jsx(\"g\",{id:\"Extension-Experience\",stroke:\"none\",strokeWidth:\"1\",fill:\"none\",fillRule:\"evenodd\",children:y.jsx(\"g\",{id:\"Welcome-1-Copy-45\",transform:\"translate(-644.000000, -181.000000)\",fill:\"#152935\",children:y.jsx(\"path\",{d:\"M673.53125,204.981753 C672.963542,204.981753 672.407292,204.651222 672.080208,204.11841 C672.0125,204.006843 671.890625,203.939068 671.760417,203.939068 L671.458333,203.939068 C671.252083,203.939068 671.083333,204.10694 671.083333,204.314435 L671.083333,208.109808 L664.166667,208.109808 C663.960417,208.109808 663.791667,208.27768 663.791667,208.485174 L663.791667,208.724992 C663.791667,208.862626 663.866667,208.988791 663.986458,209.053438 C664.534375,209.354774 664.875,209.92408 664.875,210.539264 C664.875,211.481851 664.109375,212.249267 663.166667,212.249267 C662.225,212.249267 661.458333,211.481851 661.458333,210.539264 C661.458333,209.95536 661.772917,209.397524 662.280208,209.086804 C662.390625,209.017986 662.458333,208.897035 662.458333,208.766699 L662.458333,208.485174 C662.458333,208.27768 662.290625,208.109808 662.083333,208.109808 L658.291667,208.109808 L658.291667,205.011991 C658.753125,205.466601 659.364583,205.733529 659.992708,205.733529 C661.352083,205.733529 662.458333,204.629326 662.458333,203.27175 C662.458333,201.915217 661.352083,200.811013 659.992708,200.811013 C659.335417,200.811013 658.736458,201.048746 658.291667,201.465819 L658.291667,197.39205 L671.083333,197.39205 L671.083333,202.229065 C671.083333,202.437602 671.252083,202.605474 671.458333,202.605474 L671.708333,202.605474 C671.844792,202.605474 671.970833,202.529358 672.036458,202.409449 C672.328125,201.878723 672.886458,201.562789 673.53125,201.562789 C674.479167,201.562789 675.25,202.329163 675.25,203.27175 C675.25,204.21538 674.479167,204.981753 673.53125,204.981753 Z M649.625,203.939068 C648.269792,203.939068 647.166667,205.043271 647.166667,206.399804 C647.166667,207.05044 647.419792,207.657283 647.863542,208.109808 L644.75,208.109808 L644.75,197.39205 L648.541667,197.39205 C648.748958,197.39205 648.916667,197.224177 648.916667,197.01564 L648.916667,196.70492 C648.916667,196.574585 648.848958,196.45259 648.7375,196.384816 C648.223958,196.068882 647.916667,195.525644 647.916667,194.93027 C647.916667,193.987683 648.683333,193.22131 649.625,193.22131 C650.566667,193.22131 651.333333,193.987683 651.333333,194.93027 C651.333333,195.546497 650.992708,196.116846 650.44375,196.420267 C650.325,196.486999 650.25,196.613164 650.25,196.748713 L650.25,197.01564 C650.25,197.224177 650.41875,197.39205 650.625,197.39205 L657.541667,197.39205 L657.541667,202.229065 C657.541667,202.437602 657.710417,202.605474 657.916667,202.605474 L658.16875,202.605474 C658.305208,202.605474 658.43125,202.530401 658.496875,202.411535 C658.791667,201.878723 659.35,201.562789 659.992708,201.562789 C660.938542,201.562789 661.708333,202.329163 661.708333,203.27175 C661.708333,204.21538 660.938542,204.981753 659.992708,204.981753 C659.419792,204.981753 658.860417,204.651222 658.533333,204.11841 C658.465625,204.006843 658.34375,203.939068 658.213542,203.939068 L657.916667,203.939068 C657.710417,203.939068 657.541667,204.10694 657.541667,204.314435 L657.541667,208.109808 L651.38125,208.109808 C651.825,207.657283 652.083333,207.045226 652.083333,206.399804 C652.083333,205.043271 650.980208,203.939068 649.625,203.939068 Z M644.75,185.922515 L648.541667,185.922515 C648.748958,185.922515 648.916667,185.754643 648.916667,185.546106 L648.916667,185.234343 C648.916667,185.104008 648.848958,184.982014 648.738542,184.914239 C648.23125,184.602476 647.916667,184.045683 647.916667,183.460736 C647.916667,182.518149 648.683333,181.751776 649.625,181.751776 C650.567708,181.751776 651.333333,182.518149 651.333333,183.460736 C651.333333,184.07592 650.992708,184.645226 650.444792,184.946562 C650.325,185.013294 650.25,185.139459 650.25,185.276051 L650.25,185.546106 C650.25,185.754643 650.41875,185.922515 650.625,185.922515 L657.541667,185.922515 L657.541667,190.759531 C657.541667,190.968068 657.710417,191.13594 657.916667,191.13594 L658.166667,191.13594 C658.303125,191.13594 658.429167,191.059824 658.494792,190.939915 C658.786458,190.409189 659.344792,190.093255 659.989583,190.093255 C660.9375,190.093255 661.708333,190.859629 661.708333,191.802216 C661.708333,192.745846 660.9375,193.512219 659.989583,193.512219 C659.421875,193.512219 658.865625,193.181688 658.538542,192.648876 C658.470833,192.537309 658.348958,192.469534 658.21875,192.469534 L657.916667,192.469534 C657.710417,192.469534 657.541667,192.637406 657.541667,192.844901 L657.541667,196.640274 L651.38125,196.640274 C651.825,196.187748 652.083333,195.575692 652.083333,194.93027 C652.083333,193.573737 650.980208,192.469534 649.625,192.469534 C648.269792,192.469534 647.166667,193.573737 647.166667,194.93027 C647.166667,195.580906 647.419792,196.187748 647.863542,196.640274 L644.75,196.640274 L644.75,185.922515 Z M662.083333,185.922515 C662.290625,185.922515 662.458333,185.754643 662.458333,185.546106 L662.458333,185.234343 C662.458333,185.104008 662.390625,184.982014 662.280208,184.914239 C661.772917,184.602476 661.458333,184.045683 661.458333,183.460736 C661.458333,182.518149 662.225,181.751776 663.166667,181.751776 C664.109375,181.751776 664.875,182.518149 664.875,183.460736 C664.875,184.07592 664.534375,184.645226 663.986458,184.946562 C663.866667,185.013294 663.791667,185.139459 663.791667,185.276051 L663.791667,185.546106 C663.791667,185.754643 663.960417,185.922515 664.166667,185.922515 L671.083333,185.922515 L671.083333,189.997328 C670.638542,189.58234 670.033333,189.341479 669.385417,189.341479 C668.023958,189.341479 666.916667,190.445683 666.916667,191.802216 C666.916667,193.159791 668.023958,194.263995 669.385417,194.263995 C670.00625,194.263995 670.617708,193.996025 671.083333,193.540371 L671.083333,196.640274 L658.291667,196.640274 L658.291667,193.537243 C658.752083,193.994982 659.363542,194.263995 659.989583,194.263995 C661.351042,194.263995 662.458333,193.159791 662.458333,191.802216 C662.458333,190.445683 661.351042,189.341479 659.989583,189.341479 C659.341667,189.341479 658.7375,189.58234 658.291667,189.997328 L658.291667,185.922515 L662.083333,185.922515 Z M673.53125,200.811013 C672.883333,200.811013 672.279167,201.051874 671.833333,201.466862 L671.833333,197.01564 L671.833333,192.844901 C671.833333,192.637406 671.665625,192.469534 671.458333,192.469534 L671.166667,192.469534 C671.038542,192.469534 670.91875,192.535223 670.85,192.644705 C670.511458,193.180645 669.95,193.512219 669.385417,193.512219 C668.4375,193.512219 667.666667,192.745846 667.666667,191.802216 C667.666667,190.859629 668.4375,190.093255 669.385417,190.093255 C670.030208,190.093255 670.588542,190.409189 670.879167,190.939915 C670.945833,191.059824 671.071875,191.13594 671.208333,191.13594 L671.458333,191.13594 C671.665625,191.13594 671.833333,190.968068 671.833333,190.759531 L671.833333,185.546106 C671.833333,185.338612 671.665625,185.17074 671.458333,185.17074 L664.920833,185.17074 C665.365625,184.719257 665.625,184.107201 665.625,183.460736 C665.625,182.104203 664.522917,181 663.166667,181 C661.811458,181 660.708333,182.104203 660.708333,183.460736 C660.708333,184.100945 660.967708,184.715086 661.410417,185.17074 L657.916667,185.17074 L651.379167,185.17074 C651.823958,184.719257 652.083333,184.107201 652.083333,183.460736 C652.083333,182.104203 650.98125,181 649.625,181 C648.269792,181 647.166667,182.104203 647.166667,183.460736 C647.166667,184.100945 647.426042,184.715086 647.86875,185.17074 L644.375,185.17074 C644.16875,185.17074 644,185.338612 644,185.546106 L644,197.01564 L644,208.485174 C644,208.693711 644.16875,208.861584 644.375,208.861584 L648.541667,208.861584 C648.748958,208.861584 648.916667,208.693711 648.916667,208.485174 L648.916667,208.174454 C648.916667,208.044119 648.848958,207.922124 648.7375,207.85435 C648.223958,207.538416 647.916667,206.995178 647.916667,206.399804 C647.916667,205.457217 648.683333,204.690844 649.625,204.690844 C650.566667,204.690844 651.333333,205.457217 651.333333,206.399804 C651.333333,207.016031 650.992708,207.58638 650.44375,207.889801 C650.325,207.956533 650.25,208.082698 650.25,208.218247 L650.25,208.485174 C650.25,208.693711 650.41875,208.861584 650.625,208.861584 L657.916667,208.861584 L661.380208,208.861584 C660.95625,209.313066 660.708333,209.914695 660.708333,210.539264 C660.708333,211.896839 661.811458,213 663.166667,213 C664.522917,213 665.625,211.896839 665.625,210.539264 C665.625,209.907397 665.378125,209.308895 664.952083,208.861584 L671.458333,208.861584 C671.665625,208.861584 671.833333,208.693711 671.833333,208.485174 L671.833333,205.006777 C672.294792,205.464516 672.905208,205.733529 673.53125,205.733529 C674.892708,205.733529 676,204.629326 676,203.27175 C676,201.915217 674.892708,200.811013 673.53125,200.811013 Z\",id:\"Fill-1\"})})})}),Bd={one:Wa,two:$a},Ud={one:$a,two:Wa},Vd=Mt?Bd:Ud,Eu=({step:e})=>{const t=Vd[e];return y.jsx(\"span\",{className:zd.pictograms,children:y.jsx(t,{})})},$d=\"_link_na21z_1\",Wd=\"_footer_na21z_15\",Hd=\"_spacing_na21z_30\",Gn={link:$d,footer:Wd,spacing:Hd},Qd=({isOutdated:e})=>{let t,n,r;if(j.SAFARI){let i=A.get(\"tryRestarting\");e&&(i=A.get(\"restartFooter\")),t=y.jsx(\"div\",{children:i})}else Fa()&&e&&(t=y.jsx(\"div\",{children:A.get(\"restartFooter\")}));return e||(n=y.jsx(\"button\",{className:Gn.link,type:\"button\",onClick:()=>{Ba()},children:A.get(\"refreshButton\")}),r=y.jsx(\"span\",{className:Gn.spacing,children:\"/\"})),y.jsxs(\"div\",{className:Gn.footer,children:[y.jsx(\"span\",{style:{marginRight:\"3px\"},children:A.get(\"alreadyInstalled\")}),n,r,y.jsx(\"button\",{className:Gn.link,type:\"button\",onClick:()=>{Ua()},children:A.get(\"troubleshoot\")}),t]})};let Kd=()=>{let e=A.get(\"installExtension\");return j.IE||j.SAFARI?e=A.get(\"enableExtension\"):j.FIREFOX&&(e=A.get(\"installAddon\")),e},Xd=()=>j.FIREFOX===!0?\"https://addons.mozilla.org/en-US/firefox/addon/ibm-aspera-connect\":j.EDGE_WITH_EXTENSION===!0?\"ms-windows-store://pdp/?productid=9N6XL57H8BMG\":j.EDGE_CHROMIUM===!0?\"https://microsoftedge.microsoft.com/addons/detail/ibm-aspera-connect/kbffkbiljjejklcpnfmoiaehplhcifki\":j.CHROME===!0?\"https://chrome.google.com/webstore/detail/ibm-aspera-connect/kpoecbkildamnnchnlgoboipnblgikpn\":\"\",Yd=()=>{Td();let e=Xd();e&&za(e),j.SAFARI?Gd():j.IE&&Ba()},Gd=()=>{let e=document.createElement(\"IFRAME\");e.src=\"fasp://initialize?checkextensions\",e.style.visibility=\"hidden\",e.style.position=\"absolute\",e.style.width=\"0px\",e.style.height=\"0px\",e.style.border=\"0px\",document.body.appendChild(e)};const Cu=({isActive:e=!1})=>{let t=Kd();return y.jsx(Va,{target:\"_blank\",onClick:Yd,disabled:!e,children:t})},Zd=\"_banner_wvb4m_1\",Jd=\"_howText_wvb4m_11\",qd=\"_newText_wvb4m_28\",bd=\"_required_wvb4m_44\",ep=\"_step_wvb4m_60\",tp=\"_stepContainer_wvb4m_81\",np=\"_stepOne_wvb4m_88 _stepContainer_wvb4m_81\",rp=\"_stepText_wvb4m_94\",ip=\"_stepNewText_wvb4m_108 _stepText_wvb4m_94\",lp=\"_title_wvb4m_113\",op=\"_tooltip_wvb4m_129\",pe={banner:Zd,howText:Jd,newText:qd,required:bd,step:ep,stepContainer:tp,stepOne:np,stepText:rp,stepNewText:ip,title:lp,tooltip:op};class up extends zr.Component{constructor(t){super(t),this.setStateCallback=this.setStateCallback.bind(this)}componentWillUnmount(){this.stateChangeTimer&&clearTimeout(this.stateChangeTimer)}setStateCallback(t,n){n?!this.stateChangeTimer&&t&&(this.stateChangeTimer=window.setTimeout(()=>{this.props.currentState!==t&&this.props.changeState(t),this.stateChangeTimer=void 0},n)):this.props.changeState(t)}getAllButtons(){return Mt?[y.jsx(Cu,{isActive:this.props.currentState===\"extension_install\"}),y.jsx(xu,{href:this.props.href,isOutdated:this.props.isOutdated,setState:this.setStateCallback,isActive:this.props.currentState===\"install\"})]:[y.jsx(xu,{href:this.props.href,isOutdated:this.props.isOutdated,setState:this.setStateCallback,isActive:this.props.currentState===\"install\"}),y.jsx(Cu,{isActive:this.props.currentState===\"extension_install\"})]}shouldActivateCheckmark(t){if(t!==\"one\")return!1;switch(this.props.currentState){case\"running_with_green_checkmarks\":return!0;case\"extension_install\":return lo;case\"install\":return Mt;default:return!1}}render(){let t=A.get(\"bannerTitle\");(Fa()&&this.props.isOutdated||j.SAFARI)&&(t=A.get(\"restartBanner\")),this.props.majorVersion&&(t=t.replace(/{.*}/,this.props.majorVersion));let[n,r]=this.getAllButtons(),i=y.jsx(\"span\",{className:pe.newText,children:A.get(\"new\")});this.props.currentState!==\"running_with_green_checkmarks\"&&(_d(),Ed());const l=j.SAFARI&&this.props.isOutdated;return y.jsxs(\"div\",{id:\"three-step\",className:pe.banner,children:[y.jsx(\"div\",{className:pe.required,children:A.get(\"required\")}),y.jsx(\"div\",{className:pe.title,children:t}),y.jsxs(\"div\",{id:\"step-one\",className:pe.stepOne,children:[y.jsx(yu,{isVisible:this.shouldActivateCheckmark(\"one\")}),l?null:y.jsxs(\"div\",{className:pe.step,children:[Mt?i:null,y.jsx(\"span\",{className:Mt?pe.stepNewText:pe.stepText,children:A.get(\"stepOne\")})]}),y.jsx(Eu,{step:\"one\"}),n]}),l?null:y.jsxs(\"div\",{id:\"step-two\",className:pe.stepContainer,children:[y.jsx(yu,{isVisible:this.shouldActivateCheckmark(\"two\")}),y.jsxs(\"div\",{className:pe.step,children:[j.SAFARI?i:null,y.jsx(\"span\",{className:j.SAFARI?pe.stepNewText:pe.stepText,children:A.get(\"stepTwo\")})]}),y.jsx(Eu,{step:\"two\"}),r]}),y.jsx(Qd,{isOutdated:this.props.isOutdated})]})}}const sp=\"_message_mg4mm_1\",ap=\"_text_mg4mm_12\",cp=\"_unsupported_mg4mm_23 _text_mg4mm_12\",fp=\"_troubleshootLink_mg4mm_35\",dp=\"_retry_mg4mm_48\",pp=\"_mitigateText_mg4mm_79\",Ae={message:sp,text:ap,unsupported:cp,troubleshootLink:fp,retry:dp,mitigateText:pp};let mp=()=>y.jsxs(\"div\",{className:Ae.message,children:[y.jsx(\"span\",{className:`${Ae.text} ${Ae.mitigateText}`,children:A.get(\"retry\")}),y.jsx(\"button\",{className:Ae.retry,type:\"button\",onClick:()=>{Sd()},children:A.get(\"retryButton\")}),y.jsx(\"button\",{className:Ae.troubleshootLink,type:\"button\",onClick:()=>{Ua()},children:A.get(\"troubleshoot\")})]}),hp=()=>{let e=A.get(\"notSupported\"),t=Da();e=e.replace(/<a>/,`<a href=\"${t}\" target=\"_blank\">`);let n={__html:e};return y.jsx(\"div\",{className:Ae.message,children:y.jsx(\"span\",{className:Ae.unsupported,dangerouslySetInnerHTML:n})})};const gp=({currentState:e})=>{if(e===\"safari_mitigate\")return mp();if(e===\"unsupported_browser\")return hp();let t=e===\"running\"?A.get(\"running\"):A.get(\"launching\");return y.jsx(\"div\",{className:Ae.message,children:y.jsx(\"span\",{className:Ae.text,children:t})})},vp=\"_close_1o8j5_1\",yp=\"_logo_1o8j5_20\",wp=\"_statusBanner_1o8j5_30\",xp=\"_bump_1o8j5_1\",gi={close:vp,logo:yp,statusBanner:wp,bump:xp},Ep=[\"launching\",\"running\",\"update\",\"retry\",\"extension_install\",\"download\",\"install\",\"unsupported_browser\",\"safari_mitigate\",\"previous\"];class Cp extends zr.Component{constructor(t){super(t),this.isDownloadRecent=!1,this.isOutdated=!1,this.state={banner:\"launching\",href:void 0,majorVersion:void 0,correlationId:void 0,sdkVersion:void 0}}componentDidMount(){window.addEventListener(\"message\",this.handleMessage.bind(this))}changeState(t){this.setState({banner:t})}handleMessage(t){let n=t.data.toString();if(/downloadlink/.test(n)){let r=n.split(\"=\")[1];this.href=r,this.setState({href:r})}else if(/downloadVersion/.test(n)){let i=n.substring(n.indexOf(\"=\")+1).replace(/\\\\.\\\\d+$/,\"\");this.setState({majorVersion:i})}else if(/downloadTimestamp/.test(n)){let r=n.substring(n.indexOf(\"=\")+1);Date.now()-Number(r)<3e5&&(this.isDownloadRecent=!0)}else if(/correlationId/.test(n)){let r=n.substring(n.indexOf(\"=\")+1);Pd(r)}else if(/sdkVersion/.test(n)){let r=n.substring(n.indexOf(\"=\")+1);Id(r)}Ep.indexOf(n)!==-1&&this.setState(r=>r.banner===\"unsupported_browser\"&&n!==\"running\"?this.state:(n===\"previous\"&&(r.banner?n=r.banner:j.SAFARI||j.IE?n=\"download\":n=\"extension_install\"),n===\"retry\"&&(n=\"download\"),n===\"download\"&&this.isDownloadRecent&&(console.log(\"Recent downloaded detected!\"),(j.SAFARI||j.IE)&&(n=\"extension_install\")),n===\"running\"&&r.banner===\"install\"&&Mt&&(console.log(\"Showing all checkmarks!\"),n=\"running_with_green_checkmarks\"),n===\"update\"&&(this.isOutdated=!0,n=\"install\"),n===\"download\"&&(n=\"install\"),{banner:n}))}renderBanner(){console.log(`rendering state: ${this.state.banner}`);let t=y.jsx(up,{currentState:this.state.banner,href:this.state.href,majorVersion:this.state.majorVersion,isOutdated:this.isOutdated,changeState:this.changeState.bind(this)});return this.useStatusBanner()?y.jsx(gp,{currentState:this.state.banner}):t}useStatusBanner(){return[\"launching\",\"running\",\"unsupported_browser\",\"safari_mitigate\"].indexOf(this.state.banner)>-1}render(){return y.jsxs(\"div\",{lang:A.getCurrentLanguageCode(),children:[y.jsxs(\"div\",{className:gi.statusBanner,children:[y.jsx(\"button\",{className:gi.close,type:\"button\",onClick:()=>{xd()},children:\"x\"}),this.useStatusBanner()?y.jsx(\"div\",{className:gi.logo}):null,this.renderBanner()]}),y.jsx(\"div\",{id:\"indicator\"})]})}}sd.render(y.jsx(Cp,{}),document.getElementById(\"aspera-connect-ui-root\"));</script> <style>@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local(\"IBM Plex Sans\"),local(\"IBMPlexSans\"),url(~@ibm/plex/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin1.woff2) format(\"woff2\");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local(\"IBM Plex Sans SemiBold\"),local(\"IBMPlexSans-SemiBold\"),url(~@ibm/plex/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin1.woff2) format(\"woff2\");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}body{margin:0;padding:0;font-weight:400;overflow-y:hidden;height:100%}body,button{font-family:IBM Plex Sans,Open-Sans,Helvetica Neue,Arial,sans-serif}@-moz-document url-prefix(){#extension-button:lang(fr){font-size:.8em;white-space:normal;line-height:13px}}._checkmark_1e6df_1{margin-left:110px;height:18px;width:18px;vertical-align:middle;display:inline-block}._visible_1e6df_9{visibility:visible}._hidden_1e6df_14{visibility:hidden}._notActive_2texh_1,._active_2texh_1{margin-left:39px;background-color:#fff;vertical-align:middle;display:inline-block}._active_2texh_1{border:solid 1px #3d70b2;width:180px;height:30px}._notActive_2texh_1{opacity:.5;border:solid 2px #3d70b2;width:178px;height:28px}._notActive_2texh_1 a,._active_2texh_1 a{height:26px;margin:2px;border:none;font-size:14px;font-weight:600;font-style:normal;font-stretch:normal;line-height:26px;letter-spacing:normal;text-align:center;vertical-align:middle;text-decoration:none;cursor:pointer;display:inline-block}._notActive_2texh_1 a:lang(ja),._active_2texh_1 a:lang(ja){font-size:.7em}._active_2texh_1 a{background-color:#3d70b2;color:#fff;width:176px}._notActive_2texh_1 a{background-color:#fff;color:#3d70b2;width:173px}._pictograms_17gjx_1{height:32px;width:32px;position:relative;margin-left:18px;vertical-align:middle;display:inline-block}._downloadBox_17gjx_10,._puzzle_17gjx_16{display:inline;width:32px;height:32px}._link_na21z_1{color:#3d70b2;font-weight:600;font-size:12px;padding:0;text-decoration:none;display:inline-block;background-color:transparent;background-repeat:no-repeat;border:none;cursor:pointer;outline:none}._footer_na21z_15{margin-top:40px;margin-bottom:52px;height:15px;text-decoration:none;font-size:12px;font-weight:400;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:#152935;text-align:center}._spacing_na21z_30{margin-right:3px;margin-left:3px}._banner_wvb4m_1{background-color:#fff;height:100%;overflow:hidden;position:relative;width:600px;margin:0 auto;display:inline-block}._howText_wvb4m_11{display:inline-block;overflow:visible;position:relative;cursor:pointer;margin-left:10px;width:37px;height:18px;font-size:14px;font-weight:600;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:#3d70b2}._newText_wvb4m_28{vertical-align:middle;float:left;clear:left;margin-top:-5px;margin-left:0;margin-bottom:7px;font-size:10px;font-weight:600;font-style:normal;font-stretch:normal;line-height:1;letter-spacing:normal;color:#5596e6}._required_wvb4m_44{display:block;position:relative;line-height:32px;margin-top:34px;margin-left:48px;width:504px;font-size:24px;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.33;letter-spacing:normal;color:#152935}._step_wvb4m_60{height:32px;position:relative;margin-left:17px;width:41px;font-size:14px;font-weight:400;font-style:normal;font-stretch:normal;line-height:32px;letter-spacing:normal;text-align:center;vertical-align:middle;color:#5a6872;display:inline-block}._step_wvb4m_60:lang(ja){margin-right:20px}._stepContainer_wvb4m_81{position:relative;white-space:nowrap;vertical-align:middle;margin-top:32px}._stepOne_wvb4m_88{margin-top:19px;padding-top:5px}._stepText_wvb4m_94{float:left;font-size:14px;font-weight:400;font-style:normal;font-stretch:normal;letter-spacing:normal;text-align:center;vertical-align:middle;color:#5a6872;display:inline-block}._stepNewText_wvb4m_108{line-height:1}._title_wvb4m_113{display:block;position:relative;width:450px;height:50px;font-size:16px;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.5;letter-spacing:normal;color:#152935;margin-top:9px;margin-left:48px}._tooltip_wvb4m_129 img{display:none;width:600px;position:relative;left:50%;margin-left:-200px;margin-top:20px;border:1px solid #344766}._tooltip_wvb4m_129:hover img{display:block;position:fixed;text-decoration:none}._message_mg4mm_1{line-height:24px;vertical-align:top;width:90%;height:100%;position:absolute;left:0;padding-left:10%;display:inline-block}._text_mg4mm_12{width:55%;display:inline-flex;height:100%;text-align:left;line-height:1.5;vertical-align:middle;align-items:center;justify-content:center}._unsupported_mg4mm_23{width:90%;display:inline-block;margin-top:15px;font-size:14px}._unsupported_mg4mm_23 a{color:#3d70b2;text-decoration:none}._troubleshootLink_mg4mm_35{color:#3d70b2;font-weight:600;text-decoration:none;display:inline-block;font-size:.9em;background-color:transparent;background-repeat:no-repeat;border:none;cursor:pointer;outline:none}._retry_mg4mm_48{text-decoration:none;color:#3d70b2;padding:7px 18px;border:2px solid rgb(61,112,178);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:50px;font-size:14px;display:inline-block;vertical-align:middle;margin-right:1em;background-color:transparent;background-repeat:no-repeat;cursor:pointer;outline:none}._retry_mg4mm_48:hover{color:#fff;border:2px solid #3d70b2;background-color:#30588c}._retry_mg4mm_48:active{color:#00b2ef;border:1px solid #3d70b2;background-color:#3d70b2}._mitigateText_mg4mm_79{width:45%}._mitigateText_mg4mm_79:lang(nl){width:40%}._mitigateText_mg4mm_79:lang(fr){width:32%}._close_1o8j5_1{display:inline-block;position:relative;float:right;overflow:hidden;margin-right:16px;margin-top:16px;width:12px;height:14px;font-size:12px;z-index:10;color:#8c9ba5;background-color:transparent;background-repeat:no-repeat;border:none;cursor:pointer;outline:none}._logo_1o8j5_20{width:32px;height:32px;margin:24px 0 24px 20px;background-repeat:no-repeat;background-position:center;display:inline-block;background-image:url(data:image/png;base64,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)}._statusBanner_1o8j5_30{background-color:#fff;height:99%;overflow:hidden;position:relative;max-width:600px;margin:0 auto;border-top:4px solid #3D70B2;box-shadow:0 12px 24px #0000001a;animation-name:_bump_1o8j5_1;animation-duration:.8s;animation-iteration-count:1;transform-origin:center top}</style> </head> <body> <div id=\"aspera-connect-ui-root\" class=\"small-window\"></div> </body></html>';","import { __awaiter, __generator } from \"tslib\";\nimport BROWSER from '../../../helpers/browser';\nimport { STATUS } from '../../../constants';\nimport { Logger } from '../../../logger';\nimport { isNullOrUndefinedOrEmpty, isError, createError, versionLessThan, parseJson, generatePromiseData } from '../../../utils';\nfunction mimeType() {\n return 'application/x-aspera-web';\n}\nvar NpapiStrategy = /** @class */ (function () {\n function NpapiStrategy(options) {\n var _this = this;\n this.options = options;\n this.VERSION_PREFIX = '/v5';\n this.pluginId = '';\n this.listenerId = '';\n this.name = 'npapi';\n /*\n * Create the NPAPI plugin <object> element as a child of the DOM element\n * given (if exists)\n *\n * @param {string} initializeTimeout [[AW4.Connect]] instantiation option\n */\n this.createNPAPIPlugin = function (initializeTimeout) {\n var wrapperDiv = document.getElementById(_this.listenerId);\n if (isNullOrUndefinedOrEmpty(wrapperDiv)) {\n wrapperDiv = document.createElement('div');\n wrapperDiv.setAttribute('id', _this.listenerId);\n wrapperDiv.setAttribute('style', 'display:inline-block;height:1px;width:1px;');\n }\n else {\n // Remove all elements of the wrapper\n while (wrapperDiv.firstChild) {\n wrapperDiv.removeChild(wrapperDiv.firstChild);\n }\n }\n _this.npapiPlugin = document.createElement('object');\n _this.npapiPlugin.setAttribute('name', _this.pluginId);\n _this.npapiPlugin.setAttribute('id', _this.pluginId);\n _this.npapiPlugin.setAttribute('type', mimeType());\n _this.npapiPlugin.setAttribute('width', '1');\n _this.npapiPlugin.setAttribute('height', '1');\n var timeoutParam = document.createElement('param');\n timeoutParam.setAttribute('name', 'connect-launch-wait-timeout-ms');\n timeoutParam.setAttribute('value', String(initializeTimeout));\n _this.npapiPlugin.appendChild(timeoutParam);\n wrapperDiv.appendChild(_this.npapiPlugin);\n document.body.appendChild(wrapperDiv);\n };\n /*\n * Place a request for Connect\n *\n * @param {function} callback Function to be called when the request has finished\n * @param {int} requestId Identifier that needs to be returned when calling the given callback\n */\n this.httpRequest = function (endpoint, requestId) {\n var requestPromise = generatePromiseData();\n // NPAPI plugin doesn't accept null data even if it is a GET request\n if (isNullOrUndefinedOrEmpty(endpoint.body)) {\n endpoint.body = '';\n }\n var fullEndpoint = \"\".concat(_this.VERSION_PREFIX).concat(endpoint.path);\n var requestCallback = function (data) {\n /** Parse data to find out if an error ocurred */\n var parsedData = parseJson(data);\n if (isError(parsedData)) {\n requestPromise.resolver({\n status: parsedData.error.code,\n body: data,\n requestId: requestId\n });\n }\n else {\n requestPromise.resolver({\n status: 200,\n body: data,\n requestId: requestId\n });\n }\n };\n if (isNullOrUndefinedOrEmpty(_this.npapiPlugin)) {\n requestPromise.rejecter(new Error('Plugin not detected.'));\n }\n else {\n _this.npapiPlugin.httpRequestImplementation(endpoint.method, fullEndpoint, endpoint.body, requestCallback);\n }\n return requestPromise.promise;\n };\n /*\n * Called to initialize the plugin, it creates a new instance by appending an\n * <object> element to the DOM and runs the callback with the status\n */\n this.startup = function () { return __awaiter(_this, void 0, void 0, function () {\n var changeConnectStatus, npapiWaitPluginLoadedID_1;\n var _this = this;\n return __generator(this, function (_a) {\n changeConnectStatus = this.options.requestStatusCallback;\n try {\n if (isNullOrUndefinedOrEmpty(this.npapiPlugin)) {\n if ((BROWSER.IE && (new ActiveXObject('Aspera.AsperaWebCtrl.1'))) ||\n mimeType() in navigator.mimeTypes) {\n this.listenerId = this.options.containerId;\n this.pluginId = this.options.id;\n this.createNPAPIPlugin(this.options.connectLaunchWaitTimeoutMs);\n npapiWaitPluginLoadedID_1 = setInterval(function () {\n if (!_this.npapiPlugin || !_this.npapiPlugin.queryBuildVersion) {\n return;\n }\n clearInterval(npapiWaitPluginLoadedID_1);\n // Check version is correct\n if (versionLessThan(_this.npapiPlugin.queryBuildVersion(), '3.6')) {\n // Plugin too old\n _this.npapiPlugin = undefined;\n changeConnectStatus(STATUS.FAILED);\n return createError(-1, 'Plugin too old. Version less than 3.6');\n }\n }, 500);\n }\n else {\n // If plugin is still null, it means it is not installed\n if (isNullOrUndefinedOrEmpty(this.npapiPlugin)) {\n changeConnectStatus(STATUS.FAILED);\n return [2 /*return*/, createError(-1, 'Plugin not detected. Either not installed or enabled.')];\n }\n }\n }\n }\n catch (error) {\n // IE 10 ActiveXObject instantiation error recovery\n changeConnectStatus(STATUS.FAILED);\n Logger.debug(JSON.stringify(error));\n return [2 /*return*/, createError(-1, \"Plugin load error. Make sure plugin is enabled. Details: \".concat(error))];\n }\n return [2 /*return*/];\n });\n }); };\n }\n return NpapiStrategy;\n}());\nexport default NpapiStrategy;\n","import NpapiStrategy from './npapi';\nexport default NpapiStrategy;\n","import HttpStrategy from './http';\nexport default HttpStrategy;\n","import { __awaiter, __generator } from \"tslib\";\nimport BROWSER from '../../../helpers/browser';\nimport { Logger } from '../../../logger';\nimport * as Utils from '../../../utils';\nimport { DEFAULT_PORT, LOCALHOST, MAX_PORT_SEARCH, MAX_POLLING_ERRORS, STATUS } from '../../../constants';\nvar HttpStrategy = /** @class */ (function () {\n function HttpStrategy(options) {\n var _this = this;\n this.options = options;\n // private initCallback: any;\n this.connectStatus = STATUS.INITIALIZING;\n /** Internal tracker for port Connect is listening on */\n this.connectPort = DEFAULT_PORT;\n /** Timeout used when iterating ports */\n this.scanRetryTimeValues = [0, 1];\n /** Debugging variable to keep track of multiple instances */\n this.objectId = 0;\n /** Simple counter to increment request ids */\n this.nextId = 0;\n /** Track number of polling errors for debounce */\n this.pollingRequestErrors = 0;\n this.windowUnloading = false;\n this.VERSION_PREFIX = '/v5';\n this.name = 'http';\n /** Track http implementation state */\n this.changeConnectStatus = function (newConnectStatus) {\n if (_this.connectStatus === newConnectStatus) {\n return;\n }\n Logger.debug('[' + _this.objectId + '] Http request handler status changing from[' + _this.connectStatus\n + '] to[' + newConnectStatus + ']');\n _this.connectStatus = newConnectStatus;\n if (_this.requestStatusCallback) {\n _this.requestStatusCallback(newConnectStatus);\n }\n };\n /**\n * Iterates through ports and returns true if Connect responds\n */\n this.check = function () { return __awaiter(_this, void 0, void 0, function () {\n var pingRequests, portMap, port, requestId;\n var _this = this;\n return __generator(this, function (_a) {\n pingRequests = [];\n portMap = new Map();\n for (port = DEFAULT_PORT; port < (DEFAULT_PORT + MAX_PORT_SEARCH); port++) {\n requestId = this.nextId++;\n portMap.set(requestId, port);\n this.connectPort = port;\n pingRequests.push(this.ping(requestId));\n }\n return [2 /*return*/, Promise.all(pingRequests)\n .then(function (pingResponses) {\n for (var it = 0; it < pingResponses.length; it++) {\n var _a = pingResponses[it], requestId = _a.requestId, status_1 = _a.status;\n if (Utils.isSuccessCode(status_1)) {\n // Retrieve port number via request id\n var found = portMap.get(requestId);\n if (found) {\n _this.connectPort = found;\n return true;\n }\n }\n }\n return false;\n })];\n });\n }); };\n this.detectConnect = function (firstRun) { return __awaiter(_this, void 0, void 0, function () {\n var success, retryTimeS_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.connectStatus === STATUS.RUNNING || this.connectStatus === STATUS.STOPPED) {\n return [2 /*return*/, true];\n }\n else if (this.connectStatus === STATUS.INITIALIZING && !firstRun) {\n Utils.launchConnect();\n this.changeConnectStatus(STATUS.RETRYING);\n }\n return [4 /*yield*/, this.check()];\n case 1:\n success = _a.sent();\n if (!!success) return [3 /*break*/, 3];\n retryTimeS_1 = this.scanRetryTimeValues[0] + this.scanRetryTimeValues[1];\n this.scanRetryTimeValues[0] = this.scanRetryTimeValues[1];\n this.scanRetryTimeValues[1] = retryTimeS_1;\n return [4 /*yield*/, new Promise(function (resolve) {\n setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.detectConnect(false)];\n case 1:\n _a.sent();\n /** Go to running here if Connect was installed during loop after initial timeout */\n this.changeConnectStatus(STATUS.RUNNING);\n resolve();\n return [2 /*return*/];\n }\n });\n }); }, retryTimeS_1 * 1000);\n })];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/, true];\n }\n });\n }); };\n this.ping = function (requestId) { return __awaiter(_this, void 0, void 0, function () {\n var request;\n return __generator(this, function (_a) {\n request = {\n method: 'GET',\n path: '/connect/info/ping'\n };\n return [2 /*return*/, this.httpRequest(request, requestId)];\n });\n }); };\n this.reconnect = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.changeConnectStatus(STATUS.RETRYING);\n Utils.launchConnect();\n return [4 /*yield*/, this.detectConnect(false)];\n case 1:\n _a.sent();\n Logger.debug('Reconnect successful!');\n this.changeConnectStatus(STATUS.RUNNING);\n return [2 /*return*/];\n }\n });\n }); };\n this.send = function (endpoint, requestId) {\n var requestPromise = Utils.generatePromiseData();\n var xhr = Utils.getXMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (_this.connectStatus === STATUS.STOPPED || _this.windowUnloading) {\n Logger.debug('Connect stopped or page unloading. Skipping xhr processing.');\n return requestPromise.rejecter(Utils.createError(-1, 'Connect stopped or page unloading. Skipping xhr processing.'));\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (xhr.status === 0 && _this.connectStatus === STATUS.RUNNING) {\n /**\n * Avoid excessive relaunch related to polling failures.\n * Safari causes CORS failures when new page navigation starts\n */\n if (_this.pollingRequestErrors < MAX_POLLING_ERRORS && endpoint.path.indexOf('activity') > 0) {\n _this.pollingRequestErrors++;\n return;\n }\n /** If Connect is running, don't need to iterate over ports */\n if (endpoint.path.indexOf(_this.connectPort.toString()) === -1 && endpoint.path.indexOf('ping') > 0) {\n return;\n }\n void _this.reconnect();\n }\n var response = xhr.responseText;\n Logger.trace('HttpRequest processed[' + endpoint.path + '] postData[' + endpoint.body +\n '] status[' + xhr.status + '] response[' + response + ']');\n requestPromise.resolver({\n status: xhr.status,\n body: response,\n requestId: requestId\n });\n };\n xhr.open(endpoint.method, endpoint.path, true);\n if (endpoint.method.toUpperCase() === 'GET') {\n xhr.send();\n }\n else {\n xhr.send(endpoint.body);\n }\n return requestPromise.promise;\n };\n this.httpRequest = function (endpoint, requestId) { return __awaiter(_this, void 0, void 0, function () {\n var fullpath, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fullpath = \"\".concat(LOCALHOST).concat(this.connectPort).concat(this.VERSION_PREFIX).concat(endpoint.path);\n // TODO: Make copy of original request\n endpoint.path = fullpath;\n return [4 /*yield*/, this.send(endpoint, requestId)];\n case 1:\n result = _a.sent();\n return [2 /*return*/, result];\n }\n });\n }); };\n this.stop = function () {\n _this.changeConnectStatus(STATUS.STOPPED);\n };\n this.startup = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.requestStatusCallback = this.options.requestStatusCallback;\n /** Await Connect detection */\n return [4 /*yield*/, this.detectConnect(true)];\n case 1:\n /** Await Connect detection */\n _a.sent();\n Logger.debug('Finished http init');\n return [2 /*return*/];\n }\n });\n }); };\n // 2018-06-30 Only Safari 12 has trouble with failing XHR requests when page navigation begins\n if (BROWSER.SAFARI_NO_NPAPI) {\n window.addEventListener('beforeunload', function () {\n _this.windowUnloading = true;\n });\n }\n // Associate request ids with object ids\n if (options.objectId) {\n this.objectId = options.objectId;\n this.nextId = this.objectId * 10000;\n }\n }\n return HttpStrategy;\n}());\nexport default HttpStrategy;\n","export var DEFAULT_PORT = 33003;\nexport var LOCALHOST = 'http://127.0.0.1:';\nexport var MAX_PORT_SEARCH = 20;\nexport var MAX_POLLING_ERRORS = 3;\nexport var VERSION_PREFIX = '/v6';\nexport var SESSION_LASTKNOWN_ID = 'aspera-last-known-session-id';\nexport var SESSION_LASTKNOWN_KEY = 'aspera-last-known-session-key';\nexport var SESSION_LASTKNOWN_PORT = 'aspera-last-known-port';\n","import { __awaiter, __generator } from \"tslib\";\nimport BROWSER from '../../helpers/browser';\nimport { STATUS } from '../../constants';\nimport * as Utils from '../../utils';\nimport { Logger } from '../../logger';\nimport { ConnectInstaller } from '../../installer';\nimport NpapiStrategy from './npapi';\nimport { NativeHostStrategy, SafariAppStrategy } from './extension';\nimport HttpStrategy from './http';\n/*\n * Responsible for selecting the appropriate request implementation to\n * use for handling API requests.\n */\nvar Provider = /** @class */ (function () {\n function Provider(_options) {\n var _this = this;\n this._options = _options;\n this.create = function (klass) {\n return new klass(_this._options);\n };\n this.getHttpStrategy = function () {\n return _this.create(HttpStrategy);\n };\n this.getStrategy = function () { return __awaiter(_this, void 0, void 0, function () {\n var installed, supportsInstall, e_1;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 5, , 6]);\n if (!this.supportsNpapi()) return [3 /*break*/, 1];\n Logger.debug('Using npapi strategy');\n this.strategy = this.create(NpapiStrategy);\n return [3 /*break*/, 4];\n case 1:\n if (!this.requiresHttp()) return [3 /*break*/, 2];\n this.setHttpStrategy();\n return [3 /*break*/, 4];\n case 2:\n Logger.debug('Attempting extension strategy');\n this.strategy = this.supportsNativeHost() ? this.create(NativeHostStrategy) : this.create(SafariAppStrategy);\n Logger.debug('Checking if extension installed...');\n return [4 /*yield*/, ((_b = (_a = this.strategy).detectExtension) === null || _b === void 0 ? void 0 : _b.call(_a, 1000))];\n case 3:\n installed = _c.sent();\n if (!installed) {\n supportsInstall = ConnectInstaller.supportsInstallingExtensions === true;\n if (this._options.connectMethod === 'extension' || supportsInstall) {\n if (!this.supportsSafariAppExt()) {\n this._options.requestStatusCallback(STATUS.EXTENSION_INSTALL);\n window.postMessage('show_extension_install', '*');\n }\n }\n else {\n if (this.supportsHttp()) {\n Logger.debug('Falling back to http strategy');\n this.setHttpStrategy();\n }\n }\n }\n _c.label = 4;\n case 4: return [2 /*return*/, this.strategy];\n case 5:\n e_1 = _c.sent();\n throw new Error(\"Unexpected error while determining the request implementation: \".concat(e_1));\n case 6: return [2 /*return*/];\n }\n });\n }); };\n this.requiresHttp = function () {\n return (_this._options.connectMethod === 'http' || !_this.supportsExtensions() || Utils.checkVersionException());\n };\n this.setHttpStrategy = function () {\n Logger.debug('Using http strategy');\n _this.strategy = _this.getHttpStrategy();\n };\n this.supportsExtensions = function () {\n return (_this.supportsNativeHost() || _this.supportsSafariAppExt());\n };\n this.supportsHttp = function () {\n return !BROWSER.SAFARI;\n };\n this.supportsNativeHost = function () {\n return (BROWSER.CHROME || BROWSER.EDGE_WITH_EXTENSION || BROWSER.FIREFOX);\n };\n this.supportsNpapi = function () {\n return (BROWSER.IE || BROWSER.SAFARI && !BROWSER.SAFARI_NO_NPAPI);\n };\n this.supportsSafariAppExt = function () {\n return BROWSER.SAFARI_NO_NPAPI;\n };\n }\n return Provider;\n}());\nexport default Provider;\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { Logger } from '../logger';\nimport * as Utils from '../utils';\nimport { MIN_SECURE_VERSION, MAX_POLLING_ERRORS, STATUS } from '../constants';\nimport { ConnectGlobals } from '../helpers/globals';\nimport Provider from './strategy/provider';\n/*\n * Stategy pattern for selecting the correct request implementation during runtime\n * given the user's configuration options.\n *\n * TODO: Remove dependency on session id. Specific to http strategy.\n */\nvar RequestHandler = /** @class */ (function () {\n function RequestHandler(_options) {\n var _this = this;\n this._options = _options;\n /** Debugging variable to keep track of multiple instances */\n this._objectId = 0;\n /** Simple counter to increment request ids */\n this._nextId = 0;\n this.versionChecked = false;\n /** Internal cache for active requests */\n this._idRequestHash = {};\n /** Array in which we are going to store all the requests that cannot be processed at this time */\n this._queue = [];\n /** Track number of polling errors for debounce */\n this._pollingRequestErrors = 0;\n /** Internal state of the request handler */\n this._handlerStatus = '';\n /**\n * Process all pending client requests starting with most recent\n */\n this.processQueue = function () {\n var _loop_1 = function () {\n var requestInfo = _this._queue.pop();\n if (requestInfo) {\n var endpoint = {\n method: requestInfo.method,\n path: requestInfo.path,\n body: requestInfo.body\n };\n Logger.debug(\"Processing request queue for endpoint: \".concat(endpoint.path));\n _this._strategy.httpRequest(endpoint, requestInfo.requestId)\n .then(function (response) {\n return _this.handleResponse(response);\n })\n .then(function (response) {\n if (requestInfo && requestInfo.resolve) {\n requestInfo.resolve(response);\n }\n })\n .catch(function (error) {\n // Note: queued activity requests will return 404 by Connect since app_id is empty\n if (requestInfo && requestInfo.reject) {\n requestInfo.reject(error);\n }\n });\n }\n };\n while (_this._queue.length > 0) {\n _loop_1();\n }\n Logger.debug('Request queue empty.');\n };\n this.changeConnectStatus = function (newConnectStatus) {\n /**\n * Make sure we check the Connect version before going to running. Happens\n * during normal install sequence after initial timeout.\n */\n if (!_this.versionChecked && newConnectStatus === STATUS.RUNNING) {\n void _this.checkVersion();\n return;\n }\n // Workaround for weird safari extension detector logic. We don't want to go to\n // running from outdated unless it's from a version check. ASCN-2271.\n if (Utils.BROWSER.SAFARI &&\n _this.connectStatus === STATUS.OUTDATED &&\n newConnectStatus === STATUS.RUNNING) {\n void _this.checkVersion();\n return;\n }\n // Avoid duplicate event notifications\n if (_this.connectStatus === newConnectStatus) {\n return;\n }\n Logger.debug('[' + _this._objectId + '] Request handler status changing from[' + _this.connectStatus\n + '] to[' + newConnectStatus + ']');\n _this.connectStatus = newConnectStatus;\n if (_this.connectStatus === STATUS.RUNNING) {\n _this.processQueue();\n }\n // Check for status internal to request handler\n if (_this._handlerStatus === STATUS.DEGRADED) {\n void _this.checkVersion(); // Attempt to reconnect\n return;\n }\n // these are handler states - don't bubble up to Connect\n if (newConnectStatus === STATUS.WAITING || newConnectStatus === STATUS.STOPPED) {\n return;\n }\n _this._options.statusListener(_this.connectStatus);\n };\n /**\n * Verify Connect version meets minimum version requirements\n */\n this.checkVersionCallback = function (response) {\n _this.versionChecked = true;\n delete _this._idRequestHash[response.requestId];\n if (Utils.isSuccessCode(response.status)) {\n var parsedResponse = Utils.parseJson(response.body);\n if (Utils.isError(parsedResponse)) {\n Logger.error('Failed to parse version response: ' + response);\n return;\n }\n else {\n ConnectGlobals.connectVersion = parsedResponse.version;\n }\n }\n else if (response.status === 0) {\n Logger.debug('Bad check version response. Retrying...');\n /** Keep trying to check version until connection to the server resumes */\n _this.versionChecked = false;\n setTimeout(function () {\n void _this.checkVersion();\n }, 500);\n return;\n }\n if (!Utils.checkVersionException()) {\n if (_this._options.minVersion === '' || Utils.versionLessThan(_this._options.minVersion, MIN_SECURE_VERSION)) {\n _this._options.minVersion = MIN_SECURE_VERSION;\n }\n if (Utils.versionLessThan(ConnectGlobals.connectVersion, _this._options.minVersion)) {\n /** Check if already in the outdated state. Don't want to notify */\n /** event listeners of same status and calling require multiple times. */\n if (_this.connectStatus !== STATUS.OUTDATED) {\n _this.changeConnectStatus(STATUS.OUTDATED);\n /** Trigger update interface in Connect */\n var requestId = _this._nextId++;\n var postData = { min_version: _this._options.minVersion, sdk_location: _this._options.sdkLocation };\n var endpoint = {\n method: 'POST',\n path: '/connect/update/require',\n body: JSON.stringify(postData)\n };\n _this.cacheRequest(endpoint, requestId);\n void _this._strategy.httpRequest(endpoint, requestId);\n }\n // Since Connect is outdated, go into a version detection loop\n var attemptNumber_1 = 1;\n var check = function () {\n Logger.debug('Checking for Connect upgrade. Attempt ' + attemptNumber_1);\n if (Utils.BROWSER.SAFARI) {\n Logger.debug('Safari upgrade requires a page refresh. Extension context becomes invalidated.');\n }\n attemptNumber_1++;\n if (_this.connectStatus !== STATUS.RUNNING && _this._handlerStatus !== STATUS.STOPPED) {\n var endpoint = {\n method: 'GET',\n path: '/connect/info/version'\n };\n var requestId = _this._nextId++;\n _this._strategy.httpRequest(endpoint, requestId).then(function (response) {\n var waitUpgradeResponse = Utils.parseJson(response.body);\n // TODO: Remove duplication here\n if (Utils.isError(waitUpgradeResponse)) {\n Logger.error('Failed to parse version response: ' + response);\n return;\n }\n if (!Utils.versionLessThan(waitUpgradeResponse.version, _this._options.minVersion)) {\n Logger.debug('Updated Connect found.');\n clearInterval(connectVersionRetry_1);\n // Go back to running state\n void _this.checkVersion();\n }\n }).catch(function (error) {\n throw new Error(error);\n });\n }\n else {\n // If Connect is running, we shouldn't be calling this anymore\n clearInterval(connectVersionRetry_1);\n }\n };\n // Triggers version check until version response satisfies min version requirement\n var connectVersionRetry_1 = setInterval(check, 1000);\n return;\n }\n }\n _this.changeConnectStatus(STATUS.RUNNING);\n };\n /**\n * Helper function to add request to internal cache for request tracking\n */\n this.cacheRequest = function (endpoint, requestId, promiseInfo) {\n var requestInfo = {\n method: endpoint.method,\n path: endpoint.path,\n body: endpoint.body,\n requestId: requestId\n };\n if (promiseInfo) {\n requestInfo.resolve = promiseInfo.resolve;\n requestInfo.reject = promiseInfo.reject;\n }\n _this._idRequestHash[requestId] = requestInfo;\n return requestInfo;\n };\n /**\n * Get Connect version and enforce version requirements\n */\n this.checkVersion = function () { return __awaiter(_this, void 0, void 0, function () {\n var endpoint, requestId, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n endpoint = {\n method: 'GET',\n path: '/connect/info/version'\n };\n requestId = this._nextId++;\n this.cacheRequest(endpoint, requestId);\n return [4 /*yield*/, this._strategy.httpRequest(endpoint, requestId)];\n case 1:\n response = _a.sent();\n if (response) {\n this.checkVersionCallback(response);\n }\n return [2 /*return*/];\n }\n });\n }); };\n /** Promise that resolves successful client requests. */\n this.handleResponse = function (response) {\n return new Promise(function (resolve, reject) {\n /** Implementation handler might handle this case already */\n if (_this._handlerStatus === STATUS.STOPPED) {\n Logger.debug('Connect stopped. Skipping request processing.');\n return reject(Utils.createError(-1, 'Connect is stopped. Skipping request processing.'));\n }\n var requestInfo = _this._idRequestHash[response.requestId];\n if (response.status === 0) {\n if (_this._pollingRequestErrors < MAX_POLLING_ERRORS &&\n requestInfo.path.indexOf('/connect/transfers/activity') > 0) {\n _this._pollingRequestErrors++;\n return reject(Utils.createError(-1, 'Error processing transfer activity request'));\n }\n /** This was a client request, so queue it for processing later. */\n _this._queue.push(requestInfo);\n return;\n }\n if (_this.connectStatus !== STATUS.RUNNING) {\n _this.changeConnectStatus(STATUS.RUNNING);\n }\n var parsedResponse = Utils.parseJson(response.body);\n delete _this._idRequestHash[response.requestId];\n // Reject if response has error fields or if status code is not 2xx\n if (Utils.isError(parsedResponse) || !Utils.isSuccessCode(response.status)) {\n reject(parsedResponse);\n }\n else {\n resolve(parsedResponse);\n }\n });\n };\n this.start = function (endpoint) {\n return new Promise(function (resolve, reject) {\n if (_this._handlerStatus === STATUS.STOPPED) {\n return reject(Utils.createError(-1, 'Connect is stopped. Call #start to resume session.'));\n }\n if (_this._handlerStatus === STATUS.DEGRADED) {\n return _this.checkVersion(); // Attempt to reconnect\n }\n var requestId = _this._nextId++;\n var requestInfo = _this.cacheRequest(endpoint, requestId, { resolve: resolve, reject: reject });\n /**\n * If Connect is not ready, queue the client request and resolve the\n * request when the queue is processed.\n */\n if (_this.connectStatus !== STATUS.RUNNING) {\n Logger.debug(\"Queueing request. Connect is currently \".concat(_this.connectStatus, \".\"));\n _this._queue.push(requestInfo);\n return;\n }\n _this._strategy.httpRequest(endpoint, requestId)\n .then(function (response) {\n return _this.handleResponse(response);\n })\n .then(function (response) {\n resolve(response);\n })\n .catch(function (error) {\n reject(error);\n });\n });\n };\n this.handleFallback = function (response) {\n if (response.status === 0) {\n return;\n }\n var parsedResponse = Utils.parseJson(response.body);\n delete _this._idRequestHash[response.requestId];\n if (Utils.isError(parsedResponse)) {\n return;\n }\n else {\n return parsedResponse;\n }\n };\n this.stopRequests = function () {\n _this._handlerStatus = STATUS.STOPPED;\n if (typeof _this._strategy.stop === 'function') {\n _this._strategy.stop();\n }\n return true;\n };\n this._provider = new Provider(__assign(__assign({}, _options), { requestStatusCallback: this.changeConnectStatus }));\n this._objectId = _options.objectId;\n this._nextId = this._objectId * 10000;\n /** Setup continue event listener */\n window.addEventListener('message', function (evt) {\n if (_this.connectStatus !== STATUS.RUNNING && evt.data === 'continue') {\n if (_this._strategy) {\n if (_this._strategy.stop) {\n _this._strategy.stop();\n _this._strategy = _this._provider.getHttpStrategy();\n }\n }\n }\n });\n }\n /**\n * Send version or ping requests via the http strategy for debugging.\n */\n RequestHandler.prototype.httpFallback = function (api) {\n return __awaiter(this, void 0, void 0, function () {\n var httpFallback, endpoint, requestId, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n httpFallback = this._provider.getHttpStrategy();\n endpoint = {\n path: '/connect/info/' + api,\n method: 'GET'\n };\n requestId = this._nextId++;\n this.cacheRequest(endpoint, requestId);\n return [4 /*yield*/, httpFallback.httpRequest(endpoint, requestId)];\n case 1:\n response = _a.sent();\n return [2 /*return*/, this.handleFallback(response)];\n }\n });\n });\n };\n /** Define timeout behavior */\n RequestHandler.prototype.handleTimeout = function (timeout) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /**\n * Return error message from strategy. Otherwise, do some debugging first.\n */\n if (timeout.error.user_message !== 'timeout') {\n throw new Error(timeout.error.user_message);\n }\n if (this._handlerStatus === STATUS.STOPPED) {\n throw new Error('stop() was called');\n }\n if (!(this.connectStatus !== STATUS.RUNNING && this.connectStatus !== STATUS.OUTDATED && this.connectStatus !== STATUS.EXTENSION_INSTALL)) return [3 /*break*/, 3];\n Logger.debug(\"Connect detection timed out after: \".concat(this._options.connectLaunchWaitTimeoutMs, \"ms\"));\n if (this._strategy.name === 'http' || this._strategy.name === 'safari' || this._strategy.name === 'npapi' || this._strategy.name === 'nmh') {\n this.changeConnectStatus(STATUS.FAILED);\n }\n if (!(this._strategy.name === 'nmh')) return [3 /*break*/, 2];\n if (!(this.connectStatus === STATUS.FAILED)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.httpFallback('version')];\n case 1:\n response = _a.sent();\n if (response && Utils.versionLessThan(response.version, '3.9')) {\n throw new Error('Incompatible version of Connect detected. You must upgrade to 3.9+.');\n }\n else if (response && !Utils.versionLessThan(response.version, '3.9')) {\n throw new Error('Connect 3.9+ was detected but is not responding to extension requests. Check native message host registration.');\n }\n else {\n throw new Error('Check that Connect 3.9+ is installed.');\n }\n _a.label = 2;\n case 2: \n /** Generic timeout error */\n throw new Error('Timeout reached');\n case 3:\n if (this.connectStatus === STATUS.EXTENSION_INSTALL) {\n throw new Error('Browser extension was not detected. Make sure it is enabled if already installed.');\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Select request implementation and initialize Connect\n */\n RequestHandler.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, timeoutPromise, timeout;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /** Reset Connect and handler statuses */\n this.changeConnectStatus(STATUS.INITIALIZING);\n this._handlerStatus = '';\n /** Await implementation selection */\n Logger.debug('Determining request strategy...');\n _a = this;\n return [4 /*yield*/, this._provider.getStrategy()];\n case 1:\n _a._strategy = _b.sent();\n timeoutPromise = new Promise(function (reject) {\n setTimeout(reject, _this._options.connectLaunchWaitTimeoutMs, Utils.createError(-1, 'timeout'));\n });\n return [4 /*yield*/, Promise.race([\n timeoutPromise,\n this._strategy.startup()\n ])];\n case 2:\n timeout = _b.sent();\n if (Utils.isError(timeout)) {\n return [2 /*return*/, this.handleTimeout(timeout)];\n }\n Logger.debug('Connect initialized. Checking version now.');\n /** Ensure Connect meets version requirements */\n return [4 /*yield*/, this.checkVersion()];\n case 3:\n /** Ensure Connect meets version requirements */\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return RequestHandler;\n}());\nexport default RequestHandler;\n","import { apiEndpoints } from '../constants';\nvar ApiService = /** @class */ (function () {\n function ApiService(requestHandler) {\n var _this = this;\n this.requestHandler = requestHandler;\n this.send = function (request) {\n var fullEndpoint = _this.getEndpointUrl(request.name, request.param);\n return _this.httpRequest(request.method, fullEndpoint, request.method === 'POST' ? JSON.stringify(request.body) : undefined);\n };\n this.httpRequest = function (method, path, data) {\n var endpoint = {\n method: method,\n path: path,\n body: data\n };\n return _this.requestHandler.start(endpoint);\n };\n }\n /**\n * Forms the URL to use for the API call\n */\n ApiService.prototype.getEndpointUrl = function (name, param) {\n var endpointInfo = apiEndpoints[name];\n if (!endpointInfo) {\n throw new Error(\"Connect API (\".concat(name, \") not known\"));\n }\n var route = endpointInfo.route;\n var prefix = endpointInfo.prefix;\n if (param) {\n route = route.replace('${id}', param);\n }\n return \"\".concat(prefix).concat(route);\n };\n return ApiService;\n}());\nexport default ApiService;\n","import { isNullOrUndefinedOrEmpty } from '../utils';\nexport var validateAuthSpec = function (request) {\n validateOptions(request);\n var required = ['remote_host'];\n validateKeys(request, 'authSpec', required);\n};\nexport var validateBufferOptions = function (request) {\n validateOptions(request);\n var required = ['path', 'offset', 'chunkSize'];\n validateKeys(request, '#readChunkAsArrayBuffer options', required);\n};\nexport var validateChecksumOptions = function (request) {\n validateOptions(request);\n var required = ['path'];\n validateKeys(request, '#getChecksum options', required);\n var allowedMethods = ['md5', 'sha1', 'sha256', 'sha512'];\n var body = request.body;\n if (body && body.checksumMethod && allowedMethods.indexOf(body.checksumMethod) === -1) {\n throwError(\"\".concat(body.checksumMethod, \" is not a supported checksum method\"));\n }\n};\nexport var validateMethod = function (request) {\n var method = request.method;\n if (!method) {\n throw new Error('Request is missing property: method');\n }\n};\nexport var validateName = function (request) {\n var name = request.name;\n if (!name) {\n throw new Error('Request is missing property: name');\n }\n};\nexport var validateArrayBufferOptions = function (request) {\n validateOptions(request);\n var required = ['path'];\n validateKeys(request, '#readAsArrayBuffer options', required);\n};\nexport var validateTransferId = function (request) {\n var param = request.param;\n if (isNullOrUndefinedOrEmpty(param)) {\n throwError('Must provide transfer id.');\n }\n};\nvar validateBody = function (request, msg) {\n var body = request.body;\n if (isNullOrUndefinedOrEmpty(body)) {\n throwError(msg);\n }\n};\n/*\n * Validate request body contains given keys\n */\nvar validateKeys = function (request, parameterName, keys) {\n keys.forEach(function (key) {\n if (isNullOrUndefinedOrEmpty(request.body[key])) {\n var msg = \"Invalid \".concat(parameterName, \" parameter: \").concat(key, \" is missing or invalid\");\n throwError(msg);\n }\n });\n};\nvar validateOptions = function (request) {\n var msg = 'Must provide options parameter.';\n validateBody(request, msg);\n};\nvar throwError = function (msg) {\n var error = new Error(msg);\n error.name = 'ValidationError';\n throw error;\n};\n","import { __read, __spreadArray } from \"tslib\";\nimport { copyObject, isNullOrUndefinedOrEmpty } from '../utils';\nimport { validateMethod, validateName } from './validators';\nvar Request = /** @class */ (function () {\n function Request() {\n this.validators = [];\n }\n Request.prototype.addSettings = function (addStandardSettings) {\n var data = copyObject(this.body);\n data = addStandardSettings(data);\n /** Add additional settings for transfer requests */\n if (this.name === 'startTransfer' && this.requestId) {\n var transferSpec = void 0;\n for (var i = 0; i < data.transfer_specs.length; i++) {\n transferSpec = data.transfer_specs[i];\n transferSpec = addStandardSettings(transferSpec);\n transferSpec.aspera_connect_settings.request_id = this.requestId;\n if (isNullOrUndefinedOrEmpty(transferSpec.aspera_connect_settings.back_link)) {\n transferSpec.aspera_connect_settings.back_link = window.location.href;\n }\n }\n }\n this.body = data;\n };\n Request.prototype.setBody = function (body) {\n this.body = body;\n return this;\n };\n Request.prototype.setMethod = function (method) {\n this.method = method;\n return this;\n };\n Request.prototype.setName = function (name) {\n this.name = name;\n return this;\n };\n Request.prototype.setParam = function (param) {\n this.param = param;\n return this;\n };\n Request.prototype.setRequestId = function (id) {\n this.requestId = id;\n return this;\n };\n Request.prototype.setValidator = function () {\n var validators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n validators[_i] = arguments[_i];\n }\n this.validators = __spreadArray(__spreadArray([], __read(this.validators), false), __read(validators), false);\n return this;\n };\n Request.prototype.validate = function () {\n var _this = this;\n /** Add default validators here */\n this.validators.push(validateName, validateMethod);\n this.validators.forEach(function (validator) {\n validator(_this);\n });\n };\n Request.prototype.send = function (api) {\n /** Run all validators */\n this.validate();\n return api.send(this);\n };\n return Request;\n}());\nexport default Request;\n","/**\n * @namespace AW4\n *\n * @property {Module} Utils {@link module:Utils}\n * @property {Module} Logger {@link module:Logger}\n */\nimport * as Utils from './utils';\nimport { Logger } from './logger';\nimport RequestHandler from './request/handler';\nimport { HTTP_METHOD, STATUS, EVENT, TRANSFER_STATUS, LS_CONNECT_APP_ID } from './constants';\nimport ApiService from './core/api';\nimport Request from './core/request';\nimport { validateAuthSpec, validateArrayBufferOptions, validateBufferOptions, validateTransferId, validateChecksumOptions } from './core/validators';\nimport { ConnectGlobals } from './helpers/globals';\n/**\n * @classdesc Contains all the Connect API methods\n *\n * @name Connect\n * @class\n * @memberof AW4\n * @param {Object} options Configuration parameters for Connect\n * @param {Number} [options.connectLaunchWaitTimeoutMs=5000] How long to wait in milliseconds\n * for Connect to launch. If we reach this timeout without a successful request to Connect,\n * Connect will go to FAILED status.\n * @param {String} [options.id=\"aspera-web\"] The DOM 'id' of the plug-in object to be inserted.\n * @param {String} [options.containerId] The DOM 'id' of an existing element to insert the plug-in\n * element into (replacing its contents). If not specified, the plug-in is appended to the document body.\n * Note that the plug-in must not be hidden in order to be loaded.\n * @param {String} [options.sdkLocation=\"//d3gcli72yxqn2z.cloudfront.net/connect/v4\"] Specifies the custom\n * SDK location to check for Connect installers. It has to be in the following format: '//domain/path/to/connect/sdk'.\n * If you are hosting your own SDK, then you must provide the location to your copy\n * of the SDK. This points to the /v4 folder of the provided SDK. The URL provided\n * must be in the same level of security as the web page (HTTP/HTTPS), HTTPS preferred.\n * @param {Number} [options.pollingTime=2000] How often in milliseconds we want to get\n * updates of transfer status.\n * @param {Number} [options.maxActivityOutstanding=2] The maximum number of oustanding transfer activity\n * requests allowed before being skipped.\n * @param {Number} [options.extensionRequestTimeout=86400000] How long to wait in milliseconds for extension requests\n * to return before failing. Only applies to file and folder dialog APIs.\n * @param {String} [options.minVersion] Minimum version of Connect required by the web\n * application in order to work. Format: \"3.9.0\".\n * @param {Boolean} [options.dragDropEnabled=false] Enable drag and drop of files/folders\n * into the browser.\n * @param {(\"http\"|\"extension\")} [options.connectMethod] Specify the preferred method of\n * Connect communication. Default is \"extension\" for `minVersion` >= 3.9.0. Otherwise, default\n * is \"http\".\n *\n * @example\n * let options = {\n * minVersion: \"3.9.0\",\n * dragDropEnabled: true\n * }\n * let asperaWeb = new AW4.Connect(options) // returns instance of AW4.Connect\n */\nvar Connect = function Connect(options) {\n var _newTarget = this && this instanceof Connect ? this.constructor : void 0;\n if (!_newTarget) {\n throw new Error('Connect() must be called with new');\n }\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n var INITIALIZE_TIMEOUT = options.connectLaunchWaitTimeoutMs || 5000;\n var PLUGIN_ID = options.id || 'aspera-web';\n var PLUGIN_CONTAINER_ID = options.containerId || 'aspera-web-container';\n var APPLICATION_ID = '';\n var AUTHORIZATION_KEY = options.authorizationKey || '';\n var POLLING_TIME = options.pollingTime || 2000;\n var MINIMUM_VERSION = options.minVersion || '';\n var CONNECT_METHOD = options.connectMethod || '';\n var DRAGDROP_ENABLED = options.dragDropEnabled || false;\n var MAX_ACTIVITY_OUTSTANDING = options.maxActivityOutstanding || 2;\n var SDK_LOCATION = Utils.getFullURI(options.sdkLocation) || '//d3gcli72yxqn2z.cloudfront.net/connect/v4';\n var EXTENSION_REQUEST_TIMEOUT = options.extensionRequestTimeout;\n // Evaluate local storage overrides\n if (typeof (Storage) !== 'undefined') {\n var overrideMethod = Utils.getLocalStorage('aspera-connect-method');\n if (overrideMethod) {\n CONNECT_METHOD = overrideMethod;\n }\n var overrideMinVersion = Utils.getLocalStorage('aspera-min-version');\n if (overrideMinVersion) {\n MINIMUM_VERSION = overrideMinVersion;\n }\n }\n // Expose the requested version to the install banner\n if (MINIMUM_VERSION) {\n ConnectGlobals.minVersion = MINIMUM_VERSION;\n }\n var transferListeners = [];\n var transferEventIntervalId = 0;\n var transferEventIterationToken = 0;\n var statusListeners = [];\n var connectStatus = STATUS.INITIALIZING;\n var objectId = Utils.nextObjectId();\n var outstandingActivityReqs = 0; // Keep track of polling requests to avoid overfilling the queue\n var connectRunning = false;\n var mobileConnectRunning = false;\n var requestHandler = new RequestHandler({\n id: PLUGIN_ID,\n containerId: PLUGIN_CONTAINER_ID,\n connectLaunchWaitTimeoutMs: INITIALIZE_TIMEOUT,\n sdkLocation: SDK_LOCATION,\n connectMethod: CONNECT_METHOD,\n minVersion: MINIMUM_VERSION,\n extensionRequestTimeout: EXTENSION_REQUEST_TIMEOUT,\n objectId: objectId,\n statusListener: manageConnectStatus\n });\n var api = new ApiService(requestHandler);\n function addStandardSettings(body) {\n if (AUTHORIZATION_KEY.length !== 0) {\n body.authorization_key = AUTHORIZATION_KEY;\n }\n if (Utils.isNullOrUndefinedOrEmpty(body.aspera_connect_settings)) {\n body.aspera_connect_settings = {};\n }\n body.aspera_connect_settings.app_id = APPLICATION_ID;\n return body;\n }\n function connectReady() {\n Logger.debug('Connect API is ready.');\n if (Utils.isMobile()) {\n mobileConnectRunning = true;\n }\n else {\n connectRunning = true;\n initDragDrop();\n }\n }\n function getAllTransfersHelper(iterationToken, callbacks) {\n var data = { iteration_token: iterationToken };\n var request = new Request()\n .setName('activity')\n .setMethod(HTTP_METHOD.POST)\n .setBody(data);\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n /**\n * Initializes drag and drop if dragDropEnabled = true.\n */\n function initDragDrop() {\n if (DRAGDROP_ENABLED) {\n var request = new Request()\n .setName('initDragDrop')\n .setMethod(HTTP_METHOD.GET);\n send(request).catch(function () { });\n }\n }\n /**\n * Triggers user's transfer listeners\n */\n function notifyTransferListeners(response) {\n // First update the iterate token for future requests\n transferEventIterationToken = response.iteration_token;\n // Notify the listeners\n for (var i = 0; i < transferListeners.length; i++) {\n transferListeners[i](EVENT.TRANSFER, response);\n }\n }\n function pollGetAllTransfers() {\n // TODO: Need to make sure that all request implementations error on timeout\n if (outstandingActivityReqs >= MAX_ACTIVITY_OUTSTANDING) {\n Logger.debug('Skipping activity request. Reached maximum number of outstanding polling requests.');\n return;\n }\n outstandingActivityReqs++;\n getAllTransfers({\n success: function (response) {\n outstandingActivityReqs--;\n notifyTransferListeners(response);\n },\n error: function () {\n outstandingActivityReqs--;\n }\n }, transferEventIterationToken);\n }\n /**\n * Removes user's event listeners\n */\n function removeEventListenerHelper(listener, listenerArray) {\n var listenerFound = false;\n var index = listenerArray.indexOf(listener);\n while (index > -1) {\n listenerArray.splice(index, 1);\n listenerFound = true;\n index = listenerArray.indexOf(listener);\n }\n return listenerFound;\n }\n /// /////////////////////////////////////////////////////////////////////////\n // Manage Connect Status and high level logic\n /// /////////////////////////////////////////////////////////////////////////\n /**\n * Triggers user's status listeners\n */\n function notifyStatusListeners(notifyStatus) {\n for (var i = 0; i < statusListeners.length; i++) {\n statusListeners[i](EVENT.STATUS, notifyStatus);\n }\n }\n /**\n * Sets the global Connect status\n */\n function setConnectStatus(newStatus) {\n /** Avoid handling redundant status updates */\n if (connectStatus === newStatus) {\n return;\n }\n Logger.debug('[' + objectId + '] Connect status changing from[' + connectStatus + '] to[' + newStatus + ']');\n /**\n * Handle case where Connect goes to running outside of normal init sequence.\n * For example, during upgrade.\n */\n if (newStatus === STATUS.RUNNING) {\n connectReady();\n }\n connectStatus = newStatus;\n }\n function manageConnectStatus(newStatus) {\n if (newStatus === STATUS.INITIALIZING) {\n setConnectStatus(STATUS.INITIALIZING);\n }\n else if (newStatus === STATUS.RETRYING) {\n setConnectStatus(STATUS.RETRYING);\n }\n else if (newStatus === STATUS.FAILED) {\n connectRunning = false;\n setConnectStatus(STATUS.FAILED);\n }\n else if (newStatus === STATUS.EXTENSION_INSTALL) {\n setConnectStatus(STATUS.EXTENSION_INSTALL);\n }\n else if (newStatus === STATUS.WAITING) {\n // No change\n }\n else if (newStatus === STATUS.OUTDATED) {\n if (connectStatus !== STATUS.OUTDATED) {\n setConnectStatus(STATUS.OUTDATED);\n }\n }\n else if (newStatus === STATUS.DEGRADED) {\n /** Should not get here. */\n return;\n }\n else {\n Logger.debug('Resetting max activity outstanding.');\n outstandingActivityReqs = 0;\n setConnectStatus(STATUS.RUNNING);\n }\n notifyStatusListeners(connectStatus);\n }\n function send(request, callbacks) {\n /** Add default settings for all POST requests */\n if (request.method === HTTP_METHOD.POST) {\n request.addSettings(addStandardSettings);\n }\n if (callbacks) {\n request.send(api).then(function (response) {\n if (typeof callbacks.success === 'function') {\n callbacks.success(response);\n }\n }).catch(function (error) {\n if (typeof callbacks.error === 'function') {\n Logger.debug('Calling error callback.');\n callbacks.error(error);\n }\n });\n }\n else {\n return request.send(api);\n }\n }\n /**\n * @function\n * @name AW4.Connect#addEventListener\n * @description Subscribe for Connect events. The first time the listener is\n * called it will receive an event for each of the transfers already displayed\n * in Connect, such that the listener will know the complete state of all transfers.\n * @param {EVENT} type The type of event to receive events for.\n * @param {Function} listener The function that will be called when the event occurs.\n * Format:\n * ```\n * function(eventType, data) { ... }\n * ```\n * \"transfer\" event types return data format: {@link AllTransfersInfo}\n * @returns {null|Error}\n *\n * @example\n * // create a transfer listener\n * function transferListener(type, allTransfersInfo) {\n * if (type === AW4.Connect.EVENT.TRANSFER) {\n * console.log('Received transfer event!')\n * handleTransferEvent(allTransfersInfo) // do something with the transfers data\n * }\n * }\n * asperaWeb.addEventListener(AW4.Connect.EVENT.TRANSFER, transferListener)\n */\n this.addEventListener = function (type, listener) {\n // Check the parameters\n if (typeof type !== typeof EVENT.ALL) {\n return Utils.createError(-1, 'Invalid EVENT parameter');\n }\n else if (typeof listener !== 'function') {\n return Utils.createError(-1, 'Invalid Listener parameter');\n }\n // Add the listener\n if (type === EVENT.TRANSFER || type === EVENT.ALL) {\n if (transferEventIntervalId === 0) {\n transferEventIntervalId = setInterval(pollGetAllTransfers, POLLING_TIME);\n }\n // Already set a function for polling the status, just add to the queue\n transferListeners.push(listener);\n }\n if (type === EVENT.STATUS || type === EVENT.ALL) {\n statusListeners.push(listener);\n }\n };\n function authenticate(authSpec, callbacks) {\n var request = new Request()\n .setName('authenticate')\n .setMethod(HTTP_METHOD.POST)\n .setBody(authSpec)\n .setValidator(validateAuthSpec);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n }\n /**\n * Test authentication credentials against a transfer server.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#authenticate\n * @param {Object} authSpec Authentication credentials.\n *\n * Options for `authSpec` (subset of {@link TransferSpec}):\n * * `remote_host`\n * * `ssh_port`\n * * `remote_user`\n * * `remote_password`\n * * `token`\n *\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null|Error}\n */\n this.authenticate = authenticate;\n function getAllTransfers(callbacks, iterationToken) {\n if (iterationToken === void 0) { iterationToken = 0; }\n if (connectRunning) {\n return getAllTransfersHelper(iterationToken, callbacks);\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n window.AsperaMobile.getAllTransfers(iterationToken).then(function (transfers) {\n if (callbacks.success)\n callbacks.success(transfers);\n }).catch(function (err) {\n if (callbacks.error)\n callbacks.error(err);\n });\n }\n else {\n Logger.warn('getAllTransfers: No method is available for getting all transfers');\n }\n }\n /**\n * Get statistics for all transfers.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#getAllTransfers\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{@link AllTransfersInfo}`\n * @param {String} [iterationToken='0'] If specified, return only transfers that have\n * had activity since the last call.\n * @return {null}\n */\n this.getAllTransfers = getAllTransfers;\n /**\n * Get current status of Connect.\n *\n * @function\n * @name AW4.Connect#getStatus\n * @return {STATUS}\n */\n this.getStatus = function () {\n return connectStatus;\n };\n function getTransfer(transferId, callbacks) {\n var request = new Request()\n .setName('getTransfer')\n .setMethod(HTTP_METHOD.POST)\n .setParam(transferId)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return window.AsperaMobile.getTransfer(transferId);\n }\n else {\n throw new Error('getTransfer: No transfer method is available for retrieving a transfer');\n }\n }\n /**\n * Get statistics for a single transfer.\n *\n * @function\n * @name AW4.Connect#getTransfer\n * @param {String} transferId The ID (`uuid`) of the transfer to retrieve.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * See `{@link TransferInfo}`\n * ```\n * {\n * \"transfer_info\": TransferInfo\n * }\n * @return {null}\n */\n this.getTransfer = getTransfer;\n /**\n * Call this method after creating the {@link AW4.Connect} object. It is mandatory to call this\n * function before making use of any other function of the API. If called more than\n * once on the same instance, it will return an error.\n *\n * Return format:\n * ```\n * {\n * \"app_id\": \"MjY2ZTM0YWItMGM2NC00ODdhLWJkNzQtNzU0YzVjN2FjYjJj\"\n * }\n * ```\n *\n * @function\n * @name AW4.Connect#initSession\n * @param {String | Undefined} [applicationId] An ID to represent this session. Transfers\n * initiated during this session will be associated with the ID. To continue\n * a previous session, use the same ID as before. Use a unique ID in order to\n * keep transfer information private from other websites. IF not specified,\n * an ID is automatically generated for you.\n *\n * @returns {Object}\n */\n this.initSession = function (applicationId) {\n if (applicationId === void 0) { applicationId = ''; }\n if (!Utils.isNullOrUndefinedOrEmpty(APPLICATION_ID)) {\n return Utils.createError(-1, 'Session was already initialized.');\n }\n if (!Utils.isNullOrUndefinedOrEmpty(applicationId)) {\n APPLICATION_ID = applicationId;\n }\n else {\n var appId = Utils.getLocalStorage(LS_CONNECT_APP_ID);\n /** Generate a new application id */\n if (!appId) {\n appId = Utils.utoa(Utils.generateUuid());\n }\n APPLICATION_ID = appId;\n }\n Utils.setLocalStorage(LS_CONNECT_APP_ID, APPLICATION_ID);\n if (!Utils.entropyOk(APPLICATION_ID)) {\n Logger.warn('WARNING: app_id field entropy might be too low.');\n }\n /** Initialize requests */\n var error = this.start();\n if (error && Utils.isError(error)) {\n return Utils.createError(-1, error);\n }\n return { 'app_id': APPLICATION_ID };\n };\n function modifyTransfer(transferId, options, callbacks) {\n var request = new Request()\n .setName('modifyTransfer')\n .setMethod(HTTP_METHOD.POST)\n .setParam(transferId)\n .setBody(options)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n }\n /**\n * Change the speed of a running transfer.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#modifyTransfer\n * @param {String} transferId The ID of the transfer to modify\n * @param {Object} options A subset of {@link TransferSpec}\n *\n * Options:\n * * `rate_policy`\n * * `target_rate_kbps`\n * * `min_rate_kbps`\n * * `target_rate_cap_kbps`\n * * `lock_rate_policy`\n * * `lock_target_rate`\n * * `lock_min_rate`\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n *\n * Object returned to success callback:\n * `{@link TransferSpec}`\n * @return {null}\n */\n this.modifyTransfer = modifyTransfer;\n function readAsArrayBuffer(options, callbacks) {\n var request = new Request()\n .setName('readAsArrayBuffer')\n .setMethod(HTTP_METHOD.POST)\n .setBody(options)\n .setValidator(validateArrayBufferOptions);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('readAsArrayBuffer: No method is available for reading a file');\n }\n }\n /**\n * Read file as 64-bit encoded data.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#readAsArrayBuffer\n * @param {Object} options Object with options needed for reading the file.\n *\n * Options:\n * * `path` (String) - Absolute path to the file we want to read.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * ```\n * {\n * \"type\" : \"image/pjpeg\",\n * \"data\" : \"/9j/4AAQSkZ...\"\n * }\n * ```\n * @return {null|Error}\n */\n this.readAsArrayBuffer = readAsArrayBuffer;\n function readChunkAsArrayBuffer(options, callbacks) {\n var request = new Request()\n .setName('readChunkAsArrayBuffer')\n .setMethod(HTTP_METHOD.POST)\n .setBody(options)\n .setValidator(validateBufferOptions);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('readChunkAsArrayBuffer: No method is available for reading a file');\n }\n }\n /**\n * Read 64-bit encoded chunk from file.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#readChunkAsArrayBuffer\n * @param {Object} options Object with options needed for reading a chunk.\n *\n * Options:\n * * `path` (String) - Absolute path to the file we want to read the chunk from.\n * * `offset` (Number) - Offset (in bytes) that we want to start reading the file.\n * * `chunkSize` (Number) - The size (in bytes) of the chunk we want.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * ```\n * {\n * \"type\" : \"image/pjpeg\",\n * \"data\" : \"/9j/4AAQSkZ...\"\n * }\n * ```\n * @return {null|Error}\n */\n this.readChunkAsArrayBuffer = readChunkAsArrayBuffer;\n function getChecksum(options, callbacks) {\n if (!options) {\n throw new Error('#getChecksum options argument is either missing or incorrect');\n }\n var localOptions = {\n path: options.path,\n offset: options.offset || 0,\n chunkSize: options.chunkSize || 0,\n checksumMethod: options.checksumMethod || 'md5'\n };\n var request = new Request()\n .setName('getChecksum')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions)\n .setValidator(validateChecksumOptions);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('getChecksum: No method is available for retrieving a checksum');\n }\n }\n /**\n * Calculates checksum of the given chunk size of the file.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#getChecksum\n * @param {Object} options Object with options needed for reading a chunk.\n *\n * Options:\n * * `path` (String) - Absolute path to the file we want to read the chunk from.\n * * `offset` (Number) - Offset (in bytes) that we want to start reading the file.\n * * `chunkSize` (Number) - The size (in bytes) of the chunk we want.\n * * `checksumMethod` (String) - The hash method we want to apply on chunk. Allowed checksum methods are \"md5\", \"sha1\", \"sha256\", \"sha512\".\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * ```\n * {\n * \"checksumMethod\" : \"md5\"\n * \"checksum\" : \"35cf801a...\"\n * }\n * ```\n * @return {null}\n */\n this.getChecksum = getChecksum;\n /**\n * Unsubscribe from Aspera Web events. If `type` is not specified,\n * all versions of the `listener` with different types will be removed.\n * If `listener` is not specified, all listeners for the `type` will be\n * removed. If neither `type` nor `listener` are specified, all listeners\n * will be removed.\n *\n * Return values:\n * * `true` - If we could find a listener with the parameters provided.\n * * `false` - If we could not find a listener for the parameters provided.\n *\n * @function\n * @name AW4.Connect#removeEventListener\n * @param {EVENT} [type] The type of event to stop receiving events for.\n * @param {Function} [listener] The function used to subscribe in {@link AW4.Connect#addEventListener}\n * @return {Boolean}\n */\n this.removeEventListener = function (type, listener) {\n var listenerFound = false;\n if (typeof type === 'undefined') {\n if (transferListeners.length > 0) {\n transferListeners = [];\n listenerFound = true;\n }\n if (statusListeners.length > 0) {\n statusListeners = [];\n listenerFound = true;\n }\n }\n else if (typeof type !== typeof EVENT.ALL) {\n // The parameter type is actually the listener\n // @ts-ignore\n listenerFound = listenerFound || removeEventListenerHelper(type, transferListeners);\n // @ts-ignore\n listenerFound = listenerFound || removeEventListenerHelper(type, statusListeners);\n }\n else if (typeof listener !== 'function') {\n // The user only provided the type\n // First the TRANSFER events\n if (type === EVENT.TRANSFER || type === EVENT.ALL) {\n if (transferListeners.length > 0) {\n transferListeners = [];\n listenerFound = true;\n }\n }\n // Then the STATUS events\n if (type === EVENT.STATUS || type === EVENT.ALL) {\n if (statusListeners.length > 0) {\n statusListeners = [];\n listenerFound = true;\n }\n }\n }\n else {\n // The user provided both arguments\n // First the TRANSFER events\n if (type === EVENT.TRANSFER || type === EVENT.ALL) {\n listenerFound = listenerFound || removeEventListenerHelper(listener, transferListeners);\n }\n // Then the STATUS events\n if (type === EVENT.STATUS || type === EVENT.ALL) {\n listenerFound = listenerFound || removeEventListenerHelper(listener, statusListeners);\n }\n }\n if (transferListeners.length === 0) {\n clearInterval(transferEventIntervalId);\n transferEventIntervalId = 0;\n }\n return listenerFound;\n };\n function removeTransfer(transferId, callbacks) {\n var request = new Request()\n .setName('removeTransfer')\n .setMethod(HTTP_METHOD.POST)\n .setParam(transferId)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('removeTransfer: No transfer method is available for removing a transfer');\n }\n }\n /**\n * Remove the transfer - terminating it if necessary - from Connect.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#removeTransfer\n * @param {String} transferId The ID(`uuid`) of the transfer to delete.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{@link TransferSpec}`\n * @return {null}\n */\n this.removeTransfer = removeTransfer;\n function resumeTransfer(transferId, options, callbacks) {\n var request = new Request()\n .setName('resumeTransfer')\n .setMethod(HTTP_METHOD.POST)\n .setParam(transferId)\n .setBody(options)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return window.AsperaMobile.resumeTransfer(transferId, {});\n }\n else {\n throw new Error('resumeTransfer: No transfer method is available for resuming a transfer');\n }\n }\n /**\n * Resume a transfer that was stopped.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#resumeTransfer\n * @param {String} transferId The ID(`uuid`) of the transfer to resume\n * @param {Object} options A subset of {@link TransferSpec}\n *\n * Options:\n * * `token`\n * * `cookie`\n * * `authentication`\n * * `remote_user`\n * * `remote_password`\n * * `content_protection_passphrase`\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n *\n * Object returned to success callback:\n * `{@link TransferSpec}`\n * @return {null}\n */\n this.resumeTransfer = resumeTransfer;\n /**\n * Sets drag and drop options for the element given in the cssSelector. Please note that\n * the `dragDropEnabled` option must have been set to `true` when creating the {@link AW4.Connect}\n * object.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#setDragDropTargets\n * @param {String} cssSelector CSS selector for drop targets.\n * @param {Object} [options] Drag and drop options for these targets.\n *\n * Options:\n * * `dragEnter` (Boolean) - `true` if drag enter event should trigger the listener. Default: `false`.\n * * `dragOver` (Boolean) - `true` if drag over event should trigger the listener. Default: `false`.\n * * `dragLeave` (Boolean) - `true` if drag leave event should trigger the listener. Default: `false`.\n * * `drop` (Boolean) - `true` if drop event should trigger the listener. Default: `true`.\n * * `allowPropagation` (Boolean) - `true` allow further propagation of events. Default: `false`.\n * @param {Function} listener Function to be called when each of the events occurs.\n *\n * Format:\n * ```\n * function(event, files) { ... }\n * ```\n * * `event` (Object) - DOM Event object as implemented by the browser.\n * * `files` (Object) - See {@link dataTransfer}. This is only valid on `drop` events.\n * @return {null|Error}\n */\n this.setDragDropTargets = function (cssSelector, options, listener) {\n if (!DRAGDROP_ENABLED) {\n return Utils.createError(-1, 'Drop is not enabled in the initialization ' +\n 'options, please instantiate Connect again with the dragDropEnabled option set to true.');\n }\n if (typeof listener !== 'function') {\n return Utils.createError(-1, 'You must provide a valid listener');\n }\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n return Utils.createError(-1, 'You must provide a valid options object');\n }\n var elements = document.querySelectorAll(cssSelector);\n if (elements.length === 0) {\n return Utils.createError(-1, 'No valid elements for the selector given');\n }\n var dragListener = function (evt) {\n if (!options.allowPropagation) {\n evt.stopPropagation();\n }\n evt.preventDefault();\n listener({ event: evt });\n };\n // Needed for the Drop event to be called\n var dragOverListener = function (evt) {\n if (!options.allowPropagation) {\n evt.stopPropagation();\n }\n evt.preventDefault();\n if (options.dragOver === true) {\n listener({ event: evt });\n }\n };\n var dropListener = function (evt) {\n if (!options.allowPropagation) {\n evt.stopPropagation();\n }\n if (!options.disablePreventDefault) {\n evt.preventDefault();\n }\n // Prepare request and create a valid JSON object to be serialized\n var filesDropped = evt.dataTransfer.files;\n var data = {\n dataTransfer: {\n files: []\n }\n };\n for (var i = 0; i < filesDropped.length; i++) {\n var fileObject = {\n 'lastModifiedDate': filesDropped[i].lastModifiedDate,\n 'name': filesDropped[i].name,\n 'size': filesDropped[i].size,\n 'type': filesDropped[i].type\n };\n data.dataTransfer.files.push(fileObject);\n }\n // Drop helper\n var dropHelper = function (response) {\n listener({ event: evt, files: response });\n };\n getDroppedFiles(data, {\n success: dropHelper\n });\n };\n for (var i = 0; i < elements.length; i++) {\n // Independent from our implementation\n if (options.dragEnter === true) {\n elements[i].addEventListener('dragenter', dragListener);\n }\n if (options.dragLeave === true) {\n elements[i].addEventListener('dragleave', dragListener);\n }\n if (options.dragOver === true || options.drop !== false) {\n elements[i].addEventListener('dragover', dragOverListener);\n }\n if (options.drop !== false) {\n elements[i].addEventListener('drop', dropListener);\n }\n }\n };\n function getDroppedFiles(data, callbacks) {\n if (!DRAGDROP_ENABLED) {\n return Utils.createError(-1, 'Drop is not enabled in the initialization ' +\n 'options, please instantiate Connect again with the dragDropEnabled option set to true.');\n }\n var request = new Request()\n .setName('droppedFiles')\n .setMethod(HTTP_METHOD.POST)\n .setBody(data);\n send(request, callbacks);\n }\n /**\n * Gets drag and drop files. Please note that the `dragDropEnabled` option must have been set to `true`\n * when creating the {@link AW4.Connect} object.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#getDroppedFiles\n * @param {DragDropDataTransfer} data Data transfer object.\n * @param {Callbacks} callbacks Error and Success callbacks.\n *\n * @return {null|Error}\n */\n this.getDroppedFiles = getDroppedFiles;\n function showAbout(callbacks) {\n var request = new Request()\n .setName('showAbout')\n .setMethod(HTTP_METHOD.GET);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('showAbout: No method is available for opening the about window');\n }\n }\n /**\n * Displays the IBM Aspera Connect \"About\" window.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showAbout\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.showAbout = showAbout;\n function showDirectory(transferId, callbacks) {\n var request = new Request()\n .setName('showDirectory')\n .setMethod(HTTP_METHOD.GET)\n .setParam(transferId)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('showDirectory: No method is available for opening directory');\n }\n }\n /**\n * Open the destination directory of the transfer using the system file\n * browser.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showDirectory\n * @param {String} transferId The ID(`uuid`) of the transfer to show files for.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.showDirectory = showDirectory;\n function showPreferences(callbacks) {\n var request = new Request()\n .setName('showPreferences')\n .setMethod(HTTP_METHOD.GET);\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n /**\n * Displays the IBM Aspera Connect \"Preferences\" window.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showPreferences\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.showPreferences = showPreferences;\n function showPreferencesPage(options, callbacks) {\n var allowedPages = ['general', 'transfers', 'bandwidth', 'network', 'security'];\n if (options && options.page && allowedPages.indexOf(options.page) > -1) {\n var request = new Request()\n .setName('showPreferencesPage')\n .setMethod(HTTP_METHOD.GET)\n .setParam(options.page);\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('#showPreferencesPage options argument is either missing or incorrect.');\n }\n }\n /**\n * Displays the IBM Aspera Connect \"Preferences\" window opened to a specifiic page.\n *\n * *This method is asynchronous*\n *\n * @function\n * @name AW4.Connect#showPreferencesPage\n * @param {options} options Options used when opening preferences.\n *\n * Options:\n * * `page` (String) - `general`, `transfers`, `network`, `bandwidth`, `security`\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.showPreferencesPage = showPreferencesPage;\n /**\n * Displays a file chooser dialog for the user to pick a \"save-to\" path.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showSaveFileDialog\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * See `{@link dataTransfer}`.\n * @param {Object} [options] File chooser options\n *\n * Options:\n * * `allowedFileTypes` ({@link FileFilters}) - Filter the files displayed by file extension.\n * * `suggestedName` (String) - The file name to pre-fill the dialog with.\n * * `title` (String) - The name of the dialog window.\n * @return {null|Error}\n */\n this.showSaveFileDialog = function (callbacks, options) {\n var localOptions = {};\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n localOptions.title = options.title || '';\n localOptions.suggestedName = options.suggestedName || '';\n localOptions.allowedFileTypes = options.allowedFileTypes || '';\n var request = new Request()\n .setName('showSaveFileDialog')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions);\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n throw new Error('Must provide callbacks.');\n }\n };\n /**\n * Displays a file browser dialog for the user to select files. The select file\n * dialog call(s) may be separated in time from the later startTransfer(s) call,\n * but they must occur in the same Connect session.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showSelectFileDialog\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * See `{@link dataTransfer}`.\n * @param {Object} [options] File chooser options\n *\n * Options:\n * * `allowedFileTypes` ({@link FileFilters}) - Filter the files displayed by file extension.\n * * `allowMultipleSelection` (Boolean) - Allow the selection of multiple\n * files. Default: `true`.\n * * `title` (String) - The name of the dialog window.\n * @return {null|Error}\n */\n this.showSelectFileDialog = function (callbacks, options) {\n var localOptions = {};\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n localOptions.title = options.title || '';\n localOptions.suggestedName = options.suggestedName || '';\n localOptions.allowMultipleSelection = Utils.isNullOrUndefinedOrEmpty(options.allowMultipleSelection) || options.allowMultipleSelection;\n localOptions.allowedFileTypes = options.allowedFileTypes || '';\n var request = new Request()\n .setName('showSelectFileDialog')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions);\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n throw new Error('Must provide callbacks.');\n }\n };\n /**\n * Displays a file browser dialog for the user to select files. The select file\n * dialog call(s) may be separated in time from the later startTransfer(s) call,\n * but they must occur in the same Connect session.\n *\n * @function\n * @name AW4.Connect#showSelectFileDialogPromise\n * @param {Object} [options] File chooser options\n *\n * Options:\n * * `allowedFileTypes` ({@link FileFilters}) - Filter the files displayed by file extension.\n * * `allowMultipleSelection` (Boolean) - Allow the selection of multiple\n * files. Default: `true`.\n * * `title` (String) - The name of the dialog window.\n * @return {Promise<dataTransfer>}\n */\n this.showSelectFileDialogPromise = function (options) {\n var localOptions = {};\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n localOptions.title = options.title || '';\n localOptions.suggestedName = options.suggestedName || '';\n localOptions.allowMultipleSelection = Utils.isNullOrUndefinedOrEmpty(options.allowMultipleSelection) || options.allowMultipleSelection;\n localOptions.allowedFileTypes = options.allowedFileTypes || '';\n var request = new Request()\n .setName('showSelectFileDialog')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions);\n if (connectRunning) {\n return send(request);\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return window.AsperaMobile.showSelectFileDialog();\n }\n else {\n throw new Error('showSelectFileDialogPromise: No method is available for opening the file dialog');\n }\n };\n /**\n * Displays a file browser dialog for the user to select directories. The select\n * folder dialog call(s) may be separated in time from the later startTransfer(s)\n * call, but they must occur in the same Connect session.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showSelectFolderDialog\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * See `{@link dataTransfer}`.\n * @param {Object} [options] File chooser options\n *\n * Options:\n * * `allowMultipleSelection` (Boolean) - Allow the selection of multiple\n * folders. Default: `true`.\n * * `title` (String) - The name of the dialog window.\n * @return {null|Error}\n */\n this.showSelectFolderDialog = function (callbacks, options) {\n var localOptions = {};\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n localOptions.title = options.title || '';\n localOptions.allowMultipleSelection = Utils.isNullOrUndefinedOrEmpty(options.allowMultipleSelection) || options.allowMultipleSelection;\n var request = new Request()\n .setName('showSelectFolderDialog')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions);\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n throw new Error('Must provide callbacks.');\n }\n };\n /**\n * Displays a file browser dialog for the user to select directories. The select\n * folder dialog call(s) may be separated in time from the later startTransfer(s)\n * call, but they must occur in the same Connect session.\n *\n * @function\n * @name AW4.Connect#showSelectFolderDialogPromise\n * @param {Object} [options] File chooser options\n *\n * Options:\n * * `allowMultipleSelection` (Boolean) - Allow the selection of multiple\n * folders. Default: `true`.\n * * `title` (String) - The name of the dialog window.\n * @return {Promise<dataTransfer>}\n */\n this.showSelectFolderDialogPromise = function (options) {\n var localOptions = {};\n if (Utils.isNullOrUndefinedOrEmpty(options)) {\n options = {};\n }\n localOptions.title = options.title || '';\n localOptions.allowMultipleSelection = Utils.isNullOrUndefinedOrEmpty(options.allowMultipleSelection) || options.allowMultipleSelection;\n var request = new Request()\n .setName('showSelectFolderDialog')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions);\n if (connectRunning) {\n return send(request);\n }\n else {\n throw new Error('showSelectFolderDialogPromise: No method is available for opening the folder dialog');\n }\n };\n function showTransferManager(callbacks) {\n var request = new Request()\n .setName('showTransferManager')\n .setMethod(HTTP_METHOD.GET);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('showTransferManager: No method is available for opening the transfer manager');\n }\n }\n /**\n * Displays the IBM Aspera Connect \"Activity\" window.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showTransferManager\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.showTransferManager = showTransferManager;\n function showTransferMonitor(transferId, callbacks) {\n var request = new Request()\n .setName('showTransferMonitor')\n .setMethod(HTTP_METHOD.GET)\n .setParam(transferId)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('showTransferMonitor: No method is available for opening the transfer monitor');\n }\n }\n /**\n * Displays the IBM Aspera Connect \"Transfer Monitor\" window for the transfer.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#showTransferMonitor\n * @param {String} transferId The ID(`uuid`) of the corresponding transfer.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.showTransferMonitor = showTransferMonitor;\n /**\n * Start looking for Connect. Please note that this is called internally by {@link AW4.Connect#initSession}\n * and it should only be called directly after a call to {@link AW4.Connect#stop}.\n *\n * @function\n * @name AW4.Connect#start\n * @return {null|Error}\n */\n this.start = function () {\n if (Utils.isNullOrUndefinedOrEmpty(APPLICATION_ID)) {\n return Utils.createError(-1, 'Please call #initSession first.');\n }\n // Initialize Mobile Connect if detected\n if (Utils.isMobile() && window.AsperaMobile) {\n var version_1 = window.AsperaMobile.version();\n Logger.debug(\"Detected mobile app version: \".concat(version_1));\n // Can enforce minimum version here\n if (version_1) {\n setConnectStatus(STATUS.RUNNING);\n connectReady();\n }\n else {\n setConnectStatus(STATUS.FAILED);\n }\n return;\n }\n /** Initialize Desktop Connect */\n requestHandler.init().then(function () {\n Logger.debug(\"Initialization finished. Connect status: \".concat(connectStatus));\n /** Make sure to mark Connect is ready if for some reason it's not already so we don't block requests */\n if (!connectRunning && connectStatus === STATUS.RUNNING) {\n connectReady();\n }\n if (connectStatus !== STATUS.RUNNING) {\n Logger.debug('Connect API is not ready.');\n }\n }).catch(function (error) {\n Logger.error('Could not initialize Connect.', error);\n });\n };\n /**\n * Initiates a single transfer. Call {@link AW4.Connect#getAllTransfers} to get transfer\n * statistics, or register an event listener through {@link AW4.Connect#addEventListener}.\n *\n * Return format:\n * ```\n * {\n * \"request_id\": \"bb1b2e2f-3002-4913-a7b3-f7aef4e79132\"\n * }\n * ```\n * The `request_id`, which is returned immediately, may be used for matching\n * this transfer with its events.\n *\n * @function\n * @name AW4.Connect#startTransfer\n * @param {TransferSpec} transferSpec Transfer parameters.\n * @param {ConnectSpec} connectSpec Connect options\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n * This call is successful if Connect is able to start the\n * transfer. Note that an error could still occur after the transfer starts,\n * e.g. if authentication fails. Use {@link AW4.Connect#addEventListener} to\n * receive notifications about errors that occur during a transfer session.\n * This call fails if validation fails or the user rejects the transfer.\n *\n * Object returned to success callback:\n * `{@link TransferSpecs}`\n *\n * @returns {Object|Error}\n */\n function startTransfer(transferSpec, connectSpec, callbacks) {\n if (Utils.isNullOrUndefinedOrEmpty(transferSpec)) {\n throw new Error('#startTransfer transferSpec is missing or invalid');\n }\n var settings = connectSpec || {};\n var localCallbacks = callbacks || {};\n var transferSpecs = {\n transfer_specs: [{\n transfer_spec: transferSpec,\n aspera_connect_settings: settings\n }]\n };\n return startTransfers(transferSpecs, localCallbacks);\n }\n this.startTransfer = startTransfer;\n /**\n * Initiates a single transfer. Call {@link AW4.Connect#getAllTransfers} to get transfer\n * statistics, or register an event listener through {@link AW4.Connect#addEventListener}.\n *\n * @function\n * @name AW4.Connect#startTransferPromise\n * @param {TransferSpec} transferSpec Transfer parameters.\n * @param {ConnectSpec} connectSpec Connect options\n *\n * @returns {Promise<TransferSpecs>}\n */\n function startTransferPromise(transferSpec, connectSpec) {\n if (Utils.isNullOrUndefinedOrEmpty(transferSpec)) {\n throw new Error('#startTransfer transferSpec is missing or invalid');\n }\n var settings = connectSpec || {};\n var transferSpecs = {\n transfer_specs: [{\n transfer_spec: transferSpec,\n aspera_connect_settings: settings\n }]\n };\n if (connectRunning) {\n return startTransfers(transferSpecs);\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return window.AsperaMobile.startTransfer(transferSpec);\n }\n else {\n throw new Error('startTransferPromise: No transfer method is available for starting a transfer');\n }\n }\n this.startTransferPromise = startTransferPromise;\n function startTransfers(transferSpecs, callbacks) {\n var requestId = Utils.generateUuid();\n var request = new Request()\n .setName('startTransfer')\n .setMethod(HTTP_METHOD.POST)\n .setBody(transferSpecs)\n .setRequestId(requestId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n return { request_id: requestId };\n }\n else {\n return send(request);\n }\n }\n else {\n throw new Error('startTransfers: No transfer method is available for starting a transfer');\n }\n }\n /**\n * Initiates one or more transfers (_currently only the first `transfer_spec`\n * is used_). It's recommended to instead use {@link AW4.Connect#startTransfer}. Call {@link AW4.Connect#getAllTransfers} to get transfer\n * statistics, or register an event listener through {@link AW4.Connect#addEventListener}.\n *\n * *This method is asynchronous.*\n *\n * Return format:\n * ```\n * {\n * \"request_id\": \"bb1b2e2f-3002-4913-a7b3-f7aef4e79132\"\n * }\n * ```\n * The `request_id`, which is returned immediately, may be used for matching\n * this transfer with its events.\n *\n * @function\n * @name AW4.Connect#startTransfers\n * @param {Object} transferSpecs Transfer parameters.\n *\n * Format:\n * See {@link TransferSpecs}\n * @param {Callbacks} callbacks `success` and `error` functions to receive results.\n * This call is successful if Connect is able to start the\n * transfer. Note that an error could still occur after the transfer starts,\n * e.g. if authentication fails. Use {@link AW4.Connect#addEventListener} to\n * receive notifications about errors that occur during a transfer session.\n * This call fails if validation fails or the user rejects the transfer.\n *\n * Object returned to success callback:\n * {@link TransferSpecs}\n *\n * @returns {Object|Error}\n */\n this.startTransfers = startTransfers;\n /**\n * Stop all requests from Connect to restart activity, please\n * create a new {@link AW4.Connect} object or call {@link AW4.Connect#start}.\n *\n * @function\n * @name AW4.Connect#stop\n * @return {Boolean}\n */\n this.stop = function () {\n return requestHandler.stopRequests();\n };\n function stopTransfer(transferId, callbacks) {\n var request = new Request()\n .setName('stopTransfer')\n .setMethod(HTTP_METHOD.POST)\n .setParam(transferId)\n .setValidator(validateTransferId);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return window.AsperaMobile.stopTransfer(transferId);\n }\n else {\n throw new Error('stopTransfer: No method is available for stopping a transfer');\n }\n }\n /**\n * Terminate the transfer. Use {@link AW4.Connect#resumeTransfer} to resume.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#stopTransfer\n * @param {String} transferId The ID(`uuid`) of the transfer to stop.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n * @return {null}\n */\n this.stopTransfer = stopTransfer;\n function testSshPorts(options, callbacks) {\n var localOptions = {};\n localOptions.remote_host = options.remote_host;\n localOptions.ssh_port = options.ssh_port || 33001;\n localOptions.timeout_sec = options.timeout_sec || 3;\n var request = new Request()\n .setName('testSshPorts')\n .setMethod(HTTP_METHOD.POST)\n .setBody(localOptions);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return window.AsperaMobile.testSshPorts(localOptions);\n }\n else {\n throw new Error('testSshPorts: No method is available for testing ports');\n }\n }\n /**\n * Test that Connect can open a TCP connection to `remote_host` over the given `ssh_port`.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#testSshPorts\n * @param {Object} options Test options.\n * Options:\n * * `remote_host` (String) - Domain name of the transfer server.\n * * `ssh_port` (Number) - SSH port. Default: `33001`.\n * * `timeout_sec` (Number) - Timeout value in seconds. Default: `3`.\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * `{}`\n *\n *\n * @return {null}\n */\n this.testSshPorts = testSshPorts;\n function version(callbacks) {\n var request = new Request()\n .setName('version')\n .setMethod(HTTP_METHOD.GET);\n if (connectRunning) {\n if (callbacks) {\n send(request, callbacks);\n }\n else {\n return send(request);\n }\n }\n else if (mobileConnectRunning && window.AsperaMobile) {\n return new Promise(function (resolve) {\n var _a;\n var version = (_a = window.AsperaMobile) === null || _a === void 0 ? void 0 : _a.version();\n resolve(version);\n });\n }\n else {\n throw new Error('version: No method is available for checking Connect version');\n }\n }\n /**\n * Get the IBM Aspera Connect version and installation context.\n *\n * *This method is asynchronous.*\n *\n * @function\n * @name AW4.Connect#version\n * @param {Callbacks} callbacks `success` and `error` functions to receive\n * results.\n *\n * Object returned to success callback:\n * ```\n * {\n * \"system_wide\": false,\n * \"version\": \"3.9.1.171801\"\n * }\n * ```\n * @return {null}\n */\n this.version = version;\n};\n/**\n * AW4.Connect.EVENT\n *\n * @typedef {Object} EVENT\n * @property {string} ALL=\"all\" all event\n * @property {string} TRANSFER=\"transfer\" transfer event\n * @property {string} STATUS=\"status\" status event\n * @example\n *\n * AW4.Connect.EVENT.ALL // returns \"all\"\n * AW4.Connect.EVENT.STATUS // returns \"status\"\n * AW4.Connect.EVENT.TRANSFER // returns \"transfer\"\n */\nConnect.EVENT = EVENT;\nConnect.HTTP_METHOD = HTTP_METHOD;\n/**\n * AW4.Connect.STATUS\n *\n * @typedef {Object} STATUS\n * @property {string} INITIALIZING=\"INITIALIZING\" initializing status event\n * @property {string} RETRYING=\"RETRYING\" retrying status event\n * @property {string} RUNNING=\"RUNNING\" running status event\n * @property {string} OUTDATED=\"OUTDATED\" outdated status event\n * @property {string} FAILED=\"FAILED\" failed status event\n * @property {string} EXTENSION_INSTALL=\"EXTENSION_INSTALL\" extension install event type\n * @example\n *\n * AW4.Connect.STATUS.INITIALIZING // returns \"INITIALIZING\"\n * AW4.Connect.STATUS.RETRYING // returns \"RETRYING\"\n * // etc...\n */\nvar localStatus = Utils.copyObject(STATUS);\ndelete localStatus.DEGRADED;\ndelete localStatus.STOPPED;\ndelete localStatus.WAITING;\nConnect.STATUS = localStatus;\n/**\n * AW4.Connect.TRANSFER_STATUS\n *\n * The possible states of a transfer reported by`status` in {@link TransferInfo}.\n *\n * @typedef {Object} TRANSFER_STATUS\n * @property {String} CANCELLED=\"cancelled\" The user stopped the transfer.\n * @property {String} COMPLETED=\"completed\" The transfer finished successfully.\n * @property {String} FAILED=\"failed\" The transfer had an error.\n * @property {String} INITIATING=\"initiating\" The transfer reqeust was accepted. Now\n * starting transfer.\n * @property {String} QUEUED=\"queued\" The transfer is waiting for other transfers to finish.\n * The queue is configurable in Connect.\n * @property {String} REMOVED=\"removed\" The user deleted the transfer.\n * @property {String} RUNNING=\"running\" Transfer in progress.\n * @property {String} WILLRETRY=\"willretry\" Transfer waiting to retry after a\n * recoverable error.\n */\nConnect.TRANSFER_STATUS = TRANSFER_STATUS;\nexport { Connect };\n/**\n * The data format for statistics for all existing transfers.\n * See {@link TransferInfo}\n *\n * @typedef {Object} AllTransfersInfo\n * @property {Number} iteration_token=0 A marker that represents the moment in time\n * that the transfer status was retrieved. If it is passed as an argument to\n * a {@link AW4.Connect#getAllTransfers} call, the response returned will only contain transfers\n * that have had activity since the previous call. Note that this token persists\n * even if the user restarts Connect.\n * @property {Number} result_count=0 The number of {@link TransferInfo} objects returned\n * {@link AllTransfersInfo.transfers}.\n * @property {Array} transfers An array that contains {@link TransferInfo} objects.\n *\n * @example\n * {\n * \"iteration_token\": 28,\n * \"result_count\": 3,\n * \"transfers\": [\n * {@link TransferInfo},\n * {@link TransferInfo},\n * {@link TransferInfo}\n * ]\n * }\n */\n/**\n * The data format for statistics for on transfer session.\n *\n * See {@link TransferSpec} and {@link AsperaConnectSettings} for definitions.\n *\n * @typedef {Object} TransferInfo\n * @property {String} add_time The time when the transfer was added (according\n * to the system's clock).\n * @property {Object} aspera_connect_settings {@link AsperaConnectSettings}\n * @property {Number} bytes_expected The number of bytes that are still\n * remaining to be written.\n * @property {Number} bytes_written The number of bytes that have already been\n * written to disk.\n * @property {Number} calculated_rate_kbps The current rate of the transfer in kbps.\n * @property {String} current_file The full path of the current file.\n * @property {Number} elapsed_usec The duration in microseconds of the transfer since it started\n * transferring.\n * @property {String} explorer_path The path opened in Explorer/Finder when user clicks\n * 'Open Containing Folder' in Connect's Activity window.\n * @property {String} end_time The time when the transfer was completed.\n * @property {Object} file_counts A running aggregate count of files in the transfer session\n * that have already been processed with information about the number of files attempted,\n * completed, failed, and skipped. Note: \"completed\" includes the number of files\n * transferred or skipped.\n *\n * Format:\n * ```\n * {\n * \"attempted\": 2,\n * \"completed\": 2,\n * \"failed\": 0,\n * \"skipped\": 1\n * }\n * ```\n * @property {Array} files A list of files that have been active in this\n * transfer session. Note that files that have not been active yet in this session\n * will not be reported (and you can assume bytes_written is 0).\n *\n * Format:\n * ```\n * [\n * {\n * \"bytes_expected\": 10485760,\n * \"bytes_written\": 1523456,\n * \"fasp_file_id\": \"3c40b511-5b2dfebb-a2e63483-9b58cb45-9cd9abff\",\n * \"file\": \"/Users/aspera/Downloads/connect_downloads/10MB.3\"\n * }, {\n * \"bytes_expected\": 10485760,\n * \"bytes_written\": 10485760,\n * \"fasp_file_id\": \"d5b7deea-2d5878f4-222661f6-170ce0f2-68880a6c\",\n * \"file\": \"/Users/aspera/Downloads/connect_downloads/10MB.2\"\n * }\n * ]\n * ```\n * @property {String} modify_time The last time the transfer was modified\n * @property {Number} percentage The progress of the transfer over 1.\n * @property {String} previous_status The previous status of the transfer.\n * @property {Number} remaining_usec The ETA of the transfer in microseconds.\n * @property {String} start_time The time when the transfer moved to initiating\n * status.\n * @property {String} status The status of the transfer. See {@link TRANSFER_STATUS}.\n * @property {String} title The name of the file.\n * @property {Number} transfer_iteration_token A marker that represents the moment\n * in time that the transfer status was checked.\n * @property {Object} transfer_spec {@link TransferSpec}\n * @property {\"fasp\"|\"http\"} transport=\"fasp\" `fasp` - (default) <br>\n * `http` - Set when a fasp transfer could not be performed and http fallback was used.\n * @property {String} uuid\n *\n * @example\n * {\n * \"add_time\": \"2012-10-05T17:53:16\",\n * \"aspera_connect_settings\": {@link AsperaConnectSettings},\n * \"bytes_expected\": 102400,\n * \"bytes_written\": 11616,\n * \"calculated_rate_kbps\": 34,\n * \"current_file\": \"/temp/tinyfile0001\",\n * \"elapsed_usec\": 3000000,\n * \"explorer_path\": \"/Users/aspera/Downloads/connect_downloads/10MB.3\",\n * \"end_time\": \"\",\n * \"file_counts\": {\n * \"attempted\": 1,\n * \"completed\": 1,\n * \"failed\": 0,\n * \"skipped\": 1\n * },\n * \"files\": [\n * {\n * \"bytes_expected\": 10485760,\n * \"bytes_written\": 1523456,\n * \"fasp_file_id\": \"3c40b511-5b2dfebb-a2e63483-9b58cb45-9cd9abff\",\n * \"file\": \"/Users/aspera/Downloads/connect_downloads/10MB.3\"\n * }, {\n * \"bytes_expected\": 10485760,\n * \"bytes_written\": 10485760,\n * \"fasp_file_id\": \"d5b7deea-2d5878f4-222661f6-170ce0f2-68880a6c\",\n * \"file\": \"/Users/aspera/Downloads/connect_downloads/10MB.2\"\n * }\n * ],\n * \"modify_time\": \"2012-10-05T17:53:18\",\n * \"percentage\": 0.113438,\n * \"previous_status\": \"initiating\",\n * \"remaining_usec\": 21000000,\n * \"start_time\": \"2012-10-05T17:53:16\",\n * \"status\": \"running\",\n * \"title\": \"tinyfile0001\",\n * \"transfer_iteration_token\": 18,\n * \"transfer_spec\": {@link TransferSpec},\n * \"transport\": \"fasp\",\n * \"uuid\": \"add433a8-c99b-4e3a-8fc0-4c7a24284ada\",\n * }\n */\n/**\n * The response returned to the {@link AW4.Connect#startTransfer} success callback.\n *\n * @typedef {Object} TransferSpecs\n * @property {Array} transfer_specs An array that contains {@link TransferSpec} and\n * {@link ConnectSpec} objects.\n *\n * @example\n * {\n * \"transfer_specs\": [\n * {\n * \"transfer_spec\": {@link TransferSpec},\n * \"aspera_connect_settings\": {@link ConnectSpec}\n * }\n * ]\n * }\n */\n/**\n * The parameters for starting a transfer.\n *\n * @typedef {Object} TransferSpec\n *\n * @property {\"password\"|\"token\"} [authentication=\"password\"] The type of authentication to use.\n * @property {\"none\"|\"aes-128\"} [cipher=\"aes-128\"] The algorithm used to encrypt\n * data sent during a transfer. Use this option when transmitting sensitive data.\n * Increases CPU utilization.\n * @property {\"encrypt\"|\"decrypt\"} [content_protection] Enable content protection\n * (encryption-at-rest), which keeps files encrypted on the server. Encrypted\n * files have the extension \".aspera-env\". <br><br>\n * `encrypt` - Encrypt uploaded files. If `content_protection_passphrase` is\n * not specified, Connect will prompt for the passphrase. <br><br>\n * `decrypt` - Decrypt downloaded fiels. If `content_protection_passphrase` is\n * not specified, Connect will prompt for the passphrase.\n * @property {String} [content_protection_passphrase] A passphrase to encrypt or\n * decrypt files when using `content_protection`.\n * @property {String} [cookie] Data to associate with the transfer. The cookie is\n * reported to both client and server-side applications monitoring fasp™ transfers.\n * It is often used by applications to identify associated transfers.\n * @property {Boolean} [create_dir=false] Creates the destination directory if it\n * does not already exist. When enabling this option, the destination path is\n * assumed to be a directory path.\n * @property {Boolean} [obfuscate_file_names=false] If this value is `true`, Connect\n * will obfuscate all filenames. All files will be renamed to have random names.\n * Applies only to uploads. This is not reversible.\n * @property {String} [destination_root=\"/\"] The transfer destination file path.\n * If destinations are specified in `paths`, this value is prepended to each destination.\n *\n * Note that the download destination paths are relative to the user's Connect\n * download directory setting unless `ConnectSpec.use_absolute_destination_path`\n * is enabled.\n * @property {Number} [dgram_size] The IP datagram size for fasp™ to use. If not\n * specified, fasp™ will automatically detect and use the path MTU as the\n * datagram size. Use this option only to satisfy networks with strict MTU\n * requirements.\n * @property {\"send\"|\"receive\"} direction Whether to perform an upload or download.\n *\n * `send` - Upload <br>\n * `receive` - Download\n * @property {Number} [fasp_port=33001] The UDP port for fasp™ to use. The default value\n * is satisfactory for most situations. However, it can be changed to satisfy\n * firewall requirements.\n * @property {Boolean} [http_fallback=false] Attempts to perform an HTTP transfer\n * if a fasp™ transfer cannot be performed.\n * @property {Number} [http_fallback_port] The port where the Aspera HTTP server is\n * servicing HTTP transfers. Defaults to port 443 if a `cipher` is enabled, or\n * port 80 otherwise.\n * @property {Boolean} [lock_min_rate=false] Prevents the user from changing the\n * minimum rate during a transfer.\n * @property {Boolean} [lock_rate_policy=false] Prevents the user from changing the\n * rate policy during a transfer.\n * @property {Boolean} [lock_target_rate=false] Prevents the user from changing the\n * target rate during a transfer.\n * @property {Number} [min_rate_kbps] The minimum speed of the transfer. fasp™\n * will only share bandwidth exceeding this value.\n *\n * Note: This value has no effect if `rate_policy` is `fixed`.\n *\n * Default: Server-side minimum rate default setting (aspera.conf). Will respect\n * both local and server-side minimum rate caps if set.\n * @property {\"always\"|\"none\"|\"diff\"|\"older\"|\"diff+older\"} [overwrite_policy=\"diff\"] Overwrite\n * destination files with the source files of the same name.\n *\n * `none` - Never overwrite the file. However, if the parent folder is not empty,\n * its access, modify, and change times may still be updated.\n *\n * `always` - Always overwrite the file. The destination file will be overwritten\n * even if it is identical to the source.\n *\n * `diff` - Overwrite the file if it is different from the source, depending on\n * the `resume` property.\n *\n * `older` - Overwrite the file if its timestamp is older than the source timestamp.\n *\n * `diff+older` - Overwrite the file if it is older and different than the source,\n * depending on the `resume` property.\n *\n * If the `overwrite_policy` is `diff` or `diff+older`, difference is determined by\n * the `resume` property. If `resume` is empty or `none` is specified, the source\n * and destination files are always considered different and the destination file\n * is always overwritten. If `attributes`, the source and destination files are\n * compared based on file attributes (currently file size). If `sparse_checksum`,\n * the source and destination files are compared based on sparse checksum. If `full_checksum`,\n * the source and destination files are compared based on full checksum.\n * @property {Array} paths A list of the file and directory paths to transfer.\n * Use `destination_root` to specify the destination directory.\n *\n * *Source list format*\n * ```\n * [\n * {\n * \"source\": \"/foo\"\n * }, {\n * \"source\": \"/bar/baz\"\n * },\n * ...\n * ]\n * ```\n * Optionally specify a destination path - including the file name - for each file.\n * This format is useful for renaming files or sending to different destinations.\n * Note that for this format all paths must be file paths (not directory paths).\n *\n * *Source-Destination pair format*\n * ```\n * [\n * {\n * \"source\": \"/foo\",\n * \"destination\": \"/qux/foofoo\"\n * }, {\n * \"source\": \"/bar/baz\",\n * \"destination\": \"/qux/bazbaz\"\n * },\n * ...\n * ]\n * ```\n * @property {\"fixed\"|\"high\"|\"fair\"|\"low\"} [rate_policy=\"fair\"] The congestion\n * control behavior to use when sharing bandwidth.\n *\n * `fixed` - Transfer at the target rate regardless of actual network capacity.\n * Do not share bandwidth.\n *\n * `high` - When sharing bandwidth, transfer at twice the rate of a transfer using\n * \"fair\" policy.\n *\n * `fair` - Share bandwidth equally with other traffic.\n *\n * `low` - Use only unutilized bandwidth.\n * @property {String} remote_host The fully qualified domain name or IP address\n * of the transfer server.\n * @property {String} [remote_password] The password to use when `authentication`\n * is set to `password`. If this value is not specified, Connect will prompt\n * the user.\n * @property {String} [remote_user] The username to use for authentication. For\n * password authentication, if this value is not specified, Connect will prompt\n * the user.\n * @property {\"none\"|\"attributes\"|\"sparse_checksum\"|\"full_checksum\"} [resume=\"sparse_checksum\"]\n * The policy to use when resuming partially transferred (incomplete) files.\n *\n * `none` - Transfer the entire file again.\n *\n * `attributes` - Resume if the files' attributes match.\n *\n * `sparse_checksum` - Resume if the files' attributes and sparse (fast) checksums\n * match.\n *\n * `full_checksum` - Resume if the files' attributes and full checksums match.\n * Note that computing full checksums of large files takes time, and heavily\n * utilizes the CPU.\n * @property {\"yes\"|\"no\"} [save-before-overwrite=\"no\"] If a transfer would result\n * in an existing file being overwritten, move that file to\n * `<filename>.yyyy.mm.dd.hh.mm.ss.index.<ext>` in the same directory before writing\n * the new file. File attributes are maintained in the renamed file.\n *\n * Note: `resume` must be set to `\"none\"` for this to take effect.\n * @property {String} [source_root=\"/\"] A path to prepend to the source paths specified\n * in `paths`. If this is not specified, then `paths` should contain absolute\n * paths.\n * @property {Number} [ssh_port=33001] The server's TCP port that is listening\n * for SSH connections. fasp™ initiates transfers through SSH.\n * @property {Number} [target_rate_cap_kbps] Limit the transfer rate that the\n * user can adjust the target and minimum rates to. Default: no limit.\n * @property {Number} [target_rate_kbps] The desired speed of the transfer. If\n * there is competing network traffic, fasp™ may share this bandwidth, depending\n * on the `rate_policy`.\n *\n * Default: Server-side target rate default setting (aspera.conf). Will respect\n * both local and server-side target rate caps if set.\n * @property {String} [token] Used for token-based authorization, which involves\n * the server-side application generating a token that gives the client rights\n * to transfer a predetermined set of files.\n *\n * @example\n * ##### Minimal example\n * {\n * \"paths\": [\n * {\n * \"source\": \"/foo/1\"\n * }\n * ],\n * \"remote_host\": \"10.0.203.80\",\n * \"remote_user\": \"aspera\",\n * \"direction\": \"send\"\n * }\n *\n * ##### Download example\n * {\n * \"paths\": [\n * {\n * \"source\": \"tinyfile0001\"\n * }, {\n * \"source\": \"tinyfile0002\"\n * }\n * ],\n * \"obfuscate_file_names\": false,\n * \"overwrite_policy\": \"diff\",\n * \"remote_host\": \"demo.asperasoft.com\",\n * \"remote_user\": \"asperaweb\",\n * \"authentication\": \"password\",\n * \"remote_password\": \"**********\",\n * \"fasp_port\": 33001,\n * \"ssh_port\": 33001,\n * \"http_fallback\": true,\n * \"http_fallback_port\": 443,\n * \"direction\": \"receive\",\n * \"create_dir\": false,\n * \"source_root\": \"aspera-test-dir-tiny\",\n * \"destination_root\": \"/temp\",\n * \"rate_policy\": \"high\",\n * \"target_rate_kbps\": 1000,\n * \"min_rate_kbps\": 100,\n * \"lock_rate_policy\": false,\n * \"target_rate_cap_kbps\": 2000,\n * \"lock_target_rate\": false,\n * \"lock_min_rate\": false,\n * \"resume\": \"sparse_checksum\",\n * \"cipher\": \"aes-128\",\n * \"cookie\": \"foobarbazqux\",\n * \"dgram_size\": 1492,\n * \"preserve_times\": true,\n * \"tags\": {\n * \"your_company\": {\n * \"key\": \"value\"\n * }\n * }\n * }\n */\n/**\n * The data format for the connect web app parameters.\n *\n * @typedef {Object} AsperaConnectSettings\n * @property {String} app_id A secure, random identifier for all transfers\n * associated with this webapp. Do not hardcode this id. Do not use the same\n * id for different users. Do not including the host name, product name in the id.\n * Do not use monotonically increasing ids. If you do not provide one, a\n * random id will be generated for you and persisted in localStorage.\n * @property {String} back_link Link to the webapp.\n * @property {String} request_id Universally Unique IDentifier for the webapp.\n *\n * @example\n * {\n * \"app_id\": \"TUyMGQyNDYtM2M1NS00YWRkLTg0MTMtOWQ2OTkxMjk5NGM4\",\n * \"back_link\": \"http://demo.asperasoft.com\",\n * \"request_id\": \"36d3c2a4-1856-47cf-9865-f8e3a8b47822\"\n * }\n */\n/**\n * This object is returned if an error occurs. It contains an error code and a message.\n *\n * *Note that this is not related to the Javascript `Error` object, but is used\n * only to document the format of errors returned by this API.*\n *\n * @typedef {Object} Error\n *\n * @example\n * {\n * \"error\": {\n * \"code\": Number,\n * \"internal_message\": String,\n * \"user_message\": String\n * }\n * }\n */\n/**\n * This object can be passed to an asynchronous API call to get the results\n * of the call.\n *\n * #### Format\n * ```\n * {\n * success: function(Object) { ... },\n * error: function(Error) { ... }\n * }\n * ```\n * The argument passed to the `success` function depends on the original method\n * invoked. The argument to the `error` function is an {@link Error} object.\n *\n * If an Error is thrown during a callback, it is logged to window.console\n * (if supported by the browser).\n *\n * @typedef {Object} types.Callbacks\n */\n/**\n * This object holds the data of the files that have been selected by the user. It\n * may hold one or more data items.\n *\n * #### Format\n * ```\n * {\n * \"dataTransfer\" : {\n * \"files\": [\n * {\n * \"lastModifiedDate\": \"Wed Jan 24 12:22:02 2019\",\n * \"name\": \"/Users/aspera/Desktop/foo.txt\",\n * \"size\": 386,\n * \"type\": \"text/plain\"\n * },\n * {\n * \"lastModifiedDate\": \"Mon Jan 22 18:01:02 2019\",\n * \"name\": \"/Users/aspera/Desktop/foo.rb\",\n * \"size\": 609,\n * \"type\": \"text/x-ruby-script\"\n * }\n * ]\n * }\n * }\n * ```\n *\n * @typedef {Object} dataTransfer\n */\n/**\n * A set of file extension filters.\n *\n * #### Example\n * ```\n * [\n * {\n * filter_name : \"Text file\",\n * extensions : [\"txt\"]\n * },\n * {\n * filter_name : \"Image file\",\n * extensions : [\"jpg\", \"png\"]\n * },\n * {\n * filter_name : \"All types\",\n * extensions : [\"*\"]\n * }\n * ]\n * ```\n *\n * @typedef {Object} FileFilters\n */\n/**\n * Connect-specific parameters when starting a transfer.\n *\n * @typedef {Object} ConnectSpec\n * @property {Boolean} [allow_dialogs=true] If this value is `false`, Connect will no longer prompt or display windows\n * automatically, except to ask the user to authorize transfers if the server\n * is not on the list of trusted hosts.\n * @property {String} [back_link=URL of current page] A URL to associate with the transfer. Connect will display this link\n * in the context menu of the transfer.\n * @property {Boolean} [return_files=true] If this value is `false`, {@link TransferInfo} will not contain\n * `files`. Use this option to prevent performance deterioration\n * when transferring large number of files.\n * @property {Boolean} [return_paths=true] If this value is `false`, the `transfer_spec` property in {@link TransferInfo} will not contain\n * `paths`. Use this option to prevent performance deterioration\n * when specifying a large number of source paths.\n * @property {Boolean} [use_absolute_destination_path=false] By default, the destination of a download is relative to the user's Connect\n * download directory setting. Setting this value to `true` overrides this\n * behavior, using absolute paths instead.\n *\n * @example\n * {\n * \"allow_dialogs\" : false,\n * \"back_link\" : \"www.foo.com\",\n * \"return_paths\" : false,\n * \"return_files\" : false,\n * \"use_absolute_destination_path\" : true\n * }\n */\n","import { __assign } from \"tslib\";\nimport 'es6-promise/auto';\nimport { Connect } from './connect';\nimport { getGlobalObject } from './core/aspera-web-global.model';\nimport { ConnectInstaller } from './installer';\nimport { Logger } from './logger';\nimport { Utils } from './utils';\nvar AW4 = { Connect: Connect, ConnectInstaller: ConnectInstaller, Logger: Logger, Utils: Utils };\nvar windowIntegrations = {};\nvar _window = getGlobalObject();\n// Needed for window integrations with AW4\nif (_window.AW4) {\n windowIntegrations = _window.AW4;\n}\nwindow.AW4 = __assign(__assign({}, AW4), windowIntegrations);\nexport * from './exports';\n","export function getGlobalObject() {\n return (typeof window === 'object' ? window : {});\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.websocketService = exports.WebsocketService = void 0;\nvar helpers_1 = require(\"./helpers\");\nvar messages_1 = require(\"../constants/messages\");\nvar index_1 = require(\"../index\");\nvar WebsocketService = /** @class */ (function () {\n function WebsocketService() {\n var _this = this;\n /** A map of requested subscription names and the callback for them */\n this.sockets = new Map();\n /** Indicator if the websocket is already connected */\n this.isConnected = false;\n /** Global promise object that resolves when init completes */\n this.initPromise = (0, helpers_1.generatePromiseObjects)();\n /**\n * This function handles when a connection is opened\n */\n this.handleOpen = function () {\n if (_this.isConnected || !_this.joinChannel()) {\n return;\n }\n _this.isConnected = true;\n _this.updateRpcPort();\n _this.notifyEvent('RECONNECT');\n };\n /**\n * This function handles completed subscription\n */\n this.handleClose = function () {\n if (_this.isConnected) {\n _this.isConnected = false;\n _this.notifyEvent('CLOSED');\n }\n if (!_this.globalSocket) {\n _this.handleNotReady();\n return;\n }\n _this.reconnect();\n };\n /**\n * This function handles errors received from the websocket\n */\n this.handleError = function () {\n (0, helpers_1.errorLog)(messages_1.messages.websocketClosedError);\n };\n /**\n * This function handles messages received from the websocket\n */\n this.handleMessage = function (message) {\n var data = (0, helpers_1.safeJsonParse)(message.data);\n // Message we get on subscription\n if (data && data.id === 1) {\n _this.initPromise.resolver(data);\n return;\n }\n var socket = _this.sockets.get(data.method);\n if (typeof socket === 'function' && data.params) {\n socket(data.params);\n }\n };\n }\n /** Log call for not being ready */\n WebsocketService.prototype.handleNotReady = function () {\n (0, helpers_1.errorLog)(messages_1.messages.websocketNotReady);\n };\n /**\n * This function joins the channel to be able to subscribe to events\n */\n WebsocketService.prototype.joinChannel = function () {\n if (!this.globalSocket) {\n this.handleNotReady();\n return false;\n }\n this.globalSocket.send((0, helpers_1.safeJsonString)({ jsonrpc: '2.0', method: 'subscribe_transfer_activity', params: [index_1.asperaSdk.globals.appId], id: 1 }));\n return true;\n };\n /**\n * This function registers clients to listen to a certain message name. Returns any to allow functions to declare proper type\n *\n * @param messageName - the name of messages to listen to (one message name per subscription)\n * @param callback - the callback function\n */\n WebsocketService.prototype.registerMessage = function (messageName, callback) {\n if (!this.sockets.get(messageName)) {\n this.sockets.set(messageName, function (data) {\n callback(data.result);\n });\n }\n };\n /**\n *\n * @param callback This function registers clients to a certain WebSocket event.\n *\n * @param callback - the callback function to call with the event name.\n */\n WebsocketService.prototype.registerEvent = function (callback) {\n this.eventListener = callback;\n this.eventListener(this.isConnected ? 'RECONNECT' : 'CLOSED');\n };\n /**\n * This function starts the websocket subscription with the websocket provider\n *\n * @returns a promise that resolves when the websocket connection is established\n */\n WebsocketService.prototype.init = function () {\n this.connect();\n return this.initPromise.promise;\n };\n WebsocketService.prototype.connect = function () {\n var _this = this;\n this.getWebSocketConnection(33024, index_1.asperaSdk.globals.supportMultipleUsers ? 33029 : 33024)\n .then(function (webSocket) {\n _this.globalSocket = webSocket;\n _this.globalSocket.onerror = _this.handleError;\n _this.globalSocket.onclose = _this.handleClose;\n _this.globalSocket.onopen = _this.handleOpen;\n _this.globalSocket.onmessage = _this.handleMessage;\n _this.handleOpen();\n }).catch(function () {\n _this.reconnect();\n });\n };\n WebsocketService.prototype.reconnect = function () {\n var _this = this;\n if (this.globalSocket) {\n this.globalSocket.close();\n }\n setTimeout(function () {\n _this.connect();\n }, 1000);\n };\n WebsocketService.prototype.getWebSocketConnection = function (startPort, endPort) {\n var webSocketUrl = (0, helpers_1.getWebsocketUrl)(index_1.asperaSdk.globals.asperaAppUrl);\n var checkPort = function (port) {\n return new Promise(function (resolve, reject) {\n var webSocket = new WebSocket(\"\".concat(webSocketUrl, \":\").concat(port));\n webSocket.onopen = function () {\n resolve(webSocket);\n };\n webSocket.onerror = function () {\n reject(\"Connection failed on port \".concat(port));\n };\n });\n };\n return new Promise(function (resolve, reject) {\n var connectPort = function (port) {\n if (port > endPort) {\n return reject('No available WebSocket connection found');\n }\n checkPort(port)\n .then(function (ws) { return resolve(ws); })\n .catch(function (error) {\n connectPort(port + 1);\n });\n };\n connectPort(startPort);\n });\n };\n WebsocketService.prototype.notifyEvent = function (event) {\n if (typeof this.eventListener === 'function') {\n this.eventListener(event);\n }\n };\n WebsocketService.prototype.updateRpcPort = function () {\n if (!this.globalSocket) {\n return;\n }\n var url = new URL(this.globalSocket.url);\n index_1.asperaSdk.globals.rpcPort = Number(url.port);\n };\n return WebsocketService;\n}());\nexports.WebsocketService = WebsocketService;\nexports.websocketService = new WebsocketService();\nexports.default = WebsocketService;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.safeJsonParse = exports.safeJsonString = exports.getInstallerUrls = exports.isSafari = exports.isValidURL = exports.throwError = exports.randomUUID = exports.getCurrentPlatform = exports.getWebsocketUrl = exports.isValidTransferSpec = exports.generateErrorBody = exports.errorLog = exports.generatePromiseObjects = void 0;\nvar constants_1 = require(\"../constants/constants\");\n/**\n * Generates promise object that can be resolved or rejected via functions\n *\n * @returns an object containing the promise, the resolver and rejecter\n */\nvar generatePromiseObjects = function () {\n var resolver;\n var rejecter;\n var promise = new Promise(function (resolve, reject) {\n resolver = resolve;\n rejecter = reject;\n });\n return {\n promise: promise,\n resolver: resolver,\n rejecter: rejecter\n };\n};\nexports.generatePromiseObjects = generatePromiseObjects;\n/**\n * Log errors from Aspera SDK\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n */\nvar errorLog = function (message, debugData) {\n if (debugData && debugData.code && debugData.message) {\n debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n if (typeof window === 'object') {\n if (!Array.isArray(window.asperaSdkLogs)) {\n window.asperaSdkLogs = [];\n }\n window.asperaSdkLogs.push({ message: message, debugData: debugData });\n }\n console.warn(\"Aspera SDK: \".concat(message), debugData);\n};\nexports.errorLog = errorLog;\n/**\n * Generate error object for rejecter responses\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns object containing standardized error response\n */\nvar generateErrorBody = function (message, debugData) {\n var errorResponse = {\n error: true,\n message: message\n };\n if (debugData && debugData.code && debugData.message) {\n errorResponse.debugData = {\n code: debugData.code,\n message: debugData.message,\n data: debugData.data\n };\n }\n return errorResponse;\n};\nexports.generateErrorBody = generateErrorBody;\n/**\n * Validate if transferSpec is valid for server communication\n *\n * @param transferSpec the transferSpec to test\n *\n * @returns boolean indicating whether supplied transferSpec is valid\n */\nvar isValidTransferSpec = function (transferSpec) {\n if (transferSpec &&\n typeof transferSpec === 'object' &&\n typeof transferSpec.direction === 'string' &&\n typeof transferSpec.remote_host === 'string' &&\n Array.isArray(transferSpec.paths)) {\n return true;\n }\n return false;\n};\nexports.isValidTransferSpec = isValidTransferSpec;\n/**\n * Returns a string indicating the websocket URL to use for talking to the server\n *\n * @returns a string of the full Websocket URL\n */\nvar getWebsocketUrl = function (serverUrl) {\n var wsProtocol;\n if (serverUrl.indexOf('http:') === 0) {\n wsProtocol = 'ws';\n }\n else if (serverUrl.indexOf('https:') === 0) {\n wsProtocol = 'wss';\n }\n var url = serverUrl.replace('http://', '//').replace('https://', '//');\n return \"\".concat(wsProtocol, \":\").concat(url);\n};\nexports.getWebsocketUrl = getWebsocketUrl;\n/**\n * Simple function to get the current platform.\n *\n * @returns a string indicating the current platform\n */\nvar getCurrentPlatform = function () {\n var ua = navigator.userAgent;\n if (/Mac/.test(ua)) {\n return 'macos';\n }\n else if (/Win/.test(ua)) {\n return 'windows';\n }\n else if (/Linux/.test(ua)) {\n return 'linux';\n }\n else {\n return 'unknown';\n }\n};\nexports.getCurrentPlatform = getCurrentPlatform;\n/**\n * Function used to create a random UUID\n *\n * @returns string\n */\nvar randomUUID = function () {\n var _a;\n var fallback = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Number(((new Date().getTime() + 16) * Math.random()).toFixed()) % 16;\n if (c !== 'x') {\n // eslint-disable-next-line no-bitwise\n r = r & 0x3 | 0x8;\n }\n return r.toString(16);\n });\n };\n return ((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) ? window.crypto.randomUUID() : fallback();\n};\nexports.randomUUID = randomUUID;\n/**\n * Return a rejected promise\n *\n * @param message the message indicating the error encountered\n * @param debugData the data with useful debugging information\n *\n * @returns a rejected promise\n */\nvar throwError = function (message, debugData) {\n (0, exports.errorLog)(message, debugData);\n return new Promise(function (resolve, reject) {\n reject((0, exports.generateErrorBody)(message, debugData));\n });\n};\nexports.throwError = throwError;\n/**\n * Check if the given string is a valid URL\n *\n * @param url string to check if valid URL\n *\n * @returns boolean\n */\nvar isValidURL = function (url) {\n try {\n new URL(url);\n return true;\n }\n catch (error) {\n return false;\n }\n};\nexports.isValidURL = isValidURL;\n/**\n * Checks if the current browser is Safari.\n * @returns {boolean} Whether the browser is Safari.\n */\nvar isSafari = function () {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && !window.MSStream;\n};\nexports.isSafari = isSafari;\n/**\n * Get the URLs for installer management.\n *\n * @returns Info on URLs where installers live\n */\nvar getInstallerUrls = function () {\n return {\n base: constants_1.baseInstallerUrl,\n latest: constants_1.installerUrl,\n };\n};\nexports.getInstallerUrls = getInstallerUrls;\n/**\n * Try to stringify a JSON string and log failures\n *\n * @param json - Object to make into a string\n *\n * @returns string representing JSON or empty string on error\n */\nvar safeJsonString = function (json) {\n try {\n return JSON.stringify(json);\n }\n catch (error) {\n (0, exports.errorLog)('safeJsonString: unable to stringify JSON', { error: error, json: json });\n return '';\n }\n};\nexports.safeJsonString = safeJsonString;\n/**\n * Try to parse a JSON string and log failures\n *\n * @param json - String to make into an object\n *\n * @returns object or array from the JSON string. Or undefined\n */\nvar safeJsonParse = function (json) {\n if (json && typeof json === 'object') {\n return json;\n }\n try {\n return JSON.parse(json);\n }\n catch (error) {\n (0, exports.errorLog)('safeJsonParse: unable to parse JSON', { error: error, json: json });\n return undefined;\n }\n};\nexports.safeJsonParse = safeJsonParse;\nexports.default = {\n errorLog: exports.errorLog,\n generateErrorBody: exports.generateErrorBody,\n generatePromiseObjects: exports.generatePromiseObjects,\n getCurrentPlatform: exports.getCurrentPlatform,\n getWebsocketUrl: exports.getWebsocketUrl,\n isSafari: exports.isSafari,\n isValidURL: exports.isValidURL,\n isValidTransferSpec: exports.isValidTransferSpec,\n randomUUID: exports.randomUUID,\n throwError: exports.throwError,\n getInstallerUrls: exports.getInstallerUrls,\n safeJsonString: exports.safeJsonString,\n safeJsonParse: exports.safeJsonParse,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileSelected = exports.HttpTransfer = void 0;\nvar HttpTransfer = /** @class */ (function () {\n function HttpTransfer(id, spec, files, status, options) {\n this.httpGatewayTransfer = true;\n this.recentPackets = [];\n this.uuid = id;\n this.status = status || 'initiating';\n this.add_time = new Date().toISOString();\n this.transfer_spec = spec;\n this.transport = 'http_gateway';\n if (options && typeof options === 'object' && options.serverUrlOverride) {\n this.serverUrlOverride = options.serverUrlOverride;\n }\n this.files = files.map(function (file) {\n return {\n lastModified: file.lastModified,\n name: file.name,\n size: file.size,\n type: file.type\n };\n });\n this.current_file = this.files[0] ? this.files[0].name : '';\n }\n HttpTransfer.prototype.setEndTime = function () {\n this.end_time = new Date().toISOString();\n };\n Object.defineProperty(HttpTransfer.prototype, \"calculated_rate_kbps\", {\n get: function () {\n if (this.recentPackets.length) {\n var timeBetweenLastPackets = this.recentPackets[this.recentPackets.length - 1].timeStamp - this.recentPackets[0].timeStamp;\n var bytesWrittenInLastPackets_1 = 0;\n this.recentPackets.forEach(function (packet) {\n bytesWrittenInLastPackets_1 += packet.bytes;\n });\n if (timeBetweenLastPackets && bytesWrittenInLastPackets_1) {\n return (((bytesWrittenInLastPackets_1 * 8) / (timeBetweenLastPackets / 1000000)) / 1000);\n }\n }\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n HttpTransfer.prototype.recentPacketTransfer = function (bytes) {\n if (this.recentPackets.length >= 5) {\n this.recentPackets.shift();\n }\n this.recentPackets.push({\n timeStamp: new Date().getTime() * 1000,\n bytes: bytes\n });\n };\n Object.defineProperty(HttpTransfer.prototype, \"elapsed_usec\", {\n get: function () {\n var endTime = this.end_time ? new Date(this.end_time).getTime() : new Date().getTime();\n return (endTime - new Date(this.add_time).getTime()) * 1000;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HttpTransfer.prototype, \"percentage\", {\n get: function () {\n if (this.bytes_written > 0 && this.bytes_written <= this.bytes_expected) {\n return ((this.bytes_written / this.bytes_expected));\n }\n else if (this.bytes_written > this.bytes_expected) {\n return 1;\n }\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n return HttpTransfer;\n}());\nexports.HttpTransfer = HttpTransfer;\nvar FileSelected = /** @class */ (function () {\n function FileSelected(file) {\n this.name = file.name;\n this.size = file.size;\n this.type = file.type;\n }\n return FileSelected;\n}());\nexports.FileSelected = FileSelected;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpGateway = exports.ActivityTracking = exports.TransferResponse = exports.ServerInfo = void 0;\nvar constants_1 = require(\"../constants/constants\");\nvar messages_1 = require(\"../constants/messages\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar HttpGatewayGlobals = /** @class */ (function () {\n function HttpGatewayGlobals() {\n /** Chunk size to use for uploads in bytes */\n this.chunkSize = 64000;\n /** The ID to use for HTTP Gateway needed DOM items */\n this.mainContainerId = 'aspera-httpgateway';\n /** The ID to use for the form container for forms */\n this.formContainerId = 'aspera-httpgateway-form-container';\n /** The ID to use for the download container */\n this.downloadsContainerId = 'aspera-httpgateway-downloads-container';\n /** Map of all forms currently in the container */\n this.formsAvailable = new Map();\n /** Map of form with files from drop events */\n this.formsFilesFromDrop = new Map();\n /** Map of folders with files from drop events */\n this.folderFiles = new Map();\n /** Indicates if running in software mode (no DOM) */\n this.softwareMode = false;\n /** Indicates if multiple server support should be used (will not lock out if gateway server is not working) */\n this.supportMultipleServers = false;\n /** Number of concurrent uploads to support */\n this.concurrentUploads = 3;\n /** Map of dropzones created by querySelector */\n this.dropzonesCreated = new Map();\n }\n /**\n * Add a form item to the form container for transferring if form already exists the existing one is returned\n *\n * @param id ID to use for the form reference\n */\n HttpGatewayGlobals.prototype.createOrUseForm = function (id) {\n if (this.formsAvailable.get(id)) {\n return this.formsAvailable.get(id);\n }\n var form = document.createElement('form');\n form.id = id;\n this.formsAvailable.set(id, form);\n this.formContainer.appendChild(form);\n return this.formsAvailable.get(id);\n };\n /**\n * Delete a form from the container by the ID\n *\n * @param id the form to delete\n */\n HttpGatewayGlobals.prototype.deleteFormFromContainer = function (id) {\n var foundForm = this.formsAvailable.get(id);\n this.formsFilesFromDrop.delete(id);\n if (foundForm) {\n this.formContainer.removeChild(foundForm);\n this.formsAvailable.delete(id);\n }\n };\n /**\n * Removes all forms from the Parent container\n */\n HttpGatewayGlobals.prototype.removeAllFormsFromContainer = function () {\n while (this.formContainer.firstChild) {\n this.formContainer.removeChild(this.formContainer.firstChild);\n }\n };\n /**\n * Get or create an array of Files to store drop events in\n *\n * @param id the form to associate the files with\n */\n HttpGatewayGlobals.prototype.getOrCreateFormFileListFromDrop = function (id) {\n if (!this.formsFilesFromDrop.get(id)) {\n this.formsFilesFromDrop.set(id, []);\n }\n return this.formsFilesFromDrop.get(id);\n };\n /**\n * Get or create an array of Folder data to store folder entries\n *\n * @param id the form to associate the folders with\n */\n HttpGatewayGlobals.prototype.getOrCreateFolderDataList = function (id) {\n if (!this.folderFiles.get(id)) {\n this.folderFiles.set(id, new Map());\n }\n return this.folderFiles.get(id);\n };\n /**\n * Setup HTTP Gateway SDK server and formContainer\n *\n * @param serverUrl URL to use for the server\n * @param softwareMode indicate if software mode is in use\n * @param supportMultipleServers indicate if multiple servers are supported\n */\n HttpGatewayGlobals.prototype.setUpServer = function (serverUrl, softwareMode, supportMultipleServers) {\n if (typeof serverUrl === 'string') {\n this.serverUrl = serverUrl;\n }\n this.softwareMode = !!softwareMode;\n this.supportMultipleServers = !!supportMultipleServers;\n if (!this.softwareMode) {\n if (!this.mainContainer) {\n this.mainContainer = document.createElement('div');\n this.mainContainer.id = this.mainContainerId;\n this.mainContainer.setAttribute('style', constants_1.hiddenStyleList);\n document.querySelector('body').appendChild(this.mainContainer);\n }\n if (!this.formContainer) {\n this.formsAvailable.clear();\n this.formContainer = document.createElement('div');\n this.formContainer.id = this.formContainerId;\n document.querySelector(\"#\".concat(this.mainContainerId)).appendChild(this.formContainer);\n }\n if (!this.downloadsContainer) {\n this.downloadsContainer = document.createElement('div');\n this.downloadsContainer.id = this.downloadsContainerId;\n document.querySelector(\"#\".concat(this.mainContainerId)).appendChild(this.downloadsContainer);\n }\n }\n };\n HttpGatewayGlobals.prototype.backupDownloadMethod = function (url) {\n window.alert(messages_1.messages.loadingDownload);\n window.location.href = url;\n };\n /**\n * Download a file based on a URL. By default a hidden IFRAME attempts to download\n * the file but if that fails a fallback of opening a new window happens.\n *\n * @param url the URL of the file to download\n */\n HttpGatewayGlobals.prototype.triggerDownloadFromUrl = function (url) {\n var _this = this;\n try {\n var element = document.createElement('iframe');\n element.src = url;\n element.onerror = function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.failedToGenerateIframe, error);\n _this.backupDownloadMethod(url);\n };\n document.querySelector(\"#\".concat(this.downloadsContainerId)).appendChild(element);\n }\n catch (error) {\n (0, helpers_1.errorLog)(messages_1.messages.failedToGenerateIframe, error);\n this.backupDownloadMethod(url);\n }\n };\n return HttpGatewayGlobals;\n}());\nvar ServerInfo = /** @class */ (function () {\n function ServerInfo() {\n }\n return ServerInfo;\n}());\nexports.ServerInfo = ServerInfo;\nvar TransferResponse = /** @class */ (function () {\n function TransferResponse() {\n }\n return TransferResponse;\n}());\nexports.TransferResponse = TransferResponse;\nvar ActivityTracking = /** @class */ (function () {\n function ActivityTracking() {\n /** Map of transfers by ID */\n this.transfers = new Map();\n /** Map of callbacks that receive transfers */\n this.callbacks = new Map();\n /** Indicate if a callback should happen */\n this.needCallback = false;\n /** Queued uploads */\n this.queuedUploads = [];\n this.pollCallbacks();\n }\n /**\n * Get transfer response object including all transfers\n *\n * @returns transfer data object with transfers array\n */\n ActivityTracking.prototype.getAllTransfersResponse = function () {\n var transfers = this.getAllTransfers();\n return {\n iteration_token: '',\n result_count: transfers.length,\n transfers: transfers\n };\n };\n /**\n * Remove all transfers that are not active\n */\n ActivityTracking.prototype.clearNonActiveTransfers = function () {\n var _this = this;\n var transferIdsToRemove = this.getAllTransfers().filter(function (transfer) {\n return transfer.status === 'completed' || transfer.status === 'failed';\n }).map(function (transfer) { return transfer.uuid; });\n transferIdsToRemove.forEach(function (id) {\n _this.removeTransfer(id);\n });\n };\n /**\n * Poll transfer callbacks\n */\n ActivityTracking.prototype.pollCallbacks = function () {\n var _this = this;\n setTimeout(function () {\n if (_this.needCallback) {\n _this.callbacks.forEach(function (value) {\n if (typeof value === 'function') {\n value(_this.getAllTransfersResponse());\n }\n });\n }\n _this.needCallback = false;\n _this.pollCallbacks();\n }, 2000);\n };\n /**\n * Trigger activity callback on activity events\n */\n ActivityTracking.prototype.triggerActivityCallbacks = function () {\n this.needCallback = true;\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setCallback = function (callback) {\n if (typeof callback !== 'function') {\n (0, helpers_1.errorLog)(messages_1.messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.callbacks.size + 1);\n this.callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeCallback = function (id) {\n this.callbacks.delete(id);\n };\n /**\n * Set the transfer in the transfers map\n *\n * @param id transfer id for tracking transfers\n * @param transfer transfer object\n */\n ActivityTracking.prototype.setTransfer = function (id, transfer) {\n this.transfers.set(id, transfer);\n this.triggerActivityCallbacks();\n };\n /**\n * Get the status of a specific transfer by ID (only returns for items during the session)\n *\n * @param id the ID of the transfer to retrieve that has been started during the session\n *\n * @returns an HttpTransfer object that includes the transfer info and status\n */\n ActivityTracking.prototype.getTransferById = function (id) {\n return this.transfers.get(id);\n };\n /**\n * Get all active transfers (transfers that are not completed or failed)\n */\n ActivityTracking.prototype.getActiveTransfers = function () {\n return (0, helpers_1.iterableToArray)(this.transfers.values()).filter(function (transfer) {\n return transfer.status !== 'completed' && transfer.status !== 'failed';\n });\n };\n /**\n * Remove a transfer from the transfer list\n *\n * @param id the ID of the transfer to remove\n */\n ActivityTracking.prototype.removeTransfer = function (id) {\n this.transfers.delete(id);\n this.triggerActivityCallbacks();\n };\n /**\n * Get the list of transfers started during the session for checking status\n *\n * @param returnMap boolean to indicate if the raw Map should be returned instead of an array\n *\n * @returns an Array of transfers or a Map of transfers (with the ID as key). Array is default\n */\n ActivityTracking.prototype.getAllTransfers = function (returnMap) {\n var transferList = [];\n var transferMap = new Map();\n this.transfers.forEach(function (value, key) {\n transferList.push(value);\n transferMap.set(key, value);\n });\n return returnMap ? transferMap : transferList;\n };\n return ActivityTracking;\n}());\nexports.ActivityTracking = ActivityTracking;\nvar HttpGateway = /** @class */ (function () {\n function HttpGateway() {\n var _this = this;\n /** Global information about the HTTP Gateway */\n this.globals = new HttpGatewayGlobals();\n /** Activity tracking for watching transfers */\n this.activityTracking = new ActivityTracking();\n /**\n * If the user attempts to leave the page warn that by leaving they will have their transfer abort\n * NOTE: Only IE will show custom text. No way to indicate why they are being blocked.\n */\n this.checkForPageLeave = function (event) {\n if (_this.activityTracking.getActiveTransfers().length) {\n event.preventDefault();\n event.returnValue = messages_1.messages.leavingWhileUploading;\n return messages_1.messages.leavingWhileUploading;\n }\n else {\n delete event['returnValue'];\n }\n };\n }\n Object.defineProperty(HttpGateway.prototype, \"isReady\", {\n /**\n * Check if the HTTP Server is ready to be used and has been verified\n *\n * @returns a boolean indicating if SDK can be used for transfers\n */\n get: function () {\n return this.globals.serverVerified || this.globals.supportMultipleServers;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Overwrite default chunk size for chunking transfer data.\n * This is an optional function, a default recommended size is set on start.\n *\n * @param size the size to use\n */\n HttpGateway.prototype.overwriteDefaultChunkSize = function (size) {\n if (size && size > 0) {\n this.globals.chunkSize = size;\n }\n else {\n (0, helpers_1.errorLog)(messages_1.messages.invalidChunkSize, { requestedSize: size });\n }\n };\n /**\n * Overwrite default concurrent transfer number for parallel transfers\n * This is an optional function, a default recommended number is set on start.\n *\n * @param transfers the number of concurrent uploads to use\n */\n HttpGateway.prototype.overwriteDefaultConcurrentUploads = function (transfers) {\n if (transfers && transfers > 0) {\n this.globals.concurrentUploads = transfers;\n }\n else {\n (0, helpers_1.errorLog)(messages_1.messages.invalidConcurrentUploads, { requestedSize: transfers });\n }\n };\n return HttpGateway;\n}());\nexports.HttpGateway = HttpGateway;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.messages = void 0;\n/** @ignore */\nexports.messages = {\n serverUrlNotSet: 'Server URL not set. Call init function',\n serverError: 'Unable to communicate with HTTP Gateway server',\n serverNotVerified: 'The HTTP Gateway server has not been verified. Run test or init first',\n downloadFailed: 'The download failed to initiate',\n streamFailed: 'The stream failed to initiate',\n notValidTransferSpec: 'The supplied transferSpec is not valid',\n invalidServerUrl: 'The supplied server URL is invalid',\n unableToGetFilesForUpload: 'Unable to get files for upload based on transferSpec',\n unableToUpload: 'Unable to upload. Server encountered an error',\n failedToGetDownloadUrl: 'Unable to retrieve HTTP download URL',\n failedToGetStreamUrl: 'Unable to retrieve HTTP stream URL',\n streamInjectDomInvalid: 'Unable to find injection point for video player',\n failedToGenerateIframe: 'Unable to generate IFRAME for download. Using new window',\n callbackIsNotFunction: 'The provided callback is not a function',\n websocketClosedUnexpect: 'The websocket was closed unexpectedly',\n invalidChunkSize: 'The provided chunk size for uploads is invalid',\n invalidConcurrentUploads: 'The provided number for concurrent uploads is invalid',\n unableToParseDataForUpload: 'Unable to parse data for uploading',\n unableToDeepCopyObject: 'Unable to deep copy object or array',\n unableToFindElementOnPage: 'Unable to find the element on the current page',\n unauthorizedFilesForUpload: 'Unauthorized files included in the transferSpec. All files for upload must be picked via getFilesForUpload',\n startDownload: 'Start HTTP download?',\n dropFoldersNotAllowed: 'Dropping folders is not currently allowed',\n yes: 'Yes',\n no: 'No',\n close: 'Close',\n leavingWhileUploading: 'An upload is in progress. If you leave the upload will be canceled.',\n unableToReadFolder: 'The dropped item could not be parsed. Please try selecting via the select file/folder option',\n streamingTooManyFiles: 'Too many files requested for a stream. Only one video file is allowed in the transferSpec',\n loadingDownload: 'The download will now open in this window.',\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsperaSdk = exports.ActivityTracking = void 0;\nvar constants_1 = require(\"../constants/constants\");\nvar messages_1 = require(\"../constants/messages\");\nvar safari_client_1 = require(\"../helpers/client/safari-client\");\nvar helpers_1 = require(\"../helpers/helpers\");\nvar ws_1 = require(\"../helpers/ws\");\nvar index_1 = require(\"../index\");\nvar AsperaSdkGlobals = /** @class */ (function () {\n function AsperaSdkGlobals() {\n /** The URL of the IBM Aspera HTTP server to use with the SDK */\n this.asperaAppUrl = 'http://127.0.0.1';\n /** The URL of the IBM Aspera Desktop HTTP server to use with the SDK */\n this.rpcPort = 33024;\n /** The default URL to check for latest Aspera installers */\n this.installerUrl = constants_1.installerUrl;\n /** Indicate that the server has been verified as working */\n this.asperaAppVerified = false;\n /** Indicate if multiple session is supported */\n this.supportMultipleUsers = false;\n /** Map of drop zones created by querySelector */\n this.dropZonesCreated = new Map();\n /** Indicate that the HTTP Gateway has been verified as working */\n this.httpGatewayVerified = false;\n /** Connect status */\n this.connectStatus = 'WAITING';\n }\n AsperaSdkGlobals.prototype.backupLaunchMethod = function (url) {\n window.alert(messages_1.messages.loadingProtocol);\n window.location.href = url;\n };\n /**\n * Launch the IBM Aspera App via protocol url. By default, a hidden IFRAME attempts to\n * open the app but if that fails a fallback of opening a new window happens.\n */\n AsperaSdkGlobals.prototype.launch = function () {\n var _this = this;\n try {\n var element = document.createElement('iframe');\n element.src = constants_1.protocol;\n element.onerror = function (error) {\n (0, helpers_1.errorLog)(messages_1.messages.failedToGenerateIframe, error);\n _this.backupLaunchMethod(constants_1.protocol);\n };\n element.setAttribute('style', constants_1.hiddenStyleList);\n document.body.appendChild(element);\n }\n catch (error) {\n (0, helpers_1.errorLog)(messages_1.messages.failedToGenerateIframe, error);\n this.backupLaunchMethod(constants_1.protocol);\n }\n };\n Object.defineProperty(AsperaSdkGlobals.prototype, \"sdkResponseData\", {\n get: function () {\n return __assign(__assign({ verified: this.asperaAppVerified }, this.asperaSdkInfo), { httpGateway: {\n verified: this.httpGatewayVerified,\n url: this.httpGatewayUrl,\n info: this.httpGatewayInfo,\n }, connect: {\n active: this.connectStatus === 'RUNNING',\n status: this.connectStatus,\n } });\n },\n enumerable: false,\n configurable: true\n });\n return AsperaSdkGlobals;\n}());\nvar ActivityTracking = /** @class */ (function () {\n function ActivityTracking() {\n /** Map of callbacks that receive transfer update events */\n this.activity_callbacks = new Map();\n /** Map of callbacks that receive connection events */\n this.event_callbacks = new Map();\n /** Keep track of the last WebSocket event **/\n this.lastWebSocketEvent = 'CLOSED';\n /** Keep track of the last notified WebSocket event **/\n this.lastNotifiedWebSocketEvent = undefined;\n }\n /**\n * Notify all consumers when a message is received from the websocket\n *\n * @param message the message received from the websocket\n */\n ActivityTracking.prototype.handleTransferActivity = function (message) {\n if (message.type === 'transferUpdated' || message.type === 'transferRemoved') {\n this.activity_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(message.data);\n }\n });\n }\n };\n /**\n * Handle and notify if needed when a connection webSocketEvent occurs. For example, when the SDK\n * websocket connection to IBM Aspera App is closed or reconnected.\n *\n * @param webSocketEvent the event type.\n */\n ActivityTracking.prototype.handleWebSocketEvents = function (webSocketEvent) {\n if (this.lastWebSocketEvent === webSocketEvent) {\n return;\n }\n this.lastWebSocketEvent = webSocketEvent;\n this.notifyWebSocketEvent(webSocketEvent);\n };\n /**\n * Notify all consumers when a connection webSocketEvent occurs.\n *\n * @param webSocketEvent the event type.\n */\n ActivityTracking.prototype.notifyWebSocketEvent = function (webSocketEvent) {\n if (this.lastNotifiedWebSocketEvent === webSocketEvent) {\n return;\n }\n this.lastNotifiedWebSocketEvent = webSocketEvent;\n this.event_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(webSocketEvent);\n }\n });\n };\n /** Trigger manual event for other event types. */\n ActivityTracking.prototype.sendManualEventCallback = function (status) {\n this.event_callbacks.forEach(function (callback) {\n if (typeof callback === 'function') {\n callback(status);\n }\n });\n };\n /**\n * Notify all consumers when the client changes status. For example, when\n * IBM Aspera App is launched or closed.\n *\n * @param running whether the client is running or not.\n */\n ActivityTracking.prototype.handleClientEvents = function (running) {\n var webSocketEvent;\n if (!running) {\n webSocketEvent = 'CLOSED';\n }\n else {\n webSocketEvent = this.lastWebSocketEvent;\n }\n this.notifyWebSocketEvent(webSocketEvent);\n };\n /**\n * Notify all consumers when a Safari extension safariExtensionEvent occurs (enabled/disabled).\n *\n * @param safariExtensionEvent the event type.\n */\n ActivityTracking.prototype.handleSafariExtensionEvents = function (safariExtensionEvent) {\n index_1.asperaSdk.SAFARI_EXTENSION_STATUS = safariExtensionEvent;\n };\n /**\n * Set up the activity tracking with IBM Aspera.\n *\n * @returns a promise that resolves when the websocket connection is established.\n * Currently, this promise does not reject.\n */\n ActivityTracking.prototype.setup = function () {\n var _this = this;\n if (index_1.asperaSdk.globals.sessionId) {\n this.registerDesktopAppSession();\n }\n if ((0, helpers_1.isSafari)()) {\n return safari_client_1.safariClient.monitorTransferActivity();\n }\n return ws_1.websocketService.init()\n .then(function () {\n ws_1.websocketService.registerMessage('transfer_activity', function (data) { return _this.handleTransferActivity(data); });\n ws_1.websocketService.registerEvent(function (status) { return _this.handleWebSocketEvents(status); });\n });\n };\n /**\n * Register a callback for getting transfers back to the consumer\n *\n * @param callback the function to call with the array of transfers\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setCallback = function (callback) {\n if (typeof callback !== 'function') {\n (0, helpers_1.errorLog)(messages_1.messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.activity_callbacks.size + 1);\n this.activity_callbacks.set(id, callback);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeCallback = function (id) {\n this.activity_callbacks.delete(id);\n };\n /**\n * Register a callback for getting websocket events back to the consumer\n *\n * @param callback the function to call with the websocket event\n *\n * @returns the ID of the callback index\n */\n ActivityTracking.prototype.setWebSocketEventCallback = function (callback) {\n if (typeof callback !== 'function') {\n (0, helpers_1.errorLog)(messages_1.messages.callbackIsNotFunction);\n return;\n }\n var id = \"callback-\".concat(this.event_callbacks.size + 1);\n this.event_callbacks.set(id, callback);\n callback(this.lastWebSocketEvent);\n return id;\n };\n /**\n * Remove the callback (deregister) from the list of callbacks\n *\n * @param id the string of the callback to remove\n */\n ActivityTracking.prototype.removeWebSocketEventCallback = function (id) {\n this.event_callbacks.delete(id);\n };\n ActivityTracking.prototype.registerDesktopAppSession = function () {\n var iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = \"aspera://initialize?app_id=\".concat(index_1.asperaSdk.globals.appId, \"&session_id=\").concat(index_1.asperaSdk.globals.sessionId);\n document.body.appendChild(iframe);\n setTimeout(function () {\n document.body.removeChild(iframe);\n }, 1000);\n };\n return ActivityTracking;\n}());\nexports.ActivityTracking = ActivityTracking;\nvar AsperaSdk = /** @class */ (function () {\n function AsperaSdk() {\n /** Global information about IBM Aspera */\n this.globals = new AsperaSdkGlobals();\n /** Activity tracking for watching transfers */\n this.activityTracking = new ActivityTracking();\n /** HTTP Gateway file store. Key is the file name. */\n this.httpGatewaySelectedFiles = new Map();\n /** Indicate if Safari Extension is enabled. If the extension is disabled during the lifecycle this will not update to disabled. */\n this.SAFARI_EXTENSION_STATUS = 'DISABLED';\n /** Store of HTTP Gateway transfers */\n this.httpGatewayTransferStore = new Map();\n /** HTTP Gateway in app threshold limit. This can be changed globally for the app. */\n this.httpGatewayInBrowserDownloadThreshold = 1000000000;\n }\n Object.defineProperty(AsperaSdk.prototype, \"isReady\", {\n /**\n * Check if IBM Aspera is ready to be used and has been verified.\n *\n * @returns a boolean indicating if SDK can be used for requests\n */\n get: function () {\n return this.globals.asperaAppVerified && this.globals.appId !== '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AsperaSdk.prototype, \"useConnect\", {\n /** Indicate that Connect is available. */\n get: function () {\n return this.globals.connectStatus === 'RUNNING';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AsperaSdk.prototype, \"httpGatewayIsReady\", {\n /** Indicate that HTTP Gateway is available. */\n get: function () {\n return !!this.globals.httpGatewayVerified;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AsperaSdk.prototype, \"useHttpGateway\", {\n /** Indicates if internal calls should use Gateway */\n get: function () {\n return this.httpGatewayIsReady && !this.isReady && !this.useConnect;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AsperaSdk.prototype, \"useOldHttpGateway\", {\n /** Indicates if old HTTP Gateway SDK should be used (v2 and lower) */\n get: function () {\n if (!this.useHttpGateway) {\n return false;\n }\n return Number(this.globals.httpGatewayInfo.version.split('.')[0] || 3) <= 2;\n },\n enumerable: false,\n configurable: true\n });\n return AsperaSdk;\n}());\nexports.AsperaSdk = AsperaSdk;\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(156);\n"],"names":["Object","defineProperty","exports","value","download","http_1","index_1","helpers_1","messages_1","core_1","transferSpec","options","asperaHttpGateway","isReady","errorLog","messages","serverNotVerified","Promise","resolve","reject","generateErrorBody","isValidTransferSpec","notValidTransferSpec","promiseInfo","generatePromiseObjects","zipRequire","zip_required","payload","transfer_spec","finalServerUrl","serverUrlOverride","cleanupServerUrl","globals","serverUrl","apiPost","concat","then","response","json","data","transfer_spec_id","downloadUrl","softwareMode","disableAutoDownload","resolver","url","triggerDownloadFromUrl","failedToGetDownloadUrl","rejecter","catch","error","downloadFailed","promise","__awaiter","this","thisArg","_arguments","P","generator","fulfilled","step","next","e","rejected","result","done","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","JSONRPCClient","models_1","internal_1","_send","createID","idToResolveMap","Map","id","prototype","_createID","timeout","delay","overrideCreateJSONRPCErrorResponse","_this","createJSONRPCErrorResponse","DefaultErrorCode","timeoutRequest","ids","request","timeoutID","setTimeout","forEach","get","delete","clearTimeout","method","params","clientParams","requestWithID","requestAdvanced","Array","isArray","map","filter","isDefinedAndNonNull","_a","createJSONRPCRequest","undefined","JSONRPCErrorException","message","code","Error","requests","areRequestsOriginallyArray","requestsWithID","promises","set","all","responses","send","receive","notify","createJSONRPCNotification","rejectAllPendingRequests","clear","safariClient","SafariClient","SafariExtensionEventType","keepAliveTimeout","keepAliveInterval","lastPing","lastPong","safariExtensionEnabled","subscribedTransferActivity","dispatchPromiseEvent","Request","promiseExecutors","listenResponseEvents","listenTransferActivityEvents","listenStatusEvents","listenClientStatusEvents","listenPongEvents","keepAlive","monitorTransferActivity","dispatchMonitorEvent","Monitor","asperaSdk","appId","extensionInterval","setInterval","clearInterval","buildRPCRequest","jsonrpc","randomUUID","dispatchEvent","type","detail","document","CustomEvent","console","warn","safeJsonString","handleResponse","requestId","executor","addEventListener","event","activityTracking","handleTransferActivity","handleWebSocketEvents","running","handleClientEvents","Date","now","safariExtensionStatusChanged","Ping","isEnabled","resumeTransferActivity_1","promiseExecutor","handleSafariExtensionEvents","checkSafariExtensionStatus","pingPongDiff","dropContainerName","keySplit","hiddenStyleList","ownKeys","__createBinding","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__setModuleDefault","__importStar","getOwnPropertyNames","ar","hasOwnProperty","mod","i","getInstallerUrls","getInfo","setBranding","deregisterStatusCallback","registerStatusCallback","getInstallerInfo","initDragDrop","removeDropzone","createDropzone","modifyTransfer","showPreferences","showSelectFolderDialog","showSelectFileDialog","getTransfer","getAllTransfers","resumeTransfer","stopTransfer","showDirectory","removeTransfer","deregisterActivityCallback","registerActivityCallback","launch","startTransfer","testConnection","init","isSafari","aspera_sdk_model_1","installer_1","httpGatewayCalls","AsperaSdk","window","startStream","injectStreamToDom","getFoldersForUploadPromise","getFoldersForUpload","getFilesForUploadPromise","getFilesForUpload","upload","cancelTransfer","clearNonActiveTransfers","getTransferById","testHttpGatewayConnection","initHttpGateway","http_gateway_global_model_1","download_1","upload_1","streaming_1","HttpGateway","onbeforeunload","checkForPageLeave","core_2","download_2","upload_2","streaming_2","getWebsocketUrl","getFeatureFlag","iterableToArray","getFilesForTransfer","folderTransferSpecExplode","parseFilesFromSpec","isValidForm","checkChildrenForFiles","isValidUrl","constants_1","debugData","httpGatewayLogs","errorResponse","indexOf","direction","remote_host","paths","children","filesFromForm","child","files","form","nodeType","tagName","transferSpecFilesMap","filesAddedList","path","source","file","name","specPath","file_size","size","formId","folderList","getOrCreateFolderDataList","folderDropList","newPaths","foundFiles","handleFolderData","asperaDropPath","webkitRelativePath","destination","newPath","createOrUseForm","childNodes","getOrCreateFormFileListFromDrop","iterable","newArray","addItem","featureFlag","serverInfo","version","versionData","split","major","Number","minor","patch","protocol","wsProtocol","replace","extendStatics","__extends","d","b","setPrototypeOf","__proto__","p","String","__","constructor","createJSONRPCSuccessResponse","JSONRPCErrorCode","isJSONRPCResponses","isJSONRPCResponse","isJSONRPCRequests","isJSONRPCRequest","isJSONRPCID","JSONRPC","every","createJSONRPCError","_super","toObject","apiGet","handlePromiseErrors","ok","fetch","headers","client_1","http_gateway_1","http_gateway_sdk_js_1","connect_sdk_js_1","useHttpGateway","useConnect","sdkResponseData","client","asperaSdkInfo","asperaAppVerified","initCall","throwError","dragDropInitFailed","dragDropInitFailedInit","_b","_c","_d","supportMultipleUsers","oldHttpTransfers","transfers","oldHttpTransfer","sendTransferUpdate","sessionId","handleErrors","serverError","getConnectStartCalls","connect","Connect","minVersion","connectSettings","dragDropEnabled","connectMethod","connectInstaller","ConnectInstaller","sdkLocation","correlationId","style","connectAW4","initConnect","hideIncludedInstaller","getDesktopStartCalls","setup","httpGatewaySettings","httpGatewayVerified","finalHttpGatewayUrl","trim","endsWith","slice","httpGatewayUrl","responseData","status","httpGatewayInfo","iframeContainer","createElement","appendChild","httpGatewayIframeContainer","forceGateway","httpInitFail","asperaSdkSpec","httpDownload","httpUpload","startTransferPromise","transfer_specs","desktop_spec","app_id","transferFailed","callback","setCallback","removeCallback","setWebSocketEventCallback","removeWebSocketEventCallback","httpRemoveTransfer","transfer_id","removeTransferFailed","stopTransferFailed","resumeTransferFailed","httpGatewaySelectFileFolderDialog","showSelectFileDialogPromise","showSelectFileDialogFailed","showSelectFolderDialogPromise","showSelectFolderDialogFailed","showPreferencesFailed","httpGetAllTransfers","success","getAllTransfersFailed","transfer","httpGetTransfer","getTransferFailed","reason","transfer_info","showDirectoryFailed","modifyTransferFailed","branding","theme","setBrandingFailed","elementSelector","connectOptions","setDragDropTargets","elements","querySelectorAll","dragEvent","preventDefault","dropEvent","dataTransfer","lastModified","unableToReadDropped","httpGatewayIsReady","handleHttpGatewayDrop","items","element","dropZonesCreated","unableToFindElementOnPage","foundDropzone","removeEventListener","apiDelete","apiPut","getHeaders","getUrlWithQueryParams","getQueryString","queryString","keys","key","encodeURIComponent","additionalHeaders","requiredHeaders","queryParams","JSON","stringify","useOldHttpGateway","http_gateway_v2_transfer_id","XMLHttpRequest","FormData","append","hasBadFile","foundFile","httpGatewaySelectedFiles","fileNotAllowed","invalidFiles","transferObject","getSdkTransfer","http_gateway_authentication","setRequestHeader","token","access_key","open","http_gateway_override_server_url","triggerUpdate","triggerFailed","errorData","getMessageFromError","httpRequestId","getResponseHeader","error_code","error_desc","elapsed_usec","getTime","add_time","lengthComputable","bytes_expected","total","bytes_written","loaded","percentage","createHtmlInputElement","__assign","assign","s","arguments","__spreadArray","to","from","pack","l","JSONRPCServer","createInvalidRequestResponse","InvalidRequest","mapErrorToJSONRPCErrorResponse","defaultMapErrorToJSONRPCErrorResponse","nameToMethodDictionary","middleware","errorListener","hasMethod","addMethod","addMethodAdvanced","toJSONRPCMethod","removeMethod","serverParams","mapResultToJSONRPCResponse","receiveJSON","tryParseRequestJSON","ParseError","parse","receiveMultiple","receiveSingle","isNonNull","callMethod","mapResponse","applyMiddleware","middlewares","_i","combineMiddlewares","reduce","middlewareReducer","prevMiddleware","nextMiddleware","onError","mapErrorToJSONRPCErrorResponseIfNecessary","noopMiddleware","MethodNotFound","InternalError","supportMultipleServers","serverUrlNotSet","backupServerData","endpoints","sdkVerificationFailed","serverVerified","setUpServer","invalidServerUrl","getAllTransfersResponse","callbackIsNotFunction","failedToGenerateIframe","getInstallerError","invalidEndpoint","loadingProtocol","websocketClosedError","websocketClosedUnexpect","websocketNotReady","httpNotAvailable","filePickerCancel","httpNetworkFail","module","JSONRPCServerAndClient","server","applyServerMiddleware","jsonRPCRequest","receiveAndSend","installerUrl","baseInstallerUrl","http_client_1","safari_client_1","httpClient","handlePromiseLikeErrors","getRpcServerUrl","json_rpc_2_0_1","asperaAppUrl","rpcPort","JSONRPCHttpClient","handleRequest","rpcServerURL","rpcResponse","statusText","connectInstallationFlow","handleTransfers","transferMonitorActivated","installerFlowActivated","EVENT","STATUS","eventType","eventStatus","INITIALIZING","showLaunching","EXTENSION_INSTALL","showExtensionInstall","FAILED","showDownload","OUTDATED","showUpdate","RUNNING","connected","useIncludedInstaller","connectStatus","sendManualEventCallback","TRANSFER","_event","initSession","connectMode","endpoint","isValidURL","entries","entry","platform_1","getCurrentPlatform","platform","videoDomQuery","videoOptions","injectPoint","querySelector","firstChild","removeChild","video","classList","add","controls","autoplay","loop","muted","poster","height","width","setAttribute","canPlayType","src","play","Hls","isSupported","hls","loadSource","attachMedia","on","Events","MANIFEST_PARSED","streamInjectDomInvalid","query","streamingTooManyFiles","streamUrl","failedToGetStreamUrl","streamFailed","tags","aspera","expected_size","httpGatewayInBrowserDownloadThreshold","base64Encoding","responseHeaders","chunks","reader","getReader","readBytes","read","content","blobData","Blob","objectURL","URL","createObjectURL","a","href","click","revokeObjectURL","httpDownloadInBrowser","httpDownloadExternalHandle","accept","toString","host","iframe","signed_url","httpDownloadPresigned","removed","httpGatewayTransferStore","values","callbackCount","callbackFinishCount","finalCallback","finalFiles","traverse","item","isFile","isDirectory","createReader","readEntries","webkitGetAsEntry","folder","multiple","webkitdirectory","oncancel","onchange","returnFiles","uuid","current_file","toISOString","file_counts","attempted","completed","failed","skipped","end_time","explorer_path","calculated_rate_kbps","title","remaining_usec","httpGatewayTransfer","safeJsonParse","description","jsonString","bytes","TextEncoder","encode","binString","byte","fromCodePoint","join","btoa","startWebSocketTransfer","addFolderPickerToForm","addFilePickerToForm","startSendingData","handleSoftwareModeSlicing","handleBlobSlicing","updateTransferActivity","current","currentFile","queuedUploads","transferToStart","shift","setEndTime","deleteFormFromContainer","triggerActivityCallbacks","filePosition","chunksize","fileReader","chunk","mozSlice","webkitSlice","onload","target","Buffer","socket","queue","fileReaderToUse","totalFileSize","totalSentSize","index","filePiece","totalSlices","Math","ceil","chunkSize","_loop_1","sendChunkCallback","close","binaryString","slice_upload","total_slices","fileIndex","unableToParseDataForUpload","foundTransfer","recentPacketTransfer","mozdirectory","msdirectory","odirectory","directory","formToUse","inputFile","FileSelected","promiseToUse","folders","rootFolder","formFolderData","FileReader","WebSocket","location","onopen","setTransfer","HttpTransfer","onclose","onmessage","onerror","memoryFilesToLoad","folderExplodeData","unableToGetFilesForUpload","unauthorizedFilesForUpload","random","toFixed","getActiveTransfers","concurrentUploads","currentFiles","kind","_loop_2","fileEntry","getAsFile","folder_1","recursiveReader_1","entryItem","fullPath","unableToReadFolder","alert","dropzonesCreated","__exportStar","Iterator","__read","r","SuppressedError","INSTALL_EVENT","DOWNLOAD_CONNECT","REFRESH_PAGE","IFRAME_REMOVED","IFRAME_LOADED","TROUBLESHOOT","CONTINUE","RESIZE","RETRY","DOWNLOAD_EXTENSION","ACTIVITY_EVENT","CONNECT_BAR_VISIBLE","CLICKED_INSTALL_EXTENSION","CLICKED_ENABLE_EXTENSION","CLICKED_INSTALL_ADDON","CLICKED_DOWNLOAD_APP","CLICKED_INSTALL_APP","CLICKED_TROUBLESHOOT","CLICKED_DOWNLOAD_INDICATOR","DOWNLOAD_INDICATOR_VISIBLE","CLICKED_HOW_LINK","CONNECT_BAR_REMOVED","CLICKED_RETRY","EVENT_TYPE","CONNECT_BAR_EVENT","LS_CONTINUED_KEY","LS_CONNECT_APP_ID","LS_LOG_KEY","MIN_SECURE_VERSION","HTTP_METHOD","GET","POST","DELETE","REVERT","RETRYING","STOPPED","WAITING","DEGRADED","ALL","apiEndpoints","activity","route","prefix","authenticate","droppedFiles","ping","readAsArrayBuffer","readChunkAsArrayBuffer","getChecksum","showAbout","showPreferencesPage","showSaveFileDialog","showTransferManager","showTransferMonitor","testSshPorts","LogLevel","print","level","localStorage","getItem","Logger","debug","args","log","setLevel","trace","ua","navigator","userAgent","checkEdge","minver","match","parseInt","checkFirefox","ANDROID","test","OPERA","IE","IOS","CHROME","FIREFOX","FIREFOX_LEGACY","EDGE_CHROMIUM","EDGE_WITH_EXTENSION","EDGE_LEGACY","SAFARI","SAFARI_NO_NPAPI","checkSafari","ConnectGlobals","connectVersion","sessionKey","generateUuid","text","charAt","floor","possible","generateRandomStr","nextObjId","createError","errorCode","internalMessage","internal_message","user_message","parseJson","str","obj","copyObject","localObj","isNullOrUndefinedOrEmpty","property","x","versionLessThan","versionToArray","splits","versionArray","i_1","versionPart","isNaN","aArr","bArr","min","checkVersionException","prevContinuedSeconds","round","generatePromiseData","date","c","launchConnect","userCallback","isRegistered","launchUri","focus","onblur","hiddenIframe","visibility","position","border","getFullURI","relativeURL","fullURL","utoa","inputString","unescape","atou","atob","decodeURIComponent","escape","isSuccessCode","getLocalStorage","setLocalStorage","setItem","isError","isMobile","Utils","BROWSER","outstandingRequests","defaultDialogTimeout","changeConnectStatus","newConnectStatus","requestStatusCallback","httpRequest","requestPromise","req","extensionRequestTimeout","NativeHostStrategy","_extensionDetected","handleDisconnect","evt","installIssueDetected_1","detectConnect","connectLaunchWaitTimeoutMs","resolveExtensionResponse","request_id","body64","complete","resp","detectionLoop","timeoutMs","timeoutPromise","found","race","_detectionRetry","waitUntilDetected","attemptNumber","check","detectConnectRequestId","objectId","detectExtension","versionResponse","interval","stop","startup","SafariAppStrategy","pollingRequestErrors","extensionDetected","resolveHttpResponse","uri_reference","checkEvent","connectDetected","getElementById","getAttribute","detectionRetry","postMessage","div","triggerExtensionCheck","_newTarget","connectJSONreferences","DEFAULT_SDK_LOCATION","listeners","showInstallTimerID","iframeLoadedFlag","connectInstallerListeners","isSupportedBrowser","iframeId","stylesheetLocation","overrideStyle","supportsInstallingExtensions","notifyListeners","listener","addActivityListener","installationJSON","updatesURL","numberOfFiles","head","getElementsByTagName","documentElement","loadFilesHelper","fileref","toLowerCase","onreadystatechange","readyState","parentNode","insertBefore","loadFiles","fallbackURL","connectVersions","connectversionsSdkLocation","entryJSON","installEntries","userOS","os","osPlatform","links","hrefLink","hrefAbsolute","replaceJSONWithFullHref","showUnsupportedBrowser","parseInstallJSON","isExtensionInstalled","callbacks","extReqImpl","timedout","err","doesBrowserNeedExtensionStore","getExtensionStoreLink","startExtensionInstall","lnk","getRefreshWindow","inIframe","self","top","contentWindow","setCarbonBannerStyle","small","outline","overflow","right","left","zIndex","boxShadow","margin","maxWidth","backgroundColor","setHideClass","hide","display","show","suffix","handleMessage","isActivityEvent","notifyActivityListeners","showInstall","reload","dismiss","iframeLoaded","downloadTimestamp","referencesJSON","link","rel","className","frameBorder","srcdoc","attachEvent","showRetry","extHelper","showPrevious","VERSION_PREFIX","pluginId","listenerId","createNPAPIPlugin","initializeTimeout","wrapperDiv","npapiPlugin","timeoutParam","fullEndpoint","httpRequestImplementation","parsedData","npapiWaitPluginLoadedID_1","ActiveXObject","mimeTypes","containerId","queryBuildVersion","connectPort","scanRetryTimeValues","nextId","windowUnloading","pingRequests","portMap","port","pingResponses","it","firstRun","retryTimeS_1","reconnect","xhr","responseText","toUpperCase","fullpath","_options","klass","getHttpStrategy","getStrategy","supportsInstall","e_1","supportsNpapi","strategy","requiresHttp","setHttpStrategy","supportsNativeHost","supportsSafariAppExt","supportsHttp","supportsExtensions","RequestHandler","_objectId","_nextId","versionChecked","_idRequestHash","_queue","_pollingRequestErrors","_handlerStatus","processQueue","requestInfo","_strategy","checkVersion","statusListener","checkVersionCallback","parsedResponse","postData","min_version","sdk_location","cacheRequest","attemptNumber_1","connectVersionRetry_1","waitUpgradeResponse","start","handleFallback","stopRequests","_provider","httpFallback","api","handleTimeout","ApiService","requestHandler","getEndpointUrl","param","endpointInfo","validateAuthSpec","validateOptions","validateKeys","validateBufferOptions","validateChecksumOptions","checksumMethod","validateMethod","validateName","validateArrayBufferOptions","validateTransferId","parameterName","msg","validateBody","validators","addSettings","addStandardSettings","aspera_connect_settings","back_link","setBody","setMethod","setName","setParam","setRequestId","setValidator","validate","validator","INITIALIZE_TIMEOUT","PLUGIN_ID","PLUGIN_CONTAINER_ID","APPLICATION_ID","AUTHORIZATION_KEY","authorizationKey","POLLING_TIME","pollingTime","MINIMUM_VERSION","CONNECT_METHOD","DRAGDROP_ENABLED","MAX_ACTIVITY_OUTSTANDING","maxActivityOutstanding","SDK_LOCATION","EXTENSION_REQUEST_TIMEOUT","overrideMethod","overrideMinVersion","transferListeners","transferEventIntervalId","transferEventIterationToken","statusListeners","outstandingActivityReqs","connectRunning","mobileConnectRunning","newStatus","setConnectStatus","notifyStatus","notifyStatusListeners","authorization_key","connectReady","pollGetAllTransfers","iteration_token","notifyTransferListeners","removeEventListenerHelper","listenerArray","listenerFound","splice","iterationToken","getAllTransfersHelper","AsperaMobile","getDroppedFiles","startTransfers","transferSpecs","authSpec","getStatus","transferId","applicationId","entropy","len","charFreq","percent","localOptions","offset","cssSelector","dragListener","allowPropagation","stopPropagation","dragOverListener","dragOver","dropListener","disablePreventDefault","filesDropped","fileObject","lastModifiedDate","dragEnter","dragLeave","drop","page","suggestedName","allowedFileTypes","allowMultipleSelection","version_1","connectSpec","ssh_port","timeout_sec","localStatus","TRANSFER_STATUS","CANCELLED","COMPLETED","INITIATING","QUEUED","REMOVED","WILLRETRY","AW4","windowIntegrations","_window","websocketService","WebsocketService","sockets","isConnected","initPromise","handleOpen","joinChannel","updateRpcPort","notifyEvent","handleClose","globalSocket","handleNotReady","handleError","registerMessage","messageName","registerEvent","eventListener","getWebSocketConnection","webSocket","startPort","endPort","webSocketUrl","checkPort","ws","asperaSdkLogs","crypto","MSStream","base","latest","spec","recentPackets","transport","timeBetweenLastPackets","timeStamp","bytesWrittenInLastPackets_1","packet","ActivityTracking","TransferResponse","ServerInfo","HttpGatewayGlobals","mainContainerId","formContainerId","downloadsContainerId","formsAvailable","formsFilesFromDrop","folderFiles","formContainer","foundForm","removeAllFormsFromContainer","mainContainer","downloadsContainer","backupDownloadMethod","loadingDownload","needCallback","pollCallbacks","result_count","returnMap","transferList","transferMap","returnValue","leavingWhileUploading","overwriteDefaultChunkSize","invalidChunkSize","requestedSize","overwriteDefaultConcurrentUploads","invalidConcurrentUploads","unableToUpload","unableToDeepCopyObject","startDownload","dropFoldersNotAllowed","yes","no","ws_1","AsperaSdkGlobals","backupLaunchMethod","verified","httpGateway","info","active","activity_callbacks","event_callbacks","lastWebSocketEvent","lastNotifiedWebSocketEvent","webSocketEvent","notifyWebSocketEvent","safariExtensionEvent","SAFARI_EXTENSION_STATUS","registerDesktopAppSession","isFunction","vertxNext","customSchedulerFn","asap","arg","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","observer","node","onFulfillment","onRejection","parent","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","object","nextTick","createTextNode","observe","characterData","port1","port2","vertx","Function","require","runOnLoop","runOnContext","attemptVertx","substring","PENDING","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","hasCallback","succeeded","Enumerator","Constructor","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","state","enumerator","needsResolver","initializePromise","needsNew","finally","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","local","promiseToString","cast","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","globalThis","prop","toStringTag"],"sourceRoot":""}
|