From 6bb2f823598e74973a1938d1833946a5d879f990 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 16 May 2024 16:53:49 -0300 Subject: [PATCH 01/32] Remove Rest#setLog method I accidentally created this duplicate in 89c0761. --- src/common/lib/client/rest.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/common/lib/client/rest.ts b/src/common/lib/client/rest.ts index 74ce069b0..89bdfd8ba 100644 --- a/src/common/lib/client/rest.ts +++ b/src/common/lib/client/rest.ts @@ -1,5 +1,4 @@ import * as Utils from '../util/utils'; -import Logger, { LoggerOptions } from '../util/logger'; import Defaults from '../util/defaults'; import Push from './push'; import PaginatedResource, { HttpPaginatedResponse, PaginatedResult } from './paginatedresource'; @@ -236,10 +235,6 @@ export class Rest { response.unpacked ? response.body : Utils.decodeBody(response.body, this.client._MsgPack, format) ) as TokenRevocationResult; } - - setLog(logOptions: LoggerOptions): void { - Logger.setLog(logOptions.level, logOptions.handler); - } } class Channels { From eab98b9d6a12552c852b7e9a2dd12677f78ad356 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 16 May 2024 17:25:17 -0300 Subject: [PATCH 02/32] Remove getRealtimeHost from CompleteDefaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s not used, and the property doesn’t actually exist on the Defaults const (type assertion means compiler doesn’t catch it). --- src/common/lib/util/defaults.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/common/lib/util/defaults.ts b/src/common/lib/util/defaults.ts index 3d7fdf32d..a8b818dbf 100644 --- a/src/common/lib/util/defaults.ts +++ b/src/common/lib/util/defaults.ts @@ -44,7 +44,6 @@ type CompleteDefaults = IDefaults & { getFallbackHosts(options: NormalisedClientOptions): string[]; getHosts(options: NormalisedClientOptions, ws?: boolean): string[]; checkHost(host: string): void; - getRealtimeHost(options: ClientOptions, production: boolean, environment: string): string; objectifyOptions( options: undefined | ClientOptions | string, allowKeyOrToken: boolean, From f5361d2683e7ea416a7634b7d4693e183208bd4a Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 16 May 2024 12:13:59 -0300 Subject: [PATCH 03/32] Remove global effects of setting logHandler and logLevel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, if you create a client with logHandler and/or logLevel options, these options will affect all existing client objects. This means that code like the following doesn’t do what you’d expect — the log messages emitted by firstClient will say "secondClient": ``` const firstClient = new Realtime({ logHandler: (msg) => console.log("firstClient: ", msg), }) const secondClient = new Realtime({ logHandler: (msg) => console.log("secondClient: ", msg), }) ``` Here we fix this as much as we can within the limitations of the existing public API (see usage of defaultLogger). I _think_ that using the default logging config is the right thing to do in the situations where we have a standalone function or static method that doesn’t accept logging configuration, but you could also argue that we should instead maintain global effects for these usages and use the last-set logging configuration. I don’t think it hugely matters because we actually only end up falling back to defaultLogger in: - the tests (that’s fine, we’ll see the console output) - reporting failure of functions that are directly invoked by the user and which throw an error upon failure anyway (i.e. even if the log message doesn’t go where the user expected, they’ll still be informed of the event the message described) I’ve kept the Logger.logAction* static methods instead of changing them to instance methods, because that way they remain easy for our strip-logs plugin to target. Created #1766 for updating ably.com documentation. Resolves #156. --- grunt/esbuild/strip-logs.js | 26 +-- scripts/moduleReport.ts | 2 +- src/common/lib/client/auth.ts | 75 ++++--- src/common/lib/client/baseclient.ts | 13 +- src/common/lib/client/baserealtime.ts | 10 +- src/common/lib/client/connection.ts | 10 +- src/common/lib/client/paginatedresource.ts | 5 + src/common/lib/client/realtimechannel.ts | 88 ++++++--- src/common/lib/client/realtimepresence.ts | 24 ++- src/common/lib/client/resource.ts | 20 +- src/common/lib/client/restchannel.ts | 12 +- src/common/lib/client/restchannelmixin.ts | 8 +- src/common/lib/client/restpresence.ts | 11 +- src/common/lib/client/restpresencemixin.ts | 1 + src/common/lib/transport/comettransport.ts | 18 +- src/common/lib/transport/connectionmanager.ts | 183 ++++++++++++++---- src/common/lib/transport/messagequeue.ts | 18 +- src/common/lib/transport/protocol.ts | 10 +- src/common/lib/transport/transport.ts | 31 +-- .../lib/transport/websockettransport.ts | 37 ++-- src/common/lib/types/defaultmessage.ts | 5 +- .../lib/types/defaultpresencemessage.ts | 5 +- src/common/lib/types/message.ts | 14 +- src/common/lib/types/presencemessage.ts | 14 +- src/common/lib/util/defaults.ts | 24 ++- src/common/lib/util/eventemitter.ts | 9 +- src/common/lib/util/logger.ts | 71 ++++--- src/common/lib/util/multicaster.ts | 7 +- src/common/types/ICryptoStatic.ts | 4 +- src/common/types/http.ts | 25 ++- .../lib/transport/nodecomettransport.js | 10 +- src/platform/nodejs/lib/util/crypto.ts | 8 +- src/platform/web/lib/http/http.ts | 17 +- .../web/lib/http/request/xhrrequest.ts | 7 +- .../web/lib/transport/xhrpollingtransport.ts | 2 +- src/platform/web/lib/util/crypto.ts | 10 +- src/platform/web/modular/message.ts | 9 +- src/platform/web/modular/presencemessage.ts | 11 +- 38 files changed, 596 insertions(+), 258 deletions(-) diff --git a/grunt/esbuild/strip-logs.js b/grunt/esbuild/strip-logs.js index 6fc755513..c0826a167 100644 --- a/grunt/esbuild/strip-logs.js +++ b/grunt/esbuild/strip-logs.js @@ -38,32 +38,32 @@ const stripLogsPlugin = { babel.types.isIdentifier(path.node.callee.object, { name: 'Logger' }) ) { if (babel.types.isIdentifier(path.node.callee.property, { name: 'logAction' })) { - const firstArgument = path.node.arguments[0]; + const secondArgument = path.node.arguments[1]; if ( - babel.types.isMemberExpression(firstArgument) && - babel.types.isIdentifier(firstArgument.object, { name: 'Logger' }) && - firstArgument.property.name.startsWith('LOG_') + babel.types.isMemberExpression(secondArgument) && + babel.types.isIdentifier(secondArgument.object, { name: 'Logger' }) && + secondArgument.property.name.startsWith('LOG_') ) { - if (firstArgument.property.name === 'LOG_ERROR') { - // `path` is a call to `Logger.logAction(Logger.LOG_ERROR, ...)`; preserve it. + if (secondArgument.property.name === 'LOG_ERROR') { + // `path` is a call to `Logger.logAction(arg0, Logger.LOG_ERROR, ...)`; preserve it. foundErrorLog = true; } else { - // `path` is a call to `Logger.logAction(Logger.LOG_*, ...) for some other log level; strip it. + // `path` is a call to `Logger.logAction(arg0, Logger.LOG_*, ...) for some other log level; strip it. foundLogToStrip = true; path.remove(); } } else { - // `path` is a call to `Logger.logAction(...)` with some argument other than a `Logger.LOG_*` expression; raise an error because we can’t determine whether to strip it. + // `path` is a call to `Logger.logAction(arg0, ...)` with some argument other than a `Logger.LOG_*` expression; raise an error because we can’t determine whether to strip it. errors.push({ location: { file: args.path, - column: firstArgument.loc.start.column, - line: firstArgument.loc.start.line, - lineText: lines[firstArgument.loc.start.line - 1], + column: secondArgument.loc.start.column, + line: secondArgument.loc.start.line, + lineText: lines[secondArgument.loc.start.line - 1], }, - text: `First argument passed to Logger.logAction() must be Logger.LOG_*, got \`${ - babel.generator.default(firstArgument).code + text: `Second argument passed to Logger.logAction() must be Logger.LOG_*, got \`${ + babel.generator.default(secondArgument).code }\``, }); } diff --git a/scripts/moduleReport.ts b/scripts/moduleReport.ts index c933800af..6b0349192 100644 --- a/scripts/moduleReport.ts +++ b/scripts/moduleReport.ts @@ -6,7 +6,7 @@ import { gzip } from 'zlib'; import Table from 'cli-table'; // The maximum size we allow for a minimal useful Realtime bundle (i.e. one that can subscribe to a channel) -const minimalUsefulRealtimeBundleSizeThresholdsKiB = { raw: 95, gzip: 29 }; +const minimalUsefulRealtimeBundleSizeThresholdsKiB = { raw: 96, gzip: 29 }; const baseClientNames = ['BaseRest', 'BaseRealtime']; diff --git a/src/common/lib/client/auth.ts b/src/common/lib/client/auth.ts index 80b4ed253..67e7704f2 100644 --- a/src/common/lib/client/auth.ts +++ b/src/common/lib/client/auth.ts @@ -72,18 +72,18 @@ function c14n(capability?: string | Record>) { return JSON.stringify(c14nCapability); } -function logAndValidateTokenAuthMethod(authOptions: AuthOptions) { +function logAndValidateTokenAuthMethod(authOptions: AuthOptions, logger: Logger) { if (authOptions.authCallback) { - Logger.logAction(Logger.LOG_MINOR, 'Auth()', 'using token auth with authCallback'); + Logger.logAction(logger, Logger.LOG_MINOR, 'Auth()', 'using token auth with authCallback'); } else if (authOptions.authUrl) { - Logger.logAction(Logger.LOG_MINOR, 'Auth()', 'using token auth with authUrl'); + Logger.logAction(logger, Logger.LOG_MINOR, 'Auth()', 'using token auth with authUrl'); } else if (authOptions.key) { - Logger.logAction(Logger.LOG_MINOR, 'Auth()', 'using token auth with client-side signing'); + Logger.logAction(logger, Logger.LOG_MINOR, 'Auth()', 'using token auth with client-side signing'); } else if (authOptions.tokenDetails) { - Logger.logAction(Logger.LOG_MINOR, 'Auth()', 'using token auth with supplied token only'); + Logger.logAction(logger, Logger.LOG_MINOR, 'Auth()', 'using token auth with supplied token only'); } else { const msg = 'authOptions must include valid authentication parameters'; - Logger.logAction(Logger.LOG_ERROR, 'Auth()', msg); + Logger.logAction(logger, Logger.LOG_ERROR, 'Auth()', msg); throw new Error(msg); } } @@ -144,26 +144,31 @@ class Auth { /* Token auth */ if (noWayToRenew(options)) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Auth()', 'Warning: library initialized with a token literal without any way to renew the token when it expires (no authUrl, authCallback, or key). See https://help.ably.io/error/40171 for help', ); } this._saveTokenOptions(options.defaultTokenParams as API.TokenDetails, options); - logAndValidateTokenAuthMethod(this.authOptions); + logAndValidateTokenAuthMethod(this.authOptions, this.logger); } else { /* Basic auth */ if (!options.key) { const msg = 'No authentication options provided; need one of: key, authUrl, or authCallback (or for testing only, token or tokenDetails)'; - Logger.logAction(Logger.LOG_ERROR, 'Auth()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Auth()', msg); throw new ErrorInfo(msg, 40160, 401); } - Logger.logAction(Logger.LOG_MINOR, 'Auth()', 'anonymous, using basic auth'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Auth()', 'anonymous, using basic auth'); this._saveBasicOptions(options); } } + get logger(): Logger { + return this.client.logger; + } + /** * Instructs the library to get a token immediately and ensures Token Auth * is used for all future requests, storing the tokenParams and authOptions @@ -303,7 +308,7 @@ class Auth { * not the passed in ones. */ this._saveTokenOptions(tokenParams, authOptions); - logAndValidateTokenAuthMethod(this.authOptions); + logAndValidateTokenAuthMethod(this.authOptions, this.logger); try { return this._ensureValidAuthCredentials(true); @@ -403,10 +408,10 @@ class Auth { client = this.client; if (resolvedAuthOptions.authCallback) { - Logger.logAction(Logger.LOG_MINOR, 'Auth.requestToken()', 'using token auth with authCallback'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Auth.requestToken()', 'using token auth with authCallback'); tokenRequestCallback = resolvedAuthOptions.authCallback; } else if (resolvedAuthOptions.authUrl) { - Logger.logAction(Logger.LOG_MINOR, 'Auth.requestToken()', 'using token auth with authUrl'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Auth.requestToken()', 'using token auth with authUrl'); tokenRequestCallback = (params, cb) => { const authHeaders = Utils.mixin( { accept: 'application/json, text/plain' }, @@ -429,12 +434,13 @@ class Auth { } /* RSA8c2 */ const authParams = Utils.mixin({}, resolvedAuthOptions.authParams || {}, params) as RequestParams; - const authUrlRequestCallback = function (result: RequestResult) { + const authUrlRequestCallback = (result: RequestResult) => { let body = (result.body ?? null) as string | Bufferlike | API.TokenDetails | API.TokenRequest | null; let contentType: string | null = null; if (result.error) { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'Auth.requestToken().tokenRequestCallback', 'Received Error: ' + Utils.inspectError(result.error), @@ -448,6 +454,7 @@ class Auth { contentType = contentTypeHeaderOrHeaders; } Logger.logAction( + this.logger, Logger.LOG_MICRO, 'Auth.requestToken().tokenRequestCallback', 'Received; content-type: ' + contentType + '; body: ' + Utils.inspectBody(body), @@ -503,6 +510,7 @@ class Auth { cb(null, body as Exclude, contentType); }; Logger.logAction( + this.logger, Logger.LOG_MICRO, 'Auth.requestToken().tokenRequestCallback', 'Requesting token from ' + @@ -541,7 +549,12 @@ class Auth { } }; } else if (resolvedAuthOptions.key) { - Logger.logAction(Logger.LOG_MINOR, 'Auth.requestToken()', 'using token auth with client-side signing'); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'Auth.requestToken()', + 'using token auth with client-side signing', + ); tokenRequestCallback = (params, cb) => { Utils.whenPromiseSettles(this.createTokenRequest(params, resolvedAuthOptions), (err, result) => cb(err as string | ErrorInfo | null, result ?? null), @@ -551,6 +564,7 @@ class Auth { const msg = 'Need a new token, but authOptions does not include any way to request one (no authUrl, authCallback, or key)'; Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Auth()', 'library initialized with a token literal without any way to renew the token when it expires (no authUrl, authCallback, or key). See https://help.ably.io/error/40171 for help', @@ -577,6 +591,7 @@ class Auth { const requestHeaders = Defaults.defaultPostHeaders(this.client.options); if (resolvedAuthOptions.requestHeaders) Utils.mixin(requestHeaders, resolvedAuthOptions.requestHeaders); Logger.logAction( + this.logger, Logger.LOG_MICRO, 'Auth.requestToken().requestToken', 'Sending POST to ' + path + '; Token params: ' + JSON.stringify(signedTokenParams), @@ -593,19 +608,20 @@ class Auth { return new Promise((resolve, reject) => { let tokenRequestCallbackTimeoutExpired = false, timeoutLength = this.client.options.timeouts.realtimeRequestTimeout, - tokenRequestCallbackTimeout = setTimeout(function () { + tokenRequestCallbackTimeout = setTimeout(() => { tokenRequestCallbackTimeoutExpired = true; const msg = 'Token request callback timed out after ' + timeoutLength / 1000 + ' seconds'; - Logger.logAction(Logger.LOG_ERROR, 'Auth.requestToken()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Auth.requestToken()', msg); reject(new ErrorInfo(msg, 40170, 401)); }, timeoutLength); - tokenRequestCallback!(resolvedTokenParams, function (err, tokenRequestOrDetails, contentType) { + tokenRequestCallback!(resolvedTokenParams, (err, tokenRequestOrDetails, contentType) => { if (tokenRequestCallbackTimeoutExpired) return; clearTimeout(tokenRequestCallbackTimeout); if (err) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Auth.requestToken()', 'token request signing call returned error; err = ' + Utils.inspectError(err), @@ -648,7 +664,7 @@ class Auth { const msg = 'Expected token request callback to call back with a token string or token request/details object, but got a ' + typeof tokenRequestOrDetails; - Logger.logAction(Logger.LOG_ERROR, 'Auth.requestToken()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Auth.requestToken()', msg); reject(new ErrorInfo(msg, 40170, 401)); return; } @@ -671,14 +687,15 @@ class Auth { if (!('keyName' in tokenRequestOrDetails)) { const msg = 'Expected token request callback to call back with a token string, token request object, or token details object'; - Logger.logAction(Logger.LOG_ERROR, 'Auth.requestToken()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Auth.requestToken()', msg); reject(new ErrorInfo(msg, 40170, 401)); return; } /* it's a token request, so make the request */ - tokenRequest(tokenRequestOrDetails, function (err, tokenResponse, unpacked) { + tokenRequest(tokenRequestOrDetails, (err, tokenResponse, unpacked) => { if (err) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Auth.requestToken()', 'token request API call returned error; err = ' + Utils.inspectError(err), @@ -687,7 +704,7 @@ class Auth { return; } if (!unpacked) tokenResponse = JSON.parse(tokenResponse as string); - Logger.logAction(Logger.LOG_MINOR, 'Auth.getToken()', 'token received'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Auth.getToken()', 'token received'); resolve(tokenResponse as API.TokenDetails); }); }); @@ -779,7 +796,7 @@ class Auth { * simply for testing purposes. */ request.mac = request.mac || hmac(signText, keySecret); - Logger.logAction(Logger.LOG_MINOR, 'Auth.getTokenRequest()', 'generated signed request'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Auth.getTokenRequest()', 'generated signed request'); return request as API.TokenRequest; } @@ -897,16 +914,21 @@ class Auth { * automatically remove expired tokens. Else just use the cached token. If it is * expired Ably will tell us and we'll discard it then. */ if (!this.isTimeOffsetSet() || !token.expires || token.expires >= this.getTimestampUsingOffset()) { - Logger.logAction(Logger.LOG_MINOR, 'Auth.getToken()', 'using cached token; expires = ' + token.expires); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'Auth.getToken()', + 'using cached token; expires = ' + token.expires, + ); return token; } /* expired, so remove and fallthrough to getting a new one */ - Logger.logAction(Logger.LOG_MINOR, 'Auth.getToken()', 'deleting expired token'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Auth.getToken()', 'deleting expired token'); this.tokenDetails = null; } const promise = ( - this.waitingForTokenRequest || (this.waitingForTokenRequest = Multicaster.create()) + this.waitingForTokenRequest || (this.waitingForTokenRequest = Multicaster.create(this.logger)) ).createPromise(); if (this.currentTokenRequestId !== null && !forceSupersede) { return promise; @@ -925,6 +947,7 @@ class Auth { if ((this.currentTokenRequestId as number) > tokenRequestId) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'Auth._ensureValidAuthCredentials()', 'Discarding token request response; overtaken by newer one', @@ -967,7 +990,7 @@ class Auth { * recognise mismatch and return an error */ const msg = 'Unexpected clientId mismatch: client has ' + this.clientId + ', requested ' + clientId; const err = new ErrorInfo(msg, 40102, 401); - Logger.logAction(Logger.LOG_ERROR, 'Auth._uncheckedSetClientId()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Auth._uncheckedSetClientId()', msg); return err; } else { /* RSA7a4: if options.clientId is provided and is not diff --git a/src/common/lib/client/baseclient.ts b/src/common/lib/client/baseclient.ts index f4351902a..98a4720f0 100644 --- a/src/common/lib/client/baseclient.ts +++ b/src/common/lib/client/baseclient.ts @@ -44,26 +44,29 @@ class BaseClient { // Extra HTTP request implementations available to this client, in addition to those in web’s Http.bundledRequestImplementations readonly _additionalHTTPRequestImplementations: HTTPRequestImplementations | null; private readonly __FilteredSubscriptions: typeof FilteredSubscriptions | null; + readonly logger: Logger; constructor(options: ClientOptions) { this._additionalHTTPRequestImplementations = options.plugins ?? null; - Logger.setLog(options.logLevel, options.logHandler); + this.logger = new Logger(); + this.logger.setLog(options.logLevel, options.logHandler); Logger.logAction( + this.logger, Logger.LOG_MICRO, 'BaseClient()', 'initialized with clientOptions ' + Platform.Config.inspect(options), ); this._MsgPack = options.plugins?.MsgPack ?? null; - const normalOptions = (this.options = Defaults.normaliseOptions(options, this._MsgPack)); + const normalOptions = (this.options = Defaults.normaliseOptions(options, this._MsgPack, this.logger)); /* process options */ if (normalOptions.key) { const keyMatch = normalOptions.key.match(/^([^:\s]+):([^:.\s]+)$/); if (!keyMatch) { const msg = 'invalid key parameter'; - Logger.logAction(Logger.LOG_ERROR, 'BaseClient()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'BaseClient()', msg); throw new ErrorInfo(msg, 40400, 404); } normalOptions.keyName = keyMatch[1]; @@ -81,7 +84,7 @@ class BaseClient { ); } - Logger.logAction(Logger.LOG_MINOR, 'BaseClient()', 'started; version = ' + Defaults.version); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'BaseClient()', 'started; version = ' + Defaults.version); this._currentFallback = null; @@ -150,7 +153,7 @@ class BaseClient { } setLog(logOptions: LoggerOptions): void { - Logger.setLog(logOptions.level, logOptions.handler); + this.logger.setLog(logOptions.level, logOptions.handler); } static Platform = Platform; diff --git a/src/common/lib/client/baserealtime.ts b/src/common/lib/client/baserealtime.ts index 6fe106165..f9a57ac17 100644 --- a/src/common/lib/client/baserealtime.ts +++ b/src/common/lib/client/baserealtime.ts @@ -34,7 +34,7 @@ class BaseRealtime extends BaseClient { */ constructor(options?: ClientOptions | string) { super(Defaults.objectifyOptions(options, false, 'BaseRealtime')); - Logger.logAction(Logger.LOG_MINOR, 'Realtime()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Realtime()', ''); // currently we cannot support using Ably.Realtime instances in Vercel Edge runtime. // this error can be removed after fixing https://github.com/ably/ably-js/issues/1731, @@ -78,12 +78,12 @@ class BaseRealtime extends BaseClient { } connect(): void { - Logger.logAction(Logger.LOG_MINOR, 'Realtime.connect()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Realtime.connect()', ''); this.connection.connect(); } close(): void { - Logger.logAction(Logger.LOG_MINOR, 'Realtime.close()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Realtime.close()', ''); this.connection.close(); } } @@ -93,7 +93,7 @@ class Channels extends EventEmitter { all: Record; constructor(realtime: BaseRealtime) { - super(); + super(realtime.logger); this.realtime = realtime; this.all = Object.create(null); realtime.connection.connectionManager.on('transport.active', () => { @@ -125,6 +125,7 @@ class Channels extends EventEmitter { const channelName = msg.channel; if (channelName === undefined) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Channels.processChannelMessage()', 'received event unspecified channel, action = ' + msg.action, @@ -134,6 +135,7 @@ class Channels extends EventEmitter { const channel = this.all[channelName]; if (!channel) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Channels.processChannelMessage()', 'received event for non-existent channel: ' + channelName, diff --git a/src/common/lib/client/connection.ts b/src/common/lib/client/connection.ts index f8f62ad08..5b7013f28 100644 --- a/src/common/lib/client/connection.ts +++ b/src/common/lib/client/connection.ts @@ -16,7 +16,7 @@ class Connection extends EventEmitter { errorReason: ErrorInfo | null; constructor(ably: BaseRealtime, options: NormalisedClientOptions) { - super(); + super(ably.logger); this.ably = ably; this.connectionManager = new ConnectionManager(ably, options); this.state = this.connectionManager.state.state; @@ -42,24 +42,24 @@ class Connection extends EventEmitter { }) as any; connect(): void { - Logger.logAction(Logger.LOG_MINOR, 'Connection.connect()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Connection.connect()', ''); this.connectionManager.requestState({ state: 'connecting' }); } async ping(): Promise { - Logger.logAction(Logger.LOG_MINOR, 'Connection.ping()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Connection.ping()', ''); return new Promise((resolve, reject) => { this.connectionManager.ping(null, (err: unknown, result: number) => (err ? reject(err) : resolve(result))); }); } close(): void { - Logger.logAction(Logger.LOG_MINOR, 'Connection.close()', 'connectionKey = ' + this.key); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Connection.close()', 'connectionKey = ' + this.key); this.connectionManager.requestState({ state: 'closing' }); } get recoveryKey(): string | null { - Logger.deprecationWarning( + this.logger.deprecationWarning( 'The `Connection.recoveryKey` attribute has been replaced by the `Connection.createRecoveryKey()` method. Replace your usage of `recoveryKey` with the return value of `createRecoveryKey()`. `recoveryKey` will be removed in a future version.', ); return this.createRecoveryKey(); diff --git a/src/common/lib/client/paginatedresource.ts b/src/common/lib/client/paginatedresource.ts index 8c2353009..5602c0dc1 100644 --- a/src/common/lib/client/paginatedresource.ts +++ b/src/common/lib/client/paginatedresource.ts @@ -59,6 +59,10 @@ class PaginatedResource { this.useHttpPaginatedResponse = useHttpPaginatedResponse || false; } + get logger(): Logger { + return this.client.logger; + } + async get(params: Record): Promise> { const result = await Resource.get(this.client, this.path, this.headers, params, this.envelope, false); return this.handlePage(result); @@ -87,6 +91,7 @@ class PaginatedResource { async handlePage(result: ResourceResult): Promise> { if (result.err && returnErrOnly(result.err, result.body, this.useHttpPaginatedResponse)) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'PaginatedResource.handlePage()', 'Unexpected error getting resource: err = ' + Utils.inspectError(result.err), diff --git a/src/common/lib/client/realtimechannel.ts b/src/common/lib/client/realtimechannel.ts index 637c1c508..e0a561492 100644 --- a/src/common/lib/client/realtimechannel.ts +++ b/src/common/lib/client/realtimechannel.ts @@ -99,15 +99,15 @@ class RealtimeChannel extends EventEmitter { retryCount: number = 0; constructor(client: BaseRealtime, name: string, options?: API.ChannelOptions) { - super(); - Logger.logAction(Logger.LOG_MINOR, 'RealtimeChannel()', 'started; name = ' + name); + super(client.logger); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'RealtimeChannel()', 'started; name = ' + name); this.name = name; - this.channelOptions = normaliseChannelOptions(client._Crypto ?? null, options); + this.channelOptions = normaliseChannelOptions(client._Crypto ?? null, this.logger, options); this.client = client; this._presence = client._RealtimePresence ? new client._RealtimePresence.RealtimePresence(this) : null; this.connectionManager = client.connection.connectionManager; this.state = 'initialized'; - this.subscriptions = new EventEmitter(); + this.subscriptions = new EventEmitter(this.logger); this.syncChannelSerial = undefined; this.properties = { attachSerial: undefined, @@ -130,7 +130,7 @@ class RealtimeChannel extends EventEmitter { }; /* Only differences between this and the public event emitter is that this emits an * update event for all ATTACHEDs, whether resumed or not */ - this._allChannelChanges = new EventEmitter(); + this._allChannelChanges = new EventEmitter(this.logger); } invalidStateError(): ErrorInfo { @@ -157,7 +157,7 @@ class RealtimeChannel extends EventEmitter { if (err) { throw err; } - this.channelOptions = normaliseChannelOptions(this.client._Crypto ?? null, options); + this.channelOptions = normaliseChannelOptions(this.client._Crypto ?? null, this.logger, options); if (this._decodingContext) this._decodingContext.channelOptions = this.channelOptions; if (this._shouldReattachToSetOptions(options, previousChannelOptions)) { /* This does not just do _attach(true, null, callback) because that would put us @@ -253,7 +253,7 @@ class RealtimeChannel extends EventEmitter { } _publish(messages: Array, callback: ErrCallback) { - Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.publish()', 'message count = ' + messages.length); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RealtimeChannel.publish()', 'message count = ' + messages.length); const state = this.state; switch (state) { case 'failed': @@ -261,7 +261,12 @@ class RealtimeChannel extends EventEmitter { callback(ErrorInfo.fromValues(this.invalidStateError())); break; default: { - Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.publish()', 'sending message; channel state is ' + state); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + 'RealtimeChannel.publish()', + 'sending message; channel state is ' + state, + ); const msg = new ProtocolMessage(); msg.action = actions.MESSAGE; msg.channel = this.name; @@ -273,7 +278,7 @@ class RealtimeChannel extends EventEmitter { } onEvent(messages: Array): void { - Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.onEvent()', 'received message'); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RealtimeChannel.onEvent()', 'received message'); const subscriptions = this.subscriptions; for (let i = 0; i < messages.length; i++) { const message = messages[i]; @@ -297,9 +302,14 @@ class RealtimeChannel extends EventEmitter { callback?: StandardCallback, ): void { if (!callback) { - callback = function (err?: ErrorInfo | null) { + callback = (err?: ErrorInfo | null) => { if (err) { - Logger.logAction(Logger.LOG_ERROR, 'RealtimeChannel._attach()', 'Channel attach failed: ' + err.toString()); + Logger.logAction( + this.logger, + Logger.LOG_ERROR, + 'RealtimeChannel._attach()', + 'Channel attach failed: ' + err.toString(), + ); } }; } @@ -336,7 +346,7 @@ class RealtimeChannel extends EventEmitter { } attachImpl(): void { - Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.attachImpl()', 'sending ATTACH message'); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RealtimeChannel.attachImpl()', 'sending ATTACH message'); const attachMsg = protocolMessageFromValues({ action: actions.ATTACH, channel: this.name, @@ -401,7 +411,7 @@ class RealtimeChannel extends EventEmitter { } detachImpl(callback?: ErrCallback): void { - Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.detach()', 'sending DETACH message'); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RealtimeChannel.detach()', 'sending DETACH message'); const msg = protocolMessageFromValues({ action: actions.DETACH, channel: this.name }); this.sendMessage(msg, callback || noop); } @@ -562,7 +572,12 @@ class RealtimeChannel extends EventEmitter { if (!presenceMsg.timestamp) presenceMsg.timestamp = timestamp; if (!presenceMsg.id) presenceMsg.id = id + ':' + i; } catch (e) { - Logger.logAction(Logger.LOG_ERROR, 'RealtimeChannel.processMessage()', (e as Error).toString()); + Logger.logAction( + this.logger, + Logger.LOG_ERROR, + 'RealtimeChannel.processMessage()', + (e as Error).toString(), + ); } } if (this._presence) { @@ -574,6 +589,7 @@ class RealtimeChannel extends EventEmitter { //RTL17 if (this.state !== 'attached') { Logger.logAction( + this.logger, Logger.LOG_MAJOR, 'RealtimeChannel.processMessage()', 'Message "' + @@ -605,7 +621,7 @@ class RealtimeChannel extends EventEmitter { '" on this channel "' + this.name + '".'; - Logger.logAction(Logger.LOG_ERROR, 'RealtimeChannel.processMessage()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'RealtimeChannel.processMessage()', msg); this._startDecodeFailureRecovery(new ErrorInfo(msg, 40018, 400)); break; } @@ -616,7 +632,12 @@ class RealtimeChannel extends EventEmitter { await decodeMessage(msg, this._decodingContext); } catch (e) { /* decrypt failed .. the most likely cause is that we have the wrong key */ - Logger.logAction(Logger.LOG_ERROR, 'RealtimeChannel.processMessage()', (e as Error).toString()); + Logger.logAction( + this.logger, + Logger.LOG_ERROR, + 'RealtimeChannel.processMessage()', + (e as Error).toString(), + ); switch ((e as ErrorInfo).code) { case 40018: /* decode failure */ @@ -655,6 +676,7 @@ class RealtimeChannel extends EventEmitter { default: Logger.logAction( + this.logger, Logger.LOG_ERROR, 'RealtimeChannel.processMessage()', 'Fatal protocol error: unrecognised action (' + message.action + ')', @@ -666,6 +688,7 @@ class RealtimeChannel extends EventEmitter { _startDecodeFailureRecovery(reason: ErrorInfo): void { if (!this._lastPayload.decodeFailureRecoveryInProgress) { Logger.logAction( + this.logger, Logger.LOG_MAJOR, 'RealtimeChannel.processMessage()', 'Starting decode failure recovery process.', @@ -678,7 +701,12 @@ class RealtimeChannel extends EventEmitter { } onAttached(): void { - Logger.logAction(Logger.LOG_MINOR, 'RealtimeChannel.onAttached', 'activating channel; name = ' + this.name); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'RealtimeChannel.onAttached', + 'activating channel; name = ' + this.name, + ); } notifyState( @@ -689,6 +717,7 @@ class RealtimeChannel extends EventEmitter { hasBacklog?: boolean, ): void { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimeChannel.notifyState', 'name = ' + this.name + ', current state = ' + this.state + ', notifying state ' + state, @@ -718,9 +747,9 @@ class RealtimeChannel extends EventEmitter { const action = 'Channel state for channel "' + this.name + '"'; const message = state + (reason ? '; reason: ' + reason : ''); if (state === 'failed') { - Logger.logAction(Logger.LOG_ERROR, action, message); + Logger.logAction(this.logger, Logger.LOG_ERROR, action, message); } else { - Logger.logAction(Logger.LOG_MAJOR, action, message); + Logger.logAction(this.logger, Logger.LOG_MAJOR, action, message); } if (state !== 'attaching' && state !== 'suspended') { @@ -744,7 +773,12 @@ class RealtimeChannel extends EventEmitter { } requestState(state: API.ChannelState, reason?: ErrorInfo | null): void { - Logger.logAction(Logger.LOG_MINOR, 'RealtimeChannel.requestState', 'name = ' + this.name + ', state = ' + state); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'RealtimeChannel.requestState', + 'name = ' + this.name + ', state = ' + state, + ); this.notifyState(state, reason); /* send the event and await response */ this.checkPendingState(); @@ -755,6 +789,7 @@ class RealtimeChannel extends EventEmitter { const cmState = this.connectionManager.state; if (!cmState.sendEvents) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'RealtimeChannel.checkPendingState', 'sendEvents is false; state is ' + this.connectionManager.state.state, @@ -763,6 +798,7 @@ class RealtimeChannel extends EventEmitter { } Logger.logAction( + this.logger, Logger.LOG_MINOR, 'RealtimeChannel.checkPendingState', 'name = ' + this.name + ', state = ' + this.state, @@ -807,7 +843,7 @@ class RealtimeChannel extends EventEmitter { startStateTimerIfNotRunning(): void { if (!this.stateTimer) { this.stateTimer = setTimeout(() => { - Logger.logAction(Logger.LOG_MINOR, 'RealtimeChannel.startStateTimerIfNotRunning', 'timer expired'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'RealtimeChannel.startStateTimerIfNotRunning', 'timer expired'); this.stateTimer = null; this.timeoutPendingState(); }, this.client.options.timeouts.realtimeRequestTimeout); @@ -833,7 +869,12 @@ class RealtimeChannel extends EventEmitter { * will be triggered once it connects again */ if (this.state === 'suspended' && this.connectionManager.state.sendEvents) { this.retryTimer = null; - Logger.logAction(Logger.LOG_MINOR, 'RealtimeChannel retry timer expired', 'attempting a new attach'); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'RealtimeChannel retry timer expired', + 'attempting a new attach', + ); this.requestState('attaching'); } }, retryDelay); @@ -850,7 +891,7 @@ class RealtimeChannel extends EventEmitter { this: RealtimeChannel, params: RealtimeHistoryParams | null, ): Promise> { - Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.history()', 'channel = ' + this.name); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RealtimeChannel.history()', 'channel = ' + this.name); // We fetch this first so that any plugin-not-provided error takes priority over other errors const restMixin = this.client.rest.channelMixin; @@ -893,6 +934,7 @@ class RealtimeChannel extends EventEmitter { setChannelSerial(channelSerial?: string | null): void { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimeChannel.setChannelSerial()', 'Updating channel serial; serial = ' + channelSerial + '; previous = ' + this.properties.channelSerial, diff --git a/src/common/lib/client/realtimepresence.ts b/src/common/lib/client/realtimepresence.ts index 612438aab..ef02e8e78 100644 --- a/src/common/lib/client/realtimepresence.ts +++ b/src/common/lib/client/realtimepresence.ts @@ -91,13 +91,13 @@ class RealtimePresence extends EventEmitter { name?: string; constructor(channel: RealtimeChannel) { - super(); + super(channel.logger); this.channel = channel; this.syncComplete = false; this.members = new PresenceMap(this, (item) => item.clientId + ':' + item.connectionId); // RTP17h: Store own members by clientId only. this._myMembers = new PresenceMap(this, (item) => item.clientId!); - this.subscriptions = new EventEmitter(); + this.subscriptions = new EventEmitter(this.logger); this.pendingPresence = []; } @@ -135,6 +135,7 @@ class RealtimePresence extends EventEmitter { } Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimePresence.' + action + 'Client()', 'channel = ' + channel.name + ', id = ' + id + ', client = ' + (clientId || '(implicit) ' + getClientId(this)), @@ -191,6 +192,7 @@ class RealtimePresence extends EventEmitter { } Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimePresence.leaveClient()', 'leaving; channel = ' + this.channel.name + ', client = ' + clientId, @@ -268,7 +270,7 @@ class RealtimePresence extends EventEmitter { } async history(params: RealtimeHistoryParams | null): Promise> { - Logger.logAction(Logger.LOG_MICRO, 'RealtimePresence.history()', 'channel = ' + this.name); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RealtimePresence.history()', 'channel = ' + this.name); // We fetch this first so that any plugin-not-provided error takes priority over other errors const restMixin = this.channel.client.rest.presenceMixin; @@ -290,6 +292,7 @@ class RealtimePresence extends EventEmitter { setPresence(presenceSet: PresenceMessage[], isSync: boolean, syncChannelSerial?: string): void { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimePresence.setPresence()', 'received presence for ' + presenceSet.length + ' participants; syncChannelSerial = ' + syncChannelSerial, @@ -345,6 +348,7 @@ class RealtimePresence extends EventEmitter { onAttached(hasPresence?: boolean): void { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'RealtimePresence.onAttached()', 'channel = ' + this.channel.name + ', hasPresence = ' + hasPresence, @@ -367,8 +371,9 @@ class RealtimePresence extends EventEmitter { if (pendingPresCount) { this.pendingPresence = []; const presenceArray = []; - const multicaster = Multicaster.create(); + const multicaster = Multicaster.create(this.logger); Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimePresence.onAttached', 'sending ' + pendingPresCount + ' queued presence messages', @@ -401,6 +406,7 @@ class RealtimePresence extends EventEmitter { failPendingPresence(err?: ErrorInfo | null): void { if (this.pendingPresence.length) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'RealtimeChannel.failPendingPresence', 'channel; name = ' + this.channel.name + ', err = ' + Utils.inspectError(err), @@ -424,7 +430,7 @@ class RealtimePresence extends EventEmitter { if (err) { const msg = 'Presence auto-re-enter failed: ' + err.toString(); const wrappedErr = new ErrorInfo(msg, 91004, 400); - Logger.logAction(Logger.LOG_ERROR, 'RealtimePresence._ensureMyMembersPresent()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'RealtimePresence._ensureMyMembersPresent()', msg); const change = new ChannelStateChange(this.channel.state, this.channel.state, true, false, wrappedErr); this.channel.emit('update', change); } @@ -433,6 +439,7 @@ class RealtimePresence extends EventEmitter { for (const memberKey in myMembers.map) { const entry = myMembers.map[memberKey]; Logger.logAction( + this.logger, Logger.LOG_MICRO, 'RealtimePresence._ensureMyMembersPresent()', 'Auto-reentering clientId "' + entry.clientId + '" into the presence set', @@ -488,7 +495,7 @@ class PresenceMap extends EventEmitter { memberKey: (item: PresenceMessage) => string; constructor(presence: RealtimePresence, memberKey: (item: PresenceMessage) => string) { - super(); + super(presence.logger); this.presence = presence; this.map = Object.create(null); this.syncInProgress = false; @@ -580,6 +587,7 @@ class PresenceMap extends EventEmitter { const map = this.map, syncInProgress = this.syncInProgress; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'PresenceMap.startSync()', 'channel = ' + this.presence.channel.name + '; syncInProgress = ' + syncInProgress, @@ -595,6 +603,7 @@ class PresenceMap extends EventEmitter { const map = this.map, syncInProgress = this.syncInProgress; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'PresenceMap.endSync()', 'channel = ' + this.presence.channel.name + '; syncInProgress = ' + syncInProgress, @@ -625,6 +634,7 @@ class PresenceMap extends EventEmitter { waitSync(callback: () => void) { const syncInProgress = this.syncInProgress; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'PresenceMap.waitSync()', 'channel = ' + this.presence.channel.name + '; syncInProgress = ' + syncInProgress, @@ -643,7 +653,7 @@ class PresenceMap extends EventEmitter { } setInProgress(inProgress: boolean) { - Logger.logAction(Logger.LOG_MICRO, 'PresenceMap.setInProgress()', 'inProgress = ' + inProgress); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'PresenceMap.setInProgress()', 'inProgress = ' + inProgress); this.syncInProgress = inProgress; this.presence.syncComplete = !inProgress; } diff --git a/src/common/lib/client/resource.ts b/src/common/lib/client/resource.ts index c5aba126c..186abf1b6 100644 --- a/src/common/lib/client/resource.ts +++ b/src/common/lib/client/resource.ts @@ -75,15 +75,23 @@ function unenvelope( return { err: result.err, body: response, headers: wrappedHeaders, unpacked: true, statusCode: wrappedStatusCode }; } -function logResult(result: ResourceResult, method: HttpMethods, path: string, params: Record) { +function logResult( + result: ResourceResult, + method: HttpMethods, + path: string, + params: Record, + logger: Logger, +) { if (result.err) { Logger.logAction( + logger, Logger.LOG_MICRO, 'Resource.' + method + '()', 'Received Error; ' + urlFromPathAndParams(path, params) + '; Error: ' + Utils.inspectError(result.err), ); } else { Logger.logAction( + logger, Logger.LOG_MICRO, 'Resource.' + method + '()', 'Received; ' + @@ -298,12 +306,14 @@ class Resource { (params = params || {})['envelope'] = envelope; } + const logger = client.logger; + async function doRequest( this: any, headers: Record, params: Record, ): Promise> { - if (Logger.shouldLog(Logger.LOG_MICRO)) { + if (logger.shouldLog(Logger.LOG_MICRO)) { let decodedBody = body; if (headers['content-type']?.indexOf('msgpack') > 0) { try { @@ -313,6 +323,7 @@ class Resource { decodedBody = client._MsgPack.decode(body as Buffer); } catch (decodeErr) { Logger.logAction( + logger, Logger.LOG_MICRO, 'Resource.' + method + '()', 'Sending MsgPack Decoding Error: ' + Utils.inspectError(decodeErr), @@ -320,6 +331,7 @@ class Resource { } } Logger.logAction( + logger, Logger.LOG_MICRO, 'Resource.' + method + '()', 'Sending; ' + urlFromPathAndParams(path, params) + '; Body: ' + decodedBody, @@ -350,8 +362,8 @@ class Resource { result = unenvelope(result, client._MsgPack, envelope); } - if (Logger.shouldLog(Logger.LOG_MICRO)) { - logResult(result, method, path, params); + if (logger.shouldLog(Logger.LOG_MICRO)) { + logResult(result, method, path, params, logger); } if (throwError) { diff --git a/src/common/lib/client/restchannel.ts b/src/common/lib/client/restchannel.ts index 71ac07ea0..ff086a9db 100644 --- a/src/common/lib/client/restchannel.ts +++ b/src/common/lib/client/restchannel.ts @@ -34,19 +34,23 @@ class RestChannel { channelOptions: ChannelOptions; constructor(client: BaseRest, name: string, channelOptions?: ChannelOptions) { - Logger.logAction(Logger.LOG_MINOR, 'RestChannel()', 'started; name = ' + name); + Logger.logAction(client.logger, Logger.LOG_MINOR, 'RestChannel()', 'started; name = ' + name); this.name = name; this.client = client; this.presence = new RestPresence(this); - this.channelOptions = normaliseChannelOptions(client._Crypto ?? null, channelOptions); + this.channelOptions = normaliseChannelOptions(client._Crypto ?? null, this.logger, channelOptions); + } + + get logger(): Logger { + return this.client.logger; } setOptions(options?: ChannelOptions): void { - this.channelOptions = normaliseChannelOptions(this.client._Crypto ?? null, options); + this.channelOptions = normaliseChannelOptions(this.client._Crypto ?? null, this.logger, options); } async history(params: RestHistoryParams | null): Promise> { - Logger.logAction(Logger.LOG_MICRO, 'RestChannel.history()', 'channel = ' + this.name); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RestChannel.history()', 'channel = ' + this.name); return this.client.rest.channelMixin.history(this, params); } diff --git a/src/common/lib/client/restchannelmixin.ts b/src/common/lib/client/restchannelmixin.ts index 26695c8c1..c104d66be 100644 --- a/src/common/lib/client/restchannelmixin.ts +++ b/src/common/lib/client/restchannelmixin.ts @@ -36,7 +36,13 @@ export class RestChannelMixin { headers, unpacked, ) { - return await messageFromResponseBody(body as Message[], options, client._MsgPack, unpacked ? undefined : format); + return await messageFromResponseBody( + body as Message[], + options, + channel.logger, + client._MsgPack, + unpacked ? undefined : format, + ); }).get(params as Record); } diff --git a/src/common/lib/client/restpresence.ts b/src/common/lib/client/restpresence.ts index 470752443..3ce4e142a 100644 --- a/src/common/lib/client/restpresence.ts +++ b/src/common/lib/client/restpresence.ts @@ -13,8 +13,12 @@ class RestPresence { this.channel = channel; } + get logger(): Logger { + return this.channel.logger; + } + async get(params: any): Promise> { - Logger.logAction(Logger.LOG_MICRO, 'RestPresence.get()', 'channel = ' + this.channel.name); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RestPresence.get()', 'channel = ' + this.channel.name); const client = this.channel.client, format = client.options.useBinaryProtocol ? Utils.Format.msgpack : Utils.Format.json, envelope = this.channel.client.http.supportsLinkHeaders ? undefined : format, @@ -28,10 +32,11 @@ class RestPresence { this.channel.client.rest.presenceMixin.basePath(this), headers, envelope, - async function (body, headers, unpacked) { + async (body, headers, unpacked) => { return await presenceMessageFromResponseBody( body as Record[], options as CipherOptions, + this.logger, client._MsgPack, unpacked ? undefined : format, ); @@ -40,7 +45,7 @@ class RestPresence { } async history(params: any): Promise> { - Logger.logAction(Logger.LOG_MICRO, 'RestPresence.history()', 'channel = ' + this.channel.name); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'RestPresence.history()', 'channel = ' + this.channel.name); return this.channel.client.rest.presenceMixin.history(this, params); } } diff --git a/src/common/lib/client/restpresencemixin.ts b/src/common/lib/client/restpresencemixin.ts index c42f725a5..f0b2cca37 100644 --- a/src/common/lib/client/restpresencemixin.ts +++ b/src/common/lib/client/restpresencemixin.ts @@ -32,6 +32,7 @@ export class RestPresenceMixin { return await presenceMessageFromResponseBody( body as Record[], options as CipherOptions, + presence.logger, client._MsgPack, unpacked ? undefined : format, ); diff --git a/src/common/lib/transport/comettransport.ts b/src/common/lib/transport/comettransport.ts index 4ecf0d147..ab468b6cc 100644 --- a/src/common/lib/transport/comettransport.ts +++ b/src/common/lib/transport/comettransport.ts @@ -73,7 +73,7 @@ abstract class CometTransport extends Transport { ): IXHRRequest; connect(): void { - Logger.logAction(Logger.LOG_MINOR, 'CometTransport.connect()', 'starting'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'CometTransport.connect()', 'starting'); Transport.prototype.connect.call(this); const params = this.params; const options = params.options; @@ -83,7 +83,7 @@ abstract class CometTransport extends Transport { this.baseUri = cometScheme + host + ':' + port + '/comet/'; const connectUri = this.baseUri + 'connect'; - Logger.logAction(Logger.LOG_MINOR, 'CometTransport.connect()', 'uri: ' + connectUri); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'CometTransport.connect()', 'uri: ' + connectUri); Utils.whenPromiseSettles(this.auth.getAuthParams(), (err: Error | null, authParams?: Record) => { if (err) { this.disconnect(err); @@ -96,6 +96,7 @@ abstract class CometTransport extends Transport { const connectParams = this.params.getConnectParams(authParams!); if ('stream' in connectParams) this.stream = connectParams.stream; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'CometTransport.connect()', 'connectParams:' + Utils.toQueryString(connectParams), @@ -157,12 +158,12 @@ abstract class CometTransport extends Transport { } requestClose(): void { - Logger.logAction(Logger.LOG_MINOR, 'CometTransport.requestClose()'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'CometTransport.requestClose()'); this._requestCloseOrDisconnect(true); } requestDisconnect(): void { - Logger.logAction(Logger.LOG_MINOR, 'CometTransport.requestDisconnect()'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'CometTransport.requestDisconnect()'); this._requestCloseOrDisconnect(false); } @@ -174,6 +175,7 @@ abstract class CometTransport extends Transport { request.on('complete', (err: ErrorInfo) => { if (err) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'CometTransport.request' + (closing ? 'Close()' : 'Disconnect()'), 'request returned err = ' + Utils.inspectError(err), @@ -186,11 +188,11 @@ abstract class CometTransport extends Transport { } dispose(): void { - Logger.logAction(Logger.LOG_MINOR, 'CometTransport.dispose()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'CometTransport.dispose()', ''); if (!this.isDisposed) { this.isDisposed = true; if (this.recvRequest) { - Logger.logAction(Logger.LOG_MINOR, 'CometTransport.dispose()', 'aborting recv request'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'CometTransport.dispose()', 'aborting recv request'); this.recvRequest.abort(); this.recvRequest = null; } @@ -215,7 +217,7 @@ abstract class CometTransport extends Transport { Transport.prototype.onConnect.call(this, message); const baseConnectionUri = (this.baseUri as string) + connectionStr; - Logger.logAction(Logger.LOG_MICRO, 'CometTransport.onConnect()', 'baseUri = ' + baseConnectionUri); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'CometTransport.onConnect()', 'baseUri = ' + baseConnectionUri); this.sendUri = baseConnectionUri + '/send'; this.recvUri = baseConnectionUri + '/recv'; this.closeUri = baseConnectionUri + '/close'; @@ -260,6 +262,7 @@ abstract class CometTransport extends Transport { sendRequest.on('complete', (err: ErrorInfo, data: string) => { if (err) Logger.logAction( + this.logger, Logger.LOG_ERROR, 'CometTransport.sendItems()', 'on complete: err = ' + Utils.inspectError(err), @@ -354,6 +357,7 @@ abstract class CometTransport extends Transport { ); } catch (e) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'CometTransport.onData()', 'Unexpected exception handing channel event: ' + (e as Error).stack, diff --git a/src/common/lib/transport/connectionmanager.ts b/src/common/lib/transport/connectionmanager.ts index 94d460557..93e30d64f 100644 --- a/src/common/lib/transport/connectionmanager.ts +++ b/src/common/lib/transport/connectionmanager.ts @@ -222,7 +222,7 @@ class ConnectionManager extends EventEmitter { connectCounter: number; constructor(realtime: BaseRealtime, options: NormalisedClientOptions) { - super(); + super(realtime.logger); this.realtime = realtime; this.initTransports(); this.options = options; @@ -284,7 +284,7 @@ class ConnectionManager extends EventEmitter { this.state = this.states.initialized; this.errorReason = null; - this.queuedMessages = new MessageQueue(); + this.queuedMessages = new MessageQueue(this.logger); this.msgSerial = 0; this.connectionDetails = undefined; this.connectionId = undefined; @@ -317,22 +317,29 @@ class ConnectionManager extends EventEmitter { this.webSocketGiveUpTimer = null; this.abandonedWebSocket = false; - Logger.logAction(Logger.LOG_MINOR, 'Realtime.ConnectionManager()', 'started'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Realtime.ConnectionManager()', 'started'); Logger.logAction( + this.logger, Logger.LOG_MICRO, 'Realtime.ConnectionManager()', 'requested transports = [' + (options.transports || Defaults.defaultTransports) + ']', ); Logger.logAction( + this.logger, Logger.LOG_MICRO, 'Realtime.ConnectionManager()', 'available transports = [' + this.transports + ']', ); - Logger.logAction(Logger.LOG_MICRO, 'Realtime.ConnectionManager()', 'http hosts = [' + this.httpHosts + ']'); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + 'Realtime.ConnectionManager()', + 'http hosts = [' + this.httpHosts + ']', + ); if (!this.transports.length) { const msg = 'no requested transports available'; - Logger.logAction(Logger.LOG_ERROR, 'realtime.ConnectionManager()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'realtime.ConnectionManager()', msg); throw new Error(msg); } @@ -346,6 +353,7 @@ class ConnectionManager extends EventEmitter { if (options.closeOnUnload === true) { addEventListener('beforeunload', () => { Logger.logAction( + this.logger, Logger.LOG_MAJOR, 'Realtime.ConnectionManager()', 'beforeunload event has triggered the connection to close as closeOnUnload is true', @@ -358,6 +366,7 @@ class ConnectionManager extends EventEmitter { addEventListener('online', () => { if (this.state == this.states.disconnected || this.state == this.states.suspended) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager caught browser ‘online’ event', 'reattempting connection', @@ -375,6 +384,7 @@ class ConnectionManager extends EventEmitter { addEventListener('offline', () => { if (this.state == this.states.connected) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager caught browser ‘offline’ event', 'disconnecting active transport', @@ -434,6 +444,7 @@ class ConnectionManager extends EventEmitter { lastSessionData = getSessionRecoverData(); if (lastSessionData && typeof recoverFn === 'function') { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.getTransportParams()', 'Calling clientOptions-provided recover function with last session data', @@ -455,6 +466,7 @@ class ConnectionManager extends EventEmitter { const transportParams = this.createTransportParams(null, mode); if (mode === 'recover') { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.getTransportParams()', 'Transport recovery mode = recover; recoveryKey = ' + this.options.recover, @@ -465,6 +477,7 @@ class ConnectionManager extends EventEmitter { } } else { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.getTransportParams()', 'Transport params = ' + transportParams.toString(), @@ -481,7 +494,7 @@ class ConnectionManager extends EventEmitter { * @param callback */ tryATransport(transportParams: TransportParams, candidate: TransportName, callback: Function): void { - Logger.logAction(Logger.LOG_MICRO, 'ConnectionManager.tryATransport()', 'trying ' + candidate); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'ConnectionManager.tryATransport()', 'trying ' + candidate); this.proposedTransport = Transport.tryConnect( this.supportedTransports[candidate]!, @@ -493,6 +506,7 @@ class ConnectionManager extends EventEmitter { if (state == this.states.closing || state == this.states.closed || state == this.states.failed) { if (transport) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.tryATransport()', 'connection ' + state.state + ' while we were attempting the transport; closing ' + transport, @@ -505,6 +519,7 @@ class ConnectionManager extends EventEmitter { if (wrappedErr) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.tryATransport()', 'transport ' + candidate + ' ' + wrappedErr.event + ', err: ' + wrappedErr.error.toString(), @@ -544,6 +559,7 @@ class ConnectionManager extends EventEmitter { } Logger.logAction( + this.logger, Logger.LOG_MICRO, 'ConnectionManager.tryATransport()', 'viable transport ' + candidate + '; setting pending', @@ -563,6 +579,7 @@ class ConnectionManager extends EventEmitter { setTransportPending(transport: Transport, transportParams: TransportParams): void { const mode = transportParams.mode; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.setTransportPending()', 'transport = ' + transport + '; mode = ' + mode, @@ -606,15 +623,26 @@ class ConnectionManager extends EventEmitter { connectionId: string, connectionDetails: Record, ): boolean { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.activateTransport()', 'transport = ' + transport); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'ConnectionManager.activateTransport()', + 'transport = ' + transport, + ); if (error) { - Logger.logAction(Logger.LOG_ERROR, 'ConnectionManager.activateTransport()', 'error = ' + error); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'ConnectionManager.activateTransport()', 'error = ' + error); } if (connectionId) { - Logger.logAction(Logger.LOG_MICRO, 'ConnectionManager.activateTransport()', 'connectionId = ' + connectionId); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + 'ConnectionManager.activateTransport()', + 'connectionId = ' + connectionId, + ); } if (connectionDetails) { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'ConnectionManager.activateTransport()', 'connectionDetails = ' + JSON.stringify(connectionDetails), @@ -628,6 +656,7 @@ class ConnectionManager extends EventEmitter { const existingState = this.state, connectedState = this.states.connected.state; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.activateTransport()', 'current state = ' + existingState.state, @@ -638,6 +667,7 @@ class ConnectionManager extends EventEmitter { existingState.state == this.states.failed.state ) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.activateTransport()', 'Disconnecting transport and abandoning', @@ -651,6 +681,7 @@ class ConnectionManager extends EventEmitter { /* if the transport is not connected then don't activate it */ if (!transport.isConnected) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.activateTransport()', 'Declining to activate transport ' + transport + ' since it appears to no longer be connected', @@ -709,6 +740,7 @@ class ConnectionManager extends EventEmitter { * from other active transports when upgrading, and upgrading waits for * the old transport to be idle. So log an error. */ Logger.logAction( + this.logger, Logger.LOG_ERROR, 'ConnectionManager.activateTransport()', 'Previous active protocol (for transport ' + @@ -726,7 +758,7 @@ class ConnectionManager extends EventEmitter { transport.shortName + '; stack = ' + new Error().stack; - Logger.logAction(Logger.LOG_ERROR, 'ConnectionManager.activateTransport()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'ConnectionManager.activateTransport()', msg); } else { existingActiveProtocol.finish(); } @@ -746,8 +778,14 @@ class ConnectionManager extends EventEmitter { wasPending = transport === this.pendingTransport, noTransportsScheduledForActivation = this.noTransportsScheduledForActivation(); - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.deactivateTransport()', 'transport = ' + transport); Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'ConnectionManager.deactivateTransport()', + 'transport = ' + transport, + ); + Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.deactivateTransport()', 'state = ' + @@ -756,10 +794,16 @@ class ConnectionManager extends EventEmitter { (noTransportsScheduledForActivation ? '' : '; another transport is scheduled for activation'), ); if (error && error.message) - Logger.logAction(Logger.LOG_MICRO, 'ConnectionManager.deactivateTransport()', 'reason = ' + error.message); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + 'ConnectionManager.deactivateTransport()', + 'reason = ' + error.message, + ); if (wasActive) { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'ConnectionManager.deactivateTransport()', 'Getting, clearing, and requeuing ' + @@ -831,7 +875,7 @@ class ConnectionManager extends EventEmitter { connIdChanged = prevConnId && prevConnId !== connectionId, recoverFailure = !prevConnId && hasConnectionError; if (connIdChanged || recoverFailure) { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.setConnection()', 'Resetting msgSerial'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager.setConnection()', 'Resetting msgSerial'); this.msgSerial = 0; // RTN19a2: In the event of a new connectionId, previous msgSerials are // meaningless. @@ -839,6 +883,7 @@ class ConnectionManager extends EventEmitter { } if (this.connectionId !== connectionId) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.setConnection()', 'New connectionId; reattaching any attached channels', @@ -876,6 +921,7 @@ class ConnectionManager extends EventEmitter { const sinceLast = Date.now() - this.lastActivity; if (sinceLast > this.connectionStateTtl + (this.maxIdleInterval as number)) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.checkConnectionStateFreshness()', 'Last known activity from realtime was ' + sinceLast + 'ms ago; discarding connection state', @@ -939,11 +985,12 @@ class ConnectionManager extends EventEmitter { const action = 'Connection state'; const message = stateChange.current + (stateChange.reason ? '; reason: ' + stateChange.reason : ''); if (stateChange.current === 'failed') { - Logger.logAction(Logger.LOG_ERROR, action, message); + Logger.logAction(this.logger, Logger.LOG_ERROR, action, message); } else { - Logger.logAction(Logger.LOG_MAJOR, action, message); + Logger.logAction(this.logger, Logger.LOG_MAJOR, action, message); } Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.enactStateChange', 'setting new state: ' + @@ -972,13 +1019,19 @@ class ConnectionManager extends EventEmitter { startTransitionTimer(transitionState: ConnectionState): void { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.startTransitionTimer()', 'transitionState: ' + transitionState.state, ); if (this.transitionTimer) { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.startTransitionTimer()', 'clearing already-running timer'); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'ConnectionManager.startTransitionTimer()', + 'clearing already-running timer', + ); clearTimeout(this.transitionTimer as number); } @@ -986,6 +1039,7 @@ class ConnectionManager extends EventEmitter { if (this.transitionTimer) { this.transitionTimer = null; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager ' + transitionState.state + ' timer expired', 'requesting new state: ' + transitionState.failState, @@ -996,7 +1050,7 @@ class ConnectionManager extends EventEmitter { } cancelTransitionTimer(): void { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.cancelTransitionTimer()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager.cancelTransitionTimer()', ''); if (this.transitionTimer) { clearTimeout(this.transitionTimer as number); this.transitionTimer = null; @@ -1009,6 +1063,7 @@ class ConnectionManager extends EventEmitter { if (this.suspendTimer) { this.suspendTimer = null; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager suspend timer expired', 'requesting new state: suspended', @@ -1033,7 +1088,7 @@ class ConnectionManager extends EventEmitter { startRetryTimer(interval: number): void { this.retryTimer = setTimeout(() => { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager retry timer expired', 'retrying'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager retry timer expired', 'retrying'); this.retryTimer = null; this.requestState({ state: 'connecting' }); }, interval); @@ -1048,11 +1103,17 @@ class ConnectionManager extends EventEmitter { startWebSocketSlowTimer() { this.webSocketSlowTimer = setTimeout(() => { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager WebSocket slow timer', 'checking connectivity'); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'ConnectionManager WebSocket slow timer', + 'checking connectivity', + ); if (this.wsCheckResult === null) { this.checkWsConnectivity() .then(() => { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager WebSocket slow timer', 'ws connectivity check succeeded', @@ -1061,6 +1122,7 @@ class ConnectionManager extends EventEmitter { }) .catch(() => { Logger.logAction( + this.logger, Logger.LOG_MAJOR, 'ConnectionManager WebSocket slow timer', 'ws connectivity check failed', @@ -1072,6 +1134,7 @@ class ConnectionManager extends EventEmitter { Utils.whenPromiseSettles(this.realtime.http.checkConnectivity(), (err, connectivity) => { if (err || !connectivity) { Logger.logAction( + this.logger, Logger.LOG_MAJOR, 'ConnectionManager WebSocket slow timer', 'http connectivity check failed', @@ -1083,6 +1146,7 @@ class ConnectionManager extends EventEmitter { }); } else { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager WebSocket slow timer', 'http connectivity check succeeded', @@ -1104,6 +1168,7 @@ class ConnectionManager extends EventEmitter { this.webSocketGiveUpTimer = setTimeout(() => { if (!this.wsCheckResult) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager WebSocket give up timer', 'websocket connection took more than 10s; ' + (this.baseTransport ? 'trying base transport' : ''), @@ -1116,6 +1181,7 @@ class ConnectionManager extends EventEmitter { } else { // if we don't have a base transport to fallback to, just let the websocket connection attempt time out Logger.logAction( + this.logger, Logger.LOG_MAJOR, 'ConnectionManager WebSocket give up timer', 'websocket connectivity appears to be unavailable but no other transports to try', @@ -1153,6 +1219,7 @@ class ConnectionManager extends EventEmitter { !(this.errorReason && Auth.isTokenErr(this.errorReason as ErrorInfo)))); Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.notifyState()', 'new state: ' + state + (retryImmediately ? '; will retry connection immediately' : ''), @@ -1201,6 +1268,7 @@ class ConnectionManager extends EventEmitter { const sinceLast = this.lastAutoReconnectAttempt && Date.now() - this.lastAutoReconnectAttempt + 1; if (sinceLast && sinceLast < 1000) { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'ConnectionManager.notifyState()', 'Last reconnect attempt was only ' + @@ -1229,6 +1297,7 @@ class ConnectionManager extends EventEmitter { if (state == 'connected' && !this.activeProtocol) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'ConnectionManager.notifyState()', 'Broken invariant: attempted to go into connected state, but there is no active protocol', @@ -1248,6 +1317,7 @@ class ConnectionManager extends EventEmitter { requestState(request: any): void { const state = request.state; Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.requestState()', 'requested state: ' + state + '; current state: ' + this.state.state, @@ -1289,6 +1359,7 @@ class ConnectionManager extends EventEmitter { startConnect(): void { if (this.state !== this.states.connecting) { Logger.logAction( + this.logger, Logger.LOG_MINOR, 'ConnectionManager.startConnect()', 'Must be in connecting state to connect, but was ' + this.state.state, @@ -1323,7 +1394,7 @@ class ConnectionManager extends EventEmitter { }); }; - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.startConnect()', 'starting connection'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager.startConnect()', 'starting connection'); this.startSuspendTimer(); this.startTransitionTimer(this.states.connecting); @@ -1372,6 +1443,8 @@ class ConnectionManager extends EventEmitter { * for upgrading). Any operation can put us into 'disconnected' to cancel * connection attempts and wait before retrying, or 'failed' to fail. */ Logger.logAction( + this.logger, + Logger.LOG_MINOR, 'ConnectionManager.connectImpl()', 'Must be in connecting state to connect, but was ' + state, @@ -1390,6 +1463,8 @@ class ConnectionManager extends EventEmitter { this.unpersistTransportPreference(); if (this.state === this.states.connecting) { Logger.logAction( + this.logger, + Logger.LOG_MINOR, 'ConnectionManager.connectImpl():', 'web socket connectivity available, cancelling connection attempt with ' + this.baseTransport, @@ -1425,7 +1500,7 @@ class ConnectionManager extends EventEmitter { * with the transport and fallback to base transport. */ connectWs(transportParams: TransportParams, connectCount: number) { - Logger.logAction(Logger.LOG_DEBUG, 'ConnectionManager.connectWs()'); + Logger.logAction(this.logger, Logger.LOG_DEBUG, 'ConnectionManager.connectWs()'); this.startWebSocketSlowTimer(); this.startWebSocketGiveUpTimer(transportParams); @@ -1435,7 +1510,7 @@ class ConnectionManager extends EventEmitter { } connectBase(transportParams: TransportParams, connectCount: number) { - Logger.logAction(Logger.LOG_DEBUG, 'ConnectionManager.connectBase()'); + Logger.logAction(this.logger, Logger.LOG_DEBUG, 'ConnectionManager.connectBase()'); if (this.baseTransport) { this.tryTransportWithFallbacks(this.baseTransport, transportParams, false, connectCount, () => true); } else { @@ -1453,7 +1528,13 @@ class ConnectionManager extends EventEmitter { connectCount: number, shouldContinue: () => boolean, ): void { - Logger.logAction(Logger.LOG_DEBUG, 'ConnectionManager.tryTransportWithFallbacks()', transportName); + Logger.logAction( + this.logger, + + Logger.LOG_DEBUG, + 'ConnectionManager.tryTransportWithFallbacks()', + transportName, + ); const giveUp = (err: IPartialErrorInfo) => { this.notifyState({ state: this.states.connecting.failState as string, error: err }); }; @@ -1535,12 +1616,14 @@ class ConnectionManager extends EventEmitter { } closeImpl(): void { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.closeImpl()', 'closing connection'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager.closeImpl()', 'closing connection'); this.cancelSuspendTimer(); this.startTransitionTimer(this.states.closing); if (this.pendingTransport) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.closeImpl()', 'Closing pending transport: ' + this.pendingTransport, @@ -1550,6 +1633,8 @@ class ConnectionManager extends EventEmitter { if (this.activeProtocol) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.closeImpl()', 'Closing active transport: ' + this.activeProtocol.getTransport(), @@ -1566,6 +1651,8 @@ class ConnectionManager extends EventEmitter { switch (this.state.state) { case 'connected': { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.onAuthUpdated()', 'Sending AUTH message on active transport', @@ -1606,6 +1693,8 @@ class ConnectionManager extends EventEmitter { case 'connecting': Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.onAuthUpdated()', 'Aborting current connection attempts in order to start again with the new auth details', @@ -1615,6 +1704,8 @@ class ConnectionManager extends EventEmitter { default: { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.onAuthUpdated()', 'Connection state is ' + this.state.state + '; waiting until either connected or failed', @@ -1649,13 +1740,21 @@ class ConnectionManager extends EventEmitter { } disconnectAllTransports(): void { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting all transports'); + Logger.logAction( + this.logger, + + Logger.LOG_MINOR, + 'ConnectionManager.disconnectAllTransports()', + 'Disconnecting all transports', + ); /* This will prevent any connection procedure in an async part of one of its early stages from continuing */ this.connectCounter++; if (this.pendingTransport) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting pending transport: ' + this.pendingTransport, @@ -1666,6 +1765,8 @@ class ConnectionManager extends EventEmitter { if (this.proposedTransport) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting proposed transport: ' + this.pendingTransport, @@ -1676,6 +1777,8 @@ class ConnectionManager extends EventEmitter { if (this.activeProtocol) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.disconnectAllTransports()', 'Disconnecting active transport: ' + this.activeProtocol.getTransport(), @@ -1695,19 +1798,21 @@ class ConnectionManager extends EventEmitter { const state = this.state; if (state.sendEvents) { - Logger.logAction(Logger.LOG_MICRO, 'ConnectionManager.send()', 'sending event'); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'ConnectionManager.send()', 'sending event'); this.sendImpl(new PendingMessage(msg, callback)); return; } const shouldQueue = queueEvent && state.queueEvents; if (!shouldQueue) { const err = 'rejecting event, queueEvent was ' + queueEvent + ', state was ' + state.state; - Logger.logAction(Logger.LOG_MICRO, 'ConnectionManager.send()', err); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'ConnectionManager.send()', err); callback(this.errorReason || new ErrorInfo(err, 90000, 400)); return; } - if (Logger.shouldLog(Logger.LOG_MICRO)) { + if (this.logger.shouldLog(Logger.LOG_MICRO)) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.send()', 'queueing msg; ' + stringifyProtocolMessage(msg, this.realtime._RealtimePresence), @@ -1727,6 +1832,8 @@ class ConnectionManager extends EventEmitter { (this.activeProtocol as Protocol).send(pendingMessage); } catch (e) { Logger.logAction( + this.logger, + Logger.LOG_ERROR, 'ConnectionManager.sendImpl()', 'Unexpected exception in transport.send(): ' + (e as Error).stack, @@ -1735,7 +1842,7 @@ class ConnectionManager extends EventEmitter { } queue(msg: ProtocolMessage, callback: ErrCallback): void { - Logger.logAction(Logger.LOG_MICRO, 'ConnectionManager.queue()', 'queueing event'); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'ConnectionManager.queue()', 'queueing event'); const lastQueued = this.queuedMessages.last(); const maxSize = this.options.maxMessageSize; /* If have already attempted to send a message, don't merge more messages @@ -1743,7 +1850,7 @@ class ConnectionManager extends EventEmitter { * the dup, they'll be lost */ if (lastQueued && !lastQueued.sendAttempted && bundleWith(lastQueued.message, msg, maxSize)) { if (!lastQueued.merged) { - lastQueued.callback = Multicaster.create([lastQueued.callback]); + lastQueued.callback = Multicaster.create(this.logger, [lastQueued.callback]); lastQueued.merged = true; } (lastQueued.callback as MulticasterInstance).push(callback); @@ -1754,6 +1861,8 @@ class ConnectionManager extends EventEmitter { sendQueuedMessages(): void { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.sendQueuedMessages()', 'sending ' + this.queuedMessages.count() + ' queued messages', @@ -1765,6 +1874,8 @@ class ConnectionManager extends EventEmitter { queuePendingMessages(pendingMessages: Array): void { if (pendingMessages && pendingMessages.length) { Logger.logAction( + this.logger, + Logger.LOG_MICRO, 'ConnectionManager.queuePendingMessages()', 'queueing ' + pendingMessages.length + ' pending messages', @@ -1777,6 +1888,8 @@ class ConnectionManager extends EventEmitter { const numQueued = this.queuedMessages.count(); if (numQueued > 0) { Logger.logAction( + this.logger, + Logger.LOG_ERROR, 'ConnectionManager.failQueuedMessages()', 'failing ' + numQueued + ' queued messages, err = ' + Utils.inspectError(err), @@ -1801,6 +1914,8 @@ class ConnectionManager extends EventEmitter { this.processChannelMessage(pendingChannelMessage.message) .catch((err) => { Logger.logAction( + this.logger, + Logger.LOG_ERROR, 'ConnectionManager.processNextPendingChannelMessage() received error ', err, @@ -1820,7 +1935,7 @@ class ConnectionManager extends EventEmitter { ping(transport: Transport | null, callback: Function): void { /* if transport is specified, try that */ if (transport) { - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.ping()', 'transport = ' + transport); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager.ping()', 'transport = ' + transport); const onTimeout = function () { transport.off('heartbeat', onHeartbeat); @@ -1913,11 +2028,11 @@ class ConnectionManager extends EventEmitter { this.notifyState({ state: 'failed', error: err }); } else if (err.statusCode === HttpStatusCodes.Forbidden) { const msg = 'Client configured authentication provider returned 403; failing the connection'; - Logger.logAction(Logger.LOG_ERROR, 'ConnectionManager.actOnErrorFromAuthorize()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'ConnectionManager.actOnErrorFromAuthorize()', msg); this.notifyState({ state: 'failed', error: new ErrorInfo(msg, 80019, 403, err) }); } else { const msg = 'Client configured authentication provider request failed'; - Logger.logAction(Logger.LOG_MINOR, 'ConnectionManager.actOnErrorFromAuthorize', msg); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'ConnectionManager.actOnErrorFromAuthorize', msg); this.notifyState({ state: this.state.failState as string, error: new ErrorInfo(msg, 80019, 401, err) }); } } @@ -1934,7 +2049,7 @@ class ConnectionManager extends EventEmitter { if (clientId) { const err = this.realtime.auth._uncheckedSetClientId(clientId); if (err) { - Logger.logAction(Logger.LOG_ERROR, 'ConnectionManager.onConnectionDetailsUpdate()', err.message); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'ConnectionManager.onConnectionDetailsUpdate()', err.message); /* Errors setting the clientId are fatal to the connection */ transport.fail(err); return; diff --git a/src/common/lib/transport/messagequeue.ts b/src/common/lib/transport/messagequeue.ts index 3544e9042..a335a585b 100644 --- a/src/common/lib/transport/messagequeue.ts +++ b/src/common/lib/transport/messagequeue.ts @@ -6,8 +6,8 @@ import { PendingMessage } from './protocol'; class MessageQueue extends EventEmitter { messages: Array; - constructor() { - super(); + constructor(logger: Logger) { + super(logger); this.messages = []; } @@ -40,7 +40,12 @@ class MessageQueue extends EventEmitter { } completeMessages(serial: number, count: number, err?: ErrorInfo | null): void { - Logger.logAction(Logger.LOG_MICRO, 'MessageQueue.completeMessages()', 'serial = ' + serial + '; count = ' + count); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + 'MessageQueue.completeMessages()', + 'serial = ' + serial + '; count = ' + count, + ); err = err || null; const messages = this.messages; if (messages.length === 0) { @@ -71,7 +76,12 @@ class MessageQueue extends EventEmitter { } clear(): void { - Logger.logAction(Logger.LOG_MICRO, 'MessageQueue.clear()', 'clearing ' + this.messages.length + ' messages'); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + 'MessageQueue.clear()', + 'clearing ' + this.messages.length + ' messages', + ); this.messages = []; this.emit('idle'); } diff --git a/src/common/lib/transport/protocol.ts b/src/common/lib/transport/protocol.ts index ee396767a..0dccbdb34 100644 --- a/src/common/lib/transport/protocol.ts +++ b/src/common/lib/transport/protocol.ts @@ -29,9 +29,9 @@ class Protocol extends EventEmitter { messageQueue: MessageQueue; constructor(transport: Transport) { - super(); + super(transport.connectionManager.realtime.logger); this.transport = transport; - this.messageQueue = new MessageQueue(); + this.messageQueue = new MessageQueue(this.logger); transport.on('ack', (serial: number, count: number) => { this.onAck(serial, count); }); @@ -41,12 +41,13 @@ class Protocol extends EventEmitter { } onAck(serial: number, count: number): void { - Logger.logAction(Logger.LOG_MICRO, 'Protocol.onAck()', 'serial = ' + serial + '; count = ' + count); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'Protocol.onAck()', 'serial = ' + serial + '; count = ' + count); this.messageQueue.completeMessages(serial, count); } onNack(serial: number, count: number, err: ErrorInfo): void { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Protocol.onNack()', 'serial = ' + serial + '; count = ' + count + '; err = ' + Utils.inspectError(err), @@ -70,8 +71,9 @@ class Protocol extends EventEmitter { if (pendingMessage.ackRequired) { this.messageQueue.push(pendingMessage); } - if (Logger.shouldLog(Logger.LOG_MICRO)) { + if (this.logger.shouldLog(Logger.LOG_MICRO)) { Logger.logActionNoStrip( + this.logger, Logger.LOG_MICRO, 'Protocol.send()', 'sending msg; ' + diff --git a/src/common/lib/transport/transport.ts b/src/common/lib/transport/transport.ts index 78a173688..cc8c7217a 100644 --- a/src/common/lib/transport/transport.ts +++ b/src/common/lib/transport/transport.ts @@ -58,7 +58,7 @@ abstract class Transport extends EventEmitter { lastActivity: number | null; constructor(connectionManager: ConnectionManager, auth: Auth, params: TransportParams, forceJsonProtocol?: boolean) { - super(); + super(connectionManager.realtime.logger); if (forceJsonProtocol) { params.format = undefined; params.heartbeats = true; @@ -120,8 +120,9 @@ abstract class Transport extends EventEmitter { } onProtocolMessage(message: ProtocolMessage): void { - if (Logger.shouldLog(Logger.LOG_MICRO)) { + if (this.logger.shouldLog(Logger.LOG_MICRO)) { Logger.logActionNoStrip( + this.logger, Logger.LOG_MICRO, 'Transport.onProtocolMessage()', 'received on ' + @@ -137,6 +138,7 @@ abstract class Transport extends EventEmitter { switch (message.action) { case actions.HEARTBEAT: Logger.logActionNoStrip( + this.logger, Logger.LOG_MICRO, 'Transport.onProtocolMessage()', this.shortName + ' heartbeat; connectionId = ' + this.connectionManager.connectionId, @@ -166,9 +168,10 @@ abstract class Transport extends EventEmitter { // Ignored. break; case actions.AUTH: - Utils.whenPromiseSettles(this.auth.authorize(), function (err: ErrorInfo | null) { + Utils.whenPromiseSettles(this.auth.authorize(), (err: ErrorInfo | null) => { if (err) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Transport.onProtocolMessage()', 'Ably requested re-authentication, but unable to obtain a new token: ' + Utils.inspectError(err), @@ -178,6 +181,7 @@ abstract class Transport extends EventEmitter { break; case actions.ERROR: Logger.logAction( + this.logger, Logger.LOG_MINOR, 'Transport.onProtocolMessage()', 'received error action; connectionId = ' + @@ -216,7 +220,7 @@ abstract class Transport extends EventEmitter { /* Used for when the server has disconnected the client (usually with a * DISCONNECTED action) */ const err = message && message.error; - Logger.logAction(Logger.LOG_MINOR, 'Transport.onDisconnect()', 'err = ' + Utils.inspectError(err)); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Transport.onDisconnect()', 'err = ' + Utils.inspectError(err)); this.finish('disconnected', err); } @@ -225,23 +229,23 @@ abstract class Transport extends EventEmitter { * will close the connection and the transport, and do not need to request * a disconnection - RTN15i */ const err = message && message.error; - Logger.logAction(Logger.LOG_MINOR, 'Transport.onFatalError()', 'err = ' + Utils.inspectError(err)); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Transport.onFatalError()', 'err = ' + Utils.inspectError(err)); this.finish('failed', err); } onClose(message: ProtocolMessage): void { const err = message && message.error; - Logger.logAction(Logger.LOG_MINOR, 'Transport.onClose()', 'err = ' + Utils.inspectError(err)); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Transport.onClose()', 'err = ' + Utils.inspectError(err)); this.finish('closed', err); } requestClose(): void { - Logger.logAction(Logger.LOG_MINOR, 'Transport.requestClose()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Transport.requestClose()', ''); this.send(closeMessage); } requestDisconnect(): void { - Logger.logAction(Logger.LOG_MINOR, 'Transport.requestDisconnect()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Transport.requestDisconnect()', ''); this.send(disconnectMessage); } @@ -252,7 +256,7 @@ abstract class Transport extends EventEmitter { } dispose(): void { - Logger.logAction(Logger.LOG_MINOR, 'Transport.dispose()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'Transport.dispose()', ''); this.isDisposed = true; this.off(); } @@ -282,7 +286,7 @@ abstract class Transport extends EventEmitter { const timeRemaining = this.maxIdleInterval - sinceLast; if (timeRemaining <= 0) { const msg = 'No activity seen from realtime in ' + sinceLast + 'ms; assuming connection has dropped'; - Logger.logAction(Logger.LOG_ERROR, 'Transport.onIdleTimerExpire()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Transport.onIdleTimerExpire()', msg); this.disconnect(new ErrorInfo(msg, 80003, 408)); } else { this.setIdleTimer(timeRemaining + 100); @@ -317,7 +321,12 @@ abstract class Transport extends EventEmitter { transport.on(['failed', 'disconnected'], errorCb); transport.on('preconnect', function () { - Logger.logAction(Logger.LOG_MINOR, 'Transport.tryConnect()', 'viable transport ' + transport); + Logger.logAction( + connectionManager.realtime.logger, + Logger.LOG_MINOR, + 'Transport.tryConnect()', + 'viable transport ' + transport, + ); clearTimeout(transportAttemptTimer); transport.off(['failed', 'disconnected'], errorCb); callback(null, transport); diff --git a/src/common/lib/transport/websockettransport.ts b/src/common/lib/transport/websockettransport.ts index 0efe0eba0..3e12f1d67 100644 --- a/src/common/lib/transport/websockettransport.ts +++ b/src/common/lib/transport/websockettransport.ts @@ -46,14 +46,14 @@ class WebSocketTransport extends Transport { } connect() { - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.connect()', 'starting'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.connect()', 'starting'); Transport.prototype.connect.call(this); const self = this, params = this.params, options = params.options; const wsScheme = options.tls ? 'wss://' : 'ws://'; const wsUri = wsScheme + this.wsHost + ':' + Defaults.getPort(options) + '/'; - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.connect()', 'uri: ' + wsUri); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.connect()', 'uri: ' + wsUri); Utils.whenPromiseSettles( this.auth.getAuthParams(), function (err: ErrorInfo | null, authParams?: Record) { @@ -62,7 +62,12 @@ class WebSocketTransport extends Transport { } let paramStr = ''; for (const param in authParams) paramStr += ' ' + param + ': ' + authParams[param] + ';'; - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.connect()', 'authParams:' + paramStr + ' err: ' + err); + Logger.logAction( + self.logger, + Logger.LOG_MINOR, + 'WebSocketTransport.connect()', + 'authParams:' + paramStr + ' err: ' + err, + ); if (err) { self.disconnect(err); return; @@ -92,6 +97,7 @@ class WebSocketTransport extends Transport { } } catch (e) { Logger.logAction( + self.logger, Logger.LOG_ERROR, 'WebSocketTransport.connect()', 'Unexpected exception creating websocket: err = ' + ((e as Error).stack || (e as Error).message), @@ -105,7 +111,7 @@ class WebSocketTransport extends Transport { send(message: ProtocolMessage) { const wsConnection = this.wsConnection; if (!wsConnection) { - Logger.logAction(Logger.LOG_ERROR, 'WebSocketTransport.send()', 'No socket connection'); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'WebSocketTransport.send()', 'No socket connection'); return; } try { @@ -114,7 +120,7 @@ class WebSocketTransport extends Transport { ); } catch (e) { const msg = 'Exception from ws connection when trying to send: ' + Utils.inspectError(e); - Logger.logAction(Logger.LOG_ERROR, 'WebSocketTransport.send()', msg); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'WebSocketTransport.send()', msg); /* Don't try to request a disconnect, that'll just involve sending data * down the websocket again. Just finish the transport. */ this.finish('disconnected', new ErrorInfo(msg, 50000, 500)); @@ -123,6 +129,7 @@ class WebSocketTransport extends Transport { onWsData(data: string) { Logger.logAction( + this.logger, Logger.LOG_MICRO, 'WebSocketTransport.onWsData()', 'data received; length = ' + data.length + '; type = ' + typeof data, @@ -138,6 +145,7 @@ class WebSocketTransport extends Transport { ); } catch (e) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'WebSocketTransport.onWsData()', 'Unexpected exception handing channel message: ' + (e as Error).stack, @@ -146,7 +154,7 @@ class WebSocketTransport extends Transport { } onWsOpen() { - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.onWsOpen()', 'opened WebSocket'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.onWsOpen()', 'opened WebSocket'); this.emit('preconnect'); } @@ -164,20 +172,25 @@ class WebSocketTransport extends Transport { } delete this.wsConnection; if (wasClean) { - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.onWsClose()', 'Cleanly closed WebSocket'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.onWsClose()', 'Cleanly closed WebSocket'); const err = new ErrorInfo('Websocket closed', 80003, 400); this.finish('disconnected', err); } else { const msg = 'Unclean disconnection of WebSocket ; code = ' + code, err = new ErrorInfo(msg, 80003, 400); - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.onWsClose()', msg); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.onWsClose()', msg); this.finish('disconnected', err); } this.emit('disposed'); } onWsError(err: ErrorEvent) { - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.onError()', 'Error from WebSocket: ' + err.message); + Logger.logAction( + this.logger, + Logger.LOG_MINOR, + 'WebSocketTransport.onError()', + 'Error from WebSocket: ' + err.message, + ); /* Wait a tick before aborting: if the websocket was connected, this event * will be immediately followed by an onclose event with a close code. Allow * that to close it (so we see the close code) rather than anticipating it */ @@ -187,7 +200,7 @@ class WebSocketTransport extends Transport { } dispose() { - Logger.logAction(Logger.LOG_MINOR, 'WebSocketTransport.dispose()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.dispose()', ''); this.isDisposed = true; const wsConnection = this.wsConnection; if (wsConnection) { @@ -198,8 +211,8 @@ class WebSocketTransport extends Transport { delete this.wsConnection; /* defer until the next event loop cycle before closing the socket, * giving some implementations the opportunity to send any outstanding close message */ - Platform.Config.nextTick(function () { - Logger.logAction(Logger.LOG_MICRO, 'WebSocketTransport.dispose()', 'closing websocket'); + Platform.Config.nextTick(() => { + Logger.logAction(this.logger, Logger.LOG_MICRO, 'WebSocketTransport.dispose()', 'closing websocket'); if (!wsConnection) { throw new Error('WebSocketTransport.dispose(): wsConnection is not defined'); } diff --git a/src/common/lib/types/defaultmessage.ts b/src/common/lib/types/defaultmessage.ts index 286ceeef5..dfc4a02b1 100644 --- a/src/common/lib/types/defaultmessage.ts +++ b/src/common/lib/types/defaultmessage.ts @@ -10,17 +10,18 @@ import * as API from '../../../../ably'; import Platform from 'common/platform'; import PresenceMessage from './presencemessage'; import { ChannelOptions } from 'common/types/channel'; +import Logger from '../util/logger'; /** `DefaultMessage` is the class returned by `DefaultRest` and `DefaultRealtime`’s `Message` static property. It introduces the static methods described in the `MessageStatic` interface of the public API of the non tree-shakable version of the library. */ export class DefaultMessage extends Message { static async fromEncoded(encoded: unknown, inputOptions?: API.ChannelOptions): Promise { - return fromEncoded(Platform.Crypto, encoded, inputOptions); + return fromEncoded(Logger.defaultLogger, Platform.Crypto, encoded, inputOptions); } static async fromEncodedArray(encodedArray: Array, options?: API.ChannelOptions): Promise { - return fromEncodedArray(Platform.Crypto, encodedArray, options); + return fromEncodedArray(Logger.defaultLogger, Platform.Crypto, encodedArray, options); } // Used by tests diff --git a/src/common/lib/types/defaultpresencemessage.ts b/src/common/lib/types/defaultpresencemessage.ts index d6639af31..1b8592c3e 100644 --- a/src/common/lib/types/defaultpresencemessage.ts +++ b/src/common/lib/types/defaultpresencemessage.ts @@ -1,4 +1,5 @@ import * as API from '../../../../ably'; +import Logger from '../util/logger'; import PresenceMessage, { fromEncoded, fromEncodedArray, fromValues } from './presencemessage'; /** @@ -6,14 +7,14 @@ import PresenceMessage, { fromEncoded, fromEncodedArray, fromValues } from './pr */ export class DefaultPresenceMessage extends PresenceMessage { static async fromEncoded(encoded: unknown, inputOptions?: API.ChannelOptions): Promise { - return fromEncoded(encoded, inputOptions); + return fromEncoded(Logger.defaultLogger, encoded, inputOptions); } static async fromEncodedArray( encodedArray: Array, options?: API.ChannelOptions, ): Promise { - return fromEncodedArray(encodedArray, options); + return fromEncodedArray(Logger.defaultLogger, encodedArray, options); } static fromValues(values: PresenceMessage | Record, stringifyAction?: boolean): PresenceMessage { diff --git a/src/common/lib/types/message.ts b/src/common/lib/types/message.ts index f1c44cb26..7cc8b80ac 100644 --- a/src/common/lib/types/message.ts +++ b/src/common/lib/types/message.ts @@ -45,11 +45,12 @@ function normaliseContext(context: CipherOptions | EncodingDecodingContext | Cha function normalizeCipherOptions( Crypto: IUntypedCryptoStatic | null, + logger: Logger, options: API.ChannelOptions | null, ): ChannelOptions { if (options && options.cipher) { if (!Crypto) Utils.throwMissingPluginError('Crypto'); - const cipher = Crypto.getCipher(options.cipher); + const cipher = Crypto.getCipher(options.cipher, logger); return { cipher: cipher.cipherParams, channelCipher: cipher.cipher, @@ -76,30 +77,32 @@ function getMessageSize(msg: Message) { } export async function fromEncoded( + logger: Logger, Crypto: IUntypedCryptoStatic | null, encoded: unknown, inputOptions?: API.ChannelOptions, ): Promise { const msg = fromValues(encoded); - const options = normalizeCipherOptions(Crypto, inputOptions ?? null); + const options = normalizeCipherOptions(Crypto, logger, inputOptions ?? null); /* if decoding fails at any point, catch and return the message decoded to * the fullest extent possible */ try { await decode(msg, options); } catch (e) { - Logger.logAction(Logger.LOG_ERROR, 'Message.fromEncoded()', (e as Error).toString()); + Logger.logAction(logger, Logger.LOG_ERROR, 'Message.fromEncoded()', (e as Error).toString()); } return msg; } export async function fromEncodedArray( + logger: Logger, Crypto: IUntypedCryptoStatic | null, encodedArray: Array, options?: API.ChannelOptions, ): Promise { return Promise.all( encodedArray.map(function (encoded) { - return fromEncoded(Crypto, encoded, options); + return fromEncoded(logger, Crypto, encoded, options); }), ); } @@ -248,6 +251,7 @@ export async function decode( export async function fromResponseBody( body: Array, options: ChannelOptions | EncodingDecodingContext, + logger: Logger, MsgPack: MsgPack | null, format?: Utils.Format, ): Promise { @@ -260,7 +264,7 @@ export async function fromResponseBody( try { await decode(msg, options); } catch (e) { - Logger.logAction(Logger.LOG_ERROR, 'Message.fromResponseBody()', (e as Error).toString()); + Logger.logAction(logger, Logger.LOG_ERROR, 'Message.fromResponseBody()', (e as Error).toString()); } } return body; diff --git a/src/common/lib/types/presencemessage.ts b/src/common/lib/types/presencemessage.ts index 5cb1b690c..34e0d2d06 100644 --- a/src/common/lib/types/presencemessage.ts +++ b/src/common/lib/types/presencemessage.ts @@ -11,25 +11,30 @@ function toActionValue(actionString: string) { return actions.indexOf(actionString); } -export async function fromEncoded(encoded: unknown, options?: API.ChannelOptions): Promise { +export async function fromEncoded( + logger: Logger, + encoded: unknown, + options?: API.ChannelOptions, +): Promise { const msg = fromValues(encoded as PresenceMessage | Record, true); /* if decoding fails at any point, catch and return the message decoded to * the fullest extent possible */ try { await decode(msg, options ?? {}); } catch (e) { - Logger.logAction(Logger.LOG_ERROR, 'PresenceMessage.fromEncoded()', (e as Error).toString()); + Logger.logAction(logger, Logger.LOG_ERROR, 'PresenceMessage.fromEncoded()', (e as Error).toString()); } return msg; } export async function fromEncodedArray( + logger: Logger, encodedArray: unknown[], options?: API.ChannelOptions, ): Promise { return Promise.all( encodedArray.map(function (encoded) { - return fromEncoded(encoded, options); + return fromEncoded(logger, encoded, options); }), ); } @@ -50,6 +55,7 @@ export const decode = decodeMessage; export async function fromResponseBody( body: Record[], options: CipherOptions, + logger: Logger, MsgPack: MsgPack | null, format?: Utils.Format, ): Promise { @@ -63,7 +69,7 @@ export async function fromResponseBody( try { await decode(msg, options); } catch (e) { - Logger.logAction(Logger.LOG_ERROR, 'PresenceMessage.fromResponseBody()', (e as Error).toString()); + Logger.logAction(logger, Logger.LOG_ERROR, 'PresenceMessage.fromResponseBody()', (e as Error).toString()); } } return messages; diff --git a/src/common/lib/util/defaults.ts b/src/common/lib/util/defaults.ts index a8b818dbf..43f3218c6 100644 --- a/src/common/lib/util/defaults.ts +++ b/src/common/lib/util/defaults.ts @@ -50,7 +50,7 @@ type CompleteDefaults = IDefaults & { sourceForErrorMessage: string, modularPluginsToInclude?: ModularPlugins, ): ClientOptions; - normaliseOptions(options: ClientOptions, MsgPack: MsgPack | null): NormalisedClientOptions; + normaliseOptions(options: ClientOptions, MsgPack: MsgPack | null, logger?: Logger): NormalisedClientOptions; defaultGetHeaders(options: NormalisedClientOptions, headersOptions?: HeadersOptions): Record; defaultPostHeaders(options: NormalisedClientOptions, headersOptions?: HeadersOptions): Record; }; @@ -151,12 +151,13 @@ function checkHost(host: string): void { } } -function getRealtimeHost(options: ClientOptions, production: boolean, environment: string): string { +function getRealtimeHost(options: ClientOptions, production: boolean, environment: string, logger: Logger): string { if (options.realtimeHost) return options.realtimeHost; /* prefer setting realtimeHost to restHost as a custom restHost typically indicates * a development environment is being used that can't be inferred by the library */ if (options.restHost) { Logger.logAction( + logger, Logger.LOG_MINOR, 'Defaults.normaliseOptions', 'restHost is set to "' + @@ -199,7 +200,7 @@ export function objectifyOptions( const msg = allowKeyOrToken ? `${sourceForErrorMessage} must be initialized with either a client options object, an Ably API key, or an Ably Token` : `${sourceForErrorMessage} must be initialized with a client options object`; - Logger.logAction(Logger.LOG_ERROR, `${sourceForErrorMessage}()`, msg); + Logger.logAction(Logger.defaultLogger, Logger.LOG_ERROR, `${sourceForErrorMessage}()`, msg); throw new Error(msg); } @@ -209,7 +210,7 @@ export function objectifyOptions( if (options.indexOf(':') == -1) { if (!allowKeyOrToken) { const msg = `${sourceForErrorMessage} cannot be initialized with just an Ably Token; you must provide a client options object with a \`plugins\` property. (Set this Ably Token as the object’s \`token\` property.)`; - Logger.logAction(Logger.LOG_ERROR, `${sourceForErrorMessage}()`, msg); + Logger.logAction(Logger.defaultLogger, Logger.LOG_ERROR, `${sourceForErrorMessage}()`, msg); throw new Error(msg); } @@ -217,7 +218,7 @@ export function objectifyOptions( } else { if (!allowKeyOrToken) { const msg = `${sourceForErrorMessage} cannot be initialized with just an Ably API key; you must provide a client options object with a \`plugins\` property. (Set this Ably API key as the object’s \`key\` property.)`; - Logger.logAction(Logger.LOG_ERROR, `${sourceForErrorMessage}()`, msg); + Logger.logAction(Logger.defaultLogger, Logger.LOG_ERROR, `${sourceForErrorMessage}()`, msg); throw new Error(msg); } @@ -234,9 +235,14 @@ export function objectifyOptions( return optionsObj; } -export function normaliseOptions(options: ClientOptions, MsgPack: MsgPack | null): NormalisedClientOptions { +export function normaliseOptions( + options: ClientOptions, + MsgPack: MsgPack | null, + logger: Logger = Logger.defaultLogger, // should only be omitted by tests +): NormalisedClientOptions { if (typeof options.recover === 'function' && options.closeOnUnload === true) { Logger.logAction( + logger, Logger.LOG_ERROR, 'Defaults.normaliseOptions', 'closeOnUnload was true and a session recovery function was set - these are mutually exclusive, so unsetting the latter', @@ -261,7 +267,7 @@ export function normaliseOptions(options: ClientOptions, MsgPack: MsgPack | null } const restHost = options.restHost || (production ? Defaults.REST_HOST : environment + '-' + Defaults.REST_HOST); - const realtimeHost = getRealtimeHost(options, production, environment); + const realtimeHost = getRealtimeHost(options, production, environment, logger); (options.fallbackHosts || []).concat(restHost, realtimeHost).forEach(checkHost); @@ -313,11 +319,11 @@ export function normaliseOptions(options: ClientOptions, MsgPack: MsgPack | null }; } -export function normaliseChannelOptions(Crypto: IUntypedCryptoStatic | null, options?: ChannelOptions) { +export function normaliseChannelOptions(Crypto: IUntypedCryptoStatic | null, logger: Logger, options?: ChannelOptions) { const channelOptions = options || {}; if (channelOptions.cipher) { if (!Crypto) Utils.throwMissingPluginError('Crypto'); - const cipher = Crypto.getCipher(channelOptions.cipher); + const cipher = Crypto.getCipher(channelOptions.cipher, logger); channelOptions.cipher = cipher.cipherParams; channelOptions.channelCipher = cipher.cipher; } else if ('cipher' in channelOptions) { diff --git a/src/common/lib/util/eventemitter.ts b/src/common/lib/util/eventemitter.ts index 830962ddd..4c7fef0c9 100644 --- a/src/common/lib/util/eventemitter.ts +++ b/src/common/lib/util/eventemitter.ts @@ -3,11 +3,12 @@ import Logger from './logger'; import Platform from 'common/platform'; /* Call the listener, catch any exceptions and log, but continue operation*/ -function callListener(eventThis: { event: string }, listener: Function, args: unknown[]) { +function callListener(logger: Logger, eventThis: { event: string }, listener: Function, args: unknown[]) { try { listener.apply(eventThis, args); } catch (e) { Logger.logAction( + logger, Logger.LOG_ERROR, 'EventEmitter.emit()', 'Unexpected listener exception: ' + e + '; stack = ' + (e && (e as Error).stack), @@ -58,7 +59,7 @@ class EventEmitter { anyOnce: Array; eventsOnce: Record>; - constructor() { + constructor(readonly logger: Logger) { this.any = []; this.events = Object.create(null); this.anyOnce = []; @@ -215,8 +216,8 @@ class EventEmitter { Array.prototype.push.apply(listeners, eventsListeners); } - listeners.forEach(function (listener) { - callListener(eventThis, listener, args); + listeners.forEach((listener) => { + callListener(this.logger, eventThis, listener, args); }); } diff --git a/src/common/lib/util/logger.ts b/src/common/lib/util/logger.ts index 84b743a67..22d8a1617 100644 --- a/src/common/lib/util/logger.ts +++ b/src/common/lib/util/logger.ts @@ -65,9 +65,13 @@ const getDefaultLoggers = (): [Function, Function] => { }; class Logger { - private static logLevel: LogLevels = LogLevels.Error; // default logLevel - private static logHandler: Function; - private static logErrorHandler: Function; + private static defaultLogLevel: LogLevels = LogLevels.Error; // default logLevel + private static defaultLogHandler: Function; + private static defaultLogErrorHandler: Function; + + private logLevel: LogLevels; + private logHandler: Function; + private logErrorHandler: Function; // public constants static readonly LOG_NONE: LogLevels = LogLevels.None; @@ -76,17 +80,24 @@ class Logger { static readonly LOG_MINOR: LogLevels = LogLevels.Minor; static readonly LOG_MICRO: LogLevels = LogLevels.Micro; // aliases - static readonly LOG_DEFAULT: LogLevels = LogLevels.Error; static readonly LOG_DEBUG: LogLevels = LogLevels.Micro; - constructor() { - Logger.logLevel = Logger.LOG_DEFAULT; - } + /** + * This logger instance should only be used when there is no more appropriate logger to use, for example when implementing a public static method or function whose API doesn’t accept any logging configuration. + */ + static defaultLogger: Logger; static initLogHandlers() { const [logHandler, logErrorHandler] = getDefaultLoggers(); - this.logHandler = logHandler; - this.logErrorHandler = logErrorHandler; + this.defaultLogHandler = logHandler; + this.defaultLogErrorHandler = logErrorHandler; + this.defaultLogger = new Logger(); + } + + constructor() { + this.logLevel = Logger.defaultLogLevel; + this.logHandler = Logger.defaultLogHandler; + this.logErrorHandler = Logger.defaultLogErrorHandler; } /* public static functions */ @@ -95,50 +106,54 @@ class Logger { * * The aforementioned plugin expects `level` to be an expression of the form `Logger.LOG_*`; that is, you can’t dynamically specify the log level. */ - static logAction = (level: LogLevels, action: string, message?: string) => { - this.logActionNoStrip(level, action, message); + static logAction = (logger: Logger, level: LogLevels, action: string, message?: string) => { + this.logActionNoStrip(logger, level, action, message); }; /** * Calls to this method are never stripped by the `stripLogs` esbuild plugin. Use it for log statements that you wish to always be included in the modular variant of the SDK. */ - static logActionNoStrip(level: LogLevels, action: string, message?: string) { - if (Logger.shouldLog(level)) { - (level === LogLevels.Error ? Logger.logErrorHandler : Logger.logHandler)('Ably: ' + action + ': ' + message); + static logActionNoStrip(logger: Logger, level: LogLevels, action: string, message?: string) { + logger.logAction(level, action, message); + } + + private logAction(level: LogLevels, action: string, message?: string) { + if (this.shouldLog(level)) { + (level === LogLevels.Error ? this.logErrorHandler : this.logHandler)('Ably: ' + action + ': ' + message); } } - static deprecated = (description: string, msg: string) => { - Logger.deprecationWarning(`${description} is deprecated and will be removed in a future version. ${msg}`); + deprecated = (description: string, msg: string) => { + this.deprecationWarning(`${description} is deprecated and will be removed in a future version. ${msg}`); }; - static renamedClientOption(oldName: string, newName: string) { - Logger.deprecationWarning( + renamedClientOption(oldName: string, newName: string) { + this.deprecationWarning( `The \`${oldName}\` client option has been renamed to \`${newName}\`. Please update your code to use \`${newName}\` instead. \`${oldName}\` will be removed in a future version.`, ); } - static renamedMethod(className: string, oldName: string, newName: string) { - Logger.deprecationWarning( + renamedMethod(className: string, oldName: string, newName: string) { + this.deprecationWarning( `\`${className}\`’s \`${oldName}\` method has been renamed to \`${newName}\`. Please update your code to use \`${newName}\` instead. \`${oldName}\` will be removed in a future version.`, ); } - static deprecationWarning(message: string) { - if (Logger.shouldLog(LogLevels.Error)) { - Logger.logErrorHandler(`Ably: Deprecation warning - ${message}`); + deprecationWarning(message: string) { + if (this.shouldLog(LogLevels.Error)) { + this.logErrorHandler(`Ably: Deprecation warning - ${message}`); } } /* Where a logging operation is expensive, such as serialisation of data, use shouldLog will prevent the object being serialised if the log level will not output the message */ - static shouldLog = (level: LogLevels) => { - return level <= Logger.logLevel; + shouldLog = (level: LogLevels) => { + return level <= this.logLevel; }; - static setLog = (level: LogLevels | undefined, handler: Function | undefined) => { - if (level !== undefined) Logger.logLevel = level; - if (handler !== undefined) Logger.logHandler = Logger.logErrorHandler = handler; + setLog = (level: LogLevels | undefined, handler: Function | undefined) => { + if (level !== undefined) this.logLevel = level; + if (handler !== undefined) this.logHandler = this.logErrorHandler = handler; }; } diff --git a/src/common/lib/util/multicaster.ts b/src/common/lib/util/multicaster.ts index bf5c32c64..494b04d92 100644 --- a/src/common/lib/util/multicaster.ts +++ b/src/common/lib/util/multicaster.ts @@ -23,7 +23,7 @@ class Multicaster { members: Array>; // Private constructor; use static Multicaster.create instead - private constructor(members?: Array | undefined>) { + private constructor(private readonly logger: Logger, members?: Array | undefined>) { this.members = (members as Array>) || []; } @@ -34,6 +34,7 @@ class Multicaster { member(err, result); } catch (e) { Logger.logAction( + this.logger, Logger.LOG_ERROR, 'Multicaster multiple callback handler', 'Unexpected exception: ' + e + '; stack = ' + (e as Error).stack, @@ -63,8 +64,8 @@ class Multicaster { this.call(err); } - static create(members?: Array | undefined>): MulticasterInstance { - const instance = new Multicaster(members); + static create(logger: Logger, members?: Array | undefined>): MulticasterInstance { + const instance = new Multicaster(logger, members); return Object.assign((err?: ErrorInfo | null, result?: T) => instance.call(err, result), { push: (fn: StandardCallback) => instance.push(fn), createPromise: () => instance.createPromise(), diff --git a/src/common/types/ICryptoStatic.ts b/src/common/types/ICryptoStatic.ts index 38648449c..31ff8a369 100644 --- a/src/common/types/ICryptoStatic.ts +++ b/src/common/types/ICryptoStatic.ts @@ -1,5 +1,6 @@ import * as API from '../../../ably'; import ICipher from './ICipher'; +import Logger from '../../common/lib/util/logger'; export type IGetCipherParams = (API.CipherParams | API.CipherParamOptions) & { iv?: IV }; export interface IGetCipherReturnValue { @@ -11,6 +12,7 @@ export default interface ICryptoStatic, + logger: Logger, ): IGetCipherReturnValue>; } @@ -19,5 +21,5 @@ export default interface ICryptoStatic | null) return uri + (params ? '?' : '') + paramString(params); } -function logResult(result: RequestResult, method: HttpMethods, uri: string, params: Record | null) { +function logResult( + result: RequestResult, + method: HttpMethods, + uri: string, + params: Record | null, + logger: Logger, +) { if (result.error) { Logger.logActionNoStrip( + logger, Logger.LOG_MICRO, 'Http.' + method + '()', 'Received Error; ' + appendingParams(uri, params) + '; Error: ' + Utils.inspectError(result.error), ); } else { Logger.logActionNoStrip( + logger, Logger.LOG_MICRO, 'Http.' + method + '()', 'Received; ' + @@ -97,9 +105,10 @@ function logResult(result: RequestResult, method: HttpMethods, uri: string, para } } -function logRequest(method: HttpMethods, uri: string, body: RequestBody | null, params: RequestParams) { - if (Logger.shouldLog(Logger.LOG_MICRO)) { +function logRequest(method: HttpMethods, uri: string, body: RequestBody | null, params: RequestParams, logger: Logger) { + if (logger.shouldLog(Logger.LOG_MICRO)) { Logger.logActionNoStrip( + logger, Logger.LOG_MICRO, 'Http.' + method + '()', 'Sending; ' + @@ -122,6 +131,10 @@ export class Http { : undefined; } + get logger(): Logger { + return this.client?.logger ?? Logger.defaultLogger; + } + get supportsAuthHeaders() { return this.platformHttp.supportsAuthHeaders; } @@ -239,12 +252,12 @@ export class Http { params: RequestParams, ): Promise { try { - logRequest(method, uri, body, params); + logRequest(method, uri, body, params, this.logger); const result = await this.platformHttp.doUri(method, uri, headers, body, params); - if (Logger.shouldLog(Logger.LOG_MICRO)) { - logResult(result, method, uri, params); + if (this.logger.shouldLog(Logger.LOG_MICRO)) { + logResult(result, method, uri, params, this.logger); } return result; diff --git a/src/platform/nodejs/lib/transport/nodecomettransport.js b/src/platform/nodejs/lib/transport/nodecomettransport.js index 9a4eb0a9e..045a2d9f3 100644 --- a/src/platform/nodejs/lib/transport/nodecomettransport.js +++ b/src/platform/nodejs/lib/transport/nodecomettransport.js @@ -96,7 +96,7 @@ class NodeCometTransport extends CometTransport { class Request extends EventEmitter { constructor(uri, headers, params, body, requestMode, format, timeouts, transport) { - super(); + super(transport.logger); if (typeof uri == 'string') uri = url.parse(uri); var tls = uri.protocol == 'https:'; @@ -199,7 +199,7 @@ class Request extends EventEmitter { chunk = JSON.parse(chunk); } catch (e) { var msg = 'Malformed response body from server: ' + e.message; - Logger.logAction(Logger.LOG_ERROR, 'NodeCometTransport.Request.readStream()', msg); + Logger.logAction(self.logger, Logger.LOG_ERROR, 'NodeCometTransport.Request.readStream()', msg); self.complete(new PartialErrorInfo(msg, null, 400)); return; } @@ -256,7 +256,7 @@ class Request extends EventEmitter { body = JSON.parse(String(body)); } catch (e) { var msg = 'Malformed response body from server: ' + e.message; - Logger.logAction(Logger.LOG_ERROR, 'NodeCometTransport.Request.readFully()', msg); + Logger.logAction(self.logger, Logger.LOG_ERROR, 'NodeCometTransport.Request.readFully()', msg); self.complete(new PartialErrorInfo(msg, null, 400)); return; } @@ -301,7 +301,7 @@ class Request extends EventEmitter { } abort() { - Logger.logAction(Logger.LOG_MINOR, 'NodeCometTransport.Request.abort()', ''); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'NodeCometTransport.Request.abort()', ''); var timer = this.timer; if (timer) { clearTimeout(timer); @@ -309,7 +309,7 @@ class Request extends EventEmitter { } var req = this.req; if (req) { - Logger.logAction(Logger.LOG_MINOR, 'NodeCometTransport.Request.abort()', 'aborting request'); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'NodeCometTransport.Request.abort()', 'aborting request'); req.removeListener('error', this.onReqError); req.on('error', noop); req.abort(); diff --git a/src/platform/nodejs/lib/util/crypto.ts b/src/platform/nodejs/lib/util/crypto.ts index 7efe4e43c..1a0854484 100644 --- a/src/platform/nodejs/lib/util/crypto.ts +++ b/src/platform/nodejs/lib/util/crypto.ts @@ -189,12 +189,12 @@ var createCryptoClass = function (bufferUtils: typeof BufferUtils) { * @param params either a CipherParams instance or some subset of its * fields that includes a key */ - static getCipher(params: IGetCipherParams) { + static getCipher(params: IGetCipherParams, logger: Logger) { var cipherParams = isInstCipherParams(params) ? (params as CipherParams) : this.getDefaultParams(params); return { cipherParams: cipherParams, - cipher: new CBCCipher(cipherParams, params.iv ?? null), + cipher: new CBCCipher(cipherParams, params.iv ?? null, logger), }; } } @@ -207,14 +207,14 @@ var createCryptoClass = function (bufferUtils: typeof BufferUtils) { iv: Buffer | null; encryptCipher: NodeCipher | null = null; - constructor(params: CipherParams, iv: Buffer | null) { + constructor(params: CipherParams, iv: Buffer | null, private readonly logger: Logger) { this.algorithm = params.algorithm + '-' + String(params.keyLength) + '-' + params.mode; this.key = params.key; this.iv = iv; } async encrypt(plaintext: InputPlaintext): Promise { - Logger.logAction(Logger.LOG_MICRO, 'CBCCipher.encrypt()', ''); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'CBCCipher.encrypt()', ''); const iv = await this.getIv(); if (!this.encryptCipher) { diff --git a/src/platform/web/lib/http/http.ts b/src/platform/web/lib/http/http.ts index ffe276163..99516cc3b 100644 --- a/src/platform/web/lib/http/http.ts +++ b/src/platform/web/lib/http/http.ts @@ -64,6 +64,7 @@ const Http = class { body, XHRStates.REQ_SEND, (client && client.options.timeouts) ?? null, + this.logger, method, ); req.once( @@ -86,6 +87,7 @@ const Http = class { } else { this.checkConnectivity = async function () { Logger.logAction( + this.logger, Logger.LOG_MICRO, '(XHRRequest)Http.checkConnectivity()', 'Sending; ' + connectivityCheckUrl, @@ -106,7 +108,7 @@ const Http = class { result = !requestResult.error && (requestResult.body as string)?.replace(/\n/, '') == 'yes'; } - Logger.logAction(Logger.LOG_MICRO, '(XHRRequest)Http.checkConnectivity()', 'Result: ' + result); + Logger.logAction(this.logger, Logger.LOG_MICRO, '(XHRRequest)Http.checkConnectivity()', 'Result: ' + result); return result; }; } @@ -116,10 +118,15 @@ const Http = class { return fetchRequestImplementation(method, client ?? null, uri, headers, params, body); }; this.checkConnectivity = async function () { - Logger.logAction(Logger.LOG_MICRO, '(Fetch)Http.checkConnectivity()', 'Sending; ' + connectivityCheckUrl); + Logger.logAction( + this.logger, + Logger.LOG_MICRO, + '(Fetch)Http.checkConnectivity()', + 'Sending; ' + connectivityCheckUrl, + ); const requestResult = await this.doUri(HttpMethods.Get, connectivityCheckUrl, null, null, null); const result = !requestResult.error && (requestResult.body as string)?.replace(/\n/, '') == 'yes'; - Logger.logAction(Logger.LOG_MICRO, '(Fetch)Http.checkConnectivity()', 'Result: ' + result); + Logger.logAction(this.logger, Logger.LOG_MICRO, '(Fetch)Http.checkConnectivity()', 'Result: ' + result); return result; }; } else { @@ -132,6 +139,10 @@ const Http = class { } } + get logger(): Logger { + return this.client?.logger ?? Logger.defaultLogger; + } + async doUri( method: HttpMethods, uri: string, diff --git a/src/platform/web/lib/http/request/xhrrequest.ts b/src/platform/web/lib/http/request/xhrrequest.ts index 942097d26..f390388d7 100644 --- a/src/platform/web/lib/http/request/xhrrequest.ts +++ b/src/platform/web/lib/http/request/xhrrequest.ts @@ -69,9 +69,10 @@ class XHRRequest extends EventEmitter implements IXHRRequest { body: RequestBody | null, requestMode: number, timeouts: Record, + logger: Logger, method?: HttpMethods, ) { - super(); + super(logger); params = params || {}; params.rnd = Utils.cheapRandStr(); this.uri = uri + Utils.toQueryString(params); @@ -93,6 +94,7 @@ class XHRRequest extends EventEmitter implements IXHRRequest { body: RequestBody | null, requestMode: number, timeouts: Record | null, + logger: Logger, method?: HttpMethods, ): XHRRequest { /* XHR requests are used either with the context being a realtime @@ -106,6 +108,7 @@ class XHRRequest extends EventEmitter implements IXHRRequest { body, requestMode, _timeouts, + logger, method, ); } @@ -177,7 +180,7 @@ class XHRRequest extends EventEmitter implements IXHRRequest { ) => { let errorMessage = message + ' (event type: ' + errorEvent.type + ')'; if (this?.xhr?.statusText) errorMessage += ', current statusText is ' + this.xhr.statusText; - Logger.logAction(Logger.LOG_ERROR, 'Request.on' + errorEvent.type + '()', errorMessage); + Logger.logAction(this.logger, Logger.LOG_ERROR, 'Request.on' + errorEvent.type + '()', errorMessage); this.complete(new PartialErrorInfo(errorMessage, code, statusCode)); }; xhr.onerror = function (errorEvent) { diff --git a/src/platform/web/lib/transport/xhrpollingtransport.ts b/src/platform/web/lib/transport/xhrpollingtransport.ts index 12268fed8..0a08b5c3b 100644 --- a/src/platform/web/lib/transport/xhrpollingtransport.ts +++ b/src/platform/web/lib/transport/xhrpollingtransport.ts @@ -30,7 +30,7 @@ class XHRPollingTransport extends CometTransport { body: RequestBody | null, requestMode: number, ) { - return XHRRequest.createRequest(uri, headers, params, body, requestMode, this.timeouts); + return XHRRequest.createRequest(uri, headers, params, body, requestMode, this.timeouts, this.logger); } } diff --git a/src/platform/web/lib/util/crypto.ts b/src/platform/web/lib/util/crypto.ts index b7dab53bf..097e4eef5 100644 --- a/src/platform/web/lib/util/crypto.ts +++ b/src/platform/web/lib/util/crypto.ts @@ -152,12 +152,12 @@ var createCryptoClass = function (config: IPlatformConfig, bufferUtils: typeof B * @param params either a CipherParams instance or some subset of its * fields that includes a key */ - static getCipher(params: IGetCipherParams) { + static getCipher(params: IGetCipherParams, logger: Logger) { var cipherParams = isCipherParams(params) ? (params as CipherParams) : this.getDefaultParams(params); return { cipherParams: cipherParams, - cipher: new CBCCipher(cipherParams, params.iv ?? null), + cipher: new CBCCipher(cipherParams, params.iv ?? null, logger), }; } } @@ -170,7 +170,7 @@ var createCryptoClass = function (config: IPlatformConfig, bufferUtils: typeof B key: ArrayBuffer; iv: ArrayBuffer | null; - constructor(params: CipherParams, iv: IV | null) { + constructor(params: CipherParams, iv: IV | null, private readonly logger: Logger) { if (!crypto.subtle) { if (isSecureContext) { throw new Error( @@ -207,7 +207,7 @@ var createCryptoClass = function (config: IPlatformConfig, bufferUtils: typeof B } async encrypt(plaintext: InputPlaintext): Promise { - Logger.logAction(Logger.LOG_MICRO, 'CBCCipher.encrypt()', ''); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'CBCCipher.encrypt()', ''); const iv = await this.getIv(); const cryptoKey = await crypto.subtle.importKey('raw', this.key, this.webCryptoAlgorithm, false, ['encrypt']); @@ -217,7 +217,7 @@ var createCryptoClass = function (config: IPlatformConfig, bufferUtils: typeof B } async decrypt(ciphertext: InputCiphertext): Promise { - Logger.logAction(Logger.LOG_MICRO, 'CBCCipher.decrypt()', ''); + Logger.logAction(this.logger, Logger.LOG_MICRO, 'CBCCipher.decrypt()', ''); const ciphertextArrayBuffer = bufferUtils.toArrayBuffer(ciphertext); const iv = ciphertextArrayBuffer.slice(0, DEFAULT_BLOCKLENGTH); diff --git a/src/platform/web/modular/message.ts b/src/platform/web/modular/message.ts index 18c5d1396..539a2f782 100644 --- a/src/platform/web/modular/message.ts +++ b/src/platform/web/modular/message.ts @@ -1,21 +1,22 @@ import * as API from '../../../../ably'; import { Crypto } from './crypto'; import { fromEncoded, fromEncodedArray } from '../../../common/lib/types/message'; +import Logger from '../../../common/lib/util/logger'; // The type assertions for the decode* functions below are due to https://github.com/ably/ably-js/issues/1421 export const decodeMessage = ((obj, options) => { - return fromEncoded(null, obj, options); + return fromEncoded(Logger.defaultLogger, null, obj, options); }) as API.MessageStatic['fromEncoded']; export const decodeEncryptedMessage = ((obj, options) => { - return fromEncoded(Crypto, obj, options); + return fromEncoded(Logger.defaultLogger, Crypto, obj, options); }) as API.MessageStatic['fromEncoded']; export const decodeMessages = ((obj, options) => { - return fromEncodedArray(null, obj, options); + return fromEncodedArray(Logger.defaultLogger, null, obj, options); }) as API.MessageStatic['fromEncodedArray']; export const decodeEncryptedMessages = ((obj, options) => { - return fromEncodedArray(Crypto, obj, options); + return fromEncodedArray(Logger.defaultLogger, Crypto, obj, options); }) as API.MessageStatic['fromEncodedArray']; diff --git a/src/platform/web/modular/presencemessage.ts b/src/platform/web/modular/presencemessage.ts index 60e5351e9..6c9b891a0 100644 --- a/src/platform/web/modular/presencemessage.ts +++ b/src/platform/web/modular/presencemessage.ts @@ -1,8 +1,15 @@ import * as API from '../../../../ably'; import { fromEncoded, fromEncodedArray, fromValues } from '../../../common/lib/types/presencemessage'; +import Logger from '../../../common/lib/util/logger'; // The type assertions for the functions below are due to https://github.com/ably/ably-js/issues/1421 -export const decodePresenceMessage = fromEncoded as API.PresenceMessageStatic['fromEncoded']; -export const decodePresenceMessages = fromEncodedArray as API.PresenceMessageStatic['fromEncodedArray']; +export const decodePresenceMessage = ((obj, options) => { + return fromEncoded(Logger.defaultLogger, obj, options); +}) as API.PresenceMessageStatic['fromEncoded']; + +export const decodePresenceMessages = ((obj, options) => { + return fromEncodedArray(Logger.defaultLogger, obj, options); +}) as API.PresenceMessageStatic['fromEncodedArray']; + export const constructPresenceMessage = fromValues as API.PresenceMessageStatic['fromValues']; From 725cb50417bf691b7dcf98f0629ef0a2b201a660 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 2 May 2024 11:26:12 -0300 Subject: [PATCH 04/32] Document private API usage in tests Resolves ECO-4786. --- docs/internal/private-api-usage.md | 398 +++++++++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 docs/internal/private-api-usage.md diff --git a/docs/internal/private-api-usage.md b/docs/internal/private-api-usage.md new file mode 100644 index 000000000..ec522c0f1 --- /dev/null +++ b/docs/internal/private-api-usage.md @@ -0,0 +1,398 @@ +# Usage of private APIs in ably-js test suite + +## Background + +I performed the following investigation as part of [ECO-4786](https://ably.atlassian.net/browse/ECO-4786). The aim of that task is to understand how the ably-js test suite uses ably-js’s private APIs, to understand the viability of reusing (some of) ably-js’s test suite as a unified test suite. Hence, although this document provides useful documentation for ably-js, it is written with a focus on the unified test suite. + +This document refers to the state of the ably-js tests as of commit `4397c82`. + +The first outcome from this document is [this RFC](https://ably.atlassian.net/wiki/x/IYDItQ): “An alternative to private API for intercepting realtime protocol messages”, which aims to remove one category of private API usage. I imagine that as part of the unified test suite work, we’ll perform further categorisation of private API usage based on the list in the current document. + +## Going through the test files + +- This list of files comes from running `find test -name '*.js'`. +- I haven’t mentioned the places where the tests use JS-specific public API, e.g. `transports` client option. +- I’ve not been particularly consistent here in explaining _for what purpose_ a test uses a given private API; sometimes I have if it was easy to figure out, sometimes I haven't if it wasn't so obvious. +- Multiple similar usages of the same API in a given file are not necessarily repeated here. + +### `test/web_server.js` + +None + +### `test/realtime/delta.test.js` + +- `channel._lastPayload.messageId = null` + - to make decoding fail + +### `test/realtime/encoding.test.js` + +- `var BufferUtils = Ably.Realtime.Platform.BufferUtils;` +- `var Defaults = Ably.Rest.Platform.Defaults;` + - just used for accessing library’s baked-in protocol version, to pass to `request()` + +### `test/realtime/presence.test.js` + +- `var createPM = Ably.protocolMessageFromDeserialized;` +- `var PresenceMessage = Ably.Realtime.PresenceMessage;` +- replacing `channel.sendPresence` with a version that checks the presence message’s client ID +- replacing `transport.send` with a version that checks the encoded data in the protocol message +- `channel.presence.members.waitSync(cb);` +- `var connId = realtime.connection.connectionManager.connectionId;` +- `channel.presence._myMembers.put(` +- `channel.sync();` +- stubbing out `channel.attachImpl` +- `channel.checkPendingState();` +- `Ably.Realtime.Platform.Config.nextTick(cb);` +- calling `channel.processMessage` to inject a protocol message + +### `test/realtime/event_emitter.test.js` + +- `eventEmitter.emit('custom');` — RTE6 says that `emit` is internal + +### `test/realtime/api.test.js` + +None + +### `test/realtime/crypto.test.js` + +- `var BufferUtils = Ably.Realtime.Platform.BufferUtils;` +- `var msgpack = typeof window == 'object' ? Ably.msgpack : require('@ably/msgpack-js');` +- `Message.encode(testMessage, channelOpts)` +- `Message.decode(encryptedMessage, channelOpts);` +- `Message.fromValues(` +- `expect(channel.channelOptions.cipher.algorithm).to.equal('aes');` — `channel.channelOptions` is not public API + +### `test/realtime/failure.test.js` + +- `webSocketConnectTimeout: 50` client option +- replacing `channel.processMessage` to drop `ATTACHED` +- replacing `realtime.connection.connectionManager.activeProtocol.transport.onProtocolMessage` to drop `ACK` +- `Ably.Realtime.Platform.Config.nextTick(function () {` +- calling `realtime.connection.connectionManager.activeProtocol.transport.onProtocolMessage` to inject an `ERROR` +- calling `realtime.connection.connectionManager.on('transport.pending'` and then replacing this transport’s `onProtocolMessage` to change its `connectionDetails.maxIdleInterval` +- accessing `connection.connectionManager.activeProtocol.getTransport()` to inject a `DISCONNECTED` +- replacing `connectionManager.onChannelMessage` to listen for `MESSAGE`and then calling `requestState('attaching')` on a channel in response + +### `test/realtime/channel.test.js` + +- `var createPM = Ably.protocolMessageFromDeserialized;` +- `expect(channel.channelOptions).to.deep.equal(channelOptions, 'Check requested channel options');` (`channelOptions` isn’t public API) +- listens for `channel._allChannelChanges.on(['update'],` +- replaces `channel.sendMessage` with an empty implementation (to "sabotage the reattach attempt") +- sets `realtime.options.timeouts.realtimeRequestTimeout = 100` i.e. modifies client options after creation +- calls `transport.onProtocolMessage` to inject `DETACHED` +- replaces `channel.sendMessage` to check that an `ATTACH` was received, and inside it then calls `transport.onProtocolMessage` to inject a `DETACHED` +- OK, have seen plenty of `onProtocolMessage` calls to inject a protocol message now; will only write if something particularly interesting seen +- replaces `channel.sendMessage` with an implementation which fails the test if called +- replaces `channel.sendMessage` to check that only a `DETACH` is being sent, and to continue the test once second `DETACH` sent + +### `test/realtime/auth.test.js` + +- `var http = new Ably.Realtime._Http();` — just uses this as an HTTP client to fetch a JWT +- spies on `rest.time` to count how many times called +- checks `rest.serverTimeOffset` +- spies on `transport.send` to look for an outgoing `AUTH` and check its properties + +### `test/realtime/transports.test.js` + +Transports are a JS-specific concept so might not be worth worrying too much about the contents of this file + +- `const Defaults = Ably.Rest.Platform.Defaults;` + - changes `Defaults.wsConnectivityUrl` +- `const defaultTransports = new Ably.Realtime({ key: 'xxx:yyy', autoConnect: false }).connection.connectionManager.transports;` +- `const baseTransport = new Ably.Realtime({ key: 'xxx:yyy', autoConnect: false, transports: availableTransports }).connection.connectionManager.baseTransport;` +- changes `Ably.Rest.Platform.Config.WebSocket` + - replaces it with a `FakeWebSocket` class to simulate not emitting any events +- checks `realtime.connection.connectionManager.activeProtocol.transport.shortName` +- `webSocketSlowTimeout` and `webSocketConnectTimeout` client options +- checks `window.localStorage.getItem(transportPreferenceName)` +- sets `window.localStorage.setItem(transportPreferenceName` +- modifies `realtime.connection.connectionManager.checkWsConnectivity` to delay its completion until some other event has happened + +### `test/realtime/utils.test.js` + +Ah, I just realised that some of the properties on `shared_helper` actually refer to properties of the library, e.g. `helper.Utils` is actually `Ably.Realtime.Utils`. So perhaps I missed some usages of internal APIs in earlier files. But can figure that out later. + +- this entire file is a test of the internal `utils.getRetryTime(…)` method + +### `test/realtime/resume.test.js` + +- `connectionManager.once('transport.active',` and inside the callback it makes an assertion on `transport.params.mode` +- sets a channel’s state: `suspendedChannel.state = 'suspended';` +- sabotages a resume by setting `connection.connectionManager`’s `conectionKey` and `connectionId` to garbage +- sets `connection.connectionManager.msgSerial` to some fixed value (not sure of motivation) +- calls `connection.connectionManager.disconnectAllTransports();` +- checks `connection.connectionManager.msgSerial` and `connection.connectionManager.connectionId` +- sabotages a resume by setting `realtime.auth.tokenDetails.token` +- modifies `realtime.auth.key` to something invalid in order to get a fatal resume error +- sets `connectionManager.lastActivity` to something far in the past +- sets `connectionManager.activeProtocol.getTransport().onProtocolMessage` to no-op so that last activity timer doesn’t get bumped +- spies on `connectionManager.tryATransport` to verify `transportParams.mode` +- modifies `connectionManager.send` to do `msg.setFlag('ATTACH_RESUME')` on the outgoing message + +### `test/realtime/message.test.js` + +- `let config = Ably.Realtime.Platform.Config;` +- `var createPM = Ably.protocolMessageFromDeserialized;` +- modifies `transport.send` to check the `clientId` on the outgoing `MESSAGE` +- checks `channel.filteredSubscriptions.has(listener)` +- accesses `connectionManager.connectionDetails`, modifies its `maxMessageSize`, then re-injects it via a `CONNECTED` passed to `onProtocolMessage()` +- bundling test performs some assertions about the contents of `realtime.connection.connectionManager.queuedMessages` + +### `test/realtime/connection.test.js` + +- creates a `recover` client option which uses knowledge of ably-js’s serialization of recovery key +- spies on `transport.send` to listen for `MESSAGE`, check its properties, and then continue the test +- calls `connectionManager.disconnectAllTransports();` +- listens for `connectionManager.once('connectiondetails')` in order to make some assertions about those details +- checks `realtime.options.maxMessageSize` + +### `test/realtime/init.test.js` + +- accesses `var transport = realtime.connection.connectionManager.activeProtocol.transport.uri` or `.recvRequest.recvUri` to check the `v=3` query parameter +- `expect(realtime.options).to.deep.equal(realtime.connection.connectionManager.options);` +- checks `realtime.connection.connectionManager.httpHosts[0];` to check it’s using correct default host, also checks length of that array +- checks that timeout-related client options are reflected in internal `realtime.connection.connectionManager.states.*.retryDelay` values and various `realtime.connection.connectionManager.options` properties +- spies on `realtime.connection.connectionManager.tryATransport`, looking at the host that’s being used to connect, although not sure exactly to what end +- checks `realtime.connection.connectionManager`’s `baseTransport` and `webSocketTransportAvailable` +- modifies `realtime.connection.connectionManager.pendingTransport.onProtocolMessage` to look for `CONNECTED`, make an assertion about it, and then set its `connectionKey` and `clientId` to fixed values (so we can assert they’re subsequently used to populate some user-facing properties) +- calls the `new Ably.Rest._Http()._getHosts(…)` API to check its result +- calls `helper.AblyRest().options.realtimeHost;` just to get a URL to be used in a realtime’s `fallbackHosts` + +### `test/realtime/history.test.js` + +None + +### `test/realtime/connectivity.test.js` + +- directly calls `new Ably.Realtime._Http().checkConnectivity()` and checks it succeeds (i.e. directly tests this method) + +### `test/realtime/reauth.test.js` + +None + +### `test/realtime/sync.test.js` + +- calling `channel.processMessage` to inject an `ATTACHED` with a presence flag, and then a `SYNC`, later on a `PRESENCE` +- spies on `channel.processMessage` to, after processing a received `SYNC`, inject a `PRESENCE` + +### `test/browser/simple.test.js` + +- checks whether a transport is available using `transport in Ably.Realtime.ConnectionManager.supportedTransports(Ably.Realtime._transports)` + +### `test/browser/http.test.js` + +- changes `Ably.Rest.Platform.Config.xhrSupported` to false to make it use Fetch + +### `test/browser/connection.test.js` + +(I guess that this is a test that we might not include in the unified test suite.) + +- uses knowledge of library’s usage of `window.sessionStorage` for transport preference and recovery key +- fires an `"offline"` event, ditto `"offline"` +- replaces `connection.connectionManager.tryATransport` to "simulate the internet being failed" +- listens for `connection.connectionManager.once('transport.pending'` in order to know when to "sabotage the connection attempt", and then makes assertions about this transport (`isDisposed`, checking `realtime.connection.connectionManager.activeProtocol.transport`) +- dispatches a `"beforeunload"` event +- tests `realtime.connection.connectionManager.baseTransport` and `realtime.connection.connectionManager.webSocketTransportAvailable` + +### `test/browser/modular.test.js` + +Another file that probably wouldn’t be part of a unified test suite. + +- `const BufferUtils = BaseRest.Platform.BufferUtils;` + - just used for Base64 and checking buffer equality, can be replaced easily +- replaces `rest.http.do` to check the `Content-Type` request header +- replaces `realtime.connection.connectionManager.connectImpl` to check `transportParams.format` +- spies on `realtime.connection.connectionManager.tryATransport` to check which transport being tried + +### `test/common/globals/named_dependencies.js` + +N/A + +### `test/common/globals/environment.js` + +N/A + +### `test/common/ably-common/test/agents.test.js` + +N/A + +### `test/common/ably-common/.eslintrc.js` + +N/A + +### `test/common/ably-common/json-schemas/publish.js` + +N/A + +### `test/common/modules/client_module.js` + +- uses `Ably.Realtime.Utils` for its `mixin` function + +### `test/common/modules/testapp_manager.js` + +- uses `ably.Realtime.Platform.BufferUtils` + +### `test/common/modules/testapp_module.js` + +None + +### `test/common/modules/shared_helper.js` + +- `var utils = clientModule.Ably.Realtime.Utils;` +- `var platform = clientModule.Ably.Realtime.Platform;` + - uses `platform.Config.nextTick()` +- uses `var BufferUtils = platform.BufferUtils;` +- extracts `availableTransports` and `bestTransport` by reading `Ably.Realtime.ConnectionManager.supportedTransports(Ably.Realtime._transports)` + - `availableTransports` used by `testOnAllTransports` +- `simulateDroppedConnection()` does the following: + - `realtime.connection.connectionManager.requestState({ state: 'disconnected' })` + - `realtime.connection.connectionManager.disconnectAllTransports();` +- `becomeSuspended()` does the following: + - `realtime.connection.connectionManager.disconnectAllTransports();` + - `realtime.connection.connectionManager.notifyState({ state: 'suspended' });` +- `callbackOnClose()`: + - checks `realtime.connection.connectionManager.activeProtocol` + - does `realtime.connection.connectionManager.activeProtocol.transport.on('disposed',` +- `isComet(transport)` and `isWebsocket(transport)` check for `"comet"` and `"wss:/"` which I guess is something internal? + +### `test/support/junit_directory_path.js` + +N/A + +### `test/support/mocha_junit_reporter/index.js` + +N/A + +### `test/support/mocha_junit_reporter/shims/fs.js` + +N/A + +### `test/support/mocha_junit_reporter/build/node.js` + +Generated + +### `test/support/mocha_junit_reporter/build/browser.js` + +Generated + +### `test/support/root_hooks.js` + +None + +### `test/support/environment.vars.js` + +None + +### `test/support/runPlaywrightTests.js` + +N/A + +### `test/support/test_helper.js` + +N/A + +### `test/support/browser_file_list.js` + +N/A + +### `test/support/modules_helper.js` + +N/A + +### `test/support/browser_setup.js` + +N/A + +### `test/support/mocha_reporter.js` + +N/A + +### `test/support/playwrightSetup.js` + +N/A + +### `test/rest/bufferutils.test.js` + +This file is a unit test of `Ably.Realtime.Platform.BufferUtils`; something we wouldn’t include in a unified test suite. + +### `test/rest/presence.test.js` + +- `var BufferUtils = Ably.Realtime.Platform.BufferUtils;` + - I’m going to stop mentioning the use of BufferUtils as a test util now; the pattern is clear and not hard to fix. + +### `test/rest/fallbacks.test.js` + +- checks `rest._currentFallback.{host, validUntil}` to check that the working fallback has been stored correctly +- modifies `rest._currentFallback.validUntil` to check library correctly forgets stored fallback + +### `test/rest/api.test.js` + +None + +### `test/rest/stats.test.js` + +None + +### `test/rest/batch.test.js` + +None + +### `test/rest/time.test.js` + +None + +### `test/rest/auth.test.js` + +- ditto will stop mentioning usage of `Utils` for stuff that will be pretty easy to replace + +None + +### `test/rest/http.test.js` + +- accesses `Ably.Rest.Platform.Defaults` to check its `version` is being used to populate `Ably-Agent` +- spies on `rest.http.do` to make assertions about request headers +- replaces `rest.http.do` to simulate a 204 response + +### `test/rest/capability.test.js` + +None + +### `test/rest/push.test.js` + +None + +### `test/rest/message.test.js` + +- spies on `channel._publish` to verify that client does / doesn’t add a `clientId` + - ditto to check that idempotent REST publishing generates message IDs + - ditto to check `params` +- overrides `Ably.Rest._Http.doUri` to fake a publish error + +### `test/rest/init.test.js` + +- accesses various properties of `rest.options` to check the effect of passing various things to the constructor + +### `test/rest/history.test.js` + +None + +### `test/rest/defaults.test.js` + +This appears to be a unit test of the `Defaults` class’s `normaliseOptions()`, `getHosts()`, and `getPort()` methods. But I imagine it’s actually providing the test suite’s coverage of a bunch of spec points which aren’t written in terms of this API. + +### `test/rest/status.test.js` + +None + +### `test/rest/request.test.js` + +- overrides `rest.http.do()` to check `X-Ably-Version` request header + +### `test/package/browser/template/server/resources/runTest.js` + +N/A + +### `test/package/browser/template/playwright-lib.config.js` + +N/A From a58a6c5afb8a29571cf5e9b9f45a0943029a7487 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 18 Apr 2024 12:58:46 -0300 Subject: [PATCH 05/32] Better handling of failure to start Mocha server --- test/support/runPlaywrightTests.js | 2 +- test/web_server.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/support/runPlaywrightTests.js b/test/support/runPlaywrightTests.js index 5dd1ca2b5..aea4dbff3 100644 --- a/test/support/runPlaywrightTests.js +++ b/test/support/runPlaywrightTests.js @@ -10,7 +10,7 @@ const playwrightBrowsers = ['chromium', 'firefox', 'webkit']; const mochaServer = new MochaServer(/* playwrightTest: */ true); const runTests = async (browserType) => { - mochaServer.listen(); + await mochaServer.listen(); const browser = await browserType.launch(); const page = await browser.newPage(); await page.goto(`http://${host}:${port}`); diff --git a/test/web_server.js b/test/web_server.js index bc5c29bdb..b90a76aba 100755 --- a/test/web_server.js +++ b/test/web_server.js @@ -46,7 +46,7 @@ class MochaServer { } close() { - this.server.close(); + this.server?.close(); } } From 08ec417f18432b164e5f761553ddb838d31f04f7 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 17 Apr 2024 15:46:23 -0300 Subject: [PATCH 06/32] Add Python stuff to gitignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For upcoming interception proxy. TODO: once I’ve got rid of the subsequent commit with the old Python code, put this into the later commit instead --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 072dde41f..353ef848e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ react/ typedoc/generated/ junit/ test/support/mocha_junit_reporter/build/ + +# Python stuff (for interception proxy) +__pycache__ From ff30f2cf32d71acb6169a34d26ba1bd28c1adc16 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 17 Apr 2024 15:48:01 -0300 Subject: [PATCH 07/32] Add abandoned initial attempt at interception proxy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implemented entirely as an mitmproxy addon. Abandoned because it didn’t give me sufficient control over WebSocket connection lifetimes. --- test/mitmproxy-addon/src/control_rpc.py | 56 +++++++++ test/mitmproxy-addon/src/control_server.py | 26 ++++ .../src/intercepted_messages_queue.py | 71 +++++++++++ .../src/interception_context.py | 115 ++++++++++++++++++ test/mitmproxy-addon/src/mitmproxy_addon.py | 67 ++++++++++ 5 files changed, 335 insertions(+) create mode 100644 test/mitmproxy-addon/src/control_rpc.py create mode 100644 test/mitmproxy-addon/src/control_server.py create mode 100644 test/mitmproxy-addon/src/intercepted_messages_queue.py create mode 100644 test/mitmproxy-addon/src/interception_context.py create mode 100644 test/mitmproxy-addon/src/mitmproxy_addon.py diff --git a/test/mitmproxy-addon/src/control_rpc.py b/test/mitmproxy-addon/src/control_rpc.py new file mode 100644 index 000000000..df9c47ab7 --- /dev/null +++ b/test/mitmproxy-addon/src/control_rpc.py @@ -0,0 +1,56 @@ +from base64 import b64encode, b64decode +from dataclasses import dataclass +from intercepted_messages_queue import DropMessageAction, ReplaceMessageAction +from typing import Literal +import logging + +@dataclass +class JSONRPCRequest: + id: str + + def create_dto(self): + return { "jsonrpc": "2.0", "id": self.id } + +@dataclass +class TransformInterceptedMessageJSONRPCRequest(JSONRPCRequest): + type: Literal["binary", "text"] + data: bytes | str + from_client: bool + + def create_dto(self): + data_param = None + match self.type: + case "binary": + data_param = b64encode(self.data).decode('utf-8') + case "text": + data_param = self.data + + params = { 'type': self.type, 'data': data_param, 'fromClient': self.from_client } + return { **super().create_dto(), "method": "transformInterceptedMessage", "params": params } + +def json_rpc_response_from_dto(dto): + # TODO when we add more methods we’ll need a way to know which method the request corresponds to, via the ID + return TransformInterceptedMessageJSONRPCResponse.from_dto(dto) + +@dataclass +class JSONRPCResponse: + id: str + +@dataclass +class TransformInterceptedMessageJSONRPCResponse(JSONRPCResponse): + result: DropMessageAction | ReplaceMessageAction + + def from_dto(dto): + match dto['result']['action']: + case 'drop': + result = DropMessageAction() + case 'replace': + type = dto['result']['type'] + match type: + case 'binary': + data = b64decode(dto['result']['data']) + case 'text': + data = dto['result']['data'] + result = ReplaceMessageAction(type, data) + + return TransformInterceptedMessageJSONRPCResponse(id = dto['id'], result = result) diff --git a/test/mitmproxy-addon/src/control_server.py b/test/mitmproxy-addon/src/control_server.py new file mode 100644 index 000000000..9b2a9b63a --- /dev/null +++ b/test/mitmproxy-addon/src/control_server.py @@ -0,0 +1,26 @@ +import websockets +import asyncio +import logging + +class ControlServer: + def __init__(self, interception_context): + self._websocket_connections = [] + self._interception_context = interception_context + + # TODO make it not keep trying to restart this server every time I modify this file + async def run(self): + async with websockets.serve(self._handle_websocket_connection, "", 8001): + await asyncio.Future() # run forever + + async def _handle_websocket_connection(self, websocket): + logging.info(f'TestProxy handle_websocket_connection {websocket}, open {websocket.open}') + # Store the connection so we can broadcast to it later. + self._websocket_connections.append(websocket) + logging.info(f'TestProxy now has websockets {self._websocket_connections}') + + async for message in websocket: + logging.info(f'TestProxy received control message: {message}') + try: + self._interception_context.on_websocket_message(message) + except Exception as err: + logging.info(f'TestProxy got error handling control message: {err}') diff --git a/test/mitmproxy-addon/src/intercepted_messages_queue.py b/test/mitmproxy-addon/src/intercepted_messages_queue.py new file mode 100644 index 000000000..b4097958f --- /dev/null +++ b/test/mitmproxy-addon/src/intercepted_messages_queue.py @@ -0,0 +1,71 @@ +import mitmproxy +import uuid +from dataclasses import dataclass +from typing import Literal + +@dataclass +class InterceptedMessagePredicate: + flow: mitmproxy.http.HTTPFlow + from_client: bool + + # https://stackoverflow.com/a/4901847 + + def __hash__(self): + return hash((self.flow, self.from_client)) + + def __eq__(self, other): + return (self.flow, self.from_client) == (other.flow, other.from_client) + +@dataclass +# A handle for locating a message within InterceptedMessageQueue. +class InterceptedMessageHandle: + predicate: InterceptedMessagePredicate + message_id: uuid.UUID + +class DropMessageAction: + pass + +@dataclass +class ReplaceMessageAction: + type: Literal["binary", "text"] + data: bytes | str + +@dataclass +class InterceptedMessage: + message: mitmproxy.websocket.WebSocketMessage + id: uuid.UUID = uuid.uuid4() + action: None | DropMessageAction | ReplaceMessageAction = None + +# Per-connection, per-direction message queue. We use it to queue intercepted messages whilst waiting for a control server message telling us what to do with the message at the head of the queue. +class InterceptedMessagesQueue: + def __init__(self): + # Maps an InterceptedMessagePredicate to a queue + self.queues = {} + + def _messages_for(self, predicate, create_if_needed = False): + if predicate in self.queues: + return self.queues[predicate] + else: + result = [] + if create_if_needed: + self.queues[predicate] = result + return result + + def pop(self, predicate): + return self._messages_for(predicate).pop(0) + + def has_messages(self, predicate): + return len(self._messages_for(predicate)) != 0 + + def append(self, message: InterceptedMessage, predicate): + self._messages_for(predicate, create_if_needed = True).append(message) + + def count(self, predicate): + return len(self._messages_for(predicate)) + + def is_head(self, handle: InterceptedMessageHandle): + head = self._messages_for(handle.predicate)[0] + return head.id == handle.message_id + + def get_head(self, predicate: InterceptedMessagePredicate): + return self._messages_for(predicate)[0] diff --git a/test/mitmproxy-addon/src/interception_context.py b/test/mitmproxy-addon/src/interception_context.py new file mode 100644 index 000000000..cf3f27187 --- /dev/null +++ b/test/mitmproxy-addon/src/interception_context.py @@ -0,0 +1,115 @@ +import logging +import json +import uuid +import asyncio +import mitmproxy + +from control_rpc import JSONRPCRequest, TransformInterceptedMessageJSONRPCRequest, JSONRPCResponse, TransformInterceptedMessageJSONRPCResponse, json_rpc_response_from_dto +from intercepted_messages_queue import InterceptedMessagesQueue, InterceptedMessagePredicate, InterceptedMessageHandle, DropMessageAction, ReplaceMessageAction, InterceptedMessage + +class InterceptionContext: + def __init__(self): + self._intercepted_messages_queue = InterceptedMessagesQueue() + self._json_rpc_request_ids_to_handles = {} + self.control_server = None + + # control API currently only works with text frames + def on_websocket_message(self, payload: str): + dto = json.loads(payload) + + if 'error' in dto: + raise Exception(f'TestProxy not expecting there to be an error in JSON-RPC response') + elif 'result' in dto: + response = json_rpc_response_from_dto(dto) + self.handle_json_rpc_response(response) + else: + raise Exception(f'TestProxy got unrecognised control API message {dto}') + + def handle_json_rpc_response(self, response: JSONRPCResponse): + logging.info(f'TestProxy got JSON-RPC response: {response}, type: {type(response)}') + match response: + case TransformInterceptedMessageJSONRPCResponse(): + self.handle_transform_intercepted_message_response(response) + case _: + raise Exception(f'TestProxy got unknown response {response}') + + def handle_transform_intercepted_message_response(self, response: TransformInterceptedMessageJSONRPCResponse): + json_rpc_request_id = uuid.UUID(response.id) + handle = self._json_rpc_request_ids_to_handles[json_rpc_request_id] + + if handle is None: + raise Exception(f'TestProxy doesn’t recognise response ID {json_rpc_request_id}, enqueued, messages are {self._intercepted_messages_queue}') + + del self._json_rpc_request_ids_to_handles[json_rpc_request_id] + + if not self._intercepted_messages_queue.is_head(handle): + raise Exception(f'TestProxy got response for an intercepted message that’s not at head of queue; shouldn’t be possible {json_rpc_request_id}') + + intercepted_message = self._intercepted_messages_queue.get_head(handle.predicate) + + if intercepted_message.action is not None: + raise Exception(f'TestProxy was asked to set the action for a message that already has an action set; shouldn’t happen.') + + intercepted_message.action = response.result + + self._dequeue_intercepted_message(handle.predicate) + + def _dequeue_intercepted_message(self, predicate): + logging.info(f'TestProxy dequeueing intercepted message') + + message = self._intercepted_messages_queue.pop(predicate) + + if message.action is None: + raise Exception(f'TestProxy attempted to dequeue {message} but it doesn’t have action') + + match message.action: + case ReplaceMessageAction(type, data): + # inject the replacement + # https://docs.mitmproxy.org/stable/addons-examples/#websocket-inject-message + logging.info(f'TestProxy re-injecting message {message} with new type {type} and new data {data}') + # https://github.com/mitmproxy/mitmproxy/blob/e834259215dc4dd6f1b58dee8e0f84943a002db6/mitmproxy/addons/proxyserver.py#L308-L322 + mitmproxy.ctx.master.commands.call("inject.websocket", predicate.flow, not predicate.from_client, data.encode() if type == 'text' else data, type == 'text') + case DropMessageAction: + # drop the message + logging.info(f'TestProxy dropping message {message}') + + if self._intercepted_messages_queue.has_messages(predicate): + self._broadcast_next_message(predicate) + + def _broadcast_json_rpc_request(self, request: JSONRPCRequest): + data = json.dumps(request.create_dto()) + + logging.info(f'TestProxy broadcast request JSON {data}') + # TODO tidy up - have a method on server + for websocket in self.control_server._websocket_connections: + logging.info(f'TestProxy broadcast to connection {websocket}, open {websocket.open}') + asyncio.get_running_loop().create_task(websocket.send(data)) + + def _broadcast_next_message(self, predicate): + intercepted_message = self._intercepted_messages_queue.get_head(predicate) + + json_rpc_request_id = uuid.uuid4() + + handle = InterceptedMessageHandle(predicate, intercepted_message.id) + self._json_rpc_request_ids_to_handles[json_rpc_request_id] = handle + + # Broadcast to everyone connected to the control server. + # TODO I think would be better for there to be one client who sends an explicit message to become the active client, or to only allow a single connection at a time; not important now though + logging.info(f'TestProxy broadcast message {intercepted_message!r}') + + json_rpc_request = TransformInterceptedMessageJSONRPCRequest(id = str(json_rpc_request_id), type = "text" if intercepted_message.message.is_text else "binary", data = intercepted_message.message.text if intercepted_message.message.is_text else intercepted_message.message.content, from_client = intercepted_message.message.from_client) + self._broadcast_json_rpc_request(json_rpc_request) + + def enqueue_message(self, message, flow): + predicate = InterceptedMessagePredicate(flow, message.from_client) + + intercepted_message = InterceptedMessage(message) + self._intercepted_messages_queue.append(intercepted_message, predicate) + + # drop the message; we’ll insert it later when the client tells us what to do with it + message.drop() + + if self._intercepted_messages_queue.count(predicate) == 1: + self._broadcast_next_message(predicate) + else: + logging.info(f'TestProxy enqueued message {message} since there are {self._intercepted_messages_queue.count(predicate) - 1} pending messages') diff --git a/test/mitmproxy-addon/src/mitmproxy_addon.py b/test/mitmproxy-addon/src/mitmproxy_addon.py new file mode 100644 index 000000000..985f558fc --- /dev/null +++ b/test/mitmproxy-addon/src/mitmproxy_addon.py @@ -0,0 +1,67 @@ +import logging +import mitmproxy +import asyncio + +from control_server import ControlServer +from interception_context import InterceptionContext + +# TODO cleanup as control server connections go away +# TODO cleanup as intercepted connections go away + +class AblyInterceptionProxyAddon: + # Called when an addon is first loaded. This event receives a Loader object, which contains methods for adding options and commands. This method is where the addon configures itself. + def load(self, loader: mitmproxy.addonmanager.Loader): + logging.info("TestProxy load") + self._interception_context = InterceptionContext() + self._control_server = ControlServer(self._interception_context) + self._interception_context.control_server = self._control_server + self._control_server_task = asyncio.get_running_loop().create_task(self._control_server.run()) + +# events I observe when the script is hot-reloaded upon changing this file: +# +# [17:46:19.517] Loading script test-proxy.py +# +# presumably the old one: +# [17:46:19.519] TestProxy done +# +# presumably the new one: +# [17:46:19.525] TestProxy load +# [17:46:19.526] TestProxy configure +# [17:46:19.526] TestProxy running +# +# want to make sure the server get shut down, because it didn't before and I got errors + + def done(self): + logging.info("TestProxy done") + # wrote this before seeing https://websockets.readthedocs.io/en/stable/faq/server.html#how-do-i-stop-a-server, will keep what I’ve got here until I understand that incantation + # hmm, doesn't actually seem to be working, look into it further + self._control_server_task.cancel() + self._control_server = None + + def configure(self, updated): + logging.info("TestProxy configure") + + def running(self): + logging.info("TestProxy running") + + # A WebSocket connection has commenced. + def websocket_start(self, flow: mitmproxy.http.HTTPFlow): + logging.info("TestProxy websocket_start") + + # Called when a WebSocket message is received from the client or server. The most recent message will be flow.messages[-1]. The message is user-modifiable. Currently there are two types of messages, corresponding to the BINARY and TEXT frame types. + # TODO do we need to think about fragmentation? + def websocket_message(self, flow: mitmproxy.http.HTTPFlow): + message = flow.websocket.messages[-1] + + if message.injected: + logging.info("TestProxy re-received injected message; not doing anything to it") + return + + logging.info("TestProxy websocket_message") + self._interception_context.enqueue_message(message, flow) + + # A WebSocket connection has ended. You can check flow.websocket.close_code to determine why it ended. + def websocket_end(self, flow: mitmproxy.http.HTTPFlow): + logging.info("TestProxy websocket_end") + +addons = [AblyInterceptionProxyAddon()] From 1ee20a2866bf317e201a5305e8ee885c6a580f7c Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 17 Apr 2024 15:53:19 -0300 Subject: [PATCH 08/32] Revert "Add abandoned initial attempt at interception proxy" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ff30f2cf32d71acb6169a34d26ba1bd28c1adc16. (I just want to keep it in the Git history for now, in case for some reason it’s useful to return to.) --- test/mitmproxy-addon/src/control_rpc.py | 56 --------- test/mitmproxy-addon/src/control_server.py | 26 ---- .../src/intercepted_messages_queue.py | 71 ----------- .../src/interception_context.py | 115 ------------------ test/mitmproxy-addon/src/mitmproxy_addon.py | 67 ---------- 5 files changed, 335 deletions(-) delete mode 100644 test/mitmproxy-addon/src/control_rpc.py delete mode 100644 test/mitmproxy-addon/src/control_server.py delete mode 100644 test/mitmproxy-addon/src/intercepted_messages_queue.py delete mode 100644 test/mitmproxy-addon/src/interception_context.py delete mode 100644 test/mitmproxy-addon/src/mitmproxy_addon.py diff --git a/test/mitmproxy-addon/src/control_rpc.py b/test/mitmproxy-addon/src/control_rpc.py deleted file mode 100644 index df9c47ab7..000000000 --- a/test/mitmproxy-addon/src/control_rpc.py +++ /dev/null @@ -1,56 +0,0 @@ -from base64 import b64encode, b64decode -from dataclasses import dataclass -from intercepted_messages_queue import DropMessageAction, ReplaceMessageAction -from typing import Literal -import logging - -@dataclass -class JSONRPCRequest: - id: str - - def create_dto(self): - return { "jsonrpc": "2.0", "id": self.id } - -@dataclass -class TransformInterceptedMessageJSONRPCRequest(JSONRPCRequest): - type: Literal["binary", "text"] - data: bytes | str - from_client: bool - - def create_dto(self): - data_param = None - match self.type: - case "binary": - data_param = b64encode(self.data).decode('utf-8') - case "text": - data_param = self.data - - params = { 'type': self.type, 'data': data_param, 'fromClient': self.from_client } - return { **super().create_dto(), "method": "transformInterceptedMessage", "params": params } - -def json_rpc_response_from_dto(dto): - # TODO when we add more methods we’ll need a way to know which method the request corresponds to, via the ID - return TransformInterceptedMessageJSONRPCResponse.from_dto(dto) - -@dataclass -class JSONRPCResponse: - id: str - -@dataclass -class TransformInterceptedMessageJSONRPCResponse(JSONRPCResponse): - result: DropMessageAction | ReplaceMessageAction - - def from_dto(dto): - match dto['result']['action']: - case 'drop': - result = DropMessageAction() - case 'replace': - type = dto['result']['type'] - match type: - case 'binary': - data = b64decode(dto['result']['data']) - case 'text': - data = dto['result']['data'] - result = ReplaceMessageAction(type, data) - - return TransformInterceptedMessageJSONRPCResponse(id = dto['id'], result = result) diff --git a/test/mitmproxy-addon/src/control_server.py b/test/mitmproxy-addon/src/control_server.py deleted file mode 100644 index 9b2a9b63a..000000000 --- a/test/mitmproxy-addon/src/control_server.py +++ /dev/null @@ -1,26 +0,0 @@ -import websockets -import asyncio -import logging - -class ControlServer: - def __init__(self, interception_context): - self._websocket_connections = [] - self._interception_context = interception_context - - # TODO make it not keep trying to restart this server every time I modify this file - async def run(self): - async with websockets.serve(self._handle_websocket_connection, "", 8001): - await asyncio.Future() # run forever - - async def _handle_websocket_connection(self, websocket): - logging.info(f'TestProxy handle_websocket_connection {websocket}, open {websocket.open}') - # Store the connection so we can broadcast to it later. - self._websocket_connections.append(websocket) - logging.info(f'TestProxy now has websockets {self._websocket_connections}') - - async for message in websocket: - logging.info(f'TestProxy received control message: {message}') - try: - self._interception_context.on_websocket_message(message) - except Exception as err: - logging.info(f'TestProxy got error handling control message: {err}') diff --git a/test/mitmproxy-addon/src/intercepted_messages_queue.py b/test/mitmproxy-addon/src/intercepted_messages_queue.py deleted file mode 100644 index b4097958f..000000000 --- a/test/mitmproxy-addon/src/intercepted_messages_queue.py +++ /dev/null @@ -1,71 +0,0 @@ -import mitmproxy -import uuid -from dataclasses import dataclass -from typing import Literal - -@dataclass -class InterceptedMessagePredicate: - flow: mitmproxy.http.HTTPFlow - from_client: bool - - # https://stackoverflow.com/a/4901847 - - def __hash__(self): - return hash((self.flow, self.from_client)) - - def __eq__(self, other): - return (self.flow, self.from_client) == (other.flow, other.from_client) - -@dataclass -# A handle for locating a message within InterceptedMessageQueue. -class InterceptedMessageHandle: - predicate: InterceptedMessagePredicate - message_id: uuid.UUID - -class DropMessageAction: - pass - -@dataclass -class ReplaceMessageAction: - type: Literal["binary", "text"] - data: bytes | str - -@dataclass -class InterceptedMessage: - message: mitmproxy.websocket.WebSocketMessage - id: uuid.UUID = uuid.uuid4() - action: None | DropMessageAction | ReplaceMessageAction = None - -# Per-connection, per-direction message queue. We use it to queue intercepted messages whilst waiting for a control server message telling us what to do with the message at the head of the queue. -class InterceptedMessagesQueue: - def __init__(self): - # Maps an InterceptedMessagePredicate to a queue - self.queues = {} - - def _messages_for(self, predicate, create_if_needed = False): - if predicate in self.queues: - return self.queues[predicate] - else: - result = [] - if create_if_needed: - self.queues[predicate] = result - return result - - def pop(self, predicate): - return self._messages_for(predicate).pop(0) - - def has_messages(self, predicate): - return len(self._messages_for(predicate)) != 0 - - def append(self, message: InterceptedMessage, predicate): - self._messages_for(predicate, create_if_needed = True).append(message) - - def count(self, predicate): - return len(self._messages_for(predicate)) - - def is_head(self, handle: InterceptedMessageHandle): - head = self._messages_for(handle.predicate)[0] - return head.id == handle.message_id - - def get_head(self, predicate: InterceptedMessagePredicate): - return self._messages_for(predicate)[0] diff --git a/test/mitmproxy-addon/src/interception_context.py b/test/mitmproxy-addon/src/interception_context.py deleted file mode 100644 index cf3f27187..000000000 --- a/test/mitmproxy-addon/src/interception_context.py +++ /dev/null @@ -1,115 +0,0 @@ -import logging -import json -import uuid -import asyncio -import mitmproxy - -from control_rpc import JSONRPCRequest, TransformInterceptedMessageJSONRPCRequest, JSONRPCResponse, TransformInterceptedMessageJSONRPCResponse, json_rpc_response_from_dto -from intercepted_messages_queue import InterceptedMessagesQueue, InterceptedMessagePredicate, InterceptedMessageHandle, DropMessageAction, ReplaceMessageAction, InterceptedMessage - -class InterceptionContext: - def __init__(self): - self._intercepted_messages_queue = InterceptedMessagesQueue() - self._json_rpc_request_ids_to_handles = {} - self.control_server = None - - # control API currently only works with text frames - def on_websocket_message(self, payload: str): - dto = json.loads(payload) - - if 'error' in dto: - raise Exception(f'TestProxy not expecting there to be an error in JSON-RPC response') - elif 'result' in dto: - response = json_rpc_response_from_dto(dto) - self.handle_json_rpc_response(response) - else: - raise Exception(f'TestProxy got unrecognised control API message {dto}') - - def handle_json_rpc_response(self, response: JSONRPCResponse): - logging.info(f'TestProxy got JSON-RPC response: {response}, type: {type(response)}') - match response: - case TransformInterceptedMessageJSONRPCResponse(): - self.handle_transform_intercepted_message_response(response) - case _: - raise Exception(f'TestProxy got unknown response {response}') - - def handle_transform_intercepted_message_response(self, response: TransformInterceptedMessageJSONRPCResponse): - json_rpc_request_id = uuid.UUID(response.id) - handle = self._json_rpc_request_ids_to_handles[json_rpc_request_id] - - if handle is None: - raise Exception(f'TestProxy doesn’t recognise response ID {json_rpc_request_id}, enqueued, messages are {self._intercepted_messages_queue}') - - del self._json_rpc_request_ids_to_handles[json_rpc_request_id] - - if not self._intercepted_messages_queue.is_head(handle): - raise Exception(f'TestProxy got response for an intercepted message that’s not at head of queue; shouldn’t be possible {json_rpc_request_id}') - - intercepted_message = self._intercepted_messages_queue.get_head(handle.predicate) - - if intercepted_message.action is not None: - raise Exception(f'TestProxy was asked to set the action for a message that already has an action set; shouldn’t happen.') - - intercepted_message.action = response.result - - self._dequeue_intercepted_message(handle.predicate) - - def _dequeue_intercepted_message(self, predicate): - logging.info(f'TestProxy dequeueing intercepted message') - - message = self._intercepted_messages_queue.pop(predicate) - - if message.action is None: - raise Exception(f'TestProxy attempted to dequeue {message} but it doesn’t have action') - - match message.action: - case ReplaceMessageAction(type, data): - # inject the replacement - # https://docs.mitmproxy.org/stable/addons-examples/#websocket-inject-message - logging.info(f'TestProxy re-injecting message {message} with new type {type} and new data {data}') - # https://github.com/mitmproxy/mitmproxy/blob/e834259215dc4dd6f1b58dee8e0f84943a002db6/mitmproxy/addons/proxyserver.py#L308-L322 - mitmproxy.ctx.master.commands.call("inject.websocket", predicate.flow, not predicate.from_client, data.encode() if type == 'text' else data, type == 'text') - case DropMessageAction: - # drop the message - logging.info(f'TestProxy dropping message {message}') - - if self._intercepted_messages_queue.has_messages(predicate): - self._broadcast_next_message(predicate) - - def _broadcast_json_rpc_request(self, request: JSONRPCRequest): - data = json.dumps(request.create_dto()) - - logging.info(f'TestProxy broadcast request JSON {data}') - # TODO tidy up - have a method on server - for websocket in self.control_server._websocket_connections: - logging.info(f'TestProxy broadcast to connection {websocket}, open {websocket.open}') - asyncio.get_running_loop().create_task(websocket.send(data)) - - def _broadcast_next_message(self, predicate): - intercepted_message = self._intercepted_messages_queue.get_head(predicate) - - json_rpc_request_id = uuid.uuid4() - - handle = InterceptedMessageHandle(predicate, intercepted_message.id) - self._json_rpc_request_ids_to_handles[json_rpc_request_id] = handle - - # Broadcast to everyone connected to the control server. - # TODO I think would be better for there to be one client who sends an explicit message to become the active client, or to only allow a single connection at a time; not important now though - logging.info(f'TestProxy broadcast message {intercepted_message!r}') - - json_rpc_request = TransformInterceptedMessageJSONRPCRequest(id = str(json_rpc_request_id), type = "text" if intercepted_message.message.is_text else "binary", data = intercepted_message.message.text if intercepted_message.message.is_text else intercepted_message.message.content, from_client = intercepted_message.message.from_client) - self._broadcast_json_rpc_request(json_rpc_request) - - def enqueue_message(self, message, flow): - predicate = InterceptedMessagePredicate(flow, message.from_client) - - intercepted_message = InterceptedMessage(message) - self._intercepted_messages_queue.append(intercepted_message, predicate) - - # drop the message; we’ll insert it later when the client tells us what to do with it - message.drop() - - if self._intercepted_messages_queue.count(predicate) == 1: - self._broadcast_next_message(predicate) - else: - logging.info(f'TestProxy enqueued message {message} since there are {self._intercepted_messages_queue.count(predicate) - 1} pending messages') diff --git a/test/mitmproxy-addon/src/mitmproxy_addon.py b/test/mitmproxy-addon/src/mitmproxy_addon.py deleted file mode 100644 index 985f558fc..000000000 --- a/test/mitmproxy-addon/src/mitmproxy_addon.py +++ /dev/null @@ -1,67 +0,0 @@ -import logging -import mitmproxy -import asyncio - -from control_server import ControlServer -from interception_context import InterceptionContext - -# TODO cleanup as control server connections go away -# TODO cleanup as intercepted connections go away - -class AblyInterceptionProxyAddon: - # Called when an addon is first loaded. This event receives a Loader object, which contains methods for adding options and commands. This method is where the addon configures itself. - def load(self, loader: mitmproxy.addonmanager.Loader): - logging.info("TestProxy load") - self._interception_context = InterceptionContext() - self._control_server = ControlServer(self._interception_context) - self._interception_context.control_server = self._control_server - self._control_server_task = asyncio.get_running_loop().create_task(self._control_server.run()) - -# events I observe when the script is hot-reloaded upon changing this file: -# -# [17:46:19.517] Loading script test-proxy.py -# -# presumably the old one: -# [17:46:19.519] TestProxy done -# -# presumably the new one: -# [17:46:19.525] TestProxy load -# [17:46:19.526] TestProxy configure -# [17:46:19.526] TestProxy running -# -# want to make sure the server get shut down, because it didn't before and I got errors - - def done(self): - logging.info("TestProxy done") - # wrote this before seeing https://websockets.readthedocs.io/en/stable/faq/server.html#how-do-i-stop-a-server, will keep what I’ve got here until I understand that incantation - # hmm, doesn't actually seem to be working, look into it further - self._control_server_task.cancel() - self._control_server = None - - def configure(self, updated): - logging.info("TestProxy configure") - - def running(self): - logging.info("TestProxy running") - - # A WebSocket connection has commenced. - def websocket_start(self, flow: mitmproxy.http.HTTPFlow): - logging.info("TestProxy websocket_start") - - # Called when a WebSocket message is received from the client or server. The most recent message will be flow.messages[-1]. The message is user-modifiable. Currently there are two types of messages, corresponding to the BINARY and TEXT frame types. - # TODO do we need to think about fragmentation? - def websocket_message(self, flow: mitmproxy.http.HTTPFlow): - message = flow.websocket.messages[-1] - - if message.injected: - logging.info("TestProxy re-received injected message; not doing anything to it") - return - - logging.info("TestProxy websocket_message") - self._interception_context.enqueue_message(message, flow) - - # A WebSocket connection has ended. You can check flow.websocket.close_code to determine why it ended. - def websocket_end(self, flow: mitmproxy.http.HTTPFlow): - logging.info("TestProxy websocket_end") - -addons = [AblyInterceptionProxyAddon()] From 4dadceeb6f56dba32e456c9e675d5952921478ad Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 17 Apr 2024 15:51:09 -0300 Subject: [PATCH 09/32] ECO-14: Document internal API usage in tests, add interception proxy prototype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - start-interception-proxy adapted from https://github.com/ably/sdk-test-proxy at 82e93a7 Some TODOs which aren’t really important right now because this is just a prototype: - TODO fix type checking for interception proxy — `npm run build` does it properly, but tried to reproduce the way we do it for modulereport and it didn’t work - TODO fix linting for interception proxy — doesn’t seem to be catching lint errors - TODO linting / type checking etc for Python code - TODO investigate test failures in browser: - Firefox is passing - [Chromium is failing](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087173): > ``` > [](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087173#step:15:35514)- offers realtime presence functionality > > [](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087173#step:15:35515)- is able to use the web_socket transport > > [](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087173#step:15:35516)- is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed > > [](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087173#step:15:35517)- can take a MessageFilter argument when subscribing to and unsubscribing from channel events > ``` > - [WebKit is failing](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087922): > ``` > failed tests: > > [](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087922#step:15:27042)- allows you to use push admin functionality > > [](https://github.com/ably/ably-js/actions/runs/8802125604/job/24157087922#step:15:27043)- allows you to use push admin functionality > ``` TODO how to get WebKit working locally on my Mac? Adding to keychain didn’t seem to work Also: > Add test:playwright:open-browser script > > Lets you open a headed browser which is configured to use the > interception proxy. Useful for local debugging of browser tests. --- .github/workflows/test-browser.yml | 60 ++- .github/workflows/test-node.yml | 113 ++++- .gitignore | 1 + package.json | 2 + start-interception-proxy | 94 ++++ test/common/globals/named_dependencies.js | 4 + .../modules/interception_proxy_client.js | 200 +++++++++ test/interception-proxy/ControlRPC.ts | 126 ++++++ test/interception-proxy/ControlServer.ts | 59 +++ .../InterceptedConnection.ts | 311 ++++++++++++++ .../InterceptedMessagesQueue.ts | 86 ++++ .../interception-proxy/InterceptionContext.ts | 253 +++++++++++ test/interception-proxy/Proxy.ts | 17 + test/interception-proxy/ProxyServer.ts | 55 +++ test/interception-proxy/StateMachine.ts | 185 ++++++++ .../WebSocketMessageData.ts | 10 + test/interception-proxy/server.ts | 14 + test/mitm-server-thoughts.md | 303 +++++++++++++ test/mitmproxy_addon_2.py | 54 +++ ...mitmproxy_addon_generate_certs_and_exit.py | 13 + test/private-api-usage.md | 405 ++++++++++++++++++ test/realtime/connection.test.js | 202 +++++---- test/support/openPlaywrightBrowser.js | 5 + test/support/playwrightHelpers.js | 63 +++ test/support/root_hooks.js | 19 +- test/support/runPlaywrightTests.js | 21 +- 26 files changed, 2564 insertions(+), 111 deletions(-) create mode 100755 start-interception-proxy create mode 100644 test/common/modules/interception_proxy_client.js create mode 100644 test/interception-proxy/ControlRPC.ts create mode 100644 test/interception-proxy/ControlServer.ts create mode 100644 test/interception-proxy/InterceptedConnection.ts create mode 100644 test/interception-proxy/InterceptedMessagesQueue.ts create mode 100644 test/interception-proxy/InterceptionContext.ts create mode 100644 test/interception-proxy/Proxy.ts create mode 100644 test/interception-proxy/ProxyServer.ts create mode 100644 test/interception-proxy/StateMachine.ts create mode 100644 test/interception-proxy/WebSocketMessageData.ts create mode 100644 test/interception-proxy/server.ts create mode 100644 test/mitm-server-thoughts.md create mode 100644 test/mitmproxy_addon_2.py create mode 100644 test/mitmproxy_addon_generate_certs_and_exit.py create mode 100644 test/private-api-usage.md create mode 100644 test/support/openPlaywrightBrowser.js create mode 100644 test/support/playwrightHelpers.js diff --git a/.github/workflows/test-browser.yml b/.github/workflows/test-browser.yml index c434c2e58..acc724f96 100644 --- a/.github/workflows/test-browser.yml +++ b/.github/workflows/test-browser.yml @@ -25,11 +25,69 @@ jobs: with: node-version: 20.x - run: npm ci + + # Set up Python (for pipx) + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + # Install pipx (for mitmproxy) + # See https://pipx.pypa.io/stable/installation/ + - name: Install pipx + run: | + python3 -m pip install --user pipx + sudo pipx --global ensurepath + + # https://docs.mitmproxy.org/stable/overview-installation/#installation-from-the-python-package-index-pypi + - name: Install mitmproxy + run: | + pipx install mitmproxy + # We use this library in our addon + pipx inject mitmproxy websockets + + - name: Generate mitmproxy SSL certs + run: mitmdump -s test/mitmproxy_addon_generate_certs_and_exit.py + + - name: Start interception proxy server + run: ./start-interception-proxy + - name: Install Playwright browsers and dependencies run: npx playwright install --with-deps - - env: + + # For certutil + - name: Install NSS tools + run: sudo apt install libnss3-tools + + # This is for Chromium (see https://chromium.googlesource.com/chromium/src/+/master/docs/linux/cert_management.md) + # Note this is the same command that we use for adding it to the Firefox profile (see playwrightHelpers.js) + - name: Install mitmproxy root CA in NSS shared DB + run: | + mkdir -p ~/.pki/nssdb + certutil -A -d sql:$HOME/.pki/nssdb -t "C" -n "Mitmproxy Root Cert" -i ~/.mitmproxy/mitmproxy-ca-cert.pem + certutil -L -d sql:$HOME/.pki/nssdb + + # This is for WebKit (I think because it uses OpenSSL) + - name: Install mitmproxy root CA in /usr/local/share/ca-certificates + run: | + sudo cp ~/.mitmproxy/mitmproxy-ca-cert.cer /usr/local/share/ca-certificates/mitmproxy-ca-cert.crt + sudo update-ca-certificates + + - name: Run the tests + env: PLAYWRIGHT_BROWSER: ${{ matrix.browser }} run: npm run test:playwright + + - name: Save interception proxy server logs + if: always() + run: sudo journalctl -u ably-sdk-test-proxy.service > interception-proxy-logs.txt + + - name: Upload interception proxy server logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: interception-proxy-logs-${{ matrix.browser }} + path: interception-proxy-logs.txt + - name: Upload test results if: always() uses: ably/test-observability-action@v1 diff --git a/.github/workflows/test-node.yml b/.github/workflows/test-node.yml index 39ccf4d0e..ec119bb79 100644 --- a/.github/workflows/test-node.yml +++ b/.github/workflows/test-node.yml @@ -25,9 +25,120 @@ jobs: with: node-version: ${{ matrix.node-version }} - run: npm ci - - run: npm run test:node + + # Set up Python (for pipx) + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + # Install pipx (for mitmproxy) + # See https://pipx.pypa.io/stable/installation/ + - name: Install pipx + run: | + python3 -m pip install --user pipx + sudo pipx --global ensurepath + + # https://docs.mitmproxy.org/stable/overview-installation/#installation-from-the-python-package-index-pypi + - name: Install mitmproxy + run: | + pipx install mitmproxy + # We use this library in our addon + pipx inject mitmproxy websockets + + - name: Create a user to run the tests + run: sudo useradd --create-home ably-test-user + + - name: Create a group for sharing the working directory + run: | + sudo groupadd ably-test-users + # Add relevant users to the group + sudo usermod --append --groups ably-test-users $USER + sudo usermod --append --groups ably-test-users ably-test-user + # Give the group ownership of the working directory and everything under it... + sudo chown -R :ably-test-users . + # ...and give group members full read/write access to its contents (i.e. rw access to files, rwx access to directories) + # (We use xargs because `find` does not fail if an `exec` command fails; see https://serverfault.com/a/905039) + find . -type f -print0 | xargs -n1 -0 chmod g+rw + find . -type d -print0 | xargs -n1 -0 chmod g+rwx + # TODO understand better + # + # This is to make `npm run` work when run as ably-test-user; else it fails because of a `statx()` call on package.json: + # + # > 2024-04-17T13:08:09.1302251Z [pid 2051] statx(AT_FDCWD, `"/home/runner/work/ably-js/ably-js/package.json"`, AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7f4875ffcb40) = -1 EACCES (Permission denied) + # + # statx documentation says: + # + # > in the case of **statx**() with a pathname, execute (search) permission is required on all of the directories in _pathname_ that lead to the file. + # + # The fact that I’m having to do this probably means that I’m doing something inappropriate elsewhere. (And I don’t know what the other consequences of doing this might be.) + chmod o+x ~ + + # TODO set umask appropriately, so that new files created are readable/writable by the group + + - name: Generate mitmproxy SSL certs + run: mitmdump -s test/mitmproxy_addon_generate_certs_and_exit.py + + - name: Set up iptables rules + run: | + # The rules suggested by mitmproxy etc are aimed at intercepting _all_ the outgoing traffic on a machine. I don’t want that, given that we want to be able to run this test suite on developers’ machines in a non-invasive manner. Instead we just want to target traffic generated by the process that contains the Ably SDK, which we’ll make identifable by iptables by running that process as a specific user created for that purpose (ably-test-user). + # + # Relevant parts of iptables documentation: + # + # nat: + # > This table is consulted when a packet that creates a new connection is encountered. It consists of three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for altering locally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out). + # + # owner: + # > This module attempts to match various characteristics of the packet creator, for locally-generated packets. It is only valid in the OUTPUT chain, and even this some packets (such as ICMP ping responses) may have no owner, and hence never match. + # + # REDIRECT: + # > This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains. It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming interface (locally-generated packets are mapped to the 127.0.0.1 address). It takes one option: + # > + # > --to-ports port[-port] + # > This specifies a destination port or range of ports to use: without this, the destination port is never altered. This is only valid if the rule also specifies -p tcp or -p udp. + # + # I don’t exactly understand what the nat table means; I assume its rules apply to all _subsequent_ packets in the connection, too? + # + # So, what I expect to happen: + # + # 1. iptables rule causes default-port HTTP(S) datagram from test process to get its destination IP rewritten to 127.0.0.1, and rewrites the TCP header’s destination port to 8080 + # 2. 127.0.0.1 destination causes OS’s routing to send this datagram on the loopback interface + # 3. nature of the loopback interface means that this datagram is then received on the loopback interface + # 4. mitmproxy, listening on port 8080 (not sure how or why it uses a single port for both non-TLS and TLS traffic) receives these datagrams, and uses Host header or SNI to figure out where they were originally destined. + # + # TODO (how) do we achieve the below on macOS? I have a feeling that it’s currently just working by accident; e.g. it's because the TCP connection to the control server exists before we start mitmproxy and hence the connection doesn’t get passed to its NETransparentProxyProvider or something. To be on the safe side, though, I’ve added a check in the mitmproxy addon so that we only mess with stuff for ports 80 or 443 + # + # Note that in the current setup with ably-js, the test suite and the Ably SDK run in the same process. We want to make sure that we don’t intercept the test suite’s WebSocket communications with the interception proxy’s control API (which it serves at 127.0.0.1:8001), hence only targeting the default HTTP(S) ports. (TODO consider that Realtime team also run a Realtime on non-default ports when testing locally) + sudo iptables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 80 --jump REDIRECT --to-ports 8080 + sudo iptables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 443 --jump REDIRECT --to-ports 8080 + sudo ip6tables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 80 --jump REDIRECT --to-ports 8080 + sudo ip6tables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 443 --jump REDIRECT --to-ports 8080 + + # TODO how will this behave with: + # + # 1. the WebSocket connection from test suite to control API (see above note; not a problem in this CI setup, think about it on macOS) + # 2. the WebSocket connection from mitmproxy to control API (not an issue on Linux or macOS with our current setup since we don’t intercept any traffic from mitmproxy) + # 3. the WebSocket connections that mitmproxy proxies to the interception proxy (which it sends to localhost:8002) (ditto 2) + # 4. the WebSocket connections for which interception proxy is a client (not an issue for Linux or macOS with our current setup since we don’t intercept any traffic from interception proxy) + + - name: Start interception proxy server + run: ./start-interception-proxy + + - name: Run the tests + run: sudo -u ably-test-user NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem npm run test:node env: CI: true + + - name: Save interception proxy server logs + if: always() + run: sudo journalctl -u ably-sdk-test-proxy.service > interception-proxy-logs.txt + + - name: Upload interception proxy server logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: interception-proxy-logs-${{ matrix.node-version }} + path: interception-proxy-logs.txt + - name: Upload test results if: always() uses: ably/test-observability-action@v1 diff --git a/.gitignore b/.gitignore index 353ef848e..707c11e63 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ react/ typedoc/generated/ junit/ test/support/mocha_junit_reporter/build/ +tmp/ # Python stuff (for interception proxy) __pycache__ diff --git a/package.json b/package.json index 8641bf3dc..6661efecd 100644 --- a/package.json +++ b/package.json @@ -132,8 +132,10 @@ "test:node:skip-build": "mocha", "test:webserver": "grunt test:webserver", "test:playwright": "node test/support/runPlaywrightTests.js", + "test:playwright:open-browser": "node test/support/openPlaywrightBrowser.js", "test:react": "vitest run", "test:package": "grunt test:package", + "test:proxy": "npm run build && esr test/interception-proxy/server.ts", "concat": "grunt concat", "build": "grunt build:all && npm run build:react", "build:node": "grunt build:node", diff --git a/start-interception-proxy b/start-interception-proxy new file mode 100755 index 000000000..e0b9cc379 --- /dev/null +++ b/start-interception-proxy @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +# Runs the server as a background service, exiting once the server is ready to receive requests. +# +# Intended for use in SDKs’ CI jobs. Must be run from the root of this repository. + +set -e + +# We run as the current user so that we can access the generated server certificate (in ~/.mitmproxy) without having to worry about permissions. TODO consider instead generating our own cert and telling mitmproxy to use it, then we also won’t have to have that step where we run mitmproxy once just to generate the certs +start_systemd_service () { + systemd_service=$(cat </dev/null + + echo "Starting ably-sdk-test-proxy systemd service..." 1>&2 + sudo systemctl start ably-sdk-test-proxy.service + echo "Started ably-sdk-test-proxy systemd service." 1>&2 +} + +start_launchd_daemon () { + launchd_daemon=$(cat < + + + + Label + com.ably.test.proxy + WorkingDirectory + $(pwd) + ProgramArguments + + npm + run + test:proxy + + RunAtLoad + + + +LAUNCHD_DAEMON +) + + # https://stackoverflow.com/questions/84882/sudo-echo-something-etc-privilegedfile-doesnt-work + echo "${launchd_daemon}" | sudo tee /Library/LaunchDaemons/com.ably.test.proxy.plist + + echo "Loading ably-sdk-test-proxy launchd daemon..." 1>&2 + sudo launchctl load /Library/LaunchDaemons/com.ably.test.proxy.plist + echo "Loaded ably-sdk-test-proxy launchd daemon." 1>&2 +} + +check_daemon_still_running () { + if uname | grep Linux 1>/dev/null + then + systemctl is-active --quiet ably-sdk-test-proxy.service + elif uname | grep Darwin 1>/dev/null + then + launchctl print system/com.ably.test.proxy 1>/dev/null + fi +} + +if uname | grep Linux 1>/dev/null +then + start_systemd_service +elif uname | grep Darwin 1>/dev/null +then + start_launchd_daemon +else + echo "Unsupported system $(uname); exiting" 1>&2 + exit 1 +fi + +echo "Waiting for sdk-test-proxy server to start on port 8001..." 1>&2 + +# https://stackoverflow.com/questions/27599839/how-to-wait-for-an-open-port-with-netcat +while ! nc -z localhost 8001; do + # Check that the service hasn’t failed (else we’ll be waiting forever) + check_daemon_still_running + sleep 0.5 +done + +echo "sdk-test-proxy server is now listening on port 8001." 1>&2 diff --git a/test/common/globals/named_dependencies.js b/test/common/globals/named_dependencies.js index 0558b575e..1299d8d6a 100644 --- a/test/common/globals/named_dependencies.js +++ b/test/common/globals/named_dependencies.js @@ -13,5 +13,9 @@ define(function () { shared_helper: { browser: 'test/common/modules/shared_helper', node: 'test/common/modules/shared_helper' }, async: { browser: 'node_modules/async/lib/async' }, chai: { browser: 'node_modules/chai/chai', node: 'node_modules/chai/chai' }, + interception_proxy_client: { + browser: 'test/common/modules/interception_proxy_client', + node: 'test/common/modules/interception_proxy_client', + }, }); }); diff --git a/test/common/modules/interception_proxy_client.js b/test/common/modules/interception_proxy_client.js new file mode 100644 index 000000000..e7224dcce --- /dev/null +++ b/test/common/modules/interception_proxy_client.js @@ -0,0 +1,200 @@ +'use strict'; + +define(['ably', 'shared_helper'], function (Ably, helper) { + // copied from crypto test + var msgpack = typeof window == 'object' ? Ably.msgpack : require('@ably/msgpack-js'); + // similar approach + var WebSocket = typeof window == 'object' ? window.WebSocket : require('ws'); + var BufferUtils = Ably.Realtime.Platform.BufferUtils; + + class InterceptionProxyClient { + currentContext = null; + + // this expects the interception proxy to already be running (i.e. the test suite doesn't launch it) + // this method is called by test suite’s root hooks. test cases shouldn't call this method; rather, they should use + async connect() { + this.webSocket = new WebSocket('ws://localhost:8001'); + + await new Promise((resolve, reject) => { + this.webSocket.addEventListener('open', () => { + console.log('connected to interception proxy'); + resolve(); + }); + this.webSocket.addEventListener('error', (error) => { + console.log('failed to connect to interception proxy:', error); + reject(error); + }); + this.webSocket.addEventListener('message', (message) => { + console.log('interception proxy got message', message.data); + this.handleJSONRPCMessage(JSON.parse(message.data)); + }); + }); + + await this.startInterception(); + console.log('startInterception completed'); + + // TODO something if connection lost + } + + async startInterception() { + const promise = new Promise((resolve, reject) => { + this.onStartedInterception = resolve; + this.onFailedToStartInterception = reject; + }); + + // i.e. for browser we use proxy, for Node we use local + const params = typeof window == 'object' ? { mode: 'proxy' } : { mode: 'local', pid: process.pid }; + + const request = { + jsonrpc: '2.0', + method: 'startInterception', + params, + id: helper.randomString(), + }; + const requestData = JSON.stringify(request); + + console.log('interception proxy sending startInterception request', request); + this.webSocket.send(requestData); + + return promise; + } + + async disconnect() { + if (this.webSocket.readyState === 3) { + // already closed + console.log('interception proxy client already disconnected'); + return; + } + + this.webSocket.close(); + + return new Promise((resolve) => { + this.webSocket.addEventListener('close', () => { + console.log('interception proxy client disconnected'); + resolve(); + }); + }); + } + + // TODO explain motivation for this API (so that a lingering test can’t accidentally override the interception in your test; of course, the interception in your test might accidentally _intercept_ messages sent by a lingering test but that’s a separate issue) + // + // This is written as (done, action) for compatibility with the way our tests are currently written; a promise-based version would be good to have too + // + // action receives a context object. it can modify the following properties of this object to modify the interception: + // + // - `transformClientMessage` or `transformServerMessage` (for message from client or server respectively) + // + // Receives an object with the following properties: + // + // - id: a unique identifier for this WebSocket message (generated by the interception proxy) + // - connectionID: a unique identifier for this WebSocket connection (generated by the interception proxy) + // - deserialized: a JSON-like object (i.e. the result of JSON.parse or msgpack.decode) + // + // And returns one of: + // + // - a JSON-like object (to modify the message) + // - `null` (to drop the message) + // + // Can also return a promise. + // + // If not set, then messages will be passed through unaltered. + // + // TODO some thoughts on API: + // + // - user currently has to make sure they remember to return something from the transform* function, even if they’re failing their test in some exceptional manner — this is to make sure that the connection can be allowed to disconnect at the proxy + // + // - users might think that they can directly mutate the object passed to transform* functions + intercept(done, action) { + if (this.currentContext !== null) { + throw new Error( + 'A call to `intercept` is already active; check you’re not running multiple tests at the same time', + ); + } + + this.currentContext = { + transformClientMessage: null, + transformServerMessage: null, + }; + + const newDone = (error) => { + this.currentContext = null; + done(error); + }; + + action(newDone, this.currentContext); + } + + handleJSONRPCMessage(message) { + if (message.method === 'transformInterceptedMessage') { + let deserialized; + if (message.params.type === 'binary') { + const data = BufferUtils.base64Decode(message.params.data); + deserialized = msgpack.decode(data); + } else if (message.params.type === 'text') { + const data = message.params.data; + deserialized = JSON.parse(data); + } + + console.log( + 'interception proxy awaiting response of transformInterceptedMessage for message', + message, + 'deserialized to', + deserialized, + ); + + const messageForTransform = { id: message.params.id, connectionID: message.params.connectionID, deserialized }; + + const noOpTransformInterceptedMessage = (message) => { + console.log(`default transformInterceptedMessage implementation passing message ${message.id} unaltered`); + return message.deserialized; + }; + + const transformInterceptedMessage = + (message.params.fromClient + ? this.currentContext?.transformClientMessage + : this.currentContext?.transformServerMessage) ?? noOpTransformInterceptedMessage; + + Promise.resolve(transformInterceptedMessage(messageForTransform)).then((result) => { + try { + console.log(`interception proxy got result of transforming message ${messageForTransform.id}`, result); + + let responseResult; + + if (result === null) { + responseResult = { action: 'drop' }; + } else { + let data; + + if (message.params.type === 'binary') { + const serialized = msgpack.encode(result); + data = BufferUtils.base64Encode(serialized); + } else if (message.params.type === 'text') { + data = JSON.stringify(result); + } + + responseResult = { action: 'replace', type: message.params.type, data }; + } + + const response = { jsonrpc: '2.0', id: message.id, result: responseResult }; + console.log('interception proxy sending transformInterceptedMessage response', response); + + const responseJSON = JSON.stringify(response); + this.webSocket.send(responseJSON); + } catch (err) { + // TODO better error handling + console.log('interception proxy caught', err); + } + }); + } else { + // assume it's the response to our startInterception call; TODO sort this out + if ('error' in message) { + this.onFailedToStartInterception(new Error(message.error.message)); + } else { + this.onStartedInterception(); + } + } + } + } + + return (module.exports = new InterceptionProxyClient()); +}); diff --git a/test/interception-proxy/ControlRPC.ts b/test/interception-proxy/ControlRPC.ts new file mode 100644 index 000000000..8348a0884 --- /dev/null +++ b/test/interception-proxy/ControlRPC.ts @@ -0,0 +1,126 @@ +import { MessageAction } from './InterceptedMessagesQueue'; +import { WebSocketMessageData } from './WebSocketMessageData'; + +// TODO proper types for the DTOs, and align them better with the internal language + +export class JSONRPCRequest { + constructor(readonly id: string) {} + + createDTO() { + return { jsonrpc: '2.0', id: this.id }; + } +} + +export class TransformInterceptedMessageJSONRPCRequest extends JSONRPCRequest { + constructor( + id: string, + readonly messageID: string, + readonly connectionID: string, + readonly data: WebSocketMessageData, + readonly fromClient: boolean, + ) { + super(id); + } + + createDTO() { + let dataParam: string; + switch (this.data.type) { + case 'binary': + dataParam = this.data.data.toString('base64'); + break; + case 'text': + dataParam = this.data.data; + break; + } + + const params = { + id: this.messageID, + connectionID: this.connectionID, + type: this.data.type, + data: dataParam, + fromClient: this.fromClient, + }; + + return { ...super.createDTO(), method: 'transformInterceptedMessage', params }; + } +} + +export interface JSONRPCRequestDTO { + id: string; + params: T; +} + +export type InterceptionModeDTO = { mode: 'local'; pid: number } | { mode: 'proxy' }; + +export type StartInterceptionJSONRPCRequestDTO = JSONRPCRequestDTO; + +export class StartInterceptionJSONRPCRequest extends JSONRPCRequest { + constructor(id: string, readonly mode: InterceptionModeDTO) { + super(id); + } + + static fromDTO(dto: StartInterceptionJSONRPCRequestDTO) { + return new StartInterceptionJSONRPCRequest(dto.id, dto.params); + } +} + +type JSONObject = Partial>; + +export interface JSONRPCResponseDTO { + id: string; + result: T; +} + +type TransformInterceptedMessageJSONRPCResponseDTO = JSONRPCResponseDTO< + { action: 'drop' } | { action: 'replace'; type: 'binary' | 'text'; data: string } +>; + +export class JSONRPCResponse { + constructor(readonly id: string, readonly errorMessage: string | null = null) {} + + createDTO() { + const dto: Record = { jsonrpc: '2.0', id: this.id }; + + if (this.errorMessage !== null) { + dto.error = { code: 1, message: this.errorMessage }; + } else { + dto.result = {}; + } + + return dto; + } + + static fromDTO(dto: JSONRPCResponseDTO): JSONRPCResponse { + // TODO when we add more methods we’ll need a way to know which method the request corresponds to, via the ID + return TransformInterceptedMessageJSONRPCResponse.fromDTO(dto as TransformInterceptedMessageJSONRPCResponseDTO); + } +} + +export class TransformInterceptedMessageJSONRPCResponse extends JSONRPCResponse { + constructor(id: string, readonly action: MessageAction) { + super(id); + } + + static fromDTO(dto: TransformInterceptedMessageJSONRPCResponseDTO) { + let action: MessageAction; + + switch (dto.result.action) { + case 'drop': + action = { type: 'drop' }; + break; + case 'replace': + switch (dto.result.type) { + case 'binary': + const data = Buffer.from(dto.result.data, 'base64'); + action = { type: 'replace', data: { type: 'binary', data } }; + break; + case 'text': + action = { type: 'replace', data: { type: 'text', data: dto.result.data } }; + break; + } + break; + } + + return new TransformInterceptedMessageJSONRPCResponse(dto.id, action); + } +} diff --git a/test/interception-proxy/ControlServer.ts b/test/interception-proxy/ControlServer.ts new file mode 100644 index 000000000..b171b2a03 --- /dev/null +++ b/test/interception-proxy/ControlServer.ts @@ -0,0 +1,59 @@ +import { WebSocket, WebSocketServer } from 'ws'; +import { InterceptionContext } from './InterceptionContext'; + +const port = 8001; + +// think of it as an opaque type for now +export type ControlServerConnection = WebSocket; + +export class ControlServer { + private wss = new WebSocketServer({ port }); + private webSocketConnections: WebSocket[] = []; + private activeConnection: WebSocket | null = null; + + constructor(private readonly interceptionContext: InterceptionContext) { + interceptionContext.controlServer = this; + } + + start() { + this.wss.on('connection', (ws) => { + console.log('New connection to control server'); + this.webSocketConnections.push(ws); + ws.on('error', console.error); + + ws.on('message', (data, isBinary) => { + try { + if (isBinary) { + throw new Error('Control server got a binary message; it only works with text messages'); + } + + const text = data.toString('utf-8'); + console.info('Control server received message', text); + this.interceptionContext.onControlWebSocketMessage(text, ws); + } catch (err) { + console.error('Control server got error handling message', err); + } + }); + }); + console.log(`Started control server on port ${port}`); + } + + send(data: string, connection: ControlServerConnection) { + console.log('Control server sending message', data); + connection.send(data); + } + + sendToActiveConnection(data: string) { + console.log('Control server sending message to active connection', data); + this.activeConnection?.send(data); + } + + setActiveConnection(connection: ControlServerConnection) { + if (this.activeConnection !== null) { + throw new Error('There is already an active connection to the control server'); + } + + console.log('Control server set active connection'); + this.activeConnection = connection; + } +} diff --git a/test/interception-proxy/InterceptedConnection.ts b/test/interception-proxy/InterceptedConnection.ts new file mode 100644 index 000000000..de114d9c4 --- /dev/null +++ b/test/interception-proxy/InterceptedConnection.ts @@ -0,0 +1,311 @@ +import { randomUUID } from 'crypto'; +import { stateMachineDefinition, InterceptedConnectionState, InterceptedConnectionEvent } from './StateMachine'; +import { WebSocket, WebSocketServer } from 'ws'; +import { ProxyMessage } from './Proxy'; +import { WebSocketMessageData } from './WebSocketMessageData'; +import { InterceptionContext } from './InterceptionContext'; + +export enum WhichConnection { + ToServer, + ToClient, +} + +/** + * Represents a WebSocket connection that we’re forwarding from a client to a server. + */ +export class InterceptedConnection { + readonly id = randomUUID(); + private _state = InterceptedConnectionState.ConnectedToClientButNotYetServer; + serverConnection: WebSocket | null = null; + + private messageQueues: { + /** + * Messages that are waiting to be sent to the server + */ + toServer: WebSocketMessageData[]; + /** + * Messages that are waiting to be sent to the client + */ + toClient: WebSocketMessageData[]; + } = { + toServer: [], + toClient: [], + }; + + private keepClientConnectionAlive = false; + private keepServerConnectionAlive = false; + + /** + * @param clientConnection An open WebSocket connection to the client. + */ + constructor( + private readonly interceptionContext: InterceptionContext, + host: string, + proto: string, + url: string, + readonly clientConnection: WebSocket, + ) { + this.log(`New connection to proxy server (forwarded host ${host}, forwarded proto ${proto})`); + + clientConnection.on('close', () => { + this.log('clientConnection close event'); + this.on(InterceptedConnectionEvent.ClientClose); + // TODO I’ve written a state machine but instead of state machine actions I have these calls below (ditto for the server connection); seems maybe suboptimal but not important now + this.tryFlushSendQueue(false); // drop all queued client-bound messages + this.tryPropagateClosure(WhichConnection.ToServer); + }); + // TODO do something with this event? + clientConnection.on('error', (err) => { + this.log(`clientConnection error event: ${err}`); + }); + + this.connectToServer(host, proto, url); + + clientConnection.on('message', (data, isBinary) => { + console.info('Got message from client'); + // TODO sort out type assertion + this.onMessage(data as Buffer, isBinary, true); + }); + } + + get state(): InterceptedConnectionState { + return this._state; + } + + log(message: string) { + console.log(`Connection ${this.id} (state ${InterceptedConnectionState[this.state]}): ${message}`); + } + + on(event: InterceptedConnectionEvent) { + const transition = stateMachineDefinition.fetchTransition(this.state, event); + + if (transition === null) { + throw new Error( + `No transition defined for current state ${InterceptedConnectionState[this.state]} and event ${ + InterceptedConnectionEvent[event] + }`, + ); + } + + this.log(`Transitioning to state ${InterceptedConnectionState[transition.newState]}`); + this._state = transition.newState; + + if (this._state === InterceptedConnectionState.Disconnected) { + this.log(`Finished`); + } + } + + private connectToServer(host: string, proto: string, resourceName: string) { + const uri = `${proto}://${host}${resourceName}`; + this.log(`Starting forwarding to ${uri}`); + + const serverConnection = new WebSocket(uri); + this.serverConnection = serverConnection; + + serverConnection.on('open', () => { + this.log('serverConnection open event'); + this.on(InterceptedConnectionEvent.ServerOpen); + this.tryFlushSendQueue(true); // forward all queued server-bound messages + }); + serverConnection.on('close', () => { + this.log('serverConnection close event'); + this.on(InterceptedConnectionEvent.ServerClose); + this.tryFlushSendQueue(true); // drop all queued server-bound messages + this.tryPropagateClosure(WhichConnection.ToClient); + }); + // TODO better logging, do something with this event? + serverConnection.on('error', (err) => { + this.log(`serverConnection error event: ${err}`); + }); + + serverConnection.on('message', (data, isBinary) => { + // TODO sort out type assertion + this.onMessage(data as Buffer, isBinary, false); + }); + } + + private onMessage(data: Buffer, isBinary: boolean, fromClient: boolean) { + const proxyMessage = new ProxyMessage( + isBinary ? { type: 'binary', data } : { type: 'text', data: data.toString('utf-8') }, + fromClient, + ); + + this.log(`Got message ${proxyMessage.loggingDescription}`); + + // We don’t forward this message directly to the other peer; rather we pass it to the interception context, which will use the control API to ask its client what to do with this message. It might, for example, result in a replacement message being injected via `inject`. + + this.interceptionContext.enqueueMessage(proxyMessage, this); + } + + inject(fromClient: boolean, data: WebSocketMessageData) { + this.enqueueForSend(fromClient, data); + this.tryFlushSendQueue(fromClient); + } + + /** + * When called with `keepAlive` set to `true`, tells the proxy not to close the connection described by `connection` until called again with `keepAlive` set to `false`. + */ + setKeepConnectionAlive(keepAlive: boolean, connection: WhichConnection) { + this.log(`set ${keepAlive ? '' : 'no '}keepAlive connection ${WhichConnection[connection]}`); + + switch (connection) { + case WhichConnection.ToServer: + this.keepServerConnectionAlive = keepAlive; + break; + case WhichConnection.ToClient: + this.keepClientConnectionAlive = keepAlive; + break; + } + + this.tryPropagateClosure(connection); + } + + private tryPropagateClosure(targetConnectionDescription: WhichConnection) { + let keepAlive: boolean; + let queuedMessages: WebSocketMessageData[]; + let targetConnection: WebSocket | null; + + switch (targetConnectionDescription) { + case WhichConnection.ToServer: + keepAlive = this.keepServerConnectionAlive; + queuedMessages = this.messageQueues.toServer; + targetConnection = this.serverConnection; + break; + case WhichConnection.ToClient: + keepAlive = this.keepClientConnectionAlive; + queuedMessages = this.messageQueues.toClient; + targetConnection = this.clientConnection; + break; + } + + // if there are queued messages then we’ll call tryPropagateClosure again after sending them + if (keepAlive || queuedMessages.length !== 0) { + return; + } + + let propagate; + + switch (this.state) { + case InterceptedConnectionState.ConnectingToServerButNoLongerConnectedToClient: + case InterceptedConnectionState.ConnectedToServerButNoLongerToClient: + propagate = targetConnectionDescription === WhichConnection.ToServer; + break; + case InterceptedConnectionState.ConnectedToClientAndFailedToConnectToServer: + case InterceptedConnectionState.ConnectedToClientButNoLongerToServer: + propagate = targetConnectionDescription === WhichConnection.ToClient; + break; + case InterceptedConnectionState.ConnectedToClientButNotYetServer: + case InterceptedConnectionState.ConnectedToClientAndServer: + propagate = false; // nothing to propagate + break; + case InterceptedConnectionState.Disconnected: + propagate = false; // already propagated + break; + } + + // TODO make use of the information about how the connection closed (i.e. code and data), instead of just a generic close. Not immediately important I think because I don’t think Ably / our tests care about whether clean or what the closing handshake said + if (propagate) { + this.log(`Propagating close of connection ${WhichConnection[targetConnectionDescription]}`); + targetConnection?.close(); + } + } + + private enqueueForSend(fromClient: boolean, data: WebSocketMessageData) { + const queue = fromClient ? this.messageQueues.toServer : this.messageQueues.toClient; + queue.push(data); + } + + private tryFlushSendQueue(fromClient: boolean) { + const queue = fromClient ? this.messageQueues.toServer : this.messageQueues.toClient; + + if (queue.length === 0) { + return; + } + + let whenCanSend: 'now' | 'later' | 'never'; + + switch (this.state) { + case InterceptedConnectionState.ConnectedToClientButNotYetServer: + whenCanSend = fromClient ? 'later' : 'now'; + break; + case InterceptedConnectionState.ConnectingToServerButNoLongerConnectedToClient: + whenCanSend = fromClient ? 'later' : 'never'; + break; + case InterceptedConnectionState.ConnectedToClientAndFailedToConnectToServer: + whenCanSend = fromClient ? 'never' : 'now'; + break; + case InterceptedConnectionState.ConnectedToClientAndServer: + whenCanSend = 'now'; + break; + case InterceptedConnectionState.ConnectedToClientButNoLongerToServer: + whenCanSend = fromClient ? 'never' : 'now'; + break; + case InterceptedConnectionState.ConnectedToServerButNoLongerToClient: + whenCanSend = fromClient ? 'now' : 'never'; + break; + case InterceptedConnectionState.Disconnected: + whenCanSend = 'never'; + break; + } + + let clearQueue = false; + + switch (whenCanSend) { + case 'now': + this.log(`Sending ${queue.length} injected messages to ${fromClient ? 'server' : 'client'}`); + const outgoingConnection = fromClient ? this.serverConnection : this.clientConnection; + for (const data of queue) { + this.send(data, outgoingConnection!); + } + clearQueue = true; + break; + case 'later': + this.log( + `There are ${queue.length} injected messages to send to ${ + fromClient ? 'server' : 'client' + }; will try sending later since connection is in state ${InterceptedConnectionState[this.state]}`, + ); + break; + case 'never': + this.log( + `There are ${queue.length} injected messages to send to ${ + fromClient ? 'server' : 'client' + }; cannot do this ever since connection is in state ${ + InterceptedConnectionState[this.state] + }. Dropping messages.`, + ); + clearQueue = true; + break; + } + + if (clearQueue) { + queue.length = 0; // clear the queue + this.tryPropagateClosure(fromClient ? WhichConnection.ToServer : WhichConnection.ToClient); + } + } + + private send(data: WebSocketMessageData, connection: WebSocket) { + let buffer: Buffer; + switch (data.type) { + case 'binary': + buffer = data.data; + break; + case 'text': + buffer = Buffer.from(data.data, 'utf-8'); + break; + } + + let binary: boolean; + switch (data.type) { + case 'binary': + binary = true; + break; + case 'text': + binary = false; + break; + } + + // TODO what does the callback that you can pass here do? + connection.send(buffer, { binary }); + } +} diff --git a/test/interception-proxy/InterceptedMessagesQueue.ts b/test/interception-proxy/InterceptedMessagesQueue.ts new file mode 100644 index 000000000..95a446f51 --- /dev/null +++ b/test/interception-proxy/InterceptedMessagesQueue.ts @@ -0,0 +1,86 @@ +import { InterceptedConnection } from './InterceptedConnection'; +import { ProxyMessage } from './Proxy'; +import { WebSocketMessageData } from './WebSocketMessageData'; + +export class InterceptedMessagePredicate { + constructor(readonly interceptedConnection: InterceptedConnection, readonly fromClient: boolean) {} + + get loggingDescription() { + return `(messages from ${this.fromClient ? 'client' : 'server'} for connection ID ${ + this.interceptedConnection.id + })`; + } + + get keyForMap() { + return `${this.interceptedConnection.id}-${this.fromClient}`; + } +} + +// A handle for locating a message within InterceptedMessageQueue. +export class InterceptedMessageHandle { + constructor(readonly predicate: InterceptedMessagePredicate, readonly messageId: string) {} +} + +export type MessageAction = { type: 'drop' } | { type: 'replace'; data: WebSocketMessageData }; + +export class InterceptedMessage { + action: MessageAction | null = null; + + constructor(readonly message: ProxyMessage) {} + + get id(): string { + return this.message.id; + } +} + +// Per-connection, per-direction message queue. We use it to queue intercepted messages whilst waiting for a control server message telling us what to do with the message at the head of the queue. +export class InterceptedMessagesQueue { + // Maps an InterceptedMessagePredicate’s `keyForMap` to a queue + private readonly queues = new Map(); + + private messagesFor(predicate: InterceptedMessagePredicate, createIfNeeded = false) { + const queue = this.queues.get(predicate.keyForMap); + if (queue !== undefined) { + return queue; + } else { + const result: InterceptedMessage[] = []; + + if (createIfNeeded) { + this.queues.set(predicate.keyForMap, result); + } + + return result; + } + } + + pop(predicate: InterceptedMessagePredicate) { + const messages = this.messagesFor(predicate); + + if (messages.length === 0) { + throw new Error('pop called for empty queue'); + } + + return messages.shift()!; + } + + hasMessages(predicate: InterceptedMessagePredicate) { + return this.messagesFor(predicate).length > 0; + } + + append(message: InterceptedMessage, predicate: InterceptedMessagePredicate) { + this.messagesFor(predicate, true).push(message); + } + + count(predicate: InterceptedMessagePredicate) { + return this.messagesFor(predicate).length; + } + + isHead(handle: InterceptedMessageHandle) { + const head = this.messagesFor(handle.predicate)[0]; + return head.id === handle.messageId; + } + + getHead(predicate: InterceptedMessagePredicate) { + return this.messagesFor(predicate)[0]; + } +} diff --git a/test/interception-proxy/InterceptionContext.ts b/test/interception-proxy/InterceptionContext.ts new file mode 100644 index 000000000..5720626a2 --- /dev/null +++ b/test/interception-proxy/InterceptionContext.ts @@ -0,0 +1,253 @@ +import { ChildProcessWithoutNullStreams, spawn } from 'child_process'; +import { randomUUID } from 'crypto'; +import { + JSONRPCRequest, + JSONRPCResponse, + StartInterceptionJSONRPCRequest, + TransformInterceptedMessageJSONRPCRequest, + TransformInterceptedMessageJSONRPCResponse, +} from './ControlRPC'; +import { ControlServer, ControlServerConnection } from './ControlServer'; +import { InterceptedConnection, WhichConnection } from './InterceptedConnection'; +import { + InterceptedMessagesQueue, + InterceptedMessageHandle, + InterceptedMessagePredicate, + InterceptedMessage, +} from './InterceptedMessagesQueue'; +import { ProxyMessage } from './Proxy'; +import { ProxyServer } from './ProxyServer'; +import { webSocketMessageDataLoggingDescription } from './WebSocketMessageData'; + +export class InterceptionContext { + controlServer: ControlServer | null = null; + proxyServer: ProxyServer | null = null; + private interceptedMessagesQueue = new InterceptedMessagesQueue(); + // TODO use a Map + private jsonRPCRequestIDsToHandles: Partial> = {}; + private onMitmproxyReady: (() => void) | null = null; + + onControlWebSocketMessage(data: string, controlServerConnection: ControlServerConnection) { + const dto = JSON.parse(data); + + if ('error' in dto) { + throw new Error('Not expecting an error in JSON-RPC response'); + } else if ('result' in dto) { + const response = JSONRPCResponse.fromDTO(dto); + this.handleJSONRPCResponse(response); + } else if ('method' in dto) { + if ('id' in dto) { + const request = StartInterceptionJSONRPCRequest.fromDTO(dto); + this.handleJSONRPCRequest(request, controlServerConnection); + } else if (dto.method === 'mitmproxyReady') { + // notification telling us that mitmproxy is running + this.onMitmproxyReady?.(); + } + } else { + throw new Error(`Got unrecognised control API message: ${dto}`); + } + } + + private handleJSONRPCRequest(request: JSONRPCRequest, controlServerConnection: ControlServerConnection) { + try { + if (request instanceof StartInterceptionJSONRPCRequest) { + this.controlServer!.setActiveConnection(controlServerConnection); + + console.log('starting mitmdump, mode', request.mode); + + let mitmdumpBinary: string; + let mitmdumpMode: string | null; + + // TODO this is currently written on the assumption that darwin means running locally and linux means running in GitHub action; sort out so that you can run (locally or on CI) on (macOS or Linux) + switch (process.platform) { + // currently this actually means " + case 'darwin': + mitmdumpBinary = 'mitmdump'; + switch (request.mode.mode) { + case 'local': + mitmdumpMode = `local:${request.mode.pid}`; + break; + case 'proxy': + mitmdumpMode = null; + break; + } + break; + case 'linux': + // Currently we expect that you set up the iptables rules externally + mitmdumpBinary = '/opt/pipx_bin/mitmdump'; + switch (request.mode.mode) { + case 'local': + mitmdumpMode = 'transparent'; + break; + case 'proxy': + mitmdumpMode = null; + break; + } + break; + default: + throw new Error(`Don’t know how to set up mitmdump interception for platform ${process.platform}`); + } + + // sounds like we don’t need to explicitly stop this when we stop the current process: https://nodejs.org/api/child_process.html#optionsdetached + const mitmdump = spawn(mitmdumpBinary, [ + '--set', + 'stream_large_bodies=1', + ...(mitmdumpMode === null ? [] : ['--mode', mitmdumpMode]), + '-s', + 'test/mitmproxy_addon_2.py', + ]); + + const formatMitmdumpOutput = (source: string, data: Buffer) => { + const text = data.toString('utf-8'); + const lines = text.split('\n'); + return lines.map((line) => `mitmdump ${source}: ${line}`).join('\n'); + }; + + mitmdump.stdout.on('data', (data) => { + console.log(formatMitmdumpOutput('stdout', data)); + }); + + mitmdump.stderr.on('data', (data) => { + console.log(formatMitmdumpOutput('stderr', data)); + }); + + console.log(`Waiting for mitmdump to start`); + + this.onMitmproxyReady = () => { + this.onMitmproxyReady = null; + console.log(`mitmdump has started`); + const response = new JSONRPCResponse(request.id); + const responseDTO = response.createDTO(); + this.controlServer!.sendToActiveConnection(JSON.stringify(responseDTO)); + }; + } else { + throw new Error(`Got unknown control API request: ${request}`); + } + } catch (error) { + console.log(`Error handling JSON-RPC request ${request.id}:`, error); + const response = new JSONRPCResponse(request.id, `Error handling request: ${error}`); + const responseDTO = response.createDTO(); + this.controlServer!.send(JSON.stringify(responseDTO), controlServerConnection); + } + } + + private handleJSONRPCResponse(response: JSONRPCResponse) { + if (response instanceof TransformInterceptedMessageJSONRPCResponse) { + this.handleTransformInterceptedMessageResponse(response); + } else { + throw new Error(`Got unknown control API response: ${response}`); + } + } + + private handleTransformInterceptedMessageResponse(response: TransformInterceptedMessageJSONRPCResponse) { + const handle = this.jsonRPCRequestIDsToHandles[response.id]; + + if (handle === undefined) { + throw new Error(`Unrecognised control response ID: ${response.id}`); + } + + delete this.jsonRPCRequestIDsToHandles[response.id]; + + if (!this.interceptedMessagesQueue.isHead(handle)) { + throw new Error('Got response for an intercepted message that’s not at head of queue; shouldn’t be possible'); + } + + const interceptedMessage = this.interceptedMessagesQueue.getHead(handle.predicate); + + if (interceptedMessage.action !== null) { + throw new Error('Response asked us to set the action for a message that already has action set'); + } + + interceptedMessage.action = response.action; + + this.dequeueInterceptedMessage(handle.predicate); + } + + private dequeueInterceptedMessage(predicate: InterceptedMessagePredicate) { + console.log('Dequeueing intercepted message for predicate', predicate.loggingDescription); + + const message = this.interceptedMessagesQueue.pop(predicate); + + if (message.action === null) { + throw new Error(`Attempted to dequeue message that doesn’t have an action: ${message}`); + } + + switch (message.action.type) { + case 'replace': + console.log( + `Injecting replacement message for message ${message.id}, with type ${ + message.action.data.type + } and data (${webSocketMessageDataLoggingDescription(message.action.data)})`, + ); + + predicate.interceptedConnection.inject(predicate.fromClient, message.action.data); + break; + case 'drop': + console.log(`Dropping message ${message}`); + break; + } + + if (this.interceptedMessagesQueue.hasMessages(predicate)) { + this.broadcastNextMessage(predicate); + } else { + // We’re not waiting to forward any more messages, so tell the proxy that it can propagate any pending connection close and propagate any future connection close + predicate.interceptedConnection.setKeepConnectionAlive( + false, + predicate.fromClient ? WhichConnection.ToServer : WhichConnection.ToClient, + ); + } + } + + private broadcastJSONRPCRequest(request: JSONRPCRequest) { + const data = JSON.stringify(request.createDTO()); + + console.log(`Broadcasting request JSON ${data}`); + this.controlServer?.sendToActiveConnection(data); + } + + private broadcastNextMessage(predicate: InterceptedMessagePredicate) { + const interceptedMessage = this.interceptedMessagesQueue.getHead(predicate); + + const jsonRPCRequestID = randomUUID(); + const handle = new InterceptedMessageHandle(predicate, interceptedMessage.id); + this.jsonRPCRequestIDsToHandles[jsonRPCRequestID] = handle; + + // Broadcast to everyone connected to the control server. + // TODO I think would be better for there to be one client who sends an explicit message to become the active client, or to only allow a single connection at a time; not important now though + + const jsonRPCRequest = new TransformInterceptedMessageJSONRPCRequest( + jsonRPCRequestID, + interceptedMessage.id, + predicate.interceptedConnection.id, + interceptedMessage.message.data, + interceptedMessage.message.fromClient, + ); + + this.broadcastJSONRPCRequest(jsonRPCRequest); + } + + enqueueMessage(message: ProxyMessage, interceptedConnection: InterceptedConnection) { + console.log(`enqueueMessage ${message.id}`); + + // Tell the proxy to not propagate a connection close until we’ve had a chance to inject this message + interceptedConnection.setKeepConnectionAlive( + true, + message.fromClient ? WhichConnection.ToServer : WhichConnection.ToClient, + ); + + const predicate = new InterceptedMessagePredicate(interceptedConnection, message.fromClient); + + const interceptedMessage = new InterceptedMessage(message); + this.interceptedMessagesQueue.append(interceptedMessage, predicate); + + if (this.interceptedMessagesQueue.count(predicate) === 1) { + this.broadcastNextMessage(predicate); + } else { + console.log( + `Enqueued message ${interceptedMessage.id} since there are ${ + this.interceptedMessagesQueue.count(predicate) - 1 + } pending messages`, + ); + } + } +} diff --git a/test/interception-proxy/Proxy.ts b/test/interception-proxy/Proxy.ts new file mode 100644 index 000000000..431ada1cd --- /dev/null +++ b/test/interception-proxy/Proxy.ts @@ -0,0 +1,17 @@ +// TODO implement the proxy! These types are placeholders + +import { randomUUID } from 'crypto'; +import { WebSocketMessageData, webSocketMessageDataLoggingDescription } from './WebSocketMessageData'; + +export class ProxyMessage { + // unique identifier that we generate for this message + id = randomUUID(); + + constructor(readonly data: WebSocketMessageData, readonly fromClient: boolean) {} + + get loggingDescription(): string { + const sourceDescription = `from ${this.fromClient ? 'client' : 'server'}`; + + return `${sourceDescription} (id: ${this.id}, ${webSocketMessageDataLoggingDescription(this.data)})`; + } +} diff --git a/test/interception-proxy/ProxyServer.ts b/test/interception-proxy/ProxyServer.ts new file mode 100644 index 000000000..777e8e65a --- /dev/null +++ b/test/interception-proxy/ProxyServer.ts @@ -0,0 +1,55 @@ +import { randomUUID } from 'crypto'; +import { WebSocket, WebSocketServer } from 'ws'; +import { InterceptionContext } from './InterceptionContext'; +import { ProxyMessage } from './Proxy'; +import { WebSocketMessageData } from './WebSocketMessageData'; +import { stateMachineDefinition, InterceptedConnectionState, InterceptedConnectionEvent } from './StateMachine'; +import { InterceptedConnection } from './InterceptedConnection'; + +const port = 8002; + +// TODO make sure this is as accurate as possible (in terms of frames) — forward PING and PONG without emitting our own, etc +// TODO more generally there are definitely going to be nuances that I’ve missed that mean this proxy introduces a not 100% faithful reproduction of the comms, but we can iterate +// TODO Understand the server API better +// TODO note that here we always accept the connection from the client, which, again, isn’t necessarily faithful + +export class ProxyServer { + private wss = new WebSocketServer({ port }); + // Keyed by connections’ `id` + private interceptedConnections = new Map(); + + constructor(private readonly interceptionContext: InterceptionContext) { + interceptionContext.proxyServer = this; + } + + start() { + this.wss.on('connection', (clientConnection, req) => { + const host = req.headers['ably-test-host'] as string | undefined; + const proto = req.headers['ably-test-proto'] as string | undefined; + + if (host === undefined) { + console.error('Connection to proxy server without Ably-Test-Host header; closing'); + clientConnection.close(); + return; + } + + if (proto === undefined) { + console.error('Connection to proxy server without Ably-Test-Proto header; closing'); + clientConnection.close(); + return; + } + + const interceptedConnection = new InterceptedConnection( + this.interceptionContext, + host, + proto, + req.url!, + clientConnection, + ); + // TODO do we actually need to keep hold of it or will it keep itself around since it’s a listener of a WebSocket? + this.interceptedConnections.set(interceptedConnection.id, interceptedConnection); + }); + + console.log(`Started proxy server on port ${port}`); + } +} diff --git a/test/interception-proxy/StateMachine.ts b/test/interception-proxy/StateMachine.ts new file mode 100644 index 000000000..7361a2791 --- /dev/null +++ b/test/interception-proxy/StateMachine.ts @@ -0,0 +1,185 @@ +export enum InterceptedConnectionEvent { + /** + * The proxy’s WebSocket connection to the client emitted a `close` event. + */ + ClientClose, + + /** + * The proxy’s WebSocket connection to the server emitted an `open` event. + */ + ServerOpen, + + /** + * The proxy’s WebSocket connection to the server emitted a `close` event. + */ + ServerClose, +} + +export enum InterceptedConnectionState { + /** + * Initial state. + * + * Transitions: + * + * Event: ClientClose + * New state: ConnectingToServerButNoLongerConnectedToClient + * + * Event: ServerOpen + * New state: ConnectedToClientAndServer + * + * Event: ServerClose + * New state: ConnectedToClientAndFailedToConnectToServer + */ + ConnectedToClientButNotYetServer, + + /** + * The client closed the connection whilst we were connecting to the server. + * + * Transitions: + * + * Event: ServerOpen + * New state: ConnectedToServerButNoLongerToClient + * + * Event: ServerClose + * New state: Disconnected + */ + ConnectingToServerButNoLongerConnectedToClient, + + /** + * We failed to establish a connection to the server. + * + * Transitions: + * + * Event: ClientClose + * New state: Disconnected + */ + ConnectedToClientAndFailedToConnectToServer, + + /** + * In this state, we can send messages in both directions. + * + * Transitions: + * + * Event: ClientClose + * New state: ConnectedToServerButNoLongerToClient + * + * Event: ServerClose + * New state: ConnectedToClientButNoLongerToServer + */ + ConnectedToClientAndServer, + + /** + * The server closed the connection. + * + * Transitions: + * + * Event: ClientClose + * New state: Disconnected + */ + ConnectedToClientButNoLongerToServer, + + /** + * The client closed the connection. + * + * Transitions: + * + * Event: ServerClose + * New state: Disconnected + */ + ConnectedToServerButNoLongerToClient, + + /** + * Final state. + */ + Disconnected, +} + +export interface InterceptedConnectionStateMachineTransition { + newState: InterceptedConnectionState; +} + +interface InterceptedConnectionStateMachineRule { + fromState: InterceptedConnectionState; + event: InterceptedConnectionEvent; + transition: InterceptedConnectionStateMachineTransition; +} + +class InterceptedConnectionStateMachineDefinition { + private rules: InterceptedConnectionStateMachineRule[] = []; + + constructor() { + this.addRule( + InterceptedConnectionState.ConnectedToClientButNotYetServer, + InterceptedConnectionEvent.ClientClose, + InterceptedConnectionState.ConnectingToServerButNoLongerConnectedToClient, + ); + this.addRule( + InterceptedConnectionState.ConnectedToClientButNotYetServer, + InterceptedConnectionEvent.ServerOpen, + InterceptedConnectionState.ConnectedToClientAndServer, + ); + this.addRule( + InterceptedConnectionState.ConnectedToClientButNotYetServer, + InterceptedConnectionEvent.ServerClose, + InterceptedConnectionState.ConnectedToClientAndFailedToConnectToServer, + ); + this.addRule( + InterceptedConnectionState.ConnectingToServerButNoLongerConnectedToClient, + InterceptedConnectionEvent.ServerOpen, + InterceptedConnectionState.ConnectedToServerButNoLongerToClient, + ); + this.addRule( + InterceptedConnectionState.ConnectingToServerButNoLongerConnectedToClient, + InterceptedConnectionEvent.ServerClose, + InterceptedConnectionState.Disconnected, + ); + this.addRule( + InterceptedConnectionState.ConnectedToClientAndFailedToConnectToServer, + InterceptedConnectionEvent.ClientClose, + InterceptedConnectionState.Disconnected, + ); + this.addRule( + InterceptedConnectionState.ConnectedToClientAndServer, + InterceptedConnectionEvent.ClientClose, + InterceptedConnectionState.ConnectedToServerButNoLongerToClient, + ); + this.addRule( + InterceptedConnectionState.ConnectedToClientAndServer, + InterceptedConnectionEvent.ServerClose, + InterceptedConnectionState.ConnectedToClientButNoLongerToServer, + ); + this.addRule( + InterceptedConnectionState.ConnectedToClientButNoLongerToServer, + InterceptedConnectionEvent.ClientClose, + InterceptedConnectionState.Disconnected, + ); + this.addRule( + InterceptedConnectionState.ConnectedToServerButNoLongerToClient, + InterceptedConnectionEvent.ServerClose, + InterceptedConnectionState.Disconnected, + ); + } + + private addRule( + fromState: InterceptedConnectionState, + event: InterceptedConnectionEvent, + newState: InterceptedConnectionState, + ) { + this.rules.push({ fromState, event, transition: { newState } }); + } + + fetchTransition( + fromState: InterceptedConnectionState, + event: InterceptedConnectionEvent, + ): InterceptedConnectionStateMachineTransition | null { + for (const rule of this.rules) { + if (rule.fromState == fromState && rule.event == event) { + return rule.transition; + } + } + + return null; + } +} + +export const stateMachineDefinition = new InterceptedConnectionStateMachineDefinition(); diff --git a/test/interception-proxy/WebSocketMessageData.ts b/test/interception-proxy/WebSocketMessageData.ts new file mode 100644 index 000000000..2a5a63f81 --- /dev/null +++ b/test/interception-proxy/WebSocketMessageData.ts @@ -0,0 +1,10 @@ +export type WebSocketMessageData = { type: 'binary'; data: Buffer } | { type: 'text'; data: string }; + +export function webSocketMessageDataLoggingDescription(data: WebSocketMessageData) { + switch (data.type) { + case 'binary': + return `binary data: ${data.data.toString('base64')}`; + case 'text': + return `text data: ${data.data}`; + } +} diff --git a/test/interception-proxy/server.ts b/test/interception-proxy/server.ts new file mode 100644 index 000000000..0050ede2f --- /dev/null +++ b/test/interception-proxy/server.ts @@ -0,0 +1,14 @@ +import { ControlServer } from './ControlServer'; +import { InterceptionContext } from './InterceptionContext'; +import { ProxyServer } from './ProxyServer'; + +// TODO cleanup as control server connections go away +// TODO cleanup as intercepted connections go away + +const interceptionContext = new InterceptionContext(); + +const controlServer = new ControlServer(interceptionContext); +controlServer.start(); + +const proxyServer = new ProxyServer(interceptionContext); +proxyServer.start(); diff --git a/test/mitm-server-thoughts.md b/test/mitm-server-thoughts.md new file mode 100644 index 000000000..01a28954f --- /dev/null +++ b/test/mitm-server-thoughts.md @@ -0,0 +1,303 @@ +# Thoughts on a man-in-the-middle-server for replacing some private API usage + +**Note:** Most of the contents of this note are now better explained in [this RFC](https://ably.atlassian.net/wiki/x/IYDItQ); keeping this note around for now because there are some details I didn’t include there for brevity. + +The context being that we eventually intend to use the ably-js test suite for the unified test suite. + +See [`private-api-usage.md`](./private-api-usage.md) for the private APIs we’re referring to here. + +## Requirements + +TODO + +Key realtime protocol-related methods used by tests (will look at REST later): + +### Outgoing + +- replacing `channel.sendPresence` + - check presence message’s client ID +- replacing `transport.send` + - check the encoded data in a protocol message + - to look for an outgoing `AUTH` and check its properties + - to check the `clientId` on the outgoing message + - to listen for `MESSAGE`, check its properties, **and then continue the test** +- replacing `channel.sendMessage` + - with an empty implementation, to "sabotage the reattach attempt" + - with an implementation that fails the test if called + - to check that only a `DETACH` is being sent, **and to continue the test once second `DETACH` sent** +- replacing `connectionManager.send` + - to do `msg.setFlag('ATTACH_RESUME')` on the outgoing message +- accesses `var transport = realtime.connection.connectionManager.activeProtocol.transport.uri` or `.recvRequest.recvUri` to check the `v=3` query parameter +- checks `realtime.connection.connectionManager.httpHosts[0];` to check it’s using correct default host, also checks length of that array +- replacing `realtime.conneciton.connectionManager.tryATransport` + - looking at the host that’s being used to connect, although not sure exactly to what end + - to "simulate the internet being failed" +- replaces `realtime.connection.connectionManager.connectImpl` + - to check `transportParams.format` + +### Incoming + +- calling `channel.processMessage` + - inject a protocol message +- calling `onProtocolMessage` (on a specific transport) + + - inject an `ERROR` + - inject a `DISCONNECTED` + - etc. inject protocol message (won't keep repeating) + - accesses `connectionManager.connectionDetails`, modifies its `maxMessageSize`, then re-injects it via a `CONNECTED` passed to `onProtocolMessage()` (the point here being that maybe we can get this `connectionManager.connectionDetails` some other way, or just modify the original `CONNECTED`?) + +- replacing `channel.processMessage` + - drop an `ATTACHED` + - spies on this to, after processing a received `SYNC`, inject a `PRESENCE` +- replacing `onProtocolMessage` (on a specific transport) + - drop `ACK` + - change protocol message’s `connectionDetails.maxIdleInterval` + - with no-op so that last activity timer doesn’t get bumped + - to look for `CONNECTED`, make an assertion about it, and then set its `connectionKey` and `clientId` to fixed values (so we can assert they’re subsequently used to populate some user-facing properties) +- replacing `connectionManager.onChannelMessage` + - listen for `MESSAGE` and then run some code in response + +## API thoughts + +Ideal would be a 2-way communication between test suite and proxy server, that for each incoming message asks what you want to do with it (drop, or maintain with edits), instead of having to have a convoluted declarative API for pre-configuring what to do with messages. That will be the easiest drop-in for the existing private API usage. + +## Implementation thoughts + +Options: + +1. a WebSocket server (application layer) + + - Ably clients created by the tests would be configured with this server’s URL as their `realtimeHost` + - this would complicate the use of TLS; either the server would only operate over HTTPS, with the test client being configured to do the same, or we’d need to use self-signed certificates, which may be easy or hard to use depending on the client library under test + - this would complicate the testing of things like `environment` client option or fallback hosts + +2. a WebSocket proxy server (application layer) + + - e.g. a SOCKS5 proxy + - the environment in which client library is running (e.g. browser, or JVM, or platform’s OS) would be (per language in 4.1 of RFC 6455) configured to use a proxy when using WebSocket to connect to `sandbox.ably.com` + - client libraries’ WebSocket implementations would pick up this proxy configuration and ask the proxy to open a TCP connection to the library’s configured host (see _Proxy Usage_ in 4.1) + - this would mean that we could let the client use its default URLs, and things like `environment`, default behaviour of fallback hosts etc would be easy to test + - TLS: if we wanted to be able to MITM then we’d still need to work with self-signed certificates (TODO understand better) + - main issue I foresee here is that we don’t specify that our libraries need to work correctly behind a WebSocket proxy, and have reason to believe that some don’t (e.g. https://github.com/ably/ably-java/issues/120, although it says that the ably-js WebSocket library supports SOCKS, and https://github.com/ably/ably-dotnet/issues/159). I know off the top of my head that the library we use for WebSocket in ably-cocoa does (claim to) work with proxies, and presumably it’d work fine in a browser in ably-js + +- not sure whether Node has support for proxies (other than specifically configuring your HTTP / WS client) +- the other thing is that it would be nice to not need to have to make any global settings changes (e.g. OS proxy settings) + +3. some lower-level option + + Some other option that’s less visible to the Ably client library. For example, see the [modes of operation offered by mitmproxy](https://docs.mitmproxy.org/stable/concepts-modes/). + + One question in that case is whether it would be easy to use an option like this for all of the runtime environments in which we want to run the unified test suite (e.g. iOS Simulator, Android emulator, …?) + +## What about using mitmproxy? + +It's an interesting idea — it gives us access to a bunch of alternatives for how we'd implement the proxy, e.g. 1. above I think can be done with mitmproxy’s reverse proxy mode, and 2. with its regular mode. + +And then (TODO check) we'd have a unified API (i.e. abstraction) for doing the MITM-ing, regardless of the implementation details. Maybe, once I’ve got a better idea of the requirements, take a look at its API. (One problem is that I don’t know Python.) + +mitmproxy has good platform compatibility (Mac, Windows, Linux, and has instructions for using with Android Emulator, iOS Simulator). And has good instructions for how to set up self-signed certificates. + +It also means that I can use the proxy approach for now, which requires the least changes to the test suite, and then switch later on if / when necessary. + +It’s a mature piece of software, too, currently on something like version 12, seems to be actively developed. + +Also, someone has already made [a WebSocket-based tool](https://github.com/hacker1024/mitmproxy_remote_interceptions) that puts an external API on mitmproxy. Not sure if works with WebSocket. + +## Playwright + +Just noticed that this offers an API for e.g. intercepting WebSocket: https://playwright.dev/docs/network. Not very useful cross-platform though. + +## What about other transports? + +In the above, I’ve only considered the WebSocket transport. Haven’t taken into account what we’d do for ably-js’s Comet transports. But having a unified API between the test suite and the mock server would help to build a solution that works for all transports. + +## What we’ve used in the past + +TODO + +## Using mitmproxy + +Going to read the documentation + +I’ve been using the Wireguard mode, which seems very easy to use (installed the macOS client from App Store). Oh, no, that doesn't seem to work, you need to run on a separate machine: + +> With the current implementation, it is not possible to proxy all traffic of the host that mitmproxy itself is running on, since this would result in outgoing WireGuard packets being sent over the WireGuard tunnel themselves. + +There's something coming called local redirect mode ([here](https://github.com/mitmproxy/mitmproxy/discussions/5795) referred to as `osproxy` mode), not sure how far along. Ah, it's apparently out on Mac now! [Here](https://mitmproxy.org/posts/local-redirect/macos/) is the blog post. You can target a process by PID or by name. + +For Node to work with mitmproxy certs: `NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem npm run test:node` + +I think I need to learn a bit of Python now? + +## Writing mitmproxy addon + +- install mitmproxy using pipx so that we can install websockets package +- `pipx inject mitmproxy websockets` +- run mitmproxy with `mitmdump --set stream_large_bodies=1 --mode local:node -s test/interception-proxy/src/mitmproxy_addon.py` +- run Node tests with `NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem npm run test:node` +- to connect to the control API for now, use `websocat ws://localhost:8001` + +TODO (something to do with injecting a message) + +TODO need to figure out how it’ll work when running across multiple test cases — how to distinguish between different connections (e.g. ignoring ones from accidental lingering clients) + +## mitmproxy limitations + +- sounds like [you can’t intercept PING / PONG frames](https://github.com/mitmproxy/mitmproxy/blob/8cf0cba1cb6e87f1cf48789e90526b75caa5436d/docs/src/content/concepts-protocols.md?plain=1#L56) — this might be an issue. TODO double check whether our tests _currently_ make use of ping / pong (I don't think they do) + +### mitmproxy and Comet + +Evgenii said that we perhaps don't need to worry about Comet for now (i.e. if this doesn't work out then I’ll try running the test suite with just websockets) + +see https://docs.mitmproxy.org/stable/overview-features/#streaming + +note that you can't manipulate streamed responses; is that an issue? in web i don't think we stream any more; what about in Node? + +## Replacing a few usages of private API in tests + +- `test/realtime/connection.test.js` - spies on `transport.send` to listen for `MESSAGE`, check its properties, and then continue the test + +## JSON-RPC notifications sent by our little mitmproxy addon when running + +It connects to the control API described below and sends a notification, method `mitmproxyReady`, no params. + +## JSON-RPC methods implemented in TypeScript proxy server + +Implemented via text WebSocket messages exchanged between proxy and test suite. The WebSocket server is run by the proxy at `http://localhost:8001`. + +### `startInterception` + +The test suite calls this method on the proxy at the start of the test suite. It: + +- results in an error if there is already an active test suite +- marks the WebSocket connection as belonging the active test suite (there is currently no way to undo this; to set a new active test suite you must restart the proxy) +- sets up a proxy for intercepting traffic (this may require cooperation from the tests; see `mode` below) + +Request params is one of the following objects: + +- `{ 'mode': 'local', 'pid': number }`: transparently intercept traffic from the process with the given PID (note that this is currently only used on macOS; in Linux we do interception by UID, see test-node.yml workflow for now) +- `{ 'mode': 'proxy' }`: run an HTTP proxy which listens on port 8080 + +Response result is an empty object. + +### `transformInterceptedMessage` + +The proxy calls this method on the active test suite each time a WebSocket message is intercepted. The test suite must return a result telling the proxy what to do with the message. Subsequent messages intercepted on that WebSocket connection, in the direction described by `fromClient`, will be queued pending the test suite’s reply. + +Request params is an object with the following properties: + +- `id`: a unique identifier for this message +- `connectionID`: a unique identifer for the intercepted WebSocket connection that this message belongs to +- `type`: + - `binary` if the intercepted message is of Binary type + - `text` if it is of Text type +- `data`: the data of the intercepted WebSocket message + - if `type` is `binary`, then this value is Base64-encoded +- `fromClient`: describes the direction in which the intercepted message was sent + +Response result is one of the following objects: + +- `{ "action": "drop" }`: this will cause the proxy to drop the intercepted message +- `{ "action": "replace", "type": "binary", "data": "(…)" }`: this will cause the proxy to replace the intercepted message with a message of Binary type whose data is the result of Base64-decoding the `data` property +- `{ "action": "replace", "type": "text", "data": "(…)" }`: this will cause the proxy to replace the intercepted message with a message of Text type whose data is the value of the `data` property + +### Writing a proxy that sits behind mitmproxy in order to control WebSocket connection lifetime + +The idea is that we’ll build a proxy (i.e. something that mitmproxy knows how to tunnel WebSocket requests through), which will be the thing that actually manages the lifetime of the WebSocket connection to the client. And then, if it turns out that for some other reason we can’t use mitmproxy, we can just give up on interception and instead add a mode for this server to work as a reverse proxy. + +And, as a bonus, I can write this server in TypeScript, which means not having to battle with Python. + +OK, I’ve pulled across the code, now I need to write a proxy and figure out how to make mitmproxy target it. + +So, how do we get mitmproxy to intercept everything using `local` mode, but then send it upstream to another proxy? Let’s play around. + +1. start an mitmproxy that acts as a normal HTTP proxy (this mimics the proxy we’ll eventually implement ourselves): `mitmproxy --listen-port 8081` + +1. start an mitmproxy in `local` mode that intercepts `curl` traffic: `mitmproxy --mode local:curl`. Now the question is how do we make this one forward to our upstream proxy (i.e. http://localhost:8081)? The only functionality I can see in mitmproxy for forwarding to an upstream proxy is the [upstream proxy mode](https://docs.mitmproxy.org/stable/concepts-modes/#upstream-proxy), but that’s a mode; is it mutually exclusive from `local` mode? Let’s try `mitmproxy --mode local:curl --mode upstream:http://localhost:8081`. + +OK, [maintainer replied to my question](https://github.com/mitmproxy/mitmproxy/discussions/6786#discussioncomment-9044517) saying that’s not possible: + +> This commands starts two proxy modes: First, proxy all local cURL traffic. Second, spawn an HTTP proxy on port 8080 that will forward all traffic to another HTTP proxy upstream at `localhost:8081`. Proxy modes are not "interconnected". There currently is no (easy) way to use an upstream proxy with local redirect mode. + +So, we can’t use this TS server as a proxy server. What about if we write it as an application server? Either configuring the test suite to use it directly, or configuring mitmproxy to intercept and rewrite the destination server. + +How would we do the latter? Can we do [this example](https://docs.mitmproxy.org/stable/addons-examples/#http-redirect-requests) ("redirect HTTP requests to another server"), but somehow for WebSocket? + +Let's run an application server inside the server I created, then take it from there. + +OK, have got mitmproxy set up to intercept in local mode and then change the upstream server to my local app server. It seems to be doing that successfully (tested in websocat). Run with: + +`mitmdump --set stream_large_bodies=1 --mode local:websocat -s test/mitmproxy_addon_2.py` (or `local:node` for test suite) + +Now we need to set it to grab the original host so that it can open a connection to it. Let’s set a header? So I think that in normal proxy usage things are different — I think the proxy uses the `Host` header (which the agent that forwarded it the request doesn’t modify) to know where to forward to. But presumably mitmproxy is modifying that header. + +But how does a proxy know what scheme to use? i.e. whether to open with HTTPS or not. Here’s ChatGPT: + +> Yes, a proxy can determine whether to use HTTPS (HTTP over TLS) to communicate with the upstream server based on several factors: +> +> 1. **Protocol Detection**: The proxy can examine the initial request from the client to determine if it's an HTTPS request. If the request uses the HTTPS protocol (`https://`), the proxy can infer that it needs to establish an HTTPS connection with the upstream server. +> +> 2. **Explicit Configuration**: The proxy can be configured explicitly to use HTTPS for certain URLs or domains. This configuration tells the proxy to always use HTTPS when forwarding requests to these destinations. +> +> 3. **Forwarded Protocol Header**: Some proxies use a "Forwarded" or similar header to indicate the original protocol (HTTP or HTTPS) used by the client. This header can be used by the proxy to determine whether to use HTTPS when communicating with the upstream server. +> +> 4. **Environment Variables**: In some setups, environment variables or other configuration mechanisms can be used to indicate whether HTTPS should be used. The proxy can check these variables to make the decision. +> +> The exact method used depends on the proxy software and its configuration. However, proxies typically have mechanisms in place to determine whether to use HTTPS when communicating with upstream servers. + +The `Forwarded` header isn’t defined in HTTP spec, but rather in another RFC. See [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded). + +So let’s have: + +- `Ably-Test-Host`: like `Host` +- `Ably-Test-Proto`: either `ws` or `wss` + +## Notes from Thu 4 Apr that I didn’t previously incorporate here + +### About managing WebSocket connection lifetime + +hmm, all the test things are saying + +``` + 1) realtime/auth + auth_token_expires_with_web_socket_binary_transport: + + Verify correct disconnect statusCode + + expected - actual + + -400 + +401 +``` + +(why is the test suite sometimes just hanging?) + +OK, I think there's an actual issue here. What's happening is that the client is receiving the CONNECTED protocol message, then we intercept the DISCONNECTED but the server closes the connection before we have a chance to process the DISCONNECTED, so what ends up happening is that the client sees the close before the disconnected and we end up with the wrong status code. + +so for this to work we'd want to delay: + +- the delivery of the `CLOSE` frame from the server to the client +- "passing on" the server’s closing of the TCP connection (my TCP knowledge is shaky here so I don't know what that means exactly) + +until after we've delivered the DISCONNECTED + +is this possible in mitmproxy? would it have been possible in that kotlin thing? + +the problem is that mitmproxy doesn't work at a frame level AFAIK + +what we want to do is when mitmproxy finds out a websocket connection has been closed by server, to keep _its_ websocket connection with the client open until it's delivered all the stuff from the server, then pass along the `CLOSE` frame and close the connection + +is there a proper way to do with with mitmproxy? is there a hack way to do it? (will ask) + +this is how mitmproxy handles a connection closure: https://github.com/mitmproxy/mitmproxy/blob/8cf0cba1cb6e87f1cf48789e90526b75caa5436d/mitmproxy/proxy/layers/websocket.py#L202-L215 — not sure exactly what's happening here but it seems to be immediately doing _something_ with the close event...? + +`yield ws.send2(ws_event)` and `yield commands.CloseConnection(ws.conn)` (don’t know what the difference is) + +OK, I've [asked about this in mitmproxy discussions](https://github.com/mitmproxy/mitmproxy/discussions/6784) + +### About Comet + +see https://docs.mitmproxy.org/stable/overview-features/#streaming + +note that you can't manipulate streamed responses; is that an issue? in web i don't think we stream any more; what about in Node? + +start 09:48 with `--set stream_large_bodies=1` diff --git a/test/mitmproxy_addon_2.py b/test/mitmproxy_addon_2.py new file mode 100644 index 000000000..e5c0ecf60 --- /dev/null +++ b/test/mitmproxy_addon_2.py @@ -0,0 +1,54 @@ +import mitmproxy +import logging +import asyncio +import websockets +import json + +async def send_ready_notification(): + uri = "ws://localhost:8001" + logging.info(f'sending mitmproxyReady JSON-RPC notification to {uri}') + async with websockets.connect(uri) as websocket: + notification_dto = { "jsonrpc": "2.0", "method": "mitmproxyReady" } + data = json.dumps(notification_dto) + await websocket.send(data) + +class MitmproxyAddon2: + def running(self): + # tell the control API that we’re ready to receive traffic + asyncio.get_running_loop().create_task(send_ready_notification()) + + # Copied from https://docs.mitmproxy.org/stable/addons-examples/#http-redirect-requests + def request(self, flow: mitmproxy.http.HTTPFlow) -> None: + # To make sure that when running in local redirect mode (and hence intercepting all traffic from the test process) we don’t mess with traffic from the test process to the control API + # TODO see extended comments re this in test-node.yml and why it hasn’t yet been an issue in practice on macOS + if not flow.request.port in [80, 443]: + return + + # (b'Connection', b'Upgrade'), (b'Upgrade', b'websocket') + intercept = MitmproxyAddon2.is_websocket_upgrade_request(flow.request) + logging.info(f'MitmproxyAddon2 {"intercepting" if intercept else "not intercepting"} `request` {flow.request.pretty_host}, scheme {flow.request.scheme}, headers {flow.request.headers}') + # pretty_host takes the "Host" header of the request into account, + # which is useful in transparent mode where we usually only have the IP + # otherwise. + # if flow.request.pretty_host == "example.org": + # I tried doing it in websocket_start instead but that didn’t work + if MitmproxyAddon2.is_websocket_upgrade_request(flow.request): + original_host = flow.request.pretty_host + original_scheme = flow.request.scheme + + flow.request.host = "localhost" + flow.request.port = 8002 + flow.request.scheme = 'http' + # TODO understand how port fits into this + flow.request.headers['Ably-Test-Host'] = original_host + match original_scheme: + case 'http': + flow.request.headers['Ably-Test-Proto'] = 'ws' + case 'https': + flow.request.headers['Ably-Test-Proto'] = 'wss' + + def is_websocket_upgrade_request(request: mitmproxy.http.Request): + # TODO this request handling is a bit fragile, the special case for `split` is just to handle the fact that Firefox sends 'Connection: keep-alive, Upgrade' + return True if 'Connection' in request.headers and ('Upgrade' in request.headers['Connection'].split(", ")) and 'Upgrade' in request.headers and request.headers['Upgrade'] == 'websocket' else False + +addons = [MitmproxyAddon2()] diff --git a/test/mitmproxy_addon_generate_certs_and_exit.py b/test/mitmproxy_addon_generate_certs_and_exit.py new file mode 100644 index 000000000..29aa91df7 --- /dev/null +++ b/test/mitmproxy_addon_generate_certs_and_exit.py @@ -0,0 +1,13 @@ +import sys +import asyncio + +async def wait_a_bit_then_exit(): + await asyncio.sleep(1) + sys.exit() + +class MitmproxyAddon: + # Wait until we’ve started up, and presumably generated the SSL certs, then exit. (The wait is because if I put a `sys.exit()` directly inside `running()`, the certs aren’t yet generated; I guess there’s some enqueued work I need to wait to complete) + def running(self): + asyncio.get_running_loop().create_task(wait_a_bit_then_exit()) + +addons = [MitmproxyAddon()] diff --git a/test/private-api-usage.md b/test/private-api-usage.md new file mode 100644 index 000000000..c25c6dd9b --- /dev/null +++ b/test/private-api-usage.md @@ -0,0 +1,405 @@ +# Usage of private APIs in ably-js test suite + +Written at commit `50076ed`. + +Investigating this as part of ECO-14. + +Files come from running `find test -name '*.js'`. + +Multiple similar usages of the same API in a given file are not necessarily repeated. + +Not been particularly consistent here in explaining _why_ it uses a given API; sometimes I have, sometimes I haven't if it wasn't obvious or something. + +Questions: + +- when it does things like noop-ing `onProtocolMessage`, is it important whether it applies to a specific instance or not? +- what subtleties are there about whether when we override e.g. a send method, it's blocking other sends until resolved? +- things like `await channel.processMessage` in a test (actually, the `await` is a bit of a red herring, could just as easily be `onProtocolMessage`), how do we know when the client has actually processed the message so that we can proceed with the test? (understand better how much of an issue this is) +- how would patterns like restore the `original*` implementation work? + +## Other notes + +I haven’t mentioned the places where the tests use JS-specific public API, e.g. `transports` client option. + +## `test/web_server.js` + +None + +## `test/realtime/delta.test.js` + +- `channel._lastPayload.messageId = null` + - to make decoding fail + +## `test/realtime/encoding.test.js` + +- `var BufferUtils = Ably.Realtime.Platform.BufferUtils;` +- `var Defaults = Ably.Rest.Platform.Defaults;` + - just used for accessing library’s baked-in protocol version, to pass to `request()` + +## `test/realtime/presence.test.js` + +- `var createPM = Ably.protocolMessageFromDeserialized;` +- `var PresenceMessage = Ably.Realtime.PresenceMessage;` +- replacing `channel.sendPresence` with a version that checks the presence message’s client ID +- replacing `transport.send` with a version that checks the encoded data in the protocol message +- `channel.presence.members.waitSync(cb);` +- `var connId = realtime.connection.connectionManager.connectionId;` +- `channel.presence._myMembers.put(` +- `channel.sync();` +- stubbing out `channel.attachImpl` +- `channel.checkPendingState();` +- `Ably.Realtime.Platform.Config.nextTick(cb);` +- calling `channel.processMessage` to inject a protocol message + +TODO what’s +var openConnections = res[1] && res[1].close ? [listenerRealtime, res[1]] : listenerRealtime; + +## `test/realtime/event_emitter.test.js` + +- `eventEmitter.emit('custom');` — RTE6 says that `emit` is internal + +## `test/realtime/api.test.js` + +None + +## `test/realtime/crypto.test.js` + +- `var BufferUtils = Ably.Realtime.Platform.BufferUtils;` +- `var msgpack = typeof window == 'object' ? Ably.msgpack : require('@ably/msgpack-js');` +- `Message.encode(testMessage, channelOpts)` +- `Message.decode(encryptedMessage, channelOpts);` +- `Message.fromValues(` +- `expect(channel.channelOptions.cipher.algorithm).to.equal('aes');` — `channel.channelOptions` is not public API + +## `test/realtime/failure.test.js` + +- `webSocketConnectTimeout: 50` client option +- replacing `channel.processMessage` to drop `ATTACHED` +- replacing `realtime.connection.connectionManager.activeProtocol.transport.onProtocolMessage` to drop `ACK` +- `Ably.Realtime.Platform.Config.nextTick(function () {` +- calling `realtime.connection.connectionManager.activeProtocol.transport.onProtocolMessage` to inject an `ERROR` +- calling `realtime.connection.connectionManager.on('transport.pending'` and then replacing this transport’s `onProtocolMessage` to change its `connectionDetails.maxIdleInterval` +- accessing `connection.connectionManager.activeProtocol.getTransport()` to inject a `DISCONNECTED` +- replacing `connectionManager.onChannelMessage` to listen for `MESSAGE`and then calling `requestState('attaching')` on a channel in response + +## `test/realtime/channel.test.js` + +- `var createPM = Ably.protocolMessageFromDeserialized;` +- `expect(channel.channelOptions).to.deep.equal(channelOptions, 'Check requested channel options');` (`channelOptions` isn’t public API) +- listens for `channel._allChannelChanges.on(['update'],` +- replaces `channel.sendMessage` with an empty implementation (to "sabotage the reattach attempt") +- sets `realtime.options.timeouts.realtimeRequestTimeout = 100` i.e. modifies client options after creation +- calls `transport.onProtocolMessage` to inject `DETACHED` +- replaces `channel.sendMessage` to check that an `ATTACH` was received, and inside it then calls `transport.onProtocolMessage` to inject a `DETACHED` +- OK, have seen plenty of `onProtocolMessage` calls to inject a protocol message now; will only write if something particularly interesting seen +- replaces `channel.sendMessage` with an implementation which fails the test if called +- replaces `channel.sendMessage` to check that only a `DETACH` is being sent, and to continue the test once second `DETACH` sent + +## `test/realtime/auth.test.js` + +- `var http = new Ably.Realtime._Http();` — just uses this as an HTTP client to fetch a JWT +- spies on `rest.time` to count how many times called +- checks `rest.serverTimeOffset` +- spies on `transport.send` to look for an outgoing `AUTH` and check its properties + +## `test/realtime/transports.test.js` + +Transports are a JS-specific concept so might not be worth worrying too much about the contents of this file + +- `const Defaults = Ably.Rest.Platform.Defaults;` + - changes `Defaults.wsConnectivityUrl` +- `const defaultTransports = new Ably.Realtime({ key: 'xxx:yyy', autoConnect: false }).connection.connectionManager.transports;` +- `const baseTransport = new Ably.Realtime({ key: 'xxx:yyy', autoConnect: false, transports: availableTransports }).connection.connectionManager.baseTransport;` +- changes `Ably.Rest.Platform.Config.WebSocket` + - replaces it with a `FakeWebSocket` class to simulate not emitting any events +- checks `realtime.connection.connectionManager.activeProtocol.transport.shortName` +- `webSocketSlowTimeout` and `webSocketConnectTimeout` client options +- checks `window.localStorage.getItem(transportPreferenceName)` +- sets `window.localStorage.setItem(transportPreferenceName` +- modifies `realtime.connection.connectionManager.checkWsConnectivity` to delay its completion until some other event has happened + +## `test/realtime/utils.test.js` + +Ah, I just realised that some of the properties on `shared_helper` actually refer to properties of the library, e.g. `helper.Utils` is actually `Ably.Realtime.Utils`. So perhaps I missed some usages of internal APIs in earlier files. But can figure that out later. + +- this entire file is a test of the internal `utils.getRetryTime(…)` method + +## `test/realtime/resume.test.js` + +- `connectionManager.once('transport.active',` and inside the callback it makes an assertion on `transport.params.mode` +- sets a channel’s state: `suspendedChannel.state = 'suspended';` +- sabotages a resume by setting `connection.connectionManager`’s `conectionKey` and `connectionId` to garbage +- sets `connection.connectionManager.msgSerial` to some fixed value (not sure of motivation) +- calls `connection.connectionManager.disconnectAllTransports();` +- checks `connection.connectionManager.msgSerial` and `connection.connectionManager.connectionId` +- sabotages a resume by setting `realtime.auth.tokenDetails.token` +- modifies `realtime.auth.key` to something invalid in order to get a fatal resume error +- sets `connectionManager.lastActivity` to something far in the past +- sets `connectionManager.activeProtocol.getTransport().onProtocolMessage` to no-op so that last activity timer doesn’t get bumped +- spies on `connectionManager.tryATransport` to verify `transportParams.mode` +- modifies `connectionManager.send` to do `msg.setFlag('ATTACH_RESUME')` on the outgoing message + +## `test/realtime/message.test.js` + +- `let config = Ably.Realtime.Platform.Config;` +- `var createPM = Ably.protocolMessageFromDeserialized;` +- modifies `transport.send` to check the `clientId` on the outgoing `MESSAGE` +- checks `channel.filteredSubscriptions.has(listener)` +- accesses `connectionManager.connectionDetails`, modifies its `maxMessageSize`, then re-injects it via a `CONNECTED` passed to `onProtocolMessage()` +- bundling test performs some assertions about the contents of `realtime.connection.connectionManager.queuedMessages` + +## `test/realtime/connection.test.js` + +- creates a `recover` client option which uses knowledge of ably-js’s serialization of recovery key +- spies on `transport.send` to listen for `MESSAGE`, check its properties, and then continue the test +- calls `connectionManager.disconnectAllTransports();` +- listens for `connectionManager.once('connectiondetails')` in order to make some assertions about those details +- checks `realtime.options.maxMessageSize` + +## `test/realtime/init.test.js` + +- accesses `var transport = realtime.connection.connectionManager.activeProtocol.transport.uri` or `.recvRequest.recvUri` to check the `v=3` query parameter +- `expect(realtime.options).to.deep.equal(realtime.connection.connectionManager.options);` +- checks `realtime.connection.connectionManager.httpHosts[0];` to check it’s using correct default host, also checks length of that array +- checks that timeout-related client options are reflected in internal `realtime.connection.connectionManage.states.*.retryDelay` values +- spies on `realtime.connection.connectionManager.tryATransport`, looking at the host that’s being used to connect, although not sure exactly to what end +- checks `realtime.connection.connectionManager`’s `baseTransport` and `webSocketTransportAvailable` +- modifies `realtime.connection.connectionManager.pendingTransport.onProtocolMessage` to look for `CONNECTED`, make an assertion about it, and then set its `connectionKey` and `clientId` to fixed values (so we can assert they’re subsequently used to populate some user-facing properties) +- calls the `new Ably.Rest._Http()._getHosts(…)` API to check its result +- calls `helper.AblyRest().options.realtimeHost;` just to get a URL to be used in a realtime’s `fallbackHosts` + +## `test/realtime/history.test.js` + +None + +## `test/realtime/connectivity.test.js` + +- directly calls `new Ably.Realtime._Http().checkConnectivity()` and checks it succeeds (i.e. directly tests this method) + +## `test/realtime/reauth.test.js` + +None + +## `test/realtime/sync.test.js` + +- calling `channel.processMessage` to inject an `ATTACHED` with a presence flag, and then a `SYNC`, later on a `PRESENCE` +- spies on `channel.processMessage` to, after processing a received `SYNC`, inject a `PRESENCE` + +## `test/browser/simple.test.js` + +- checks whether a transport is available using `transport in Ably.Realtime.ConnectionManager.supportedTransports(Ably.Realtime._transports)` + +## `test/browser/http.test.js` + +- changes `Ably.Rest.Platform.Config.xhrSupported` to false to make it use Fetch + +## `test/browser/connection.test.js` + +(I guess that this is a test that we might not include in the unified test suite.) + +- uses knowledge of library’s usage of `window.sessionStorage` for transport preference and recovery key +- fires an `"offline"` event, ditto `"offline"` +- replaces `connection.connectionManager.tryATransport` to "simulate the internet being failed" +- listens for `connection.connectionManager.once('transport.pending'` in order to know when to "sabotage the connection attempt", and then makes assertions about this transport (`isDisposed`, checking `realtime.connection.connectionManager.activeProtocol.transport`) +- dispatches a `"beforeunload"` event +- tests `realtime.connection.connectionManager.baseTransport` and `realtime.connection.connectionManager.webSocketTransportAvailable` + +## `test/browser/modular.test.js` + +- `const BufferUtils = BaseRest.Platform.BufferUtils;` + - just used for Base64 and checking buffer equality, can be replaced easily +- replaces `rest.http.do` to check the `Content-Type` request header +- replaces `realtime.connection.connectionManager.connectImpl` to check `transportParams.format` +- spies on `realtime.connection.connectionManager.tryATransport` to check which transport being tried + +## `test/common/globals/named_dependencies.js` + +N/A + +## `test/common/globals/environment.js` + +N/A + +## `test/common/ably-common/test/agents.test.js` + +N/A + +## `test/common/ably-common/.eslintrc.js` + +N/A + +## `test/common/ably-common/json-schemas/publish.js` + +N/A + +## `test/common/modules/client_module.js` + +- uses `Ably.Realtime.Utils` for its `mixin` function + +## `test/common/modules/testapp_manager.js` + +- uses `ably.Realtime.Platform.BufferUtils` + +## `test/common/modules/testapp_module.js` + +None + +## `test/common/modules/shared_helper.js` + +- `var utils = clientModule.Ably.Realtime.Utils;` +- `var platform = clientModule.Ably.Realtime.Platform;` + - uses `platform.Config.nextTick()` +- uses `var BufferUtils = platform.BufferUtils;` +- extracts `availableTransports` and `bestTransport` by reading `Ably.Realtime.ConnectionManager.supportedTransports(Ably.Realtime._transports)` + - `availableTransports` used by `testOnAllTransports` +- `simulateDroppedConnection()` does the following: + - `realtime.connection.connectionManager.requestState({ state: 'disconnected' })` + - `realtime.connection.connectionManager.disconnectAllTransports();` +- `becomeSuspended()` does the following: + - `realtime.connection.connectionManager.disconnectAllTransports();` + - `realtime.connection.connectionManager.notifyState({ state: 'suspended' });` +- `callbackOnClose()`: + - checks `realtime.connection.connectionManager.activeProtocol` + - does `realtime.connection.connectionManager.activeProtocol.transport.on('disposed',` +- `isComet(transport)` and `isWebsocket(transport)` check for `"comet"` and `"wss:/"` which I guess is something internal? + +## `test/support/junit_directory_path.js` + +N/A + +## `test/support/mocha_junit_reporter/index.js` + +N/A + +## `test/support/mocha_junit_reporter/shims/fs.js` + +N/A + +## `test/support/mocha_junit_reporter/build/node.js` + +Generated + +## `test/support/mocha_junit_reporter/build/browser.js` + +Generated + +## `test/support/root_hooks.js` + +None + +## `test/support/environment.vars.js` + +None + +## `test/support/runPlaywrightTests.js` + +N/A + +## `test/support/test_helper.js` + +N/A + +## `test/support/browser_file_list.js` + +N/A + +## `test/support/modules_helper.js` + +N/A + +## `test/support/browser_setup.js` + +N/A + +## `test/support/mocha_reporter.js` + +N/A + +## `test/support/playwrightSetup.js` + +N/A + +## `test/rest/bufferutils.test.js` + +This file is a unit test of `Ably.Realtime.Platform.BufferUtils`; something we wouldn’t include in a unified test suite. + +## `test/rest/presence.test.js` + +- `var BufferUtils = Ably.Realtime.Platform.BufferUtils;` + - I’m going to stop mentioning the use of BufferUtils as a test util now; the pattern is clear and not hard to fix. + +## `test/rest/fallbacks.test.js` + +- checks `rest._currentFallback.{host, validUntil}` to check that the working fallback has been stored correctly +- modifies `rest._currentFallback.validUntil` to check library correctly forgets stored fallback + +## `test/rest/api.test.js` + +None + +## `test/rest/stats.test.js` + +None + +## `test/rest/batch.test.js` + +None + +## `test/rest/time.test.js` + +None + +## `test/rest/auth.test.js` + +- ditto will stop mentioning usage of `Utils` for stuff that will be pretty easy to replace + +None + +## `test/rest/http.test.js` + +- accesses `Ably.Rest.Platform.Defaults` to check its `version` is being used to populate `Ably-Agent` +- spies on `rest.http.do` to make assertions about request headers +- replaces `rest.http.do` to simulate a 204 response + +## `test/rest/capability.test.js` + +None + +## `test/rest/push.test.js` + +None + +## `test/rest/message.test.js` + +- spies on `channel._publish` to verify that client does / doesn’t add a `clientId` + - ditto to check that idempotent REST publishing generates message IDs + - ditto to check `params` +- overrides `Ably.Rest._Http.doUri` to fake a publish error + +## `test/rest/init.test.js` + +- accesses various properties of `rest.options` to check the effect of passing various things to the constructor + +## `test/rest/history.test.js` + +None + +## `test/rest/defaults.test.js` + +This appears to be a unit test of the `Defaults` class’s `normaliseOptions()`, `getHosts()`, and `getPort()` methods. ButI imagine it’s actually providing the test suite’s coverage of a buch of spec points which aren’t written in terms of this API. + +## `test/rest/status.test.js` + +None + +## `test/rest/request.test.js` + +- overrides `rest.http.do()` to check `X-Ably-Version` request header + +## `test/package/browser/template/server/resources/runTest.js` + +N/A + +## `test/package/browser/template/playwright-lib.config.js` + +N/A diff --git a/test/realtime/connection.test.js b/test/realtime/connection.test.js index 058b6a646..660333027 100644 --- a/test/realtime/connection.test.js +++ b/test/realtime/connection.test.js @@ -1,6 +1,12 @@ 'use strict'; -define(['ably', 'shared_helper', 'async', 'chai'], function (Ably, helper, async, chai) { +define(['ably', 'shared_helper', 'async', 'chai', 'interception_proxy_client'], function ( + Ably, + helper, + async, + chai, + interceptionProxyClient, +) { var expect = chai.expect; var closeAndFinish = helper.closeAndFinish; var closeAndFinishAsync = helper.closeAndFinishAsync; @@ -169,112 +175,124 @@ define(['ably', 'shared_helper', 'async', 'chai'], function (Ably, helper, async * without being merged with new messages) */ it('connectionQueuing', function (done) { - var realtime = helper.AblyRealtime({ transports: [helper.bestTransport] }), - channel = realtime.channels.get('connectionQueuing'), - connectionManager = realtime.connection.connectionManager; + interceptionProxyClient.intercept(done, (done, interceptionContext) => { + var realtime = helper.AblyRealtime({ transports: [helper.bestTransport] }), + channel = realtime.channels.get('connectionQueuing'), + connectionManager = realtime.connection.connectionManager; - realtime.connection.once('connected', function () { - var transport = connectionManager.activeProtocol.transport; - whenPromiseSettles(channel.attach(), function (err) { - if (err) { - closeAndFinish(done, realtime, err); - return; - } + realtime.connection.once('connected', function () { + var transport = connectionManager.activeProtocol.transport; + whenPromiseSettles(channel.attach(), function (err) { + if (err) { + closeAndFinish(done, realtime, err); + return; + } - let transportSendCallback; + let transportSendCallback; - /* Sabotage sending the message */ - transport.send = function (msg) { - if (msg.action == 15) { - expect(msg.msgSerial).to.equal(0, 'Expect msgSerial to be 0'); + /* Sabotage sending the message */ + interceptionContext.transformClientMessage = (msg) => { + if (msg.deserialized.action == 15) { + expect(msg.deserialized.msgSerial).to.equal(0, 'Expect msgSerial to be 0'); - if (!transportSendCallback) { - done(new Error('transport.send override called before transportSendCallback populated')); - } + if (!transportSendCallback) { + done(new Error('transport.send override called before transportSendCallback populated')); + } - transportSendCallback(null); - } - }; + transportSendCallback(null); + } - let publishCallback; + // drop the message + return null; + }; - async.series( - [ - function (cb) { - transportSendCallback = cb; + let publishCallback; - /* Sabotaged publish */ - whenPromiseSettles(channel.publish('first', null), function (err) { - if (!publishCallback) { - done(new Error('publish completed before publishCallback populated')); - } - publishCallback(err); - }); - }, + async.series( + [ + function (cb) { + transportSendCallback = cb; - // We wait for transport.send to recieve the message that we just - // published before we proceed to disconnecting the transport, to - // make sure that the message got marked as `sendAttempted`. + /* Sabotaged publish */ + whenPromiseSettles(channel.publish('first', null), function (err) { + if (!publishCallback) { + done(new Error('publish completed before publishCallback populated')); + } + publishCallback(err); + }); + }, - function (cb) { - async.parallel( - [ - function (cb) { - publishCallback = function (err) { - try { - expect(!err, 'Check publish happened (eventually) without err').to.be.ok; - } catch (err) { - cb(err); - return; - } - cb(); - }; - }, - function (cb) { - /* After the disconnect, on reconnect, spy on transport.send again */ - connectionManager.once('transport.pending', function (transport) { - var oldSend = transport.send; + // We wait for transport.send to recieve the message that we just + // published before we proceed to disconnecting the transport, to + // make sure that the message got marked as `sendAttempted`. - transport.send = function (msg, msgCb) { - if (msg.action === 15) { - if (msg.messages[0].name === 'first') { - try { - expect(msg.msgSerial).to.equal(0, 'Expect msgSerial of original message to still be 0'); - expect(msg.messages.length).to.equal( - 1, - 'Expect second message to not have been merged with the attempted message', - ); - } catch (err) { - cb(err); - return; - } - } else if (msg.messages[0].name === 'second') { - try { - expect(msg.msgSerial).to.equal(1, 'Expect msgSerial of new message to be 1'); - } catch (err) { - cb(err); - return; - } - cb(); - } + function (cb) { + async.parallel( + [ + function (cb) { + publishCallback = function (err) { + try { + expect(!err, 'Check publish happened (eventually) without err').to.be.ok; + } catch (err) { + cb(err); + return; } - oldSend.call(transport, msg, msgCb); + cb(); }; - channel.publish('second', null); - }); + }, + function (cb) { + /* After the disconnect, on reconnect, spy on transport.send again */ + connectionManager.once('transport.pending', function (transport) { + // TODO does the identity of this transport matter, and can we replace the `transport.pending` check with something external too (e.g. detecting a new connection)? perhaps let's have an EventEmitter interface on the interception context that says when there's a new connection or something + interceptionContext.transformClientMessage = function (msg) { + if (msg.deserialized.action === 15) { + if (msg.deserialized.messages[0].name === 'first') { + try { + expect(msg.deserialized.msgSerial).to.equal( + 0, + 'Expect msgSerial of original message to still be 0', + ); + expect(msg.deserialized.messages.length).to.equal( + 1, + 'Expect second message to not have been merged with the attempted message', + ); + } catch (err) { + cb(err); + return msg.deserialized; + } + } else if (msg.deserialized.messages[0].name === 'second') { + try { + expect(msg.deserialized.msgSerial).to.equal( + 1, + 'Expect msgSerial of new message to be 1', + ); + } catch (err) { + cb(err); + return msg.deserialized; + } + cb(); + } + } - /* Disconnect the transport (will automatically reconnect and resume) () */ - connectionManager.disconnectAllTransports(); - }, - ], - cb, - ); + // preserve the message + return msg.deserialized; + }; + channel.publish('second', null); + }); + + /* Disconnect the transport (will automatically reconnect and resume) () */ + connectionManager.disconnectAllTransports(); + }, + ], + cb, + ); + }, + ], + function (err) { + closeAndFinish(done, realtime, err); }, - ], - function (err) { - closeAndFinish(done, realtime, err); - }, - ); + ); + }); }); }); }); diff --git a/test/support/openPlaywrightBrowser.js b/test/support/openPlaywrightBrowser.js new file mode 100644 index 000000000..2f828bd29 --- /dev/null +++ b/test/support/openPlaywrightBrowser.js @@ -0,0 +1,5 @@ +const { openPlaywrightBrowser } = require('./playwrightHelpers'); + +(async function run() { + await openPlaywrightBrowser(false /* headless */); +})(); diff --git a/test/support/playwrightHelpers.js b/test/support/playwrightHelpers.js new file mode 100644 index 000000000..1ff0a467d --- /dev/null +++ b/test/support/playwrightHelpers.js @@ -0,0 +1,63 @@ +const path = require('path'); +const util = require('util'); +const exec = util.promisify(require('child_process').exec); +const playwright = require('playwright'); +const { randomUUID } = require('crypto'); +const playwrightBrowsers = ['chromium', 'firefox', 'webkit']; + +async function openPlaywrightBrowser(headless) { + const browserEnv = process.env.PLAYWRIGHT_BROWSER; + + if (!playwrightBrowsers.includes(browserEnv)) { + throw new Error( + `PLAYWRIGHT_BROWSER environment variable must be one of: ${playwrightBrowsers.join( + ', ', + )}. Currently: ${browserEnv}`, + ); + } + + const browserType = playwright[browserEnv]; + + const options = { + headless, + // bypass localhost so that the proxy doesn’t need to be running in order for us to contact the control API to tell it to be started; TODO there is quite possibly a less convoluted way of starting the proxy in this case, also think in a more holistic manner about the various ways in which we make sure that only certain traffic is intercepted (there are notes dotted around about this) + proxy: { server: 'localhost:8080', bypass: 'localhost' }, + }; + + // (I originally tried using the ignoreHTTPSErrors Playwright option, but that doesn’t seem to work for CORS preflight requests) + + let browser; + + if (browserEnv === 'firefox') { + // TODO clean up when closing + const profileDirectory = path.join('tmp', 'browser-profiles', `browserEnv-${randomUUID()}`); + + // We create and then discard a browser instance just to create the structure of the profile directory, which I guess certutil needs + // TODO this probably isn’t necessary; I think we can just create the directory ahead of time and then use certutil to create the DB, like we do for Chromium + const throwawayBrowser = await browserType.launchPersistentContext(profileDirectory, { + ...options, + headless: true, + }); + await throwawayBrowser.close(); + + // Install the mitmproxy root CA cert + // https://github.com/microsoft/playwright/issues/18115#issuecomment-2067175748 + // https://wiki.mozilla.org/CA/AddRootToFirefox + // https://sadique.io/blog/2012/06/05/managing-security-certificates-from-the-console-on-windows-mac-os-x-and-linux/#firefox + // TODO document that on macOS you get certutil from `brew install nss` + await exec( + `certutil -A -d ${profileDirectory} -t C -n "Mitmproxy Root Cert" -i ~/.mitmproxy/mitmproxy-ca-cert.pem`, + ); + + browser = await browserType.launchPersistentContext(profileDirectory, options); + } else { + // TODO explain what to do for trust + browser = await browserType.launch(options); + } + + const page = await browser.newPage(options); + + return { browserType, browser, page }; +} + +module.exports = { openPlaywrightBrowser }; diff --git a/test/support/root_hooks.js b/test/support/root_hooks.js index aab15e140..95e6524d1 100644 --- a/test/support/root_hooks.js +++ b/test/support/root_hooks.js @@ -1,4 +1,8 @@ -define(['shared_helper'], function (helper) { +define(['shared_helper', 'interception_proxy_client'], function (helper, interceptionProxyClient) { + before(async function () { + await interceptionProxyClient.connect(); + }); + after(function (done) { this.timeout(10 * 1000); helper.tearDownApp(function (err) { @@ -10,8 +14,21 @@ define(['shared_helper'], function (helper) { }); }); + after(async () => { + await interceptionProxyClient.disconnect(); + }); + + // The `START TEST` and `END TEST` logs are to make it easy to see the IDs of interception proxy connections that were started during the test, to correlate with the proxy logs + afterEach(helper.closeActiveClients); afterEach(helper.logTestResults); afterEach(helper.flushTestLogs); + afterEach(function () { + console.log(`END TEST: ${this.currentTest.fullTitle()}`); + }); + + beforeEach(function () { + console.log(`START TEST: ${this.currentTest.fullTitle()}`); + }); beforeEach(helper.clearTransportPreference); }); diff --git a/test/support/runPlaywrightTests.js b/test/support/runPlaywrightTests.js index aea4dbff3..dd7452148 100644 --- a/test/support/runPlaywrightTests.js +++ b/test/support/runPlaywrightTests.js @@ -1,18 +1,17 @@ -const playwright = require('playwright'); const path = require('path'); const MochaServer = require('../web_server'); const fs = require('fs'); const jUnitDirectoryPath = require('./junit_directory_path'); +const { openPlaywrightBrowser } = require('./playwrightHelpers'); const port = process.env.PORT || 3000; const host = 'localhost'; -const playwrightBrowsers = ['chromium', 'firefox', 'webkit']; const mochaServer = new MochaServer(/* playwrightTest: */ true); -const runTests = async (browserType) => { +const runTests = async () => { + const { browserType, browser, page } = await openPlaywrightBrowser(true /* headless */); + await mochaServer.listen(); - const browser = await browserType.launch(); - const page = await browser.newPage(); await page.goto(`http://${host}:${port}`); console.log(`\nrunning tests in ${browserType.name()}`); @@ -67,17 +66,7 @@ const runTests = async (browserType) => { let caughtError; try { - const browserEnv = process.env.PLAYWRIGHT_BROWSER; - - if (!playwrightBrowsers.includes(browserEnv)) { - throw new Error( - `PLAYWRIGHT_BROWSER environment variable must be one of: ${playwrightBrowsers.join( - ', ', - )}. Currently: ${browserEnv}`, - ); - } - - await runTests(playwright[browserEnv]); + await runTests(); } catch (error) { // save error for now, we must ensure we end mocha web server first. // if we end current process too early, mocha web server will be left running, From dd94f9d71338920ec6a30cd20d2a2e1d13447318 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Wed, 15 May 2024 17:25:04 -0300 Subject: [PATCH 10/32] isolate failing test --- test/browser/modular.test.js | 204 +---------------------------------- 1 file changed, 1 insertion(+), 203 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 82e5b0698..1341cba44 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -22,7 +22,7 @@ import { } from '../../build/modular/index.mjs'; function registerAblyModularTests(helper) { - describe('browser/modular', function () { + describe.only('browser/modular', function () { this.timeout(10 * 1000); const expect = chai.expect; const BufferUtils = BaseRest.Platform.BufferUtils; @@ -608,208 +608,6 @@ function registerAblyModularTests(helper) { }); }); }); - - describe('PresenceMessage standalone functions', () => { - describe('decodePresenceMessage', () => { - it('decodes a presence message’s data', async () => { - const buffer = BufferUtils.utf8Encode('foo'); - const encodedMessage = { data: BufferUtils.base64Encode(buffer), encoding: 'base64' }; - - const decodedMessage = await decodePresenceMessage(encodedMessage); - - expect(BufferUtils.areBuffersEqual(decodedMessage.data, buffer)).to.be.true; - expect(decodedMessage.encoding).to.be.null; - }); - }); - - describe('decodeMessages', () => { - it('decodes presence messages’ data', async () => { - const buffers = ['foo', 'bar'].map((data) => BufferUtils.utf8Encode(data)); - const encodedMessages = buffers.map((buffer) => ({ - data: BufferUtils.base64Encode(buffer), - encoding: 'base64', - })); - - const decodedMessages = await decodePresenceMessages(encodedMessages); - - for (let i = 0; i < decodedMessages.length; i++) { - const decodedMessage = decodedMessages[i]; - - expect(BufferUtils.areBuffersEqual(decodedMessage.data, buffers[i])).to.be.true; - expect(decodedMessage.encoding).to.be.null; - } - }); - }); - - describe('constructPresenceMessage', () => { - it('creates a PresenceMessage instance', async () => { - const extras = { foo: 'bar' }; - const presenceMessage = constructPresenceMessage({ extras }); - - expect(presenceMessage.constructor.name).to.contain('PresenceMessage'); - expect(presenceMessage.extras).to.equal(extras); - }); - }); - }); - - describe('Transports', () => { - describe('BaseRealtime', () => { - describe('without a transport plugin', () => { - it('throws an error due to absence of a transport plugin', () => { - expect(() => new BaseRealtime(ablyClientOptions({ plugins: { FetchRequest } }))).to.throw( - 'no requested transports available', - ); - }); - }); - - for (const scenario of [ - { pluginsKey: 'WebSocketTransport', transportPlugin: WebSocketTransport, transportName: 'web_socket' }, - { pluginsKey: 'XHRPolling', transportPlugin: XHRPolling, transportName: 'xhr_polling' }, - ]) { - describe(`with the ${scenario.pluginsKey} plugin`, () => { - it(`is able to use the ${scenario.transportName} transport`, async () => { - const realtime = new BaseRealtime( - ablyClientOptions({ - autoConnect: false, - transports: [scenario.transportName], - plugins: { - FetchRequest, - [scenario.pluginsKey]: scenario.transportPlugin, - }, - }), - ); - - let firstTransportCandidate; - const connectionManager = realtime.connection.connectionManager; - const originalTryATransport = connectionManager.tryATransport; - realtime.connection.connectionManager.tryATransport = (transportParams, candidate, callback) => { - if (!firstTransportCandidate) { - firstTransportCandidate = candidate; - } - originalTryATransport.bind(connectionManager)(transportParams, candidate, callback); - }; - - realtime.connect(); - - await realtime.connection.once('connected'); - expect(firstTransportCandidate).to.equal(scenario.transportName); - }); - }); - } - }); - }); - - describe('HTTP request implementations', () => { - describe('with multiple HTTP request implementations', () => { - it('prefers XHR', async () => { - let usedXHR = false; - - const XHRRequestSpy = class XHRRequestSpy extends XHRRequest { - static createRequest(...args) { - usedXHR = true; - return super.createRequest(...args); - } - }; - - const rest = new BaseRest(ablyClientOptions({ plugins: { FetchRequest, XHRRequest: XHRRequestSpy } })); - await rest.time(); - - expect(usedXHR).to.be.true; - }); - }); - }); - - describe('MessageInteractions', () => { - describe('BaseRealtime', () => { - describe('without MessageInteractions', () => { - it('is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed', async () => { - const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const channel = realtime.channels.get('channel'); - await channel.attach(); - - const subscribeReceivedMessagePromise = new Promise((resolve) => channel.subscribe(resolve)); - - await channel.publish('message', 'body'); - - const subscribeReceivedMessage = await subscribeReceivedMessagePromise; - expect(subscribeReceivedMessage.data).to.equal('body'); - }); - - it('throws an error when attempting to subscribe to channel events using a MessageFilter', async () => { - const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const channel = realtime.channels.get('channel'); - - let thrownError = null; - try { - await channel.subscribe({ clientId: 'someClientId' }, () => {}); - } catch (error) { - thrownError = error; - } - - expect(thrownError).not.to.be.null; - expect(thrownError.message).to.equal('MessageInteractions plugin not provided'); - }); - }); - - describe('with MessageInteractions', () => { - it('can take a MessageFilter argument when subscribing to and unsubscribing from channel events', async () => { - const realtime = new BaseRealtime( - ablyClientOptions({ - plugins: { - WebSocketTransport, - FetchRequest, - MessageInteractions, - }, - }), - ); - const channel = realtime.channels.get('channel'); - - await channel.attach(); - - // Test `subscribe` with a filter: send two messages with different clientIds, and check that unfiltered subscription receives both messages but clientId-filtered subscription only receives the matching one. - const messageFilter = { clientId: 'someClientId' }; // note that `unsubscribe` compares filter by reference, I found that a bit surprising - - const filteredSubscriptionReceivedMessages = []; - channel.subscribe(messageFilter, (message) => { - filteredSubscriptionReceivedMessages.push(message); - }); - - const unfilteredSubscriptionReceivedFirstTwoMessagesPromise = new Promise((resolve) => { - const receivedMessages = []; - channel.subscribe(function listener(message) { - receivedMessages.push(message); - if (receivedMessages.length === 2) { - channel.unsubscribe(listener); - resolve(); - } - }); - }); - - await channel.publish(await decodeMessage({ clientId: 'someClientId' })); - await channel.publish(await decodeMessage({ clientId: 'someOtherClientId' })); - await unfilteredSubscriptionReceivedFirstTwoMessagesPromise; - - expect(filteredSubscriptionReceivedMessages.length).to.equal(1); - expect(filteredSubscriptionReceivedMessages[0].clientId).to.equal('someClientId'); - - // Test `unsubscribe` with a filter: call `unsubscribe` with the clientId filter, publish a message matching the filter, check that only the unfiltered listener recieves it - channel.unsubscribe(messageFilter); - - const unfilteredSubscriptionReceivedNextMessagePromise = new Promise((resolve) => { - channel.subscribe(function listener() { - channel.unsubscribe(listener); - resolve(); - }); - }); - - await channel.publish(await decodeMessage({ clientId: 'someClientId' })); - await unfilteredSubscriptionReceivedNextMessagePromise; - - expect(filteredSubscriptionReceivedMessages.length).to./* (still) */ equal(1); - }); - }); - }); - }); }); } From 243730d7150e1e5318219deec8ff6bc21063b635 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 16 May 2024 11:41:52 -0300 Subject: [PATCH 11/32] exploring presence test --- test/browser/modular.test.js | 12 +++++++++++- test/common/modules/shared_helper.js | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 1341cba44..d495b3eb4 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -574,9 +574,11 @@ function registerAblyModularTests(helper) { }); describe('BaseRealtime with RealtimePresence', () => { - it('offers realtime presence functionality', async () => { + it.only('offers realtime presence functionality', async () => { const rxChannel = new BaseRealtime( ablyClientOptions({ + logHandler: (msg) => console.log("rxChannel: ", msg), + logLevel: 4, plugins: { WebSocketTransport, FetchRequest, @@ -587,6 +589,8 @@ function registerAblyModularTests(helper) { const txClientId = randomString(); const txChannel = new BaseRealtime( ablyClientOptions({ + logHandler: (msg) => console.log("txChannel: ", msg), + logLevel: 4, clientId: txClientId, plugins: { WebSocketTransport, @@ -600,10 +604,16 @@ function registerAblyModularTests(helper) { const rxPresenceMessagePromise = new Promise((resolve, reject) => { resolveRxPresenceMessagePromise = resolve; }); + console.log("LAWRENCE: begin waiting for presence subscribe"); await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); + console.log("LAWRENCE: end waiting for presence subscribe"); + console.log("LAWRENCE: begin waiting for presence enter"); await txChannel.presence.enter(); + console.log("LAWRENCE: end waiting for presence enter"); + console.log("LAWRENCE: begin waiting for rxPresenceMessagePromise"); const rxPresenceMessage = await rxPresenceMessagePromise; + console.log("LAWRENCE: end waiting for rxPresenceMessagePromise"); expect(rxPresenceMessage.clientId).to.equal(txClientId); }); }); diff --git a/test/common/modules/shared_helper.js b/test/common/modules/shared_helper.js index 986ed85f7..71fcb919a 100644 --- a/test/common/modules/shared_helper.js +++ b/test/common/modules/shared_helper.js @@ -253,18 +253,20 @@ define([ } function logTestResults() { + /* if (this.currentTest.isFailed()) { const logs = globals.getLogs(); if (logs.length > 0) { // empty console.logs are for vertical spacing console.log(); - console.log('Logs for failing test: \n'); + console.log('Logs for test: \n'); logs.forEach(([timestamp, log]) => { console.log(timestamp, log); }); console.log(); } } + */ } return (module.exports = { From 6b0c500a6cd2cd91f85a5ead884af6a05573c231 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Thu, 16 May 2024 11:42:41 -0300 Subject: [PATCH 12/32] add logs --- only-passing-logs.txt | 113 +++++ with-failure-logs.txt | 999 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1112 insertions(+) create mode 100644 only-passing-logs.txt create mode 100644 with-failure-logs.txt diff --git a/only-passing-logs.txt b/only-passing-logs.txt new file mode 100644 index 000000000..af359fc7b --- /dev/null +++ b/only-passing-logs.txt @@ -0,0 +1,113 @@ +favicon.ico:1 + + + Failed to load resource: the server responded with a status of 404 (Not Found) +interception_proxy_client.js:20 connected to interception proxy +interception_proxy_client.js:56 interception proxy sending startInterception request Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"18262122424150573","result":{}} +interception_proxy_client.js:34 startInterception completed +testapp_module.js:38 Test App _tmp_Jb47Yw in environment sandbox has been set up +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality +modular.test.js:607 LAWRENCE: begin waiting for presence subscribe +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d2e3f2ba-de34-4b24-82ea-c20e34d3bc8a","method":"transformInterceptedMessage","params":{"id":"36d684a2-6bb3-46e2-bc59-2ba9a8cdfe45","connectionID":"8ca58a54-08d2-4ad6-af1c-4f6c41294895","type":"text","data":"{\"action\":4,\"connectionId\":\"y4QUaX-lX2\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dUVsT6wBbzfT!y4QUaX-lX2ATeEsy_osN9J-4166\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 36d684a2-6bb3-46e2-bc59-2ba9a8cdfe45 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 36d684a2-6bb3-46e2-bc59-2ba9a8cdfe45 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=y4QUaX-lX2]; connectionId = undefined +modular.test.js:580 rxChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3bdc930a-b198-4a7a-a95b-c17dcdc241fb","method":"transformInterceptedMessage","params":{"id":"c8852ccb-e0dc-4852-a0b2-839c2df6709b","connectionID":"8ca58a54-08d2-4ad6-af1c-4f6c41294895","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c8852ccb-e0dc-4852-a0b2-839c2df6709b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c8852ccb-e0dc-4852-a0b2-839c2df6709b Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"601f4f2c-82b9-4474-b1f3-4fbf286abc9b","method":"transformInterceptedMessage","params":{"id":"86f1b10b-86b8-4a93-9207-0ede99770f0c","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":4,\"connectionId\":\"kyPOsHUTFq\",\"connectionDetails\":{\"clientId\":\"6162797107938209\",\"connectionKey\":\"e7dUVsT6wBbzfT!kyPOsHUTFqAT74zhxpP6QN-4169\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 86f1b10b-86b8-4a93-9207-0ede99770f0c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 86f1b10b-86b8-4a93-9207-0ede99770f0c Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:592 txChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=kyPOsHUTFq]; connectionId = undefined +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fdb11a81-3e11-4152-a98b-0ddeebe83533","method":"transformInterceptedMessage","params":{"id":"f90bf814-c10e-4fbe-9b2b-61b166fea9f1","connectionID":"8ca58a54-08d2-4ad6-af1c-4f6c41294895","type":"text","data":"{\"action\":11,\"flags\":983105,\"channel\":\"channel\",\"channelSerial\":\"e7d4ExGGQBbzfj18717820@1715954182939-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f90bf814-c10e-4fbe-9b2b-61b166fea9f1 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f90bf814-c10e-4fbe-9b2b-61b166fea9f1 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7d4ExGGQBbzfj18717820@1715954182939-0; flags=HAS_PRESENCE,PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = y4QUaX-lX2 +modular.test.js:609 LAWRENCE: end waiting for presence subscribe +modular.test.js:610 LAWRENCE: begin waiting for presence enter +modular.test.js:592 txChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"eadc8a07-a716-4d3d-be49-3da1fe9a1b7b","method":"transformInterceptedMessage","params":{"id":"c9ff71a5-a32e-4150-acf1-a8ab608a2d5a","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c9ff71a5-a32e-4150-acf1-a8ab608a2d5a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c9ff71a5-a32e-4150-acf1-a8ab608a2d5a Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"89d4078a-bbef-4ac2-9659-3c633113a646","method":"transformInterceptedMessage","params":{"id":"bc7fdf4f-c3d8-4af1-8a6e-00d2ca16faaf","connectionID":"8ca58a54-08d2-4ad6-af1c-4f6c41294895","type":"text","data":"{\"action\":16,\"channel\":\"channel\",\"channelSerial\":\"e7dUVsT6wBbzfT69031194:\",\"presence\":[],\"count\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bc7fdf4f-c3d8-4af1-8a6e-00d2ca16faaf unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bc7fdf4f-c3d8-4af1-8a6e-00d2ca16faaf Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=SYNC; channel=channel; channelSerial=e7dUVsT6wBbzfT69031194:; count=0; presence=[ ]]; connectionId = y4QUaX-lX2 +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3667cd33-e3a1-41e4-bc87-8f1b054cefb5","method":"transformInterceptedMessage","params":{"id":"9dae6fe9-ab4a-4622-baa9-b82746475a75","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7d4ExGGQBbzfj18717820@1715954182939-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 9dae6fe9-ab4a-4622-baa9-b82746475a75 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 9dae6fe9-ab4a-4622-baa9-b82746475a75 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:592 txChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7d4ExGGQBbzfj18717820@1715954182939-0; flags=PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = kyPOsHUTFq +modular.test.js:592 txChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=PRESENCE; channel=channel; msgSerial=0; presence=[ [PresenceMessage; action=enter] ]] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"421b72a5-440d-427b-99ff-313894a9b6a6","method":"transformInterceptedMessage","params":{"id":"d717b092-68f2-44b7-84c9-683d816cb8d6","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":14,\"channel\":\"channel\",\"presence\":[{\"action\":2}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d717b092-68f2-44b7-84c9-683d816cb8d6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d717b092-68f2-44b7-84c9-683d816cb8d6 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"55a65e27-e0af-4606-926c-70af966e8be2","method":"transformInterceptedMessage","params":{"id":"3e5e942b-94e8-45ae-a931-f3ac00fa3cdf","connectionID":"8ca58a54-08d2-4ad6-af1c-4f6c41294895","type":"text","data":"{\"action\":14,\"id\":\"kyPOsHUTFq:0\",\"connectionId\":\"kyPOsHUTFq\",\"channel\":\"channel\",\"channelSerial\":\"e7d4ExGGQBbzfj18717820@1715954183200-0\",\"timestamp\":1715954183200,\"presence\":[{\"id\":\"kyPOsHUTFq:0:0\",\"clientId\":\"6162797107938209\",\"connectionId\":\"kyPOsHUTFq\",\"timestamp\":1715954183200,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 3e5e942b-94e8-45ae-a931-f3ac00fa3cdf unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 3e5e942b-94e8-45ae-a931-f3ac00fa3cdf Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"71132588-4a6f-4a69-80c9-f005d67a1e89","method":"transformInterceptedMessage","params":{"id":"96b31566-71a4-4c9b-8de1-4309f7732fe8","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":14,\"id\":\"kyPOsHUTFq:0\",\"connectionId\":\"kyPOsHUTFq\",\"channel\":\"channel\",\"channelSerial\":\"e7d4ExGGQBbzfj18717820@1715954183200-0\",\"timestamp\":1715954183200,\"presence\":[{\"id\":\"kyPOsHUTFq:0:0\",\"clientId\":\"6162797107938209\",\"connectionId\":\"kyPOsHUTFq\",\"timestamp\":1715954183200,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 96b31566-71a4-4c9b-8de1-4309f7732fe8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 96b31566-71a4-4c9b-8de1-4309f7732fe8 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6906192b-9da8-477e-8f0c-00b9f7656e3c","method":"transformInterceptedMessage","params":{"id":"c878a150-847b-4f53-88d0-a8cce6a7502d","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c878a150-847b-4f53-88d0-a8cce6a7502d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c878a150-847b-4f53-88d0-a8cce6a7502d Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=PRESENCE; id=kyPOsHUTFq:0; channel=channel; channelSerial=e7d4ExGGQBbzfj18717820@1715954183200-0; connectionId=kyPOsHUTFq; timestamp=1715954183200; presence=[ [PresenceMessage; action=enter; id=kyPOsHUTFq:0:0; timestamp=1715954183200; clientId=6162797107938209; connectionId=kyPOsHUTFq] ]]; connectionId = y4QUaX-lX2 +modular.test.js:592 txChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=PRESENCE; id=kyPOsHUTFq:0; channel=channel; channelSerial=e7d4ExGGQBbzfj18717820@1715954183200-0; connectionId=kyPOsHUTFq; timestamp=1715954183200; presence=[ [PresenceMessage; action=enter; id=kyPOsHUTFq:0:0; timestamp=1715954183200; clientId=6162797107938209; connectionId=kyPOsHUTFq] ]]; connectionId = kyPOsHUTFq +modular.test.js:592 txChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ACK; count=1; msgSerial=0]; connectionId = kyPOsHUTFq +modular.test.js:612 LAWRENCE: end waiting for presence enter +modular.test.js:614 LAWRENCE: begin waiting for rxPresenceMessagePromise +modular.test.js:616 LAWRENCE: end waiting for rxPresenceMessagePromise +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b4169a1b-bfca-4a07-aa21-9c8fcceea4ef","method":"transformInterceptedMessage","params":{"id":"4d549b43-e115-4825-9f80-499b05edb9c0","connectionID":"8ca58a54-08d2-4ad6-af1c-4f6c41294895","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_QBQgqg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 4d549b43-e115-4825-9f80-499b05edb9c0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 4d549b43-e115-4825-9f80-499b05edb9c0 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"39ab93b4-ed1b-4a4c-b29b-bd85f012dc43","method":"transformInterceptedMessage","params":{"id":"409bfe83-ae10-4407-a6b8-024bdffe19e7","connectionID":"4e269d0f-837d-4701-be8f-bf608594a4db","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_QBQgqg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 409bfe83-ae10-4407-a6b8-024bdffe19e7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 409bfe83-ae10-4407-a6b8-024bdffe19e7 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_QBQgqg disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = y4QUaX-lX2 +modular.test.js:592 txChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_QBQgqg disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = kyPOsHUTFq +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"29c27579-5667-4de4-88e5-e8f095b490e2","method":"transformInterceptedMessage","params":{"id":"0bcb9b64-08fb-48c6-ac77-b3972a99e405","connectionID":"2b1d5517-a0d7-49eb-b199-b557b1db2a96","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954184661}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0bcb9b64-08fb-48c6-ac77-b3972a99e405 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0bcb9b64-08fb-48c6-ac77-b3972a99e405 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715954184661; error=[_ErrorInfo: Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = y4QUaX-lX2 +modular.test.js:580 rxChannel: Ably: Connection state: failed; reason: [_ErrorInfo: Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"31883944-1405-4076-bb35-f6b3b6643b8d","method":"transformInterceptedMessage","params":{"id":"58749a37-e260-4b86-9dd3-ef98b08940b7","connectionID":"9464a56e-f613-4a7a-b053-8fbf0f6595bb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954184670}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 58749a37-e260-4b86-9dd3-ef98b08940b7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 58749a37-e260-4b86-9dd3-ef98b08940b7 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:592 txChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715954184670; error=[_ErrorInfo: Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = kyPOsHUTFq +modular.test.js:592 txChannel: Ably: Connection state: failed; reason: [_ErrorInfo: Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:592 txChannel: Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Account _tmp_QBQgqg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +testapp_module.js:76 Test App _tmp_Jb47Yw has been torn down +interception_proxy_client.js:73 interception proxy client disconnected \ No newline at end of file diff --git a/with-failure-logs.txt b/with-failure-logs.txt new file mode 100644 index 000000000..bdaa5f115 --- /dev/null +++ b/with-failure-logs.txt @@ -0,0 +1,999 @@ +favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found) + connected to interception proxy + interception proxy sending startInterception request Object + interception proxy got message {"jsonrpc":"2.0","id":"8388829898810493","result":{}} + startInterception completed + Test App _tmp_QGtAug in environment sandbox has been set up + START TEST: browser/modular attempting to initialize with no client options BaseRest throws an error + 10:59:23.822 Ably: BaseRest(): BaseRest must be initialized with a client options object +errorLogger @ index.mjs:63 +(anonymous) @ index.mjs:51 +logAction @ index.mjs:105 +logActionNoStrip @ index.mjs:101 +_Logger.logAction @ index.mjs:136 +objectifyOptions @ index.mjs:549 +BaseRest @ index.mjs:2759 +(anonymous) @ modular.test.js:48 +assertThrows @ chai.js:3044 +methodWrapper @ chai.js:7910 +(anonymous) @ modular.test.js:48 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 + END TEST: browser/modular attempting to initialize with no client options BaseRest throws an error + START TEST: browser/modular attempting to initialize with no client options _BaseRealtime throws an error + 10:59:23.830 Ably: BaseRealtime(): BaseRealtime must be initialized with a client options object +errorLogger @ index.mjs:63 +(anonymous) @ index.mjs:51 +logAction @ index.mjs:105 +logActionNoStrip @ index.mjs:101 +_Logger.logAction @ index.mjs:136 +objectifyOptions @ index.mjs:549 +_BaseRealtime @ index.mjs:5527 +(anonymous) @ modular.test.js:48 +assertThrows @ chai.js:3044 +methodWrapper @ chai.js:7910 +(anonymous) @ modular.test.js:48 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 + END TEST: browser/modular attempting to initialize with no client options _BaseRealtime throws an error + START TEST: browser/modular attempting to initialize with just an API key BaseRest throws an error + 10:59:23.835 Ably: BaseRest(): BaseRest cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property. (Set this Ably API key as the object’s `key` property.) +errorLogger @ index.mjs:63 +(anonymous) @ index.mjs:51 +logAction @ index.mjs:105 +logActionNoStrip @ index.mjs:101 +_Logger.logAction @ index.mjs:136 +objectifyOptions @ index.mjs:566 +BaseRest @ index.mjs:2759 +(anonymous) @ modular.test.js:58 +assertThrows @ chai.js:3044 +methodWrapper @ chai.js:7910 +(anonymous) @ modular.test.js:58 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 + END TEST: browser/modular attempting to initialize with just an API key BaseRest throws an error + START TEST: browser/modular attempting to initialize with just an API key _BaseRealtime throws an error + 10:59:23.836 Ably: BaseRealtime(): BaseRealtime cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property. (Set this Ably API key as the object’s `key` property.) +errorLogger @ index.mjs:63 +(anonymous) @ index.mjs:51 +logAction @ index.mjs:105 +logActionNoStrip @ index.mjs:101 +_Logger.logAction @ index.mjs:136 +objectifyOptions @ index.mjs:566 +_BaseRealtime @ index.mjs:5527 +(anonymous) @ modular.test.js:58 +assertThrows @ chai.js:3044 +methodWrapper @ chai.js:7910 +(anonymous) @ modular.test.js:58 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 + END TEST: browser/modular attempting to initialize with just an API key _BaseRealtime throws an error + START TEST: browser/modular attempting to initialize with just a token BaseRest throws an error + 10:59:23.836 Ably: BaseRest(): BaseRest cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property. (Set this Ably Token as the object’s `token` property.) +errorLogger @ index.mjs:63 +(anonymous) @ index.mjs:51 +logAction @ index.mjs:105 +logActionNoStrip @ index.mjs:101 +_Logger.logAction @ index.mjs:136 +objectifyOptions @ index.mjs:557 +BaseRest @ index.mjs:2759 +(anonymous) @ modular.test.js:70 +assertThrows @ chai.js:3044 +methodWrapper @ chai.js:7910 +(anonymous) @ modular.test.js:70 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 + END TEST: browser/modular attempting to initialize with just a token BaseRest throws an error + START TEST: browser/modular attempting to initialize with just a token _BaseRealtime throws an error + 10:59:23.837 Ably: BaseRealtime(): BaseRealtime cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property. (Set this Ably Token as the object’s `token` property.) +errorLogger @ index.mjs:63 +(anonymous) @ index.mjs:51 +logAction @ index.mjs:105 +logActionNoStrip @ index.mjs:101 +_Logger.logAction @ index.mjs:136 +objectifyOptions @ index.mjs:557 +_BaseRealtime @ index.mjs:5527 +(anonymous) @ modular.test.js:70 +assertThrows @ chai.js:3044 +methodWrapper @ chai.js:7910 +(anonymous) @ modular.test.js:70 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 + END TEST: browser/modular attempting to initialize with just a token _BaseRealtime throws an error + START TEST: browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin + END TEST: browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin + START TEST: browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin + END TEST: browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality + END TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + interception proxy got message {"jsonrpc":"2.0","id":"4ba54e93-7485-4498-bf21-621655c6c66f","method":"transformInterceptedMessage","params":{"id":"a2030ea5-2b8e-419e-ad90-33bcbe1cbd69","connectionID":"3bfa65e2-7537-445f-9044-df257de03847","type":"text","data":"{\"action\":4,\"connectionId\":\"C7lxbPHOgM\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!C7lxbPHOgMAdINIq7FZVI3-293a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a2030ea5-2b8e-419e-ad90-33bcbe1cbd69 unaltered + interception proxy got result of transforming message a2030ea5-2b8e-419e-ad90-33bcbe1cbd69 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` + interception proxy got message {"jsonrpc":"2.0","id":"25d209a8-6b40-449f-b074-2ffabf0fdb26","method":"transformInterceptedMessage","params":{"id":"8c94dd75-710f-45a9-b3f6-f0617973af7a","connectionID":"7a429b07-dd5f-4d05-b20a-70d8fda0991b","type":"text","data":"{\"action\":4,\"connectionId\":\"I46olZLWRQ\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!I46olZLWRQAc_VrkykdBkf-293d\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8c94dd75-710f-45a9-b3f6-f0617973af7a unaltered + interception proxy got result of transforming message 8c94dd75-710f-45a9-b3f6-f0617973af7a Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` + interception proxy got message {"jsonrpc":"2.0","id":"1433998f-e25f-4f14-a248-678dfe699feb","method":"transformInterceptedMessage","params":{"id":"b168a78d-52b7-486f-bb00-a8fc5e9bdf72","connectionID":"966dbdca-02d1-4ca9-a7be-027af8d8313b","type":"text","data":"{\"action\":4,\"connectionId\":\"ZBMI8V9vHH\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dQFBPjwBbzfT!ZBMI8V9vHHAWP-1RDXlRTu-423d\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.039b.2.us-east-1-A.i-01fe288a84a67f672.e7dQFBPjwBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b168a78d-52b7-486f-bb00-a8fc5e9bdf72 unaltered + interception proxy got result of transforming message b168a78d-52b7-486f-bb00-a8fc5e9bdf72 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` + interception proxy got message {"jsonrpc":"2.0","id":"e6b4524b-7660-471b-bdae-1cb7ee6f7106","method":"transformInterceptedMessage","params":{"id":"45180076-60f7-4400-a03f-9c324dc520ba","connectionID":"3af1e5a9-2e17-44a2-88ff-a2ee8bf9cf27","type":"text","data":"{\"action\":4,\"connectionId\":\"eBeniK8XCx\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!eBeniK8XCxAZwMNR0LFLI7-2853\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 45180076-60f7-4400-a03f-9c324dc520ba unaltered + interception proxy got result of transforming message 45180076-60f7-4400-a03f-9c324dc520ba Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` + interception proxy got message {"jsonrpc":"2.0","id":"a4342bab-7d4a-4f37-909d-4b74a0eecb57","method":"transformInterceptedMessage","params":{"id":"39b6fc3b-f350-42d6-8adf-527ab88ed548","connectionID":"e8f9cb77-8b33-4c1c-bd2f-06e23f652dbb","type":"text","data":"{\"action\":4,\"connectionId\":\"167gdE0DTh\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!167gdE0DThAeTgfYeZTYlD-2855\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 39b6fc3b-f350-42d6-8adf-527ab88ed548 unaltered + interception proxy got result of transforming message 39b6fc3b-f350-42d6-8adf-527ab88ed548 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` + interception proxy got message {"jsonrpc":"2.0","id":"c2b66215-45cb-43f2-b83e-0220b018062c","method":"transformInterceptedMessage","params":{"id":"989f1f54-441b-4801-b405-9b15bbe3671a","connectionID":"9f744df1-ef34-4fd4-bb64-bcff520f9174","type":"text","data":"{\"action\":4,\"connectionId\":\"lyyXJGX6gn\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!lyyXJGX6gnAcUqcEwvA7ZK-2856\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 989f1f54-441b-4801-b405-9b15bbe3671a unaltered + interception proxy got result of transforming message 989f1f54-441b-4801-b405-9b15bbe3671a Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` + interception proxy got message {"jsonrpc":"2.0","id":"7385cf8d-ce98-4c11-8f7a-c6368f4eabf6","method":"transformInterceptedMessage","params":{"id":"bd2bd12a-6b42-4b03-aa77-ed9c5fd97d5e","connectionID":"42c5f679-1469-47d1-ba3d-9d560a394924","type":"text","data":"{\"action\":4,\"connectionId\":\"yfQCdPoyQ7\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!yfQCdPoyQ7AYUhUng8Y9XS-2857\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message bd2bd12a-6b42-4b03-aa77-ed9c5fd97d5e unaltered + interception proxy got result of transforming message bd2bd12a-6b42-4b03-aa77-ed9c5fd97d5e Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` + interception proxy got message {"jsonrpc":"2.0","id":"30ed09cb-d9b9-4be8-bbfe-764adbb854d7","method":"transformInterceptedMessage","params":{"id":"fb7a9208-2171-4231-ad15-e96ae3af6001","connectionID":"c7b2433c-cb3f-4da2-8b74-6b47d1fab9eb","type":"text","data":"{\"action\":4,\"connectionId\":\"a5_FqhEvyg\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7d5jA5ewBbzhQ!a5_FqhEvygATENzXFsFINV-351a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.1ca9.1.us-east-1-A.i-0112a1dedf234209a.e7d5jA5ewBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fb7a9208-2171-4231-ad15-e96ae3af6001 unaltered + interception proxy got result of transforming message fb7a9208-2171-4231-ad15-e96ae3af6001 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` + START TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing + interception proxy got message {"jsonrpc":"2.0","id":"7a8ec9f0-298f-4cff-aecc-092da65b2442","method":"transformInterceptedMessage","params":{"id":"8dc59892-fd1d-42d1-b7ce-1a7ed870317b","connectionID":"141c38ef-ad38-4e56-bb7a-6d8ac3c6d03b","type":"text","data":"{\"action\":4,\"connectionId\":\"j0dho9mEOs\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dQFBPjwBbzfT!j0dho9mEOsARs-bigT1qvS-423f\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.039b.2.us-east-1-A.i-01fe288a84a67f672.e7dQFBPjwBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8dc59892-fd1d-42d1-b7ce-1a7ed870317b unaltered + interception proxy got result of transforming message 8dc59892-fd1d-42d1-b7ce-1a7ed870317b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1914a58a-4aa9-440e-bb9b-9dc60e2088c8","method":"transformInterceptedMessage","params":{"id":"74b13ab3-b130-4215-a05c-c5b6f7365244","connectionID":"81120032-6cad-49a3-a2ee-839e13f797dc","type":"text","data":"{\"action\":4,\"connectionId\":\"v7FbHwtYOL\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!v7FbHwtYOLAbKZk7S2hjob-293e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 74b13ab3-b130-4215-a05c-c5b6f7365244 unaltered + interception proxy got result of transforming message 74b13ab3-b130-4215-a05c-c5b6f7365244 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c20428c3-e37d-46e6-b802-8c1618cc08c5","method":"transformInterceptedMessage","params":{"id":"e9414fb1-df13-456b-a04c-abbd5aeb39b1","connectionID":"9da96eea-ef43-462f-90d5-6db5274748ea","type":"text","data":"{\"action\":4,\"connectionId\":\"_MEgq0GFc3\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!_MEgq0GFc3ASR59uH6Sg2x-34ef\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e9414fb1-df13-456b-a04c-abbd5aeb39b1 unaltered + interception proxy got result of transforming message e9414fb1-df13-456b-a04c-abbd5aeb39b1 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"38884047-6105-4dfb-8edf-797d72f9965b","method":"transformInterceptedMessage","params":{"id":"25d24ceb-a2d7-4f1f-b5f3-85ac0376c7e7","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":4,\"connectionId\":\"2_dYK13ZvL\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!2_dYK13ZvLAccL24hKd5ii-293f\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 25d24ceb-a2d7-4f1f-b5f3-85ac0376c7e7 unaltered + interception proxy got result of transforming message 25d24ceb-a2d7-4f1f-b5f3-85ac0376c7e7 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"74dcb8f6-82b8-48b2-80d5-e7279dcc88d5","method":"transformInterceptedMessage","params":{"id":"dd04d17e-f59a-4804-b707-ab17bd2ba2bc","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dd04d17e-f59a-4804-b707-ab17bd2ba2bc unaltered + interception proxy got result of transforming message dd04d17e-f59a-4804-b707-ab17bd2ba2bc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"901bc633-434b-4993-ba8d-ad919291d478","method":"transformInterceptedMessage","params":{"id":"941a67cd-0ccf-471a-a904-7adb5d816c4e","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954370685-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 941a67cd-0ccf-471a-a904-7adb5d816c4e unaltered + interception proxy got result of transforming message 941a67cd-0ccf-471a-a904-7adb5d816c4e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7f2a3c7e-339a-4e83-b3fb-f3b204e8a50c","method":"transformInterceptedMessage","params":{"id":"79a96e57-8368-47ab-868f-34f0327631cc","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 79a96e57-8368-47ab-868f-34f0327631cc unaltered + interception proxy got result of transforming message 79a96e57-8368-47ab-868f-34f0327631cc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ab8ef296-dd94-456c-b4f8-a1b61137708f","method":"transformInterceptedMessage","params":{"id":"ef22f3bb-a925-4f79-ba34-e085a996abd5","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":15,\"id\":\"2_dYK13ZvL:0\",\"connectionId\":\"2_dYK13ZvL\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954372176-0\",\"timestamp\":1715954372176,\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ef22f3bb-a925-4f79-ba34-e085a996abd5 unaltered + interception proxy got result of transforming message ef22f3bb-a925-4f79-ba34-e085a996abd5 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9b94edd1-6616-4127-a0d9-2fe510b5b5d8","method":"transformInterceptedMessage","params":{"id":"7edc7b88-3ae6-44aa-81ca-49c39fda733e","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7edc7b88-3ae6-44aa-81ca-49c39fda733e unaltered + interception proxy got result of transforming message 7edc7b88-3ae6-44aa-81ca-49c39fda733e Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing + START TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` + START TEST: browser/modular Crypto standalone functions generateRandomKey + END TEST: browser/modular Crypto standalone functions generateRandomKey + START TEST: browser/modular Crypto standalone functions getDefaultCryptoParams + END TEST: browser/modular Crypto standalone functions getDefaultCryptoParams + START TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data + END TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data + START TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher + END TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher + START TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data + END TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data + START TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message + END TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message + START TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data + END TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data + START TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher + END TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher + START TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data + END TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data + START TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages + END TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages + START TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher + END TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher + START TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher + END TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher + START TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages + interception proxy got message {"jsonrpc":"2.0","id":"e1464fda-b460-47da-9259-a1e130c2801e","method":"transformInterceptedMessage","params":{"id":"1fc33138-fd6a-4aef-aa37-de72d7b1deca","connectionID":"8220c20c-829e-48f8-afca-ac5ed3cca3de","type":"text","data":"{\"action\":4,\"connectionId\":\"xaT4xwcFLh\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!xaT4xwcFLhATJXk8YTFfqc-2940\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1fc33138-fd6a-4aef-aa37-de72d7b1deca unaltered + interception proxy got result of transforming message 1fc33138-fd6a-4aef-aa37-de72d7b1deca Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a8c5703d-d86f-4a9f-a013-cb1157705098","method":"transformInterceptedMessage","params":{"id":"12265104-c11d-4b15-820e-0a52def5bd19","connectionID":"a33f327a-f3c6-44c1-b70c-a634b9e008a5","type":"text","data":"{\"action\":4,\"connectionId\":\"EWmP0Kzpea\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!EWmP0KzpeaAU4_a7jXFXKR-34f1\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 12265104-c11d-4b15-820e-0a52def5bd19 unaltered + interception proxy got result of transforming message 12265104-c11d-4b15-820e-0a52def5bd19 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9c9a059e-760b-4668-a4b9-cc18de487d63","method":"transformInterceptedMessage","params":{"id":"04238321-1274-421f-9cd7-5621f0a8bea0","connectionID":"4a505a02-a3c4-4f5d-8c0d-1919334bc212","type":"text","data":"{\"action\":4,\"connectionId\":\"Su-pME141y\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!Su-pME141yAfbfQEpg4kkJ-285f\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 04238321-1274-421f-9cd7-5621f0a8bea0 unaltered + interception proxy got result of transforming message 04238321-1274-421f-9cd7-5621f0a8bea0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6ad19a1f-d552-4971-8985-2f2f1a725126","method":"transformInterceptedMessage","params":{"id":"775187f3-bef0-49f5-a8e4-2125afda638b","connectionID":"4f83a01e-eb76-40fc-ad1b-7e34dde7630d","type":"text","data":"{\"action\":4,\"connectionId\":\"e6BeHZ3CaS\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dUVsT6wBbzfT!e6BeHZ3CaSAfgccS-_jwxq-4371\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 775187f3-bef0-49f5-a8e4-2125afda638b unaltered + interception proxy got result of transforming message 775187f3-bef0-49f5-a8e4-2125afda638b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7b611662-5f44-4154-80be-3f9e3a73abd3","method":"transformInterceptedMessage","params":{"id":"939f1c5e-defc-4388-ad1c-93790c2c3e75","connectionID":"6badd260-aa30-4eb7-838c-f2688355c082","type":"text","data":"{\"action\":4,\"connectionId\":\"YA0KseTNq8\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dUVsT6wBbzfT!YA0KseTNq8Aez1pKn3UHc_-4372\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 939f1c5e-defc-4388-ad1c-93790c2c3e75 unaltered + interception proxy got result of transforming message 939f1c5e-defc-4388-ad1c-93790c2c3e75 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ae82863d-ea79-419b-a383-7758314c05d3","method":"transformInterceptedMessage","params":{"id":"ed5dacae-40da-48ba-91f8-e7d2822b7549","connectionID":"60e57a96-2d63-4a6f-9e1b-064b02f16d70","type":"text","data":"{\"action\":4,\"connectionId\":\"JLwI9cncQP\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!JLwI9cncQPAS1ysE8osQ3W-34f3\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ed5dacae-40da-48ba-91f8-e7d2822b7549 unaltered + interception proxy got result of transforming message ed5dacae-40da-48ba-91f8-e7d2822b7549 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d8ac5aae-cb61-4a44-988b-379abaf3ef14","method":"transformInterceptedMessage","params":{"id":"eacc4546-bf18-42e3-816e-226a452b2136","connectionID":"9e405b63-9b9e-46de-b318-d20837b070e6","type":"text","data":"{\"action\":4,\"connectionId\":\"yCLrvFFBN5\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!yCLrvFFBN5AUZt_WHoGU2S-2941\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message eacc4546-bf18-42e3-816e-226a452b2136 unaltered + interception proxy got result of transforming message eacc4546-bf18-42e3-816e-226a452b2136 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8a5d243e-7fe6-4898-b671-1340d33f0e86","method":"transformInterceptedMessage","params":{"id":"f3ad8daf-c6c5-44af-85bc-86473705939d","connectionID":"f2ecb0c8-2270-42f7-be22-25749123b9d9","type":"text","data":"{\"action\":4,\"connectionId\":\"mAv7Onh23M\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!mAv7Onh23MAa_xGIY0MQjl-2860\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f3ad8daf-c6c5-44af-85bc-86473705939d unaltered + interception proxy got result of transforming message f3ad8daf-c6c5-44af-85bc-86473705939d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d522cc95-a349-4550-839c-fa94cf54bfc7","method":"transformInterceptedMessage","params":{"id":"456034f4-7152-415f-a433-70f61b3b805b","connectionID":"deb7f843-f7ce-463e-ab06-422ece0433b0","type":"text","data":"{\"action\":4,\"connectionId\":\"GCsbr2QTfV\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!GCsbr2QTfVASOqFVAVfgnv-34f4\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 456034f4-7152-415f-a433-70f61b3b805b unaltered + interception proxy got result of transforming message 456034f4-7152-415f-a433-70f61b3b805b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"529b9c88-71b9-4c1b-b68f-7e51fe616de5","method":"transformInterceptedMessage","params":{"id":"a0cd055a-1346-4cfd-9187-e8f6fa84123d","connectionID":"1acd96f3-8685-4c2b-ac5b-5c26689d1de4","type":"text","data":"{\"action\":4,\"connectionId\":\"qtuvjRt5Ck\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7d5jA5ewBbzhQ!qtuvjRt5CkAcld-svZ-O6M-3521\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.1ca9.1.us-east-1-A.i-0112a1dedf234209a.e7d5jA5ewBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a0cd055a-1346-4cfd-9187-e8f6fa84123d unaltered + interception proxy got result of transforming message a0cd055a-1346-4cfd-9187-e8f6fa84123d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d7271aa7-fcd2-4697-9ccd-3f4674d505f6","method":"transformInterceptedMessage","params":{"id":"81e91bb4-7b60-4e2a-b743-ef8ed6e19adb","connectionID":"f344d151-b39b-448b-8b02-682da750cace","type":"text","data":"{\"action\":4,\"connectionId\":\"X5PxPMxiQG\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dQFBPjwBbzfT!X5PxPMxiQGAT7Z3Z0rpUUb-4244\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.039b.2.us-east-1-A.i-01fe288a84a67f672.e7dQFBPjwBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 81e91bb4-7b60-4e2a-b743-ef8ed6e19adb unaltered + interception proxy got result of transforming message 81e91bb4-7b60-4e2a-b743-ef8ed6e19adb Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b9371623-e47e-4bfd-a16a-6cc6f4721804","method":"transformInterceptedMessage","params":{"id":"c4584639-d42a-421d-a8a0-521aa1a1fd47","connectionID":"322d025b-45c9-470c-ae96-c82c959204bc","type":"text","data":"{\"action\":4,\"connectionId\":\"m1f8bYVgkH\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!m1f8bYVgkHAdr9QLKCGhsM-34f6\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c4584639-d42a-421d-a8a0-521aa1a1fd47 unaltered + interception proxy got result of transforming message c4584639-d42a-421d-a8a0-521aa1a1fd47 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e4ddc476-0430-40e0-8464-dddf53ccb4ae","method":"transformInterceptedMessage","params":{"id":"778a8e8d-106b-47e2-b26f-0cf229327d4c","connectionID":"ab0e622c-2a3a-4be2-9e3f-4f4c98366298","type":"text","data":"{\"action\":4,\"connectionId\":\"xabmnQXBkS\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!xabmnQXBkSAb56-aVwLmJX-34f7\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 778a8e8d-106b-47e2-b26f-0cf229327d4c unaltered + interception proxy got result of transforming message 778a8e8d-106b-47e2-b26f-0cf229327d4c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"787bfdd1-612f-4244-91e2-875535771642","method":"transformInterceptedMessage","params":{"id":"c8e4dd5d-150d-4b5e-a58e-1493b0827b22","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":4,\"connectionId\":\"pW0BYvJs-Y\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dUVsT6wBbzfT!pW0BYvJs-YAYhZWZVHzzv_-4373\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c8e4dd5d-150d-4b5e-a58e-1493b0827b22 unaltered + interception proxy got result of transforming message c8e4dd5d-150d-4b5e-a58e-1493b0827b22 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1f47fb11-ef05-4473-af3a-d02d2552eade","method":"transformInterceptedMessage","params":{"id":"5c15de36-6a2e-4a2d-b06e-07f11dff9b6d","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5c15de36-6a2e-4a2d-b06e-07f11dff9b6d unaltered + interception proxy got result of transforming message 5c15de36-6a2e-4a2d-b06e-07f11dff9b6d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d14c63ca-6a08-472c-b7a3-4d4dac19d6ea","method":"transformInterceptedMessage","params":{"id":"2f5dc95c-017a-41f5-aeb1-c19f1a4617e8","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954372176-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2f5dc95c-017a-41f5-aeb1-c19f1a4617e8 unaltered + interception proxy got result of transforming message 2f5dc95c-017a-41f5-aeb1-c19f1a4617e8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4f002228-79cd-45ab-afe3-d8ca2e15d763","method":"transformInterceptedMessage","params":{"id":"f551231d-620e-476d-9d4a-b8a94d33df0a","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":15,\"id\":\"U9DAF7AL3Dbh\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954373219-0\",\"timestamp\":1715954373219,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"hqloybuJKEC3HEza0UNBCBBxOUHt3R2qvcn96YNtgRs=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f551231d-620e-476d-9d4a-b8a94d33df0a unaltered + interception proxy got result of transforming message f551231d-620e-476d-9d4a-b8a94d33df0a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"93faf978-8f72-4d38-b9b8-5e8270ea6131","method":"transformInterceptedMessage","params":{"id":"a7d0b3c7-7c02-45e7-8fe9-84ac13879ff8","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":15,\"id\":\"U9DAF7AL3Dbh\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954373219-0\",\"timestamp\":1715954373219,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"hqloybuJKEC3HEza0UNBCBBxOUHt3R2qvcn96YNtgRs=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a7d0b3c7-7c02-45e7-8fe9-84ac13879ff8 unaltered + interception proxy got result of transforming message a7d0b3c7-7c02-45e7-8fe9-84ac13879ff8 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages + START TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages + interception proxy got message {"jsonrpc":"2.0","id":"4f5a557d-88a7-4c2d-bd71-4150053daab7","method":"transformInterceptedMessage","params":{"id":"80cf6264-96b7-4de6-a94e-45fe6b5b2e92","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":4,\"connectionId\":\"3SRzdkAKZ7\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dMmMNTQBbzjM!3SRzdkAKZ7AUq81Jw0IsIm-2943\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.09b0.2.us-east-1-A.i-0fa407612c4f12887.e7dMmMNTQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 80cf6264-96b7-4de6-a94e-45fe6b5b2e92 unaltered + interception proxy got result of transforming message 80cf6264-96b7-4de6-a94e-45fe6b5b2e92 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e493ca08-a9ed-466d-8551-ca7efc92a4c0","method":"transformInterceptedMessage","params":{"id":"301a0763-4a0a-4030-8660-f7974153120a","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 301a0763-4a0a-4030-8660-f7974153120a unaltered + interception proxy got result of transforming message 301a0763-4a0a-4030-8660-f7974153120a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"935a6ca4-29f9-442b-8d4f-7a378c349464","method":"transformInterceptedMessage","params":{"id":"b53f6287-77bb-4b3a-9225-45bd48b488ea","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954373219-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b53f6287-77bb-4b3a-9225-45bd48b488ea unaltered + interception proxy got result of transforming message b53f6287-77bb-4b3a-9225-45bd48b488ea Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2d36c92f-111f-41e3-a5f9-96a9be057964","method":"transformInterceptedMessage","params":{"id":"e48ae76d-3e1b-4c7a-b1b8-45353d00a230","connectionID":"69b0d7ee-84ff-4eb0-a775-ca395ae6b4c0","type":"text","data":"{\"action\":4,\"connectionId\":\"HCPFF0CjE_\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!HCPFF0CjE_AY6RykvAivSO-2864\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e48ae76d-3e1b-4c7a-b1b8-45353d00a230 unaltered + interception proxy got result of transforming message e48ae76d-3e1b-4c7a-b1b8-45353d00a230 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2a4b2332-f884-4956-bfe3-8e37a10c16d8","method":"transformInterceptedMessage","params":{"id":"6c63b7d9-2eda-44e1-9a02-1ef091fbc355","connectionID":"69b0d7ee-84ff-4eb0-a775-ca395ae6b4c0","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"bFy7lHX7yw5leiiqdMx9vgFUhCBimYfkwLAOGD6sNro=\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6c63b7d9-2eda-44e1-9a02-1ef091fbc355 unaltered + interception proxy got result of transforming message 6c63b7d9-2eda-44e1-9a02-1ef091fbc355 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"5a795fca-88ac-4a4e-97cf-6b46e9684fd6","method":"transformInterceptedMessage","params":{"id":"077672bd-c58e-42a5-b1b5-057919ae65de","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":15,\"id\":\"HCPFF0CjE_:0\",\"connectionId\":\"HCPFF0CjE_\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954374507-0\",\"timestamp\":1715954374507,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"bFy7lHX7yw5leiiqdMx9vgFUhCBimYfkwLAOGD6sNro=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 077672bd-c58e-42a5-b1b5-057919ae65de unaltered + interception proxy got result of transforming message 077672bd-c58e-42a5-b1b5-057919ae65de Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b92881ef-f3e4-4e4e-a5aa-d0556d007b17","method":"transformInterceptedMessage","params":{"id":"8acd086e-9cbc-4654-b2c8-977a543f3b8e","connectionID":"69b0d7ee-84ff-4eb0-a775-ca395ae6b4c0","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8acd086e-9cbc-4654-b2c8-977a543f3b8e unaltered + interception proxy got result of transforming message 8acd086e-9cbc-4654-b2c8-977a543f3b8e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"438b7cd5-5363-4d26-843e-a893d5e88104","method":"transformInterceptedMessage","params":{"id":"aefa9a37-d91f-4576-9d86-dd6284778a18","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":15,\"id\":\"HCPFF0CjE_:0\",\"connectionId\":\"HCPFF0CjE_\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954374507-0\",\"timestamp\":1715954374507,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"bFy7lHX7yw5leiiqdMx9vgFUhCBimYfkwLAOGD6sNro=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message aefa9a37-d91f-4576-9d86-dd6284778a18 unaltered + interception proxy got result of transforming message aefa9a37-d91f-4576-9d86-dd6284778a18 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"239545a1-df80-4ff0-af2a-444c4feee1b3","method":"transformInterceptedMessage","params":{"id":"0fa0f478-3129-4e80-848b-742c72d5722e","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":15,\"id\":\"HCPFF0CjE_:0\",\"connectionId\":\"HCPFF0CjE_\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954374507-0\",\"timestamp\":1715954374507,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"bFy7lHX7yw5leiiqdMx9vgFUhCBimYfkwLAOGD6sNro=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0fa0f478-3129-4e80-848b-742c72d5722e unaltered + interception proxy got result of transforming message 0fa0f478-3129-4e80-848b-742c72d5722e Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages + START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON + END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON + START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON + END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON + START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack + END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack + START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack + END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack + START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property + END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property + START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage + interception proxy got message {"jsonrpc":"2.0","id":"6e9e6653-1e62-41ec-b622-021a48fc8530","method":"transformInterceptedMessage","params":{"id":"dd1506ad-10ed-4450-b9df-6373e74bb54a","connectionID":"7384126a-fce2-4136-b2bb-9c1bbf2e9dec","type":"text","data":"{\"action\":4,\"connectionId\":\"-QaQemmba1\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dUVsT6wBbzfT!-QaQemmba1AW24KRu5LMcH-4378\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dd1506ad-10ed-4450-b9df-6373e74bb54a unaltered + interception proxy got result of transforming message dd1506ad-10ed-4450-b9df-6373e74bb54a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a9621610-927c-42fd-ad51-1beed899c8a3","method":"transformInterceptedMessage","params":{"id":"21d2175a-f5d0-44f5-aa59-516f5ce1f959","connectionID":"7e0d5cf3-4324-4167-991b-c2b28ca0a1f3","type":"text","data":"{\"action\":4,\"connectionId\":\"jlNdqd2aXo\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dHlxZVQBbzjM!jlNdqd2aXoAS22-70YTmA9-2868\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.2fe8.1.us-east-1-A.i-0fa407612c4f12887.e7dHlxZVQBbzjM\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 21d2175a-f5d0-44f5-aa59-516f5ce1f959 unaltered + interception proxy got result of transforming message 21d2175a-f5d0-44f5-aa59-516f5ce1f959 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"19003acc-2205-4b66-a10c-459938ffb621","method":"transformInterceptedMessage","params":{"id":"fbf31e1c-2dd0-441f-a62a-fca9d201a170","connectionID":"7384126a-fce2-4136-b2bb-9c1bbf2e9dec","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fbf31e1c-2dd0-441f-a62a-fca9d201a170 unaltered + interception proxy got result of transforming message fbf31e1c-2dd0-441f-a62a-fca9d201a170 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"95563aba-76dd-45c2-92fe-bdc25501d534","method":"transformInterceptedMessage","params":{"id":"2695c7e1-8cde-46a0-93a1-92311f22c62b","connectionID":"7384126a-fce2-4136-b2bb-9c1bbf2e9dec","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954374507-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2695c7e1-8cde-46a0-93a1-92311f22c62b unaltered + interception proxy got result of transforming message 2695c7e1-8cde-46a0-93a1-92311f22c62b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"783579dc-a13e-487a-94c7-1b75a9fe8285","method":"transformInterceptedMessage","params":{"id":"a18e0401-3b22-4897-9298-387180ef5803","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":4,\"connectionId\":\"IYVCZpktng\",\"connectionDetails\":{\"clientId\":\"23044067131194756\",\"connectionKey\":\"e7dUVsT6wBbzfT!IYVCZpktngAUQkmMq0w4bt-437a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.fd57.1.us-east-1-A.i-01fe288a84a67f672.e7dUVsT6wBbzfT\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a18e0401-3b22-4897-9298-387180ef5803 unaltered + interception proxy got result of transforming message a18e0401-3b22-4897-9298-387180ef5803 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ad9d7255-1d2c-4379-892f-0cd520c79430","method":"transformInterceptedMessage","params":{"id":"90ab0491-da76-437c-9837-5b3d04164a13","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"data\":\"body\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 90ab0491-da76-437c-9837-5b3d04164a13 unaltered + interception proxy got result of transforming message 90ab0491-da76-437c-9837-5b3d04164a13 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a69d3f6a-aefe-40e3-a8e2-5e78cda9bd64","method":"transformInterceptedMessage","params":{"id":"8133d55a-9738-4c3b-a2ee-b5fdc42a6960","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":15,\"id\":\"IYVCZpktng:0\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954375828-0\",\"timestamp\":1715954375828,\"messages\":[{\"clientId\":\"23044067131194756\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8133d55a-9738-4c3b-a2ee-b5fdc42a6960 unaltered + interception proxy got result of transforming message 8133d55a-9738-4c3b-a2ee-b5fdc42a6960 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"924bb806-8d18-4edc-af07-e19bb23515c3","method":"transformInterceptedMessage","params":{"id":"1b2c5910-c1a4-4da8-8435-a75915035683","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":15,\"id\":\"IYVCZpktng:0\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954375828-0\",\"timestamp\":1715954375828,\"messages\":[{\"clientId\":\"23044067131194756\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1b2c5910-c1a4-4da8-8435-a75915035683 unaltered + interception proxy got result of transforming message 1b2c5910-c1a4-4da8-8435-a75915035683 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d5961e30-33f8-4e24-91b8-b271d466d0af","method":"transformInterceptedMessage","params":{"id":"b57f3b24-1908-486c-879c-a1424a0f476f","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":15,\"id\":\"IYVCZpktng:0\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954375828-0\",\"timestamp\":1715954375828,\"messages\":[{\"clientId\":\"23044067131194756\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b57f3b24-1908-486c-879c-a1424a0f476f unaltered + interception proxy got result of transforming message b57f3b24-1908-486c-879c-a1424a0f476f Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d690e4a8-b3c5-4d8c-a379-d07afa08a8a4","method":"transformInterceptedMessage","params":{"id":"4f44083a-d75a-4b9a-b7ac-40e12493a55c","connectionID":"7384126a-fce2-4136-b2bb-9c1bbf2e9dec","type":"text","data":"{\"action\":15,\"id\":\"IYVCZpktng:0\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954375828-0\",\"timestamp\":1715954375828,\"messages\":[{\"clientId\":\"23044067131194756\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4f44083a-d75a-4b9a-b7ac-40e12493a55c unaltered + interception proxy got result of transforming message 4f44083a-d75a-4b9a-b7ac-40e12493a55c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b69d9150-cc13-4fee-94e0-cefa6067f079","method":"transformInterceptedMessage","params":{"id":"edfa16ac-7b73-48f0-8e61-027204b4fa1f","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message edfa16ac-7b73-48f0-8e61-027204b4fa1f unaltered + interception proxy got result of transforming message edfa16ac-7b73-48f0-8e61-027204b4fa1f Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a56db62f-5b8d-4a83-9a19-685eb7336fa3","method":"transformInterceptedMessage","params":{"id":"a9a66ba2-f199-4062-b027-9bca430c9d6e","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a9a66ba2-f199-4062-b027-9bca430c9d6e unaltered + interception proxy got result of transforming message a9a66ba2-f199-4062-b027-9bca430c9d6e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3dbeaec6-ff18-4eb3-a5d1-9a74c9174910","method":"transformInterceptedMessage","params":{"id":"be10ba41-7145-4307-a085-0a02eb37e270","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954375828-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message be10ba41-7145-4307-a085-0a02eb37e270 unaltered + interception proxy got result of transforming message be10ba41-7145-4307-a085-0a02eb37e270 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4c3b35a1-6c79-48dd-8df4-79c8de5ce24d","method":"transformInterceptedMessage","params":{"id":"b1e0468f-47ea-44d3-9785-f96c45c91e4d","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":14,\"channel\":\"channel\",\"presence\":[{\"action\":2}],\"msgSerial\":1}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b1e0468f-47ea-44d3-9785-f96c45c91e4d unaltered + interception proxy got result of transforming message b1e0468f-47ea-44d3-9785-f96c45c91e4d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ff8e9dbe-1f0f-48f0-a973-3e8b8b78fc06","method":"transformInterceptedMessage","params":{"id":"b5479285-306b-453f-b281-374c169de2ea","connectionID":"7384126a-fce2-4136-b2bb-9c1bbf2e9dec","type":"text","data":"{\"action\":14,\"id\":\"IYVCZpktng:1\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954376093-0\",\"timestamp\":1715954376093,\"presence\":[{\"id\":\"IYVCZpktng:1:0\",\"clientId\":\"23044067131194756\",\"connectionId\":\"IYVCZpktng\",\"timestamp\":1715954376093,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b5479285-306b-453f-b281-374c169de2ea unaltered + interception proxy got result of transforming message b5479285-306b-453f-b281-374c169de2ea Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a3bc48d8-6bea-4146-a3bf-97b8e3143bf9","method":"transformInterceptedMessage","params":{"id":"3c172ec6-cb61-4518-9a8e-ccd551f999b7","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":14,\"id\":\"IYVCZpktng:1\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954376093-0\",\"timestamp\":1715954376093,\"presence\":[{\"id\":\"IYVCZpktng:1:0\",\"clientId\":\"23044067131194756\",\"connectionId\":\"IYVCZpktng\",\"timestamp\":1715954376093,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3c172ec6-cb61-4518-9a8e-ccd551f999b7 unaltered + interception proxy got result of transforming message 3c172ec6-cb61-4518-9a8e-ccd551f999b7 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"51c5ebdd-8237-4216-8e52-15d8660aa37f","method":"transformInterceptedMessage","params":{"id":"a783357a-6884-4460-a66f-bcacd648e5d9","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":14,\"id\":\"IYVCZpktng:1\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954376093-0\",\"timestamp\":1715954376093,\"presence\":[{\"id\":\"IYVCZpktng:1:0\",\"clientId\":\"23044067131194756\",\"connectionId\":\"IYVCZpktng\",\"timestamp\":1715954376093,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a783357a-6884-4460-a66f-bcacd648e5d9 unaltered + interception proxy got result of transforming message a783357a-6884-4460-a66f-bcacd648e5d9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"abfbcbf3-4638-46a1-ba9a-31326e355eaa","method":"transformInterceptedMessage","params":{"id":"f5eae806-befb-4729-a958-ab1cd96694de","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":14,\"id\":\"IYVCZpktng:1\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954376093-0\",\"timestamp\":1715954376093,\"presence\":[{\"id\":\"IYVCZpktng:1:0\",\"clientId\":\"23044067131194756\",\"connectionId\":\"IYVCZpktng\",\"timestamp\":1715954376093,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f5eae806-befb-4729-a958-ab1cd96694de unaltered + interception proxy got result of transforming message f5eae806-befb-4729-a958-ab1cd96694de Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d18a53d8-2e7e-412d-871f-58fce88e502c","method":"transformInterceptedMessage","params":{"id":"97a89029-6c7a-493e-9ab0-97eee8b5a66a","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":14,\"id\":\"IYVCZpktng:1\",\"connectionId\":\"IYVCZpktng\",\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954376093-0\",\"timestamp\":1715954376093,\"presence\":[{\"id\":\"IYVCZpktng:1:0\",\"clientId\":\"23044067131194756\",\"connectionId\":\"IYVCZpktng\",\"timestamp\":1715954376093,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 97a89029-6c7a-493e-9ab0-97eee8b5a66a unaltered + interception proxy got result of transforming message 97a89029-6c7a-493e-9ab0-97eee8b5a66a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ffa79795-f998-4a80-ad8f-0cc7980b9600","method":"transformInterceptedMessage","params":{"id":"17e82fe7-8866-4c38-98ef-7bc21b8a7422","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":1}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 17e82fe7-8866-4c38-98ef-7bc21b8a7422 unaltered + interception proxy got result of transforming message 17e82fe7-8866-4c38-98ef-7bc21b8a7422 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage + START TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality + LAWRENCE: begin waiting for presence subscribe + interception proxy got message {"jsonrpc":"2.0","id":"3ff14853-92f9-4e42-825c-087e7b1c650c","method":"transformInterceptedMessage","params":{"id":"d8abede0-4c75-4032-9f5a-388b92543a8d","connectionID":"fd6b1724-9e8f-4f7b-9e0a-8d01f5c37168","type":"text","data":"{\"action\":4,\"connectionId\":\"LS0WeOkO2k\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dj_O36QBbzhQ!LS0WeOkO2kAc56q2ZVNIsv-3505\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.22ca.2.us-east-1-A.i-0112a1dedf234209a.e7dj_O36QBbzhQ\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d8abede0-4c75-4032-9f5a-388b92543a8d unaltered + interception proxy got result of transforming message d8abede0-4c75-4032-9f5a-388b92543a8d Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=LS0WeOkO2k]; connectionId = undefined + rxChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] + interception proxy got message {"jsonrpc":"2.0","id":"73878989-417f-4cd9-96e9-f5c56126f9e2","method":"transformInterceptedMessage","params":{"id":"a7539c8d-c675-48f4-9da6-02496f764f31","connectionID":"fd6b1724-9e8f-4f7b-9e0a-8d01f5c37168","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a7539c8d-c675-48f4-9da6-02496f764f31 unaltered + interception proxy got result of transforming message a7539c8d-c675-48f4-9da6-02496f764f31 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"af36b536-1bfd-48f9-ad4d-703617747ec7","method":"transformInterceptedMessage","params":{"id":"b1802286-0eb5-44a2-afe4-315bad9a7708","connectionID":"fd6b1724-9e8f-4f7b-9e0a-8d01f5c37168","type":"text","data":"{\"action\":11,\"flags\":983105,\"channel\":\"channel\",\"channelSerial\":\"e7d-yC80gBbzi999759757@1715954376093-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b1802286-0eb5-44a2-afe4-315bad9a7708 unaltered + interception proxy got result of transforming message b1802286-0eb5-44a2-afe4-315bad9a7708 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ce12d85b-6c34-464a-917c-d3b33430204e","method":"transformInterceptedMessage","params":{"id":"fdee1561-123f-4f44-a5d2-710a9982135d","connectionID":"fd6b1724-9e8f-4f7b-9e0a-8d01f5c37168","type":"text","data":"{\"action\":16,\"channel\":\"channel\",\"channelSerial\":\"e7dj_O36QBbzhQ63092889:\",\"presence\":[{\"id\":\"IYVCZpktng:1:0\",\"clientId\":\"23044067131194756\",\"connectionId\":\"IYVCZpktng\",\"timestamp\":1715954376093,\"action\":1}],\"count\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fdee1561-123f-4f44-a5d2-710a9982135d unaltered + interception proxy got result of transforming message fdee1561-123f-4f44-a5d2-710a9982135d Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7d-yC80gBbzi999759757@1715954376093-0; flags=HAS_PRESENCE,PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = LS0WeOkO2k + LAWRENCE: end waiting for presence subscribe + LAWRENCE: begin waiting for presence enter + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=SYNC; channel=channel; channelSerial=e7dj_O36QBbzhQ63092889:; count=0; presence=[ [PresenceMessage; action=present; id=IYVCZpktng:1:0; timestamp=1715954376093; clientId=23044067131194756; connectionId=IYVCZpktng] ]]; connectionId = LS0WeOkO2k + interception proxy got message {"jsonrpc":"2.0","id":"8502232d-b1b2-4f7d-8588-a67578502a72","method":"transformInterceptedMessage","params":{"id":"afbfdb81-6eb3-413d-a569-25a34152031b","connectionID":"3bfa65e2-7537-445f-9044-df257de03847","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message afbfdb81-6eb3-413d-a569-25a34152031b unaltered + interception proxy got result of transforming message afbfdb81-6eb3-413d-a569-25a34152031b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4541aeca-6fb9-41b7-987f-5d3d2c39316f","method":"transformInterceptedMessage","params":{"id":"b27c970f-5fbf-445c-b8a3-2da18542440c","connectionID":"7a429b07-dd5f-4d05-b20a-70d8fda0991b","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b27c970f-5fbf-445c-b8a3-2da18542440c unaltered + interception proxy got result of transforming message b27c970f-5fbf-445c-b8a3-2da18542440c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3950e683-906a-480d-8ce2-6da5d9bae8bf","method":"transformInterceptedMessage","params":{"id":"7a233eff-fde3-4ed1-97c1-a4d5fe1ba50e","connectionID":"966dbdca-02d1-4ca9-a7be-027af8d8313b","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7a233eff-fde3-4ed1-97c1-a4d5fe1ba50e unaltered + interception proxy got result of transforming message 7a233eff-fde3-4ed1-97c1-a4d5fe1ba50e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"73da4c08-f68b-4a4e-9fd2-4397a01902d2","method":"transformInterceptedMessage","params":{"id":"57dd96d1-af0c-4299-9575-507741edfe3d","connectionID":"3af1e5a9-2e17-44a2-88ff-a2ee8bf9cf27","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 57dd96d1-af0c-4299-9575-507741edfe3d unaltered + interception proxy got result of transforming message 57dd96d1-af0c-4299-9575-507741edfe3d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1b228655-ddbd-43a1-becc-94672683dad6","method":"transformInterceptedMessage","params":{"id":"7cf919ac-9840-4e5a-8597-f61e0ab1c8eb","connectionID":"e8f9cb77-8b33-4c1c-bd2f-06e23f652dbb","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7cf919ac-9840-4e5a-8597-f61e0ab1c8eb unaltered + interception proxy got result of transforming message 7cf919ac-9840-4e5a-8597-f61e0ab1c8eb Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7be1e11a-a3e5-47aa-8750-cdbf0bffb95b","method":"transformInterceptedMessage","params":{"id":"314472a2-c567-4207-863c-ea4ef3e14523","connectionID":"9f744df1-ef34-4fd4-bb64-bcff520f9174","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 314472a2-c567-4207-863c-ea4ef3e14523 unaltered + interception proxy got result of transforming message 314472a2-c567-4207-863c-ea4ef3e14523 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f19b981b-bf28-4beb-b181-cb95cd79fe37","method":"transformInterceptedMessage","params":{"id":"8fb9dc06-9982-49bb-9e20-6147991a3ffb","connectionID":"42c5f679-1469-47d1-ba3d-9d560a394924","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8fb9dc06-9982-49bb-9e20-6147991a3ffb unaltered + interception proxy got result of transforming message 8fb9dc06-9982-49bb-9e20-6147991a3ffb Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality + WebSocket connection to 'wss://sandbox-realtime.ably.io/?key=_tmp_QGtAug.bhV_zQ%3AtSS7RkUIJi9O2rryn5QcKKfb3IisPlNT4XETMaIPnSc&clientId=7356945593570525&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser' failed: WebSocket is closed before the connection is established. +(anonymous) @ index.mjs:6715 + interception proxy got message {"jsonrpc":"2.0","id":"8bb93ebf-1fa0-4aea-bb76-1e1e5c7c173e","method":"transformInterceptedMessage","params":{"id":"dcce1d2e-c3e5-47fc-8c1b-34bd5c62c45d","connectionID":"c7b2433c-cb3f-4da2-8b74-6b47d1fab9eb","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dcce1d2e-c3e5-47fc-8c1b-34bd5c62c45d unaltered + interception proxy got result of transforming message dcce1d2e-c3e5-47fc-8c1b-34bd5c62c45d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2f526038-87f8-43d5-9107-f1c64feef189","method":"transformInterceptedMessage","params":{"id":"7cab8b8a-429c-4dcb-b447-cfe9c1fcc940","connectionID":"141c38ef-ad38-4e56-bb7a-6d8ac3c6d03b","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7cab8b8a-429c-4dcb-b447-cfe9c1fcc940 unaltered + interception proxy got result of transforming message 7cab8b8a-429c-4dcb-b447-cfe9c1fcc940 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a4363315-ceee-49e2-9cf9-ead1c96857c3","method":"transformInterceptedMessage","params":{"id":"0e96085e-2952-4b90-ad0b-9cf10bc0dd48","connectionID":"81120032-6cad-49a3-a2ee-839e13f797dc","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0e96085e-2952-4b90-ad0b-9cf10bc0dd48 unaltered + interception proxy got result of transforming message 0e96085e-2952-4b90-ad0b-9cf10bc0dd48 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2c9438e8-2712-4122-a86a-e4af9700aa49","method":"transformInterceptedMessage","params":{"id":"0e395847-8a60-4ae4-9bc3-98b46589783a","connectionID":"9da96eea-ef43-462f-90d5-6db5274748ea","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0e395847-8a60-4ae4-9bc3-98b46589783a unaltered + interception proxy got result of transforming message 0e395847-8a60-4ae4-9bc3-98b46589783a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c28fe41c-c207-4179-805b-3c2134d48706","method":"transformInterceptedMessage","params":{"id":"a983ce12-59b5-4df6-9604-4418b88706ba","connectionID":"c7b2433c-cb3f-4da2-8b74-6b47d1fab9eb","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a983ce12-59b5-4df6-9604-4418b88706ba unaltered + interception proxy got result of transforming message a983ce12-59b5-4df6-9604-4418b88706ba Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8d5352d5-e6e8-45d9-8cc6-62eb08fa4dae","method":"transformInterceptedMessage","params":{"id":"e7a7ef9c-a55b-4ccc-a993-a4393a91c9cc","connectionID":"966dbdca-02d1-4ca9-a7be-027af8d8313b","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e7a7ef9c-a55b-4ccc-a993-a4393a91c9cc unaltered + interception proxy got result of transforming message e7a7ef9c-a55b-4ccc-a993-a4393a91c9cc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ca7ad9be-66d6-4e8f-8ba2-7644d7227468","method":"transformInterceptedMessage","params":{"id":"14e4ceae-aef8-468f-b513-ab0cab59b2e2","connectionID":"9da96eea-ef43-462f-90d5-6db5274748ea","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 14e4ceae-aef8-468f-b513-ab0cab59b2e2 unaltered + interception proxy got result of transforming message 14e4ceae-aef8-468f-b513-ab0cab59b2e2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"52f6ba27-1af5-4a11-a3a7-c5ce98584dbc","method":"transformInterceptedMessage","params":{"id":"88f8f142-1f7e-4423-b84d-1577ec42faaf","connectionID":"1acd96f3-8685-4c2b-ac5b-5c26689d1de4","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 88f8f142-1f7e-4423-b84d-1577ec42faaf unaltered + interception proxy got result of transforming message 88f8f142-1f7e-4423-b84d-1577ec42faaf Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d1894332-e37c-4bd2-9bed-56073a544d00","method":"transformInterceptedMessage","params":{"id":"f621809e-7655-4774-8903-0829adb8e8fd","connectionID":"a33f327a-f3c6-44c1-b70c-a634b9e008a5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f621809e-7655-4774-8903-0829adb8e8fd unaltered + interception proxy got result of transforming message f621809e-7655-4774-8903-0829adb8e8fd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f1b1b2ea-390d-4734-8bfd-e75b2febca67","method":"transformInterceptedMessage","params":{"id":"0c4d01d7-a2a7-4185-ab48-6929e1be78e4","connectionID":"deb7f843-f7ce-463e-ab06-422ece0433b0","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0c4d01d7-a2a7-4185-ab48-6929e1be78e4 unaltered + interception proxy got result of transforming message 0c4d01d7-a2a7-4185-ab48-6929e1be78e4 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4a2186a9-6eff-4cb2-b952-3326893d3151","method":"transformInterceptedMessage","params":{"id":"a44be0e7-1565-49c5-b941-a8515d5b4227","connectionID":"60e57a96-2d63-4a6f-9e1b-064b02f16d70","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a44be0e7-1565-49c5-b941-a8515d5b4227 unaltered + interception proxy got result of transforming message a44be0e7-1565-49c5-b941-a8515d5b4227 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"170416ad-f435-4dad-beb7-87294713420b","method":"transformInterceptedMessage","params":{"id":"e276792a-aade-442c-a57b-066a6435c775","connectionID":"141c38ef-ad38-4e56-bb7a-6d8ac3c6d03b","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e276792a-aade-442c-a57b-066a6435c775 unaltered + interception proxy got result of transforming message e276792a-aade-442c-a57b-066a6435c775 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"006a5c98-0a68-46f8-97fa-ae364ad082b3","method":"transformInterceptedMessage","params":{"id":"fb2f6ea0-c28d-4869-b919-c8ca090a6107","connectionID":"3af1e5a9-2e17-44a2-88ff-a2ee8bf9cf27","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fb2f6ea0-c28d-4869-b919-c8ca090a6107 unaltered + interception proxy got result of transforming message fb2f6ea0-c28d-4869-b919-c8ca090a6107 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d9ca34a8-cef7-4b43-8d3c-fa8e8e10cf3d","method":"transformInterceptedMessage","params":{"id":"9726f783-8ee0-4901-9bd7-9d56d51bd9f4","connectionID":"3bfa65e2-7537-445f-9044-df257de03847","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9726f783-8ee0-4901-9bd7-9d56d51bd9f4 unaltered + interception proxy got result of transforming message 9726f783-8ee0-4901-9bd7-9d56d51bd9f4 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c186acb1-acf0-4a4f-8ef8-cbdf014f9e7d","method":"transformInterceptedMessage","params":{"id":"7a97e9d9-0657-4398-a13d-ad3040084058","connectionID":"322d025b-45c9-470c-ae96-c82c959204bc","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7a97e9d9-0657-4398-a13d-ad3040084058 unaltered + interception proxy got result of transforming message 7a97e9d9-0657-4398-a13d-ad3040084058 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7bf10de2-87a2-4b58-bdca-479110fdf65b","method":"transformInterceptedMessage","params":{"id":"40723756-0d1c-46fb-8959-5a519bddbc04","connectionID":"ab0e622c-2a3a-4be2-9e3f-4f4c98366298","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 40723756-0d1c-46fb-8959-5a519bddbc04 unaltered + interception proxy got result of transforming message 40723756-0d1c-46fb-8959-5a519bddbc04 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"80978d15-51c5-4a3f-83c7-46e0c469fe26","method":"transformInterceptedMessage","params":{"id":"27908317-85ed-4b47-8f38-e355e53fe1c6","connectionID":"fd6b1724-9e8f-4f7b-9e0a-8d01f5c37168","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 27908317-85ed-4b47-8f38-e355e53fe1c6 unaltered + interception proxy got result of transforming message 27908317-85ed-4b47-8f38-e355e53fe1c6 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a595886a-0a94-443b-ba4f-41eefd45471a","method":"transformInterceptedMessage","params":{"id":"38c2e12b-e3b0-4842-97b4-fbb3f0524b37","connectionID":"f344d151-b39b-448b-8b02-682da750cace","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 38c2e12b-e3b0-4842-97b4-fbb3f0524b37 unaltered + interception proxy got result of transforming message 38c2e12b-e3b0-4842-97b4-fbb3f0524b37 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ad4c5ae0-67a1-4b33-a994-ac10bf33b33e","method":"transformInterceptedMessage","params":{"id":"8fa845a7-e36e-4430-a026-3299aec41f80","connectionID":"9f744df1-ef34-4fd4-bb64-bcff520f9174","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8fa845a7-e36e-4430-a026-3299aec41f80 unaltered + interception proxy got result of transforming message 8fa845a7-e36e-4430-a026-3299aec41f80 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e1ebc427-b969-41f6-b4f9-3ca06713414e","method":"transformInterceptedMessage","params":{"id":"1e9f54b2-aa53-49cd-b9d3-102294eaa183","connectionID":"4f83a01e-eb76-40fc-ad1b-7e34dde7630d","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1e9f54b2-aa53-49cd-b9d3-102294eaa183 unaltered + interception proxy got result of transforming message 1e9f54b2-aa53-49cd-b9d3-102294eaa183 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d9d8e262-67f9-4ac7-937e-2746d5ffbf30","method":"transformInterceptedMessage","params":{"id":"46d89743-cd8d-4fe7-a235-c837cb9cda67","connectionID":"7a429b07-dd5f-4d05-b20a-70d8fda0991b","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 46d89743-cd8d-4fe7-a235-c837cb9cda67 unaltered + interception proxy got result of transforming message 46d89743-cd8d-4fe7-a235-c837cb9cda67 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"36c1f0b1-77cc-494e-9785-08fe26e4dd4f","method":"transformInterceptedMessage","params":{"id":"8fce5096-1a8c-4f56-8981-46de30e30d34","connectionID":"6badd260-aa30-4eb7-838c-f2688355c082","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8fce5096-1a8c-4f56-8981-46de30e30d34 unaltered + interception proxy got result of transforming message 8fce5096-1a8c-4f56-8981-46de30e30d34 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0872d5e8-b920-4d93-a78b-3acac7e45392","method":"transformInterceptedMessage","params":{"id":"d97c9f32-70c7-4743-9940-214ca701885d","connectionID":"e8f9cb77-8b33-4c1c-bd2f-06e23f652dbb","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d97c9f32-70c7-4743-9940-214ca701885d unaltered + interception proxy got result of transforming message d97c9f32-70c7-4743-9940-214ca701885d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"95631e4d-6f70-4527-913a-6b663af90013","method":"transformInterceptedMessage","params":{"id":"fd72208c-b206-4650-a549-67e6c06d62be","connectionID":"42c5f679-1469-47d1-ba3d-9d560a394924","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fd72208c-b206-4650-a549-67e6c06d62be unaltered + interception proxy got result of transforming message fd72208c-b206-4650-a549-67e6c06d62be Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e2ca8bba-a67f-4680-8fac-d18551f05328","method":"transformInterceptedMessage","params":{"id":"f52344f4-8d30-4731-bd3c-e8632d0703dd","connectionID":"7384126a-fce2-4136-b2bb-9c1bbf2e9dec","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f52344f4-8d30-4731-bd3c-e8632d0703dd unaltered + interception proxy got result of transforming message f52344f4-8d30-4731-bd3c-e8632d0703dd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2418a40c-93e5-4bd4-89c3-6c7fb738eee8","method":"transformInterceptedMessage","params":{"id":"d6a3291b-198c-444a-a2d0-6465d7a3d41c","connectionID":"12cb1acc-f94a-47b6-a9e3-1cf2e58b6e51","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d6a3291b-198c-444a-a2d0-6465d7a3d41c unaltered + interception proxy got result of transforming message d6a3291b-198c-444a-a2d0-6465d7a3d41c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"03493556-70a3-4188-9d32-b76d2586a44b","method":"transformInterceptedMessage","params":{"id":"0251f7d3-ac65-49c9-8eab-bae7aed8e9a8","connectionID":"4a505a02-a3c4-4f5d-8c0d-1919334bc212","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0251f7d3-ac65-49c9-8eab-bae7aed8e9a8 unaltered + interception proxy got result of transforming message 0251f7d3-ac65-49c9-8eab-bae7aed8e9a8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"799f7fb6-0c34-48eb-80a8-56fc254ccf82","method":"transformInterceptedMessage","params":{"id":"3846eef3-5233-43f1-b2e2-55fc5e0ea898","connectionID":"81120032-6cad-49a3-a2ee-839e13f797dc","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3846eef3-5233-43f1-b2e2-55fc5e0ea898 unaltered + interception proxy got result of transforming message 3846eef3-5233-43f1-b2e2-55fc5e0ea898 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c1e320b1-553b-4631-9ffd-232911eeb5e3","method":"transformInterceptedMessage","params":{"id":"3bae8869-1466-45a2-a7d7-ad496efaacbe","connectionID":"6bc0bb24-56f9-415b-bcf7-8eeea02aed22","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3bae8869-1466-45a2-a7d7-ad496efaacbe unaltered + interception proxy got result of transforming message 3bae8869-1466-45a2-a7d7-ad496efaacbe Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"69f4ab25-eb9e-4b87-84ee-e1f8e41c828a","method":"transformInterceptedMessage","params":{"id":"116c46f1-9bb0-4816-a93b-6d6d9dd166cc","connectionID":"a0f8b6f3-3d35-4b86-b599-a30d9b7f2edd","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 116c46f1-9bb0-4816-a93b-6d6d9dd166cc unaltered + interception proxy got result of transforming message 116c46f1-9bb0-4816-a93b-6d6d9dd166cc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"09ac0788-48d9-44db-b31e-a75ad16522e7","method":"transformInterceptedMessage","params":{"id":"eeb75eb1-6e9a-4c51-a037-33d3e4261250","connectionID":"8220c20c-829e-48f8-afca-ac5ed3cca3de","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message eeb75eb1-6e9a-4c51-a037-33d3e4261250 unaltered + interception proxy got result of transforming message eeb75eb1-6e9a-4c51-a037-33d3e4261250 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d867af41-f372-419e-99bf-16128b32e259","method":"transformInterceptedMessage","params":{"id":"7a4143ab-d35d-4511-9d8c-5c1bfc3d0b9d","connectionID":"f2ecb0c8-2270-42f7-be22-25749123b9d9","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7a4143ab-d35d-4511-9d8c-5c1bfc3d0b9d unaltered + interception proxy got result of transforming message 7a4143ab-d35d-4511-9d8c-5c1bfc3d0b9d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"85d6ad09-f190-47f4-9ff8-62c322633fe1","method":"transformInterceptedMessage","params":{"id":"d0220cbc-9ddb-46c5-b4dd-a249bb2aac3f","connectionID":"7e0d5cf3-4324-4167-991b-c2b28ca0a1f3","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d0220cbc-9ddb-46c5-b4dd-a249bb2aac3f unaltered + interception proxy got result of transforming message d0220cbc-9ddb-46c5-b4dd-a249bb2aac3f Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c84ae26a-57c2-4810-801e-0b0db811e3e9","method":"transformInterceptedMessage","params":{"id":"77a24819-1f02-4751-9ec9-ba6eac6805aa","connectionID":"9e405b63-9b9e-46de-b318-d20837b070e6","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 77a24819-1f02-4751-9ec9-ba6eac6805aa unaltered + interception proxy got result of transforming message 77a24819-1f02-4751-9ec9-ba6eac6805aa Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b01b2343-c8b3-49ba-b64c-822536d424e8","method":"transformInterceptedMessage","params":{"id":"7bb57475-5600-4f16-a847-7c9ce724f5a6","connectionID":"69b0d7ee-84ff-4eb0-a775-ca395ae6b4c0","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7bb57475-5600-4f16-a847-7c9ce724f5a6 unaltered + interception proxy got result of transforming message 7bb57475-5600-4f16-a847-7c9ce724f5a6 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"049c4abb-75a5-4a49-b8da-eb7b52c6f716","method":"transformInterceptedMessage","params":{"id":"ce8fe440-5836-4c1b-88ce-f88c5856d72d","connectionID":"7127178c-ced7-423a-a508-878defe83fc0","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ce8fe440-5836-4c1b-88ce-f88c5856d72d unaltered + interception proxy got result of transforming message ce8fe440-5836-4c1b-88ce-f88c5856d72d Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_F2BXYg disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = LS0WeOkO2k + interception proxy got message {"jsonrpc":"2.0","id":"57886340-9296-4ff1-bb2d-ea2ecf36b5c9","method":"transformInterceptedMessage","params":{"id":"364d9a04-94bc-4ae7-967f-06d5c1e9aa1e","connectionID":"2146108c-fb05-45ea-a374-5f835b849df2","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387527}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 364d9a04-94bc-4ae7-967f-06d5c1e9aa1e unaltered + interception proxy got result of transforming message 364d9a04-94bc-4ae7-967f-06d5c1e9aa1e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"20d7f1d3-b7cd-48ae-a8b8-7b8f96835328","method":"transformInterceptedMessage","params":{"id":"d4d6f3c1-6db7-4089-8f04-7af89ef4f13b","connectionID":"d00a62c1-0c0c-4c0b-8ee9-b9ffd7d03117","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387529}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d4d6f3c1-6db7-4089-8f04-7af89ef4f13b unaltered + interception proxy got result of transforming message d4d6f3c1-6db7-4089-8f04-7af89ef4f13b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c6ebacbd-a276-421c-9d0f-10680e5f6cb4","method":"transformInterceptedMessage","params":{"id":"53aa12fe-693a-44e3-9370-6bb07ffab1dd","connectionID":"fa38ecc5-7363-43f7-a79d-89a51bb3172c","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387530}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 53aa12fe-693a-44e3-9370-6bb07ffab1dd unaltered + interception proxy got result of transforming message 53aa12fe-693a-44e3-9370-6bb07ffab1dd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bf92eaef-5fc3-41ee-ba7b-e69acd6adbe8","method":"transformInterceptedMessage","params":{"id":"e924df21-558f-4e0f-a95d-d731a4087688","connectionID":"0077de33-154c-4b8d-b76e-a7fa93d0603b","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387533}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e924df21-558f-4e0f-a95d-d731a4087688 unaltered + interception proxy got result of transforming message e924df21-558f-4e0f-a95d-d731a4087688 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2b9482b0-cb8b-422c-88e7-8b416e7640a8","method":"transformInterceptedMessage","params":{"id":"d715d9a3-9f88-4591-ba4c-535e940ab22d","connectionID":"1aef10cf-3c42-4864-8edb-35af3164cebb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387533}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d715d9a3-9f88-4591-ba4c-535e940ab22d unaltered + interception proxy got result of transforming message d715d9a3-9f88-4591-ba4c-535e940ab22d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"da785724-a0e7-4d9b-a8c2-bf0e95ad7c9a","method":"transformInterceptedMessage","params":{"id":"605dc004-ff84-4895-88c7-c978bab5e0f8","connectionID":"a366cea0-ebed-4756-863b-f424c9ec8857","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387535}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 605dc004-ff84-4895-88c7-c978bab5e0f8 unaltered + interception proxy got result of transforming message 605dc004-ff84-4895-88c7-c978bab5e0f8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"cab0f526-46a5-4ea6-a4b9-f4b37299f5e3","method":"transformInterceptedMessage","params":{"id":"f67ceccc-8db4-49e6-a66f-a657a95e9947","connectionID":"ac1885fa-46ab-44a6-acea-4f23807fcd2a","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387535}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f67ceccc-8db4-49e6-a66f-a657a95e9947 unaltered + interception proxy got result of transforming message f67ceccc-8db4-49e6-a66f-a657a95e9947 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e612c65d-e7a3-4444-9810-ec918cd355f3","method":"transformInterceptedMessage","params":{"id":"dd1528a6-ee15-424f-9d7f-54d61a13302f","connectionID":"0515cba6-46e1-4f5f-9053-e3bdb76d7fcf","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387536}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dd1528a6-ee15-424f-9d7f-54d61a13302f unaltered + interception proxy got result of transforming message dd1528a6-ee15-424f-9d7f-54d61a13302f Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6cdd2576-21ff-4320-af7f-ed3baa2f34e5","method":"transformInterceptedMessage","params":{"id":"a75a4ab8-a808-47b3-96c5-7b36792a6882","connectionID":"dbf251ed-516e-4662-b579-7af4f9e74611","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387554}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a75a4ab8-a808-47b3-96c5-7b36792a6882 unaltered + interception proxy got result of transforming message a75a4ab8-a808-47b3-96c5-7b36792a6882 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ca222b33-625b-4591-baa1-e406aaba9e10","method":"transformInterceptedMessage","params":{"id":"ede37e3d-3d67-408b-aa10-fd0b7dc453f1","connectionID":"734e2ed2-3b70-4a9d-9b44-6067d4838bab","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387557}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ede37e3d-3d67-408b-aa10-fd0b7dc453f1 unaltered + interception proxy got result of transforming message ede37e3d-3d67-408b-aa10-fd0b7dc453f1 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"87739fe9-ba5b-48f2-bd45-7b81ea6493d9","method":"transformInterceptedMessage","params":{"id":"0385bf55-5d3d-468c-a85f-31bad40cc73c","connectionID":"fbf853fb-cffc-4d06-925a-2abc2963e3e0","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387565}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0385bf55-5d3d-468c-a85f-31bad40cc73c unaltered + interception proxy got result of transforming message 0385bf55-5d3d-468c-a85f-31bad40cc73c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6c6ecc2a-95ec-4725-8170-a77bfd736cff","method":"transformInterceptedMessage","params":{"id":"fea3dc6e-b5f8-485a-b053-eabdc6f9d254","connectionID":"d0a41555-01e9-4baa-b385-0a86b8a2e442","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387879}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fea3dc6e-b5f8-485a-b053-eabdc6f9d254 unaltered + interception proxy got result of transforming message fea3dc6e-b5f8-485a-b053-eabdc6f9d254 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"016366a3-b5d4-491b-b534-30c4fb1bfa31","method":"transformInterceptedMessage","params":{"id":"f4766c0d-2deb-4023-97f0-a3ef0ac28433","connectionID":"f680095a-782d-4c85-8b40-00b1b968a94b","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954387975}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f4766c0d-2deb-4023-97f0-a3ef0ac28433 unaltered + interception proxy got result of transforming message f4766c0d-2deb-4023-97f0-a3ef0ac28433 Object + interception proxy sending transformInterceptedMessage response Object +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715954387975; error=[_ErrorInfo: Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = LS0WeOkO2k +modular.test.js:580 rxChannel: Ably: Connection state: failed; reason: [_ErrorInfo: Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a7d07bd9-97e8-4eb8-8c10-bafb0d20d1dd","method":"transformInterceptedMessage","params":{"id":"d026c820-6832-4c51-8064-f648e3b5c0fc","connectionID":"3167f93b-8c13-442d-8c49-b342672fb86b","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954388479}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d026c820-6832-4c51-8064-f648e3b5c0fc unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d026c820-6832-4c51-8064-f648e3b5c0fc Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"17ec18de-baa4-4cc7-bf3d-af06706fdae7","method":"transformInterceptedMessage","params":{"id":"18b0eb72-f55b-4118-a3d2-f38cbf52b437","connectionID":"d7d970be-d1d0-4185-9f6b-cb1dab736aaa","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954388942}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 18b0eb72-f55b-4118-a3d2-f38cbf52b437 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 18b0eb72-f55b-4118-a3d2-f38cbf52b437 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"149a45f0-09ab-4ed5-9d4e-0ba7334a8137","method":"transformInterceptedMessage","params":{"id":"b8f656fc-067e-46a9-9b11-207a64ab24f1","connectionID":"08be5d32-9481-4174-8455-81fcc402e7cb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389042}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b8f656fc-067e-46a9-9b11-207a64ab24f1 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b8f656fc-067e-46a9-9b11-207a64ab24f1 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c422216a-3a11-4a15-966b-c1227ea13873","method":"transformInterceptedMessage","params":{"id":"33132c73-9259-4d8a-af46-571d2d466de0","connectionID":"94ff7c21-7e20-4ba8-8ec0-0cc6f769ffa6","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389215}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 33132c73-9259-4d8a-af46-571d2d466de0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 33132c73-9259-4d8a-af46-571d2d466de0 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fec78b77-f104-4645-ab26-bf8ea150f522","method":"transformInterceptedMessage","params":{"id":"a7eb2166-7df1-4e45-bc94-915f18f46ff0","connectionID":"d3e9a008-f4d5-4e2d-9ae8-cf62cce8898d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389226}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a7eb2166-7df1-4e45-bc94-915f18f46ff0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a7eb2166-7df1-4e45-bc94-915f18f46ff0 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6914738a-2116-47a5-994e-a0b84ea2a6af","method":"transformInterceptedMessage","params":{"id":"60f09f2e-9de3-48fa-8620-16442c11633a","connectionID":"8a0688e3-5500-4ae4-b9a3-cc137e6630f7","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389398}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 60f09f2e-9de3-48fa-8620-16442c11633a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 60f09f2e-9de3-48fa-8620-16442c11633a Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3536b327-b2fb-42a7-97e6-c5623e1dcee6","method":"transformInterceptedMessage","params":{"id":"50ff2688-4244-4f40-81ed-7bc0876f614d","connectionID":"89b9045d-7d88-432b-be6a-498e307ea569","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389636}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 50ff2688-4244-4f40-81ed-7bc0876f614d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 50ff2688-4244-4f40-81ed-7bc0876f614d Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7cf31be9-f791-48a9-afdd-d60687125918","method":"transformInterceptedMessage","params":{"id":"61e92f8d-ef5a-4a56-b683-fb268b6cce45","connectionID":"c9f2ea21-95d6-4e02-84da-c5638bc87359","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_F2BXYg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389654}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 61e92f8d-ef5a-4a56-b683-fb268b6cce45 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 61e92f8d-ef5a-4a56-b683-fb268b6cce45 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3149f36d-6ea5-4e8e-b7ef-314f60a07cdd","method":"transformInterceptedMessage","params":{"id":"e6d55520-849d-45ad-bfcb-8f32083b81d7","connectionID":"6b6f8381-8129-4b20-a98d-e6d49991cd85","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954389713}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e6d55520-849d-45ad-bfcb-8f32083b81d7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e6d55520-849d-45ad-bfcb-8f32083b81d7 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7c6a1c78-3774-4964-8ece-83a6b9672a41","method":"transformInterceptedMessage","params":{"id":"6428afb0-5477-4e12-b541-66f31339af79","connectionID":"93613b29-3026-449b-9591-a224c392cef7","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954390061}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 6428afb0-5477-4e12-b541-66f31339af79 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 6428afb0-5477-4e12-b541-66f31339af79 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6126f41b-4de1-4de2-bfb3-0fea81653ffd","method":"transformInterceptedMessage","params":{"id":"689231bc-b946-4f12-b5cc-9b69680454d3","connectionID":"985dc8ed-0898-42a8-8ea2-b167b26303ee","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954390416}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 689231bc-b946-4f12-b5cc-9b69680454d3 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 689231bc-b946-4f12-b5cc-9b69680454d3 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ee52af3a-3d32-48f5-b0e9-db4155caf295","method":"transformInterceptedMessage","params":{"id":"ce011165-d4e3-4377-bcff-c75dbc10c44e","connectionID":"31512da6-657a-479c-a7e1-1f16fc8d623e","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954390542}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ce011165-d4e3-4377-bcff-c75dbc10c44e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ce011165-d4e3-4377-bcff-c75dbc10c44e Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"27bac2a7-712d-4512-bf9a-d51e2b3b8e50","method":"transformInterceptedMessage","params":{"id":"296d21c7-873d-41e4-84d4-3e6f612678b1","connectionID":"7c42294c-13dd-424c-91ff-6478908e4307","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954390544}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 296d21c7-873d-41e4-84d4-3e6f612678b1 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 296d21c7-873d-41e4-84d4-3e6f612678b1 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7ec76dd5-7e9d-4176-8425-3b2fa4b9f65f","method":"transformInterceptedMessage","params":{"id":"207d9ffb-a59c-4bb2-92d9-ab2e1d0aa4ac","connectionID":"d6b90afa-2af6-42d1-aa1a-fbbe8cd13989","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954391444}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 207d9ffb-a59c-4bb2-92d9-ab2e1d0aa4ac unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 207d9ffb-a59c-4bb2-92d9-ab2e1d0aa4ac Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9bd14c8c-d909-4f6c-b44c-706cbe9d58e1","method":"transformInterceptedMessage","params":{"id":"07370c70-aaac-4158-8dfa-e35cf5e00a86","connectionID":"68d1e9d8-cb60-405f-bc9c-28cedce2949e","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954391474}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 07370c70-aaac-4158-8dfa-e35cf5e00a86 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 07370c70-aaac-4158-8dfa-e35cf5e00a86 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"afb2ce76-4e4a-4d66-8f98-2eb4cc7bb67c","method":"transformInterceptedMessage","params":{"id":"e5b6d9a6-5f9a-4df2-96ad-1390bddfc3f2","connectionID":"02b931c4-1e80-427a-a8f4-d4845618a4cf","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954391835}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e5b6d9a6-5f9a-4df2-96ad-1390bddfc3f2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e5b6d9a6-5f9a-4df2-96ad-1390bddfc3f2 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"5b560976-c18f-4515-9f57-7f35e035690d","method":"transformInterceptedMessage","params":{"id":"75e308c0-2a75-45ad-8e91-2ae192aa9eb6","connectionID":"d07164de-fd92-4bea-ac63-59004a246034","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954392030}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 75e308c0-2a75-45ad-8e91-2ae192aa9eb6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 75e308c0-2a75-45ad-8e91-2ae192aa9eb6 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2cdcb5e9-87c9-4077-bf3b-e97768680309","method":"transformInterceptedMessage","params":{"id":"3fe18c98-d1e8-4768-aefe-779a99ac5de8","connectionID":"d5e31db9-f80f-460e-b0d6-1e464beb376c","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954392262}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 3fe18c98-d1e8-4768-aefe-779a99ac5de8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 3fe18c98-d1e8-4768-aefe-779a99ac5de8 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7157966c-8a5f-4063-879d-7e1da385d3c8","method":"transformInterceptedMessage","params":{"id":"84fcb2eb-4545-43dc-9d38-92d82efa4f50","connectionID":"04a886a6-35ad-4840-b08f-2e601183cca9","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_QGtAug disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715954392310}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 84fcb2eb-4545-43dc-9d38-92d82efa4f50 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 84fcb2eb-4545-43dc-9d38-92d82efa4f50 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +testapp_module.js:76 Test App _tmp_QGtAug has been torn down +interception_proxy_client.js:73 interception proxy client disconnected +index.mjs:179 Uncaught (in promise) Error: Connection to server unavailable + at _ErrorInfo.fromValues (index.mjs:179:34) + at Object.suspended (index.mjs:3284:30) + at _ConnectionManager.notifyState (index.mjs:4273:198) + at index.mjs:4171:14 +fromValues @ index.mjs:179 +suspended @ index.mjs:3284 +notifyState @ index.mjs:4273 +(anonymous) @ index.mjs:4171 \ No newline at end of file From 632ece05331d28a1042cb3e9260469c8420b3844 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 15:37:37 -0300 Subject: [PATCH 13/32] turn off log stripping for now --- grunt/esbuild/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grunt/esbuild/build.js b/grunt/esbuild/build.js index 16018560d..30d549c58 100644 --- a/grunt/esbuild/build.js +++ b/grunt/esbuild/build.js @@ -35,7 +35,7 @@ const modularConfig = { entryPoints: ['src/platform/web/modular.ts'], outfile: 'build/modular/index.mjs', format: 'esm', - plugins: [stripLogsPlugin], + plugins: [], }; const nodeConfig = { From 43dba0c221a22d10397bd38de386e5b8d77971ef Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 15:42:32 -0300 Subject: [PATCH 14/32] further --- src/common/lib/client/realtimepresence.ts | 2 + test/browser/modular.test.js | 3 +- with-failure-logs-2.txt | 1232 +++++++++++++++++++++ 3 files changed, 1236 insertions(+), 1 deletion(-) create mode 100644 with-failure-logs-2.txt diff --git a/src/common/lib/client/realtimepresence.ts b/src/common/lib/client/realtimepresence.ts index ef02e8e78..68f2d1575 100644 --- a/src/common/lib/client/realtimepresence.ts +++ b/src/common/lib/client/realtimepresence.ts @@ -102,6 +102,7 @@ class RealtimePresence extends EventEmitter { } async enter(data: unknown): Promise { + Logger.logAction(this.logger, Logger.LOG_DEBUG, "RealtimePresence.enter"); if (isAnonymousOrWildcard(this)) { throw new ErrorInfo('clientId must be specified to enter a presence channel', 40012, 400); } @@ -129,6 +130,7 @@ class RealtimePresence extends EventEmitter { data: unknown, action: string, ): Promise { + Logger.logAction(this.logger, Logger.LOG_DEBUG, "RealtimePresence._enterOrUpdateClient"); const channel = this.channel; if (!channel.connectionManager.activeState()) { throw channel.connectionManager.getError(); diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index d495b3eb4..d3976f9a6 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -574,7 +574,7 @@ function registerAblyModularTests(helper) { }); describe('BaseRealtime with RealtimePresence', () => { - it.only('offers realtime presence functionality', async () => { + it('offers realtime presence functionality', async () => { const rxChannel = new BaseRealtime( ablyClientOptions({ logHandler: (msg) => console.log("rxChannel: ", msg), @@ -608,6 +608,7 @@ function registerAblyModularTests(helper) { await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); console.log("LAWRENCE: end waiting for presence subscribe"); console.log("LAWRENCE: begin waiting for presence enter"); + console.log("LAWRENCE: txChannel.presence.enter is", txChannel.presence.enter); await txChannel.presence.enter(); console.log("LAWRENCE: end waiting for presence enter"); diff --git a/with-failure-logs-2.txt b/with-failure-logs-2.txt new file mode 100644 index 000000000..5074fa8f0 --- /dev/null +++ b/with-failure-logs-2.txt @@ -0,0 +1,1232 @@ +favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found) + START TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality + END TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` + interception proxy got message {"jsonrpc":"2.0","id":"202a23cb-27ad-4a19-9028-d2a9d3c5b935","method":"transformInterceptedMessage","params":{"id":"66dacd99-47dd-465d-bb76-5084e587c1df","connectionID":"70912198-025c-4e15-a5a7-e14b6d209647","type":"text","data":"{\"action\":4,\"connectionId\":\"qKKTgqkj6u\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!qKKTgqkj6uATT81gtWDe3G-2ea\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 66dacd99-47dd-465d-bb76-5084e587c1df unaltered + interception proxy got result of transforming message 66dacd99-47dd-465d-bb76-5084e587c1df Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"aa51b081-cbdc-423c-8ad2-a51d87ef5d58","method":"transformInterceptedMessage","params":{"id":"e8a9cfde-5cae-47b3-9ae5-5858762fea0d","connectionID":"c3f539da-8082-4db4-a859-8cf2db3c4887","type":"text","data":"{\"action\":4,\"connectionId\":\"r-OnBTETJl\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!r-OnBTETJlARC8Am8mrbJM-18b4\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e8a9cfde-5cae-47b3-9ae5-5858762fea0d unaltered + interception proxy got result of transforming message e8a9cfde-5cae-47b3-9ae5-5858762fea0d Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` + interception proxy got message {"jsonrpc":"2.0","id":"3db960bb-e139-424a-9e54-255e0dccdf83","method":"transformInterceptedMessage","params":{"id":"4003e45b-bbfc-4964-b6cf-ee91fdb9f59a","connectionID":"7637f8e0-a9d6-493b-bd06-537ba0be5c3e","type":"text","data":"{\"action\":4,\"connectionId\":\"V6wGU-1eW3\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!V6wGU-1eW3Adg87gbBVG8T-30c\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4003e45b-bbfc-4964-b6cf-ee91fdb9f59a unaltered + interception proxy got result of transforming message 4003e45b-bbfc-4964-b6cf-ee91fdb9f59a Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` + interception proxy got message {"jsonrpc":"2.0","id":"5d8a75cd-0689-4d7e-9062-3835395391c4","method":"transformInterceptedMessage","params":{"id":"9d3823a9-fae2-443f-bf7f-20177dfea485","connectionID":"e23c4a14-44ab-46fd-a0f4-4edb829afaf1","type":"text","data":"{\"action\":4,\"connectionId\":\"OFaaeT3HIG\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!OFaaeT3HIGAVMLUN7KI_nD-e75\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9d3823a9-fae2-443f-bf7f-20177dfea485 unaltered + interception proxy got result of transforming message 9d3823a9-fae2-443f-bf7f-20177dfea485 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` + interception proxy got message {"jsonrpc":"2.0","id":"bed37fed-4559-4c92-a86b-f8c3b765a751","method":"transformInterceptedMessage","params":{"id":"e9c71794-d289-4f2b-95ad-7447703b9ffa","connectionID":"4abeba2e-2382-4148-bc56-51e5370cff35","type":"text","data":"{\"action\":4,\"connectionId\":\"Ku64ix2yXy\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!Ku64ix2yXyAQLVAY6LWFRT-ed1\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e9c71794-d289-4f2b-95ad-7447703b9ffa unaltered + interception proxy got result of transforming message e9c71794-d289-4f2b-95ad-7447703b9ffa Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` + interception proxy got message {"jsonrpc":"2.0","id":"cb4b45ad-8835-424b-9827-509fc558b6b6","method":"transformInterceptedMessage","params":{"id":"9f2f0bee-89e6-4a51-a407-579bc364a4a8","connectionID":"d28b1b1e-3bab-4445-b632-30c86c4a5b99","type":"text","data":"{\"action\":4,\"connectionId\":\"6ex4uKUgws\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!6ex4uKUgwsATI2Du5dAYUx-30e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9f2f0bee-89e6-4a51-a407-579bc364a4a8 unaltered + interception proxy got result of transforming message 9f2f0bee-89e6-4a51-a407-579bc364a4a8 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` + interception proxy got message {"jsonrpc":"2.0","id":"e74d92e4-df2d-4324-bb8d-ab9d620a9f5b","method":"transformInterceptedMessage","params":{"id":"29fd8141-7421-4d4c-96c8-c7aea4efe8c0","connectionID":"5fb28df8-6168-4f1c-8cca-9848a76982b4","type":"text","data":"{\"action\":4,\"connectionId\":\"xkM1Fo7WPq\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!xkM1Fo7WPqAUk0yz_-ATJ2-2eb\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 29fd8141-7421-4d4c-96c8-c7aea4efe8c0 unaltered + interception proxy got result of transforming message 29fd8141-7421-4d4c-96c8-c7aea4efe8c0 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` + interception proxy got message {"jsonrpc":"2.0","id":"bb4326a8-3bbc-4634-b78b-1f88555d3bf6","method":"transformInterceptedMessage","params":{"id":"43b4ed20-2616-47a4-b979-5930b36bb2f6","connectionID":"639be235-16ca-40e8-ad4e-0d386175fa7c","type":"text","data":"{\"action\":4,\"connectionId\":\"t8hjdXb15j\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!t8hjdXb15jATF_fd9ERUXx-1923\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 43b4ed20-2616-47a4-b979-5930b36bb2f6 unaltered + interception proxy got result of transforming message 43b4ed20-2616-47a4-b979-5930b36bb2f6 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` + START TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing + interception proxy got message {"jsonrpc":"2.0","id":"76aaf8c5-08c9-4150-9214-b4b36a6e8b4d","method":"transformInterceptedMessage","params":{"id":"1611eb6f-e787-4abe-9821-4b8e96cf6fdc","connectionID":"29812980-815d-4f23-a715-40adb3876177","type":"text","data":"{\"action\":4,\"connectionId\":\"VAiW2X96iY\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!VAiW2X96iYAe9PHE9IV8Gm-1925\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1611eb6f-e787-4abe-9821-4b8e96cf6fdc unaltered + interception proxy got result of transforming message 1611eb6f-e787-4abe-9821-4b8e96cf6fdc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bcaaafc1-f543-43cf-895a-d1dd6d9b9663","method":"transformInterceptedMessage","params":{"id":"35e0140b-5848-4ada-bc56-daa00f2a814c","connectionID":"cb9abcdc-448e-46f1-be4e-01a28451defb","type":"text","data":"{\"action\":4,\"connectionId\":\"UU7ArG2Ypa\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!UU7ArG2YpaAazDHF5yqKjD-1927\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 35e0140b-5848-4ada-bc56-daa00f2a814c unaltered + interception proxy got result of transforming message 35e0140b-5848-4ada-bc56-daa00f2a814c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2037c90c-eb56-4dcc-9cdb-a56eb3b1f3fc","method":"transformInterceptedMessage","params":{"id":"ccc68e4f-eca4-4279-b36a-cd830954cc09","connectionID":"68eaba90-334f-48dd-b9dd-6011c24bf167","type":"text","data":"{\"action\":4,\"connectionId\":\"16MoSbwqcx\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!16MoSbwqcxAe2SocOJinCH-ed4\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ccc68e4f-eca4-4279-b36a-cd830954cc09 unaltered + interception proxy got result of transforming message ccc68e4f-eca4-4279-b36a-cd830954cc09 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d3bf0997-4bb0-4c54-8eaf-271118dacd24","method":"transformInterceptedMessage","params":{"id":"105233de-f419-4275-a3a8-a9dc3b0accf3","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":4,\"connectionId\":\"URLn_dHgkG\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!URLn_dHgkGAXF8i8UCMyAj-2f0\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 105233de-f419-4275-a3a8-a9dc3b0accf3 unaltered + interception proxy got result of transforming message 105233de-f419-4275-a3a8-a9dc3b0accf3 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1d302656-e71a-4df9-a119-02c605fcedea","method":"transformInterceptedMessage","params":{"id":"11348e60-dd45-4e2f-a03b-42f5f9e33ecf","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 11348e60-dd45-4e2f-a03b-42f5f9e33ecf unaltered + interception proxy got result of transforming message 11348e60-dd45-4e2f-a03b-42f5f9e33ecf Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"84813ef0-773b-4263-86bd-ebcee0abba4d","method":"transformInterceptedMessage","params":{"id":"c474c215-6b21-4c51-9fae-ed573429c188","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971088060-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c474c215-6b21-4c51-9fae-ed573429c188 unaltered + interception proxy got result of transforming message c474c215-6b21-4c51-9fae-ed573429c188 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"54c2eb6e-2b74-47d5-b369-3e95883b9a43","method":"transformInterceptedMessage","params":{"id":"14ae5396-8b37-4220-a431-d1dfb594aa69","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 14ae5396-8b37-4220-a431-d1dfb594aa69 unaltered + interception proxy got result of transforming message 14ae5396-8b37-4220-a431-d1dfb594aa69 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"747b5fa3-add9-4d14-a0e2-13932aeb6a75","method":"transformInterceptedMessage","params":{"id":"6950117f-5ab3-41bc-bc54-e01acfb692e0","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":15,\"id\":\"URLn_dHgkG:0\",\"connectionId\":\"URLn_dHgkG\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971089552-0\",\"timestamp\":1715971089552,\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6950117f-5ab3-41bc-bc54-e01acfb692e0 unaltered + interception proxy got result of transforming message 6950117f-5ab3-41bc-bc54-e01acfb692e0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8505459b-dc45-4e19-ae86-cb29d6b7f15e","method":"transformInterceptedMessage","params":{"id":"b57bf572-9b70-4784-b98c-dc780898c262","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b57bf572-9b70-4784-b98c-dc780898c262 unaltered + interception proxy got result of transforming message b57bf572-9b70-4784-b98c-dc780898c262 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing + START TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` + START TEST: browser/modular Crypto standalone functions generateRandomKey + END TEST: browser/modular Crypto standalone functions generateRandomKey + START TEST: browser/modular Crypto standalone functions getDefaultCryptoParams + END TEST: browser/modular Crypto standalone functions getDefaultCryptoParams + START TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data + END TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data + START TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher + END TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher + START TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data + END TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data + START TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message + END TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message + START TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data + END TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data + START TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher + END TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher + START TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data + END TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data + START TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages + END TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages + START TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher + END TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher + START TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher + END TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher + START TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages + interception proxy got message {"jsonrpc":"2.0","id":"14e08dcf-d28f-4444-8318-a08f4aa1230d","method":"transformInterceptedMessage","params":{"id":"0762d96a-07a2-4bf6-ba91-b71d26360fef","connectionID":"4dd52b39-1721-4085-96aa-3537600eff36","type":"text","data":"{\"action\":4,\"connectionId\":\"5edZbwnaD-\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!5edZbwnaD-Aeu9h4zY_pfS-18b7\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0762d96a-07a2-4bf6-ba91-b71d26360fef unaltered + interception proxy got result of transforming message 0762d96a-07a2-4bf6-ba91-b71d26360fef Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7590ae7f-d99d-4c0d-8ed4-a0d53533a7b9","method":"transformInterceptedMessage","params":{"id":"3c06ed78-5ac0-4426-bb62-670b1208ac48","connectionID":"42b847c4-2671-4a1e-9d62-28798690dcd0","type":"text","data":"{\"action\":4,\"connectionId\":\"fzfojWptWT\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!fzfojWptWTAdMWMEWdbtHX-18b8\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3c06ed78-5ac0-4426-bb62-670b1208ac48 unaltered + interception proxy got result of transforming message 3c06ed78-5ac0-4426-bb62-670b1208ac48 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"50d83498-bc85-4cff-bb7c-cc579e0fd4af","method":"transformInterceptedMessage","params":{"id":"dc71398b-32e1-4fa5-8f26-8f2e8ad7675d","connectionID":"ff80a804-8838-458a-b578-bb2d6316093f","type":"text","data":"{\"action\":4,\"connectionId\":\"Uarf47228w\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!Uarf47228wAdpHugLK-8QV-18b9\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dc71398b-32e1-4fa5-8f26-8f2e8ad7675d unaltered + interception proxy got result of transforming message dc71398b-32e1-4fa5-8f26-8f2e8ad7675d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f80a8a24-4a05-4413-933f-3f35501e6b26","method":"transformInterceptedMessage","params":{"id":"6bd69fec-2c4f-4c3e-b994-494dc833e11c","connectionID":"dad6aaab-b993-4745-8a21-3ad96b2f49d5","type":"text","data":"{\"action\":4,\"connectionId\":\"3YiUYSxgzk\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!3YiUYSxgzkAXCoZAB7Hm4U-315\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6bd69fec-2c4f-4c3e-b994-494dc833e11c unaltered + interception proxy got result of transforming message 6bd69fec-2c4f-4c3e-b994-494dc833e11c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"33c9e37f-ef05-4cd8-b375-04a18a12469e","method":"transformInterceptedMessage","params":{"id":"6f305a15-7c86-451c-8c2f-721be0a605e3","connectionID":"8d9e0fb0-4c18-483a-aeb9-896a0e62afdf","type":"text","data":"{\"action\":4,\"connectionId\":\"l-iWaAziZK\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!l-iWaAziZKAf5tFe_RMqKr-1928\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6f305a15-7c86-451c-8c2f-721be0a605e3 unaltered + interception proxy got result of transforming message 6f305a15-7c86-451c-8c2f-721be0a605e3 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"701f6223-7510-4d61-ac72-2fe79ac81753","method":"transformInterceptedMessage","params":{"id":"b477f69f-fc5f-4c84-8eef-3cb02cbee132","connectionID":"91386ac1-2026-4326-8f16-eb0d48caa4e4","type":"text","data":"{\"action\":4,\"connectionId\":\"v6_i8N8HfO\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!v6_i8N8HfOAUzg61_S6kQr-1929\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b477f69f-fc5f-4c84-8eef-3cb02cbee132 unaltered + interception proxy got result of transforming message b477f69f-fc5f-4c84-8eef-3cb02cbee132 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ba5124ee-6ccf-4cae-a6cd-8dee19ef0e66","method":"transformInterceptedMessage","params":{"id":"678a1597-5934-4dee-83e2-ff8aa74b18e1","connectionID":"7846579c-e8e5-4935-b78e-5955c8b4bbc8","type":"text","data":"{\"action\":4,\"connectionId\":\"Wm6FeaMzxG\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!Wm6FeaMzxGAQ8NHgh2-PR8-18ba\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 678a1597-5934-4dee-83e2-ff8aa74b18e1 unaltered + interception proxy got result of transforming message 678a1597-5934-4dee-83e2-ff8aa74b18e1 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"91f348b4-c0fd-4559-ae7c-257fd0c18169","method":"transformInterceptedMessage","params":{"id":"485f3454-4e48-4825-ba9e-f8d95453a807","connectionID":"4f46ba17-87f6-458b-81cd-7a6815327c24","type":"text","data":"{\"action\":4,\"connectionId\":\"ggE_4FFWuh\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!ggE_4FFWuhASc0I_-Sg-zn-e7b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 485f3454-4e48-4825-ba9e-f8d95453a807 unaltered + interception proxy got result of transforming message 485f3454-4e48-4825-ba9e-f8d95453a807 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"974d97b7-479e-4af0-8d53-1de63f07e981","method":"transformInterceptedMessage","params":{"id":"dde731e7-cb21-407b-a001-ae261ad8b57d","connectionID":"13891ae9-995c-4d5a-b002-8b71c3cb16cf","type":"text","data":"{\"action\":4,\"connectionId\":\"ZkHxtNY4NC\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!ZkHxtNY4NCAerag5Ngsg_h-ed6\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dde731e7-cb21-407b-a001-ae261ad8b57d unaltered + interception proxy got result of transforming message dde731e7-cb21-407b-a001-ae261ad8b57d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"03176f4f-3918-4be4-ba40-7766bbea0653","method":"transformInterceptedMessage","params":{"id":"cab3f5cb-a655-4fb9-803e-0813d89ffbe2","connectionID":"927b4705-7fc3-4412-83b0-79e20216cd37","type":"text","data":"{\"action\":4,\"connectionId\":\"Y7c9Vpxk1H\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!Y7c9Vpxk1HAa88ICQTyh1O-18bb\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message cab3f5cb-a655-4fb9-803e-0813d89ffbe2 unaltered + interception proxy got result of transforming message cab3f5cb-a655-4fb9-803e-0813d89ffbe2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"eb146e28-1147-4e32-946e-a743f65a2214","method":"transformInterceptedMessage","params":{"id":"49993c90-5041-4d86-a748-eb3672f94893","connectionID":"39d724c8-40d0-42e7-a5d5-2271d18e7397","type":"text","data":"{\"action\":4,\"connectionId\":\"KorpxEJgp4\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!KorpxEJgp4AR2QQCQ73ben-2f1\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 49993c90-5041-4d86-a748-eb3672f94893 unaltered + interception proxy got result of transforming message 49993c90-5041-4d86-a748-eb3672f94893 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9196bf24-5175-444b-b1e9-006a60eef589","method":"transformInterceptedMessage","params":{"id":"d62ac2b2-c528-4272-85a5-7eaaf65605f0","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":4,\"connectionId\":\"kYB1NuCww0\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!kYB1NuCww0ASrC-Z_8QRHY-18bc\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d62ac2b2-c528-4272-85a5-7eaaf65605f0 unaltered + interception proxy got result of transforming message d62ac2b2-c528-4272-85a5-7eaaf65605f0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"628d34f5-d31d-4631-8604-4cea5a6f9194","method":"transformInterceptedMessage","params":{"id":"0614750a-c7e1-4bf1-82ab-701977011539","connectionID":"19f3b0aa-550f-464c-a34c-38101f6f36d4","type":"text","data":"{\"action\":4,\"connectionId\":\"wBpp3Wvuok\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!wBpp3WvuokAbfio6XWmlNW-192a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0614750a-c7e1-4bf1-82ab-701977011539 unaltered + interception proxy got result of transforming message 0614750a-c7e1-4bf1-82ab-701977011539 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c79954f7-d19d-469b-a457-d653f8220381","method":"transformInterceptedMessage","params":{"id":"5fdf1db1-1c30-43ec-a5b6-6ffe7a3d259c","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5fdf1db1-1c30-43ec-a5b6-6ffe7a3d259c unaltered + interception proxy got result of transforming message 5fdf1db1-1c30-43ec-a5b6-6ffe7a3d259c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"73a70e44-0c0d-4f33-803f-13f9ef726275","method":"transformInterceptedMessage","params":{"id":"43e97d4b-b16c-4462-ad88-8f19e9077ccd","connectionID":"41f3bb9d-9eb6-4863-a439-443b13081da5","type":"text","data":"{\"action\":4,\"connectionId\":\"SxGX6DG2jc\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!SxGX6DG2jcAXLM1iWHPNry-18bd\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 43e97d4b-b16c-4462-ad88-8f19e9077ccd unaltered + interception proxy got result of transforming message 43e97d4b-b16c-4462-ad88-8f19e9077ccd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1c25e278-68a5-48f5-a27b-5dd11351f735","method":"transformInterceptedMessage","params":{"id":"ddc96e5d-76c7-4664-9162-5b80c7aed233","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971089552-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ddc96e5d-76c7-4664-9162-5b80c7aed233 unaltered + interception proxy got result of transforming message ddc96e5d-76c7-4664-9162-5b80c7aed233 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d9329dd5-d428-4a01-ad8e-f2265a244779","method":"transformInterceptedMessage","params":{"id":"4878ae5e-15f3-47b4-9dbc-96ef262cf01e","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":15,\"id\":\"JNEnlKzReY4D\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971090578-0\",\"timestamp\":1715971090578,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"gNpONVyIQzDoiYptXz1TFnl0nezPfOTAz7n4uto+DGU=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4878ae5e-15f3-47b4-9dbc-96ef262cf01e unaltered + interception proxy got result of transforming message 4878ae5e-15f3-47b4-9dbc-96ef262cf01e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"739bbd97-d020-4c8c-a690-fdca09a4d65f","method":"transformInterceptedMessage","params":{"id":"01801665-fae2-4e58-8e5a-6cbbe0611ab8","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":15,\"id\":\"JNEnlKzReY4D\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971090578-0\",\"timestamp\":1715971090578,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"gNpONVyIQzDoiYptXz1TFnl0nezPfOTAz7n4uto+DGU=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 01801665-fae2-4e58-8e5a-6cbbe0611ab8 unaltered + interception proxy got result of transforming message 01801665-fae2-4e58-8e5a-6cbbe0611ab8 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages + START TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages + interception proxy got message {"jsonrpc":"2.0","id":"ab859371-c73d-4036-8f73-9f0f154af6c4","method":"transformInterceptedMessage","params":{"id":"dd2a6b72-9ad6-4f0e-a231-083e2097a2af","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":4,\"connectionId\":\"_RBXWHtgY7\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!_RBXWHtgY7Af23hYWj6imS-e7c\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dd2a6b72-9ad6-4f0e-a231-083e2097a2af unaltered + interception proxy got result of transforming message dd2a6b72-9ad6-4f0e-a231-083e2097a2af Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3ce9cb4a-55c0-4943-9d23-3293ebbf8ccf","method":"transformInterceptedMessage","params":{"id":"1374b570-113c-4c01-8591-0e09fefd9446","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1374b570-113c-4c01-8591-0e09fefd9446 unaltered + interception proxy got result of transforming message 1374b570-113c-4c01-8591-0e09fefd9446 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8afaad74-02a5-4f31-8d75-fe01ed307b5c","method":"transformInterceptedMessage","params":{"id":"60a91b0c-809e-4cef-aff7-aa0a9d488413","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971090578-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 60a91b0c-809e-4cef-aff7-aa0a9d488413 unaltered + interception proxy got result of transforming message 60a91b0c-809e-4cef-aff7-aa0a9d488413 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9beb3a69-fcd5-485b-94ff-46734a4d4035","method":"transformInterceptedMessage","params":{"id":"4293fc8f-83b5-4414-90b5-9d9465dea3bb","connectionID":"9164a0c3-4c5f-4f25-bc9a-fd68bcc87a70","type":"text","data":"{\"action\":4,\"connectionId\":\"NZMDofGnJR\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!NZMDofGnJRAVGOsHoJHDyJ-2f8\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4293fc8f-83b5-4414-90b5-9d9465dea3bb unaltered + interception proxy got result of transforming message 4293fc8f-83b5-4414-90b5-9d9465dea3bb Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"153704eb-b154-4d0e-a4c9-ca65dc48c1b1","method":"transformInterceptedMessage","params":{"id":"fead2731-48ba-4921-bb89-be2d569a1d50","connectionID":"9164a0c3-4c5f-4f25-bc9a-fd68bcc87a70","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JzH7YQVktBvOmTCk0orjxVti2f9qFFgz/jWOLYslX9E=\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fead2731-48ba-4921-bb89-be2d569a1d50 unaltered + interception proxy got result of transforming message fead2731-48ba-4921-bb89-be2d569a1d50 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"232633e2-0d33-4080-8896-63f970285577","method":"transformInterceptedMessage","params":{"id":"44173920-3717-4927-b765-8676e46d9fc6","connectionID":"9164a0c3-4c5f-4f25-bc9a-fd68bcc87a70","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 44173920-3717-4927-b765-8676e46d9fc6 unaltered + interception proxy got result of transforming message 44173920-3717-4927-b765-8676e46d9fc6 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"73faf70e-b884-4530-ac06-b4af472b6fb9","method":"transformInterceptedMessage","params":{"id":"c7dca6c9-a604-42ba-9fb7-1626fda12a45","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":15,\"id\":\"NZMDofGnJR:0\",\"connectionId\":\"NZMDofGnJR\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971091978-0\",\"timestamp\":1715971091978,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JzH7YQVktBvOmTCk0orjxVti2f9qFFgz/jWOLYslX9E=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c7dca6c9-a604-42ba-9fb7-1626fda12a45 unaltered + interception proxy got result of transforming message c7dca6c9-a604-42ba-9fb7-1626fda12a45 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8547e0ee-418c-4737-973e-90ed9ae2e87f","method":"transformInterceptedMessage","params":{"id":"c73867e1-d480-4da9-b6ad-6e9198878c65","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":15,\"id\":\"NZMDofGnJR:0\",\"connectionId\":\"NZMDofGnJR\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971091978-0\",\"timestamp\":1715971091978,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JzH7YQVktBvOmTCk0orjxVti2f9qFFgz/jWOLYslX9E=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c73867e1-d480-4da9-b6ad-6e9198878c65 unaltered + interception proxy got result of transforming message c73867e1-d480-4da9-b6ad-6e9198878c65 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bc1e6aa4-4fcf-4e93-a5cc-cd30c7946d8d","method":"transformInterceptedMessage","params":{"id":"eb2c65da-5711-4b77-8f32-200d3649c5aa","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":15,\"id\":\"NZMDofGnJR:0\",\"connectionId\":\"NZMDofGnJR\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971091978-0\",\"timestamp\":1715971091978,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JzH7YQVktBvOmTCk0orjxVti2f9qFFgz/jWOLYslX9E=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message eb2c65da-5711-4b77-8f32-200d3649c5aa unaltered + interception proxy got result of transforming message eb2c65da-5711-4b77-8f32-200d3649c5aa Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages + START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON + END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON + START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON + END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON + START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack + END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack + START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack + END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack + START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property + END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property + START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage + interception proxy got message {"jsonrpc":"2.0","id":"a840b9ef-a458-4a56-9583-501512571a96","method":"transformInterceptedMessage","params":{"id":"a32ebc1a-ccb0-4cb5-88a8-b8056d9868e2","connectionID":"265b541b-f617-4c39-bed7-8915b4bf9627","type":"text","data":"{\"action\":4,\"connectionId\":\"__GYNj7nBU\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!__GYNj7nBUAajG4suejCcu-2fb\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a32ebc1a-ccb0-4cb5-88a8-b8056d9868e2 unaltered + interception proxy got result of transforming message a32ebc1a-ccb0-4cb5-88a8-b8056d9868e2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"98f6b771-a1fa-4154-adb0-1253e6908922","method":"transformInterceptedMessage","params":{"id":"9da4c114-f555-4953-b3ee-228b176c8afe","connectionID":"397f435d-23c3-467c-a1ee-ff8d4dfa0cee","type":"text","data":"{\"action\":4,\"connectionId\":\"Scma2pOh2Q\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!Scma2pOh2QAQEKWcAA43UG-edb\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9da4c114-f555-4953-b3ee-228b176c8afe unaltered + interception proxy got result of transforming message 9da4c114-f555-4953-b3ee-228b176c8afe Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"05cd8fc7-f575-44cb-933c-7455b22fa3ad","method":"transformInterceptedMessage","params":{"id":"916cf480-314f-4217-b4e9-c2695b9bce9e","connectionID":"397f435d-23c3-467c-a1ee-ff8d4dfa0cee","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 916cf480-314f-4217-b4e9-c2695b9bce9e unaltered + interception proxy got result of transforming message 916cf480-314f-4217-b4e9-c2695b9bce9e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"615d8aa0-e7c7-43de-9507-7acb223c63f4","method":"transformInterceptedMessage","params":{"id":"07756e8c-e9a0-4d7e-b829-0bba27279618","connectionID":"397f435d-23c3-467c-a1ee-ff8d4dfa0cee","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971091978-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 07756e8c-e9a0-4d7e-b829-0bba27279618 unaltered + interception proxy got result of transforming message 07756e8c-e9a0-4d7e-b829-0bba27279618 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c6f3871a-5a4d-4134-b6a9-6fd3bd3eb53b","method":"transformInterceptedMessage","params":{"id":"3c800a3b-49c5-48a1-87ff-1971246c9b5b","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":4,\"connectionId\":\"Omv0TWjqkh\",\"connectionDetails\":{\"clientId\":\"7036884746501788\",\"connectionKey\":\"e7deKLRSQBc0Ap!Omv0TWjqkhASd90LqszaW_-18c3\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3c800a3b-49c5-48a1-87ff-1971246c9b5b unaltered + interception proxy got result of transforming message 3c800a3b-49c5-48a1-87ff-1971246c9b5b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f7e2ea96-98d8-4734-8c4f-25b1f4401e79","method":"transformInterceptedMessage","params":{"id":"bbbd03d1-9322-41df-81b4-6de0cbd861f7","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"data\":\"body\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message bbbd03d1-9322-41df-81b4-6de0cbd861f7 unaltered + interception proxy got result of transforming message bbbd03d1-9322-41df-81b4-6de0cbd861f7 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"de546ba1-5063-4b22-9dd6-407482c8909c","method":"transformInterceptedMessage","params":{"id":"8d5c2fbb-948c-47a5-b5fb-73b197c5a3fd","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":15,\"id\":\"Omv0TWjqkh:0\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093461-0\",\"timestamp\":1715971093461,\"messages\":[{\"clientId\":\"7036884746501788\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8d5c2fbb-948c-47a5-b5fb-73b197c5a3fd unaltered + interception proxy got result of transforming message 8d5c2fbb-948c-47a5-b5fb-73b197c5a3fd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a2c2d9c3-efbf-47fb-b977-bd98a2a2ea2a","method":"transformInterceptedMessage","params":{"id":"00ec4dbd-5bd5-49b0-9755-36ea3fb33e3d","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 00ec4dbd-5bd5-49b0-9755-36ea3fb33e3d unaltered + interception proxy got result of transforming message 00ec4dbd-5bd5-49b0-9755-36ea3fb33e3d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ebc3e04e-069a-4f91-b8dc-98b940ce15da","method":"transformInterceptedMessage","params":{"id":"ff1acd98-c858-4f35-826e-7eb6702fc3a0","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":15,\"id\":\"Omv0TWjqkh:0\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093461-0\",\"timestamp\":1715971093461,\"messages\":[{\"clientId\":\"7036884746501788\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ff1acd98-c858-4f35-826e-7eb6702fc3a0 unaltered + interception proxy got result of transforming message ff1acd98-c858-4f35-826e-7eb6702fc3a0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"167cbf84-754f-4761-b539-d4b7bec36271","method":"transformInterceptedMessage","params":{"id":"a1d4e069-2926-4e8f-99f1-7b1f78a6fa90","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":15,\"id\":\"Omv0TWjqkh:0\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093461-0\",\"timestamp\":1715971093461,\"messages\":[{\"clientId\":\"7036884746501788\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a1d4e069-2926-4e8f-99f1-7b1f78a6fa90 unaltered + interception proxy got result of transforming message a1d4e069-2926-4e8f-99f1-7b1f78a6fa90 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e4e3b47e-31e0-4033-bf46-97d512508af6","method":"transformInterceptedMessage","params":{"id":"86d61f15-911d-4209-acc9-9d25871e1f69","connectionID":"397f435d-23c3-467c-a1ee-ff8d4dfa0cee","type":"text","data":"{\"action\":15,\"id\":\"Omv0TWjqkh:0\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093461-0\",\"timestamp\":1715971093461,\"messages\":[{\"clientId\":\"7036884746501788\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 86d61f15-911d-4209-acc9-9d25871e1f69 unaltered + interception proxy got result of transforming message 86d61f15-911d-4209-acc9-9d25871e1f69 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"09e9b08e-946a-47ed-9d4c-fe2f1bd47816","method":"transformInterceptedMessage","params":{"id":"92e9a1b7-9e38-4af8-b44c-32fbee118c01","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 92e9a1b7-9e38-4af8-b44c-32fbee118c01 unaltered + interception proxy got result of transforming message 92e9a1b7-9e38-4af8-b44c-32fbee118c01 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b122897d-07f4-4392-b52a-6fd0f1b78ce8","method":"transformInterceptedMessage","params":{"id":"de2f2762-8f60-46a4-8a8e-0600d2103ddd","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093461-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message de2f2762-8f60-46a4-8a8e-0600d2103ddd unaltered + interception proxy got result of transforming message de2f2762-8f60-46a4-8a8e-0600d2103ddd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7d4bf142-9d50-4a78-ba54-3fd3fa0864a3","method":"transformInterceptedMessage","params":{"id":"af37bf2a-d273-48ed-a7f6-17183b404019","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":14,\"channel\":\"channel\",\"presence\":[{\"action\":2}],\"msgSerial\":1}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message af37bf2a-d273-48ed-a7f6-17183b404019 unaltered + interception proxy got result of transforming message af37bf2a-d273-48ed-a7f6-17183b404019 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d811b151-df98-4ea1-82d9-d61f0ab0a959","method":"transformInterceptedMessage","params":{"id":"c744964f-f254-4a29-ab5f-e7b65080ebb0","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":14,\"id\":\"Omv0TWjqkh:1\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093729-0\",\"timestamp\":1715971093729,\"presence\":[{\"id\":\"Omv0TWjqkh:1:0\",\"clientId\":\"7036884746501788\",\"connectionId\":\"Omv0TWjqkh\",\"timestamp\":1715971093729,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c744964f-f254-4a29-ab5f-e7b65080ebb0 unaltered + interception proxy got result of transforming message c744964f-f254-4a29-ab5f-e7b65080ebb0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ca9a9482-b15a-4edf-a010-abd346b20374","method":"transformInterceptedMessage","params":{"id":"00b51cc9-d544-4899-9a5f-a21596616954","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":14,\"id\":\"Omv0TWjqkh:1\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093729-0\",\"timestamp\":1715971093729,\"presence\":[{\"id\":\"Omv0TWjqkh:1:0\",\"clientId\":\"7036884746501788\",\"connectionId\":\"Omv0TWjqkh\",\"timestamp\":1715971093729,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 00b51cc9-d544-4899-9a5f-a21596616954 unaltered + interception proxy got result of transforming message 00b51cc9-d544-4899-9a5f-a21596616954 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"20dd482c-f53b-4fe5-9aa7-82e589a5fd18","method":"transformInterceptedMessage","params":{"id":"70a96946-8a7e-4502-a97f-fd210d3639fa","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":14,\"id\":\"Omv0TWjqkh:1\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093729-0\",\"timestamp\":1715971093729,\"presence\":[{\"id\":\"Omv0TWjqkh:1:0\",\"clientId\":\"7036884746501788\",\"connectionId\":\"Omv0TWjqkh\",\"timestamp\":1715971093729,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 70a96946-8a7e-4502-a97f-fd210d3639fa unaltered + interception proxy got result of transforming message 70a96946-8a7e-4502-a97f-fd210d3639fa Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"956aa89e-fe9d-4c47-940b-c0317fb17457","method":"transformInterceptedMessage","params":{"id":"29b07bbf-c324-4f66-b841-b5c9d7f16f57","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":14,\"id\":\"Omv0TWjqkh:1\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093729-0\",\"timestamp\":1715971093729,\"presence\":[{\"id\":\"Omv0TWjqkh:1:0\",\"clientId\":\"7036884746501788\",\"connectionId\":\"Omv0TWjqkh\",\"timestamp\":1715971093729,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 29b07bbf-c324-4f66-b841-b5c9d7f16f57 unaltered + interception proxy got result of transforming message 29b07bbf-c324-4f66-b841-b5c9d7f16f57 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"70fb705f-3e3f-490d-aa43-b9b914524a1a","method":"transformInterceptedMessage","params":{"id":"8a86d90e-f0b6-4f85-bf8f-0f27e19401ac","connectionID":"397f435d-23c3-467c-a1ee-ff8d4dfa0cee","type":"text","data":"{\"action\":14,\"id\":\"Omv0TWjqkh:1\",\"connectionId\":\"Omv0TWjqkh\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093729-0\",\"timestamp\":1715971093729,\"presence\":[{\"id\":\"Omv0TWjqkh:1:0\",\"clientId\":\"7036884746501788\",\"connectionId\":\"Omv0TWjqkh\",\"timestamp\":1715971093729,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8a86d90e-f0b6-4f85-bf8f-0f27e19401ac unaltered + interception proxy got result of transforming message 8a86d90e-f0b6-4f85-bf8f-0f27e19401ac Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6c020e38-e262-40d4-bb22-1e85c5e77071","method":"transformInterceptedMessage","params":{"id":"e81320e2-4b82-4606-9221-24418b49da59","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":1}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e81320e2-4b82-4606-9221-24418b49da59 unaltered + interception proxy got result of transforming message e81320e2-4b82-4606-9221-24418b49da59 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage + START TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality + rxChannel: Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"plugins":{"RealtimePresence":{}},"key":"_tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM"} + rxChannel: Ably: BaseClient(): started; version = 2.0.4 + rxChannel: Ably: Auth(): anonymous, using basic auth + rxChannel: Ably: Realtime(): + rxChannel: Ably: Realtime.ConnectionManager(): started + rxChannel: Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] + rxChannel: Ably: Realtime.ConnectionManager(): available transports = [web_socket] + rxChannel: Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] + rxChannel: Ably: Realtime.connect(): + rxChannel: Ably: Connection.connect(): + rxChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: connecting + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + rxChannel: Ably: RealtimeChannel(): started; name = channel + txChannel: Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"clientId":"6383626078799054","plugins":{"RealtimePresence":{}},"key":"_tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM"} + txChannel: Ably: BaseClient(): started; version = 2.0.4 + txChannel: Ably: Auth(): anonymous, using basic auth + txChannel: Ably: Realtime(): + txChannel: Ably: Realtime.ConnectionManager(): started + txChannel: Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] + txChannel: Ably: Realtime.ConnectionManager(): available transports = [web_socket] + txChannel: Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] + txChannel: Ably: Realtime.connect(): + txChannel: Ably: Connection.connect(): + txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: connecting + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: Ably: RealtimeChannel(): started; name = channel + LAWRENCE: begin waiting for presence subscribe + rxChannel: Ably: RealtimeChannel.requestState: name = channel, state = attaching + rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching + rxChannel: Ably: Channel state for channel "channel": attaching + rxChannel: Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting + rxChannel: Ably: ConnectionManager.startConnect(): starting connection + rxChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + rxChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + rxChannel: Ably: ConnectionManager.connectWs(): undefined + rxChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + rxChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + rxChannel: Ably: WebSocketTransport.connect(): starting + rxChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + rxChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + txChannel: Ably: ConnectionManager.startConnect(): starting connection + txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: Ably: ConnectionManager.connectWs(): undefined + txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: Ably: WebSocketTransport.connect(): starting + txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + rxChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + rxChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + rxChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean + interception proxy got message {"jsonrpc":"2.0","id":"4bbcb1a6-1624-498f-bbbd-d0bc0f3274db","method":"transformInterceptedMessage","params":{"id":"5b6315a1-ed17-4582-a14c-b0bf2245d204","connectionID":"f371c134-be0c-478d-8f1e-48c9ef249765","type":"text","data":"{\"action\":4,\"connectionId\":\"SSn13x5VVd\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5b6315a1-ed17-4582-a14c-b0bf2245d204 unaltered + interception proxy got result of transforming message 5b6315a1-ed17-4582-a14c-b0bf2245d204 Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 353; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=SSn13x5VVd]; connectionId = undefined + rxChannel: Ably: ConnectionManager.activateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.activateTransport(): connectionId = SSn13x5VVd + rxChannel: Ably: ConnectionManager.activateTransport(): connectionDetails = {"clientId":"*","connectionKey":"e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320","maxMessageSize":16384,"maxInboundRate":250,"maxOutboundRate":100,"maxFrameSize":262144,"serverId":"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei","connectionStateTtl":120000,"maxIdleInterval":15000} + rxChannel: Ably: ConnectionManager.activateTransport(): current state = connecting + rxChannel: Ably: ConnectionManager.setConnection(): New connectionId; reattaching any attached channels + rxChannel: Ably: ConnectionManager.notifyState(): new state: connected + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: connected + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connected; reason = undefined + rxChannel: Ably: ConnectionManager.sendQueuedMessages(): sending 0 queued messages + rxChannel: Ably: RealtimeChannel.checkPendingState: name = channel, state = attaching + rxChannel: Ably: RealtimeChannel.attachImpl(): sending ATTACH message + rxChannel: Ably: ConnectionManager.send(): sending event + rxChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] + interception proxy got message {"jsonrpc":"2.0","id":"61215231-7050-424f-be84-cb8d2d234847","method":"transformInterceptedMessage","params":{"id":"45697ae2-901d-44a5-b6ad-042d4fb02bb9","connectionID":"f371c134-be0c-478d-8f1e-48c9ef249765","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 45697ae2-901d-44a5-b6ad-042d4fb02bb9 unaltered + interception proxy got result of transforming message 45697ae2-901d-44a5-b6ad-042d4fb02bb9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0ebd803a-62bd-48ce-abe4-ab0a67ba066a","method":"transformInterceptedMessage","params":{"id":"89525a83-cc6e-4e54-8d9f-dce29ed69bac","connectionID":"f371c134-be0c-478d-8f1e-48c9ef249765","type":"text","data":"{\"action\":11,\"flags\":983105,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq20514813@1715971093729-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 89525a83-cc6e-4e54-8d9f-dce29ed69bac unaltered + interception proxy got result of transforming message 89525a83-cc6e-4e54-8d9f-dce29ed69bac Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 105; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7dP5PvyABc0Cq20514813@1715971093729-0; flags=HAS_PRESENCE,PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = SSn13x5VVd + rxChannel: Ably: RealtimeChannel.setChannelSerial(): Updating channel serial; serial = e7dP5PvyABc0Cq20514813@1715971093729-0; previous = undefined + rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attaching, notifying state attached + rxChannel: Ably: RealtimePresence.onAttached(): channel = channel, hasPresence = true + rxChannel: Ably: PresenceMap.startSync(): channel = channel; syncInProgress = false + rxChannel: Ably: PresenceMap.setInProgress(): inProgress = true + rxChannel: Ably: Channel state for channel "channel": attached + rxChannel: Ably: RealtimeChannel.onAttached: activating channel; name = channel + LAWRENCE: end waiting for presence subscribe + LAWRENCE: begin waiting for presence enter + LAWRENCE: txChannel.presence.enter is + txChannel: Ably: RealtimePresence.enter: undefined + txChannel: Ably: RealtimePresence._enterOrUpdateClient: undefined + txChannel: Ably: RealtimePresence.enterClient(): channel = channel, id = undefined, client = (implicit) 6383626078799054 + txChannel: Ably: RealtimeChannel.requestState: name = channel, state = attaching + txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching + txChannel: Ably: Channel state for channel "channel": attaching + txChannel: Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting + interception proxy got message {"jsonrpc":"2.0","id":"9b63e4b3-03cf-4a20-a97f-2994f3ad9297","method":"transformInterceptedMessage","params":{"id":"f7cf013b-1044-44b4-a4b6-80fa6040c35a","connectionID":"f371c134-be0c-478d-8f1e-48c9ef249765","type":"text","data":"{\"action\":16,\"channel\":\"channel\",\"channelSerial\":\"e7dAszwTABc0Ei09889689:\",\"presence\":[{\"id\":\"Omv0TWjqkh:1:0\",\"clientId\":\"7036884746501788\",\"connectionId\":\"Omv0TWjqkh\",\"timestamp\":1715971093729,\"action\":1}],\"count\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f7cf013b-1044-44b4-a4b6-80fa6040c35a unaltered + interception proxy got result of transforming message f7cf013b-1044-44b4-a4b6-80fa6040c35a Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 217; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=SYNC; channel=channel; channelSerial=e7dAszwTABc0Ei09889689:; count=0; presence=[ [PresenceMessage; action=present; id=Omv0TWjqkh:1:0; timestamp=1715971093729; clientId=7036884746501788; connectionId=Omv0TWjqkh] ]]; connectionId = SSn13x5VVd + rxChannel: Ably: RealtimePresence.setPresence(): received presence for 1 participants; syncChannelSerial = e7dAszwTABc0Ei09889689: + rxChannel: Ably: PresenceMap.startSync(): channel = channel; syncInProgress = true + rxChannel: Ably: PresenceMap.endSync(): channel = channel; syncInProgress = true + rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false + txChannel: Ably: ConnectionManager WebSocket slow timer: checking connectivity + txChannel: Ably: (Fetch)Http.checkConnectivity(): Sending; https://internet-up.ably-realtime.com/is-the-internet-up.txt + txChannel: Ably: (Fetch)Http.checkConnectivity(): Result: true + txChannel: Ably: ConnectionManager WebSocket slow timer: http connectivity check succeeded + interception proxy got message {"jsonrpc":"2.0","id":"ccfcfd6d-d97b-4973-81f4-bcdc2ea56ea0","method":"transformInterceptedMessage","params":{"id":"aa8566d4-ec76-4a8f-b3bd-1a760895fe98","connectionID":"70912198-025c-4e15-a5a7-e14b6d209647","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message aa8566d4-ec76-4a8f-b3bd-1a760895fe98 unaltered + interception proxy got result of transforming message aa8566d4-ec76-4a8f-b3bd-1a760895fe98 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"027753e0-7bbe-45cc-ab54-72de57d06c30","method":"transformInterceptedMessage","params":{"id":"5f754354-c9a9-497e-8f41-ce658dac13ea","connectionID":"c3f539da-8082-4db4-a859-8cf2db3c4887","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5f754354-c9a9-497e-8f41-ce658dac13ea unaltered + interception proxy got result of transforming message 5f754354-c9a9-497e-8f41-ce658dac13ea Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8e3f44d7-1b9d-49a9-acff-173b943c8214","method":"transformInterceptedMessage","params":{"id":"01472042-9d34-491e-81fa-3060938fa669","connectionID":"7637f8e0-a9d6-493b-bd06-537ba0be5c3e","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 01472042-9d34-491e-81fa-3060938fa669 unaltered + interception proxy got result of transforming message 01472042-9d34-491e-81fa-3060938fa669 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2b463ab9-7b36-4a71-8a4a-27537ef57026","method":"transformInterceptedMessage","params":{"id":"1cb2cb40-82f0-424e-9114-f150323ca1ea","connectionID":"e23c4a14-44ab-46fd-a0f4-4edb829afaf1","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1cb2cb40-82f0-424e-9114-f150323ca1ea unaltered + interception proxy got result of transforming message 1cb2cb40-82f0-424e-9114-f150323ca1ea Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"409e9f5a-6a9e-4ea0-9214-ecff631c8dc2","method":"transformInterceptedMessage","params":{"id":"06ecbb43-aa70-40e0-bedd-2d97bba24ca1","connectionID":"4abeba2e-2382-4148-bc56-51e5370cff35","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 06ecbb43-aa70-40e0-bedd-2d97bba24ca1 unaltered + interception proxy got result of transforming message 06ecbb43-aa70-40e0-bedd-2d97bba24ca1 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"dc59cb8c-c2f7-41ff-aaaa-d9cdc78b55bf","method":"transformInterceptedMessage","params":{"id":"c03facab-a5ac-4906-8493-8a001b91b970","connectionID":"d28b1b1e-3bab-4445-b632-30c86c4a5b99","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c03facab-a5ac-4906-8493-8a001b91b970 unaltered + interception proxy got result of transforming message c03facab-a5ac-4906-8493-8a001b91b970 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"11dba0bf-d89f-467e-90ba-bac671bc154c","method":"transformInterceptedMessage","params":{"id":"9f9458cc-ea4c-426a-960e-42b7fbc5febe","connectionID":"5fb28df8-6168-4f1c-8cca-9848a76982b4","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9f9458cc-ea4c-426a-960e-42b7fbc5febe unaltered + interception proxy got result of transforming message 9f9458cc-ea4c-426a-960e-42b7fbc5febe Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d1e771e9-6030-4bba-866d-ea658cc12e3c","method":"transformInterceptedMessage","params":{"id":"1985fa54-50d2-46a1-b225-756d52310831","connectionID":"639be235-16ca-40e8-ad4e-0d386175fa7c","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1985fa54-50d2-46a1-b225-756d52310831 unaltered + interception proxy got result of transforming message 1985fa54-50d2-46a1-b225-756d52310831 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d656bdad-a036-4b7a-81c9-d44b786415a5","method":"transformInterceptedMessage","params":{"id":"b6dd551a-9397-4ebe-88cf-5749fc30f3e8","connectionID":"29812980-815d-4f23-a715-40adb3876177","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b6dd551a-9397-4ebe-88cf-5749fc30f3e8 unaltered + interception proxy got result of transforming message b6dd551a-9397-4ebe-88cf-5749fc30f3e8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8c1c5c35-23ac-4de9-9f4f-0a446b220877","method":"transformInterceptedMessage","params":{"id":"b5716332-b02f-47e2-9046-9f167abc404f","connectionID":"cb9abcdc-448e-46f1-be4e-01a28451defb","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b5716332-b02f-47e2-9046-9f167abc404f unaltered + interception proxy got result of transforming message b5716332-b02f-47e2-9046-9f167abc404f Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality + txChannel: Ably: ConnectionManager WebSocket give up timer: websocket connection took more than 10s; + txChannel: Ably: ConnectionManager WebSocket give up timer: websocket connectivity appears to be unavailable but no other transports to try + txChannel: Ably: WebSocketTransport.dispose(): + txChannel: Ably: ConnectionManager.tryATransport(): transport web_socket disconnected, err: [_ErrorInfo: Timeout waiting for transport to indicate itself viable; statusCode=500; code=50000] + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Unable to connect (and no more fallback hosts to try); statusCode=404; code=80003] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Unable to connect (and no more fallback hosts to try) + txChannel: Ably: WebSocketTransport.dispose(): closing websocket + WebSocket connection to 'wss://sandbox-realtime.ably.io/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser' failed: WebSocket is closed before the connection is established. +(anonymous) @ index.mjs:7597 + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + txChannel: Ably: WebSocketTransport.dispose(): + txChannel: Ably: WebSocketTransport.onError(): Error from WebSocket: undefined + txChannel: Ably: WebSocketTransport.onWsClose(): Unclean disconnection of WebSocket ; code = 1006 + interception proxy got message {"jsonrpc":"2.0","id":"b8531c76-7d05-47bf-a3c6-81ad7398fe18","method":"transformInterceptedMessage","params":{"id":"422ddb16-70af-4f32-88f6-cbacc9e69493","connectionID":"68eaba90-334f-48dd-b9dd-6011c24bf167","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 422ddb16-70af-4f32-88f6-cbacc9e69493 unaltered + interception proxy got result of transforming message 422ddb16-70af-4f32-88f6-cbacc9e69493 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7759d97b-97ce-48dd-919e-ad61df463999","method":"transformInterceptedMessage","params":{"id":"a1c2b944-5116-4457-9e12-9037cb32e629","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a1c2b944-5116-4457-9e12-9037cb32e629 unaltered + interception proxy got result of transforming message a1c2b944-5116-4457-9e12-9037cb32e629 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ad70a100-c4bf-464a-aac2-a553b9a06bfa","method":"transformInterceptedMessage","params":{"id":"b4f577c6-56d3-4bdf-a88e-64211b266d77","connectionID":"639be235-16ca-40e8-ad4e-0d386175fa7c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b4f577c6-56d3-4bdf-a88e-64211b266d77 unaltered + interception proxy got result of transforming message b4f577c6-56d3-4bdf-a88e-64211b266d77 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"af278964-1282-4f48-8989-e4c33201d692","method":"transformInterceptedMessage","params":{"id":"6b73a102-3fc3-4e34-846c-bff591c14a67","connectionID":"4abeba2e-2382-4148-bc56-51e5370cff35","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6b73a102-3fc3-4e34-846c-bff591c14a67 unaltered + interception proxy got result of transforming message 6b73a102-3fc3-4e34-846c-bff591c14a67 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"933b8c87-48a1-4485-a509-8132a88a8c94","method":"transformInterceptedMessage","params":{"id":"47beb617-4c3c-4782-aa33-a60ceff8da48","connectionID":"29812980-815d-4f23-a715-40adb3876177","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 47beb617-4c3c-4782-aa33-a60ceff8da48 unaltered + interception proxy got result of transforming message 47beb617-4c3c-4782-aa33-a60ceff8da48 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"67b6e654-3e69-4884-a5bd-d500d2a534c4","method":"transformInterceptedMessage","params":{"id":"4dd20911-4558-4884-af02-40f377c997c8","connectionID":"7637f8e0-a9d6-493b-bd06-537ba0be5c3e","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4dd20911-4558-4884-af02-40f377c997c8 unaltered + interception proxy got result of transforming message 4dd20911-4558-4884-af02-40f377c997c8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"483e6365-b300-4737-b08c-b7a2685a8713","method":"transformInterceptedMessage","params":{"id":"2106ee60-5932-4a18-be05-26945d9a2adf","connectionID":"cb9abcdc-448e-46f1-be4e-01a28451defb","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2106ee60-5932-4a18-be05-26945d9a2adf unaltered + interception proxy got result of transforming message 2106ee60-5932-4a18-be05-26945d9a2adf Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4a3eab17-cb91-415e-88c6-56a97d17bfc7","method":"transformInterceptedMessage","params":{"id":"2122d3d7-f7d9-4c15-811a-d925db17f434","connectionID":"68eaba90-334f-48dd-b9dd-6011c24bf167","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2122d3d7-f7d9-4c15-811a-d925db17f434 unaltered + interception proxy got result of transforming message 2122d3d7-f7d9-4c15-811a-d925db17f434 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f0a875f3-fd5d-464e-aaa5-b847e6d20c94","method":"transformInterceptedMessage","params":{"id":"9e04fdcf-bf4e-4ac6-9e37-8107a8567a04","connectionID":"8d9e0fb0-4c18-483a-aeb9-896a0e62afdf","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9e04fdcf-bf4e-4ac6-9e37-8107a8567a04 unaltered + interception proxy got result of transforming message 9e04fdcf-bf4e-4ac6-9e37-8107a8567a04 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"95faa94a-3cc0-4f68-aaaf-90823cd333ba","method":"transformInterceptedMessage","params":{"id":"b20ec16e-93b7-4e68-83be-1e2901088ac8","connectionID":"13891ae9-995c-4d5a-b002-8b71c3cb16cf","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b20ec16e-93b7-4e68-83be-1e2901088ac8 unaltered + interception proxy got result of transforming message b20ec16e-93b7-4e68-83be-1e2901088ac8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6c048309-c28c-456d-a11d-3e985998c9b0","method":"transformInterceptedMessage","params":{"id":"3803ac2c-d5ab-451d-b674-f531beec8492","connectionID":"70912198-025c-4e15-a5a7-e14b6d209647","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3803ac2c-d5ab-451d-b674-f531beec8492 unaltered + interception proxy got result of transforming message 3803ac2c-d5ab-451d-b674-f531beec8492 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8a82ae58-a7b3-4e83-8cb0-f2ce3b6e3777","method":"transformInterceptedMessage","params":{"id":"d7c8b640-d2d9-4525-a380-5c8269b7af7b","connectionID":"397f435d-23c3-467c-a1ee-ff8d4dfa0cee","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d7c8b640-d2d9-4525-a380-5c8269b7af7b unaltered + interception proxy got result of transforming message d7c8b640-d2d9-4525-a380-5c8269b7af7b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8d03abef-b2fe-4006-a421-8efa979c7aac","method":"transformInterceptedMessage","params":{"id":"0cc56dc8-4652-443a-ae84-3466b0cbe8db","connectionID":"19f3b0aa-550f-464c-a34c-38101f6f36d4","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0cc56dc8-4652-443a-ae84-3466b0cbe8db unaltered + interception proxy got result of transforming message 0cc56dc8-4652-443a-ae84-3466b0cbe8db Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"97acbaab-ed55-4bb4-b580-469c9f88be99","method":"transformInterceptedMessage","params":{"id":"118f1a27-af64-4a38-a765-7bb55de76581","connectionID":"c3f539da-8082-4db4-a859-8cf2db3c4887","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 118f1a27-af64-4a38-a765-7bb55de76581 unaltered + interception proxy got result of transforming message 118f1a27-af64-4a38-a765-7bb55de76581 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bbfaf8df-e36a-40f0-af40-f89e6c0f5323","method":"transformInterceptedMessage","params":{"id":"3518a0a9-1d13-4648-9932-ee914119d164","connectionID":"5fb28df8-6168-4f1c-8cca-9848a76982b4","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3518a0a9-1d13-4648-9932-ee914119d164 unaltered + interception proxy got result of transforming message 3518a0a9-1d13-4648-9932-ee914119d164 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"32c30a77-c5e1-41a1-8446-75d5f65c6bf8","method":"transformInterceptedMessage","params":{"id":"79a031e0-f6ae-4555-96d1-40bd86e18c5b","connectionID":"91386ac1-2026-4326-8f16-eb0d48caa4e4","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 79a031e0-f6ae-4555-96d1-40bd86e18c5b unaltered + interception proxy got result of transforming message 79a031e0-f6ae-4555-96d1-40bd86e18c5b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d6d05b2f-7c6c-4357-9d29-85635ffda56f","method":"transformInterceptedMessage","params":{"id":"4bac88c8-0cf5-4a53-b818-1a1f75ae0dd2","connectionID":"1144e935-7078-4e6c-8853-a1378937e60c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4bac88c8-0cf5-4a53-b818-1a1f75ae0dd2 unaltered + interception proxy got result of transforming message 4bac88c8-0cf5-4a53-b818-1a1f75ae0dd2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f7e90c86-560f-48f5-9d87-59e5262d4a27","method":"transformInterceptedMessage","params":{"id":"d2b840d0-75d0-475e-ad57-5facb5321c1f","connectionID":"4dd52b39-1721-4085-96aa-3537600eff36","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d2b840d0-75d0-475e-ad57-5facb5321c1f unaltered + interception proxy got result of transforming message d2b840d0-75d0-475e-ad57-5facb5321c1f Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"82ee00df-e4ad-4606-9a37-0ac725f2d852","method":"transformInterceptedMessage","params":{"id":"0b4aff27-207f-460e-b1b7-0fbcfbfb8c2e","connectionID":"d28b1b1e-3bab-4445-b632-30c86c4a5b99","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0b4aff27-207f-460e-b1b7-0fbcfbfb8c2e unaltered + interception proxy got result of transforming message 0b4aff27-207f-460e-b1b7-0fbcfbfb8c2e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b7ca84d4-a4c8-4207-8b16-9653ba2cb2de","method":"transformInterceptedMessage","params":{"id":"007e9a6d-b0ff-40a1-9900-13fce86ca5ee","connectionID":"39d724c8-40d0-42e7-a5d5-2271d18e7397","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 007e9a6d-b0ff-40a1-9900-13fce86ca5ee unaltered + interception proxy got result of transforming message 007e9a6d-b0ff-40a1-9900-13fce86ca5ee Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ae17861f-2a80-434c-a343-396488c32266","method":"transformInterceptedMessage","params":{"id":"ba61eabe-451d-427b-9101-d314ae783e94","connectionID":"42b847c4-2671-4a1e-9d62-28798690dcd0","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ba61eabe-451d-427b-9101-d314ae783e94 unaltered + interception proxy got result of transforming message ba61eabe-451d-427b-9101-d314ae783e94 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"49d3f8a2-c0f3-4155-8ae6-020d7a9ab41c","method":"transformInterceptedMessage","params":{"id":"3d879c81-9967-46bd-a59c-a55e76cbca04","connectionID":"e23c4a14-44ab-46fd-a0f4-4edb829afaf1","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3d879c81-9967-46bd-a59c-a55e76cbca04 unaltered + interception proxy got result of transforming message 3d879c81-9967-46bd-a59c-a55e76cbca04 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0f6062da-f77e-4990-8836-1afaf056596d","method":"transformInterceptedMessage","params":{"id":"35c91c1d-c76e-4439-89c5-aeceac341b99","connectionID":"9164a0c3-4c5f-4f25-bc9a-fd68bcc87a70","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 35c91c1d-c76e-4439-89c5-aeceac341b99 unaltered + interception proxy got result of transforming message 35c91c1d-c76e-4439-89c5-aeceac341b99 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f0c8feed-8cb2-46d6-ba05-b9de27b1a637","method":"transformInterceptedMessage","params":{"id":"c04f1c9d-4696-4e41-b756-c3229db34bde","connectionID":"dad6aaab-b993-4745-8a21-3ad96b2f49d5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c04f1c9d-4696-4e41-b756-c3229db34bde unaltered + interception proxy got result of transforming message c04f1c9d-4696-4e41-b756-c3229db34bde Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7475d5ef-9897-434b-8468-54992a450917","method":"transformInterceptedMessage","params":{"id":"bff2edeb-b0bf-40d2-a6b4-4460471bf108","connectionID":"ff80a804-8838-458a-b578-bb2d6316093f","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message bff2edeb-b0bf-40d2-a6b4-4460471bf108 unaltered + interception proxy got result of transforming message bff2edeb-b0bf-40d2-a6b4-4460471bf108 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"261be9f9-10f8-407a-891d-ab275d11f346","method":"transformInterceptedMessage","params":{"id":"f94e403a-9e7f-4da7-9bd4-cb5cae9e98e5","connectionID":"265b541b-f617-4c39-bed7-8915b4bf9627","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f94e403a-9e7f-4da7-9bd4-cb5cae9e98e5 unaltered + interception proxy got result of transforming message f94e403a-9e7f-4da7-9bd4-cb5cae9e98e5 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3ab87890-c751-497d-aeaa-2f37d280a23d","method":"transformInterceptedMessage","params":{"id":"cd474049-0a14-4b21-b82f-ebde284a57c2","connectionID":"f371c134-be0c-478d-8f1e-48c9ef249765","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message cd474049-0a14-4b21-b82f-ebde284a57c2 unaltered + interception proxy got result of transforming message cd474049-0a14-4b21-b82f-ebde284a57c2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4598f48f-ff56-4c2b-b14b-c1f970764a4e","method":"transformInterceptedMessage","params":{"id":"a50a54de-cb25-4907-bc7e-6fa36885d033","connectionID":"927b4705-7fc3-4412-83b0-79e20216cd37","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a50a54de-cb25-4907-bc7e-6fa36885d033 unaltered + interception proxy got result of transforming message a50a54de-cb25-4907-bc7e-6fa36885d033 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3b0d493f-4e80-4f56-adef-9b209c414f33","method":"transformInterceptedMessage","params":{"id":"ba5523fa-cfb8-4405-af9a-770e3ed8de7c","connectionID":"fa1ca63e-35f9-4df1-9b5a-19ca8c593774","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ba5523fa-cfb8-4405-af9a-770e3ed8de7c unaltered + interception proxy got result of transforming message ba5523fa-cfb8-4405-af9a-770e3ed8de7c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ba50bbb3-106b-4d74-8423-4aa09c19527f","method":"transformInterceptedMessage","params":{"id":"645980dc-6807-4ece-9fe3-b4daacc65b6b","connectionID":"4f46ba17-87f6-458b-81cd-7a6815327c24","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 645980dc-6807-4ece-9fe3-b4daacc65b6b unaltered + interception proxy got result of transforming message 645980dc-6807-4ece-9fe3-b4daacc65b6b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3c6c15cc-ab8a-4708-8fe4-96c90926df39","method":"transformInterceptedMessage","params":{"id":"a86eb8e6-c719-4839-b451-931893f84210","connectionID":"ffec95f2-a99f-44f2-bf06-3cfe62e98810","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a86eb8e6-c719-4839-b451-931893f84210 unaltered + interception proxy got result of transforming message a86eb8e6-c719-4839-b451-931893f84210 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"553f4e65-5a9f-49a8-ab7d-0a2375e56ddf","method":"transformInterceptedMessage","params":{"id":"5f7195b9-2f4f-4f5e-8dd3-466716a09559","connectionID":"41f3bb9d-9eb6-4863-a439-443b13081da5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5f7195b9-2f4f-4f5e-8dd3-466716a09559 unaltered + interception proxy got result of transforming message 5f7195b9-2f4f-4f5e-8dd3-466716a09559 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b93130c0-8563-4c4c-ba96-f81d63a439bb","method":"transformInterceptedMessage","params":{"id":"4a8e65eb-e6b8-4c6b-85bc-42ddcce7010e","connectionID":"7846579c-e8e5-4935-b78e-5955c8b4bbc8","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4a8e65eb-e6b8-4c6b-85bc-42ddcce7010e unaltered + interception proxy got result of transforming message 4a8e65eb-e6b8-4c6b-85bc-42ddcce7010e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0f2e0e07-df31-4024-a4ea-020e365a07ef","method":"transformInterceptedMessage","params":{"id":"65af239b-7866-4c58-b2a0-81748fcd3a1e","connectionID":"e01b344d-3282-43ed-a7c2-bb43eaabf2ec","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 65af239b-7866-4c58-b2a0-81748fcd3a1e unaltered + interception proxy got result of transforming message 65af239b-7866-4c58-b2a0-81748fcd3a1e Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 152; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_XMZaVA disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = SSn13x5VVd + rxChannel: Ably: Transport.onDisconnect(): err = [_ErrorInfo: Account _tmp_XMZaVA disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] + rxChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was active + rxChannel: Ably: ConnectionManager.deactivateTransport(): reason = Account _tmp_XMZaVA disabled + rxChannel: Ably: ConnectionManager.deactivateTransport(): Getting, clearing, and requeuing 0 pending messages + rxChannel: Ably: MessageQueue.clear(): clearing 0 messages + rxChannel: Ably: ConnectionManager.notifyState(): new state: disconnected; will retry connection immediately + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Account _tmp_XMZaVA disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Account _tmp_XMZaVA disabled + rxChannel: Ably: WebSocketTransport.dispose(): + rxChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: connecting + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + rxChannel: Ably: WebSocketTransport.dispose(): closing websocket + rxChannel: Ably: ConnectionManager.startConnect(): starting connection + rxChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + rxChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=resume,connectionKey=e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320,format=json] + rxChannel: Ably: ConnectionManager.connectWs(): undefined + rxChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + rxChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + rxChannel: Ably: WebSocketTransport.connect(): starting + rxChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + rxChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + rxChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + txChannel: Ably: ConnectionManager WebSocket slow timer: ws connectivity check succeeded + interception proxy got message {"jsonrpc":"2.0","id":"6c7da731-54b0-44c0-a306-5f4a903e5b46","method":"transformInterceptedMessage","params":{"id":"e331fa26-d860-4357-908f-1b610326f921","connectionID":"a16a2065-c20f-4882-b4fb-7af537170863","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105302}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e331fa26-d860-4357-908f-1b610326f921 unaltered + interception proxy got result of transforming message e331fa26-d860-4357-908f-1b610326f921 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7b88a7e6-22ab-4b1d-85b9-7974476c4220","method":"transformInterceptedMessage","params":{"id":"24992b27-5b5e-4c52-a67e-cc438cda1ef9","connectionID":"64c0ef19-ba10-4fc7-b2ef-ebbbd846974f","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105303}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 24992b27-5b5e-4c52-a67e-cc438cda1ef9 unaltered + interception proxy got result of transforming message 24992b27-5b5e-4c52-a67e-cc438cda1ef9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a2d0b5ae-52fb-47a1-80f3-06469367a3a0","method":"transformInterceptedMessage","params":{"id":"e101f7a2-e338-4703-b1bf-b4f0208b247c","connectionID":"df02bf77-0f59-4171-a2af-c1d85d1164a2","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105305}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e101f7a2-e338-4703-b1bf-b4f0208b247c unaltered + interception proxy got result of transforming message e101f7a2-e338-4703-b1bf-b4f0208b247c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8c0f2f75-5eef-4668-aae3-c5ea585f38ac","method":"transformInterceptedMessage","params":{"id":"ffdb2d6a-6902-4928-9e66-fb7dedc25fcf","connectionID":"e1767816-a77c-47aa-b926-107ab2515902","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105304}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ffdb2d6a-6902-4928-9e66-fb7dedc25fcf unaltered + interception proxy got result of transforming message ffdb2d6a-6902-4928-9e66-fb7dedc25fcf Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4d39d39f-0a9b-4049-b669-7ddbacdbee5e","method":"transformInterceptedMessage","params":{"id":"4829d278-41c4-40c5-9686-d56add656fed","connectionID":"6b787087-5a0f-4d0d-af4d-33dfc2689c0c","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105306}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4829d278-41c4-40c5-9686-d56add656fed unaltered + interception proxy got result of transforming message 4829d278-41c4-40c5-9686-d56add656fed Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"22b655a9-2d1f-4c7c-8c54-a49bb15bbe8d","method":"transformInterceptedMessage","params":{"id":"d4228389-eb28-4936-8626-57e1d455bc2a","connectionID":"ee5d131d-c339-4168-9385-9f592591a744","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105308}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d4228389-eb28-4936-8626-57e1d455bc2a unaltered + interception proxy got result of transforming message d4228389-eb28-4936-8626-57e1d455bc2a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c410c008-cbc5-407b-885d-18665a1eb89f","method":"transformInterceptedMessage","params":{"id":"a4b815a7-6c94-45dc-8147-a8486f3732c2","connectionID":"ec57dc77-5992-4cba-baaa-efcb01b243fd","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105322}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a4b815a7-6c94-45dc-8147-a8486f3732c2 unaltered + interception proxy got result of transforming message a4b815a7-6c94-45dc-8147-a8486f3732c2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8b1980ae-0ad0-4015-9a9f-9fe20c93c243","method":"transformInterceptedMessage","params":{"id":"e4b5271d-fdc7-42ee-bf47-4438be5bb38c","connectionID":"bba3fe0f-7684-4c19-ba1c-ca1a0a451e51","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105330}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e4b5271d-fdc7-42ee-bf47-4438be5bb38c unaltered + interception proxy got result of transforming message e4b5271d-fdc7-42ee-bf47-4438be5bb38c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"36c5fab7-ee4e-483c-9858-e8ac775776f9","method":"transformInterceptedMessage","params":{"id":"9bcf51c2-b207-4d3f-8ebe-66e4826da943","connectionID":"574e582c-a82b-49e9-9b67-14cbc0f2ecc4","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105331}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9bcf51c2-b207-4d3f-8ebe-66e4826da943 unaltered + interception proxy got result of transforming message 9bcf51c2-b207-4d3f-8ebe-66e4826da943 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6785418d-bf81-461b-8b81-d55643980d68","method":"transformInterceptedMessage","params":{"id":"b74e7968-c5d6-4cbe-bc00-7a7d103044a7","connectionID":"ad47f590-1be8-413a-8c59-8dacc95be7eb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105378}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b74e7968-c5d6-4cbe-bc00-7a7d103044a7 unaltered + interception proxy got result of transforming message b74e7968-c5d6-4cbe-bc00-7a7d103044a7 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9498903d-7e95-4eea-a16b-b6e6a7ba0d65","method":"transformInterceptedMessage","params":{"id":"45610861-16bb-492c-bc30-4f67d1439b11","connectionID":"9efe2c47-aa31-405d-a66a-c837c98245b6","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105382}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 45610861-16bb-492c-bc30-4f67d1439b11 unaltered + interception proxy got result of transforming message 45610861-16bb-492c-bc30-4f67d1439b11 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b171f48e-b9f9-47f4-8f4a-f196a792777e","method":"transformInterceptedMessage","params":{"id":"f3a02950-9eda-41ec-839f-6271e4e2ec69","connectionID":"a07e967a-d707-41fa-b093-f340fda4db6d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105512}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f3a02950-9eda-41ec-839f-6271e4e2ec69 unaltered + interception proxy got result of transforming message f3a02950-9eda-41ec-839f-6271e4e2ec69 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"14c67273-fbf0-4d87-bb3b-cf7167dc6a80","method":"transformInterceptedMessage","params":{"id":"97f71d0c-6a6c-4286-b23f-9ad634a36c03","connectionID":"b70e22f9-5574-47d0-95f7-baa0c3068a53","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971105747}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 97f71d0c-6a6c-4286-b23f-9ad634a36c03 unaltered + interception proxy got result of transforming message 97f71d0c-6a6c-4286-b23f-9ad634a36c03 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"524e76b2-aeb4-44bb-8060-3ff6b4a22eb1","method":"transformInterceptedMessage","params":{"id":"38bc452d-c91f-49b7-9720-039c7be4d815","connectionID":"04c9abd0-550d-405d-9d2e-76396f6080b0","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971106357}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 38bc452d-c91f-49b7-9720-039c7be4d815 unaltered + interception proxy got result of transforming message 38bc452d-c91f-49b7-9720-039c7be4d815 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9f6010ee-cb17-4e69-afba-63433c31d458","method":"transformInterceptedMessage","params":{"id":"17d7ccd0-ac81-4a0e-b38b-9dec011f6a6e","connectionID":"d3342545-ffc8-4060-b142-e888fc954259","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971106409}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 17d7ccd0-ac81-4a0e-b38b-9dec011f6a6e unaltered + interception proxy got result of transforming message 17d7ccd0-ac81-4a0e-b38b-9dec011f6a6e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4f414207-a316-433a-95ae-9819f79144bf","method":"transformInterceptedMessage","params":{"id":"dcdcc8de-5a09-4584-8791-0d0175f09866","connectionID":"4ae63886-636c-47cd-96f9-a56ba865e7eb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971106709}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dcdcc8de-5a09-4584-8791-0d0175f09866 unaltered + interception proxy got result of transforming message dcdcc8de-5a09-4584-8791-0d0175f09866 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"88ba0923-6593-4c16-b91f-baa033640791","method":"transformInterceptedMessage","params":{"id":"94ef0ade-d2da-4fb4-8d7a-d6692aedd3c1","connectionID":"b1b0551b-7151-4257-b5b0-746c4ef0868e","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971106736}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 94ef0ade-d2da-4fb4-8d7a-d6692aedd3c1 unaltered + interception proxy got result of transforming message 94ef0ade-d2da-4fb4-8d7a-d6692aedd3c1 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0a0be2ce-1ee2-40e4-ae95-4f36033e7196","method":"transformInterceptedMessage","params":{"id":"c8ede121-8ff6-41f9-b7bb-9db050aa709e","connectionID":"ba609f1d-06c2-4c92-9ec8-9fb78f19b10d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971106760}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c8ede121-8ff6-41f9-b7bb-9db050aa709e unaltered + interception proxy got result of transforming message c8ede121-8ff6-41f9-b7bb-9db050aa709e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"25193b40-1f23-46bc-920b-500a43214670","method":"transformInterceptedMessage","params":{"id":"9265944b-5409-48f5-8fa0-8491bc2e82fa","connectionID":"1dd8af02-4c63-4619-bd11-c7e32abee26f","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971106822}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9265944b-5409-48f5-8fa0-8491bc2e82fa unaltered + interception proxy got result of transforming message 9265944b-5409-48f5-8fa0-8491bc2e82fa Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + rxChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&resume=e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + rxChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&resume=e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = resume + interception proxy got message {"jsonrpc":"2.0","id":"6e9aaa07-fa1f-4e42-86cc-cece9582dd16","method":"transformInterceptedMessage","params":{"id":"d2f26a05-0331-4153-8b2c-9dd24a78ca52","connectionID":"d6052381-2392-4bb6-be28-f66f72159ed6","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971107163}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d2f26a05-0331-4153-8b2c-9dd24a78ca52 unaltered + interception proxy got result of transforming message d2f26a05-0331-4153-8b2c-9dd24a78ca52 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1b4bb5a3-8372-48aa-bc36-7997b693e067","method":"transformInterceptedMessage","params":{"id":"a474ecca-8535-4f32-b754-343065b6c255","connectionID":"e7ef87e7-0fcb-43fb-b204-f8235c689c73","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971107399}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a474ecca-8535-4f32-b754-343065b6c255 unaltered + interception proxy got result of transforming message a474ecca-8535-4f32-b754-343065b6c255 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"369fd270-dab1-420f-815b-eb5958e809fd","method":"transformInterceptedMessage","params":{"id":"2dfcad14-71ac-4313-8f55-0ad400377638","connectionID":"7fbaaa04-bad6-49f7-bc4c-bfeb8656531e","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_XMZaVA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971107497}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2dfcad14-71ac-4313-8f55-0ad400377638 unaltered + interception proxy got result of transforming message 2dfcad14-71ac-4313-8f55-0ad400377638 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e31da0c0-5f08-449e-aa24-6ba3d4878d35","method":"transformInterceptedMessage","params":{"id":"aafb7761-9c36-46c1-b228-29e27efb143b","connectionID":"a6458cb6-3a13-4d58-adc3-2d226ee26f5f","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971107611}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message aafb7761-9c36-46c1-b228-29e27efb143b unaltered + interception proxy got result of transforming message aafb7761-9c36-46c1-b228-29e27efb143b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ffcddfe9-baa3-4dd0-a94c-b799625f9876","method":"transformInterceptedMessage","params":{"id":"54a70e6b-d0e5-4c5c-9d75-a5287c09eaba","connectionID":"0de84c05-b93f-4f98-86c3-fe1adca9e020","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971107614}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 54a70e6b-d0e5-4c5c-9d75-a5287c09eaba unaltered + interception proxy got result of transforming message 54a70e6b-d0e5-4c5c-9d75-a5287c09eaba Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 232; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715971107614; error=[_ErrorInfo: Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = SSn13x5VVd + rxChannel: Ably: Transport.onProtocolMessage(): received error action; connectionId = SSn13x5VVd; err = {"code":40300,"statusCode":403,"nonfatal":false,"href":"https://help.ably.io/error/40300"} + rxChannel: Ably: Transport.onFatalError(): err = [_ErrorInfo: Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] + rxChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&resume=e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.deactivateTransport(): state = failed; was pending + rxChannel: Ably: ConnectionManager.deactivateTransport(): reason = Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.) + rxChannel: Ably: ConnectionManager.notifyState(): new state: failed + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: failed; reason: [_ErrorInfo: Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: failed; reason = Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.) + rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attached, notifying state failed + rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false + rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false + rxChannel: Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] + rxChannel: Ably: WebSocketTransport.dispose(): + rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&resume=e7dAszwTABc0Ei!SSn13x5VVdAaZXvyTWO2lx-320&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + rxChannel: Ably: WebSocketTransport.dispose(): closing websocket + rxChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + interception proxy got message {"jsonrpc":"2.0","id":"64511bfc-b4bb-4e94-94c1-0e66f320ec92","method":"transformInterceptedMessage","params":{"id":"857c3fc5-e114-4972-a133-e8cb09dd537a","connectionID":"dd84c08d-dd01-4b47-b9b6-806b53bcde32","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971108609}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 857c3fc5-e114-4972-a133-e8cb09dd537a unaltered + interception proxy got result of transforming message 857c3fc5-e114-4972-a133-e8cb09dd537a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b2af8bd3-c848-41f8-a12a-0223a5bf931d","method":"transformInterceptedMessage","params":{"id":"278817f1-87d4-4272-9996-d4ab8c81f45b","connectionID":"f629c142-3337-4190-a244-82298da62e4e","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971108874}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 278817f1-87d4-4272-9996-d4ab8c81f45b unaltered + interception proxy got result of transforming message 278817f1-87d4-4272-9996-d4ab8c81f45b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"61d7faef-5417-495a-b29b-3507b75b009e","method":"transformInterceptedMessage","params":{"id":"8f54309c-9bf5-4512-b88d-1ab003b0f474","connectionID":"7ec37881-66ba-4f8b-ab80-819133bbeda1","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971109362}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8f54309c-9bf5-4512-b88d-1ab003b0f474 unaltered + interception proxy got result of transforming message 8f54309c-9bf5-4512-b88d-1ab003b0f474 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"eaf4d7f2-85b7-4cc6-84ab-576e756b91b6","method":"transformInterceptedMessage","params":{"id":"98b9c35b-f90f-4c58-aa66-3daa9ff06056","connectionID":"3f60bd4c-2ff2-44ca-9537-7d59fa0d0028","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971109614}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 98b9c35b-f90f-4c58-aa66-3daa9ff06056 unaltered + interception proxy got result of transforming message 98b9c35b-f90f-4c58-aa66-3daa9ff06056 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e6880725-676b-46ea-8453-f07176d35529","method":"transformInterceptedMessage","params":{"id":"43fa04e2-6898-4258-b6fa-b03462316429","connectionID":"1359bce5-2313-4af1-90ce-66d8859d791d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971109656}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 43fa04e2-6898-4258-b6fa-b03462316429 unaltered + interception proxy got result of transforming message 43fa04e2-6898-4258-b6fa-b03462316429 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a3ac4f6b-c88a-4cbf-b99a-52567bf9e550","method":"transformInterceptedMessage","params":{"id":"532aa1a8-bfbf-4058-922f-f8cf751c9bef","connectionID":"0dfdb8e3-650f-451b-9c1e-bd3462677bda","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971109761}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 532aa1a8-bfbf-4058-922f-f8cf751c9bef unaltered + interception proxy got result of transforming message 532aa1a8-bfbf-4058-922f-f8cf751c9bef Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2c7c4603-0163-4138-9b59-f57e7914d480","method":"transformInterceptedMessage","params":{"id":"ebdfc554-df3e-4db8-8617-7b4b7cbc415c","connectionID":"d801802d-e8bd-4182-bb02-b485051940e3","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971110010}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ebdfc554-df3e-4db8-8617-7b4b7cbc415c unaltered + interception proxy got result of transforming message ebdfc554-df3e-4db8-8617-7b4b7cbc415c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"12a66faa-67b1-40e5-89db-5bce2ac24fdd","method":"transformInterceptedMessage","params":{"id":"bf4ceccc-1aef-4a57-a62f-5648ed6ea516","connectionID":"f00bc73d-b27f-4e75-ad8f-5b15550341fa","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_W5rYLA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971110077}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message bf4ceccc-1aef-4a57-a62f-5648ed6ea516 unaltered + interception proxy got result of transforming message bf4ceccc-1aef-4a57-a62f-5648ed6ea516 Object + interception proxy sending transformInterceptedMessage response Object + Test App _tmp_W5rYLA has been torn down + interception proxy client disconnected + txChannel: Ably: ConnectionManager retry timer expired: retrying + txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: connecting + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: Ably: ConnectionManager.startConnect(): starting connection + txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: Ably: ConnectionManager.connectWs(): undefined + txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: Ably: WebSocketTransport.connect(): starting + txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean + txChannel: Ably: ConnectionManager connecting timer expired: requesting new state: disconnected + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Connection to server temporarily unavailable; statusCode=400; code=80003; see https://help.ably.io/error/80003 ] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Connection to server temporarily unavailable + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was pending + txChannel: Ably: ConnectionManager.deactivateTransport(): reason = Connection to server temporarily unavailable + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: WebSocketTransport.dispose(): + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + txChannel: Ably: WebSocketTransport.dispose(): closing websocket + txChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + txChannel: Ably: ConnectionManager retry timer expired: retrying + txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: connecting + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: Ably: ConnectionManager.startConnect(): starting connection + txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: Ably: ConnectionManager.connectWs(): undefined + txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: Ably: WebSocketTransport.connect(): starting + txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean + txChannel: Ably: ConnectionManager connecting timer expired: requesting new state: disconnected + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Connection to server temporarily unavailable; statusCode=400; code=80003; see https://help.ably.io/error/80003 ] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Connection to server temporarily unavailable + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was pending + txChannel: Ably: ConnectionManager.deactivateTransport(): reason = Connection to server temporarily unavailable + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: WebSocketTransport.dispose(): + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + txChannel: Ably: WebSocketTransport.dispose(): closing websocket + txChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + txChannel: Ably: ConnectionManager retry timer expired: retrying + txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: connecting + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: Ably: ConnectionManager.startConnect(): starting connection + txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: Ably: ConnectionManager.connectWs(): undefined + txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: Ably: WebSocketTransport.connect(): starting + txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean + txChannel: Ably: ConnectionManager suspend timer expired: requesting new state: suspended + txChannel: Ably: ConnectionManager.notifyState(): new state: suspended + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: suspended; reason: [_ErrorInfo: Connection to server unavailable; statusCode=400; code=80002; see https://help.ably.io/error/80002 ] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: suspended; reason = Connection to server unavailable + txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attaching, notifying state suspended + txChannel: Ably: RealtimeChannel.failPendingPresence: channel; name = channel, err = [_ErrorInfo: Connection to server unavailable; statusCode=400; code=80002; see https://help.ably.io/error/80002 ] + txChannel: Ably: Channel state for channel "channel": suspended; reason: [_ErrorInfo: Connection to server unavailable; statusCode=400; code=80002; see https://help.ably.io/error/80002 ] + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was pending + txChannel: Ably: ConnectionManager.deactivateTransport(): reason = Connection to server temporarily unavailable + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Connection to server temporarily unavailable; statusCode=400; code=80003; see https://help.ably.io/error/80003 ] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Connection to server temporarily unavailable + txChannel: Ably: WebSocketTransport.dispose(): + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +index.mjs:181 Uncaught (in promise) +fromValues @ index.mjs:181 +suspended @ index.mjs:3558 +notifyState @ index.mjs:4780 +(anonymous) @ index.mjs:4629 + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + txChannel: Ably: WebSocketTransport.dispose(): closing websocket + txChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + txChannel: Ably: ConnectionManager retry timer expired: retrying + txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: connecting + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: Ably: ConnectionManager.startConnect(): starting connection + txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: Ably: ConnectionManager.connectWs(): undefined + txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: Ably: WebSocketTransport.connect(): starting + txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null + txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean + txChannel: Ably: ConnectionManager connecting timer expired: requesting new state: suspended + txChannel: Ably: ConnectionManager.notifyState(): new state: suspended + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: suspended; reason: [_ErrorInfo: Connection to server unavailable; statusCode=400; code=80002; see https://help.ably.io/error/80002 ] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: suspended; reason = Connection to server unavailable + txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = suspended, notifying state suspended + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was pending + txChannel: Ably: ConnectionManager.deactivateTransport(): reason = Connection to server temporarily unavailable + txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Connection to server temporarily unavailable; statusCode=400; code=80003; see https://help.ably.io/error/80003 ] + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Connection to server temporarily unavailable + txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): closing websocket +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket +modular.test.js:592 txChannel: Ably: ConnectionManager retry timer expired: retrying +modular.test.js:592 txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:592 txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:592 txChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:592 txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:592 txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean +modular.test.js:592 txChannel: Ably: ConnectionManager connecting timer expired: requesting new state: suspended +modular.test.js:592 txChannel: Ably: ConnectionManager.notifyState(): new state: suspended +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: suspended; reason: [_ErrorInfo: Connection to server unavailable; statusCode=400; code=80002; see https://help.ably.io/error/80002 ] +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: suspended; reason = Connection to server unavailable +modular.test.js:592 txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = suspended, notifying state suspended +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was pending +modular.test.js:592 txChannel: Ably: ConnectionManager.deactivateTransport(): reason = Connection to server temporarily unavailable +modular.test.js:592 txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Connection to server temporarily unavailable; statusCode=400; code=80003; see https://help.ably.io/error/80003 ] +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Connection to server temporarily unavailable +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): closing websocket +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket +modular.test.js:592 txChannel: Ably: ConnectionManager retry timer expired: retrying +modular.test.js:592 txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:592 txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:592 txChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:592 txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:592 txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean +modular.test.js:592 txChannel: Ably: ConnectionManager connecting timer expired: requesting new state: suspended +modular.test.js:592 txChannel: Ably: ConnectionManager.notifyState(): new state: suspended +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: suspended; reason: [_ErrorInfo: Connection to server unavailable; statusCode=400; code=80002; see https://help.ably.io/error/80002 ] +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: suspended; reason = Connection to server unavailable +modular.test.js:592 txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = suspended, notifying state suspended +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was pending +modular.test.js:592 txChannel: Ably: ConnectionManager.deactivateTransport(): reason = Connection to server temporarily unavailable +modular.test.js:592 txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Connection to server temporarily unavailable; statusCode=400; code=80003; see https://help.ably.io/error/80003 ] +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Connection to server temporarily unavailable +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): closing websocket +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket +modular.test.js:592 txChannel: Ably: ConnectionManager retry timer expired: retrying +modular.test.js:592 txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:592 txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:592 txChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_W5rYLA.LjJ4BA:WeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM; err: null +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:592 txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:592 txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_W5rYLA.LjJ4BA%3AWeZ0ir3T3ZiL04GA6spVSzc2lT6skvqjx_aNMEbgwkM&clientId=6383626078799054&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean \ No newline at end of file From 550c7c5faa6dc315964a96bb94ac814f80b71a25 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 15:49:32 -0300 Subject: [PATCH 15/32] furthe rlogging --- src/common/lib/client/realtimepresence.ts | 4 ++-- src/common/lib/transport/websockettransport.ts | 1 + test/browser/modular.test.js | 18 +++++++++--------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/common/lib/client/realtimepresence.ts b/src/common/lib/client/realtimepresence.ts index 68f2d1575..6d7206fe7 100644 --- a/src/common/lib/client/realtimepresence.ts +++ b/src/common/lib/client/realtimepresence.ts @@ -102,7 +102,7 @@ class RealtimePresence extends EventEmitter { } async enter(data: unknown): Promise { - Logger.logAction(this.logger, Logger.LOG_DEBUG, "RealtimePresence.enter"); + Logger.logAction(this.logger, Logger.LOG_DEBUG, 'RealtimePresence.enter'); if (isAnonymousOrWildcard(this)) { throw new ErrorInfo('clientId must be specified to enter a presence channel', 40012, 400); } @@ -130,7 +130,7 @@ class RealtimePresence extends EventEmitter { data: unknown, action: string, ): Promise { - Logger.logAction(this.logger, Logger.LOG_DEBUG, "RealtimePresence._enterOrUpdateClient"); + Logger.logAction(this.logger, Logger.LOG_DEBUG, 'RealtimePresence._enterOrUpdateClient'); const channel = this.channel; if (!channel.connectionManager.activeState()) { throw channel.connectionManager.getError(); diff --git a/src/common/lib/transport/websockettransport.ts b/src/common/lib/transport/websockettransport.ts index 3e12f1d67..8fad206d7 100644 --- a/src/common/lib/transport/websockettransport.ts +++ b/src/common/lib/transport/websockettransport.ts @@ -38,6 +38,7 @@ class WebSocketTransport extends Transport { createWebSocket(uri: string, connectParams: Record) { this.uri = uri + Utils.toQueryString(connectParams); + Logger.logAction(this.logger, Logger.LOG_MINOR, 'WebSocketTransport.createWebSocket()', 'uri:' + this.uri); return new Platform.Config.WebSocket(this.uri); } diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index d3976f9a6..c586487b9 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -577,7 +577,7 @@ function registerAblyModularTests(helper) { it('offers realtime presence functionality', async () => { const rxChannel = new BaseRealtime( ablyClientOptions({ - logHandler: (msg) => console.log("rxChannel: ", msg), + logHandler: (msg) => console.log('rxChannel: ', msg), logLevel: 4, plugins: { WebSocketTransport, @@ -589,7 +589,7 @@ function registerAblyModularTests(helper) { const txClientId = randomString(); const txChannel = new BaseRealtime( ablyClientOptions({ - logHandler: (msg) => console.log("txChannel: ", msg), + logHandler: (msg) => console.log('txChannel: ', msg), logLevel: 4, clientId: txClientId, plugins: { @@ -604,17 +604,17 @@ function registerAblyModularTests(helper) { const rxPresenceMessagePromise = new Promise((resolve, reject) => { resolveRxPresenceMessagePromise = resolve; }); - console.log("LAWRENCE: begin waiting for presence subscribe"); + console.log('LAWRENCE: begin waiting for presence subscribe'); await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); - console.log("LAWRENCE: end waiting for presence subscribe"); - console.log("LAWRENCE: begin waiting for presence enter"); - console.log("LAWRENCE: txChannel.presence.enter is", txChannel.presence.enter); + console.log('LAWRENCE: end waiting for presence subscribe'); + console.log('LAWRENCE: begin waiting for presence enter'); + console.log('LAWRENCE: txChannel.presence.enter is', txChannel.presence.enter); await txChannel.presence.enter(); - console.log("LAWRENCE: end waiting for presence enter"); + console.log('LAWRENCE: end waiting for presence enter'); - console.log("LAWRENCE: begin waiting for rxPresenceMessagePromise"); + console.log('LAWRENCE: begin waiting for rxPresenceMessagePromise'); const rxPresenceMessage = await rxPresenceMessagePromise; - console.log("LAWRENCE: end waiting for rxPresenceMessagePromise"); + console.log('LAWRENCE: end waiting for rxPresenceMessagePromise'); expect(rxPresenceMessage.clientId).to.equal(txClientId); }); }); From 43913ed850596acd56dc25a75a5d698333d2b63a Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 15:50:38 -0300 Subject: [PATCH 16/32] logs --- with-failure-logs-3.txt | 1594 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1594 insertions(+) create mode 100644 with-failure-logs-3.txt diff --git a/with-failure-logs-3.txt b/with-failure-logs-3.txt new file mode 100644 index 000000000..360d2e18e --- /dev/null +++ b/with-failure-logs-3.txt @@ -0,0 +1,1594 @@ +favicon.ico:1 + + + Failed to load resource: the server responded with a status of 404 (Not Found) +interception_proxy_client.js:20 connected to interception proxy +interception_proxy_client.js:56 interception proxy sending startInterception request Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8844936285723484","result":{}} +interception_proxy_client.js:34 startInterception completed +testapp_module.js:38 Test App _tmp_9XT2Hg in environment sandbox has been set up +root_hooks.js:31 START TEST: browser/modular attempting to initialize with no client options BaseRest throws an error +logger.ts:56 15:49:52.205 Ably: BaseRest(): BaseRest must be initialized with a client options object +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:203 +BaseRest @ baserest.ts:21 +(anonymous) @ modular.test.js:48 +assertThrows @ VM6 chai.js:3044 +methodWrapper @ VM6 chai.js:7910 +(anonymous) @ modular.test.js:48 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with no client options BaseRest throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with no client options _BaseRealtime throws an error +logger.ts:56 15:49:52.214 Ably: BaseRealtime(): BaseRealtime must be initialized with a client options object +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:203 +_BaseRealtime @ baserealtime.ts:36 +(anonymous) @ modular.test.js:48 +assertThrows @ VM6 chai.js:3044 +methodWrapper @ VM6 chai.js:7910 +(anonymous) @ modular.test.js:48 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with no client options _BaseRealtime throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just an API key BaseRest throws an error +logger.ts:56 15:49:52.216 Ably: BaseRest(): BaseRest cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property. (Set this Ably API key as the object’s `key` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:221 +BaseRest @ baserest.ts:21 +(anonymous) @ modular.test.js:58 +assertThrows @ VM6 chai.js:3044 +methodWrapper @ VM6 chai.js:7910 +(anonymous) @ modular.test.js:58 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just an API key BaseRest throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just an API key _BaseRealtime throws an error +logger.ts:56 15:49:52.217 Ably: BaseRealtime(): BaseRealtime cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property. (Set this Ably API key as the object’s `key` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:221 +_BaseRealtime @ baserealtime.ts:36 +(anonymous) @ modular.test.js:58 +assertThrows @ VM6 chai.js:3044 +methodWrapper @ VM6 chai.js:7910 +(anonymous) @ modular.test.js:58 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just an API key _BaseRealtime throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just a token BaseRest throws an error +logger.ts:56 15:49:52.218 Ably: BaseRest(): BaseRest cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property. (Set this Ably Token as the object’s `token` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:213 +BaseRest @ baserest.ts:21 +(anonymous) @ modular.test.js:70 +assertThrows @ VM6 chai.js:3044 +methodWrapper @ VM6 chai.js:7910 +(anonymous) @ modular.test.js:70 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just a token BaseRest throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just a token _BaseRealtime throws an error +logger.ts:56 15:49:52.219 Ably: BaseRealtime(): BaseRealtime cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property. (Set this Ably Token as the object’s `token` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:213 +_BaseRealtime @ baserealtime.ts:36 +(anonymous) @ modular.test.js:70 +assertThrows @ VM6 chai.js:3044 +methodWrapper @ VM6 chai.js:7910 +(anonymous) @ modular.test.js:70 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just a token _BaseRealtime throws an error +root_hooks.js:31 START TEST: browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin +root_hooks.js:27 END TEST: browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin +root_hooks.js:31 START TEST: browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin +root_hooks.js:27 END TEST: browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"263447be-26b9-49df-87d8-ad1ec5153daf","method":"transformInterceptedMessage","params":{"id":"ae2ef2ba-d4a1-43ca-a199-4125ca389f4e","connectionID":"a7e3cf0d-fd90-47f7-bb03-84f1819789c2","type":"text","data":"{\"action\":4,\"connectionId\":\"RujowVfjAO\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!RujowVfjAOAVeUFl4z-PY8-1f96\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '263447be-26b9-49df-87d8-ad1ec5153daf', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'RujowVfjAO', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ae2ef2ba-d4a1-43ca-a199-4125ca389f4e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ae2ef2ba-d4a1-43ca-a199-4125ca389f4e {action: 4, connectionId: 'RujowVfjAO', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '263447be-26b9-49df-87d8-ad1ec5153daf', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"31d8e0f2-14eb-40d4-ae44-fc2bbcaf0901","method":"transformInterceptedMessage","params":{"id":"ac63f816-5d7a-419b-87b9-10c62d86030d","connectionID":"47b329fe-1eaf-42c3-9b7e-b25c1b748294","type":"text","data":"{\"action\":4,\"connectionId\":\"a-j3bskmO-\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!a-j3bskmO-Aayeq-NWdaQ6-15f1\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '31d8e0f2-14eb-40d4-ae44-fc2bbcaf0901', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'a-j3bskmO-', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ac63f816-5d7a-419b-87b9-10c62d86030d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ac63f816-5d7a-419b-87b9-10c62d86030d {action: 4, connectionId: 'a-j3bskmO-', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '31d8e0f2-14eb-40d4-ae44-fc2bbcaf0901', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b837a285-8ef5-4edc-978b-856c5cd1b448","method":"transformInterceptedMessage","params":{"id":"6a5c1e3b-b53a-4dd2-9d7c-03e72dd55e0c","connectionID":"c0dac806-fc46-4d96-bc60-73a87bfb3b7e","type":"text","data":"{\"action\":4,\"connectionId\":\"uqONgC52Z5\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!uqONgC52Z5AbYR6Gn4uLml-1590\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b837a285-8ef5-4edc-978b-856c5cd1b448', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'uqONgC52Z5', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 6a5c1e3b-b53a-4dd2-9d7c-03e72dd55e0c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 6a5c1e3b-b53a-4dd2-9d7c-03e72dd55e0c {action: 4, connectionId: 'uqONgC52Z5', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b837a285-8ef5-4edc-978b-856c5cd1b448', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ea3f8726-0127-4d84-8d2d-458440134605","method":"transformInterceptedMessage","params":{"id":"913b9b73-006a-4a5f-9300-5792bea68d47","connectionID":"3eb07829-659a-4cf9-a288-823a5ae57625","type":"text","data":"{\"action\":4,\"connectionId\":\"X0AwhuZDP_\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!X0AwhuZDP_AWOd0uCH6hNQ-1f9b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ea3f8726-0127-4d84-8d2d-458440134605', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'X0AwhuZDP_', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 913b9b73-006a-4a5f-9300-5792bea68d47 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 913b9b73-006a-4a5f-9300-5792bea68d47 {action: 4, connectionId: 'X0AwhuZDP_', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ea3f8726-0127-4d84-8d2d-458440134605', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"df44b588-8d34-4989-99a4-74e868bd0a22","method":"transformInterceptedMessage","params":{"id":"d5a35634-416e-471b-8d69-824d46a7b600","connectionID":"08f42aac-56b6-42c6-8e1b-bf33342e871f","type":"text","data":"{\"action\":4,\"connectionId\":\"4FfzPI0EZ9\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!4FfzPI0EZ9AXT3d_8iCbTB-15f5\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'df44b588-8d34-4989-99a4-74e868bd0a22', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '4FfzPI0EZ9', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d5a35634-416e-471b-8d69-824d46a7b600 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d5a35634-416e-471b-8d69-824d46a7b600 {action: 4, connectionId: '4FfzPI0EZ9', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'df44b588-8d34-4989-99a4-74e868bd0a22', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0b96b4f9-a5f9-4467-95bd-8ee3278200c1","method":"transformInterceptedMessage","params":{"id":"53f58c0a-f02e-4468-a0b5-a8cd72c08726","connectionID":"02704e03-3245-44f3-afcf-2ad94460f3d2","type":"text","data":"{\"action\":4,\"connectionId\":\"J-LZHKN1wK\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!J-LZHKN1wKAdoe2BehlA7A-1591\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0b96b4f9-a5f9-4467-95bd-8ee3278200c1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'J-LZHKN1wK', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 53f58c0a-f02e-4468-a0b5-a8cd72c08726 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 53f58c0a-f02e-4468-a0b5-a8cd72c08726 {action: 4, connectionId: 'J-LZHKN1wK', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0b96b4f9-a5f9-4467-95bd-8ee3278200c1', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"60182e44-48da-46b6-a75a-e27443416b74","method":"transformInterceptedMessage","params":{"id":"179151a0-ca07-4418-bf84-927ca051490c","connectionID":"846879f8-2ec9-4941-af4c-3294549be371","type":"text","data":"{\"action\":4,\"connectionId\":\"04EugY8mal\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!04EugY8malAcPNEz7aDzSB-1592\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '60182e44-48da-46b6-a75a-e27443416b74', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '04EugY8mal', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 179151a0-ca07-4418-bf84-927ca051490c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 179151a0-ca07-4418-bf84-927ca051490c {action: 4, connectionId: '04EugY8mal', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '60182e44-48da-46b6-a75a-e27443416b74', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e99e0026-d85d-4a8d-a7eb-c537922d6aed","method":"transformInterceptedMessage","params":{"id":"6a740a0f-e391-424d-a864-a2ad0e72e2c7","connectionID":"d60a874a-2e2e-4926-9600-51308d2dc26c","type":"text","data":"{\"action\":4,\"connectionId\":\"cRA-aiAC9P\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!cRA-aiAC9PARlx8VrBEq5h-206a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e99e0026-d85d-4a8d-a7eb-c537922d6aed', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'cRA-aiAC9P', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 6a740a0f-e391-424d-a864-a2ad0e72e2c7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 6a740a0f-e391-424d-a864-a2ad0e72e2c7 {action: 4, connectionId: 'cRA-aiAC9P', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e99e0026-d85d-4a8d-a7eb-c537922d6aed', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"88921f06-3637-4035-8287-447ba1612991","method":"transformInterceptedMessage","params":{"id":"484f18f8-0290-4f47-b58c-75d1e4471768","connectionID":"e76ea74c-8258-464d-9298-8bb0bc140e3e","type":"text","data":"{\"action\":4,\"connectionId\":\"tcM0COXxS2\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!tcM0COXxS2ATFCjya5TASW-a28\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '88921f06-3637-4035-8287-447ba1612991', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'tcM0COXxS2', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 484f18f8-0290-4f47-b58c-75d1e4471768 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 484f18f8-0290-4f47-b58c-75d1e4471768 {action: 4, connectionId: 'tcM0COXxS2', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '88921f06-3637-4035-8287-447ba1612991', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f0ef743a-77d8-4a1c-b55a-943315685f0c","method":"transformInterceptedMessage","params":{"id":"cd9dc717-9dac-459a-a54f-29251a18ea12","connectionID":"95bf5d8d-aa3b-40e2-bb02-62e39508132c","type":"text","data":"{\"action\":4,\"connectionId\":\"nlvVURFJBT\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!nlvVURFJBTAZBSzXHCH4dS-15f9\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f0ef743a-77d8-4a1c-b55a-943315685f0c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'nlvVURFJBT', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message cd9dc717-9dac-459a-a54f-29251a18ea12 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message cd9dc717-9dac-459a-a54f-29251a18ea12 {action: 4, connectionId: 'nlvVURFJBT', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f0ef743a-77d8-4a1c-b55a-943315685f0c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b80f110d-b90f-45c2-8ced-e201730381a1","method":"transformInterceptedMessage","params":{"id":"8c964817-1cb1-4824-ba4c-2706d65e01f0","connectionID":"5c3decea-dbac-4b72-bd54-e1d9275581d7","type":"text","data":"{\"action\":4,\"connectionId\":\"Bbn9OCYGgL\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!Bbn9OCYGgLATA5w3JzhiX1-a2a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b80f110d-b90f-45c2-8ced-e201730381a1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'Bbn9OCYGgL', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8c964817-1cb1-4824-ba4c-2706d65e01f0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8c964817-1cb1-4824-ba4c-2706d65e01f0 {action: 4, connectionId: 'Bbn9OCYGgL', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b80f110d-b90f-45c2-8ced-e201730381a1', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"79b01a34-17e5-4e01-bc09-17dfe0e6e739","method":"transformInterceptedMessage","params":{"id":"df94853d-5579-430e-99d6-1de202641330","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":4,\"connectionId\":\"na8WpnUdf7\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!na8WpnUdf7AU2Eu__sdty7-a2b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '79b01a34-17e5-4e01-bc09-17dfe0e6e739', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'na8WpnUdf7', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message df94853d-5579-430e-99d6-1de202641330 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message df94853d-5579-430e-99d6-1de202641330 {action: 4, connectionId: 'na8WpnUdf7', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '79b01a34-17e5-4e01-bc09-17dfe0e6e739', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9116ae9e-42b2-4c16-a301-60b7df2e0315","method":"transformInterceptedMessage","params":{"id":"00906601-aa8c-4140-8505-52ad14b87786","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9116ae9e-42b2-4c16-a301-60b7df2e0315', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 00906601-aa8c-4140-8505-52ad14b87786 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 00906601-aa8c-4140-8505-52ad14b87786 {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9116ae9e-42b2-4c16-a301-60b7df2e0315', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ef3147ad-0534-4f4c-8ae3-f618bfaf958c","method":"transformInterceptedMessage","params":{"id":"336d0da1-f888-4b3a-8bc3-4f71289570f9","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971799028-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ef3147ad-0534-4f4c-8ae3-f618bfaf958c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971799028-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 336d0da1-f888-4b3a-8bc3-4f71289570f9 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 336d0da1-f888-4b3a-8bc3-4f71289570f9 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971799028-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ef3147ad-0534-4f4c-8ae3-f618bfaf958c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"aec7c0fa-c336-4ed6-89aa-1ff922a5a84c","method":"transformInterceptedMessage","params":{"id":"0c18d71e-ab02-4cdf-8617-ca3d57b1fe00","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'aec7c0fa-c336-4ed6-89aa-1ff922a5a84c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0c18d71e-ab02-4cdf-8617-ca3d57b1fe00 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0c18d71e-ab02-4cdf-8617-ca3d57b1fe00 {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'aec7c0fa-c336-4ed6-89aa-1ff922a5a84c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"360b73ca-a0b9-4da2-934b-b77bbc0f95f0","method":"transformInterceptedMessage","params":{"id":"259a91be-6fc6-460b-84d4-cc84dfae7443","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '360b73ca-a0b9-4da2-934b-b77bbc0f95f0', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 259a91be-6fc6-460b-84d4-cc84dfae7443 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 259a91be-6fc6-460b-84d4-cc84dfae7443 {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '360b73ca-a0b9-4da2-934b-b77bbc0f95f0', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"cee309fd-7c4e-4554-a130-cc916cbea9d5","method":"transformInterceptedMessage","params":{"id":"26ec3008-b9a8-4a5a-84dd-3ab04a804ab4","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":15,\"id\":\"na8WpnUdf7:0\",\"connectionId\":\"na8WpnUdf7\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971800469-0\",\"timestamp\":1715971800469,\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'cee309fd-7c4e-4554-a130-cc916cbea9d5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'na8WpnUdf7:0', connectionId: 'na8WpnUdf7', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971800469-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 26ec3008-b9a8-4a5a-84dd-3ab04a804ab4 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 26ec3008-b9a8-4a5a-84dd-3ab04a804ab4 {action: 15, id: 'na8WpnUdf7:0', connectionId: 'na8WpnUdf7', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971800469-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'cee309fd-7c4e-4554-a130-cc916cbea9d5', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` +root_hooks.js:31 START TEST: browser/modular Crypto standalone functions generateRandomKey +root_hooks.js:27 END TEST: browser/modular Crypto standalone functions generateRandomKey +root_hooks.js:31 START TEST: browser/modular Crypto standalone functions getDefaultCryptoParams +root_hooks.js:27 END TEST: browser/modular Crypto standalone functions getDefaultCryptoParams +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages +root_hooks.js:31 START TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"cdd4c1ac-5ceb-492d-9dd8-67da73b9c6f5","method":"transformInterceptedMessage","params":{"id":"045f9223-2ce1-4924-ae94-66dd1958a9b4","connectionID":"e60a357c-902b-4a67-bc4d-74862eb5e98f","type":"text","data":"{\"action\":4,\"connectionId\":\"nyZ5lRRSmD\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!nyZ5lRRSmDAfoLX5fCCBK--a2e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'cdd4c1ac-5ceb-492d-9dd8-67da73b9c6f5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'nyZ5lRRSmD', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 045f9223-2ce1-4924-ae94-66dd1958a9b4 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 045f9223-2ce1-4924-ae94-66dd1958a9b4 {action: 4, connectionId: 'nyZ5lRRSmD', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'cdd4c1ac-5ceb-492d-9dd8-67da73b9c6f5', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"006a4818-dbf8-44b6-a122-3d6d73fdc164","method":"transformInterceptedMessage","params":{"id":"e4592457-6f53-4297-ade5-4e5634dd9348","connectionID":"12399d8e-c4c5-4c7d-bc23-61525fb5161b","type":"text","data":"{\"action\":4,\"connectionId\":\"-tAJLV-ItX\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!-tAJLV-ItXAYegyQuq3Mm5-15fc\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '006a4818-dbf8-44b6-a122-3d6d73fdc164', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '-tAJLV-ItX', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e4592457-6f53-4297-ade5-4e5634dd9348 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e4592457-6f53-4297-ade5-4e5634dd9348 {action: 4, connectionId: '-tAJLV-ItX', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '006a4818-dbf8-44b6-a122-3d6d73fdc164', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f415b6b6-52ca-4d6d-bce8-570ff4148cf7","method":"transformInterceptedMessage","params":{"id":"2f737450-64b5-4a92-a428-af100840b256","connectionID":"20394a52-4f25-46ad-b04c-e21c6a886f32","type":"text","data":"{\"action\":4,\"connectionId\":\"F91_UVayTR\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!F91_UVayTRAev631Drcm-B-1fa3\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f415b6b6-52ca-4d6d-bce8-570ff4148cf7', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'F91_UVayTR', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 2f737450-64b5-4a92-a428-af100840b256 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 2f737450-64b5-4a92-a428-af100840b256 {action: 4, connectionId: 'F91_UVayTR', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f415b6b6-52ca-4d6d-bce8-570ff4148cf7', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"76728541-2fd0-4f66-894c-9b27336027da","method":"transformInterceptedMessage","params":{"id":"25bc824d-1a69-4667-a347-b1bbbde92f61","connectionID":"4faa409a-3a67-46e7-8121-e1204ddfbe3d","type":"text","data":"{\"action\":4,\"connectionId\":\"6fJL_jpYvD\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!6fJL_jpYvDAamLt9qTNNTV-1fa4\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '76728541-2fd0-4f66-894c-9b27336027da', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '6fJL_jpYvD', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 25bc824d-1a69-4667-a347-b1bbbde92f61 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 25bc824d-1a69-4667-a347-b1bbbde92f61 {action: 4, connectionId: '6fJL_jpYvD', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '76728541-2fd0-4f66-894c-9b27336027da', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9bf5ffe3-d6fd-47c1-90bd-14ea63ac667a","method":"transformInterceptedMessage","params":{"id":"499b02a5-bd75-4a81-a568-2db1749b6213","connectionID":"f739dff8-f4ed-4e9b-8bd2-0d59030aeaa7","type":"text","data":"{\"action\":4,\"connectionId\":\"KTmH7Pw_rC\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!KTmH7Pw_rCAYqE9OKnAsjZ-1fa5\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9bf5ffe3-d6fd-47c1-90bd-14ea63ac667a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'KTmH7Pw_rC', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 499b02a5-bd75-4a81-a568-2db1749b6213 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 499b02a5-bd75-4a81-a568-2db1749b6213 {action: 4, connectionId: 'KTmH7Pw_rC', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9bf5ffe3-d6fd-47c1-90bd-14ea63ac667a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"59bfd052-42f2-423e-a977-849b5d208227","method":"transformInterceptedMessage","params":{"id":"a1b72bf1-34a6-4a65-b759-3a9c0adc29a8","connectionID":"f8868462-7cb5-47eb-a911-dbf54c36cc71","type":"text","data":"{\"action\":4,\"connectionId\":\"on6KQ_ZU7s\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!on6KQ_ZU7sAW7RBukzIxoJ-a10\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '59bfd052-42f2-423e-a977-849b5d208227', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'on6KQ_ZU7s', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a1b72bf1-34a6-4a65-b759-3a9c0adc29a8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a1b72bf1-34a6-4a65-b759-3a9c0adc29a8 {action: 4, connectionId: 'on6KQ_ZU7s', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '59bfd052-42f2-423e-a977-849b5d208227', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"66958145-1635-40a6-a1f4-db46cf14b6fc","method":"transformInterceptedMessage","params":{"id":"70a99277-739f-4d3d-8a35-5855a7037455","connectionID":"7934989a-8d9b-483e-8441-7db3515dcc5c","type":"text","data":"{\"action\":4,\"connectionId\":\"taZpr600yf\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!taZpr600yfAXGt1MmePHY_-1596\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '66958145-1635-40a6-a1f4-db46cf14b6fc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'taZpr600yf', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 70a99277-739f-4d3d-8a35-5855a7037455 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 70a99277-739f-4d3d-8a35-5855a7037455 {action: 4, connectionId: 'taZpr600yf', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '66958145-1635-40a6-a1f4-db46cf14b6fc', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a9028c97-cff0-4b4b-99bd-77f0449e9c4a","method":"transformInterceptedMessage","params":{"id":"3a8baa84-29d4-4e8b-bd40-61891659581c","connectionID":"632a1377-f53b-464d-ba67-19d70b0d6093","type":"text","data":"{\"action\":4,\"connectionId\":\"LELrr0rpPm\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!LELrr0rpPmAWTTwyXldDSa-15fe\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a9028c97-cff0-4b4b-99bd-77f0449e9c4a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'LELrr0rpPm', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 3a8baa84-29d4-4e8b-bd40-61891659581c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 3a8baa84-29d4-4e8b-bd40-61891659581c {action: 4, connectionId: 'LELrr0rpPm', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a9028c97-cff0-4b4b-99bd-77f0449e9c4a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9ae18e72-3020-48b0-a6a7-e0fed79e9c6f","method":"transformInterceptedMessage","params":{"id":"30d115dd-8e1f-4285-a208-7c8e81e2dba2","connectionID":"eb0e0968-4015-4127-b6c9-7431531921f9","type":"text","data":"{\"action\":4,\"connectionId\":\"qTQmVVhI46\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!qTQmVVhI46ASXt2DTH3ON1-1597\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9ae18e72-3020-48b0-a6a7-e0fed79e9c6f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'qTQmVVhI46', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 30d115dd-8e1f-4285-a208-7c8e81e2dba2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 30d115dd-8e1f-4285-a208-7c8e81e2dba2 {action: 4, connectionId: 'qTQmVVhI46', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9ae18e72-3020-48b0-a6a7-e0fed79e9c6f', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d1ad0537-b46c-4974-ba14-e8fa82f91beb","method":"transformInterceptedMessage","params":{"id":"af98568a-334d-4849-bef7-18edc8227eeb","connectionID":"58bdb787-d9c7-47a5-a3a4-cc4301a9fffe","type":"text","data":"{\"action\":4,\"connectionId\":\"MyRoR6qZx5\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!MyRoR6qZx5Aa13Ts9QfU8D-a11\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd1ad0537-b46c-4974-ba14-e8fa82f91beb', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'MyRoR6qZx5', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message af98568a-334d-4849-bef7-18edc8227eeb unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message af98568a-334d-4849-bef7-18edc8227eeb {action: 4, connectionId: 'MyRoR6qZx5', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd1ad0537-b46c-4974-ba14-e8fa82f91beb', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"828fa89d-cd71-4bfa-883a-e41118fdaa47","method":"transformInterceptedMessage","params":{"id":"ce4fb62c-50d1-4f19-b764-d71dd7ff3c0d","connectionID":"01175dcc-0cb9-4aa6-ac95-6cf0e0bf6dd6","type":"text","data":"{\"action\":4,\"connectionId\":\"ntOkZmpWDG\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!ntOkZmpWDGAa29WdAOs83g-1598\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '828fa89d-cd71-4bfa-883a-e41118fdaa47', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'ntOkZmpWDG', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ce4fb62c-50d1-4f19-b764-d71dd7ff3c0d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ce4fb62c-50d1-4f19-b764-d71dd7ff3c0d {action: 4, connectionId: 'ntOkZmpWDG', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '828fa89d-cd71-4bfa-883a-e41118fdaa47', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3d686cb9-283a-43ff-a1fe-be811f87b7ea","method":"transformInterceptedMessage","params":{"id":"25305cf5-e5af-4770-be77-92ec95e93337","connectionID":"8a42de28-4b1a-4acd-9425-04735cb283fd","type":"text","data":"{\"action\":4,\"connectionId\":\"lumqt1wFfH\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!lumqt1wFfHAXfCneTn3z9m-2072\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3d686cb9-283a-43ff-a1fe-be811f87b7ea', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'lumqt1wFfH', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 25305cf5-e5af-4770-be77-92ec95e93337 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 25305cf5-e5af-4770-be77-92ec95e93337 {action: 4, connectionId: 'lumqt1wFfH', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3d686cb9-283a-43ff-a1fe-be811f87b7ea', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"40cd8d9b-9b4a-467b-9b0f-3b5650cf6c3a","method":"transformInterceptedMessage","params":{"id":"603f8762-f05b-46f1-b715-609d9d670d32","connectionID":"73ca7259-d3b4-43a6-a814-fbbd0cd3e202","type":"text","data":"{\"action\":4,\"connectionId\":\"yb6viQkFJL\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!yb6viQkFJLAQylkLTNZdLE-1599\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '40cd8d9b-9b4a-467b-9b0f-3b5650cf6c3a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'yb6viQkFJL', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 603f8762-f05b-46f1-b715-609d9d670d32 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 603f8762-f05b-46f1-b715-609d9d670d32 {action: 4, connectionId: 'yb6viQkFJL', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '40cd8d9b-9b4a-467b-9b0f-3b5650cf6c3a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"108693be-5922-41ba-a48c-76e0db128712","method":"transformInterceptedMessage","params":{"id":"d0575b89-7192-43b4-b4bf-a84c17e00288","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":4,\"connectionId\":\"qRzF5DKhjZ\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!qRzF5DKhjZARpLSuEWX-YR-2073\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '108693be-5922-41ba-a48c-76e0db128712', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'qRzF5DKhjZ', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d0575b89-7192-43b4-b4bf-a84c17e00288 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d0575b89-7192-43b4-b4bf-a84c17e00288 {action: 4, connectionId: 'qRzF5DKhjZ', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '108693be-5922-41ba-a48c-76e0db128712', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f38a98cf-677e-4355-bf0e-017f8b062dee","method":"transformInterceptedMessage","params":{"id":"40d18267-7fe8-42d3-9cea-104acd7c8fea","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f38a98cf-677e-4355-bf0e-017f8b062dee', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 40d18267-7fe8-42d3-9cea-104acd7c8fea unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 40d18267-7fe8-42d3-9cea-104acd7c8fea {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f38a98cf-677e-4355-bf0e-017f8b062dee', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"14872259-6942-42be-8f85-0bea4e47afd8","method":"transformInterceptedMessage","params":{"id":"8e558df3-0f18-44d5-b802-5e364ab2223e","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971800469-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '14872259-6942-42be-8f85-0bea4e47afd8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971800469-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8e558df3-0f18-44d5-b802-5e364ab2223e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8e558df3-0f18-44d5-b802-5e364ab2223e {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971800469-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '14872259-6942-42be-8f85-0bea4e47afd8', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"300dc028-a320-4e80-9233-7823a8219fd8","method":"transformInterceptedMessage","params":{"id":"946ff490-dfa3-4b1c-963e-fa60fb796ec6","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":15,\"id\":\"saaHzCX0WShD\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971801482-0\",\"timestamp\":1715971801482,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"Q7JWKKoZh2CR8btrIsKRc3OKPXptZau5LZUorPK9j/o=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '300dc028-a320-4e80-9233-7823a8219fd8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'saaHzCX0WShD', connectionId: '', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971801482-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 946ff490-dfa3-4b1c-963e-fa60fb796ec6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 946ff490-dfa3-4b1c-963e-fa60fb796ec6 {action: 15, id: 'saaHzCX0WShD', connectionId: '', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971801482-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '300dc028-a320-4e80-9233-7823a8219fd8', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c80784c7-0ba4-4966-9b6f-7e5e361d0f50","method":"transformInterceptedMessage","params":{"id":"9f4b0644-b31f-433d-b4bf-ccca56423037","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":15,\"id\":\"saaHzCX0WShD\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971801482-0\",\"timestamp\":1715971801482,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"Q7JWKKoZh2CR8btrIsKRc3OKPXptZau5LZUorPK9j/o=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c80784c7-0ba4-4966-9b6f-7e5e361d0f50', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'saaHzCX0WShD', connectionId: '', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971801482-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 9f4b0644-b31f-433d-b4bf-ccca56423037 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 9f4b0644-b31f-433d-b4bf-ccca56423037 {action: 15, id: 'saaHzCX0WShD', connectionId: '', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971801482-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c80784c7-0ba4-4966-9b6f-7e5e361d0f50', result: {…}} +root_hooks.js:27 END TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages +root_hooks.js:31 START TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e5c12fbf-1b0e-4b9b-bd33-9980460cb363","method":"transformInterceptedMessage","params":{"id":"bcc13dd7-734e-4d49-bf84-8afc1b8b8c1b","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":4,\"connectionId\":\"cmX0jiM1Sk\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!cmX0jiM1SkAbJQw1uAcn3t-2076\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e5c12fbf-1b0e-4b9b-bd33-9980460cb363', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'cmX0jiM1Sk', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bcc13dd7-734e-4d49-bf84-8afc1b8b8c1b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bcc13dd7-734e-4d49-bf84-8afc1b8b8c1b {action: 4, connectionId: 'cmX0jiM1Sk', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e5c12fbf-1b0e-4b9b-bd33-9980460cb363', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3ca8f0c2-68d1-44c8-9943-66fb44807cb6","method":"transformInterceptedMessage","params":{"id":"91ffe854-0250-43b2-a2c0-8989565b61da","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3ca8f0c2-68d1-44c8-9943-66fb44807cb6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 91ffe854-0250-43b2-a2c0-8989565b61da unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 91ffe854-0250-43b2-a2c0-8989565b61da {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3ca8f0c2-68d1-44c8-9943-66fb44807cb6', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9dfa6849-1223-45a5-9aa4-b4742262ee67","method":"transformInterceptedMessage","params":{"id":"56ab0395-b17c-4e7e-a53b-1122f5d2db24","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971801482-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9dfa6849-1223-45a5-9aa4-b4742262ee67', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971801482-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 56ab0395-b17c-4e7e-a53b-1122f5d2db24 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 56ab0395-b17c-4e7e-a53b-1122f5d2db24 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971801482-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9dfa6849-1223-45a5-9aa4-b4742262ee67', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7d42b4e3-3e0e-48fe-86ce-42c5abbe954b","method":"transformInterceptedMessage","params":{"id":"9b06933f-71ce-45c0-9627-3b8cae6baccd","connectionID":"b7baf942-378f-40fd-ade0-2c0b16738425","type":"text","data":"{\"action\":4,\"connectionId\":\"vo12g51m_k\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!vo12g51m_kAdT_Jet_shh8-a38\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7d42b4e3-3e0e-48fe-86ce-42c5abbe954b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'vo12g51m_k', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 9b06933f-71ce-45c0-9627-3b8cae6baccd unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 9b06933f-71ce-45c0-9627-3b8cae6baccd {action: 4, connectionId: 'vo12g51m_k', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7d42b4e3-3e0e-48fe-86ce-42c5abbe954b', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3f2fca76-7117-4e67-b83c-c6491dd830fb","method":"transformInterceptedMessage","params":{"id":"9840b286-80f8-4a86-a0fb-d306ea26a353","connectionID":"b7baf942-378f-40fd-ade0-2c0b16738425","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"fgSubIv8ok6C6OXTQoR2uPsJGoYdv5v8C8JnxGo52xk=\"}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3f2fca76-7117-4e67-b83c-c6491dd830fb', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 9840b286-80f8-4a86-a0fb-d306ea26a353 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 9840b286-80f8-4a86-a0fb-d306ea26a353 {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3f2fca76-7117-4e67-b83c-c6491dd830fb', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"712d1a17-521a-4c4f-aaaf-84bba98aefb0","method":"transformInterceptedMessage","params":{"id":"bedfc1b6-a386-470c-811c-ce8ed999f0fd","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":15,\"id\":\"vo12g51m_k:0\",\"connectionId\":\"vo12g51m_k\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971802910-0\",\"timestamp\":1715971802910,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"fgSubIv8ok6C6OXTQoR2uPsJGoYdv5v8C8JnxGo52xk=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '712d1a17-521a-4c4f-aaaf-84bba98aefb0', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'vo12g51m_k:0', connectionId: 'vo12g51m_k', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bedfc1b6-a386-470c-811c-ce8ed999f0fd unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bedfc1b6-a386-470c-811c-ce8ed999f0fd {action: 15, id: 'vo12g51m_k:0', connectionId: 'vo12g51m_k', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '712d1a17-521a-4c4f-aaaf-84bba98aefb0', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"5886185a-d7e5-4043-96bd-b3c7c1798d7d","method":"transformInterceptedMessage","params":{"id":"265f3654-d026-4023-bfe9-304c584a8c7d","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":15,\"id\":\"vo12g51m_k:0\",\"connectionId\":\"vo12g51m_k\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971802910-0\",\"timestamp\":1715971802910,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"fgSubIv8ok6C6OXTQoR2uPsJGoYdv5v8C8JnxGo52xk=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '5886185a-d7e5-4043-96bd-b3c7c1798d7d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'vo12g51m_k:0', connectionId: 'vo12g51m_k', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 265f3654-d026-4023-bfe9-304c584a8c7d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 265f3654-d026-4023-bfe9-304c584a8c7d {action: 15, id: 'vo12g51m_k:0', connectionId: 'vo12g51m_k', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '5886185a-d7e5-4043-96bd-b3c7c1798d7d', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ec0e37d2-6309-43c3-adb4-a2312d829f62","method":"transformInterceptedMessage","params":{"id":"289534cf-3fc3-4852-8993-7ad243b2b210","connectionID":"b7baf942-378f-40fd-ade0-2c0b16738425","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ec0e37d2-6309-43c3-adb4-a2312d829f62', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 289534cf-3fc3-4852-8993-7ad243b2b210 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 289534cf-3fc3-4852-8993-7ad243b2b210 {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ec0e37d2-6309-43c3-adb4-a2312d829f62', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8fb13e96-86d5-4d95-a512-f8b35822a6b0","method":"transformInterceptedMessage","params":{"id":"a4c66550-b756-44da-8d5a-7ade4397b5f8","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":15,\"id\":\"vo12g51m_k:0\",\"connectionId\":\"vo12g51m_k\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971802910-0\",\"timestamp\":1715971802910,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"fgSubIv8ok6C6OXTQoR2uPsJGoYdv5v8C8JnxGo52xk=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8fb13e96-86d5-4d95-a512-f8b35822a6b0', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'vo12g51m_k:0', connectionId: 'vo12g51m_k', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a4c66550-b756-44da-8d5a-7ade4397b5f8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a4c66550-b756-44da-8d5a-7ade4397b5f8 {action: 15, id: 'vo12g51m_k:0', connectionId: 'vo12g51m_k', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8fb13e96-86d5-4d95-a512-f8b35822a6b0', result: {…}} +root_hooks.js:27 END TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"5ab17cbd-6260-49b1-a56e-ee360940c944","method":"transformInterceptedMessage","params":{"id":"96f12c98-db04-41d8-80b4-e353f68071cd","connectionID":"55ec56af-85fc-4476-94d2-2b7fbf7853a1","type":"text","data":"{\"action\":4,\"connectionId\":\"cNGEYsDd3O\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!cNGEYsDd3OAZpiizTsKQVC-207c\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '5ab17cbd-6260-49b1-a56e-ee360940c944', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'cNGEYsDd3O', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 96f12c98-db04-41d8-80b4-e353f68071cd unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 96f12c98-db04-41d8-80b4-e353f68071cd {action: 4, connectionId: 'cNGEYsDd3O', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '5ab17cbd-6260-49b1-a56e-ee360940c944', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8a59dfb3-36f8-4c7c-adbe-981408455568","method":"transformInterceptedMessage","params":{"id":"83a64cd1-7f8c-47c4-b581-64764060cec6","connectionID":"e5782787-fa06-4b19-b94a-f3d37306329e","type":"text","data":"{\"action\":4,\"connectionId\":\"XAAEwQIOgF\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!XAAEwQIOgFAcG7cTx6y-M3-1fac\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8a59dfb3-36f8-4c7c-adbe-981408455568', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'XAAEwQIOgF', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 83a64cd1-7f8c-47c4-b581-64764060cec6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 83a64cd1-7f8c-47c4-b581-64764060cec6 {action: 4, connectionId: 'XAAEwQIOgF', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8a59dfb3-36f8-4c7c-adbe-981408455568', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c9f6c846-9a81-4ad5-88d5-001162272101","method":"transformInterceptedMessage","params":{"id":"9e7273b7-62ea-4927-82bc-164b9139788e","connectionID":"e5782787-fa06-4b19-b94a-f3d37306329e","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c9f6c846-9a81-4ad5-88d5-001162272101', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 9e7273b7-62ea-4927-82bc-164b9139788e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 9e7273b7-62ea-4927-82bc-164b9139788e {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c9f6c846-9a81-4ad5-88d5-001162272101', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f7682b7e-a5e0-4593-8684-051b47fced57","method":"transformInterceptedMessage","params":{"id":"bfc7a4f5-5640-4720-8990-5d350550e428","connectionID":"e5782787-fa06-4b19-b94a-f3d37306329e","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971802910-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f7682b7e-a5e0-4593-8684-051b47fced57', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bfc7a4f5-5640-4720-8990-5d350550e428 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bfc7a4f5-5640-4720-8990-5d350550e428 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971802910-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f7682b7e-a5e0-4593-8684-051b47fced57', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d5ba39e9-3bbb-440e-a809-a1bb9390dbbc","method":"transformInterceptedMessage","params":{"id":"983267cc-9852-42b4-9d4c-49f7c920c7fa","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":4,\"connectionId\":\"ksjPI01-gi\",\"connectionDetails\":{\"clientId\":\"8477848146825762\",\"connectionKey\":\"e7dNIPVFABc0Ei!ksjPI01-giAXAkdKcHumDQ-a1a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd5ba39e9-3bbb-440e-a809-a1bb9390dbbc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'ksjPI01-gi', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 983267cc-9852-42b4-9d4c-49f7c920c7fa unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 983267cc-9852-42b4-9d4c-49f7c920c7fa {action: 4, connectionId: 'ksjPI01-gi', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd5ba39e9-3bbb-440e-a809-a1bb9390dbbc', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a18acfe3-7f75-4d2d-95ec-b7b6937949db","method":"transformInterceptedMessage","params":{"id":"943164af-ddd2-46bf-bf3d-97f96506c361","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"data\":\"body\"}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a18acfe3-7f75-4d2d-95ec-b7b6937949db', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 943164af-ddd2-46bf-bf3d-97f96506c361 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 943164af-ddd2-46bf-bf3d-97f96506c361 {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a18acfe3-7f75-4d2d-95ec-b7b6937949db', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0584a291-8a62-4d44-9327-b056b8e3c738","method":"transformInterceptedMessage","params":{"id":"f3b7ca8b-15ef-49e3-8fb1-cb41c5aecd1b","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":15,\"id\":\"ksjPI01-gi:0\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804330-0\",\"timestamp\":1715971804330,\"messages\":[{\"clientId\":\"8477848146825762\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0584a291-8a62-4d44-9327-b056b8e3c738', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f3b7ca8b-15ef-49e3-8fb1-cb41c5aecd1b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f3b7ca8b-15ef-49e3-8fb1-cb41c5aecd1b {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0584a291-8a62-4d44-9327-b056b8e3c738', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0e103450-8e55-4f17-b781-1eab034dc828","method":"transformInterceptedMessage","params":{"id":"4c7ad8f2-f692-4258-9c5a-63495d7436b8","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":15,\"id\":\"ksjPI01-gi:0\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804330-0\",\"timestamp\":1715971804330,\"messages\":[{\"clientId\":\"8477848146825762\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0e103450-8e55-4f17-b781-1eab034dc828', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 4c7ad8f2-f692-4258-9c5a-63495d7436b8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 4c7ad8f2-f692-4258-9c5a-63495d7436b8 {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0e103450-8e55-4f17-b781-1eab034dc828', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a762637a-933e-48c6-906a-874b322dac17","method":"transformInterceptedMessage","params":{"id":"ed269596-b7d8-47f4-b8d5-ca562e6da9f1","connectionID":"e5782787-fa06-4b19-b94a-f3d37306329e","type":"text","data":"{\"action\":15,\"id\":\"ksjPI01-gi:0\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804330-0\",\"timestamp\":1715971804330,\"messages\":[{\"clientId\":\"8477848146825762\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a762637a-933e-48c6-906a-874b322dac17', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ed269596-b7d8-47f4-b8d5-ca562e6da9f1 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ed269596-b7d8-47f4-b8d5-ca562e6da9f1 {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a762637a-933e-48c6-906a-874b322dac17', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"74fba336-e278-4966-90cb-1c9ee48d21db","method":"transformInterceptedMessage","params":{"id":"66660c52-7b86-4f44-b062-63ae79d5dde0","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '74fba336-e278-4966-90cb-1c9ee48d21db', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 66660c52-7b86-4f44-b062-63ae79d5dde0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 66660c52-7b86-4f44-b062-63ae79d5dde0 {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '74fba336-e278-4966-90cb-1c9ee48d21db', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"91e5af44-1475-403b-af04-c02b0e8e9764","method":"transformInterceptedMessage","params":{"id":"cb4c4a1d-d1a5-455b-9b39-c6b0f7e34f7f","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":15,\"id\":\"ksjPI01-gi:0\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804330-0\",\"timestamp\":1715971804330,\"messages\":[{\"clientId\":\"8477848146825762\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '91e5af44-1475-403b-af04-c02b0e8e9764', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message cb4c4a1d-d1a5-455b-9b39-c6b0f7e34f7f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message cb4c4a1d-d1a5-455b-9b39-c6b0f7e34f7f {action: 15, id: 'ksjPI01-gi:0', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '91e5af44-1475-403b-af04-c02b0e8e9764', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9fa8f981-2449-4e0a-b251-0e0095137cca","method":"transformInterceptedMessage","params":{"id":"e53ff759-e3bf-4bff-be50-9a7117aefa48","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9fa8f981-2449-4e0a-b251-0e0095137cca', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e53ff759-e3bf-4bff-be50-9a7117aefa48 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e53ff759-e3bf-4bff-be50-9a7117aefa48 {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9fa8f981-2449-4e0a-b251-0e0095137cca', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1fbc37d4-67be-4db4-9738-38c56c8931e5","method":"transformInterceptedMessage","params":{"id":"d2efa268-ed62-4137-b9d7-e299e387acc7","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804330-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '1fbc37d4-67be-4db4-9738-38c56c8931e5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d2efa268-ed62-4137-b9d7-e299e387acc7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d2efa268-ed62-4137-b9d7-e299e387acc7 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804330-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '1fbc37d4-67be-4db4-9738-38c56c8931e5', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d81a6983-2a38-4f57-8b5a-58b5c36990c5","method":"transformInterceptedMessage","params":{"id":"e796ba6d-4028-4c57-bea0-aeb5058066e2","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":14,\"channel\":\"channel\",\"presence\":[{\"action\":2}],\"msgSerial\":1}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd81a6983-2a38-4f57-8b5a-58b5c36990c5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, channel: 'channel', presence: Array(1), msgSerial: 1} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e796ba6d-4028-4c57-bea0-aeb5058066e2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e796ba6d-4028-4c57-bea0-aeb5058066e2 {action: 14, channel: 'channel', presence: Array(1), msgSerial: 1} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd81a6983-2a38-4f57-8b5a-58b5c36990c5', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3b4f4cbe-c37a-4e75-879a-e287e12853ed","method":"transformInterceptedMessage","params":{"id":"ed201602-392c-47cb-aa39-c32276ecf4df","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":14,\"id\":\"ksjPI01-gi:1\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804585-0\",\"timestamp\":1715971804585,\"presence\":[{\"id\":\"ksjPI01-gi:1:0\",\"clientId\":\"8477848146825762\",\"connectionId\":\"ksjPI01-gi\",\"timestamp\":1715971804585,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3b4f4cbe-c37a-4e75-879a-e287e12853ed', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ed201602-392c-47cb-aa39-c32276ecf4df unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ed201602-392c-47cb-aa39-c32276ecf4df {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3b4f4cbe-c37a-4e75-879a-e287e12853ed', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"082e207f-67e7-4373-8270-ee526a001377","method":"transformInterceptedMessage","params":{"id":"a4b87676-665f-4e23-8c53-82daa06087b2","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":14,\"id\":\"ksjPI01-gi:1\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804585-0\",\"timestamp\":1715971804585,\"presence\":[{\"id\":\"ksjPI01-gi:1:0\",\"clientId\":\"8477848146825762\",\"connectionId\":\"ksjPI01-gi\",\"timestamp\":1715971804585,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '082e207f-67e7-4373-8270-ee526a001377', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a4b87676-665f-4e23-8c53-82daa06087b2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a4b87676-665f-4e23-8c53-82daa06087b2 {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '082e207f-67e7-4373-8270-ee526a001377', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"4ac1cd99-eb72-40f6-8120-6f17e257e53f","method":"transformInterceptedMessage","params":{"id":"d1ff2efb-4f98-429f-866b-99a4e339d195","connectionID":"e5782787-fa06-4b19-b94a-f3d37306329e","type":"text","data":"{\"action\":14,\"id\":\"ksjPI01-gi:1\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804585-0\",\"timestamp\":1715971804585,\"presence\":[{\"id\":\"ksjPI01-gi:1:0\",\"clientId\":\"8477848146825762\",\"connectionId\":\"ksjPI01-gi\",\"timestamp\":1715971804585,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4ac1cd99-eb72-40f6-8120-6f17e257e53f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d1ff2efb-4f98-429f-866b-99a4e339d195 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d1ff2efb-4f98-429f-866b-99a4e339d195 {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4ac1cd99-eb72-40f6-8120-6f17e257e53f', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9c34887e-e9aa-48c4-95e7-3ce1c478e5c9","method":"transformInterceptedMessage","params":{"id":"2c2f0080-639c-4c4a-a01f-19239b8486a1","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":14,\"id\":\"ksjPI01-gi:1\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804585-0\",\"timestamp\":1715971804585,\"presence\":[{\"id\":\"ksjPI01-gi:1:0\",\"clientId\":\"8477848146825762\",\"connectionId\":\"ksjPI01-gi\",\"timestamp\":1715971804585,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9c34887e-e9aa-48c4-95e7-3ce1c478e5c9', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 2c2f0080-639c-4c4a-a01f-19239b8486a1 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 2c2f0080-639c-4c4a-a01f-19239b8486a1 {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9c34887e-e9aa-48c4-95e7-3ce1c478e5c9', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c94acf30-8222-4611-9412-0dda36402b7c","method":"transformInterceptedMessage","params":{"id":"ef61be5a-61bb-4186-a8ae-1fdb21f6c325","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":14,\"id\":\"ksjPI01-gi:1\",\"connectionId\":\"ksjPI01-gi\",\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804585-0\",\"timestamp\":1715971804585,\"presence\":[{\"id\":\"ksjPI01-gi:1:0\",\"clientId\":\"8477848146825762\",\"connectionId\":\"ksjPI01-gi\",\"timestamp\":1715971804585,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c94acf30-8222-4611-9412-0dda36402b7c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ef61be5a-61bb-4186-a8ae-1fdb21f6c325 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ef61be5a-61bb-4186-a8ae-1fdb21f6c325 {action: 14, id: 'ksjPI01-gi:1', connectionId: 'ksjPI01-gi', channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c94acf30-8222-4611-9412-0dda36402b7c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"687130b7-4fc9-4e33-87a4-5e2645972eed","method":"transformInterceptedMessage","params":{"id":"0fc38a58-3c35-4272-b946-305c37376ae6","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":1}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '687130b7-4fc9-4e33-87a4-5e2645972eed', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 1} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0fc38a58-3c35-4272-b946-305c37376ae6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0fc38a58-3c35-4272-b946-305c37376ae6 {action: 1, count: 1, msgSerial: 1} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '687130b7-4fc9-4e33-87a4-5e2645972eed', result: {…}} +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality +modular.test.js:580 rxChannel: Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"plugins":{"RealtimePresence":{}},"key":"_tmp_9XT2Hg._ifo5A:Kp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0"} +modular.test.js:580 rxChannel: Ably: BaseClient(): started; version = 2.0.4 +modular.test.js:580 rxChannel: Ably: Auth(): anonymous, using basic auth +modular.test.js:580 rxChannel: Ably: Realtime(): +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): started +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): available transports = [web_socket] +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] +modular.test.js:580 rxChannel: Ably: Realtime.connect(): +modular.test.js:580 rxChannel: Ably: Connection.connect(): +modular.test.js:580 rxChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:580 rxChannel: Ably: RealtimeChannel(): started; name = channel +modular.test.js:592 txChannel: Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"clientId":"3978951838081659","plugins":{"RealtimePresence":{}},"key":"_tmp_9XT2Hg._ifo5A:Kp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0"} +modular.test.js:592 txChannel: Ably: BaseClient(): started; version = 2.0.4 +modular.test.js:592 txChannel: Ably: Auth(): anonymous, using basic auth +modular.test.js:592 txChannel: Ably: Realtime(): +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): started +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): available transports = [web_socket] +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] +modular.test.js:592 txChannel: Ably: Realtime.connect(): +modular.test.js:592 txChannel: Ably: Connection.connect(): +modular.test.js:592 txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:592 txChannel: Ably: RealtimeChannel(): started; name = channel +modular.test.js:607 LAWRENCE: begin waiting for presence subscribe +modular.test.js:580 rxChannel: Ably: RealtimeChannel.requestState: name = channel, state = attaching +modular.test.js:580 rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": attaching +modular.test.js:580 rxChannel: Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:580 rxChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:580 rxChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_9XT2Hg._ifo5A:Kp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0; err: null +modular.test.js:580 rxChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:592 txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:592 txChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_9XT2Hg._ifo5A:Kp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0; err: null +modular.test.js:592 txChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&clientId=3978951838081659&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:580 rxChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:580 rxChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"cc869c96-b783-4578-8367-94e0dd77e6b3","method":"transformInterceptedMessage","params":{"id":"68ac84ed-4c6b-40f4-9735-6cad50cb5887","connectionID":"f373f5b7-b6cc-4e1e-a09d-cafdb059dc9a","type":"text","data":"{\"action\":4,\"connectionId\":\"FafetxJtgz\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'cc869c96-b783-4578-8367-94e0dd77e6b3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'FafetxJtgz', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 68ac84ed-4c6b-40f4-9735-6cad50cb5887 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 68ac84ed-4c6b-40f4-9735-6cad50cb5887 {action: 4, connectionId: 'FafetxJtgz', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'cc869c96-b783-4578-8367-94e0dd77e6b3', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 354; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=FafetxJtgz]; connectionId = undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): connectionId = FafetxJtgz +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): connectionDetails = {"clientId":"*","connectionKey":"e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf","maxMessageSize":16384,"maxInboundRate":250,"maxOutboundRate":100,"maxFrameSize":262144,"serverId":"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap","connectionStateTtl":120000,"maxIdleInterval":15000} +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): current state = connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.setConnection(): New connectionId; reattaching any attached channels +modular.test.js:580 rxChannel: Ably: ConnectionManager.notifyState(): new state: connected +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: connected +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connected; reason = undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.sendQueuedMessages(): sending 0 queued messages +modular.test.js:580 rxChannel: Ably: RealtimeChannel.checkPendingState: name = channel, state = attaching +modular.test.js:580 rxChannel: Ably: RealtimeChannel.attachImpl(): sending ATTACH message +modular.test.js:580 rxChannel: Ably: ConnectionManager.send(): sending event +modular.test.js:580 rxChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3d80e0ed-c98a-4437-a555-eb7a02d7db9c","method":"transformInterceptedMessage","params":{"id":"6cab4830-5647-404b-be0c-a745e4e175cf","connectionID":"f373f5b7-b6cc-4e1e-a09d-cafdb059dc9a","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3d80e0ed-c98a-4437-a555-eb7a02d7db9c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 6cab4830-5647-404b-be0c-a745e4e175cf unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 6cab4830-5647-404b-be0c-a745e4e175cf {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3d80e0ed-c98a-4437-a555-eb7a02d7db9c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e2c7b48e-e47f-42ee-9078-2b7308da4c17","method":"transformInterceptedMessage","params":{"id":"a6296ab1-0964-4ac9-b2c8-d17f962311f2","connectionID":"f373f5b7-b6cc-4e1e-a09d-cafdb059dc9a","type":"text","data":"{\"action\":11,\"flags\":983105,\"channel\":\"channel\",\"channelSerial\":\"e7dKB7B4ABc0Ek07737104@1715971804585-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e2c7b48e-e47f-42ee-9078-2b7308da4c17', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983105, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a6296ab1-0964-4ac9-b2c8-d17f962311f2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a6296ab1-0964-4ac9-b2c8-d17f962311f2 {action: 11, flags: 983105, channel: 'channel', channelSerial: 'e7dKB7B4ABc0Ek07737104@1715971804585-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e2c7b48e-e47f-42ee-9078-2b7308da4c17', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 105; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7dKB7B4ABc0Ek07737104@1715971804585-0; flags=HAS_PRESENCE,PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = FafetxJtgz +modular.test.js:580 rxChannel: Ably: RealtimeChannel.setChannelSerial(): Updating channel serial; serial = e7dKB7B4ABc0Ek07737104@1715971804585-0; previous = undefined +modular.test.js:580 rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attaching, notifying state attached +modular.test.js:580 rxChannel: Ably: RealtimePresence.onAttached(): channel = channel, hasPresence = true +modular.test.js:580 rxChannel: Ably: PresenceMap.startSync(): channel = channel; syncInProgress = false +modular.test.js:580 rxChannel: Ably: PresenceMap.setInProgress(): inProgress = true +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": attached +modular.test.js:580 rxChannel: Ably: RealtimeChannel.onAttached: activating channel; name = channel +modular.test.js:609 LAWRENCE: end waiting for presence subscribe +modular.test.js:610 LAWRENCE: begin waiting for presence enter +modular.test.js:611 LAWRENCE: txChannel.presence.enter is ƒ async enter(data) { + logger_default.logAction(this.logger, logger_default.LOG_DEBUG, "RealtimePresence.enter"); + if (isAnonymousOrWildcard(this)) { + throw new ErrorInfo("clientId must be s… +modular.test.js:592 txChannel: Ably: RealtimePresence.enter: undefined +modular.test.js:592 txChannel: Ably: RealtimePresence._enterOrUpdateClient: undefined +modular.test.js:592 txChannel: Ably: RealtimePresence.enterClient(): channel = channel, id = undefined, client = (implicit) 3978951838081659 +modular.test.js:592 txChannel: Ably: RealtimeChannel.requestState: name = channel, state = attaching +modular.test.js:592 txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching +modular.test.js:592 txChannel: Ably: Channel state for channel "channel": attaching +modular.test.js:592 txChannel: Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b249b653-cc53-4363-bc80-d74f32491b4e","method":"transformInterceptedMessage","params":{"id":"cace9374-1fbe-40dd-bcc7-671902ad4f44","connectionID":"f373f5b7-b6cc-4e1e-a09d-cafdb059dc9a","type":"text","data":"{\"action\":16,\"channel\":\"channel\",\"channelSerial\":\"e7deKLRSQBc0Ap88852863:\",\"presence\":[{\"id\":\"ksjPI01-gi:1:0\",\"clientId\":\"8477848146825762\",\"connectionId\":\"ksjPI01-gi\",\"timestamp\":1715971804585,\"action\":1}],\"count\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b249b653-cc53-4363-bc80-d74f32491b4e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 16, channel: 'channel', channelSerial: 'e7deKLRSQBc0Ap88852863:', presence: Array(1), count: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message cace9374-1fbe-40dd-bcc7-671902ad4f44 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message cace9374-1fbe-40dd-bcc7-671902ad4f44 {action: 16, channel: 'channel', channelSerial: 'e7deKLRSQBc0Ap88852863:', presence: Array(1), count: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b249b653-cc53-4363-bc80-d74f32491b4e', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 217; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=SYNC; channel=channel; channelSerial=e7deKLRSQBc0Ap88852863:; count=0; presence=[ [PresenceMessage; action=present; id=ksjPI01-gi:1:0; timestamp=1715971804585; clientId=8477848146825762; connectionId=ksjPI01-gi] ]]; connectionId = FafetxJtgz +modular.test.js:580 rxChannel: Ably: RealtimePresence.setPresence(): received presence for 1 participants; syncChannelSerial = e7deKLRSQBc0Ap88852863: +modular.test.js:580 rxChannel: Ably: PresenceMap.startSync(): channel = channel; syncInProgress = true +modular.test.js:580 rxChannel: Ably: PresenceMap.endSync(): channel = channel; syncInProgress = true +modular.test.js:580 rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket slow timer: checking connectivity +modular.test.js:592 txChannel: Ably: (Fetch)Http.checkConnectivity(): Sending; https://internet-up.ably-realtime.com/is-the-internet-up.txt +modular.test.js:592 txChannel: Ably: (Fetch)Http.checkConnectivity(): Result: true +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket slow timer: http connectivity check succeeded +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d6ac6127-484a-46b8-a0a4-bb16a5eb10f9","method":"transformInterceptedMessage","params":{"id":"f5f8ed8c-36b2-4002-9229-b5e0878baf6b","connectionID":"a7e3cf0d-fd90-47f7-bb03-84f1819789c2","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd6ac6127-484a-46b8-a0a4-bb16a5eb10f9', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f5f8ed8c-36b2-4002-9229-b5e0878baf6b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f5f8ed8c-36b2-4002-9229-b5e0878baf6b {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd6ac6127-484a-46b8-a0a4-bb16a5eb10f9', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"310e605f-22f9-4413-bbb1-a68e953fd408","method":"transformInterceptedMessage","params":{"id":"b9b0e81f-0849-4065-abd2-545249581367","connectionID":"47b329fe-1eaf-42c3-9b7e-b25c1b748294","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '310e605f-22f9-4413-bbb1-a68e953fd408', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b9b0e81f-0849-4065-abd2-545249581367 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b9b0e81f-0849-4065-abd2-545249581367 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '310e605f-22f9-4413-bbb1-a68e953fd408', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f7f15712-c223-463c-9593-bd12e8406084","method":"transformInterceptedMessage","params":{"id":"49bc0052-0c50-473e-a79a-1d05dc087d31","connectionID":"c0dac806-fc46-4d96-bc60-73a87bfb3b7e","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f7f15712-c223-463c-9593-bd12e8406084', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 49bc0052-0c50-473e-a79a-1d05dc087d31 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 49bc0052-0c50-473e-a79a-1d05dc087d31 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f7f15712-c223-463c-9593-bd12e8406084', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2c5900d4-7bcf-4560-8fd2-23e1167aad1c","method":"transformInterceptedMessage","params":{"id":"85c699dd-0af3-4454-810b-da78c60d21b8","connectionID":"3eb07829-659a-4cf9-a288-823a5ae57625","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2c5900d4-7bcf-4560-8fd2-23e1167aad1c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 85c699dd-0af3-4454-810b-da78c60d21b8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 85c699dd-0af3-4454-810b-da78c60d21b8 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2c5900d4-7bcf-4560-8fd2-23e1167aad1c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"232ba414-8646-43d4-ae9d-5632aa5fb6da","method":"transformInterceptedMessage","params":{"id":"7e2e6d13-b345-4030-9c0a-634167b01f77","connectionID":"08f42aac-56b6-42c6-8e1b-bf33342e871f","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '232ba414-8646-43d4-ae9d-5632aa5fb6da', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 7e2e6d13-b345-4030-9c0a-634167b01f77 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 7e2e6d13-b345-4030-9c0a-634167b01f77 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '232ba414-8646-43d4-ae9d-5632aa5fb6da', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2118285c-5a18-4c3c-9325-e9268ca2d135","method":"transformInterceptedMessage","params":{"id":"ff89249e-8f13-4109-a863-12b55e07ef96","connectionID":"02704e03-3245-44f3-afcf-2ad94460f3d2","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2118285c-5a18-4c3c-9325-e9268ca2d135', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ff89249e-8f13-4109-a863-12b55e07ef96 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ff89249e-8f13-4109-a863-12b55e07ef96 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2118285c-5a18-4c3c-9325-e9268ca2d135', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"af895f3b-8932-466e-95f7-b74b866a12e3","method":"transformInterceptedMessage","params":{"id":"0d851b5d-231d-498f-a0fa-730105003184","connectionID":"846879f8-2ec9-4941-af4c-3294549be371","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'af895f3b-8932-466e-95f7-b74b866a12e3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0d851b5d-231d-498f-a0fa-730105003184 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0d851b5d-231d-498f-a0fa-730105003184 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'af895f3b-8932-466e-95f7-b74b866a12e3', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7ac1534d-0f4a-4f51-8809-358cfdff170c","method":"transformInterceptedMessage","params":{"id":"57514adf-776b-479c-aabb-30abe6c649cc","connectionID":"d60a874a-2e2e-4926-9600-51308d2dc26c","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7ac1534d-0f4a-4f51-8809-358cfdff170c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 57514adf-776b-479c-aabb-30abe6c649cc unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 57514adf-776b-479c-aabb-30abe6c649cc {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7ac1534d-0f4a-4f51-8809-358cfdff170c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"775576ae-c235-4d75-b561-313add2fa38b","method":"transformInterceptedMessage","params":{"id":"2f2dc33b-adf0-4bf4-9c59-04cf935b0ae9","connectionID":"e76ea74c-8258-464d-9298-8bb0bc140e3e","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '775576ae-c235-4d75-b561-313add2fa38b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 2f2dc33b-adf0-4bf4-9c59-04cf935b0ae9 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 2f2dc33b-adf0-4bf4-9c59-04cf935b0ae9 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '775576ae-c235-4d75-b561-313add2fa38b', result: {…}} +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket give up timer: websocket connection took more than 10s; +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket give up timer: websocket connectivity appears to be unavailable but no other transports to try +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): transport web_socket disconnected, err: [_ErrorInfo: Timeout waiting for transport to indicate itself viable; statusCode=500; code=50000] +modular.test.js:592 txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Unable to connect (and no more fallback hosts to try); statusCode=404; code=80003] +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Unable to connect (and no more fallback hosts to try) +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d5967bc2-b87c-4aaa-971d-92e75ed7d126","method":"transformInterceptedMessage","params":{"id":"3e7e2834-015e-4947-8f9e-964c51dc26b0","connectionID":"95bf5d8d-aa3b-40e2-bb02-62e39508132c","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd5967bc2-b87c-4aaa-971d-92e75ed7d126', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 3e7e2834-015e-4947-8f9e-964c51dc26b0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 3e7e2834-015e-4947-8f9e-964c51dc26b0 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd5967bc2-b87c-4aaa-971d-92e75ed7d126', result: {…}} +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): closing websocket +websockettransport.ts:220 WebSocket connection to 'wss://sandbox-realtime.ably.io/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&clientId=3978951838081659&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser' failed: WebSocket is closed before the connection is established. +(anonymous) @ websockettransport.ts:220 +setTimeout (async) +Config.nextTick @ config.ts:63 +dispose @ websockettransport.ts:215 +(anonymous) @ transport.ts:315 +setTimeout (async) +tryConnect @ transport.ts:313 +tryATransport @ connectionmanager.ts:499 +tryTransportWithFallbacks @ connectionmanager.ts:1615 +connectWs @ connectionmanager.ts:1507 +connectImpl @ connectionmanager.ts:1485 +(anonymous) @ connectionmanager.ts:1393 +(anonymous) @ connectionmanager.ts:486 +decideMode @ connectionmanager.ts:462 +getTransportParams @ connectionmanager.ts:465 +connect @ connectionmanager.ts:1382 +startConnect @ connectionmanager.ts:1402 +(anonymous) @ connectionmanager.ts:1351 +setTimeout (async) +Config.nextTick @ config.ts:63 +requestState @ connectionmanager.ts:1350 +connect @ connection.ts:46 +connect @ baserealtime.ts:82 +_BaseRealtime @ baserealtime.ts:60 +(anonymous) @ modular.test.js:590 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Show 255 more frames +Show less +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: WebSocketTransport.onError(): Error from WebSocket: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsClose(): Unclean disconnection of WebSocket ; code = 1006 +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c0f17089-f43f-4ff6-abde-7dc2f1954d4e","method":"transformInterceptedMessage","params":{"id":"f3298677-3882-4656-a85d-25ad12d06af8","connectionID":"5c3decea-dbac-4b72-bd54-e1d9275581d7","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c0f17089-f43f-4ff6-abde-7dc2f1954d4e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f3298677-3882-4656-a85d-25ad12d06af8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f3298677-3882-4656-a85d-25ad12d06af8 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c0f17089-f43f-4ff6-abde-7dc2f1954d4e', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c188303b-8bf7-403d-a543-f10b3d41b6c1","method":"transformInterceptedMessage","params":{"id":"d1dc9906-b05b-4ee4-8f93-60403e077113","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c188303b-8bf7-403d-a543-f10b3d41b6c1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d1dc9906-b05b-4ee4-8f93-60403e077113 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d1dc9906-b05b-4ee4-8f93-60403e077113 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c188303b-8bf7-403d-a543-f10b3d41b6c1', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"107d15e7-01fa-4b96-8352-0c36c0462e9f","method":"transformInterceptedMessage","params":{"id":"d1b83e39-9470-4027-8da2-e64e10532532","connectionID":"47b329fe-1eaf-42c3-9b7e-b25c1b748294","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '107d15e7-01fa-4b96-8352-0c36c0462e9f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d1b83e39-9470-4027-8da2-e64e10532532 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d1b83e39-9470-4027-8da2-e64e10532532 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '107d15e7-01fa-4b96-8352-0c36c0462e9f', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"11fc8de2-d426-471a-97c0-77bf952d4c98","method":"transformInterceptedMessage","params":{"id":"da48a547-f790-4b8c-a200-6b1132a277ea","connectionID":"08f42aac-56b6-42c6-8e1b-bf33342e871f","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '11fc8de2-d426-471a-97c0-77bf952d4c98', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message da48a547-f790-4b8c-a200-6b1132a277ea unaltered + interception proxy got result of transforming message da48a547-f790-4b8c-a200-6b1132a277ea {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '11fc8de2-d426-471a-97c0-77bf952d4c98', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"8528c7c3-6513-479d-86b5-e128fc14fdb8","method":"transformInterceptedMessage","params":{"id":"1d86ab51-a15b-4f9f-9877-99e67a833a0d","connectionID":"95bf5d8d-aa3b-40e2-bb02-62e39508132c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8528c7c3-6513-479d-86b5-e128fc14fdb8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 1d86ab51-a15b-4f9f-9877-99e67a833a0d unaltered + interception proxy got result of transforming message 1d86ab51-a15b-4f9f-9877-99e67a833a0d {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8528c7c3-6513-479d-86b5-e128fc14fdb8', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"58eed8b8-fc22-4ec6-986b-35be830382e3","method":"transformInterceptedMessage","params":{"id":"72c1da1a-ea85-4482-ba67-22c1cde5c737","connectionID":"a7e3cf0d-fd90-47f7-bb03-84f1819789c2","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '58eed8b8-fc22-4ec6-986b-35be830382e3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 72c1da1a-ea85-4482-ba67-22c1cde5c737 unaltered + interception proxy got result of transforming message 72c1da1a-ea85-4482-ba67-22c1cde5c737 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '58eed8b8-fc22-4ec6-986b-35be830382e3', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"8a0422e5-ca22-4fa8-aa44-28b349958bb5","method":"transformInterceptedMessage","params":{"id":"fed63dce-a379-4996-93db-50da7b02c5c8","connectionID":"c0dac806-fc46-4d96-bc60-73a87bfb3b7e","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8a0422e5-ca22-4fa8-aa44-28b349958bb5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message fed63dce-a379-4996-93db-50da7b02c5c8 unaltered + interception proxy got result of transforming message fed63dce-a379-4996-93db-50da7b02c5c8 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8a0422e5-ca22-4fa8-aa44-28b349958bb5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"ac8970d3-a204-4a79-9e41-b4e0d3c3d9e5","method":"transformInterceptedMessage","params":{"id":"4636eb21-8ab4-469c-b2cf-f79401dc1f1a","connectionID":"12399d8e-c4c5-4c7d-bc23-61525fb5161b","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ac8970d3-a204-4a79-9e41-b4e0d3c3d9e5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 4636eb21-8ab4-469c-b2cf-f79401dc1f1a unaltered + interception proxy got result of transforming message 4636eb21-8ab4-469c-b2cf-f79401dc1f1a {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ac8970d3-a204-4a79-9e41-b4e0d3c3d9e5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"6559f61c-5f3a-4fc5-bb73-bef2d01a4e44","method":"transformInterceptedMessage","params":{"id":"137ee4d0-6050-4556-ba24-086d4b8488a3","connectionID":"632a1377-f53b-464d-ba67-19d70b0d6093","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6559f61c-5f3a-4fc5-bb73-bef2d01a4e44', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 137ee4d0-6050-4556-ba24-086d4b8488a3 unaltered + interception proxy got result of transforming message 137ee4d0-6050-4556-ba24-086d4b8488a3 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6559f61c-5f3a-4fc5-bb73-bef2d01a4e44', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"ae31887e-420a-40cb-ab20-f1259bbe6c9e","method":"transformInterceptedMessage","params":{"id":"2809318c-86c7-48f0-a816-254437907fe4","connectionID":"20394a52-4f25-46ad-b04c-e21c6a886f32","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ae31887e-420a-40cb-ab20-f1259bbe6c9e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 2809318c-86c7-48f0-a816-254437907fe4 unaltered + interception proxy got result of transforming message 2809318c-86c7-48f0-a816-254437907fe4 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ae31887e-420a-40cb-ab20-f1259bbe6c9e', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"613d1604-711c-4c8c-af61-082dc8c284db","method":"transformInterceptedMessage","params":{"id":"9126265f-af56-47b2-bd8b-e475b9055f06","connectionID":"4faa409a-3a67-46e7-8121-e1204ddfbe3d","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '613d1604-711c-4c8c-af61-082dc8c284db', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 9126265f-af56-47b2-bd8b-e475b9055f06 unaltered + interception proxy got result of transforming message 9126265f-af56-47b2-bd8b-e475b9055f06 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '613d1604-711c-4c8c-af61-082dc8c284db', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"a2392d6f-5139-4af7-a9b2-83dcf75b6cfb","method":"transformInterceptedMessage","params":{"id":"9b03aebc-3e4c-441c-9005-6a2b6ad40cc0","connectionID":"e76ea74c-8258-464d-9298-8bb0bc140e3e","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a2392d6f-5139-4af7-a9b2-83dcf75b6cfb', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 9b03aebc-3e4c-441c-9005-6a2b6ad40cc0 unaltered + interception proxy got result of transforming message 9b03aebc-3e4c-441c-9005-6a2b6ad40cc0 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a2392d6f-5139-4af7-a9b2-83dcf75b6cfb', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"8864452b-0432-4319-8bc3-d1484e2b230b","method":"transformInterceptedMessage","params":{"id":"4167ba88-a58b-4ace-9ced-2143cddd82e4","connectionID":"5c3decea-dbac-4b72-bd54-e1d9275581d7","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8864452b-0432-4319-8bc3-d1484e2b230b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 4167ba88-a58b-4ace-9ced-2143cddd82e4 unaltered + interception proxy got result of transforming message 4167ba88-a58b-4ace-9ced-2143cddd82e4 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8864452b-0432-4319-8bc3-d1484e2b230b', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"9432f04a-0d43-4b6d-804c-1438de71e52a","method":"transformInterceptedMessage","params":{"id":"a7826f58-d0d6-4186-95f4-cb5e9cd17b6d","connectionID":"f739dff8-f4ed-4e9b-8bd2-0d59030aeaa7","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9432f04a-0d43-4b6d-804c-1438de71e52a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message a7826f58-d0d6-4186-95f4-cb5e9cd17b6d unaltered + interception proxy got result of transforming message a7826f58-d0d6-4186-95f4-cb5e9cd17b6d {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9432f04a-0d43-4b6d-804c-1438de71e52a', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"19813d31-aab5-482a-8303-28a60d30bf54","method":"transformInterceptedMessage","params":{"id":"37c06f92-75c7-4449-9b64-7d26f667119a","connectionID":"3eb07829-659a-4cf9-a288-823a5ae57625","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '19813d31-aab5-482a-8303-28a60d30bf54', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 37c06f92-75c7-4449-9b64-7d26f667119a unaltered + interception proxy got result of transforming message 37c06f92-75c7-4449-9b64-7d26f667119a {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '19813d31-aab5-482a-8303-28a60d30bf54', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"890ec6cb-6bd1-4ffc-b78d-4067d511f55e","method":"transformInterceptedMessage","params":{"id":"01d4ea43-a439-445d-983a-8cd75b49d6e0","connectionID":"d60a874a-2e2e-4926-9600-51308d2dc26c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '890ec6cb-6bd1-4ffc-b78d-4067d511f55e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 01d4ea43-a439-445d-983a-8cd75b49d6e0 unaltered + interception proxy got result of transforming message 01d4ea43-a439-445d-983a-8cd75b49d6e0 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '890ec6cb-6bd1-4ffc-b78d-4067d511f55e', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"8ab596f6-e97c-4ab5-b2c7-79d96ed2ac1d","method":"transformInterceptedMessage","params":{"id":"15d3bd52-cdbc-4766-b261-e630bf279654","connectionID":"f8868462-7cb5-47eb-a911-dbf54c36cc71","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8ab596f6-e97c-4ab5-b2c7-79d96ed2ac1d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 15d3bd52-cdbc-4766-b261-e630bf279654 unaltered + interception proxy got result of transforming message 15d3bd52-cdbc-4766-b261-e630bf279654 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8ab596f6-e97c-4ab5-b2c7-79d96ed2ac1d', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"745b92a0-3bbc-4c29-aa3d-5276ea2489ed","method":"transformInterceptedMessage","params":{"id":"14097bd2-d7eb-4299-8536-413443a0d4b3","connectionID":"02704e03-3245-44f3-afcf-2ad94460f3d2","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '745b92a0-3bbc-4c29-aa3d-5276ea2489ed', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 14097bd2-d7eb-4299-8536-413443a0d4b3 unaltered + interception proxy got result of transforming message 14097bd2-d7eb-4299-8536-413443a0d4b3 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '745b92a0-3bbc-4c29-aa3d-5276ea2489ed', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"a9089962-120d-4203-8d85-2ca6d7e4b7a5","method":"transformInterceptedMessage","params":{"id":"1946f95c-61b8-45db-9ce7-86e957cc3ea3","connectionID":"e5782787-fa06-4b19-b94a-f3d37306329e","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a9089962-120d-4203-8d85-2ca6d7e4b7a5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 1946f95c-61b8-45db-9ce7-86e957cc3ea3 unaltered + interception proxy got result of transforming message 1946f95c-61b8-45db-9ce7-86e957cc3ea3 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a9089962-120d-4203-8d85-2ca6d7e4b7a5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"79bb43c4-1416-468e-8f47-28e9f92c8e1c","method":"transformInterceptedMessage","params":{"id":"d979577c-46e1-4d7d-b513-4de395a3e116","connectionID":"8a42de28-4b1a-4acd-9425-04735cb283fd","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '79bb43c4-1416-468e-8f47-28e9f92c8e1c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message d979577c-46e1-4d7d-b513-4de395a3e116 unaltered + interception proxy got result of transforming message d979577c-46e1-4d7d-b513-4de395a3e116 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '79bb43c4-1416-468e-8f47-28e9f92c8e1c', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"f6bae397-97f4-4b03-a299-fbb3513da0e6","method":"transformInterceptedMessage","params":{"id":"535cd830-9b05-4433-b4f7-854bc8c7200e","connectionID":"846879f8-2ec9-4941-af4c-3294549be371","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f6bae397-97f4-4b03-a299-fbb3513da0e6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 535cd830-9b05-4433-b4f7-854bc8c7200e unaltered + interception proxy got result of transforming message 535cd830-9b05-4433-b4f7-854bc8c7200e {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f6bae397-97f4-4b03-a299-fbb3513da0e6', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"2b6fb557-750a-49bc-8d23-aee740147160","method":"transformInterceptedMessage","params":{"id":"fc469757-df07-4e68-aa57-43b73e96b25f","connectionID":"e60a357c-902b-4a67-bc4d-74862eb5e98f","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2b6fb557-750a-49bc-8d23-aee740147160', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message fc469757-df07-4e68-aa57-43b73e96b25f unaltered + interception proxy got result of transforming message fc469757-df07-4e68-aa57-43b73e96b25f {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2b6fb557-750a-49bc-8d23-aee740147160', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"4ec4905f-797d-49e7-baa8-070932c0a7e6","method":"transformInterceptedMessage","params":{"id":"c9c6b072-1353-4884-86ab-b8b2c9ab7919","connectionID":"b7baf942-378f-40fd-ade0-2c0b16738425","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4ec4905f-797d-49e7-baa8-070932c0a7e6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message c9c6b072-1353-4884-86ab-b8b2c9ab7919 unaltered + interception proxy got result of transforming message c9c6b072-1353-4884-86ab-b8b2c9ab7919 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4ec4905f-797d-49e7-baa8-070932c0a7e6', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"b30dfcd3-5ab1-4d56-8cdb-ae28a20e9394","method":"transformInterceptedMessage","params":{"id":"a0cf7ac1-6681-463e-9fba-6a7e837a1cb9","connectionID":"44a352d6-e1fa-456b-8aec-3ad314a1e518","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b30dfcd3-5ab1-4d56-8cdb-ae28a20e9394', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message a0cf7ac1-6681-463e-9fba-6a7e837a1cb9 unaltered + interception proxy got result of transforming message a0cf7ac1-6681-463e-9fba-6a7e837a1cb9 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b30dfcd3-5ab1-4d56-8cdb-ae28a20e9394', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"be411f5c-0fd7-4f43-af3a-f71d7dbbba88","method":"transformInterceptedMessage","params":{"id":"fd71344b-c796-4a79-b512-e2701267ab93","connectionID":"f373f5b7-b6cc-4e1e-a09d-cafdb059dc9a","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'be411f5c-0fd7-4f43-af3a-f71d7dbbba88', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message fd71344b-c796-4a79-b512-e2701267ab93 unaltered + interception proxy got result of transforming message fd71344b-c796-4a79-b512-e2701267ab93 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'be411f5c-0fd7-4f43-af3a-f71d7dbbba88', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"183d8f4f-d1f4-4ef1-aa7d-a6bcfa206a77","method":"transformInterceptedMessage","params":{"id":"e7f6c276-feeb-4206-b346-3f2c5acc2387","connectionID":"b1daf8d3-bae7-4324-b6c3-4a3569dfbf4e","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '183d8f4f-d1f4-4ef1-aa7d-a6bcfa206a77', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message e7f6c276-feeb-4206-b346-3f2c5acc2387 unaltered + interception proxy got result of transforming message e7f6c276-feeb-4206-b346-3f2c5acc2387 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '183d8f4f-d1f4-4ef1-aa7d-a6bcfa206a77', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"d86968ce-a770-49d2-9a63-2df61c7a8b8d","method":"transformInterceptedMessage","params":{"id":"42e1417a-7fa5-49fb-aa51-1ba771d19dd1","connectionID":"f4cec765-91f3-4287-b8cd-85468650dbc2","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd86968ce-a770-49d2-9a63-2df61c7a8b8d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 42e1417a-7fa5-49fb-aa51-1ba771d19dd1 unaltered + interception proxy got result of transforming message 42e1417a-7fa5-49fb-aa51-1ba771d19dd1 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd86968ce-a770-49d2-9a63-2df61c7a8b8d', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"70d2b1ce-665c-435e-8c50-da7b625da763","method":"transformInterceptedMessage","params":{"id":"b62fd49c-7a21-4424-b4e1-da102bef5d31","connectionID":"55ec56af-85fc-4476-94d2-2b7fbf7853a1","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '70d2b1ce-665c-435e-8c50-da7b625da763', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message b62fd49c-7a21-4424-b4e1-da102bef5d31 unaltered + interception proxy got result of transforming message b62fd49c-7a21-4424-b4e1-da102bef5d31 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '70d2b1ce-665c-435e-8c50-da7b625da763', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"14871a44-a571-4f95-955f-deb42e4da8e7","method":"transformInterceptedMessage","params":{"id":"05b9c084-2518-441f-bdbb-fe08f4bdb02d","connectionID":"58bdb787-d9c7-47a5-a3a4-cc4301a9fffe","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '14871a44-a571-4f95-955f-deb42e4da8e7', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 05b9c084-2518-441f-bdbb-fe08f4bdb02d unaltered + interception proxy got result of transforming message 05b9c084-2518-441f-bdbb-fe08f4bdb02d {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '14871a44-a571-4f95-955f-deb42e4da8e7', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"4f5cfa0c-2a02-46fd-a26b-03c2fbbffc34","method":"transformInterceptedMessage","params":{"id":"d95e0c0c-6bee-4106-bc18-ce8dfae0ce94","connectionID":"ed01c99f-f693-4c5e-8b67-91f8a9689c71","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4f5cfa0c-2a02-46fd-a26b-03c2fbbffc34', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message d95e0c0c-6bee-4106-bc18-ce8dfae0ce94 unaltered + interception proxy got result of transforming message d95e0c0c-6bee-4106-bc18-ce8dfae0ce94 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4f5cfa0c-2a02-46fd-a26b-03c2fbbffc34', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"767368ca-8fb1-4c4a-9c30-e8056ee7371d","method":"transformInterceptedMessage","params":{"id":"3da91370-94ec-4e9f-ba2e-21b8e867bb8f","connectionID":"eb0e0968-4015-4127-b6c9-7431531921f9","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '767368ca-8fb1-4c4a-9c30-e8056ee7371d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 3da91370-94ec-4e9f-ba2e-21b8e867bb8f unaltered + interception proxy got result of transforming message 3da91370-94ec-4e9f-ba2e-21b8e867bb8f {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '767368ca-8fb1-4c4a-9c30-e8056ee7371d', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"14a13060-43a3-417b-9be8-aab9988118a2","method":"transformInterceptedMessage","params":{"id":"bdd7183f-f920-456d-bdb7-ecd6b375ebac","connectionID":"7934989a-8d9b-483e-8441-7db3515dcc5c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '14a13060-43a3-417b-9be8-aab9988118a2', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message bdd7183f-f920-456d-bdb7-ecd6b375ebac unaltered + interception proxy got result of transforming message bdd7183f-f920-456d-bdb7-ecd6b375ebac {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '14a13060-43a3-417b-9be8-aab9988118a2', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"4fd557d4-5c3c-4547-9bb0-1b2752c04d0a","method":"transformInterceptedMessage","params":{"id":"82e87f1d-3a2b-4286-b264-764816eb5cc9","connectionID":"01175dcc-0cb9-4aa6-ac95-6cf0e0bf6dd6","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4fd557d4-5c3c-4547-9bb0-1b2752c04d0a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 82e87f1d-3a2b-4286-b264-764816eb5cc9 unaltered + interception proxy got result of transforming message 82e87f1d-3a2b-4286-b264-764816eb5cc9 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4fd557d4-5c3c-4547-9bb0-1b2752c04d0a', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"b099fad6-9db4-458b-bed8-9f75da2a197e","method":"transformInterceptedMessage","params":{"id":"3f2fa670-b13f-4889-8f36-63600c2cce5c","connectionID":"73ca7259-d3b4-43a6-a814-fbbd0cd3e202","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b099fad6-9db4-458b-bed8-9f75da2a197e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 3f2fa670-b13f-4889-8f36-63600c2cce5c unaltered + interception proxy got result of transforming message 3f2fa670-b13f-4889-8f36-63600c2cce5c {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b099fad6-9db4-458b-bed8-9f75da2a197e', result: {…}} + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 152; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_hhpZqQ disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = FafetxJtgz + rxChannel: Ably: Transport.onDisconnect(): err = [_ErrorInfo: Account _tmp_hhpZqQ disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] + rxChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was active + rxChannel: Ably: ConnectionManager.deactivateTransport(): reason = Account _tmp_hhpZqQ disabled + rxChannel: Ably: ConnectionManager.deactivateTransport(): Getting, clearing, and requeuing 0 pending messages + rxChannel: Ably: MessageQueue.clear(): clearing 0 messages + rxChannel: Ably: ConnectionManager.notifyState(): new state: disconnected; will retry connection immediately + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Account _tmp_hhpZqQ disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Account _tmp_hhpZqQ disabled + rxChannel: Ably: WebSocketTransport.dispose(): + rxChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: connecting + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + rxChannel: Ably: WebSocketTransport.dispose(): closing websocket + rxChannel: Ably: ConnectionManager.startConnect(): starting connection + rxChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + rxChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=resume,connectionKey=e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf,format=json] + rxChannel: Ably: ConnectionManager.connectWs(): undefined + rxChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + rxChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + rxChannel: Ably: WebSocketTransport.connect(): starting + rxChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + rxChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_9XT2Hg._ifo5A:Kp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0; err: null + rxChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&resume=e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + txChannel: Ably: ConnectionManager WebSocket slow timer: ws connectivity check succeeded + interception proxy got message {"jsonrpc":"2.0","id":"bbece57a-3f6e-4ab2-8bc9-b8fb3b6a6137","method":"transformInterceptedMessage","params":{"id":"cad99012-afe0-4830-b1f7-405bc63eb943","connectionID":"3c572df3-d488-49e9-ad8f-d853b04dd888","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816306}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bbece57a-3f6e-4ab2-8bc9-b8fb3b6a6137', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816306} + default transformInterceptedMessage implementation passing message cad99012-afe0-4830-b1f7-405bc63eb943 unaltered + interception proxy got result of transforming message cad99012-afe0-4830-b1f7-405bc63eb943 {action: 9, error: {…}, timestamp: 1715971816306} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bbece57a-3f6e-4ab2-8bc9-b8fb3b6a6137', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"3e1a20ca-f067-43dd-95c4-4756cc38b4c5","method":"transformInterceptedMessage","params":{"id":"7c6874c3-2d0f-41ca-af96-3ddafda86b78","connectionID":"06b89d2c-a016-4f6e-82fe-fce0ad250ddd","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816308}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3e1a20ca-f067-43dd-95c4-4756cc38b4c5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816308} + default transformInterceptedMessage implementation passing message 7c6874c3-2d0f-41ca-af96-3ddafda86b78 unaltered + interception proxy got result of transforming message 7c6874c3-2d0f-41ca-af96-3ddafda86b78 {action: 9, error: {…}, timestamp: 1715971816308} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3e1a20ca-f067-43dd-95c4-4756cc38b4c5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"842f6486-b997-47f6-ad33-377fcc1d7671","method":"transformInterceptedMessage","params":{"id":"06314c6f-5670-4806-9eb7-8600e15a5e80","connectionID":"b06400ef-d35b-407a-b206-13b68137d1fb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816313}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '842f6486-b997-47f6-ad33-377fcc1d7671', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816313} + default transformInterceptedMessage implementation passing message 06314c6f-5670-4806-9eb7-8600e15a5e80 unaltered + interception proxy got result of transforming message 06314c6f-5670-4806-9eb7-8600e15a5e80 {action: 9, error: {…}, timestamp: 1715971816313} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '842f6486-b997-47f6-ad33-377fcc1d7671', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"0c4ba6c0-48c5-4887-8ea5-d849228b1889","method":"transformInterceptedMessage","params":{"id":"a7b63edb-c7ac-4c51-8578-e50b2ac5ce97","connectionID":"ea05385d-0a45-4cc8-be4f-fcc04de155e5","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816317}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0c4ba6c0-48c5-4887-8ea5-d849228b1889', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816317} + default transformInterceptedMessage implementation passing message a7b63edb-c7ac-4c51-8578-e50b2ac5ce97 unaltered + interception proxy got result of transforming message a7b63edb-c7ac-4c51-8578-e50b2ac5ce97 {action: 9, error: {…}, timestamp: 1715971816317} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0c4ba6c0-48c5-4887-8ea5-d849228b1889', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"65adc5f1-4d59-42e9-beee-1df8f2fb8d75","method":"transformInterceptedMessage","params":{"id":"7fd1c030-b36e-43d4-adaf-2bbcf18fe691","connectionID":"8d989a53-719c-4b9a-8964-5ccf0a1a157a","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816319}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '65adc5f1-4d59-42e9-beee-1df8f2fb8d75', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816319} + default transformInterceptedMessage implementation passing message 7fd1c030-b36e-43d4-adaf-2bbcf18fe691 unaltered + interception proxy got result of transforming message 7fd1c030-b36e-43d4-adaf-2bbcf18fe691 {action: 9, error: {…}, timestamp: 1715971816319} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '65adc5f1-4d59-42e9-beee-1df8f2fb8d75', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"c02d90cf-8965-46e6-bd0f-0afa2b9758eb","method":"transformInterceptedMessage","params":{"id":"e82bcc72-65b1-44d6-9ee6-99c8648d3836","connectionID":"31a41650-d463-404d-9334-35cc3f952e71","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816320}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c02d90cf-8965-46e6-bd0f-0afa2b9758eb', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816320} + default transformInterceptedMessage implementation passing message e82bcc72-65b1-44d6-9ee6-99c8648d3836 unaltered + interception proxy got result of transforming message e82bcc72-65b1-44d6-9ee6-99c8648d3836 {action: 9, error: {…}, timestamp: 1715971816320} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c02d90cf-8965-46e6-bd0f-0afa2b9758eb', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"5c910356-c6d7-4162-a3d4-8d47ea38b349","method":"transformInterceptedMessage","params":{"id":"27594008-d8a9-4a76-bdbb-b875bd915c21","connectionID":"c5995417-47cc-4f50-86dc-2738fbf6705b","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816322}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '5c910356-c6d7-4162-a3d4-8d47ea38b349', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816322} + default transformInterceptedMessage implementation passing message 27594008-d8a9-4a76-bdbb-b875bd915c21 unaltered + interception proxy got result of transforming message 27594008-d8a9-4a76-bdbb-b875bd915c21 {action: 9, error: {…}, timestamp: 1715971816322} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '5c910356-c6d7-4162-a3d4-8d47ea38b349', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"5ac8b4ed-f555-4ee1-9cfd-e0e69b105c4a","method":"transformInterceptedMessage","params":{"id":"7f9e039d-6f1f-407b-8f08-0613503065cc","connectionID":"a8dc912e-c7a5-43d0-923d-1bb5c88bfe08","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816327}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '5ac8b4ed-f555-4ee1-9cfd-e0e69b105c4a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816327} + default transformInterceptedMessage implementation passing message 7f9e039d-6f1f-407b-8f08-0613503065cc unaltered + interception proxy got result of transforming message 7f9e039d-6f1f-407b-8f08-0613503065cc {action: 9, error: {…}, timestamp: 1715971816327} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '5ac8b4ed-f555-4ee1-9cfd-e0e69b105c4a', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"6d060767-e080-4b13-9e07-3ce3d69c41d3","method":"transformInterceptedMessage","params":{"id":"4e3571ad-2c05-4667-a0d1-eea34b993953","connectionID":"d880470c-54f9-4102-8752-0392f947b0fd","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816348}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6d060767-e080-4b13-9e07-3ce3d69c41d3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816348} + default transformInterceptedMessage implementation passing message 4e3571ad-2c05-4667-a0d1-eea34b993953 unaltered + interception proxy got result of transforming message 4e3571ad-2c05-4667-a0d1-eea34b993953 {action: 9, error: {…}, timestamp: 1715971816348} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6d060767-e080-4b13-9e07-3ce3d69c41d3', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"bdc6b82c-2cf4-4b3d-adf1-5cc5167cd8d4","method":"transformInterceptedMessage","params":{"id":"8ce94220-0d97-4d0c-b952-a9dc83283537","connectionID":"5d6b6cd2-f0f9-410c-8f6a-402912436242","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816360}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bdc6b82c-2cf4-4b3d-adf1-5cc5167cd8d4', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816360} + default transformInterceptedMessage implementation passing message 8ce94220-0d97-4d0c-b952-a9dc83283537 unaltered + interception proxy got result of transforming message 8ce94220-0d97-4d0c-b952-a9dc83283537 {action: 9, error: {…}, timestamp: 1715971816360} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bdc6b82c-2cf4-4b3d-adf1-5cc5167cd8d4', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"6ca9d729-f3d6-4918-98d2-bd6f1675071d","method":"transformInterceptedMessage","params":{"id":"49e30cc0-97c4-4d7a-a1cb-feea7af72c26","connectionID":"c19e380d-33e9-4a3f-8990-c05e754b1985","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816521}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6ca9d729-f3d6-4918-98d2-bd6f1675071d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816521} + default transformInterceptedMessage implementation passing message 49e30cc0-97c4-4d7a-a1cb-feea7af72c26 unaltered + interception proxy got result of transforming message 49e30cc0-97c4-4d7a-a1cb-feea7af72c26 {action: 9, error: {…}, timestamp: 1715971816521} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6ca9d729-f3d6-4918-98d2-bd6f1675071d', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"8acc1b11-1ae7-4de9-b819-0f86ed3befe1","method":"transformInterceptedMessage","params":{"id":"2e54077f-2b96-46b9-842a-e5d49eb1f112","connectionID":"27d47ef1-094f-4fe2-9098-182a9c596dfc","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816539}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8acc1b11-1ae7-4de9-b819-0f86ed3befe1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816539} + default transformInterceptedMessage implementation passing message 2e54077f-2b96-46b9-842a-e5d49eb1f112 unaltered + interception proxy got result of transforming message 2e54077f-2b96-46b9-842a-e5d49eb1f112 {action: 9, error: {…}, timestamp: 1715971816539} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8acc1b11-1ae7-4de9-b819-0f86ed3befe1', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"634a4ba9-c74f-4fed-bc3c-8df922239352","method":"transformInterceptedMessage","params":{"id":"ea0a3fc7-9d6d-4a18-8c07-8823f8902c49","connectionID":"fc569500-a499-4af3-9983-db52825ec349","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971816885}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '634a4ba9-c74f-4fed-bc3c-8df922239352', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971816885} + default transformInterceptedMessage implementation passing message ea0a3fc7-9d6d-4a18-8c07-8823f8902c49 unaltered + interception proxy got result of transforming message ea0a3fc7-9d6d-4a18-8c07-8823f8902c49 {action: 9, error: {…}, timestamp: 1715971816885} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '634a4ba9-c74f-4fed-bc3c-8df922239352', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"a8e909c0-9fc3-4aa7-ab76-d9d1b1a3918f","method":"transformInterceptedMessage","params":{"id":"315ebc1f-7a43-4fec-b418-e8965aa585f9","connectionID":"d58098db-558d-45a3-b261-2be09413788d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971817485}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a8e909c0-9fc3-4aa7-ab76-d9d1b1a3918f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971817485} + default transformInterceptedMessage implementation passing message 315ebc1f-7a43-4fec-b418-e8965aa585f9 unaltered + interception proxy got result of transforming message 315ebc1f-7a43-4fec-b418-e8965aa585f9 {action: 9, error: {…}, timestamp: 1715971817485} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a8e909c0-9fc3-4aa7-ab76-d9d1b1a3918f', result: {…}} + rxChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + rxChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&resume=e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + rxChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&resume=e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = resume + interception proxy got message {"jsonrpc":"2.0","id":"4d7f7d24-be89-4e00-b273-d3ca0ccad346","method":"transformInterceptedMessage","params":{"id":"01a0eb4d-840f-419b-9503-0921d7622e1e","connectionID":"b72ff151-1d3c-4897-b37e-6c3d9572ac02","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971817901}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4d7f7d24-be89-4e00-b273-d3ca0ccad346', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971817901} + default transformInterceptedMessage implementation passing message 01a0eb4d-840f-419b-9503-0921d7622e1e unaltered + interception proxy got result of transforming message 01a0eb4d-840f-419b-9503-0921d7622e1e {action: 9, error: {…}, timestamp: 1715971817901} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4d7f7d24-be89-4e00-b273-d3ca0ccad346', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"c99417a8-b1c7-42e3-8e57-75d2a2ab6478","method":"transformInterceptedMessage","params":{"id":"5cc8bb46-2fc3-4a06-a9f8-f753730c3110","connectionID":"48b6f5f0-3fd4-49e3-97fa-c38e85af5fa2","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971818092}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c99417a8-b1c7-42e3-8e57-75d2a2ab6478', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971818092} + default transformInterceptedMessage implementation passing message 5cc8bb46-2fc3-4a06-a9f8-f753730c3110 unaltered + interception proxy got result of transforming message 5cc8bb46-2fc3-4a06-a9f8-f753730c3110 {action: 9, error: {…}, timestamp: 1715971818092} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c99417a8-b1c7-42e3-8e57-75d2a2ab6478', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"f0212e2a-3da7-4ee8-a41a-a208baffa504","method":"transformInterceptedMessage","params":{"id":"7263e386-2aa7-435d-b0a5-51cf2b144ce2","connectionID":"72d1f684-c756-4ef4-8b12-e7b0f7b9e071","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_hhpZqQ disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971818139}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f0212e2a-3da7-4ee8-a41a-a208baffa504', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971818139} + default transformInterceptedMessage implementation passing message 7263e386-2aa7-435d-b0a5-51cf2b144ce2 unaltered + interception proxy got result of transforming message 7263e386-2aa7-435d-b0a5-51cf2b144ce2 {action: 9, error: {…}, timestamp: 1715971818139} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f0212e2a-3da7-4ee8-a41a-a208baffa504', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"a3bc075e-ff12-4961-81b8-4e4f5edc9fc5","method":"transformInterceptedMessage","params":{"id":"e5502d64-95be-48c8-8aa0-420f23d08df3","connectionID":"58b8315f-9ab8-465f-9c6e-57d2acb930fb","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971818296}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a3bc075e-ff12-4961-81b8-4e4f5edc9fc5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971818296} + default transformInterceptedMessage implementation passing message e5502d64-95be-48c8-8aa0-420f23d08df3 unaltered + interception proxy got result of transforming message e5502d64-95be-48c8-8aa0-420f23d08df3 {action: 9, error: {…}, timestamp: 1715971818296} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a3bc075e-ff12-4961-81b8-4e4f5edc9fc5', result: {…}} + rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 232; type = string + rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715971818296; error=[_ErrorInfo: Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = FafetxJtgz + rxChannel: Ably: Transport.onProtocolMessage(): received error action; connectionId = FafetxJtgz; err = {"code":40300,"statusCode":403,"nonfatal":false,"href":"https://help.ably.io/error/40300"} + rxChannel: Ably: Transport.onFatalError(): err = [_ErrorInfo: Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] + rxChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&resume=e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.deactivateTransport(): state = failed; was pending + rxChannel: Ably: ConnectionManager.deactivateTransport(): reason = Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.) + rxChannel: Ably: ConnectionManager.notifyState(): new state: failed + rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: Ably: Connection state: failed; reason: [_ErrorInfo: Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] + rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: failed; reason = Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.) + rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attached, notifying state failed + rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false + rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false + rxChannel: Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] + rxChannel: Ably: WebSocketTransport.dispose(): + rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&resume=e7deKLRSQBc0Ap!FafetxJtgzAe3TvDj75fT6-1faf&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + rxChannel: Ably: WebSocketTransport.dispose(): closing websocket + rxChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + interception proxy got message {"jsonrpc":"2.0","id":"2c086da0-a3ba-4f6a-b6da-c990dfbbcd16","method":"transformInterceptedMessage","params":{"id":"2a500e86-e514-41ad-b7cb-37206249d1ff","connectionID":"71d4c8a3-a1c9-4752-89cb-37ab0db15fdc","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971818582}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2c086da0-a3ba-4f6a-b6da-c990dfbbcd16', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971818582} + default transformInterceptedMessage implementation passing message 2a500e86-e514-41ad-b7cb-37206249d1ff unaltered + interception proxy got result of transforming message 2a500e86-e514-41ad-b7cb-37206249d1ff {action: 9, error: {…}, timestamp: 1715971818582} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2c086da0-a3ba-4f6a-b6da-c990dfbbcd16', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"b8b09d95-aa76-4439-bff6-c46641d0e974","method":"transformInterceptedMessage","params":{"id":"12fdd268-fb0d-468a-b127-7b34a192d8c2","connectionID":"dbe755a1-f0df-4fa5-81ef-41bd7b222231","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971818700}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b8b09d95-aa76-4439-bff6-c46641d0e974', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971818700} + default transformInterceptedMessage implementation passing message 12fdd268-fb0d-468a-b127-7b34a192d8c2 unaltered + interception proxy got result of transforming message 12fdd268-fb0d-468a-b127-7b34a192d8c2 {action: 9, error: {…}, timestamp: 1715971818700} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b8b09d95-aa76-4439-bff6-c46641d0e974', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"dd6a316b-e7f5-4f06-b44c-ebbb13ca0952","method":"transformInterceptedMessage","params":{"id":"11172403-abe6-421c-902f-0e6aefdcfb6b","connectionID":"2d847106-2495-4faf-9edd-05199d353208","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971819177}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'dd6a316b-e7f5-4f06-b44c-ebbb13ca0952', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971819177} + default transformInterceptedMessage implementation passing message 11172403-abe6-421c-902f-0e6aefdcfb6b unaltered + interception proxy got result of transforming message 11172403-abe6-421c-902f-0e6aefdcfb6b {action: 9, error: {…}, timestamp: 1715971819177} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'dd6a316b-e7f5-4f06-b44c-ebbb13ca0952', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"6ff5f6e2-c3cb-4b16-9828-ae19334939b5","method":"transformInterceptedMessage","params":{"id":"4390d427-6ca2-4c6c-8dc9-cf6a8d36218e","connectionID":"7b6f51ec-e24a-4d55-b904-a8789d6f48d3","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971819210}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6ff5f6e2-c3cb-4b16-9828-ae19334939b5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971819210} + default transformInterceptedMessage implementation passing message 4390d427-6ca2-4c6c-8dc9-cf6a8d36218e unaltered + interception proxy got result of transforming message 4390d427-6ca2-4c6c-8dc9-cf6a8d36218e {action: 9, error: {…}, timestamp: 1715971819210} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6ff5f6e2-c3cb-4b16-9828-ae19334939b5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"587d6a02-832b-4ce5-8dbd-53a9282f7627","method":"transformInterceptedMessage","params":{"id":"761034c2-e999-4589-94e9-81263980ce7c","connectionID":"d559d7b9-1678-4263-adcc-067cccdbb325","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971819428}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '587d6a02-832b-4ce5-8dbd-53a9282f7627', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971819428} + default transformInterceptedMessage implementation passing message 761034c2-e999-4589-94e9-81263980ce7c unaltered + interception proxy got result of transforming message 761034c2-e999-4589-94e9-81263980ce7c {action: 9, error: {…}, timestamp: 1715971819428} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '587d6a02-832b-4ce5-8dbd-53a9282f7627', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"0999630e-0c31-43f6-a09d-2a5ebae75319","method":"transformInterceptedMessage","params":{"id":"8f4ebb58-d531-4019-9051-21e257580a36","connectionID":"d09ba4c9-5115-48d8-98d4-87c182640572","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971819629}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0999630e-0c31-43f6-a09d-2a5ebae75319', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971819629} + default transformInterceptedMessage implementation passing message 8f4ebb58-d531-4019-9051-21e257580a36 unaltered + interception proxy got result of transforming message 8f4ebb58-d531-4019-9051-21e257580a36 {action: 9, error: {…}, timestamp: 1715971819629} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0999630e-0c31-43f6-a09d-2a5ebae75319', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"ded53df7-c77d-4e36-9aa9-bc03eada7b19","method":"transformInterceptedMessage","params":{"id":"3273d505-896f-4ed3-a739-5254825a2974","connectionID":"876a12f8-b980-43df-8280-04ac87522024","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971819838}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ded53df7-c77d-4e36-9aa9-bc03eada7b19', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971819838} + default transformInterceptedMessage implementation passing message 3273d505-896f-4ed3-a739-5254825a2974 unaltered + interception proxy got result of transforming message 3273d505-896f-4ed3-a739-5254825a2974 {action: 9, error: {…}, timestamp: 1715971819838} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ded53df7-c77d-4e36-9aa9-bc03eada7b19', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"f451d49e-7cd9-4ae8-b47e-641c3a517e47","method":"transformInterceptedMessage","params":{"id":"cc76c5e0-eccb-433d-a5ca-b8b5383d4a1e","connectionID":"3286e066-c3f1-4845-9434-c8f3484eab87","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971819996}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f451d49e-7cd9-4ae8-b47e-641c3a517e47', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971819996} + default transformInterceptedMessage implementation passing message cc76c5e0-eccb-433d-a5ca-b8b5383d4a1e unaltered + interception proxy got result of transforming message cc76c5e0-eccb-433d-a5ca-b8b5383d4a1e {action: 9, error: {…}, timestamp: 1715971819996} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f451d49e-7cd9-4ae8-b47e-641c3a517e47', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"30b6babb-0ca2-4dd2-a13a-2c4b4d47ece5","method":"transformInterceptedMessage","params":{"id":"28d56140-d862-4622-8894-2e026f04d498","connectionID":"42da748e-2d94-49c0-9138-267e8900531c","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971820271}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '30b6babb-0ca2-4dd2-a13a-2c4b4d47ece5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971820271} + default transformInterceptedMessage implementation passing message 28d56140-d862-4622-8894-2e026f04d498 unaltered + interception proxy got result of transforming message 28d56140-d862-4622-8894-2e026f04d498 {action: 9, error: {…}, timestamp: 1715971820271} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '30b6babb-0ca2-4dd2-a13a-2c4b4d47ece5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"65dea4ee-4521-4129-9e5d-39ea01ab9ec9","method":"transformInterceptedMessage","params":{"id":"5d2ce1ef-be15-4a8f-88a0-a6e6b8cd0e26","connectionID":"8ee0b585-449a-4176-b0c6-38f0321d8934","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971820303}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '65dea4ee-4521-4129-9e5d-39ea01ab9ec9', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971820303} + default transformInterceptedMessage implementation passing message 5d2ce1ef-be15-4a8f-88a0-a6e6b8cd0e26 unaltered + interception proxy got result of transforming message 5d2ce1ef-be15-4a8f-88a0-a6e6b8cd0e26 {action: 9, error: {…}, timestamp: 1715971820303} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '65dea4ee-4521-4129-9e5d-39ea01ab9ec9', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"ceb595bc-d6d1-416f-89be-27596e541540","method":"transformInterceptedMessage","params":{"id":"35b3ae9b-d34e-45ee-88d4-7e44ac94e1ca","connectionID":"4491223a-54c1-4984-9567-de698726c038","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971820742}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ceb595bc-d6d1-416f-89be-27596e541540', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971820742} + default transformInterceptedMessage implementation passing message 35b3ae9b-d34e-45ee-88d4-7e44ac94e1ca unaltered + interception proxy got result of transforming message 35b3ae9b-d34e-45ee-88d4-7e44ac94e1ca {action: 9, error: {…}, timestamp: 1715971820742} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ceb595bc-d6d1-416f-89be-27596e541540', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"66a0ff9e-d406-4f39-844e-45d453715524","method":"transformInterceptedMessage","params":{"id":"bc30ebc5-d625-4092-9856-31c583b7730c","connectionID":"7e0d0e62-0899-4ace-b658-12b8dffe573d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971820754}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '66a0ff9e-d406-4f39-844e-45d453715524', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971820754} + default transformInterceptedMessage implementation passing message bc30ebc5-d625-4092-9856-31c583b7730c unaltered + interception proxy got result of transforming message bc30ebc5-d625-4092-9856-31c583b7730c {action: 9, error: {…}, timestamp: 1715971820754} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '66a0ff9e-d406-4f39-844e-45d453715524', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"c03ba8de-6d7b-4285-be4b-c4966fe7f61d","method":"transformInterceptedMessage","params":{"id":"13eb6d33-65bf-4df3-9402-a67bed6ef0c5","connectionID":"05ab3687-fb49-401b-a820-317a644f01f8","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971820988}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c03ba8de-6d7b-4285-be4b-c4966fe7f61d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971820988} + default transformInterceptedMessage implementation passing message 13eb6d33-65bf-4df3-9402-a67bed6ef0c5 unaltered + interception proxy got result of transforming message 13eb6d33-65bf-4df3-9402-a67bed6ef0c5 {action: 9, error: {…}, timestamp: 1715971820988} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c03ba8de-6d7b-4285-be4b-c4966fe7f61d', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"208c55fa-6804-4d8d-a2d6-c7968d24db73","method":"transformInterceptedMessage","params":{"id":"a03c602b-f32a-4d9c-a7ed-8d376e140c1a","connectionID":"bb94c7c3-6d45-4fc3-af06-98c97574eb22","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_9XT2Hg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715971821205}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '208c55fa-6804-4d8d-a2d6-c7968d24db73', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715971821205} + default transformInterceptedMessage implementation passing message a03c602b-f32a-4d9c-a7ed-8d376e140c1a unaltered + interception proxy got result of transforming message a03c602b-f32a-4d9c-a7ed-8d376e140c1a {action: 9, error: {…}, timestamp: 1715971821205} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '208c55fa-6804-4d8d-a2d6-c7968d24db73', result: {…}} + Test App _tmp_9XT2Hg has been torn down + interception proxy client disconnected + txChannel: Ably: ConnectionManager retry timer expired: retrying + txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + txChannel: Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: Ably: Connection state: connecting + txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: Ably: ConnectionManager.startConnect(): starting connection + txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: Ably: ConnectionManager.connectWs(): undefined + txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: Ably: WebSocketTransport.connect(): starting + txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_9XT2Hg._ifo5A:Kp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0; err: null + txChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&clientId=3978951838081659&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket + txChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&clientId=3978951838081659&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + txChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_9XT2Hg._ifo5A%3AKp9WToABVmVlHRMIm3fO-MknVaSDCdF9vEMc4SV2SZ0&clientId=3978951838081659&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean \ No newline at end of file From 952915d55ac1dc57d432f79ce6c196d98bb94bf7 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 16:11:42 -0300 Subject: [PATCH 17/32] improve logging in proxy --- test/interception-proxy/InterceptionContext.ts | 3 +++ test/mitmproxy_addon_2.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/test/interception-proxy/InterceptionContext.ts b/test/interception-proxy/InterceptionContext.ts index 5720626a2..63854d0da 100644 --- a/test/interception-proxy/InterceptionContext.ts +++ b/test/interception-proxy/InterceptionContext.ts @@ -95,6 +95,9 @@ export class InterceptionContext { ...(mitmdumpMode === null ? [] : ['--mode', mitmdumpMode]), '-s', 'test/mitmproxy_addon_2.py', + '--set', + // "full request URL with response status code and HTTP headers" (the default truncates the URL) + 'flow_detail=2', ]); const formatMitmdumpOutput = (source: string, data: Buffer) => { diff --git a/test/mitmproxy_addon_2.py b/test/mitmproxy_addon_2.py index e5c0ecf60..4ae36a9c1 100644 --- a/test/mitmproxy_addon_2.py +++ b/test/mitmproxy_addon_2.py @@ -26,7 +26,7 @@ def request(self, flow: mitmproxy.http.HTTPFlow) -> None: # (b'Connection', b'Upgrade'), (b'Upgrade', b'websocket') intercept = MitmproxyAddon2.is_websocket_upgrade_request(flow.request) - logging.info(f'MitmproxyAddon2 {"intercepting" if intercept else "not intercepting"} `request` {flow.request.pretty_host}, scheme {flow.request.scheme}, headers {flow.request.headers}') + logging.info(f'MitmproxyAddon2 {"intercepting" if intercept else "not intercepting"} `request` {flow.request.url}, headers {flow.request.headers}') # pretty_host takes the "Host" header of the request into account, # which is useful in transparent mode where we usually only have the IP # otherwise. From 5a3d65a48a60da37fcea6e42982ea10c8fc0a307 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 16:20:04 -0300 Subject: [PATCH 18/32] logs --- with-failure-logs-4.txt | 1575 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 1575 insertions(+) create mode 100644 with-failure-logs-4.txt diff --git a/with-failure-logs-4.txt b/with-failure-logs-4.txt new file mode 100644 index 000000000..ad8ba74b0 --- /dev/null +++ b/with-failure-logs-4.txt @@ -0,0 +1,1575 @@ +favicon.ico:1 + + + Failed to load resource: the server responded with a status of 404 (Not Found) +interception_proxy_client.js:20 connected to interception proxy +interception_proxy_client.js:56 interception proxy sending startInterception request Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8986566212744509","result":{}} +interception_proxy_client.js:34 startInterception completed +testapp_module.js:38 Test App _tmp_-mDp8g in environment sandbox has been set up +root_hooks.js:31 START TEST: browser/modular attempting to initialize with no client options BaseRest throws an error +logger.ts:56 16:19:21.979 Ably: BaseRest(): BaseRest must be initialized with a client options object +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:203 +BaseRest @ baserest.ts:21 +(anonymous) @ modular.test.js:48 +assertThrows @ VM7 chai.js:3044 +methodWrapper @ VM7 chai.js:7910 +(anonymous) @ modular.test.js:48 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with no client options BaseRest throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with no client options _BaseRealtime throws an error +logger.ts:56 16:19:21.982 Ably: BaseRealtime(): BaseRealtime must be initialized with a client options object +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:203 +_BaseRealtime @ baserealtime.ts:36 +(anonymous) @ modular.test.js:48 +assertThrows @ VM7 chai.js:3044 +methodWrapper @ VM7 chai.js:7910 +(anonymous) @ modular.test.js:48 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with no client options _BaseRealtime throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just an API key BaseRest throws an error +logger.ts:56 16:19:21.983 Ably: BaseRest(): BaseRest cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property. (Set this Ably API key as the object’s `key` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:221 +BaseRest @ baserest.ts:21 +(anonymous) @ modular.test.js:58 +assertThrows @ VM7 chai.js:3044 +methodWrapper @ VM7 chai.js:7910 +(anonymous) @ modular.test.js:58 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just an API key BaseRest throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just an API key _BaseRealtime throws an error +logger.ts:56 16:19:21.984 Ably: BaseRealtime(): BaseRealtime cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property. (Set this Ably API key as the object’s `key` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:221 +_BaseRealtime @ baserealtime.ts:36 +(anonymous) @ modular.test.js:58 +assertThrows @ VM7 chai.js:3044 +methodWrapper @ VM7 chai.js:7910 +(anonymous) @ modular.test.js:58 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just an API key _BaseRealtime throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just a token BaseRest throws an error +logger.ts:56 16:19:21.984 Ably: BaseRest(): BaseRest cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property. (Set this Ably Token as the object’s `token` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:213 +BaseRest @ baserest.ts:21 +(anonymous) @ modular.test.js:70 +assertThrows @ VM7 chai.js:3044 +methodWrapper @ VM7 chai.js:7910 +(anonymous) @ modular.test.js:70 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just a token BaseRest throws an error +root_hooks.js:31 START TEST: browser/modular attempting to initialize with just a token _BaseRealtime throws an error +logger.ts:56 16:19:21.985 Ably: BaseRealtime(): BaseRealtime cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property. (Set this Ably Token as the object’s `token` property.) +errorLogger @ logger.ts:56 +(anonymous) @ logger.ts:29 +logAction @ logger.ts:122 +logActionNoStrip @ logger.ts:117 +_Logger.logAction @ logger.ts:110 +objectifyOptions @ defaults.ts:213 +_BaseRealtime @ baserealtime.ts:36 +(anonymous) @ modular.test.js:70 +assertThrows @ VM7 chai.js:3044 +methodWrapper @ VM7 chai.js:7910 +(anonymous) @ modular.test.js:70 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +Runner.runSuite @ mocha.js:24024 +next @ mocha.js:24008 +next @ mocha.js:23842 +Runner.runTests @ mocha.js:23952 +(anonymous) @ mocha.js:24029 +next @ mocha.js:23572 +cbHookRun @ mocha.js:23641 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22194 +(anonymous) @ testapp_module.js:45 +(anonymous) @ testapp_manager.js:160 +xhr.onreadystatechange @ testapp_manager.js:83 +Show 20 more frames +Show less +root_hooks.js:27 END TEST: browser/modular attempting to initialize with just a token _BaseRealtime throws an error +root_hooks.js:31 START TEST: browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin +root_hooks.js:27 END TEST: browser/modular without any plugins BaseRest throws an error due to the absence of an HTTP plugin +root_hooks.js:31 START TEST: browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin +root_hooks.js:27 END TEST: browser/modular without any plugins _BaseRealtime throws an error due to the absence of an HTTP plugin +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to use push admin functionality +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2f926bcc-3541-43b4-8db6-f85d5d6a33ab","method":"transformInterceptedMessage","params":{"id":"dc6d33a1-d35a-4c92-89f3-6d4726b0f687","connectionID":"31f0c7d3-133c-4bc3-9297-c198f559fed0","type":"text","data":"{\"action\":4,\"connectionId\":\"9ybkwIgnrh\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!9ybkwIgnrhAVwEvQJUcQjc-3265\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2f926bcc-3541-43b4-8db6-f85d5d6a33ab', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '9ybkwIgnrh', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message dc6d33a1-d35a-4c92-89f3-6d4726b0f687 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message dc6d33a1-d35a-4c92-89f3-6d4726b0f687 {action: 4, connectionId: '9ybkwIgnrh', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2f926bcc-3541-43b4-8db6-f85d5d6a33ab', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7dd7b3e6-c16b-42fa-bbca-ca6c9ef6fd83","method":"transformInterceptedMessage","params":{"id":"82d14ac3-09a2-47fb-beb9-73dcb58c79a9","connectionID":"6850246b-8d36-4d88-b751-04867a4bf5ac","type":"text","data":"{\"action\":4,\"connectionId\":\"dAHxel6lL3\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!dAHxel6lL3AXo1XFfhh3Oa-3266\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7dd7b3e6-c16b-42fa-bbca-ca6c9ef6fd83', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'dAHxel6lL3', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 82d14ac3-09a2-47fb-beb9-73dcb58c79a9 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 82d14ac3-09a2-47fb-beb9-73dcb58c79a9 {action: 4, connectionId: 'dAHxel6lL3', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7dd7b3e6-c16b-42fa-bbca-ca6c9ef6fd83', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0ffbc5e2-7d44-40e7-9bb5-cffcb151c252","method":"transformInterceptedMessage","params":{"id":"b61f756d-af6f-439c-bb3a-f725122949e4","connectionID":"82562167-a4ba-4b82-bfd3-5af71a78572c","type":"text","data":"{\"action\":4,\"connectionId\":\"sPcgRXM-EJ\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!sPcgRXM-EJAd0LLheqfmIo-30ec\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0ffbc5e2-7d44-40e7-9bb5-cffcb151c252', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'sPcgRXM-EJ', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b61f756d-af6f-439c-bb3a-f725122949e4 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b61f756d-af6f-439c-bb3a-f725122949e4 {action: 4, connectionId: 'sPcgRXM-EJ', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0ffbc5e2-7d44-40e7-9bb5-cffcb151c252', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e8176dc4-6dab-4b3a-ba35-94fe1c54a960","method":"transformInterceptedMessage","params":{"id":"06c9678e-2a76-4d30-b86b-a4fedb996b7d","connectionID":"162632c5-d822-44b6-98cf-dafb225f89e1","type":"text","data":"{\"action\":4,\"connectionId\":\"E7swLMHzzI\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!E7swLMHzzIAWtowkgHjGZl-3268\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e8176dc4-6dab-4b3a-ba35-94fe1c54a960', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'E7swLMHzzI', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 06c9678e-2a76-4d30-b86b-a4fedb996b7d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 06c9678e-2a76-4d30-b86b-a4fedb996b7d {action: 4, connectionId: 'E7swLMHzzI', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e8176dc4-6dab-4b3a-ba35-94fe1c54a960', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a2066269-c766-4b1e-aed3-ba4061c4d38e","method":"transformInterceptedMessage","params":{"id":"1747bf3e-3e34-440e-bfde-77cd19c98dbc","connectionID":"e335f372-842a-4aab-929b-bb240ee25bd2","type":"text","data":"{\"action\":4,\"connectionId\":\"tN7NssEhlk\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!tN7NssEhlkAaCvlV5SkjAv-3269\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a2066269-c766-4b1e-aed3-ba4061c4d38e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'tN7NssEhlk', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1747bf3e-3e34-440e-bfde-77cd19c98dbc unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1747bf3e-3e34-440e-bfde-77cd19c98dbc {action: 4, connectionId: 'tN7NssEhlk', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a2066269-c766-4b1e-aed3-ba4061c4d38e', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"30711a90-7af7-4c3a-9752-6680d14b2542","method":"transformInterceptedMessage","params":{"id":"69f5ba7f-c844-4579-b348-b1c3de2db154","connectionID":"d2bb0ee6-8a95-4fcd-bf45-2904e20c5178","type":"text","data":"{\"action\":4,\"connectionId\":\"1bI4epCxCm\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!1bI4epCxCmAfGWSuvIqrhQ-283f\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '30711a90-7af7-4c3a-9752-6680d14b2542', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '1bI4epCxCm', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 69f5ba7f-c844-4579-b348-b1c3de2db154 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 69f5ba7f-c844-4579-b348-b1c3de2db154 {action: 4, connectionId: '1bI4epCxCm', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '30711a90-7af7-4c3a-9752-6680d14b2542', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"93dcfeaf-55d6-4f37-b6f9-2aea5d46d19c","method":"transformInterceptedMessage","params":{"id":"3f786797-dbed-4f4d-acfb-da61bbedced9","connectionID":"db83ced7-7dc6-4370-978d-f308cb226a66","type":"text","data":"{\"action\":4,\"connectionId\":\"s1d7FNyflM\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!s1d7FNyflMAUQ9RWyOZ6pq-2840\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '93dcfeaf-55d6-4f37-b6f9-2aea5d46d19c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 's1d7FNyflM', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 3f786797-dbed-4f4d-acfb-da61bbedced9 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 3f786797-dbed-4f4d-acfb-da61bbedced9 {action: 4, connectionId: 's1d7FNyflM', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '93dcfeaf-55d6-4f37-b6f9-2aea5d46d19c', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0ae0ff89-c139-4ade-aa28-5db68f8e198a","method":"transformInterceptedMessage","params":{"id":"e581c9a4-92d4-4cd2-a88b-6ebf51d4d1dc","connectionID":"79ca26d7-2d12-4423-b49d-09a3bac53f31","type":"text","data":"{\"action\":4,\"connectionId\":\"VhyX3SFxLf\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!VhyX3SFxLfAeLebj7FIVRN-1bef\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0ae0ff89-c139-4ade-aa28-5db68f8e198a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'VhyX3SFxLf', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e581c9a4-92d4-4cd2-a88b-6ebf51d4d1dc unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e581c9a4-92d4-4cd2-a88b-6ebf51d4d1dc {action: 4, connectionId: 'VhyX3SFxLf', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0ae0ff89-c139-4ade-aa28-5db68f8e198a', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c3a24006-d708-4017-bd34-07f1b58785a5","method":"transformInterceptedMessage","params":{"id":"dbf0296c-3726-4f65-970a-bbaaa6d1088a","connectionID":"418c6412-5c42-4148-96f6-626f74a26577","type":"text","data":"{\"action\":4,\"connectionId\":\"HonYl1xaLQ\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!HonYl1xaLQAY7m4S-wG4ka-2740\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c3a24006-d708-4017-bd34-07f1b58785a5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'HonYl1xaLQ', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message dbf0296c-3726-4f65-970a-bbaaa6d1088a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message dbf0296c-3726-4f65-970a-bbaaa6d1088a {action: 4, connectionId: 'HonYl1xaLQ', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c3a24006-d708-4017-bd34-07f1b58785a5', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fbee4fc9-5132-4ccf-8f57-7e95482df497","method":"transformInterceptedMessage","params":{"id":"dc90b9ad-db2c-4092-a4a8-eb579a907222","connectionID":"b732d211-8fc0-4973-9841-13ff80c3cd24","type":"text","data":"{\"action\":4,\"connectionId\":\"bpfaWBdQcV\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!bpfaWBdQcVAY9hXhWuImgw-2742\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'fbee4fc9-5132-4ccf-8f57-7e95482df497', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'bpfaWBdQcV', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message dc90b9ad-db2c-4092-a4a8-eb579a907222 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message dc90b9ad-db2c-4092-a4a8-eb579a907222 {action: 4, connectionId: 'bpfaWBdQcV', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'fbee4fc9-5132-4ccf-8f57-7e95482df497', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"5534211b-33de-411b-8d97-8d10b61189dc","method":"transformInterceptedMessage","params":{"id":"39ccb097-226e-4230-886c-06767179d011","connectionID":"e2eb011b-312e-4c39-aef0-d0c100837329","type":"text","data":"{\"action\":4,\"connectionId\":\"SWi7Z-fAJH\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!SWi7Z-fAJHAQOC8eAmuX0B-1bf3\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '5534211b-33de-411b-8d97-8d10b61189dc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'SWi7Z-fAJH', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 39ccb097-226e-4230-886c-06767179d011 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 39ccb097-226e-4230-886c-06767179d011 {action: 4, connectionId: 'SWi7Z-fAJH', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '5534211b-33de-411b-8d97-8d10b61189dc', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"39a89cf3-4e9b-410b-aaad-b74e90716881","method":"transformInterceptedMessage","params":{"id":"7fca13c9-ce52-4e01-9ce0-a5cb8b64b550","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":4,\"connectionId\":\"ixdqxYde0v\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!ixdqxYde0vAbzYP4IsGecS-1c15\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '39a89cf3-4e9b-410b-aaad-b74e90716881', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'ixdqxYde0v', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 7fca13c9-ce52-4e01-9ce0-a5cb8b64b550 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 7fca13c9-ce52-4e01-9ce0-a5cb8b64b550 {action: 4, connectionId: 'ixdqxYde0v', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '39a89cf3-4e9b-410b-aaad-b74e90716881', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"25d772cf-54c0-48e7-9c75-1908cc8b8c3e","method":"transformInterceptedMessage","params":{"id":"c627e2df-0da2-4f4e-9220-2064bdbe67d0","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '25d772cf-54c0-48e7-9c75-1908cc8b8c3e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c627e2df-0da2-4f4e-9220-2064bdbe67d0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c627e2df-0da2-4f4e-9220-2064bdbe67d0 {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '25d772cf-54c0-48e7-9c75-1908cc8b8c3e', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1760eb6e-7f97-413c-ac7c-1fc36dba57ff","method":"transformInterceptedMessage","params":{"id":"35025ab6-475b-44db-894a-4aa832cbf2d4","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973569247-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '1760eb6e-7f97-413c-ac7c-1fc36dba57ff', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973569247-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 35025ab6-475b-44db-894a-4aa832cbf2d4 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 35025ab6-475b-44db-894a-4aa832cbf2d4 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973569247-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '1760eb6e-7f97-413c-ac7c-1fc36dba57ff', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"bc299040-e7ff-4f66-a508-dffbac277ff0","method":"transformInterceptedMessage","params":{"id":"21ff3a33-61a4-4dcc-b1d9-05ec69946dad","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bc299040-e7ff-4f66-a508-dffbac277ff0', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 21ff3a33-61a4-4dcc-b1d9-05ec69946dad unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 21ff3a33-61a4-4dcc-b1d9-05ec69946dad {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bc299040-e7ff-4f66-a508-dffbac277ff0', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"37e7cac1-b56c-4342-8a47-fbe8701e8288","method":"transformInterceptedMessage","params":{"id":"94ed34de-e22a-49d0-8c75-9a2acffc0f1a","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '37e7cac1-b56c-4342-8a47-fbe8701e8288', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 94ed34de-e22a-49d0-8c75-9a2acffc0f1a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 94ed34de-e22a-49d0-8c75-9a2acffc0f1a {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '37e7cac1-b56c-4342-8a47-fbe8701e8288', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"cd824067-45a9-4639-b1b7-f85d2bebc655","method":"transformInterceptedMessage","params":{"id":"4c8da9f9-a1ab-491b-87db-b248393f3e0c","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":15,\"id\":\"ixdqxYde0v:0\",\"connectionId\":\"ixdqxYde0v\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973570704-0\",\"timestamp\":1715973570704,\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'cd824067-45a9-4639-b1b7-f85d2bebc655', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'ixdqxYde0v:0', connectionId: 'ixdqxYde0v', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973570704-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 4c8da9f9-a1ab-491b-87db-b248393f3e0c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 4c8da9f9-a1ab-491b-87db-b248393f3e0c {action: 15, id: 'ixdqxYde0v:0', connectionId: 'ixdqxYde0v', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973570704-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'cd824067-45a9-4639-b1b7-f85d2bebc655', result: {…}} +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` +root_hooks.js:31 START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` +root_hooks.js:27 END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` +root_hooks.js:31 START TEST: browser/modular Crypto standalone functions generateRandomKey +root_hooks.js:27 END TEST: browser/modular Crypto standalone functions generateRandomKey +root_hooks.js:31 START TEST: browser/modular Crypto standalone functions getDefaultCryptoParams +root_hooks.js:27 END TEST: browser/modular Crypto standalone functions getDefaultCryptoParams +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data +root_hooks.js:31 START TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages +root_hooks.js:27 END TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages +root_hooks.js:31 START TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher +root_hooks.js:27 END TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher +root_hooks.js:31 START TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a65be137-ea65-4988-a871-d4601f7a4a4f","method":"transformInterceptedMessage","params":{"id":"d41349c4-dcf2-4891-bd49-57358eb566b7","connectionID":"2c42e539-e952-4229-af45-b141494f7023","type":"text","data":"{\"action\":4,\"connectionId\":\"nkeXTfQHbz\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!nkeXTfQHbzAXEchmWQRMHM-30f0\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a65be137-ea65-4988-a871-d4601f7a4a4f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'nkeXTfQHbz', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d41349c4-dcf2-4891-bd49-57358eb566b7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d41349c4-dcf2-4891-bd49-57358eb566b7 {action: 4, connectionId: 'nkeXTfQHbz', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a65be137-ea65-4988-a871-d4601f7a4a4f', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"af98e064-0cd6-43c2-9575-0143b9fa50b9","method":"transformInterceptedMessage","params":{"id":"11db565f-8e4c-4bdf-bf58-ac49013ca608","connectionID":"28667c02-f1f5-465c-9713-e236c0b68614","type":"text","data":"{\"action\":4,\"connectionId\":\"4R6ExL6DHx\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!4R6ExL6DHxAevOu2D5K5v9-30f1\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'af98e064-0cd6-43c2-9575-0143b9fa50b9', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '4R6ExL6DHx', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 11db565f-8e4c-4bdf-bf58-ac49013ca608 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 11db565f-8e4c-4bdf-bf58-ac49013ca608 {action: 4, connectionId: '4R6ExL6DHx', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'af98e064-0cd6-43c2-9575-0143b9fa50b9', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d3b94af3-8518-4545-83e7-cbfd4a13ef23","method":"transformInterceptedMessage","params":{"id":"b188428d-e048-4bd7-8a15-8cf79bf7c980","connectionID":"4e562498-1f6e-4511-a8a9-4e683468fe75","type":"text","data":"{\"action\":4,\"connectionId\":\"iRwMm2cUTL\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!iRwMm2cUTLAaud-mJ-bVH6-3270\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd3b94af3-8518-4545-83e7-cbfd4a13ef23', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'iRwMm2cUTL', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b188428d-e048-4bd7-8a15-8cf79bf7c980 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b188428d-e048-4bd7-8a15-8cf79bf7c980 {action: 4, connectionId: 'iRwMm2cUTL', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd3b94af3-8518-4545-83e7-cbfd4a13ef23', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ce414ea7-7c8a-4ee5-bf90-5795e59c8959","method":"transformInterceptedMessage","params":{"id":"bd0f9f4c-ec13-477b-9aea-b8cfb7887bcb","connectionID":"15d3c7c7-c92b-4be5-ab99-6bc8889b6350","type":"text","data":"{\"action\":4,\"connectionId\":\"o9yN-33Hxs\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!o9yN-33HxsAW1dqW1o0bh2-2843\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ce414ea7-7c8a-4ee5-bf90-5795e59c8959', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'o9yN-33Hxs', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bd0f9f4c-ec13-477b-9aea-b8cfb7887bcb unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bd0f9f4c-ec13-477b-9aea-b8cfb7887bcb {action: 4, connectionId: 'o9yN-33Hxs', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ce414ea7-7c8a-4ee5-bf90-5795e59c8959', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2792104b-e620-4cf5-9738-d6e04dc9bf0d","method":"transformInterceptedMessage","params":{"id":"4172f892-2c23-4f64-90b0-43eae04adf34","connectionID":"30432a6d-cd20-45f3-b85d-49336233affe","type":"text","data":"{\"action\":4,\"connectionId\":\"OiO5OICAjX\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!OiO5OICAjXAWM4y_6Uorsw-1c16\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2792104b-e620-4cf5-9738-d6e04dc9bf0d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'OiO5OICAjX', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 4172f892-2c23-4f64-90b0-43eae04adf34 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 4172f892-2c23-4f64-90b0-43eae04adf34 {action: 4, connectionId: 'OiO5OICAjX', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2792104b-e620-4cf5-9738-d6e04dc9bf0d', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"982eafb4-2cf2-4b04-b75a-f9f816011ae7","method":"transformInterceptedMessage","params":{"id":"b1cd0fad-9761-40e4-b19f-f212ebbdc2cf","connectionID":"5c6ad7ab-4f3e-4682-ba01-22ca3660ca0a","type":"text","data":"{\"action\":4,\"connectionId\":\"2i5W_qY6sX\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!2i5W_qY6sXAXdClpHM0GPn-2844\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '982eafb4-2cf2-4b04-b75a-f9f816011ae7', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '2i5W_qY6sX', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b1cd0fad-9761-40e4-b19f-f212ebbdc2cf unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b1cd0fad-9761-40e4-b19f-f212ebbdc2cf {action: 4, connectionId: '2i5W_qY6sX', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '982eafb4-2cf2-4b04-b75a-f9f816011ae7', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"61d5000f-bd34-413d-a3a5-9855d7dc046c","method":"transformInterceptedMessage","params":{"id":"f07c3c36-3bee-45ec-aa6f-8f77fe2c2609","connectionID":"2ca5b342-5fbf-4936-9ac7-e2e6f6515b00","type":"text","data":"{\"action\":4,\"connectionId\":\"ldGw9IPe3X\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!ldGw9IPe3XAY_EGFdlOFhA-1c17\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '61d5000f-bd34-413d-a3a5-9855d7dc046c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'ldGw9IPe3X', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f07c3c36-3bee-45ec-aa6f-8f77fe2c2609 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f07c3c36-3bee-45ec-aa6f-8f77fe2c2609 {action: 4, connectionId: 'ldGw9IPe3X', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '61d5000f-bd34-413d-a3a5-9855d7dc046c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7f341e36-3445-4375-9691-7d02e52848eb","method":"transformInterceptedMessage","params":{"id":"b82eb451-c029-4e34-b1b6-9a0fa41502bc","connectionID":"d1f60c1f-020f-4cb9-998b-9ce29681bb0e","type":"text","data":"{\"action\":4,\"connectionId\":\"LIG-WBitcf\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!LIG-WBitcfAbWo8m81VlFZ-30f2\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7f341e36-3445-4375-9691-7d02e52848eb', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'LIG-WBitcf', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b82eb451-c029-4e34-b1b6-9a0fa41502bc unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b82eb451-c029-4e34-b1b6-9a0fa41502bc {action: 4, connectionId: 'LIG-WBitcf', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7f341e36-3445-4375-9691-7d02e52848eb', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b0e8e4d3-cce4-4aa1-9c81-298148812354","method":"transformInterceptedMessage","params":{"id":"e01d95ca-4528-4717-b755-40478b033a08","connectionID":"7cdb4890-b428-4e55-aa47-6a4e57a1018c","type":"text","data":"{\"action\":4,\"connectionId\":\"8Z3wp9Uxe2\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!8Z3wp9Uxe2AeDy07XJ9xVX-1c18\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b0e8e4d3-cce4-4aa1-9c81-298148812354', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '8Z3wp9Uxe2', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e01d95ca-4528-4717-b755-40478b033a08 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e01d95ca-4528-4717-b755-40478b033a08 {action: 4, connectionId: '8Z3wp9Uxe2', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b0e8e4d3-cce4-4aa1-9c81-298148812354', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"71552d70-03e2-449d-a113-f4747afd4962","method":"transformInterceptedMessage","params":{"id":"8e0f4da3-d083-40cb-a13a-1aa57a470213","connectionID":"3ab448ff-4273-4a58-99c6-1c6a67cb7f87","type":"text","data":"{\"action\":4,\"connectionId\":\"B-8_1W7J8y\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!B-8_1W7J8yAVWTUZ0MIQ5T-1c19\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '71552d70-03e2-449d-a113-f4747afd4962', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'B-8_1W7J8y', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8e0f4da3-d083-40cb-a13a-1aa57a470213 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8e0f4da3-d083-40cb-a13a-1aa57a470213 {action: 4, connectionId: 'B-8_1W7J8y', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '71552d70-03e2-449d-a113-f4747afd4962', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2ef5f7ef-2788-474b-bd44-05751e3251f6","method":"transformInterceptedMessage","params":{"id":"fea9e105-8368-4de0-8632-15331ad6f244","connectionID":"ee3ef5cb-61ec-41a2-9463-6e4406b658fd","type":"text","data":"{\"action\":4,\"connectionId\":\"AXM1KTQJRK\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!AXM1KTQJRKAc6yRKh6SWQr-2746\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2ef5f7ef-2788-474b-bd44-05751e3251f6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'AXM1KTQJRK', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message fea9e105-8368-4de0-8632-15331ad6f244 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message fea9e105-8368-4de0-8632-15331ad6f244 {action: 4, connectionId: 'AXM1KTQJRK', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2ef5f7ef-2788-474b-bd44-05751e3251f6', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2d8f62af-f975-48cc-b957-b99930c1ab04","method":"transformInterceptedMessage","params":{"id":"df9129a2-d1b2-4f37-bc60-265b2dd31473","connectionID":"64058e61-f2d6-42d1-9a38-4c076a725099","type":"text","data":"{\"action\":4,\"connectionId\":\"LXGcgI0wz9\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!LXGcgI0wz9AYcEhJUTEDkY-1c1a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2d8f62af-f975-48cc-b957-b99930c1ab04', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'LXGcgI0wz9', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message df9129a2-d1b2-4f37-bc60-265b2dd31473 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message df9129a2-d1b2-4f37-bc60-265b2dd31473 {action: 4, connectionId: 'LXGcgI0wz9', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2d8f62af-f975-48cc-b957-b99930c1ab04', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"838f4ce1-5232-4546-afaa-39e2d6d51070","method":"transformInterceptedMessage","params":{"id":"f0d29b24-6774-43e1-b011-5fccd8ec8777","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":4,\"connectionId\":\"EpkgD6PR8F\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!EpkgD6PR8FAbbXImkCCzA5-30f3\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '838f4ce1-5232-4546-afaa-39e2d6d51070', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'EpkgD6PR8F', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f0d29b24-6774-43e1-b011-5fccd8ec8777 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f0d29b24-6774-43e1-b011-5fccd8ec8777 {action: 4, connectionId: 'EpkgD6PR8F', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '838f4ce1-5232-4546-afaa-39e2d6d51070', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"24278b88-d7b2-43ef-a02a-8dd8fad8f400","method":"transformInterceptedMessage","params":{"id":"08a0f041-6e2d-4723-b930-4be321817954","connectionID":"da02e9b5-3e31-449c-bd7f-250bab8d1e50","type":"text","data":"{\"action\":4,\"connectionId\":\"aIEfEuwPUb\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!aIEfEuwPUbAQssqNowBJ1O-3272\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '24278b88-d7b2-43ef-a02a-8dd8fad8f400', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'aIEfEuwPUb', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 08a0f041-6e2d-4723-b930-4be321817954 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 08a0f041-6e2d-4723-b930-4be321817954 {action: 4, connectionId: 'aIEfEuwPUb', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '24278b88-d7b2-43ef-a02a-8dd8fad8f400', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d489de60-c99c-43f8-8f06-4c9bdb68eb99","method":"transformInterceptedMessage","params":{"id":"c655e852-facd-4514-a55b-24c3e1b3ae3c","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd489de60-c99c-43f8-8f06-4c9bdb68eb99', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c655e852-facd-4514-a55b-24c3e1b3ae3c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c655e852-facd-4514-a55b-24c3e1b3ae3c {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd489de60-c99c-43f8-8f06-4c9bdb68eb99', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"55347b54-b1c1-4af2-bf74-2c68ddb48560","method":"transformInterceptedMessage","params":{"id":"8d05d9a6-1e5c-4489-812b-b4cc956b3127","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973570704-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '55347b54-b1c1-4af2-bf74-2c68ddb48560', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973570704-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8d05d9a6-1e5c-4489-812b-b4cc956b3127 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8d05d9a6-1e5c-4489-812b-b4cc956b3127 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973570704-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '55347b54-b1c1-4af2-bf74-2c68ddb48560', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b5f7eb3a-3bab-4709-bc7d-a27cfba87d19","method":"transformInterceptedMessage","params":{"id":"1edc2119-7a58-4196-857c-a6f72b142d58","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":15,\"id\":\"xw/mQ2EBJgTp\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973571730-0\",\"timestamp\":1715973571730,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"0wQGX2MnpnsWdWoZYhVHS1guJmHIyRkGAy4cr0wv9bQ=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b5f7eb3a-3bab-4709-bc7d-a27cfba87d19', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'xw/mQ2EBJgTp', connectionId: '', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973571730-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1edc2119-7a58-4196-857c-a6f72b142d58 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1edc2119-7a58-4196-857c-a6f72b142d58 {action: 15, id: 'xw/mQ2EBJgTp', connectionId: '', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973571730-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b5f7eb3a-3bab-4709-bc7d-a27cfba87d19', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c005d340-539e-4c9f-b259-ee1e67a3bd5f","method":"transformInterceptedMessage","params":{"id":"566f08e0-8dda-419d-aa12-4bada782f870","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":15,\"id\":\"xw/mQ2EBJgTp\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973571730-0\",\"timestamp\":1715973571730,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"0wQGX2MnpnsWdWoZYhVHS1guJmHIyRkGAy4cr0wv9bQ=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c005d340-539e-4c9f-b259-ee1e67a3bd5f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'xw/mQ2EBJgTp', connectionId: '', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973571730-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 566f08e0-8dda-419d-aa12-4bada782f870 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 566f08e0-8dda-419d-aa12-4bada782f870 {action: 15, id: 'xw/mQ2EBJgTp', connectionId: '', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973571730-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c005d340-539e-4c9f-b259-ee1e67a3bd5f', result: {…}} +root_hooks.js:27 END TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages +root_hooks.js:31 START TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"4e5aad69-6e59-43c8-991e-394ceaaf812f","method":"transformInterceptedMessage","params":{"id":"444491a1-2f44-4370-87ac-d86d24eb043e","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":4,\"connectionId\":\"iIZ0ykfpY2\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!iIZ0ykfpY2AUWhIvT04XNa-2846\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4e5aad69-6e59-43c8-991e-394ceaaf812f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'iIZ0ykfpY2', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 444491a1-2f44-4370-87ac-d86d24eb043e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 444491a1-2f44-4370-87ac-d86d24eb043e {action: 4, connectionId: 'iIZ0ykfpY2', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4e5aad69-6e59-43c8-991e-394ceaaf812f', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e805838c-a280-4c33-942a-c7607777c7dc","method":"transformInterceptedMessage","params":{"id":"910b50eb-7306-43e9-b9bd-11388e4beef5","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e805838c-a280-4c33-942a-c7607777c7dc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 910b50eb-7306-43e9-b9bd-11388e4beef5 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 910b50eb-7306-43e9-b9bd-11388e4beef5 {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e805838c-a280-4c33-942a-c7607777c7dc', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"629d87ae-2d5d-438d-bcf2-d124f1343f04","method":"transformInterceptedMessage","params":{"id":"c08028c1-c24d-4598-b53f-35347dfdfb45","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973571730-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '629d87ae-2d5d-438d-bcf2-d124f1343f04', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973571730-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c08028c1-c24d-4598-b53f-35347dfdfb45 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c08028c1-c24d-4598-b53f-35347dfdfb45 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973571730-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '629d87ae-2d5d-438d-bcf2-d124f1343f04', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"350dbfc6-7409-4f68-8286-7564bd598365","method":"transformInterceptedMessage","params":{"id":"a003c00a-2f51-4405-bfd5-210f83c993ee","connectionID":"bf0e9c66-0ab4-4a21-a1fe-adcf46d4f271","type":"text","data":"{\"action\":4,\"connectionId\":\"dEvLqj3Zvt\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!dEvLqj3ZvtARvxxN70Lz2Y-3275\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '350dbfc6-7409-4f68-8286-7564bd598365', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'dEvLqj3Zvt', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a003c00a-2f51-4405-bfd5-210f83c993ee unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a003c00a-2f51-4405-bfd5-210f83c993ee {action: 4, connectionId: 'dEvLqj3Zvt', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '350dbfc6-7409-4f68-8286-7564bd598365', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0eda989e-2d5a-4db6-916f-4f1b70c8e84b","method":"transformInterceptedMessage","params":{"id":"d8ed6377-ab32-4ef1-bafa-0185442f98b3","connectionID":"bf0e9c66-0ab4-4a21-a1fe-adcf46d4f271","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JO2HuY90IvmUENoM2NAIoPTHZmKNTl1mibQPmuV383E=\"}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0eda989e-2d5a-4db6-916f-4f1b70c8e84b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d8ed6377-ab32-4ef1-bafa-0185442f98b3 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d8ed6377-ab32-4ef1-bafa-0185442f98b3 {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0eda989e-2d5a-4db6-916f-4f1b70c8e84b', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"3cb887fc-e21e-4992-97d4-3d5ad272ddbc","method":"transformInterceptedMessage","params":{"id":"22c06406-b850-4841-96e8-5ec424326dfd","connectionID":"bf0e9c66-0ab4-4a21-a1fe-adcf46d4f271","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3cb887fc-e21e-4992-97d4-3d5ad272ddbc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 22c06406-b850-4841-96e8-5ec424326dfd unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 22c06406-b850-4841-96e8-5ec424326dfd {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3cb887fc-e21e-4992-97d4-3d5ad272ddbc', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"63a78702-55bc-495b-b0f4-21ed23370805","method":"transformInterceptedMessage","params":{"id":"8a226573-5d97-4672-9496-b16fb3c7bf64","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":15,\"id\":\"dEvLqj3Zvt:0\",\"connectionId\":\"dEvLqj3Zvt\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973573020-0\",\"timestamp\":1715973573020,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JO2HuY90IvmUENoM2NAIoPTHZmKNTl1mibQPmuV383E=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '63a78702-55bc-495b-b0f4-21ed23370805', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'dEvLqj3Zvt:0', connectionId: 'dEvLqj3Zvt', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8a226573-5d97-4672-9496-b16fb3c7bf64 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8a226573-5d97-4672-9496-b16fb3c7bf64 {action: 15, id: 'dEvLqj3Zvt:0', connectionId: 'dEvLqj3Zvt', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '63a78702-55bc-495b-b0f4-21ed23370805', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"395647e1-50c6-4838-bdb8-d74d426c3eb6","method":"transformInterceptedMessage","params":{"id":"1a4ca325-5e4d-4298-971a-c016c7ac6f8a","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":15,\"id\":\"dEvLqj3Zvt:0\",\"connectionId\":\"dEvLqj3Zvt\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973573020-0\",\"timestamp\":1715973573020,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JO2HuY90IvmUENoM2NAIoPTHZmKNTl1mibQPmuV383E=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '395647e1-50c6-4838-bdb8-d74d426c3eb6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'dEvLqj3Zvt:0', connectionId: 'dEvLqj3Zvt', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1a4ca325-5e4d-4298-971a-c016c7ac6f8a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1a4ca325-5e4d-4298-971a-c016c7ac6f8a {action: 15, id: 'dEvLqj3Zvt:0', connectionId: 'dEvLqj3Zvt', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '395647e1-50c6-4838-bdb8-d74d426c3eb6', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fdba1d1d-bfe9-4c6d-935f-422f4fdd94c1","method":"transformInterceptedMessage","params":{"id":"e31089bd-56bf-4cf6-8fd1-e809ff167ab3","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":15,\"id\":\"dEvLqj3Zvt:0\",\"connectionId\":\"dEvLqj3Zvt\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973573020-0\",\"timestamp\":1715973573020,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"JO2HuY90IvmUENoM2NAIoPTHZmKNTl1mibQPmuV383E=\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'fdba1d1d-bfe9-4c6d-935f-422f4fdd94c1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'dEvLqj3Zvt:0', connectionId: 'dEvLqj3Zvt', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e31089bd-56bf-4cf6-8fd1-e809ff167ab3 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e31089bd-56bf-4cf6-8fd1-e809ff167ab3 {action: 15, id: 'dEvLqj3Zvt:0', connectionId: 'dEvLqj3Zvt', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'fdba1d1d-bfe9-4c6d-935f-422f4fdd94c1', result: {…}} +root_hooks.js:27 END TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack +root_hooks.js:31 START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack +root_hooks.js:27 END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0abefdba-d525-4e5c-8692-ab58d1b69ff5","method":"transformInterceptedMessage","params":{"id":"caa2f2d5-8c2e-4ba5-8e59-43edc9115d12","connectionID":"3c2bf721-6d09-4435-9920-b89dd8170cb5","type":"text","data":"{\"action\":4,\"connectionId\":\"OqaI0kR1fW\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!OqaI0kR1fWAWQywBHz8IHb-2750\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0abefdba-d525-4e5c-8692-ab58d1b69ff5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'OqaI0kR1fW', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message caa2f2d5-8c2e-4ba5-8e59-43edc9115d12 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message caa2f2d5-8c2e-4ba5-8e59-43edc9115d12 {action: 4, connectionId: 'OqaI0kR1fW', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0abefdba-d525-4e5c-8692-ab58d1b69ff5', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"03b7ed08-5239-4658-9517-c8fb2abb0621","method":"transformInterceptedMessage","params":{"id":"e63f1c47-f66b-410d-98ba-2b40dd1ef885","connectionID":"82521312-911a-450b-963f-f4f701153a78","type":"text","data":"{\"action\":4,\"connectionId\":\"fqM_MYubQD\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!fqM_MYubQDAf4vxPd6moUW-1c1d\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '03b7ed08-5239-4658-9517-c8fb2abb0621', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'fqM_MYubQD', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e63f1c47-f66b-410d-98ba-2b40dd1ef885 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e63f1c47-f66b-410d-98ba-2b40dd1ef885 {action: 4, connectionId: 'fqM_MYubQD', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '03b7ed08-5239-4658-9517-c8fb2abb0621', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e4349ef8-0b46-40a1-8e76-e09ca894f865","method":"transformInterceptedMessage","params":{"id":"1c48c834-6718-4187-a852-745a68115546","connectionID":"82521312-911a-450b-963f-f4f701153a78","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e4349ef8-0b46-40a1-8e76-e09ca894f865', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1c48c834-6718-4187-a852-745a68115546 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1c48c834-6718-4187-a852-745a68115546 {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e4349ef8-0b46-40a1-8e76-e09ca894f865', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"bd59f747-e203-40fc-8b86-e3766af916a4","method":"transformInterceptedMessage","params":{"id":"bca318b4-028a-4fd9-9bf8-53574d8a9ec2","connectionID":"82521312-911a-450b-963f-f4f701153a78","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973573020-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bd59f747-e203-40fc-8b86-e3766af916a4', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bca318b4-028a-4fd9-9bf8-53574d8a9ec2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bca318b4-028a-4fd9-9bf8-53574d8a9ec2 {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973573020-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bd59f747-e203-40fc-8b86-e3766af916a4', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"eeb9694e-7a0f-4edb-a53e-2ca5eda3d84b","method":"transformInterceptedMessage","params":{"id":"783541a9-8bdb-42e3-b32a-bc5c3e37d3bc","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":4,\"connectionId\":\"cucYdmrmiW\",\"connectionDetails\":{\"clientId\":\"6395192366358495\",\"connectionKey\":\"e7dbIQeoABc0Cm!cucYdmrmiWAY6eOtBnQuYv-2752\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'eeb9694e-7a0f-4edb-a53e-2ca5eda3d84b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: 'cucYdmrmiW', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 783541a9-8bdb-42e3-b32a-bc5c3e37d3bc unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 783541a9-8bdb-42e3-b32a-bc5c3e37d3bc {action: 4, connectionId: 'cucYdmrmiW', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'eeb9694e-7a0f-4edb-a53e-2ca5eda3d84b', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d587e30b-81aa-4174-9bdc-2ce458386c4e","method":"transformInterceptedMessage","params":{"id":"0d112b5e-20f4-4f46-9ad3-2bb604326d28","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"data\":\"body\"}],\"msgSerial\":0}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd587e30b-81aa-4174-9bdc-2ce458386c4e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0d112b5e-20f4-4f46-9ad3-2bb604326d28 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0d112b5e-20f4-4f46-9ad3-2bb604326d28 {action: 15, channel: 'channel', messages: Array(1), msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd587e30b-81aa-4174-9bdc-2ce458386c4e', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"bb68135b-a0fa-488e-81ee-e669ac01260c","method":"transformInterceptedMessage","params":{"id":"1965e1ba-22ce-43fa-afec-ec9fab259fd8","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":15,\"id\":\"cucYdmrmiW:0\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574432-0\",\"timestamp\":1715973574432,\"messages\":[{\"clientId\":\"6395192366358495\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bb68135b-a0fa-488e-81ee-e669ac01260c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1965e1ba-22ce-43fa-afec-ec9fab259fd8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1965e1ba-22ce-43fa-afec-ec9fab259fd8 {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bb68135b-a0fa-488e-81ee-e669ac01260c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"82f5c8a2-5eaf-43e1-b628-bbc7b5b31214","method":"transformInterceptedMessage","params":{"id":"ef92abe2-456d-4d58-a4a2-72e2573a7e97","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '82f5c8a2-5eaf-43e1-b628-bbc7b5b31214', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ef92abe2-456d-4d58-a4a2-72e2573a7e97 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ef92abe2-456d-4d58-a4a2-72e2573a7e97 {action: 1, count: 1, msgSerial: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '82f5c8a2-5eaf-43e1-b628-bbc7b5b31214', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8350a7af-777f-435a-bf9a-bf147a657f1a","method":"transformInterceptedMessage","params":{"id":"8320692a-7421-40c3-bd41-9fbe0a9ac8d6","connectionID":"82521312-911a-450b-963f-f4f701153a78","type":"text","data":"{\"action\":15,\"id\":\"cucYdmrmiW:0\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574432-0\",\"timestamp\":1715973574432,\"messages\":[{\"clientId\":\"6395192366358495\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8350a7af-777f-435a-bf9a-bf147a657f1a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8320692a-7421-40c3-bd41-9fbe0a9ac8d6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8320692a-7421-40c3-bd41-9fbe0a9ac8d6 {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8350a7af-777f-435a-bf9a-bf147a657f1a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"60c13152-79dd-4bfc-a57e-707cbed4216d","method":"transformInterceptedMessage","params":{"id":"b650b845-b48c-43a0-a2e5-cda7d1de34f4","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":15,\"id\":\"cucYdmrmiW:0\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574432-0\",\"timestamp\":1715973574432,\"messages\":[{\"clientId\":\"6395192366358495\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '60c13152-79dd-4bfc-a57e-707cbed4216d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b650b845-b48c-43a0-a2e5-cda7d1de34f4 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b650b845-b48c-43a0-a2e5-cda7d1de34f4 {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '60c13152-79dd-4bfc-a57e-707cbed4216d', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d555b415-3c7d-4512-be4e-67928e47e0ab","method":"transformInterceptedMessage","params":{"id":"f55ce571-640e-4b3e-9d7e-6cc64ee6a357","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":15,\"id\":\"cucYdmrmiW:0\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574432-0\",\"timestamp\":1715973574432,\"messages\":[{\"clientId\":\"6395192366358495\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd555b415-3c7d-4512-be4e-67928e47e0ab', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f55ce571-640e-4b3e-9d7e-6cc64ee6a357 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f55ce571-640e-4b3e-9d7e-6cc64ee6a357 {action: 15, id: 'cucYdmrmiW:0', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd555b415-3c7d-4512-be4e-67928e47e0ab', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1e091413-13b0-480b-a21a-44fe2bd3ccb1","method":"transformInterceptedMessage","params":{"id":"1583749c-7db3-47c8-8c1a-43a0a0df796c","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '1e091413-13b0-480b-a21a-44fe2bd3ccb1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1583749c-7db3-47c8-8c1a-43a0a0df796c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1583749c-7db3-47c8-8c1a-43a0a0df796c {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '1e091413-13b0-480b-a21a-44fe2bd3ccb1', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2f6c27a1-fe94-4451-917b-71af2c16d452","method":"transformInterceptedMessage","params":{"id":"313de074-4661-4994-8dfb-a26f417bef3e","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574432-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2f6c27a1-fe94-4451-917b-71af2c16d452', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 313de074-4661-4994-8dfb-a26f417bef3e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 313de074-4661-4994-8dfb-a26f417bef3e {action: 11, flags: 983104, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574432-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2f6c27a1-fe94-4451-917b-71af2c16d452', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"12dfdcf7-52a7-47db-a46f-6796f73894ea","method":"transformInterceptedMessage","params":{"id":"545309e8-85e7-4421-b10c-db04e1084df8","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":14,\"channel\":\"channel\",\"presence\":[{\"action\":2}],\"msgSerial\":1}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '12dfdcf7-52a7-47db-a46f-6796f73894ea', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, channel: 'channel', presence: Array(1), msgSerial: 1} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 545309e8-85e7-4421-b10c-db04e1084df8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 545309e8-85e7-4421-b10c-db04e1084df8 {action: 14, channel: 'channel', presence: Array(1), msgSerial: 1} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '12dfdcf7-52a7-47db-a46f-6796f73894ea', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8ecc6758-4791-4e87-b5b0-bb8ed9801940","method":"transformInterceptedMessage","params":{"id":"5585037a-cdba-4fcd-adf6-a4d73c3c4d64","connectionID":"82521312-911a-450b-963f-f4f701153a78","type":"text","data":"{\"action\":14,\"id\":\"cucYdmrmiW:1\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574686-0\",\"timestamp\":1715973574686,\"presence\":[{\"id\":\"cucYdmrmiW:1:0\",\"clientId\":\"6395192366358495\",\"connectionId\":\"cucYdmrmiW\",\"timestamp\":1715973574686,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8ecc6758-4791-4e87-b5b0-bb8ed9801940', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 5585037a-cdba-4fcd-adf6-a4d73c3c4d64 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 5585037a-cdba-4fcd-adf6-a4d73c3c4d64 {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8ecc6758-4791-4e87-b5b0-bb8ed9801940', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"741fae21-4b92-451a-bea7-b5b0c8f943e8","method":"transformInterceptedMessage","params":{"id":"fdb5c219-07f3-461c-9bbf-5c1eb1e78547","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":14,\"id\":\"cucYdmrmiW:1\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574686-0\",\"timestamp\":1715973574686,\"presence\":[{\"id\":\"cucYdmrmiW:1:0\",\"clientId\":\"6395192366358495\",\"connectionId\":\"cucYdmrmiW\",\"timestamp\":1715973574686,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '741fae21-4b92-451a-bea7-b5b0c8f943e8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message fdb5c219-07f3-461c-9bbf-5c1eb1e78547 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message fdb5c219-07f3-461c-9bbf-5c1eb1e78547 {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '741fae21-4b92-451a-bea7-b5b0c8f943e8', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"05985a0c-13d2-4d69-8055-e9b4facc9ee3","method":"transformInterceptedMessage","params":{"id":"dbe29800-0f51-48ad-a66b-b64153bb6853","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":14,\"id\":\"cucYdmrmiW:1\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574686-0\",\"timestamp\":1715973574686,\"presence\":[{\"id\":\"cucYdmrmiW:1:0\",\"clientId\":\"6395192366358495\",\"connectionId\":\"cucYdmrmiW\",\"timestamp\":1715973574686,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '05985a0c-13d2-4d69-8055-e9b4facc9ee3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message dbe29800-0f51-48ad-a66b-b64153bb6853 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message dbe29800-0f51-48ad-a66b-b64153bb6853 {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '05985a0c-13d2-4d69-8055-e9b4facc9ee3', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"116b714e-5c2f-4c5a-bd0b-6263361efe15","method":"transformInterceptedMessage","params":{"id":"68ad5a00-5225-4833-9d1a-a4768b6a9c99","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":14,\"id\":\"cucYdmrmiW:1\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574686-0\",\"timestamp\":1715973574686,\"presence\":[{\"id\":\"cucYdmrmiW:1:0\",\"clientId\":\"6395192366358495\",\"connectionId\":\"cucYdmrmiW\",\"timestamp\":1715973574686,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '116b714e-5c2f-4c5a-bd0b-6263361efe15', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 68ad5a00-5225-4833-9d1a-a4768b6a9c99 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 68ad5a00-5225-4833-9d1a-a4768b6a9c99 {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '116b714e-5c2f-4c5a-bd0b-6263361efe15', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6be38eb5-b756-4938-97d3-67bd506eae64","method":"transformInterceptedMessage","params":{"id":"1b234a4e-5bd5-44dd-9813-b3522239f057","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":14,\"id\":\"cucYdmrmiW:1\",\"connectionId\":\"cucYdmrmiW\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574686-0\",\"timestamp\":1715973574686,\"presence\":[{\"id\":\"cucYdmrmiW:1:0\",\"clientId\":\"6395192366358495\",\"connectionId\":\"cucYdmrmiW\",\"timestamp\":1715973574686,\"action\":2}]}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6be38eb5-b756-4938-97d3-67bd506eae64', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1b234a4e-5bd5-44dd-9813-b3522239f057 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1b234a4e-5bd5-44dd-9813-b3522239f057 {action: 14, id: 'cucYdmrmiW:1', connectionId: 'cucYdmrmiW', channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0', …} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6be38eb5-b756-4938-97d3-67bd506eae64', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7f5d1922-70a2-486c-bd03-af0a04444368","method":"transformInterceptedMessage","params":{"id":"afa3b124-8c87-412b-b818-0b5ffd08fdcd","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":1}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7f5d1922-70a2-486c-bd03-af0a04444368', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 1, count: 1, msgSerial: 1} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message afa3b124-8c87-412b-b818-0b5ffd08fdcd unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message afa3b124-8c87-412b-b818-0b5ffd08fdcd {action: 1, count: 1, msgSerial: 1} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7f5d1922-70a2-486c-bd03-af0a04444368', result: {…}} +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage +root_hooks.js:31 START TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality +modular.test.js:580 rxChannel: Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"plugins":{"RealtimePresence":{}},"key":"_tmp_-mDp8g.YFggfw:xCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms"} +modular.test.js:580 rxChannel: Ably: BaseClient(): started; version = 2.0.4 +modular.test.js:580 rxChannel: Ably: Auth(): anonymous, using basic auth +modular.test.js:580 rxChannel: Ably: Realtime(): +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): started +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): available transports = [web_socket] +modular.test.js:580 rxChannel: Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] +modular.test.js:580 rxChannel: Ably: Realtime.connect(): +modular.test.js:580 rxChannel: Ably: Connection.connect(): +modular.test.js:580 rxChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:580 rxChannel: Ably: RealtimeChannel(): started; name = channel +modular.test.js:592 txChannel: Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"clientId":"783025333487996","plugins":{"RealtimePresence":{}},"key":"_tmp_-mDp8g.YFggfw:xCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms"} +modular.test.js:592 txChannel: Ably: BaseClient(): started; version = 2.0.4 +modular.test.js:592 txChannel: Ably: Auth(): anonymous, using basic auth +modular.test.js:592 txChannel: Ably: Realtime(): +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): started +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): available transports = [web_socket] +modular.test.js:592 txChannel: Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] +modular.test.js:592 txChannel: Ably: Realtime.connect(): +modular.test.js:592 txChannel: Ably: Connection.connect(): +modular.test.js:592 txChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:592 txChannel: Ably: RealtimeChannel(): started; name = channel +modular.test.js:607 LAWRENCE: begin waiting for presence subscribe +modular.test.js:580 rxChannel: Ably: RealtimeChannel.requestState: name = channel, state = attaching +modular.test.js:580 rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": attaching +modular.test.js:580 rxChannel: Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:580 rxChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:580 rxChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_-mDp8g.YFggfw:xCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms; err: null +modular.test.js:580 rxChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:592 txChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:592 txChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:592 txChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] +modular.test.js:592 txChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:592 txChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:592 txChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_-mDp8g.YFggfw:xCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms; err: null +modular.test.js:592 txChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&clientId=783025333487996&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:580 rxChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:580 rxChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"da308bf1-0d66-41be-80e2-feb210b3f75c","method":"transformInterceptedMessage","params":{"id":"9fdb0c8c-9c86-4a83-a529-cea9bfc577f0","connectionID":"9af9348c-17b9-408f-8647-4a58a68fea25","type":"text","data":"{\"action\":4,\"connectionId\":\"3g_SVgjirR\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'da308bf1-0d66-41be-80e2-feb210b3f75c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 4, connectionId: '3g_SVgjirR', connectionDetails: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 9fdb0c8c-9c86-4a83-a529-cea9bfc577f0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 9fdb0c8c-9c86-4a83-a529-cea9bfc577f0 {action: 4, connectionId: '3g_SVgjirR', connectionDetails: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'da308bf1-0d66-41be-80e2-feb210b3f75c', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 354; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=3g_SVgjirR]; connectionId = undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): connectionId = 3g_SVgjirR +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): connectionDetails = {"clientId":"*","connectionKey":"e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23","maxMessageSize":16384,"maxInboundRate":250,"maxOutboundRate":100,"maxFrameSize":262144,"serverId":"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei","connectionStateTtl":120000,"maxIdleInterval":15000} +modular.test.js:580 rxChannel: Ably: ConnectionManager.activateTransport(): current state = connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.setConnection(): New connectionId; reattaching any attached channels +modular.test.js:580 rxChannel: Ably: ConnectionManager.notifyState(): new state: connected +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: connected +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connected; reason = undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.sendQueuedMessages(): sending 0 queued messages +modular.test.js:580 rxChannel: Ably: RealtimeChannel.checkPendingState: name = channel, state = attaching +modular.test.js:580 rxChannel: Ably: RealtimeChannel.attachImpl(): sending ATTACH message +modular.test.js:580 rxChannel: Ably: ConnectionManager.send(): sending event +modular.test.js:580 rxChannel: Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a7b21aea-f700-40b3-bcad-f7e7da6a2cf8","method":"transformInterceptedMessage","params":{"id":"26a60405-76f6-4f41-a149-3a7f4873c19a","connectionID":"9af9348c-17b9-408f-8647-4a58a68fea25","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a7b21aea-f700-40b3-bcad-f7e7da6a2cf8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 10, channel: 'channel'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 26a60405-76f6-4f41-a149-3a7f4873c19a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 26a60405-76f6-4f41-a149-3a7f4873c19a {action: 10, channel: 'channel'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a7b21aea-f700-40b3-bcad-f7e7da6a2cf8', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7b910ee2-56dd-48a1-9236-eac8b1911b24","method":"transformInterceptedMessage","params":{"id":"e4d40569-3dc8-46fd-8886-239147277b5d","connectionID":"9af9348c-17b9-408f-8647-4a58a68fea25","type":"text","data":"{\"action\":11,\"flags\":983105,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq76553928@1715973574686-0\"}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7b910ee2-56dd-48a1-9236-eac8b1911b24', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 11, flags: 983105, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0'} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e4d40569-3dc8-46fd-8886-239147277b5d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e4d40569-3dc8-46fd-8886-239147277b5d {action: 11, flags: 983105, channel: 'channel', channelSerial: 'e7dP5PvyABc0Cq76553928@1715973574686-0'} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7b910ee2-56dd-48a1-9236-eac8b1911b24', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"df212e45-3804-44cd-99b2-62f018a778d4","method":"transformInterceptedMessage","params":{"id":"acf13831-bf4c-4ec9-8e04-d0be615667d2","connectionID":"9af9348c-17b9-408f-8647-4a58a68fea25","type":"text","data":"{\"action\":16,\"channel\":\"channel\",\"channelSerial\":\"e7dNIPVFABc0Ei98690144:\",\"presence\":[{\"id\":\"cucYdmrmiW:1:0\",\"clientId\":\"6395192366358495\",\"connectionId\":\"cucYdmrmiW\",\"timestamp\":1715973574686,\"action\":1}],\"count\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'df212e45-3804-44cd-99b2-62f018a778d4', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 16, channel: 'channel', channelSerial: 'e7dNIPVFABc0Ei98690144:', presence: Array(1), count: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message acf13831-bf4c-4ec9-8e04-d0be615667d2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message acf13831-bf4c-4ec9-8e04-d0be615667d2 {action: 16, channel: 'channel', channelSerial: 'e7dNIPVFABc0Ei98690144:', presence: Array(1), count: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'df212e45-3804-44cd-99b2-62f018a778d4', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 105; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7dP5PvyABc0Cq76553928@1715973574686-0; flags=HAS_PRESENCE,PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = 3g_SVgjirR +modular.test.js:580 rxChannel: Ably: RealtimeChannel.setChannelSerial(): Updating channel serial; serial = e7dP5PvyABc0Cq76553928@1715973574686-0; previous = undefined +modular.test.js:580 rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attaching, notifying state attached +modular.test.js:580 rxChannel: Ably: RealtimePresence.onAttached(): channel = channel, hasPresence = true +modular.test.js:580 rxChannel: Ably: PresenceMap.startSync(): channel = channel; syncInProgress = false +modular.test.js:580 rxChannel: Ably: PresenceMap.setInProgress(): inProgress = true +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": attached +modular.test.js:580 rxChannel: Ably: RealtimeChannel.onAttached: activating channel; name = channel +modular.test.js:609 LAWRENCE: end waiting for presence subscribe +modular.test.js:610 LAWRENCE: begin waiting for presence enter +modular.test.js:611 LAWRENCE: txChannel.presence.enter is ƒ async enter(data) { + logger_default.logAction(this.logger, logger_default.LOG_DEBUG, "RealtimePresence.enter"); + if (isAnonymousOrWildcard(this)) { + throw new ErrorInfo("clientId must be s… +modular.test.js:592 txChannel: Ably: RealtimePresence.enter: undefined +modular.test.js:592 txChannel: Ably: RealtimePresence._enterOrUpdateClient: undefined +modular.test.js:592 txChannel: Ably: RealtimePresence.enterClient(): channel = channel, id = undefined, client = (implicit) 783025333487996 +modular.test.js:592 txChannel: Ably: RealtimeChannel.requestState: name = channel, state = attaching +modular.test.js:592 txChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching +modular.test.js:592 txChannel: Ably: Channel state for channel "channel": attaching +modular.test.js:592 txChannel: Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 217; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=SYNC; channel=channel; channelSerial=e7dNIPVFABc0Ei98690144:; count=0; presence=[ [PresenceMessage; action=present; id=cucYdmrmiW:1:0; timestamp=1715973574686; clientId=6395192366358495; connectionId=cucYdmrmiW] ]]; connectionId = 3g_SVgjirR +modular.test.js:580 rxChannel: Ably: RealtimePresence.setPresence(): received presence for 1 participants; syncChannelSerial = e7dNIPVFABc0Ei98690144: +modular.test.js:580 rxChannel: Ably: PresenceMap.startSync(): channel = channel; syncInProgress = true +modular.test.js:580 rxChannel: Ably: PresenceMap.endSync(): channel = channel; syncInProgress = true +modular.test.js:580 rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket slow timer: checking connectivity +modular.test.js:592 txChannel: Ably: (Fetch)Http.checkConnectivity(): Sending; https://internet-up.ably-realtime.com/is-the-internet-up.txt +modular.test.js:592 txChannel: Ably: (Fetch)Http.checkConnectivity(): Result: true +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket slow timer: http connectivity check succeeded +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"22c24873-6889-4f66-a488-2febcc60954c","method":"transformInterceptedMessage","params":{"id":"ca0da23c-6784-4af3-9325-ac5537bde6fa","connectionID":"31f0c7d3-133c-4bc3-9297-c198f559fed0","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '22c24873-6889-4f66-a488-2febcc60954c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ca0da23c-6784-4af3-9325-ac5537bde6fa unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ca0da23c-6784-4af3-9325-ac5537bde6fa {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '22c24873-6889-4f66-a488-2febcc60954c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2417686f-5c88-4691-ba63-a0219e4267dc","method":"transformInterceptedMessage","params":{"id":"bfa992b6-4b6c-42a9-baa6-97e3f0068a95","connectionID":"6850246b-8d36-4d88-b751-04867a4bf5ac","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2417686f-5c88-4691-ba63-a0219e4267dc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bfa992b6-4b6c-42a9-baa6-97e3f0068a95 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bfa992b6-4b6c-42a9-baa6-97e3f0068a95 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2417686f-5c88-4691-ba63-a0219e4267dc', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"839a0580-9eb6-47af-a2f2-c1d38713bc69","method":"transformInterceptedMessage","params":{"id":"11af65b4-02b7-457c-a271-534b3c514720","connectionID":"82562167-a4ba-4b82-bfd3-5af71a78572c","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '839a0580-9eb6-47af-a2f2-c1d38713bc69', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 11af65b4-02b7-457c-a271-534b3c514720 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 11af65b4-02b7-457c-a271-534b3c514720 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '839a0580-9eb6-47af-a2f2-c1d38713bc69', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"055b3868-e173-4454-8ce0-c34954a06690","method":"transformInterceptedMessage","params":{"id":"2fba6a95-7c03-493d-bc1b-957829bbcda8","connectionID":"162632c5-d822-44b6-98cf-dafb225f89e1","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '055b3868-e173-4454-8ce0-c34954a06690', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 2fba6a95-7c03-493d-bc1b-957829bbcda8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 2fba6a95-7c03-493d-bc1b-957829bbcda8 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '055b3868-e173-4454-8ce0-c34954a06690', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"38da2b05-5a08-46ca-a769-e3e722e76e45","method":"transformInterceptedMessage","params":{"id":"df4705ff-815f-4c5e-98d8-661b4dbc27b7","connectionID":"e335f372-842a-4aab-929b-bb240ee25bd2","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '38da2b05-5a08-46ca-a769-e3e722e76e45', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message df4705ff-815f-4c5e-98d8-661b4dbc27b7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message df4705ff-815f-4c5e-98d8-661b4dbc27b7 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '38da2b05-5a08-46ca-a769-e3e722e76e45', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6a7b97d6-6c3e-419f-879a-9cd8c4ad25bd","method":"transformInterceptedMessage","params":{"id":"c647c16e-aec6-4175-b7dd-8fefcb4f8fe5","connectionID":"d2bb0ee6-8a95-4fcd-bf45-2904e20c5178","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6a7b97d6-6c3e-419f-879a-9cd8c4ad25bd', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c647c16e-aec6-4175-b7dd-8fefcb4f8fe5 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c647c16e-aec6-4175-b7dd-8fefcb4f8fe5 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6a7b97d6-6c3e-419f-879a-9cd8c4ad25bd', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"abb5e8f0-7c34-485c-a468-a032b6fe16e7","method":"transformInterceptedMessage","params":{"id":"4248a190-eba9-4b2b-8c9f-68358800dcc1","connectionID":"db83ced7-7dc6-4370-978d-f308cb226a66","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'abb5e8f0-7c34-485c-a468-a032b6fe16e7', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 4248a190-eba9-4b2b-8c9f-68358800dcc1 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 4248a190-eba9-4b2b-8c9f-68358800dcc1 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'abb5e8f0-7c34-485c-a468-a032b6fe16e7', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7f425c48-c981-4535-8d73-09b09daedccc","method":"transformInterceptedMessage","params":{"id":"38457038-a041-48fb-aa51-f45fcdfb037a","connectionID":"79ca26d7-2d12-4423-b49d-09a3bac53f31","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7f425c48-c981-4535-8d73-09b09daedccc', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 38457038-a041-48fb-aa51-f45fcdfb037a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 38457038-a041-48fb-aa51-f45fcdfb037a {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7f425c48-c981-4535-8d73-09b09daedccc', result: {…}} +root_hooks.js:27 END TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ec0f21ae-7fa9-4343-92cf-3dae28afa2b0","method":"transformInterceptedMessage","params":{"id":"a34963ec-abe1-4f03-96d6-86897a24dd41","connectionID":"418c6412-5c42-4148-96f6-626f74a26577","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ec0f21ae-7fa9-4343-92cf-3dae28afa2b0', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a34963ec-abe1-4f03-96d6-86897a24dd41 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a34963ec-abe1-4f03-96d6-86897a24dd41 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ec0f21ae-7fa9-4343-92cf-3dae28afa2b0', result: {…}} +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket give up timer: websocket connection took more than 10s; +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket give up timer: websocket connectivity appears to be unavailable but no other transports to try +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: ConnectionManager.tryATransport(): transport web_socket disconnected, err: [_ErrorInfo: Timeout waiting for transport to indicate itself viable; statusCode=500; code=50000] +modular.test.js:592 txChannel: Ably: ConnectionManager.notifyState(): new state: disconnected +modular.test.js:592 txChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:592 txChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Unable to connect (and no more fallback hosts to try); statusCode=404; code=80003] +modular.test.js:592 txChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Unable to connect (and no more fallback hosts to try) +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): closing websocket +websockettransport.ts:220 WebSocket connection to 'wss://sandbox-realtime.ably.io/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&clientId=783025333487996&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser' failed: WebSocket is closed before the connection is established. +(anonymous) @ websockettransport.ts:220 +setTimeout (async) +Config.nextTick @ config.ts:63 +dispose @ websockettransport.ts:215 +(anonymous) @ transport.ts:315 +setTimeout (async) +tryConnect @ transport.ts:313 +tryATransport @ connectionmanager.ts:499 +tryTransportWithFallbacks @ connectionmanager.ts:1615 +connectWs @ connectionmanager.ts:1507 +connectImpl @ connectionmanager.ts:1485 +(anonymous) @ connectionmanager.ts:1393 +(anonymous) @ connectionmanager.ts:486 +decideMode @ connectionmanager.ts:462 +getTransportParams @ connectionmanager.ts:465 +connect @ connectionmanager.ts:1382 +startConnect @ connectionmanager.ts:1402 +(anonymous) @ connectionmanager.ts:1351 +setTimeout (async) +Config.nextTick @ config.ts:63 +requestState @ connectionmanager.ts:1350 +connect @ connection.ts:46 +connect @ baserealtime.ts:82 +_BaseRealtime @ baserealtime.ts:60 +(anonymous) @ modular.test.js:590 +callFn @ mocha.js:22155 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Promise.then (async) +callFn @ mocha.js:22159 +Runnable.run @ mocha.js:22141 +Runner.runTest @ mocha.js:23779 +(anonymous) @ mocha.js:23910 +next @ mocha.js:23687 +(anonymous) @ mocha.js:23697 +next @ mocha.js:23572 +(anonymous) @ mocha.js:23664 +timeslice @ mocha.js:29987 +setTimeout (async) +mocha.Runner.immediately @ mocha.js:30005 +Runner.hook @ mocha.js:23663 +next @ mocha.js:23690 +Runner.hooks @ mocha.js:23701 +Runner.hookUp @ mocha.js:23714 +(anonymous) @ mocha.js:23945 +done @ mocha.js:22099 +(anonymous) @ mocha.js:22160 +Show 255 more frames +Show less +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:592 txChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:592 txChannel: Ably: WebSocketTransport.onError(): Error from WebSocket: undefined +modular.test.js:592 txChannel: Ably: WebSocketTransport.onWsClose(): Unclean disconnection of WebSocket ; code = 1006 +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"97f58865-107a-477f-8a5d-823afd1f9731","method":"transformInterceptedMessage","params":{"id":"a0198e3c-4c75-44ae-910a-a7e8240f6cef","connectionID":"b732d211-8fc0-4973-9841-13ff80c3cd24","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '97f58865-107a-477f-8a5d-823afd1f9731', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message a0198e3c-4c75-44ae-910a-a7e8240f6cef unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message a0198e3c-4c75-44ae-910a-a7e8240f6cef {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '97f58865-107a-477f-8a5d-823afd1f9731', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b0f9f2cb-655a-47a4-8a48-dc913918d4d6","method":"transformInterceptedMessage","params":{"id":"6304b3f6-298b-4122-a953-6b7ee69142b2","connectionID":"e2eb011b-312e-4c39-aef0-d0c100837329","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b0f9f2cb-655a-47a4-8a48-dc913918d4d6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 6304b3f6-298b-4122-a953-6b7ee69142b2 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 6304b3f6-298b-4122-a953-6b7ee69142b2 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b0f9f2cb-655a-47a4-8a48-dc913918d4d6', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ba857d06-aa3e-481a-99dd-fa80fbf5e568","method":"transformInterceptedMessage","params":{"id":"c9432f6c-bb92-4d36-8cb0-e8ebe6cb7b84","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":0}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ba857d06-aa3e-481a-99dd-fa80fbf5e568', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 0} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c9432f6c-bb92-4d36-8cb0-e8ebe6cb7b84 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c9432f6c-bb92-4d36-8cb0-e8ebe6cb7b84 {action: 0} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ba857d06-aa3e-481a-99dd-fa80fbf5e568', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b56b7f5f-907e-437f-a6de-59f0a3be82df","method":"transformInterceptedMessage","params":{"id":"d3c16084-c827-40b7-a8eb-59ce8935aaa6","connectionID":"d2bb0ee6-8a95-4fcd-bf45-2904e20c5178","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b56b7f5f-907e-437f-a6de-59f0a3be82df', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d3c16084-c827-40b7-a8eb-59ce8935aaa6 unaltered + interception proxy got result of transforming message d3c16084-c827-40b7-a8eb-59ce8935aaa6 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b56b7f5f-907e-437f-a6de-59f0a3be82df', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"fce8f8f2-be2b-448a-bcd8-68b49376200d","method":"transformInterceptedMessage","params":{"id":"12a0acbf-dd68-4ced-a6d1-5be27b37f723","connectionID":"9756a156-2096-4e31-9f98-bb4a1264463a","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'fce8f8f2-be2b-448a-bcd8-68b49376200d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 12a0acbf-dd68-4ced-a6d1-5be27b37f723 unaltered + interception proxy got result of transforming message 12a0acbf-dd68-4ced-a6d1-5be27b37f723 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'fce8f8f2-be2b-448a-bcd8-68b49376200d', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"20377eb7-e122-4baa-ab25-9a179ab9c19b","method":"transformInterceptedMessage","params":{"id":"3f33b14b-a8ff-4af7-a5bb-a8e66028769e","connectionID":"82562167-a4ba-4b82-bfd3-5af71a78572c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '20377eb7-e122-4baa-ab25-9a179ab9c19b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 3f33b14b-a8ff-4af7-a5bb-a8e66028769e unaltered + interception proxy got result of transforming message 3f33b14b-a8ff-4af7-a5bb-a8e66028769e {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '20377eb7-e122-4baa-ab25-9a179ab9c19b', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"bfc73343-6ac8-4d5b-b837-2bc5a7a38232","method":"transformInterceptedMessage","params":{"id":"9bfd82f8-b450-4766-afc0-38f5ca2b5dcd","connectionID":"15d3c7c7-c92b-4be5-ab99-6bc8889b6350","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bfc73343-6ac8-4d5b-b837-2bc5a7a38232', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 9bfd82f8-b450-4766-afc0-38f5ca2b5dcd unaltered + interception proxy got result of transforming message 9bfd82f8-b450-4766-afc0-38f5ca2b5dcd {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bfc73343-6ac8-4d5b-b837-2bc5a7a38232', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"cc695bbc-4766-4bd6-af5b-131eaf379aac","method":"transformInterceptedMessage","params":{"id":"6e607eb3-5d98-4a14-9834-647de3bfa419","connectionID":"5c6ad7ab-4f3e-4682-ba01-22ca3660ca0a","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'cc695bbc-4766-4bd6-af5b-131eaf379aac', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 6e607eb3-5d98-4a14-9834-647de3bfa419 unaltered + interception proxy got result of transforming message 6e607eb3-5d98-4a14-9834-647de3bfa419 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'cc695bbc-4766-4bd6-af5b-131eaf379aac', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"3a936631-79a9-4992-a4b4-9bd6cb66e281","method":"transformInterceptedMessage","params":{"id":"50c6e507-fd74-4b35-a867-8e6f0595b563","connectionID":"6850246b-8d36-4d88-b751-04867a4bf5ac","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '3a936631-79a9-4992-a4b4-9bd6cb66e281', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 50c6e507-fd74-4b35-a867-8e6f0595b563 unaltered + interception proxy got result of transforming message 50c6e507-fd74-4b35-a867-8e6f0595b563 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '3a936631-79a9-4992-a4b4-9bd6cb66e281', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"c106e5ba-4aaf-419d-8858-d7e42b07fe20","method":"transformInterceptedMessage","params":{"id":"a874d5b6-ccbf-4851-9aed-4a1f5e87d629","connectionID":"2c42e539-e952-4229-af45-b141494f7023","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c106e5ba-4aaf-419d-8858-d7e42b07fe20', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message a874d5b6-ccbf-4851-9aed-4a1f5e87d629 unaltered + interception proxy got result of transforming message a874d5b6-ccbf-4851-9aed-4a1f5e87d629 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c106e5ba-4aaf-419d-8858-d7e42b07fe20', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"4abed275-559f-48fe-ba7d-237b9d8a2507","method":"transformInterceptedMessage","params":{"id":"ca32be8f-53f2-4fe2-a608-9ccf8581e392","connectionID":"31f0c7d3-133c-4bc3-9297-c198f559fed0","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4abed275-559f-48fe-ba7d-237b9d8a2507', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message ca32be8f-53f2-4fe2-a608-9ccf8581e392 unaltered + interception proxy got result of transforming message ca32be8f-53f2-4fe2-a608-9ccf8581e392 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4abed275-559f-48fe-ba7d-237b9d8a2507', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"bd47d134-0ec1-4df8-8285-a22c971481c7","method":"transformInterceptedMessage","params":{"id":"a9d6a01d-c6e9-4dcc-8422-b1fa298f230d","connectionID":"2ca5b342-5fbf-4936-9ac7-e2e6f6515b00","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bd47d134-0ec1-4df8-8285-a22c971481c7', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message a9d6a01d-c6e9-4dcc-8422-b1fa298f230d unaltered + interception proxy got result of transforming message a9d6a01d-c6e9-4dcc-8422-b1fa298f230d {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bd47d134-0ec1-4df8-8285-a22c971481c7', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"7f6900a7-0e90-432f-8778-ae1e6e9cf41f","method":"transformInterceptedMessage","params":{"id":"8c0e2507-79dc-4156-b7bb-ab2e0f408dde","connectionID":"162632c5-d822-44b6-98cf-dafb225f89e1","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '7f6900a7-0e90-432f-8778-ae1e6e9cf41f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 8c0e2507-79dc-4156-b7bb-ab2e0f408dde unaltered + interception proxy got result of transforming message 8c0e2507-79dc-4156-b7bb-ab2e0f408dde {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '7f6900a7-0e90-432f-8778-ae1e6e9cf41f', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"6caf30c0-543c-4058-a08d-b73ce6790100","method":"transformInterceptedMessage","params":{"id":"91c0a142-8f15-4da4-a090-410632e6111d","connectionID":"28667c02-f1f5-465c-9713-e236c0b68614","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6caf30c0-543c-4058-a08d-b73ce6790100', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 91c0a142-8f15-4da4-a090-410632e6111d unaltered + interception proxy got result of transforming message 91c0a142-8f15-4da4-a090-410632e6111d {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6caf30c0-543c-4058-a08d-b73ce6790100', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"a69fb48f-40dd-4e18-aab3-736b8a7973e6","method":"transformInterceptedMessage","params":{"id":"89027765-824c-496a-86c3-8b60b7025b33","connectionID":"b70757a7-bead-4a00-b4fe-3c28d1cc1fc1","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a69fb48f-40dd-4e18-aab3-736b8a7973e6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 89027765-824c-496a-86c3-8b60b7025b33 unaltered + interception proxy got result of transforming message 89027765-824c-496a-86c3-8b60b7025b33 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a69fb48f-40dd-4e18-aab3-736b8a7973e6', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"d358c394-5597-4a17-a4e1-0dac84336a22","method":"transformInterceptedMessage","params":{"id":"ca06e6bf-7040-4866-8eeb-417ad2b3dcb6","connectionID":"30432a6d-cd20-45f3-b85d-49336233affe","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd358c394-5597-4a17-a4e1-0dac84336a22', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message ca06e6bf-7040-4866-8eeb-417ad2b3dcb6 unaltered + interception proxy got result of transforming message ca06e6bf-7040-4866-8eeb-417ad2b3dcb6 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd358c394-5597-4a17-a4e1-0dac84336a22', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"90e57f8b-866f-425b-addb-c73d626150b2","method":"transformInterceptedMessage","params":{"id":"eba73943-d0f9-4b79-b1ed-f8ed8e8dca68","connectionID":"4e562498-1f6e-4511-a8a9-4e683468fe75","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '90e57f8b-866f-425b-addb-c73d626150b2', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message eba73943-d0f9-4b79-b1ed-f8ed8e8dca68 unaltered + interception proxy got result of transforming message eba73943-d0f9-4b79-b1ed-f8ed8e8dca68 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '90e57f8b-866f-425b-addb-c73d626150b2', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"18df4799-f2a9-47a1-b460-560f19e080ac","method":"transformInterceptedMessage","params":{"id":"cd05917a-1a0b-41e8-925b-1549daaa11fc","connectionID":"db83ced7-7dc6-4370-978d-f308cb226a66","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '18df4799-f2a9-47a1-b460-560f19e080ac', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message cd05917a-1a0b-41e8-925b-1549daaa11fc unaltered + interception proxy got result of transforming message cd05917a-1a0b-41e8-925b-1549daaa11fc {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '18df4799-f2a9-47a1-b460-560f19e080ac', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"bced62a3-6485-4baa-9d9e-718bcd66a7e5","method":"transformInterceptedMessage","params":{"id":"a5df9329-ee9e-4152-b55a-e9fa6f274fc8","connectionID":"d1f60c1f-020f-4cb9-998b-9ce29681bb0e","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'bced62a3-6485-4baa-9d9e-718bcd66a7e5', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message a5df9329-ee9e-4152-b55a-e9fa6f274fc8 unaltered + interception proxy got result of transforming message a5df9329-ee9e-4152-b55a-e9fa6f274fc8 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'bced62a3-6485-4baa-9d9e-718bcd66a7e5', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"d76968d1-9914-40c3-a239-d62342911e89","method":"transformInterceptedMessage","params":{"id":"70bded4e-993f-4ac8-9044-a427975171e3","connectionID":"3ab448ff-4273-4a58-99c6-1c6a67cb7f87","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd76968d1-9914-40c3-a239-d62342911e89', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 70bded4e-993f-4ac8-9044-a427975171e3 unaltered + interception proxy got result of transforming message 70bded4e-993f-4ac8-9044-a427975171e3 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd76968d1-9914-40c3-a239-d62342911e89', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"e7834bfc-6752-4463-85f1-ee0431ba5264","method":"transformInterceptedMessage","params":{"id":"add3074e-e739-411c-9547-abb84593ff33","connectionID":"26ad7d35-a092-48f6-8b34-b5e78314bd34","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e7834bfc-6752-4463-85f1-ee0431ba5264', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message add3074e-e739-411c-9547-abb84593ff33 unaltered + interception proxy got result of transforming message add3074e-e739-411c-9547-abb84593ff33 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e7834bfc-6752-4463-85f1-ee0431ba5264', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"aa0203bd-d9d5-40c5-a556-ac3be440a753","method":"transformInterceptedMessage","params":{"id":"3be9c103-60bb-41b3-b72c-295f35269975","connectionID":"64058e61-f2d6-42d1-9a38-4c076a725099","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'aa0203bd-d9d5-40c5-a556-ac3be440a753', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 3be9c103-60bb-41b3-b72c-295f35269975 unaltered + interception proxy got result of transforming message 3be9c103-60bb-41b3-b72c-295f35269975 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'aa0203bd-d9d5-40c5-a556-ac3be440a753', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"e27be862-764f-44b0-9e9b-3d3993266466","method":"transformInterceptedMessage","params":{"id":"14d0bd4b-9862-480a-85e5-9626e56706a7","connectionID":"418c6412-5c42-4148-96f6-626f74a26577","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e27be862-764f-44b0-9e9b-3d3993266466', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 14d0bd4b-9862-480a-85e5-9626e56706a7 unaltered + interception proxy got result of transforming message 14d0bd4b-9862-480a-85e5-9626e56706a7 {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e27be862-764f-44b0-9e9b-3d3993266466', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"30d41141-edf0-4912-9366-bd77bcb274c3","method":"transformInterceptedMessage","params":{"id":"14b02f36-ae42-4ad1-b4b2-1a7b67c69b2a","connectionID":"7cdb4890-b428-4e55-aa47-6a4e57a1018c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '30d41141-edf0-4912-9366-bd77bcb274c3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} + default transformInterceptedMessage implementation passing message 14b02f36-ae42-4ad1-b4b2-1a7b67c69b2a unaltered + interception proxy got result of transforming message 14b02f36-ae42-4ad1-b4b2-1a7b67c69b2a {action: 6, error: {…}} + interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '30d41141-edf0-4912-9366-bd77bcb274c3', result: {…}} + interception proxy got message {"jsonrpc":"2.0","id":"0db8a9ad-9d17-4b03-a62e-fdb17120fe73","method":"transformInterceptedMessage","params":{"id":"efc2a215-63e1-4453-9436-301344ace348","connectionID":"e335f372-842a-4aab-929b-bb240ee25bd2","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0db8a9ad-9d17-4b03-a62e-fdb17120fe73', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message efc2a215-63e1-4453-9436-301344ace348 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message efc2a215-63e1-4453-9436-301344ace348 {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0db8a9ad-9d17-4b03-a62e-fdb17120fe73', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"283ec342-7ce4-48ac-b84d-7b2989c138f6","method":"transformInterceptedMessage","params":{"id":"73ca7748-d081-4597-9a3f-4a26dcc6636f","connectionID":"82521312-911a-450b-963f-f4f701153a78","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '283ec342-7ce4-48ac-b84d-7b2989c138f6', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 73ca7748-d081-4597-9a3f-4a26dcc6636f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 73ca7748-d081-4597-9a3f-4a26dcc6636f {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '283ec342-7ce4-48ac-b84d-7b2989c138f6', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8fa8c09e-6b70-458a-84c9-891546e761d8","method":"transformInterceptedMessage","params":{"id":"64453755-66e1-419b-951e-d9880403456c","connectionID":"da02e9b5-3e31-449c-bd7f-250bab8d1e50","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8fa8c09e-6b70-458a-84c9-891546e761d8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 64453755-66e1-419b-951e-d9880403456c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 64453755-66e1-419b-951e-d9880403456c {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8fa8c09e-6b70-458a-84c9-891546e761d8', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"456d5f27-9c53-4c3f-8582-8db98104bdad","method":"transformInterceptedMessage","params":{"id":"d27a3e94-da6d-412a-b531-ecb2617f9772","connectionID":"bf0e9c66-0ab4-4a21-a1fe-adcf46d4f271","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '456d5f27-9c53-4c3f-8582-8db98104bdad', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d27a3e94-da6d-412a-b531-ecb2617f9772 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d27a3e94-da6d-412a-b531-ecb2617f9772 {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '456d5f27-9c53-4c3f-8582-8db98104bdad', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2d353476-348d-49ed-b783-9d8ac2464714","method":"transformInterceptedMessage","params":{"id":"1be2be5c-b5d0-469b-a3ee-2bfc756a5ad0","connectionID":"9af9348c-17b9-408f-8647-4a58a68fea25","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2d353476-348d-49ed-b783-9d8ac2464714', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 1be2be5c-b5d0-469b-a3ee-2bfc756a5ad0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 1be2be5c-b5d0-469b-a3ee-2bfc756a5ad0 {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2d353476-348d-49ed-b783-9d8ac2464714', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b8bd06e8-fcef-462d-8a23-bd8d8b4a92b1","method":"transformInterceptedMessage","params":{"id":"db79b476-6a07-41e9-8b6b-b5de901170c6","connectionID":"79ca26d7-2d12-4423-b49d-09a3bac53f31","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b8bd06e8-fcef-462d-8a23-bd8d8b4a92b1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message db79b476-6a07-41e9-8b6b-b5de901170c6 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message db79b476-6a07-41e9-8b6b-b5de901170c6 {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b8bd06e8-fcef-462d-8a23-bd8d8b4a92b1', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fcc9a4da-8738-482c-b1f9-63443c8f92e4","method":"transformInterceptedMessage","params":{"id":"6d25c5dc-591b-475c-9135-1fab16cf8a2f","connectionID":"b732d211-8fc0-4973-9841-13ff80c3cd24","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'fcc9a4da-8738-482c-b1f9-63443c8f92e4', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 6d25c5dc-591b-475c-9135-1fab16cf8a2f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 6d25c5dc-591b-475c-9135-1fab16cf8a2f {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'fcc9a4da-8738-482c-b1f9-63443c8f92e4', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2e13f1d0-ce92-4d48-9e4d-3caf273414f3","method":"transformInterceptedMessage","params":{"id":"365d1f35-224f-4432-b760-3e52062779aa","connectionID":"e2eb011b-312e-4c39-aef0-d0c100837329","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2e13f1d0-ce92-4d48-9e4d-3caf273414f3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 365d1f35-224f-4432-b760-3e52062779aa unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 365d1f35-224f-4432-b760-3e52062779aa {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2e13f1d0-ce92-4d48-9e4d-3caf273414f3', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"07e75873-5a95-4268-a20c-3349399ce356","method":"transformInterceptedMessage","params":{"id":"2f5f50c6-7a9c-4adf-a0ee-702147c6a6e3","connectionID":"ee3ef5cb-61ec-41a2-9463-6e4406b658fd","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '07e75873-5a95-4268-a20c-3349399ce356', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 2f5f50c6-7a9c-4adf-a0ee-702147c6a6e3 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 2f5f50c6-7a9c-4adf-a0ee-702147c6a6e3 {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '07e75873-5a95-4268-a20c-3349399ce356', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"92ec3905-73eb-4a64-a7b4-b1b4b73278d3","method":"transformInterceptedMessage","params":{"id":"d3d49fa1-ee51-40f5-ba4e-2462c075faa8","connectionID":"3c2bf721-6d09-4435-9920-b89dd8170cb5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '92ec3905-73eb-4a64-a7b4-b1b4b73278d3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d3d49fa1-ee51-40f5-ba4e-2462c075faa8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d3d49fa1-ee51-40f5-ba4e-2462c075faa8 {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '92ec3905-73eb-4a64-a7b4-b1b4b73278d3', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"5b493daf-9995-435b-a284-15591a9333f3","method":"transformInterceptedMessage","params":{"id":"bc81053d-9828-4373-bae1-7d9a7586b27b","connectionID":"c101d49d-c862-4d48-b9ae-bb7d76ce9fd4","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '5b493daf-9995-435b-a284-15591a9333f3', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 6, error: {…}} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bc81053d-9828-4373-bae1-7d9a7586b27b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bc81053d-9828-4373-bae1-7d9a7586b27b {action: 6, error: {…}} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '5b493daf-9995-435b-a284-15591a9333f3', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 152; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_oZKbHg disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = 3g_SVgjirR +modular.test.js:580 rxChannel: Ably: Transport.onDisconnect(): err = [_ErrorInfo: Account _tmp_oZKbHg disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): state = disconnected; was active +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): reason = Account _tmp_oZKbHg disabled +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): Getting, clearing, and requeuing 0 pending messages +modular.test.js:580 rxChannel: Ably: MessageQueue.clear(): clearing 0 messages +modular.test.js:580 rxChannel: Ably: ConnectionManager.notifyState(): new state: disconnected; will retry connection immediately +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: disconnected; reason: [_ErrorInfo: Account _tmp_oZKbHg disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Account _tmp_oZKbHg disabled +modular.test.js:580 rxChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:580 rxChannel: Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined +modular.test.js:580 rxChannel: Ably: WebSocketTransport.dispose(): closing websocket +modular.test.js:580 rxChannel: Ably: ConnectionManager.startConnect(): starting connection +modular.test.js:580 rxChannel: Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting +modular.test.js:580 rxChannel: Ably: ConnectionManager.getTransportParams(): Transport params = [mode=resume,connectionKey=e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23,format=json] +modular.test.js:580 rxChannel: Ably: ConnectionManager.connectWs(): undefined +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryATransport(): trying web_socket +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): starting +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ +modular.test.js:580 rxChannel: Ably: WebSocketTransport.connect(): authParams: key: _tmp_-mDp8g.YFggfw:xCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms; err: null +modular.test.js:580 rxChannel: Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&resume=e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket +modular.test.js:592 txChannel: Ably: ConnectionManager WebSocket slow timer: ws connectivity check succeeded +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fc4cf349-c5f8-43c8-9a29-96866b536a15","method":"transformInterceptedMessage","params":{"id":"fee24074-bc5b-476d-b3a6-606492740688","connectionID":"88fc9b75-6215-43bf-83a2-5bb35124930c","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586153}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'fc4cf349-c5f8-43c8-9a29-96866b536a15', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586153} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message fee24074-bc5b-476d-b3a6-606492740688 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message fee24074-bc5b-476d-b3a6-606492740688 {action: 9, error: {…}, timestamp: 1715973586153} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'fc4cf349-c5f8-43c8-9a29-96866b536a15', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"84e90e2b-8bbb-4387-832d-f4cbb5cd3708","method":"transformInterceptedMessage","params":{"id":"b5094b3a-8689-4a65-9c6d-8140cbd13c39","connectionID":"c986dadd-ff6c-405c-a84a-c90fe539e3c0","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586197}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '84e90e2b-8bbb-4387-832d-f4cbb5cd3708', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586197} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b5094b3a-8689-4a65-9c6d-8140cbd13c39 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b5094b3a-8689-4a65-9c6d-8140cbd13c39 {action: 9, error: {…}, timestamp: 1715973586197} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '84e90e2b-8bbb-4387-832d-f4cbb5cd3708', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"9191cbed-4f27-43ba-a96a-3d522fdf6e04","method":"transformInterceptedMessage","params":{"id":"7b9845e4-29ba-480f-9d3a-7e4e2fdcda31","connectionID":"5e28b02f-2e37-4a4e-9ff3-3f733ce3743f","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586198}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '9191cbed-4f27-43ba-a96a-3d522fdf6e04', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586198} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 7b9845e4-29ba-480f-9d3a-7e4e2fdcda31 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 7b9845e4-29ba-480f-9d3a-7e4e2fdcda31 {action: 9, error: {…}, timestamp: 1715973586198} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '9191cbed-4f27-43ba-a96a-3d522fdf6e04', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b92fdc84-709a-47ba-b567-e384cc8591e1","method":"transformInterceptedMessage","params":{"id":"c99fff3f-6aa8-4285-a980-61a392c1c87b","connectionID":"c4db4e77-4605-4d19-b9e9-f34f94962c93","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586199}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b92fdc84-709a-47ba-b567-e384cc8591e1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586199} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c99fff3f-6aa8-4285-a980-61a392c1c87b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c99fff3f-6aa8-4285-a980-61a392c1c87b {action: 9, error: {…}, timestamp: 1715973586199} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b92fdc84-709a-47ba-b567-e384cc8591e1', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e4112ad4-f95e-4830-8aae-8e3aff417646","method":"transformInterceptedMessage","params":{"id":"0af714c0-fe16-4736-88d9-b90ad9b5aca0","connectionID":"0b9667a6-f206-46e1-a33d-6e1e42686e51","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586202}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e4112ad4-f95e-4830-8aae-8e3aff417646', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586202} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0af714c0-fe16-4736-88d9-b90ad9b5aca0 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0af714c0-fe16-4736-88d9-b90ad9b5aca0 {action: 9, error: {…}, timestamp: 1715973586202} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e4112ad4-f95e-4830-8aae-8e3aff417646', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a31af30b-e0b4-41c2-9840-66902ac18eab","method":"transformInterceptedMessage","params":{"id":"3e0bffe6-ee35-44a9-a6ba-85e47164c849","connectionID":"826e1af3-e264-425d-92bd-1796b2ef69d2","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586204}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a31af30b-e0b4-41c2-9840-66902ac18eab', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586204} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 3e0bffe6-ee35-44a9-a6ba-85e47164c849 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 3e0bffe6-ee35-44a9-a6ba-85e47164c849 {action: 9, error: {…}, timestamp: 1715973586204} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a31af30b-e0b4-41c2-9840-66902ac18eab', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c1084b2e-3c12-4f24-8512-46254b5693e7","method":"transformInterceptedMessage","params":{"id":"40bf7cfa-1b93-4d4f-88e0-655f5c772429","connectionID":"bb47bb6e-1f06-4704-8aec-02cc6580c7fa","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586206}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c1084b2e-3c12-4f24-8512-46254b5693e7', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586206} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 40bf7cfa-1b93-4d4f-88e0-655f5c772429 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 40bf7cfa-1b93-4d4f-88e0-655f5c772429 {action: 9, error: {…}, timestamp: 1715973586206} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c1084b2e-3c12-4f24-8512-46254b5693e7', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"e0391b7a-9a58-4db8-b602-e842f459182b","method":"transformInterceptedMessage","params":{"id":"f90c3a36-0454-425b-a128-2daccae17f2a","connectionID":"4eea48b5-7de1-41e9-a822-f996be24ff2a","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586208}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'e0391b7a-9a58-4db8-b602-e842f459182b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586208} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message f90c3a36-0454-425b-a128-2daccae17f2a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message f90c3a36-0454-425b-a128-2daccae17f2a {action: 9, error: {…}, timestamp: 1715973586208} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'e0391b7a-9a58-4db8-b602-e842f459182b', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"98fcd4ac-0558-4dd0-a1f1-7311616e8dd1","method":"transformInterceptedMessage","params":{"id":"c63ec4b6-3879-4c65-881f-dbacccd7feb7","connectionID":"a1e50253-dfd0-4069-abfb-800b035ee99d","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586209}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '98fcd4ac-0558-4dd0-a1f1-7311616e8dd1', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586209} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c63ec4b6-3879-4c65-881f-dbacccd7feb7 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c63ec4b6-3879-4c65-881f-dbacccd7feb7 {action: 9, error: {…}, timestamp: 1715973586209} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '98fcd4ac-0558-4dd0-a1f1-7311616e8dd1', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f606ca07-b400-442a-b0af-f9d56c38662e","method":"transformInterceptedMessage","params":{"id":"bc7e4b36-fc70-4efc-ab3b-96e3d978ae20","connectionID":"60efdd4f-003a-42d9-ace4-aa4349346b09","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586210}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f606ca07-b400-442a-b0af-f9d56c38662e', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586210} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bc7e4b36-fc70-4efc-ab3b-96e3d978ae20 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bc7e4b36-fc70-4efc-ab3b-96e3d978ae20 {action: 9, error: {…}, timestamp: 1715973586210} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f606ca07-b400-442a-b0af-f9d56c38662e', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"d6f3c553-771d-44a5-b4d6-713a6522db3c","method":"transformInterceptedMessage","params":{"id":"0e849ce4-1122-4bd7-a21c-5fdcfe6e889b","connectionID":"750067c1-9047-4ba8-a9d2-7f87d7e0f0fc","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586349}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'd6f3c553-771d-44a5-b4d6-713a6522db3c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586349} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0e849ce4-1122-4bd7-a21c-5fdcfe6e889b unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0e849ce4-1122-4bd7-a21c-5fdcfe6e889b {action: 9, error: {…}, timestamp: 1715973586349} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'd6f3c553-771d-44a5-b4d6-713a6522db3c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"77a8d8e8-0101-477b-9169-8d6a76ccf55a","method":"transformInterceptedMessage","params":{"id":"85792f46-bec2-427f-8a71-8baa3d3137af","connectionID":"b4a96420-360a-4ecb-ac73-08cfd9b66af8","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586397}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '77a8d8e8-0101-477b-9169-8d6a76ccf55a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586397} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 85792f46-bec2-427f-8a71-8baa3d3137af unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 85792f46-bec2-427f-8a71-8baa3d3137af {action: 9, error: {…}, timestamp: 1715973586397} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '77a8d8e8-0101-477b-9169-8d6a76ccf55a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"cbe6420f-1e86-4cb1-a459-a22dda33a0c8","method":"transformInterceptedMessage","params":{"id":"43c0ba1e-9ced-40e9-ad6b-5d66fd622641","connectionID":"6dec2242-2274-45bb-872b-4bc37758af58","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973586616}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'cbe6420f-1e86-4cb1-a459-a22dda33a0c8', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973586616} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 43c0ba1e-9ced-40e9-ad6b-5d66fd622641 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 43c0ba1e-9ced-40e9-ad6b-5d66fd622641 {action: 9, error: {…}, timestamp: 1715973586616} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'cbe6420f-1e86-4cb1-a459-a22dda33a0c8', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"c7380969-5a6c-404d-95f4-eda3ba43121b","method":"transformInterceptedMessage","params":{"id":"b5ddb7c5-4024-4381-a870-2b50cc85a0ce","connectionID":"1c2e495a-09d7-4fcd-8119-d482eb3dadb8","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973587280}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'c7380969-5a6c-404d-95f4-eda3ba43121b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973587280} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b5ddb7c5-4024-4381-a870-2b50cc85a0ce unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b5ddb7c5-4024-4381-a870-2b50cc85a0ce {action: 9, error: {…}, timestamp: 1715973587280} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'c7380969-5a6c-404d-95f4-eda3ba43121b', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1bfe670b-8dad-42a7-964c-7bace554538b","method":"transformInterceptedMessage","params":{"id":"b32499e7-f122-47bb-8c31-a12b4169ac78","connectionID":"93ec6132-3812-43cc-b42f-9b751e59b4af","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973587313}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '1bfe670b-8dad-42a7-964c-7bace554538b', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973587313} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message b32499e7-f122-47bb-8c31-a12b4169ac78 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message b32499e7-f122-47bb-8c31-a12b4169ac78 {action: 9, error: {…}, timestamp: 1715973587313} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '1bfe670b-8dad-42a7-964c-7bace554538b', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"a92cc8bd-0c97-4702-a9d3-9796314adb3a","method":"transformInterceptedMessage","params":{"id":"8d986f17-f7fe-4a31-92da-baafc67e1ac9","connectionID":"a397d46a-73da-4a7f-9235-37b3c300676e","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973587530}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'a92cc8bd-0c97-4702-a9d3-9796314adb3a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973587530} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8d986f17-f7fe-4a31-92da-baafc67e1ac9 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8d986f17-f7fe-4a31-92da-baafc67e1ac9 {action: 9, error: {…}, timestamp: 1715973587530} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'a92cc8bd-0c97-4702-a9d3-9796314adb3a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b3ad8a54-cbb2-462c-9979-e9436b878e18","method":"transformInterceptedMessage","params":{"id":"c54888a2-6856-4e85-a1a9-fa660bd04b77","connectionID":"6c31c520-5e53-4d51-8638-d6da340534ab","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973587677}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b3ad8a54-cbb2-462c-9979-e9436b878e18', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973587677} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c54888a2-6856-4e85-a1a9-fa660bd04b77 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c54888a2-6856-4e85-a1a9-fa660bd04b77 {action: 9, error: {…}, timestamp: 1715973587677} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b3ad8a54-cbb2-462c-9979-e9436b878e18', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6ca5db84-9998-4fb7-af91-5f17d8f635d2","method":"transformInterceptedMessage","params":{"id":"970278d4-17e1-4836-bd05-918b1f0927ca","connectionID":"60d5f5ec-333e-4b89-9602-a4e98dbb3f39","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_oZKbHg disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973587678}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6ca5db84-9998-4fb7-af91-5f17d8f635d2', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973587678} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 970278d4-17e1-4836-bd05-918b1f0927ca unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 970278d4-17e1-4836-bd05-918b1f0927ca {action: 9, error: {…}, timestamp: 1715973587678} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6ca5db84-9998-4fb7-af91-5f17d8f635d2', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"20ede9b5-deaf-4966-8863-8b9ef1c44f00","method":"transformInterceptedMessage","params":{"id":"93c08030-e196-4e82-9a90-eb619b15bce3","connectionID":"84ddddeb-23b6-451b-8fc5-e1f309888b98","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973588275}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '20ede9b5-deaf-4966-8863-8b9ef1c44f00', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973588275} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 93c08030-e196-4e82-9a90-eb619b15bce3 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 93c08030-e196-4e82-9a90-eb619b15bce3 {action: 9, error: {…}, timestamp: 1715973588275} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '20ede9b5-deaf-4966-8863-8b9ef1c44f00', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"6331a4a4-f117-41ca-bebd-3f59f75b9f7d","method":"transformInterceptedMessage","params":{"id":"803cbc07-f40e-443a-b7ee-4aa9c3c6f65c","connectionID":"4efe8660-6e26-44f9-a1b4-107627c0dffc","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973588598}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '6331a4a4-f117-41ca-bebd-3f59f75b9f7d', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973588598} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 803cbc07-f40e-443a-b7ee-4aa9c3c6f65c unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 803cbc07-f40e-443a-b7ee-4aa9c3c6f65c {action: 9, error: {…}, timestamp: 1715973588598} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '6331a4a4-f117-41ca-bebd-3f59f75b9f7d', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1078fade-d9c3-49b0-9672-59f904317d03","method":"transformInterceptedMessage","params":{"id":"dec239ad-2033-4b5a-bf2a-5b16a0f498e5","connectionID":"9bbf20bb-46b4-4694-b7ab-679b85de3ec2","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973588722}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '1078fade-d9c3-49b0-9672-59f904317d03', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973588722} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message dec239ad-2033-4b5a-bf2a-5b16a0f498e5 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message dec239ad-2033-4b5a-bf2a-5b16a0f498e5 {action: 9, error: {…}, timestamp: 1715973588722} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '1078fade-d9c3-49b0-9672-59f904317d03', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:580 rxChannel: Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&resume=e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:580 rxChannel: Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&resume=e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = resume +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"fb3ff03b-5b76-4dc3-8a85-550a487ca089","method":"transformInterceptedMessage","params":{"id":"df28e847-0a01-463d-a405-2b9dcca02c59","connectionID":"15ad05ea-96a3-4af9-b7fd-7c212345ccaa","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973588932}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'fb3ff03b-5b76-4dc3-8a85-550a487ca089', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973588932} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message df28e847-0a01-463d-a405-2b9dcca02c59 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message df28e847-0a01-463d-a405-2b9dcca02c59 {action: 9, error: {…}, timestamp: 1715973588932} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'fb3ff03b-5b76-4dc3-8a85-550a487ca089', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"0cf2ccb2-84a1-47fc-a952-9525796ae07f","method":"transformInterceptedMessage","params":{"id":"583ea950-c609-4f74-b375-fda6b13cd1b8","connectionID":"b5220852-46ea-4471-8711-3347a22913fe","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973589004}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '0cf2ccb2-84a1-47fc-a952-9525796ae07f', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973589004} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 583ea950-c609-4f74-b375-fda6b13cd1b8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 583ea950-c609-4f74-b375-fda6b13cd1b8 {action: 9, error: {…}, timestamp: 1715973589004} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '0cf2ccb2-84a1-47fc-a952-9525796ae07f', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"b3c68847-0d40-4fbe-a540-a82a47c10e15","method":"transformInterceptedMessage","params":{"id":"7d4ab8ef-6eec-40f7-a693-e892f31d159f","connectionID":"6246bfbe-fbb6-4a13-b3dd-7abce08e16b4","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973589235}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'b3c68847-0d40-4fbe-a540-a82a47c10e15', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973589235} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 7d4ab8ef-6eec-40f7-a693-e892f31d159f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 7d4ab8ef-6eec-40f7-a693-e892f31d159f {action: 9, error: {…}, timestamp: 1715973589235} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'b3c68847-0d40-4fbe-a540-a82a47c10e15', result: {…}} +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsData(): data received; length = 232; type = string +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715973589235; error=[_ErrorInfo: Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = 3g_SVgjirR +modular.test.js:580 rxChannel: Ably: Transport.onProtocolMessage(): received error action; connectionId = 3g_SVgjirR; err = {"code":40300,"statusCode":403,"nonfatal":false,"href":"https://help.ably.io/error/40300"} +modular.test.js:580 rxChannel: Ably: Transport.onFatalError(): err = [_ErrorInfo: Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&resume=e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): state = failed; was pending +modular.test.js:580 rxChannel: Ably: ConnectionManager.deactivateTransport(): reason = Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.) +modular.test.js:580 rxChannel: Ably: ConnectionManager.notifyState(): new state: failed +modular.test.js:580 rxChannel: Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:580 rxChannel: Ably: Connection state: failed; reason: [_ErrorInfo: Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:580 rxChannel: Ably: ConnectionManager.enactStateChange: setting new state: failed; reason = Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.) +modular.test.js:580 rxChannel: Ably: RealtimeChannel.notifyState: name = channel, current state = attached, notifying state failed +modular.test.js:580 rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false +modular.test.js:580 rxChannel: Ably: PresenceMap.setInProgress(): inProgress = false +modular.test.js:580 rxChannel: Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:580 rxChannel: Ably: WebSocketTransport.dispose(): +modular.test.js:580 rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:580 rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_-mDp8g.YFggfw%3AxCT0UWASnAJoiwY05ldYUHeizY5pK0A_DpjVCdVR4ms&resume=e7dNIPVFABc0Ei!3g_SVgjirRAUtvni_82zFX-1c23&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:580 rxChannel: Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:580 rxChannel: Ably: WebSocketTransport.dispose(): closing websocket +modular.test.js:580 rxChannel: Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"73acbbfb-1278-4254-bc22-c37de1523242","method":"transformInterceptedMessage","params":{"id":"18835690-a082-4342-a03b-4fab59e83f27","connectionID":"0d1d90b9-bc6c-4d93-8d9e-45249f373a29","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973589470}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '73acbbfb-1278-4254-bc22-c37de1523242', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973589470} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 18835690-a082-4342-a03b-4fab59e83f27 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 18835690-a082-4342-a03b-4fab59e83f27 {action: 9, error: {…}, timestamp: 1715973589470} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '73acbbfb-1278-4254-bc22-c37de1523242', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1a377142-c1a2-4512-9930-0f116424579c","method":"transformInterceptedMessage","params":{"id":"ac61c577-be7e-4db3-aad4-ed25d68d66db","connectionID":"74e79142-b0ae-45d6-85b0-585d31f5af10","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973589950}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '1a377142-c1a2-4512-9930-0f116424579c', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973589950} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ac61c577-be7e-4db3-aad4-ed25d68d66db unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ac61c577-be7e-4db3-aad4-ed25d68d66db {action: 9, error: {…}, timestamp: 1715973589950} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '1a377142-c1a2-4512-9930-0f116424579c', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"2a021add-30f2-4bc3-b0d2-71a1de93f725","method":"transformInterceptedMessage","params":{"id":"ec6c29a2-b862-413a-a2c2-ec26ae4c6f0d","connectionID":"4acce3ca-e1c1-4e80-a956-5641799d6bc4","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973590013}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '2a021add-30f2-4bc3-b0d2-71a1de93f725', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973590013} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ec6c29a2-b862-413a-a2c2-ec26ae4c6f0d unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ec6c29a2-b862-413a-a2c2-ec26ae4c6f0d {action: 9, error: {…}, timestamp: 1715973590013} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '2a021add-30f2-4bc3-b0d2-71a1de93f725', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8afcd661-d5fc-4f61-aac6-6ec9784af1db","method":"transformInterceptedMessage","params":{"id":"d59edf46-3c1c-42d3-bc1e-e44b5382ee4e","connectionID":"55694c0d-4450-47f2-b79f-9bf2726670ca","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973590032}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '8afcd661-d5fc-4f61-aac6-6ec9784af1db', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973590032} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d59edf46-3c1c-42d3-bc1e-e44b5382ee4e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d59edf46-3c1c-42d3-bc1e-e44b5382ee4e {action: 9, error: {…}, timestamp: 1715973590032} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '8afcd661-d5fc-4f61-aac6-6ec9784af1db', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ba0cd819-9337-42e9-8028-a85992972885","method":"transformInterceptedMessage","params":{"id":"d63bed22-87dc-49ee-ae34-216247440d3a","connectionID":"38edf54c-14f5-4f3f-8c14-516672df1ffd","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973590049}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'ba0cd819-9337-42e9-8028-a85992972885', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973590049} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d63bed22-87dc-49ee-ae34-216247440d3a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d63bed22-87dc-49ee-ae34-216247440d3a {action: 9, error: {…}, timestamp: 1715973590049} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'ba0cd819-9337-42e9-8028-a85992972885', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"4078354d-b199-4319-91c2-be40cd34cb70","method":"transformInterceptedMessage","params":{"id":"53c4dd34-bce7-48b9-bbd5-bfe810b02858","connectionID":"57cca1dd-97f3-4ef0-939c-291b7d89638f","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973590078}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: '4078354d-b199-4319-91c2-be40cd34cb70', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973590078} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 53c4dd34-bce7-48b9-bbd5-bfe810b02858 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 53c4dd34-bce7-48b9-bbd5-bfe810b02858 {action: 9, error: {…}, timestamp: 1715973590078} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: '4078354d-b199-4319-91c2-be40cd34cb70', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f8375bcb-4603-4382-9a08-1e7feb3a942a","method":"transformInterceptedMessage","params":{"id":"65b94083-7c47-48dc-9ca5-d1ace51758d4","connectionID":"67ce4fe4-8b70-4a8a-8415-95cfe78fb8d3","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973590734}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f8375bcb-4603-4382-9a08-1e7feb3a942a', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973590734} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 65b94083-7c47-48dc-9ca5-d1ace51758d4 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 65b94083-7c47-48dc-9ca5-d1ace51758d4 {action: 9, error: {…}, timestamp: 1715973590734} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f8375bcb-4603-4382-9a08-1e7feb3a942a', result: {…}} +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f351eabf-adb3-45d3-badc-31b10f55e419","method":"transformInterceptedMessage","params":{"id":"d613dae5-3b28-42a3-9ab3-dfa4894ed635","connectionID":"a4a3ce0b-e6a1-459b-bc4f-50e815b22dbe","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_-mDp8g disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715973590940}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message {jsonrpc: '2.0', id: 'f351eabf-adb3-45d3-badc-31b10f55e419', method: 'transformInterceptedMessage', params: {…}} deserialized to {action: 9, error: {…}, timestamp: 1715973590940} +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message d613dae5-3b28-42a3-9ab3-dfa4894ed635 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message d613dae5-3b28-42a3-9ab3-dfa4894ed635 {action: 9, error: {…}, timestamp: 1715973590940} +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response {jsonrpc: '2.0', id: 'f351eabf-adb3-45d3-badc-31b10f55e419', result: {…}} +testapp_module.js:76 Test App _tmp_-mDp8g has been torn down +interception_proxy_client.js:73 interception proxy client disconnected \ No newline at end of file From ee1fd2669bdecca1a2c53129e80ed617b9487586 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 17:04:35 -0300 Subject: [PATCH 19/32] add timestamps to logs --- test/browser/modular.test.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index c586487b9..e15e9ebcf 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -575,9 +575,30 @@ function registerAblyModularTests(helper) { describe('BaseRealtime with RealtimePresence', () => { it('offers realtime presence functionality', async () => { + function pad(timeSegment, three) { + return `${timeSegment}`.padStart(three ? 3 : 2, '0'); + } + + function getHandler(logger) { + return function (msg) { + const time = new Date(); + logger( + pad(time.getHours()) + + ':' + + pad(time.getMinutes()) + + ':' + + pad(time.getSeconds()) + + '.' + + pad(time.getMilliseconds(), 1) + + ' ' + + msg, + ); + }; + } + const rxChannel = new BaseRealtime( ablyClientOptions({ - logHandler: (msg) => console.log('rxChannel: ', msg), + logHandler: getHandler((msg) => console.log('rxChannel: ', msg)), logLevel: 4, plugins: { WebSocketTransport, @@ -589,7 +610,7 @@ function registerAblyModularTests(helper) { const txClientId = randomString(); const txChannel = new BaseRealtime( ablyClientOptions({ - logHandler: (msg) => console.log('txChannel: ', msg), + logHandler: getHandler((msg) => console.log('txChannel: ', msg)), logLevel: 4, clientId: txClientId, plugins: { From 5d52c19deed95da89515ff3f94045fe0dfd994cd Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Fri, 17 May 2024 17:07:16 -0300 Subject: [PATCH 20/32] add with packet capture --- capture-5.pcapng | Bin 0 -> 5564648 bytes with-failure-logs-5.txt | 1003 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 1003 insertions(+) create mode 100644 capture-5.pcapng create mode 100644 with-failure-logs-5.txt diff --git a/capture-5.pcapng b/capture-5.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..817d8a620fc8541f2fecd7fdfef5dbb579a2f812 GIT binary patch literal 5564648 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 z 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

WU0Pv-i8%K7g&sw2l|u@vA8SP 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

P*B^$e5IlYJ$&W{6qjzM#wRg>boeXTEE96b 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

a_TbK`2 z#{Bhi2tx|~n?HfW%7ZSU`X+v-E8fc=v+k8y`p+f%mRlk20D#TTZK1U3TT4hjw zPHQs%yAMAf-tEdX{5n!U|8^eWg~{iG>oka%*&&FjGY?LT9>=UX?f-@Xn3U(?$f zJj_ok@cH@762PT!``_vx_O8z6=hy-*w&txas6#$KH$6uS%Ldb}Zwm}w)@;qdRRHiE z^nP=Pr+EZTWML4_;sQ8sS&j{R;dDOgENe950R#roj3vBA#Zx9b%oz~YT;_3q;Fe6j z0ri_vN?N|6Avf+2!d+||Xj((lJipL7AM?WW4i*c*1c(?yFip~>z$==%PB+;`y!0b{ zk%d3O!5h01t8TrRdzLbNF-IdC(l2xSW@VDkJly;jU6GPCknOkC|Lu3BUc5SHu$m83 zRl)z9+5Lpx=RkPZV_y>8oK9dNBC&FG&=bEIo55G1(Ytrkj)^D1eXvhfD4kTCMyo0{ zn5I4v@sJ)5pS*51^SBDSMS<5y7~%)#Uu-5*?qpY)+RuPw1DR?qCXo36_p6i?`>7a? zG>mpyAxwQevxWPemiO5gE^oXbWb4V?kNPUvCWy`jDd_X=gZ91xO)w`OV2Y3JF?_J7 z1w)oRN@h;5gg~TA720kYJB;V&V6KugqvOPlr$wq^g?9pX(7)`T5Zf0{hu^?W+@AS^ z>kn@2Zr?r_?vHPO+JAZbUm_mJwmD(&IrCZj5WuNH+3TS z#%~7unJcH;y|{)3$UA*{+1Got%RJ@XWZs0}p@-rA8haQi5$~I_gg7JPv&?qINCM)rLL0(4;ECp{n)Dh1C1==g$^C_CrqV8h z%qCd|ejBB-4ATiz0M+P{Zg|V$2+|bjY&v9xJ^7hZdOFn+dRDs(vsMs*ywR%t~$dc2~%QHt1z&@wr17G8TgKx3# z1pmL>y-jmmS9&I>ikPT&RrkUX6OOJ$M^6$(1(Fbv5J{J+MSYP)f)Z_tqzTBf2cnS) zAPJ-hWYU>{C>BY#SH1Fb{y}f-uzT%}nN9zQUUWt8rZ@8^I%b~dc|Y#CH*W%=5gv za~C$Q0G6LhuW{BaXl=|ZqQbBZHbm;#KBiF&F!za!$JG}@`jvud5h97$2*wP>G*)nB0LrcWR?>|7)(*2+S4g$vDuSs7NsWXyd{Cp6xAAK^Hfn zNwy0f+;Y;yV5Ea=R+nhwu`hP39u(c=*d_CEst(4(ZO!4Ndchq~lW;|c$pN@QF8tM2 z$h%+?wjuB%mSFiYjJ7BR|KN#A7faD9qy_d+4Mry6azoL^IL+6{hX&LpcGM&XVU;W7 z6VZ)azl!WcDvZatmf*pC5<0voE{TwXIm+0zu@0^Z|LRFFfa_d;XcK;7zxCp}eqZif zEo79--LJ;4E?$z2?&6g+S}+9lYJbQ`VqS8)uhXfLsE! zDIT+ox|_1CRW+3iY{=&IQrktJ^<@pp<&MLDQiA!9A(vKAkdIxyK>p;oc^SATp*|4z zD`*dF;=%LrLo?RAC}dZ}ec~ZbuKYe{T8An&X6`aD6C+~^aOB}Jb$9{JM{WjjOw38V zh4aNQIe;+QJhODGNS$vfT;^y3`h|fj-F6z5Mx0Z<1`Vmxy;CN5eDvC_f7z8Wx_k?F z-|<1bw27e(+lnn^_#2Wc>xhn%%j}B?*=Jw5KEZ}?(pm%C6nSbwV#$@nE=(~+t7CFJ zXv%R-2_MHdd5Mi`hRBN8G&XjF{R^Y#6`{Vc(c-1Uv0|;t2C|vomck%`RwX1CxjvP8bF^|X~-v@^($F}FL3(U25q9~pR ztip<{(>PVHbk+<_c(59ZpJ-$CU9%?>EBFuey!tN56Q38B$May*6_<8UioWP+7@uo> zaP$vLRQP^{QqMzjG`l~zPXg*8{({jiG?IPN06b@McjJLc9PXvC=?1cvx7aCCK>*xL z{hynNTzqOwdn$niP#PY|&oMADel9tw6Q7gf&LtbwR!D1)9bvMYO{-43{0rw>Nw-{= zv-Zur`8zPEAt_E4UK3v8Q$4>mn(pEf=_$CMRtZZ}Kjy>?ig^H8#@J&k2eV1WgwDNv zyh^cRM47^Na=~9DKRdguY+-Fug?$R?s==P%ZXAtIhFVJMXh$z_I>SAQklT4MS67X% z=cF*74zmfr8jIAN>n?Yo?u(Jo4cE|sV-DDvIyO{`VZ_B+!ou=p>BG;O6_H5k=(yCgbE1{2{uGEQ4ZT*-l~W;T!5=o{rhbbyZnmBTJ?bz!ylH-HY>ekV zCH%sR{v9_ZRDfikv~2PZp^G&V!nZ@w!Gf+zK(R!V@v0=o%{rD}`2sp&w{QrN8r~RM&tG9l1P>{HSfQ#LyA8kE; z3`Ln*E~RsB4pC~;dTwyxE3UzhfzCrmDc9ov#ai6M-~4~A#qa%#x8CZUy%xXu1FXic z|Kq>@$AiD!`|IETU;nSSy0#Wv2d)RlXpVK`-+#}sMhE}!*T4V!|L3ByNNfC$^Ll`> z{+AnXy~Y0z8vEqGojot3v4ekDREHvT!p9wo#T{_HaP8i3p7heS;a6I$SFwv<*)qIJ zhIFZ}owez^5KD5ar8r*b!6Jh~5e`+1ib~m@mks*Sh6}fbGt}ZfUPZAJd9=rq)sr!z z=k`|d*-X)CsqIi#pZgG5HZV|vT-(133<3E33Hc)7A>K^GPHS0Ck~uk|Xlnp-YN_RD zx^{7(2tBk%+@m=zq(yHwd6v)Oc+?xfW&Z*wUW_P4Dd&NG7)Ci8LWzB=NSQ$tkko@+=W27qhhxFGG)Lv0>|~2!y`K4z{IN6C_6tP zg4`JxB@>G6&>rPWcnp9--rHADBN{cZHNSXq(QPYrY5=wPA!xL&CCAq0Woi}r?5PKa zq^fF9=WG%7xXt45ru<=EU7TAoH+DlSSPq*&uvO=X%}+#QO{?jR*$K3kscAtg6kume zsAX~VESuO@n!&09WFgM#Qq5i$0?zeLe;+5r$qsV#j@G7R8`G0tua(W2Sgru(xT6+9 zhWYyn|oiK*p8Tu#Yi;CI^S4&8$ot4>7#Z z%Ay;WHeltw<2<`voY1$M{M4~rh!ho*hc>zS;P!*-(9UqRCCZU0IkpcjsGCdu_GULg zQMv%`vfM3V(d=41SwB<0q4nTpFcMD7Zi2NZuc24wOYgq+-We3fnjH>i2N;fpDRFh= zY#1Vm#GL1Q@#gk^zK2=EcEmn?jHa8!zL4_`a`oZFFMFMz-E)Wv zljpr`aXlMf>K!n%A8IwR*P4Xi{BFki{Cm^S=9TdiiSceP;9P;nS4VTqJx+= z29I1a&=kMZn7pq`E@M|4u~<0U)GmvL3z2dB-VuWI#b%<#oNMtA_tRd+-S#zdF#l#N z%@ku(yl?>7OO9B%3D|<-hwmr)M%z~Le0|bbb&DnTIw#LM*j-&j&QA`Jo^pwog>oqV z$Klqlf3^1x|NpB?pIlt)F$mQNzA=zwxQ{gX++@pL(lxq=kG)%MCR!Ntuh4!L@9n5-9(cE=CwqvcW+MF%5iPrzU-5&$1l}f z;-m@7Fw0?o}ao-w*PEFsn88Nr92M3?_sze*6q;b?WHaB0$D zydT&L^wd115lz3^`BPd@y>i4Zd$*#XC8EtIv-KEN`PeUPf1A%IhyYb8iw6=Y!tBWl zN(@`zbC+SMfxo_lqX>_-4w0>B;~5SN&c;fpMY#%k5L&OgPm=eAz*SfWJ%G@)AA@ge zt+(EN3_rL&M7D~NWE067m<1GfMHZowB={K0XF-zMv1`_J=HvKAzAUJ8LTTjY#;v<| z^?_w;KyrH;F-d{{c|i+A#v3}hoHN7#W5^?He%zjoJA=^ym;iMwf+0bSfMB5!)j=x+ zwXV9v^o8#C0CA&{!OnbrZ)CL%&^^YA7(ZD3(6_UO+cyyt*Fh`50YAZVed=o=-jABna=)%(O+G- z-xN3f(Z}?}88{6>vX&(!;iQ?%wOd+VqR>O925LkviJ>*ASht*o~XLlaClPZ88@ z7J&K|oo7NfJ4^UvNrz%M7)`Cg1&q%^oP&iCt2jA9c+<(0m7{09&Rx2!P%nq-b=cCS zEk2Js8WrM$fK3>Qz<=Q6hLWf&lRqCkgSSReqqtlh_XR+xfojP>lW#`T$(Xl~J6GA8 z40VOJ7i&O_q>b45#o-92_4%n_XX9 z`@wRFFvFkU!bX@JZ9{L}zK=tH+g4=u>hs(8uj75XKYp8Vm>p=%N-~@Zkz0(cB{;P~ z?_@OlT>=Xhgu1im0oGb3Y%b!!FACXk3+QGUvYUQSjn2i$Mzas$1c=Fbu+wK;oAD*~&W%saW&cKE{_#;l&2;8F*eZo&qD}Yky^3b@}kpW7v1b zP`lm3p1ZXN&jqru710{(d3H&)njqziCspq0Tgf_D8eTUwL;QF%CL;6Ho+8oR7UMoY z(;u&^GDxq&LjGddGq*o$!w+K1(}EOW=V_9jS?CDE-2t~e+qsvLHmd35*TZnKI`gV|(rcBLj;jt4*+Nc_hk}c0I`~gajjDy`}uep^g{Q-?n=oCD? z^uzl|sXV$S?83f}?NxBndL@#^c4PG50OGCWp*X=n`}w zMiZz7>l>d3!_t-uWznq^NX~YRms9Bd(T4iO3~b1l6WtU{yJg{=97S49oS+IJ4{NO@ zsH1fN^6^JkuJ*26aYzCozHRW&G0yZ2L*MI!h?|u~%R2(?>lx<~07>}x26rFJVcPu| zF*jE)QEdF0q9lb3$Q80h18m16CxPvMg778CAo}KAH);n&$cSgfQ)B%FEc&;yf6_&PMnr$pt@o4Zh*5#wlJGFkGRj2WXgFyXm zYjp*!gdsO$U05)8nz?*~+jyjiYh*S)JfpI%a?UmoUq=Kq4me9reHkOQ^!08+YqEm{ z^EXe%N1pW=l=2+qxJibl`A@<*!fn}*G)T06bfq!vx0s&=VO&Mn6>vYZc2Uu2XRfdzZHbueT(B|@Du3HL^{ znYXx|XI@FmN1V8T+ZX7&K9;5N5HO?~RKA?yW| z^DLa@N&RaiCl~}~YT1Tci6lQb+y-MpgdS}|?Ek^W8eCz+*$Z3=bQG9bS@|3_5y1H2 z{emM;7nK|1;3qc1bCfEen(SeJT!b--ox$INW2m>XVo(OGbqgqprNgb}63yXgXKnXz z1pf+Az$t__7U58)h`&|^TOtBdF{5^+w8RY*K)t}y?REMU z2KqYlu{~+ut1Mhd*TB4>2=C!U<~0wPTU}6YSxeV$8r-2+>~bGf+lS{z%kh!tOGstP zSDm?R-mHDtT`tB!-+W*D)*USIs3NT+vD25wZH@Dn zve1|4auisaZv~3)3+=IwrbBBjT>_ho=2AN@ro(SWA={aR6Vjyfn45gGm`5&}IwqM+_D9<7GC6;)AR;q!Ez`8{JBXQiZA7 z_P@(2TZe}b0myT(bEouJD%c%X5Ppu-MjsZJ)ZH!9daEemE4?z#H%s#XMhiu~Nl1Mr zSJ9R_X1{D^FiKLS$y!!&YZcxA|N2@FTM-_801K;;bcO7P98d`2Cbf`WRI!|(+ETx> zJ$kY&u4>0ItHk?P?rG^YTe=;VZ*riUQjKGr%Fg92HOPK>g zI!J-XGPGMhJi}QPK7B#9wejL;XL8unLcrCFEXmNE0yOy;K|#{uVWZAp;kNjqy(JiUF$L@H?(LFDD(3Aduxg_op4q^GnTYNWpNpe4I-=Se)IfP$ zRZIg@F?5D~J}^tMVep|@vXpsvxdl~4DM>{8pmt0JFo|NOZg^3_V`m;UTU@$A}rzvx~41zrS94-vYq zx z{jv^?y&F6mxxa{ibLq7#wopk0M>C$%NH;P#oeKOftX2HNQApPux&n+=1Osn_DWD4x zzQyn`{=-;=!L7myXcGJCDPSF6;e^Y^SZK@(a-MGQSI;z#tA zw&YB5a^xI!s;zc&9~d*?-=}f}T^a%**yNt=H(Ojk2yES7)30yOgCLwP?V%_kOAn9~ z3N{d!M;E>*_=Tmlt`$mP%g&|1t7;Lk*&EA*GPa%!KvI>IDp{O6U=_7ncVli4en!VoIPm&lsJ|Gq+r^eKKE=zm`A4PM}n zy;skN!>9Q1{M8Gn`}pxf|HCjc1l;1v;Kp1oNIO1#2CS+g1l>8Dz!{}4GPtJL2ma>j zV~UK+M~H-M7GNVz%B+wa7xFW%BNxaK1YSLAJekg#4;p{RpSiD)P|yL}v=xkqeIY8E z+F*RtcoKis`T|?7_eJDKOX~_x8V};nT2El@^`5k-(bT%)qsEga3J#hLqJ3>J94__2 zoTQ?$4QCJMo;Bu&R*fd{XKhFva`hpdtfR3FX%FX~HHJj1Mw9rnHY8YkeaLc$#TPNv zWGjsq+;sDgnor{IYWx_vnMmLqsUZkbo=7GrM(l^K%n1FXS#e;;ksD`i+|Cue&Nvmt zTnIm>^16cQAI0qqb|~IdCFjp!SnDA)6_;@p$Jx=0Z()fC$>z58!S#jA;`j!Y8`K1` z(|aBtBVI_(nVoItn(oggsXen`<9m-!q9yo$7pyh%U3OAu(F~QMXDmmABw)KQHMNeXA3%hDr)wZtC z3|%?1TG(03>b7-;X6Ve>P}x~+m4OdZK(WjZg)P+TQVs6|DFo6%8q!4zQV~K+KY`O8 z_a6d~)efg^?h~F|S9+B2lgBhS8!|&dfhy0y4)F(~)x9SaHbCA3$}VW-O65iFWyshR zy5J=~f_?FDvX5(1=@Ht2VNY+umrL{a^Wjc7k;G&a(aJzBO#fbAWe91X_QUAdAxj<9;=dpM?`CcnUI|D_hDEm=w*5p_l; zU(sPE?~T9FPjy$fcQM5*ed01qGXNjsV*zNRcdwNNEtms~j+v(;3t`k^)+b?&K2q** zV}AUMzGpXTnwSqthSfnS`UnGoa^G2cd%OfUz<3WS2;i1(Xae6M4U#Yox+POYm(n&b zL(mG5y25y4=p2Ym39lghdSM_&RtRs^pu&h~1>6U#Q~wa@XhW8v>kWH|TSd1Z?xp)n z)+;r{`aE3?hNh1h)dMqEIvcP-@4_W8pa}%y5b}Y;Ed;TIh(Q_$xF6I8FJEhAvN5$7 zp~G=d$3>JfrSAd0MGb1@|I+T&d1)fTs~G4e?A-S^?pkBk2KX^*1Mpw|#~J|-zgLZb zzuj9@BLE{ZiO(luW{8}pBc(2>L|$#s0(_Rl?=9k1^|QSs%S(Q3>J_4Dm=p)wiaq0S zP@ut1^%VbnSfSe0HeAmB&O3SPcj$^@A6@JDpvBVTRbjmcSj%ukhK2ZL>4inFbhz1Z!g&f7J%VQqX4 zk8P9Bk!yi5OsV)w?Q<*MQV3PhDj+o9N}+@2N|{@I#TTrhb7w1m?Nh5~V}?W;H)GB% zbAgEk%M2UvH>{bZS=h=Odwu|XPhqvkWa%VHG6=J^ct~luP6F9REC9YrkDnt}CQ$D6 zs)`(2BCBMZY(^`sUmte(`~y9%krN79PWNY9Y{b(l2e2nTgD?@0hF}N2ZHLj`Cq~6) zLb@Q}ap4mkWP1g{hA`057fBzh&I_CMwa5}xojZNTZ^CH_B*M9J^h}h)(fI{KVDN=; zjxJ};qGBjemLsqggk7AgY`V%y%(fy__W7)8%HeU&J|PT8v+O~S`4t|=$Mu&E1^>wx z(b7lG=Rz^;(KTtnPyepJ1V|-1JtHf=RG_1ATVx2ljFwsscsDI1jhCFD@DwBZy;zNH zl(!#L?b%`PWQ@R$Cn$gV_JeekV~x4CH*pI&LkLjS8N_#_K!h1q0$EBkd%#$WDhE*9 zizRU}xhj$=z!pKx5RsJ`e`{}dw+5@fzPb9pzx`O{Ws`lHMMeiIhHXyr?h^=gkaBR# z4YO+L%(h#|_P}_+30Q-9yi6X({RupfI}GSV#v_1NVL-Z_*}3RDeEaP>LW5lK##AVh zUAX~3?(FcLcXD}+EE8RgWzOfbE&B;>Sck^fIvX~enl)6|STt}tZUu}nScA0VK_o~Q zj0LplYtr;(nmVl%*?ok;0;LSEP zJ*24W$ZeC2Zj$~LjBe=QbSrK^YKCfYhrCuS0Dp*Q=mfeg4FHc4HnsK8jQRdzYQ`D! z^g-YG+k3JW2+NT4AkI~cn9tKoYV9@W2DJf-79pfIj6#Df!5&dk;SseiD`~$t=AiU| z^-K^r0tWGCfA(jcO~hzSrl<(f>wM{vW2Z&DAdQ%Xb!|~xb7(ktH9FKLyv z95cO?r-~IDuux!73oPtUM*A=U=#{)a`R;t~;O40ee!z1X-iLDb4pVv9v%nsQjRQRi z;&nm*C9-fxs_)n&LDari^-hr6i)80UWfjsGAauwJ9ERbwFjj{1`?eIj+Tkb% zFK#%+`7gDD_pMoua`s{qNGl~vS1ezr0U=w^*pOWW{4pMatLV;^_q5v5KC5Wt69YF% zVRT&!Pc6z&E`1d7mpKr!(PXedx&lw5L!^>RX;mQP3fKyzQik2(BU8l~Z3&yj=x}cr zb%iWWaD_BbxrReOsz&kmHJ_nmRlcZJLC{vK5H{30Yn&mRv~1&)SQ3H;2EH=(r+nGa zp>1JD-V1rEs;%SeSj1`?b+6+m1scs1S}hv1;pr@8HZSN_WMU=#`H*jO*xEUY2|#oxS|kS@%sryfF8 z0elxWV;J2oE*Apwd{}z9oa*At?&mwT3DK-?(KWeeTw(AXQ)G$oHKY7HhbdM+Zga2HjMs@mk+5;-BR({v0wU!_i zOY3uAUahU3Z=To4l=G?;ms3&k#x`oC}>!Ql!-1XchA4J)d$g)_f~w>`)cJYgeyRD z1r2Hyo4AmLzYnde)im|_=-c651S6H3#$KFry5>GmC{7$1+%eP=Ln36t9&dw6JfyaT zR$d*=f@dR^tg(3 z=@V5t1cfmqWH1s5h6d*R(;gxd3knS!Q&3Z~%wlLk{t@GEgY_eI%|wNAKRN?1A0cuD zX<9~3j`rd;(9d4T%-k79T@@ZH@-jY+?4+wW_UyY`a+-bZDSt(^MT>WY)@;|BJ8_it zF29NH!Vc<(2xwJOuDj(5ha0buv~oPAqcE~w7izACn2r|PK2c%|h26D4KJ!eVy#N2q=6=81|z%$lLSp1U?sYX%!& zZfp7Hh(Ue#)-7Jkr=NH3_|I$C^69l}`SiW_^67i;<wE1!?kM(8Gq)}gzOsr%clw1wQC94wQC6(e`ec+j9oco{OOSK zr$fe{4jF%X5AVH~knv|eWfM*4z4sC_!sU42Pap05_p=B7^d8=SKYQTMe40IQI^F}H zdB6NwJoQ=dsn3Ex9Wws(e%V#_KwJuRKFuD8wS1aABxJ-`_P{xNTTUr|=2H&sPjeP` z?&K`^)7$c=!@!>o1AjUU{OPl}b0=rPpV>psf={!D#4n#_4>^lFcXAeY?&K`^GyBb1 z+_|G!nEAKZcW_D|*a3!oWys;q=|3JFukOGKx7WcRh*(!CdpPkfqmV1AUQWJcwA44( zu0)>6+M3Fd)nA|uYs&doK~{LEqOxuytk zml|I$nqE|rW~qV0;kTpX7vlEG+w-WXI5w;S_kVSr^@U*0S*L9kIRkVF>FAm17H^og zqMT~T24>!bjRz$J85+)N1AdDL?F(VWLq28)72a69)$oUZmw`&;4cWV~I*$>Y#vcz|$6dqss7dqm;S&1F{aRK@;^n^Kt`;+0T6Z<|lL^+!E+VYUcR z6Vi-P^q9u*Myu`Z@$;`y(Iq6$6fBFA%x(>&<7N!+-a1wh_7ysD_B!i(IEDA1BLGW5 zGIloP1%SnL#;A3(KLBa8%_v{?u#nT6xE}eK(`tEKkM)I;4u?Z`tvduPuMpC}ysArI zt#ujpyw)mG}Pe7w^CK z?t5$3e)--ne|asJFR2IXn)Xc60DJ(u$E#Mi^tyUxU8tg*@)Lw)AdC6wTG?{#8Hf#o zUAr1?Iu}U7f*Qmsr(zDMApHQP7e7GqjGH1J<5BY+w1*eSbU(9253C0$f`<{&-n3Ga zm_WUEk=k!;=2Yxmd;i~Ex%zGmcju*X*9S@(4;8^jF6cVm48K)6EOt9)<}@Ggj%hnm zk=+XZiix^k9Iqlb>daDJo2UvhTLXf&Z<+4$^9>*s%ILP|^SJ%dXPhMc+t>y~2_}>D z&-p8)9@T)mkB0l$zCFeuUO_SePK|3y?Q;V!E+_;w%>S9?)R3{Mo=1ct{$1Ah)W zEM^gLC%=msq72;O&^Bz&(nMID98vF}Bl(rFar70yQ>c>JaIQZI)0m64+R1Z)BPsIc z`BG^&^7<#sq!UthU$AXvbLBZipT^s}9u*0LtKOzH1rJ){70FeZI=nffI0S^%%AO^q6*B*_IK17RrXKXS zHzvs8MFyF@iQNlE>(&Pl~k~TUyTqK`Fv~@mE?j6ya=@g*c3h^dAc5s zpf8M==IwM4SWy9N@)VYyez5p3S+HmncvMt`@*R)LQLCtgsdx2H`c>xHQmlu?YjPCW zLTUq4tz!UL+i`mbZ$cK1BuwX5;6!FfR4SzG>~({Ba-G=0=I5-9N`@T|_!@r(s2z&F zrq5UU#0JeT{p35A>VdHxzBV6#+_o-{H*-8>0jf*hO%G%UlgHB+@zZFp0-~Vq%3$Mm z99%eXd>5w2?y{B<8ej2UMK5#3nF43gjhXn$o{V@zW=6rUah$PcOII1801C(c#&Z-B zojeZ`#}gVzyEp!1^zG`U&I~yPU_xLZ;6p(FJ_A@l<+Gs+4zjA0c4Sb_JzBa>SppaF zJg=1IbY5v;G4l*d8%<7T*py5HMm2TpMfCQi#LQRk^tBQhw&zS%5m3&rrf zCMpq;(T2z02KppaKJgijtYRzF4sf7*8x}O4T2^RuxMl~G1|BW7?&9tBUw!duNYCV* z7p9bgTsCo)3AxQJ5;Q_szFFp2*{UE^A|{_BR`Q#kMskV_KeDf-#TCxcL1nG%Fggzf zov_M`-_ji>WTeucgM@95+W)4>c06RwHU#kG@i-eifu0RAWa%w$ZJbX6TqGc{OdsxI zL7IO#h_|OY$4glpEJDSaGBXxVX-G;zuJ;O6-;9apqr(ab6+PBS5PNR(Pd~p0y9e(4 zq_~Gak>1;RWJUTenO&bsr%oHlpg2nq5og5;E}Oz#8Y1EV+drJ_K;8iRWHolp9Nd7z z0rS7I!ezMq5)uN!qHQVMl+oUUAqHJIO3E>VE`Dn)hTzu)J`kvR6{291F+A>dlU{M4 z(@Ja3iwViS4RiaDBk{>q|k39S6@QaWs5I_vjv(@VU?miK&1^4BICIt5(MQYXARfSm9h`~|Y0N|V8<#RkJR@J{--ueO+oU9%w`*_IIcX`tun+Pk`Kj$|C zZh4Se`3xd(o!6hNBLoU~QelMhL9hG+pYa3nXthkAPS>u3xz2idR6^x-WLxv}cp=mE z&|L+kdJv3JTdTF1hpt&ipPw8akFafSPsTRY`A+7V)H+}QJS5=-0F-YrS)-Sgjsy)x zedA;qK7r`SST^wy){%+!Xz%;AEnO*vlruCeaVCT z$vDC$vKxPYp=wlTDWox)OzYW!{zr^_NT(^NHY zdZIFjBAn>B0s@LK`r)!ReXW`tmu>HX)~zzx+9EM;1Kju#*2?l^k`Ss=Kh-w~DTVFb z2vG2f1j?siuf$<7#ZLj4kD^2t(hs617;%M4gG|~N!@{_Ard8C0LgX_F$KZG}V6z)Y zX+vlcP$JYJyWqwOjO(u>`@0jBbFfJ8vz~L>I29i7k*v&}s3kwNE5t;O; z#Y}NVL*(lYd;7i1ou#X@B{+icAeqDmDef;i+ zYx?(c$Ns+h7azhk@bR@PxUvKPuHs+4e=NwURqHAqXf@Wq3>4UbZpE>_;lg+}!Px;( z-*z)>_8!UMP9zn_be>q8BApvW<@R%1bRp5K;ns(>FC|w#n0_f6ryV>SyQt8=2Fl$u zNPhnL;M>vB$nu=Y7c?OUW9DLteb)6;m)-@U)N{rSy513&nDfVvRRCeInmbqx?BR#2a_ zm5~Di4`5mJFU*1J;~6^>MQLEaqRA|dB!!<}dG8ljDGozO8O$cETa4Z3wy~IvMxjv` zhf+?_9^$U2VCXgc0B$>5>fyP~HtelHr3;DOk5 z{M@vaDi#uhmJE)Z1vtP-gR2>F4E7r}Kr%k>6f!n)^f8iDUj^d>onwTcO)yT2V2hL4vBk>@G{(Vm}{r20J)OD9p3u6E+|6_#}^DT5+PO0=Pvg!^S^#iI}u8f)oKM zlrGBI36e`_edWAy7PQX1;OmQKhl&(9D+o}@`J4<2wD)4Bq#uf=4hIcI)t|lW&ZMkj zR*%eNQ&mIfXBD;6e((er5ybiFEWPtG>Q?)5Rr_r5jP9tPQzm3`Zvm_9U7Uu=XRNbI zld(#jqS*h&=FQFZ?K?N`-dn%jpuclW%e*YLlj=K7>*1iSM!=tZuNndW&%aqzBS4;^ z#WeBVQ26lX#>N~93)X6^kfkUPNKEupt}G!B z6$TrHmDL%zVWxd&QOmTf;(B)G7^;h6Ezil4Lpz8{^AZym?RyTiN!_}({4JbJz&wP^ zgge>4hLDVFS?73gfdiX9OV8uWcW`gqTy%^C zSoz+}hhR6FaIVObKqH7X?bMTYHY6;7q407E?}6-O(dLgq$^*-vIqu$o|I42_-1}5^ z(?}`fLTjnE>#wnBK2VcNPb>&P)1`zulGmN~NV-q$2D~^O+6{_Jt;VJhJMm91 z-sS!%9~QPi#VwNj0qKz&`^Ch(xJT}^c&QZ%y_NH6%r^&Iu-_WZiP9=XPaA9q*GP9+ z?V!Of^h0Q`B4-5zLpF#VP29zDm^C1wM^%tv4f14Lxu*-ZWsED|aJQc|En*_Zo@<+! z6$q^isBk1W%{gn@LuCV%>Z_9_Oc|n9?<|H+bP^#pjSIjKsY27q-aaPN##8)nS=AXK z6soGD#&dkI0l9D20{PIy%odv_1Zkj;ps5X~KZkL4aI$}Z)4^89_ELBwQ2YmrRGk}o z3u`|0D9icxC*s!TbC30{qK~xD^o4BVn{{r*?()stDS36H$9D}Xi!rn;Dv?%DF{AvD zuw}$mqh?VWT!9Kghk{9;g2b6VhliKNV+3uQx#`s~i9@p~Ph8*qVxj;9N-@qb*hCQ? zf=EDxPQmEf7#6~b9MHDj>a(eqYuF9z?xnSJh8>z~Z4Y*|4i3x#jR>ib)1Cxid>P@{ zCWm7gE(o%oEYAkiR!^o`>Vt#9AzoMf4QZ!p{v=?i5b|YM~K@&g!Kt}eL+&`umwOKD_ABlhK&Cd^z4OAfPT{b3 z{1$K|8If0sR&|5X;1DK6_^+H1D@cwyw-zl1aC2ZqP7E&k!WW}9hT$6kJ5nlX#}}6y zl6GJC$o`bRhzC>KD)=Pny&i^AZE~Rx8yzm7BNRAawbKg%iErv^p=_DzD^xn!6Xw%V zdoINK8EPm^T2LvhGZEHASIk_UosBAM9;`@fcxMbhWKNG~4K_MXR|*4T@vknvbx8gQykUdWFh9^k3@c z?i~=x&S;8wF-y^4>LM+6CmH&pJ;qWKL)=NDq$98z+H1+^jdGWL1R$E%z=BP+*B|?){MKj3n`-WCQO?A~&lqf{A zmC1A^rZwpJxF1LdVcq3INGdT=Cstc;*r`hEpylMFloeD#(EgI^?n|abfxcJx|Ec&E z{-Db5i4t?Tb2Y2t&ln$$Piz(7_|z)CZtwkEYGh3eCI`!dJ2|Y@};i76s98< zCSQW2&0L}(Z(r=(!LBz!gi0_g3+#0c5K@VTxW^L0Q|GHC!{1j+RQF6UK+zG|f1xeX zqL@pOA3-++HB1h1K~-9oYChp@i?5|8c3MX1r-(J~v@h z_15=k_i!(xx(D$}WRt>N`3Zm+qgqRdycKV{m2bx{os8r5HRK9hObb4)V}v)W$tr>s zD*}(wS{k3l+7Ey{WmexMqFwI6M*UKZQnks8+EI&iMl*pV;1Vv_n(8VM?6tajoR!k z2YtC8&_o*(YQRU*M=k!M8qqP#t7tCpm4j#Fn`4`T1QSA$fW-n_+^Hl zsb6wX^u!lM`}r_QeQ8*vzIsN8Bv;&49kScZd^a~DLNXBNWbwTMAqm!85acveH68)d zrND19P!iL0U7j`)%pEsXOrAEbe7I}LavsMQ5LdAhiNv4&Bo_1HwJxE-j`iWoO${lc z9<|397)GGtdRw&DW`sHVC+wjbWpR*RjL~ds(j9FYCOnjZcH2X$Dco&`FFN~V(#zo zOV&sBMf16Phd1e^`J_^nipSSG3xLyFa@ST}m))7ak$ai{K?$B`fG%Y<;OLF^JRkBk zGI(D`-C6Tuwm@@Q*Y5g6kB%+jro>Y`2djz4_(`x&>lYo`J~ifV@j2l4(8rHa>6jO} zyg^MWvSLbPpW7wfDA>iK6yseFiQuan)#)q|j9>8BDI=H_-d{dwCSKSl&1h|GLOar$ zFB~QT0e z10dVPgQ~^MwEwDwKM*4#o-L>FqbM16@oHqNXz3MEVA!3f^5`^?)Gi9Z*p%7%Ar5RX z?n_)K7rmaHguc~Aa8}>n5@vONA$ZYxIZZaOZ4xcXFfpDJWu=@L9lAI`$X-W$+G^)v z8K?&J{Vz{YYGLn!ZDf+KeP(Xn*B&!Lg%|uI26A5bQt*;#6vkxe7SO?NEfU=T)eSb2xJ?O$47@hx8K|9eOrIf(}@I|S7qP6mJ6vs zs54YM?PXJ7h`ykpH2)Ji&_g4*U3;H4z2^53P}tcrEPW)$HI=9@4~7tw8Q}t31pbdw z^Avb=a!B&yk0dx-WD&(>Cw>PBN|=@*iBQ7P$oYs7Uun-u13gMrIc0n5+D-Sg72ZBW zP)J&|DPh|zrRNVfEh&7W2aEUa5b7x^Tv2phq8%iz#nm?|hOq=y2_eyDybJA+ZORRv8`PGz-y9y_Ef&swqdSO7UnjXWL#=K z)yjS3Yari3;eyw9m1D4qT?kwC0H0_Uz! z&1u4Cl>9MNhbdv!|-14vDLw{uUQ(J=S^8SRpNoY5{AMoTm7mZn7U$gGjL zeE~&&QLYBYNS<#lS2QKNjIWniut5GI7DPD}f%UBS*0o(Ae39YX5#&5x5_NZ3JtgsL zu_&8?Duj3Z^!E13`MloockQKfP;nIuro`5$HXLG}vwCY2f27~b1|hq(2Kv=_OSWro z^()^x`qYKMYOc+OnR3AXaG+Y&Z6Aq6GVd_ua8)^nvlE7H%sNauJbk^6C-7X~Hs^Iw zn1ZGvv%*3I(EuQTG^mQED}mhHPet}!ysr^MW-ZYwrVKmAMvz&X&1jxLVuB@!6xm9~ zmlxZP@~p7U=e_x2$M&X#ML7pV&aN$@AjFx=1iq*{(%U`w`A?ysKQQ8w>UPa#=B}zjq{xtM;U1uYGpW& zcLmPJRum9^jVNM`(3trJI;0a_&n==^WEz5Wgfk@Q(_Cf5z^UJ z1LNOspTg))`OKG1kT$XiLmu{7aC^M@&Ok*VQwI^8NV!_aE~|IKFe=&bT$>`*P4@8v z?FfNW@=-oWLFkPZhhH`p$MLE`-kw2}R`1@(wu9cm^i_R)7VX!Q8g(M_lsk7uBWOC1 z*R*@``Gy&6QqoMLc#Uf$iVA4IQ)1)1l=Ugq4qQ)m0DsG>%u5%NOM{ z_K}k{)_TV!=GTadzMdfhtSlnVY?D6n1uGR4Bne_58YQ+=?Tg6<;Pt?Xae{h;^qq9WV_vf8&PGvWBcMD}a zgvwI&2>W^nX*C@sC4R}?ug#qpEx)Tc7yjkiNh?@VSkqsvg1EhL%W3H?vKJwfYe&Z) zY1Q`|E85Z9MQM(Q;>&RwU3CbO!OhP;!(lp7?dSl@ay zMXa_auvS1frWY*d~6ma(CMIK_5s(0K&E zp`{hl?=RG<=7z`$S~P-B5_wcmy|Mj>?3AK$iPa#{(t~h8ZOI+yy0ybb?*(`Bb6-0f zx?QoWs1{yP6xS{c@Y+2_IzeS`LVMOz6(+?#M6!jO&c-YaJvqmc?!-E0aH8&=><){( zN)+1+zB*?Tz&j}4`Vtwpm|Eq1#a$GPGcmkrmVUo5L2MdW?jl%7sZtDxK_-1iVw?KK z;vx=phIkg_FoQ`WLKdaZSYSw$h0<;6Z}oUSEKJDZLz=#oN1H+nO5r-5WV!($hYY}*Na@haA?MWMK_rPS}bxa zd2aI9Q>r_R3|O!-0*ads7daf@Mj@oT0R6nh*6m$DaCq+#j~E(b!}Pg;A9AFEBJpR$ zLYq@iIB0A~J!>_2%dZ?48jeFl*@I z?Jg|rfMVu|OXTeOya;5p`$OUl7F-P2L|yf?!d_Yh=1^D68IIt)jFTApio?ivj3Tm# znjl7v9uVtfTZCykjJovN5WF%H6vaFON3eJX99E)PaVo5@{-|JZe0n4M5Un!MtzIQn zY3L8=onkH-jnGjl2auquw83seiS^ZG*(NO2vFhU&L17tWlDxE=R8?S15E;&pOo21m z(#mQGLp@`V7OMIfcAO`BVnMW28>Rt(#n}4cH+i;UUayUE=mVt7zQ6;Ig4*OkbVPLR z>$sD~xR>s?f)Rfi_f{I!#{C`YpX8GBt;oMN^A2d+W9WJ%$>o~jj0+mThEW{?XRhU} zKv3W;&xe=;ISkj4D;&E>SkV0)B@qTr@kPavSb!h~r2LfNF~qMTybUc!La7(NMBdE) z@<|muV)tNlXyMH@L^!LchU@9hss~THxp-RZrXTmZz3NGyZruL>=VZlN?2< zmB5iIp^}eb4s^aChT&u!I4Jq0w!|sC&@a9RmlRr>d<{w>dB4zNN+K?x@tS9>3Sso^ zC0T8mPUmv&1KQw+HN(Jyqf$rj-h&{w@|@^u^jweTGMnUTZCdB{ISR?vCWrlT_7oPt zNfZ#u8h~}!OmNTCBm1-0n4s(fc7`ul3$AE$DU9*G`7&&xuTqI$Fu4jweo&htN3Kt^ zV)3p!utnK~`Vhe38Z_~%d*NWlek)RGtHW3S` z9h8gW$56Lk8LYB4`-9@YJ>W09V!+55=i0#4Iq`PgF#yry2scer z61Tij$XOv4pgFY12|~F5B*O*9F1lNi(+W?S;{!@B2^gwLvx1CYMnkWuZlgx=MlK%$ zGg-7@7T+HqoJ0>*OAa$ebTsdi?CcMwI|E#KjQcEkn>28MF%gF9k%9(68-|eN4Yqn3 z?_97q8_QO1&c>^Xcw+jPAV~M-bXqJsHe&7qWPLyf=<-Azq2qT^sG{>BWSwc;uhJR4 z^G?y4AxgSR15LI@k8zueHVowomj_C#1I8V^fYV+7nq9O?C@4MfEl?V>HwwCWco>9y zzV1b61=wfwujW3Hvjz}l6QJ{SpN-$7^K%2A{(>fQ+SXL~)V5o&w7#%ayW0A;Dx1OH zPftsxA@a_5O-$y;^|a8|F@LJ%tdCa3^wsr`FGKZCIElUpE-ssasEQT^UY{4y4%ZVCTRF`7eYRn&uBg^*Vkng zr2HZsnd$0=2Rj__zxMv@H z1kflKqrbCYjQ(m?hrz=&g6K;e*(PjjSumE>2ZpY@f(K?If%apj6V+AW^^#!u_mM#t zt)cVz?QWsN*)W}sMbF$piT&+|4>mTpAFcn%7k3}6v*^lXb_|p#f7FY;RH&N=$Rij| zfvAVu_W}%Rn$QpNe*q%OnNy!fjtndcymMZ*AS)CDcFt4mG}saBQ-D5Y<-qeoK03k; zPOK6Ix%o`A_TC(?6+O?RF9B24r~&$8J=8>-1&)L*{}iv&8Mi^~J4Q z=CHEpuXRE1L%7tPx)$AL!UL|#pl**sMA{|&Wh6v6mLeF;1gjw3PN$NQGe`!b>LVOV zKg7^O2x%6+an{&$GRNRNw7%cyLF8x8yb3_W=qVxmjz{;&+weYnFc+C`sL?;c5>Id` zDXv9PDzOYml%K1_IyY$47?Bc-lLeuYQb7+^IH%gX@Rx%ZQ7jJv>UD0j<_9k?*fR$1 zJTI70Bb4vlG_<||E+dw+0sBsHor}KaAu9>#2Z!tpXm258za^wOXl;aPv~UWcxzg%< z=m#P(5gWFsbk)}F*+5aJPwRsfW7FyMy(paScZ^P%7uC(6pqQ8(Sb$vV_w02xWpAT} z7iCA8(Q36n87CM;{*j;S8#(O}G*04EJ8HQFhsXU@6d}&y63Xd=1%5enQc2mwzunra#ZERJ%SR9E8WFeRQ*^Bj2S5-{-qV|`Ovz)?CBaG zyPKwS!>s!D38ZGAhLT;ymn03*u4?`C2z)m{#&v^c5H4+}9x$9LkqguDO^=2|CGU4} zXWNxu*bNWMjp$;pUU+HVMT=XgQBS@(2%c`m!&&}%{1|{2Y4HvU8cPR*3~bo}sK^ol z`Z|2u3#j26l1)_?Z$b5%nv!Cw2yrS*8j(*`R;_%{EL>xYuyeAnmaR7iBMqEH%$AiP zQ0#k5U7M|%Os}=wTpxB2kae8eMb&IU4+siBM+ay%_kG1!Pwk*;<~H80B|`t2jD+j!bX)}l7jL#w@b>Q~mpKim70lL`E{QBlbL^mnuR zJNq-<9pkd#JLUn3kD(&%KHZ!`2e2110&+sOKSxh!-?mCg`NX@kebajNv?$h#3!Ku- z6;^BU13t;m1? zG6JM{1Z>z5vI2Ewyh<$-!5u8c=9i|BRoD3eO%|!Ck~?Szdvgr2wTyJ;P0N;MwGx`E z;&y6PFBu*qC3ZN)v5>FJ2Y>eYz0Z!1pFM(F#={Oh@Dh~xGE}hY(|kg6Hy1xiy(kYk zuieMAi;Azf-L_q|CjvsT$M00@A7OW?9w{D{NLf(fH8pxPZ|d{Z#9s3Bs!sHfC#2#z znDht0)f{&d!iI|qcy6zjJ-}Fl_~ftFKfQY&G6P){F0i~==Lnxz&^30ncZ@>8xZzXh z?t;!A!4%Y~*-z%+?{q0v&^R%Jv<6u~@)E2#j7!L(#A{|}r({E9zmW2osPMW~1riWl zg7hB40Z=~$Eq!M=dHtb)k{S)Dz8OJCs_E1rf?y485pJ*FyZPq{!Slh07qFcUL-c+s z&LE>f{Mg@zTQzIq8ay>Kzyf$|>4d=3VL26sR?;BCt@|^H;&ghL1Kl*eTufTwP6vKb z|E+La?*_RfjUR zi*q5pi4>H_V8QVPy;G(@@2nO52EFeLcM(mHx5>^Ci~x7pguMfIXKua)Xy?|qN(*-L zl?C4+M4PuqhAqo>yheSrzWM0SF(zd7>5I83c^P0xC^*z;FUvC|x-wzx?(KWDt&VWD z&0HTF`j$mQU@nn))Kn}T6x6t^Pbt1)eBcul1c8A9WE%&2_P*85_7>lBv%;4?(sN*@M8~n3tUr8G(&)iy-W>r)lPH~fxRf?MDh?o7|o-9tw0F8qYM5yWR zf#L&7M)XR$*$lS;Kr=3=?G<;-?6qsfhCE0J-=b6&!ddw5bUZk`USc5{rC35c`;A)3 zKpdYe`k^sBbOo8|nuC~Jc46&IJ${wt5Vl|`p0VoQ16hn`Fv_DgjlV`6!wATP$CbCh zff99i6=yq$d&;xlSnA367&RK~;O^3=$JBUS;DQ-qD>0vsyWqZ_;%FLTQYqR+x!<;c*&c7n1irVORy0)?z}m8zUA8XEqbj zeS8TiN#90_79NCZ??8K+9=JQUxx*u@-s(2qg1DrD4RS+Y_6_93+_5i6@S^-${c0_` zg7Z0!GQhLWP>zatIlV-YK#0^d1DAeeuium3FZ%+O_pBi5Z}Y+J2iGe*jQEsw<^c9k zq!>#HIN6mC)G~CZekqR7QUBIxq5-PZK)WS$8)pk@G}F3O?eD#=da5I>w_WHl)F(K3 zA5k}h1KKhj%U&6QyS1YJkt4F0p?@M4UY47`=88EPf31(m2+$~vz|GS-`}kwGu<2B);bBM*K(ynSEHxnmR1zsEwuh2` zg(l|N_aUy7_5Zkc3ff~tCm;0$wl4JHpUa9w<8vOYqv75re#7I|sVj>P>AJ8mdSO{Eq;#+m8_?iL3FNU2ox?%yxK@U&RJOY?E$! zJs9pj{nYL+)nuc8I}|yJEp00jrQJd1E0IW^Qy_7E6g6;onxn8>_y8F^pW+!Z(Pn=FY40TjA}5rf%0x8q4~2O+85Q+I4*)RVE@ zsi(4pnR$VOW;Pk4;;UWxRiH-8S2LlY_%R!oK`>suh()81r;I1uLp`<_$1eAxzY`}H zgsKkj)WT^ev&;unOL?yG1x|*T7^E@XQ+OSg3m-3VTrGDr4u~rHX>h@F!l$sXE^x2| zn+|Rd#MAB&B6uRV0&06I1HE`h?0fdf_AG0*oS1o}ThD+P z%+c00U)B1BU>t!99HtYaU%b*IOx^Y#n@gI=!TH2YBOHp2Zk@K^c=_JI=kBi}#f_jn zoFogcXiR}-d)`gu$+}FJ1*=(ggRVNNw7Q8UcUvqqp?m-~a5#Z*8DPz#;zT z|NmP&?f>Loz4fCTKfYlt@_+q{>hFK~pMUcQ|M>O(->62w&wlpbfArZ~Z~f>;zxUG@ z|LH&cm%sb_|M5R5ib0jQ8)h_Z87^&)H)(8+c5(d%r8V50N#c1nIeY;_%^@Y375+a= zW39Dt_#*4+m=nQp&@00zcmi7KedC6`5)`{z&wwbf^l13(5GLOvuzQ(+`mpUFES3k3 z&L&1DTvpgOYd#?!LXr7<6C98bRh~XYn7Z#xBWyaUjwsK1F2Yn+y{J#kHTW^mdFUwR zS{z_4?%{9#zt-aS{>58wbWCB;k*jYsi>yh3<&MkNz{U&PkKpj5de2XCHLl#XIDU?u!gQs|FwFLAm$=s(WccOv<8A z*KC7*7j4u&VLRU^{Ji=^J;Yq9(>O85>pp=cga%Ungh<0}5$pjb6d0tCd5Lo?h2`@gu(#Km6Rj ziEk5Njz_)IRG5{{B6e@gJ3cFcNywe`(mmRD<$3$}re$#U>aSz_b=(n5{@*}(1Z{!1QYh&i7p}@C|NhsLE|zN+ntYw zOck?;aG251*EUR!+m;Tp7I{b9*i^=Gm28odIXr?Y%!^35pA=Q^QYaJ{SXNMrx)&Xk z=eg6baB3Ul=HX$Yo~)BdYeRWUdQ)TNgX85MX}n+9gSb-yQ3wLrQ&3sGWlM*#q{Wx< z?fDpi(?2Z<`sqKyve1edMFQy9snG{hZMAN?#I36GGDEi0G4jtCHa0~Cr_LA7!c9Oo zQy7=kuH0$V>9CJ27CaP{vwZlj$vhhF<2t9;P?6PpC^%_|#(khLC)zt#?_L^Jy$)YS zjey(9jy9DVr=CJ~6FE>>YM1RWCXbbDp<70eVTecz_vK95>A=r}wYlavQ2x^pXu}_6MyYJGhntWjR zY>ll*FGr;}Y}7My@gi2Ds?7lz6_3L<}C7UoUPcgVvTDA!DA%)x}YDi`^1jyJ3Y_gv8xI6JMUym zY**i`vAAr|y1H;?kx|gLW!5|zYIxnDUvuYc7MNFN98a#rx_`xW3-e%Y9UO9^je}8I zs7G#=<^oIBAJ-z6X2Jz2t(ggELq;Wz4?6F>GfF)1Apa{3m{wqKj?A%A%79H9d+?-L z0oOiNMaAMfA-!e?Qo9DSakSvx8J=H$2Q2atk*N_#x3kO9dQKK*OTpYn`!1H~JFqFU zQrFf9-8$kV|3E-P*cfjZv-JE#Y7m%&MMq14l8V2%CA`7n9zfaUQ2Ioisc_HK{*EG2 z*}53Hfov;uPVz8-sB0;SR#~_;T-PiDEwcA+Va2cEr(ggkAQAy;eGi$wm3z;iEHFZ< zFNz?SDB~;t8)Iqq_UA*hu&Wm~VluJ&3pscJ3!G~#u#D?)LBvp(jsI-JZaR5B-22oQ z8W$#PJvN*h<*FCX0Ld8Nc&mHE@jfepp;Uwe)xP${+yrt<7mW_|h2}t%D&A8_>+&98 zAL|V$LOnTO|&wzAo(++>^cuzfo3Ox;waIcYP$k4y9_g> zpau4eyBPLi|KU3Hju4q`ajchmUr$E31`7uBOIfQ?NTL5uYXOmt!J~ov+If2ijY=ND zbyZbMW5RdgoYy0o+7N>P4HxdAa11`5OrJso(Dzj?51j4{Ex0Zgu}c3w(?qRo&h7+; zCnWSMZl=?>#2ub>h=zcR+a4gf0plp&e1#egO{ho=H_>RdLy(~-^eu)y9P^k2*mTO>%S}sDk0t z;fg*3#ODVi$Tq+`1XI;=!T;=q!!T-MpfXGu!wAh~&*MoO9~PrJ2G2E< z3Y)^C4Fvtk3fGjY>PXOf^0)pjE%<38;Ss_JVc182LT_hgS?vU9m2v9KMQ~t$><(Kl zbVQ{%lJ}q!SN^fXsB?(!xu;qhvoq*?^wRFuY;8=5utF3_SJhpct~&O6DL7*?R6 z^Q<<-p_2Hy6l?_!i9lcgjDsScIiKcQI~fFXtJw<~kfh0$!?!sdykO5DO9SUn+O zd{r&2rfEYT-Qd>s#-4m(fb!-g*s3=6kPBjJerM#?Q^JPkzx^a&7Q z@_Lq3RKyb!SHNo!IDx9^Vc*-8JPO8ZY^`># zG=_g^z;uMomI+8>C7}k?(!_{9t>Y%I{fK(=nwG|v`1wT@5Tagc54}6RSg=#7goi9g zZ@>~|TIgPwyk^~H?C=Sa&zfSOFZ8^Fj&MS3v(L(?8$2m+?%$L9X_^INrRMHhcSTm3 zK4gZ^cE=%IgW7Fhz0zolMbc0bIF8#!}Q_kUJn_?K|+H zJ>)7(5KtjmBkHu-00P>N>Dm~l5+{@KYOR%8&KN<6*ofWm3XMFI-`Msg2z;M7%BWp!^5$)AFaRTK+fFvv| zk?S|uJsy1{Ul*Im<|cnHk>fj(--l=e=G?8+m}Lud}+loe{&<7Ud9jm-~{ZW=}`Y`dmmf-y334iZyWpsxuwyx!$Zg z-g4-&L2iv=kS+Qw7ikYHTxW%UJi63K1?;gtk?OdR3N7^69(QkEDUq1bJ+CXg*;RhGo+VPWFw< zSv(YAmB|2hQW#}I^p~WMZ6^6+gG}+ei~Tn_uBVSMgRAnuoL?az(@Ys%0<71lM@8Mb zW>8A@IH^f++%x#z_#o$EWS9L3r*#G|Hl;`SQ2z$0^5nWuZ|ocb}xNYNgKSidG({rCauEF(5{x!^aI5?ri9qo<86xrfSxx6IeY16+4sTV^rTfdG_1K z0!1;P8_1KBDJaJ6dB#F~W4$!) z;%wzCcZ-cwXC{8ca7)Dwu2x^O%U2<~VKip#p~QiuTs1RCq96V1FMVspPU5|3`d#iK zpOdv|p&IU*2{ER%@DU6T$nqRZ5jtW z`SSX7+TE_i8HhVf&CHdA(rZ2@tIXV4XHYP|liUleYuauVr@IUPaWt1Ls>4>b|0#Hp ztl+w`T7+`GEL(@L-cDg(XSwC<*BBGMLHG}_R281vTH{J>ocOK+RYQaJ%*iIhv;cPI z1A#V%D&?5!)5L>DrxYkyab&7TV#8o_S;x-PZe^vcDj_wDTURTbUoA#ylbJYiS;cjZ zB1{GKIq1{DL5qUZljnub=R#4v$J}qR-k5VaJnU7l=GX=&o~b2ZNW{{h>JAZvRTCvv z<|^oG+H*o?^<`y;tHnPGdDvfeSpjONjZw5fGBwTj<}sV22PPf78nY} zA&+tiVVFjR@kBVL36$YxAG&9qO7fa}TUnx1AQ0!u1%>7)bo5m3H~TWvN}PqF*bo=9 zk8Rn2icc2H!M>F9ZHrZ`W>jB8tskdtjzlLAascvSvcul&VDyB6>N0DAteHdY?KtuU zwwfOs7?0J~7!0@ys^GSd5Go<;w;hgUaaskCSWRe)okCSKpD`w+%bQUC#!R9peWT#H zUgt|X)}PZKqyNxD7)>p@?*IPl|D$vF7_^Fv!~spGM}u!iN4V~byg>dY-yowWMISn7 zfEp#|AT$BR{W^yXw#KG{pu$_cPzxS%K5jP{5BFJG7mbPz$Y^Yxl&^!sp*E`|ZN=Z? zfP&+hUa+zUIDDtzw?_jO_1#4w;a+EBLOj@wFVAs(6Gg~I*F_J8HNNL`o*&>2C&6UI zkBS|rA4-g%g}MEsRndn?PMgJt#dSTr-X)i)fe_R}*hFc4XZYe9K!w#u9d!O^gM;y! zM?$`XtVKY^V_E-^Y%99!@U9j6vrMb4Y)KstD6Lr*xMzaE+l(b*B}Ic|y@llF>=VRs zJld6+pY}SP8}J;02YRf)UTho!PDCxZc0T8Y)r6Jup%q*y$lh6GA+HriXK!vRXFbTy zS!Wn+a}`LO1yyOUV+VsdN}9OLPOJ;V3ry@~r5FrHhLT?fXFNv_GSb(-cCJ}l4e=vK zt<5$HMj+ZKP<HIPP*K;yps*A-jUpO@y=X}MYixmT#X}W^6e_?d0 z3I&&Rt+gnkDT=;K7#CoR3FHSMkv1Z6f5KU0a*k#8l0r>F!JxUx&e2OjEE1bw-bWl1 z42YG$<~wm`$k5Ob|IFf2j1)qwBpgtI5G+oXH0!F{euv>*f_4HqVt}+qH41{=f-hle?RU@R@vsy zI`{TD2k9@|K;_z;i)R;`sKRAx5ognH{S?iaw~?4>iy$=U{3e=)Gv*PWl|Fca&MvI+ zhvM;Gv4n=l@?>XIZeWVcCxVRqg7d+feUxu2f`hACL@Zy_2y?(beb8 zcEZ(Z$D>M`8PC&6VFLO3V2U6ojD9j5!?nZ>$jn?8CWIykc?@NC5`q>Z#Z%+{wAyIbzAn&q2~ZI3X4Y z;1V`s=duVdLFIpEE+4;`Ke5jIZ2f-Jp(twv{N{Vr2>9E*MKuCY&4!aLSK>{VJdcc; zcS9ydZg%W0{-dSVLq9U`+<)m+%4 z+z@0v#4wo-yd#=BpILyXJ?v$!RB7+dSWujb8kH3c@LLL&64QjA-h5^gIpYNzAmop; z3>K|}(GUV%Gy@@=N2KC!J6ManfUgx5ML~G<4hd!;L;r#diKE1&h$6(W0S6WL@F=Kl^kg7-q7t=GlCHME zY_vnf*(9sxjz5}Lietx=m9U;NuK?k!C~Abx!WV;}j#dZ&Xc-e?SHmRS)Olz;KzRD9 z07uSN08@ez9|Thf#!O6!IV`eN)g}^O>8!=N#2S0N&=xL*dt4e;FK|Z1a+VM!B$V!M zeltP%4!1~QA8`{(6(FrsSauniSZtp7`ru^V(n7@O);?SfSeS4uX4q^vZb?7~8wjdl z^&Hj*flk&J6}zAcSwjIs2tcMib1WMRWBT&u*$Ri6z*&ZfN9PJ~$m1wE191td`*t1Y|zoU6@@kg}kg(C=7dOq4)ik(ISeOc~*27vb3$w7a8)h!|LMY=kUK^jJ=6X6}Ven4O=Mb zp~57=v9c)8R*$h8P>mgUO&hEVvL6nPcJ>CdORK9RivmL5G^_US07mhZ%K6L+et_jm zpD8m6cHyD%1ahIhMs!&Sx8;dY{rFd^{Hyl;4| z56@hh4?52$Cx@t%j#Fzw*B;Ex1mbJn%W9im9Wf&01yD2IhYcF6)eH1GErA+e%bSQg zVOTT*N6%JOnMwIyJ}Xr~#{I28V>MMTMUbx8b-JveZsR~&h0z=4;#h8D^a85Pz-o8N zX63}1=vQrI928n_EICZfpgEfLF@0uY68jHCthP+62A4sYUkMf*_Mmq-5N%U=YLu~alSrJwmV-AfKq>qNX;9L3jydSK)x04E z>tK@T7B%}a-H^GNo!Rbm^bF{cvAI$w=R=7j3mZxz-AkXv)lm44R>kb39j z&F_vKu8QdqNrB9`ID8kuQSGv#9%sygOSKP5gxmTUwZN-czsJm@Ze5hDsjmWZ8= zko!r|(X_8zyw){`R1k_)g5nEIzwonz2^^HztJzD8j2fyQlIJSCWU*4eIdk{;od7w@ z1Omdtzs5T!A1{o7^6r`Xa#EQO!lnP!{qDvg{{t~0=4cpNYT3-FM$I8 zjg!;FKAk(c*9^_cAHk(4EHP2}^r%S4heiH6CF&xZnXAiSr%RR%0cFiWkf9?K$FuM5 z0>k808KKKS&>ur4zvTd$sDvcN(d@t_`zQ(aQg>D{eVj$?wjS&H1`LjD_y?xVzJA@w zn>6kyM9qZKp(j%qUS^%|P(TcOt|s%>?7S*NeHHJyxW@f?-uZn5&5Av!Wq*aaM)`c} z%45Z*RARy>^_SP20U!Yi?0$3i{xyQ`tPlEunY+zvEYmNzZzC;fGtkQ6r!xaP;B#bkIOkCC0WYLDq zfzt#vjxJvFs|@_MD+kF7_Fr9;%3rkxfCZeoz^#N-4;I6E9;g%^@&<6#+c&YJ5g}`x zf`)nrMtZ!ATr|-odi4w3cf4mzr@#OdQ3@<24*bz#Ea+gzj*Elq30W@sfRYO%N}m=G zm_JoK$WH_D+yI0{a~Y;ya9mio@~wSn4cyFENF7e2)(CikV1IZbt@@Flu&SbuWv)Dl zjuKZ{s1qhJ)vjSG#WerMZb>O*F@L^5#;{B0Ov;!Om>hIgG#$KH;%W@{l0(kKw%WMpxkApa#<)$Ow+IeG@1Fs(Dl$a^eNs+VuKj{%W0^mzuWTc9FNUm4-?& znEV))V_I`1Esd)|(v=Z*QVJ7s>==}bhxH9x4w~Z`k6USV{F{?~n6v3Ggz5b-Y6e4ZM2(z%Ad=UL zPo~h&c-1GdzjHD=R4sfjFP#1uGfaY~tw5a{;d0o{-P_9u#l6jfz>wEfC>C}s+)}}j zj!{_5ljdE%a7 zsn0t|ksv$Z{ots=V1K!Anbl*rbXgzo6uZlsZBRvUo7zyuh6QMX_`~Dv`3MGg6f35# zWL-CfM|-+^fD&g_qq2DF@Y?|=q;}F%FelTlpm3Wb0QOh<6y}j7gCR~3+6p-*&R0aZ1P z!1J`z;VmDw2WlRC@&C?8ABX?X8gs{L-6Vb}Ck0!Vv@m0-9-CvYXDe@?ylx*%QNkW} zD^r6H#rfHP7z#Z>BV_k|wsAX5AG=dUQ+Z!xw6_z9f6=G8V*lH2;GaiIDJr4H=^-#= z^KRRQ>i!-~^eqkzyU;St!?;!+J~&vH;*69BBZv(5-9EI-l=?DR!+yY;4tVU;Z)n`) zK1r!ORcYGtKag;iR|4hv;XX8|jfe@5nHVNV2^Yd;!y^!b+i>Sr?u?)cZR~-oA!Iu9 zz8<0NM$G-C&-_Dk>wo-OwGHVvQQR6Ew=W(D`z9>_Sh59|Tl&&bXW1@V;|45zwmJEf zci0TLb?P0!ffjFoez`JPB)tky-R2?=5zY}?LL+cDTmvxtH-t@B(W-m~=rT|QsjsCz z=(3CxSj*tgadpw$;1|2w*!=VuRK0&o7`44xv^Sc~?mH3|UoZ$%K4Ux2R+ zzz^T`biU|_!Y04t1iZczl-qZy-0B%>YRxIO`689t=q-KT3CCb(dh+bJyJVPHqL2G| z$El;5Kf*s}6O^5=&CxoQ_sw{6$X|d#xK<#&qK{v zoRo$+f+8u3AFpv?ml2G?k)!8M4%(~;%84PVwugJtpi_~wkf0egfxSOXCCJA&1w{ox z6<2-Sg8l%ttYbBZvRI*Zx^2ia%Y*w6-@%+>gO>4gzIrK5xrq$7_3R+$(9}<^5NF)8 zP$X`x@Gm$hw$*Av(Ic;&Zl^!3in=;ZE@T{#l#H5(EPVSkAH`u^)G00`mf3+k-99kG z37&y@;uo{uXWytLCWB+qiv8=d!{Y_AagQ0F4QsJ%1_{nIW zraK-9s)9Nuj4?e)f-G7KNyOPdnnK)$m0TR!WoY3u99c z$qOWyn>Loh9GHvCOx1h9SG0fQ_E_fDLN2dEDLtW-@$bmcV#+>1sg~0 z&Sc>b@a~MDjZD6kSab_UeaMi*Z=bQy1@X z|EPkl{l!;%@2n|-tIL6Mq~zbRb;PJC%wi#s_)8e98$QA<%c3s+qXGg{TLjJj$KKmC z$C(^yf-KuMO_#b4b6DBP*2dc20$IugNhAo6Rjh(oEV4jU6?%#v4WLvlLs38inE;YZ zWI~yVA|V#rw1*vAv+diO&1r74haPLqS$&-O4|8a3uUVV*T;>n#%wA?}pT|EU;{8Zu zf&?XvT9AsF`Mwbz9v&VZ9_}69V{=jyM_|PZA&m@s}qlcZ{J~bDvz4Jdw zTRmH+Lw~4jX&{ftH5_XPLO7hN{o2${uaf$YBY8lK_WM_FUj0Bujf!{^*K7!Vq$qpW zhFXW`*jE|Jv>})#pkdIaHGMbFJfshak>IwvV%%h*7_?(cW_sw;pyKBn_rHL{O^-~h z-os|JGaOB1h`RcF_88SCLl}*o}A}D90K~_l=Pd0#g;u769;eD1+id+|`CFK2aFD*sKIP`>n;%U>c?XDoc_6Q&U0BmKO@>`Dz4L zS=v%CTm7A}tO$<*Au`&vW|1y#_MoBy2_1A1Cimy;a!tmJ%OTJZdmnLe`BoW2gcyk9 z-KTR*S_HfBPmhs?5m;#=YZX_?m6#zA%y%XT6u`oxn^LZIa$$f~QwNo=Q7GAfuo*TH zK|E*vTKlc#!@}cM2R_aV#(X$NP8<>u?`G&FD97g@FT01wDH3u^vtq~8YmtnC4pw`{ zYjA6fP$6c6=*?kIz*sc8eF+ckp~qBKu;Q;Us3TGOs)%;^r9+!TP)Zq|H3jLwl-ns) zvKInh7UMigv`&&|I!BdwTzQ7u(iu-JrD0Im==Na~M8ZGxMqHX#vzcsW)=MdIkPb1t zdnUF55`;nrpHzhewQOm2M)GdbxTdND!KljsGc$a@bREQYhJAp3Hl7S?mG@?n+|XXS z*$RXHR_NNYMDursG1l>5G&&kC&CmA$>IocmgZ=sDQDRAj(G^L8Y7~ENW%y!;dp3_$TDAoP>f|vp1BW%c4%;0bz$%8t6?|htMLQ}t znrngV6F|ezhC9k*2?Yu3EQ1W%yLsDsCR6O6i|oYR-36 zbv{MQi@N(tbc=OdHs`vYDi<|5PyBhCcHSEGhP+5j zj-DKk_(zvw#`8o{ZR*#Z;ektIAx4R ze8AFzV+6G9k{yZL4&b_Pbr{r!c$h=zIWXx!*Xi$a%VhDZ&1^I}p*YHM5A3jbj3(o_ zK}6bS1>p^ViF{Nhi4P~diDWJCAl$;y;*a!t*8}}aKW1~$`L)8a($vqDa z!L+l_KA*e({P6qOdGl4ofA+j zf?yvGrN@&pT3)orT$4ug26U!n!lD@ldHsz~Ndg!=uqF=Lmo6u|+~8Wsx!N zX}3Wupbt$*68eQfcR2EvoqHjzV1qbBxW|XrEFB0PbxYax1^Zds!HHP7j999MVvB|6 zEY9b}@+WO(6ycleR>Q)j0Q-G=B1Z3}%v;v{;s!QEN3pK#K4nW@ zLlh6aa`C$3yVo3!k|KxgR_FK-upGM~uuVXVmkGbUy7-%t`ZbOkoNHW$(x&w}{Csds zC)M?_2J6dLqVgg)-5to_5k{y)8CkXIi3D}Mm@ARqkv|MCZvxlKH}>JN6Byx+L?j^RbA`V~^< zKyJ$7&hscLOu=&8oH!0arc%^{riaWu?DH7g2L!HQ1=gh@&NtknKEl@GP&Diswo%s? zYhh(@ezztXINkkGHuLrI;^M;H8KGDZybUjd9!sI;_im0W0ve!5twBA}?2vIvi{QZV z+7a$Q3ug!HQZ%ZG+d8H=TH*P2Y&Jqj!n0$}u~sOBJul`FH{~GKU=DH(9Kx7{eTtZGA52=AEr`uV~qn=?4K@6eQzn{4wj9@h?; z1sMSFuNJ;`sAF23E-Sh)lk42n!OL%P)`^^}esPtox{(z}B9=!oi>n0rC6*L)w7``# zo&<6GjB3YHcJn;gc$H4m_k-u=Jm&tj-?pJ87eBOvDv9yH=Q~s z%ho3L*8l}F9>6%Y6b*&^85KxSRJEI;-a?J$*#Mz7b!CZ<7vHPO5%7P%R*r!G{Ljbb z2b*gmh@$LEeEtbhiGv}a?ggm!FLWJN1%($>tg1xpymWv4xQ#&DxWE+pu=CIFQ6 z7tWtncK5;hDv!n-L9WOU`)2P>tF7nMAo28t9Bmb#8YTeKJC+w%i&X8y!CQs}?R5av zcm24yRyQu<`Z6%ET*(#^n^>xg90=b{T8ZLnuY*74r4z+p7Z&}D@b#SuWb&=K?xpdB zcMFdL*VF_11=f2ZFyU)FalQ^qKQN-vBSDsAHrhUByS)IbLLgS+|6EZ)}nz*oZBTeHy^*04vIH)PIDJSE!yBgF}K31DwVta z(qOT_E3%D)AcgUC#3&=(v+|2GgIwdBs+Qi>pc;`c50AT}4&uWA@M`!$M2wE?mRQKt ztPmm!9N3uKec*2i%}5j__Z-cT5sEGE9dcJ-oB;m9Y}S1&7$HOG`7Hih!Wffla;1D* zE9KB}M5&j`=mr-hzV5v{BoGN_278F|ND4~l1H0G>0$#c(#6$tAlM>Sf+$i_`d&5bV zbWltC3mHeQEUc0%g}c0s-cm+O7^R6+e2?(}bvC`xc&hA+dP!@_0A2O6@Vc+EH{ z*0GPZD#SMYm++?9^I2s7o?FP%*Q$c2=JHWgDu#=#m4{XVTnUYv?=0X4;>&Hw(t(EN zXoqE1s`-(;LmbkSVscJXN(Mq89^dZaOd(jSX`VVU8+#PGJ6U!9kbwRs&lh@8^Ot_U zmP<$!^^o&4nn3O$vpg;#IuRvNw2?ggu#4u_hwGjweWnVET9#`yXiqE}G`ECeQ%bPu zyZGuWY61r+C?@#sNW^+F5*&4;nNWt1Q{!0z_eOj1c0rqk8!!iOi+9sCifMgUmH6!{$)e#dzwp>>!XiQ~A z{w^$X63`y%4vn*LgdD_yQjegMc>LSdssiA=DkkygLUx$z#_47L-pqOGntbW;GYH5> z7bO!pHY?0zkOaqr(`kG$911F&Miuit!}`^i=tmZ{O;i4TrIXRIV0a1tWZl3FWEWSd zz%>$HnEdAbg925wl6SPZP?_O~bS86%xPM*YWUtrmBUl6*Fh|aV8p0mi*-IL;)0Sx4 zzhM!xvzobxeU#AVjRU1NXecqb`i86EXeb(22qHpu&^6bU5s!iVX^1)Jg+UB(G{={9 z(SU@ge@)jd2`vLLMKenX5R|pnF+!(7T0{VgFrbqncjiwgGeS~$)dMCo3&cs6su!3s zjcRb&e72Z0UIeM0k`mAtI)aqUikhQ9M@v##i-mbzNe;S^({pMBD7K0OEz-md9cNzM zM3BcMRS2A+egnzIXbrX&MS7q;3YdWeQ(C8$$C4yyS?{@)xOR$h2`2nO7I9HJ>u z-o+Ic{4|3~pePX#JuFJcAeVhMHI8_d6MNv`T>6pjQTX{@(JZd*qYnJ2h`oXZULw$N ze*v;_$SG7DU|?pmRupch%B|Bym5B}6cVT~L_o0R6(+yo9Dy4@{!8jj{2qIbz$M5H; zJ4s3bbr)gloo>uhUnUpmbgLyEKPVG5+ygHlAZ^n3;sKQRb!_K?+$nA;WtkH6aeM|T z6^68WLH9fy!kGa<5+)%6WCU5ncc7(2AX;U89;j02i8)gRpA^gVIs2hd0=8q8)qImi zYMC_7Xg)z?8cIL>%{UDCUeF^w`9tU#c=;5%1<3irGyzndCFO)ELJPCO=vw{0Xi<68 zv_x`dPJzC#O{2{=g5XLvws1LBm4gj6MevnfZvf?Q3Z^!FTwG|6nk{<4t|E-n@1W=I zgrZ@+XC)au-$lqi&E;w`FJNJ9%BPF!z67~uVDzS_CzY~FU>^e z6fwQVU%E!_uL}e#+a|+`8f~K$*1{J8&uu0uWBUWy6NLSM8!Bav($3oJyF{S~;uAW~ zp?!KhsMuwaX)HyY^tZDc$vhzhcid@T>uG7f*FCU5T0vV{1kU^<&N@beMR zpGmar6^xh7Bmy#08+1 zYIAd`2CD>$7<%=uzh*i)>{HlYHKZQ0idFQrNGt-dV!n?F_3^Ps= zf<}dhj5jr^ui<%ui8n!h(5WPxrKf9PYS=xf*B~FbUgI2`dk%v{jM9_9E2N-EMA$*z z^HtbTbyEX)?-c$x#mDjm+cS2Gqa7SAc>yBGVW^Jk#?i2!$T^?7Q?w-Z#>fYpMc`?8 zY!zfFq(x*K%K3B}fy(#ST<93Q$hL*_8V3)35Y|Q690Hed%a_kk8vz+-{(}J5){uc& z>qoR$l?GYp78;N+90#TI0Q}JqL0%;U#KDmcRzc*mvL5@cm>a5L4j|fTp@o+(I z0~*EnXdwygFPNE>%ZG)8 zsNIzLS3JB>%r1#3j!E}u#bp|^Q0&)ryulLJeEDEY(r6g{1(zhDn!KyT4LOl;sb594 z^a8&^P0Qg_QOVv&`8XR^?1%wI#wC!BP3c$xN)+mr?c;{{dIdl^heNpWTkq%RftVJ(zHvoW0vIl>aW1TmDx$Bm6sbJ2}WUr^Wzuu~RI z4YfhCsZwy|N-ulYcee2E<{eMt5lD7ysq<+}1*JMy5g`O%;J&aqz(&YpiDK(*6 zlWp2oMYn()83mo(~epcXwd490tL9AFWQ(VQ#ac6PY131csiAf zCjO+WB*!^ZcyixrW}eKk4G%8_nw9$#vzKA2L7b1731b?kDZ}TN-4x??@DPV&Z5EWM z)zqUXUdyN#C1Re#;HzpKVoL{2o5W9qzJ`cI$dMZOgAVgS=Q(9OGFiaOEzTxxeTj%` z49xv=ZW@EF6tAK&gry(&sPOwO&<*&r zeS~XDaGql3Hr8P8Y7}$R0X$f^4Y2e0NPu8xJ?eCa4M?pfqS&=75)BhXbTxXdZVJY6 zDU0)58oq)!KM!KsN}VI!d^K`ehI@&op!~d%zN&*|7-PFUO$_E~nTHIk9S$M}&F zwPA{ZItw^h?%K()Q;sq%0w!FJN%V)<`_u)$({CX!P2lt~ood~_g$3~TErOK($(LL6 z@^HS@%6FD89pvdGE-F2wOfjxu3`)3Xs0;V;M|MHTIaB?WfWP4}DB$#}BT^|7$Z9w> zS*B=VXmiZO7>&X>t4PM8QBcu4#tUN|HG9bQ$NN z_0zLPY}|dM`|aNuEh_9?E3~2TPG)h`pv(d?riN=zv3$CRt*Df~F0>@Cs#P_A6>7Kw zjuw=e{6Q!&gqN^4qA`F47}E(YT;7&7J&g1OO%Ejsb<3I_q5Pw_hH0qO2tqilrK{m81d!($dDq zw2;&dXBomSlr|VKF}VgRQCM5p*CIOY|-Uq&{=bP=F`kma{p#%Ll5a1 z4Fh7QueJphE};pm3o=P2nt}iVHriCHme9KBf~vyuk;YinnFgsGh*vh$siZmG>Qvbd z^ntTAGL8OG)zYVk*7BBAUl~ij-1v?kfvQ$kEC|u2WkZ6{oPlhp&%qLciJw|RqL5t+ zM?Fylw>j>?Z6rbXJYmU^bkVDeEj&V%j-w5fd?_Q3Xe<6GTFSFK?lMyE779x=&hM4kd++C z(vWq2a2Gj|8KC~D0x`rq6r2|l#e;)^WYSKzSJ#%WGVF_Rf_R|3#($D7TDIg3M()=G zRB~ihj)1>=og4vAYyWXvjsWh+1s_J*=m8B6Mj2ySG>yX27c_W^wUvXaMtL1QabR9K0O@QhvjFNcCKIEH3WmB@~24 zuBvOvTR;Q;b+{QxoAT5K}<1%Z>;wQbCAwGVIe z_M=<#_(GmSY8{Dm=c#Dqc(dy*G?}053JV|$lAiW2IXdJ?cZ#f#AV))Ap=%~&8IzFE zaB6|-=xXPz>7>Qz49ICsV28k}f|O7_E`JGDh@q6JHk*Mm`=l)eMs_)0d$-kSyxW3(3J1lkj56Ff z0w5a=QPgt-ikBVkId!3%L?NPW2_jjAkl6xB3r6`4dn<^vr*?Hn<8?6k_l ztI;rN>DNd|RrAkA%j{yd{x4P^WpiN1S0XCily97#+Q@m4GBCBRxUi#PDy+4eL(66& zlP%ZgWTD0_Nfqhy=G4H;Ow;+Q{EWykU5YaI&%Q1@du*BPa6k+FO>d!3ZwNwY)6jv2 zqt31$(ws~c-$Lamqx&eI-Z&4nwDHNkC8X=e*;Gc#S;{iG_=Tdy&IqZP{#f;kK*)W{GKCv{m=R0S=nHTB$6M2eZfaM>7#j0gNulmHefABG>B z8j(O|s|nG`P`15;1YvI302H%+S*rUM=pX&`+WwXH&`4k&0YEk5p?M`T_%1 zplBCKkE_5{Q&>ROp;S9AKm|3vfjQY5DJd!09S^WdR#h)uku;gp65CObuD36#lcCVf z8ffge*qVLnS4@SBM{lk}Ej^Syd&hqg=oIo+vg^+icC{-kO zme+0%kPSh3m{^G!D>B2UQ%RAGYMPDEpr~CDghp)=tV(qd&dns&w47`PGM@G$Xer#? zIU6VM<8D349iWWJ8g7WwFe}!>P~pV8Px2yEc{>rN5Jz_s1&wtz7jaTa4L6RMka9D3 zJvZ`KQ%Y)goCR<)ZnDO|5H>yq-Y@I?)6J;szxf$uTd28(>t~o;>AsT`4s@9?x6ZWV zm~IaJC>XZGY>!Ap=B@!v-!5j@%sMms&ei$g*Cq;V4f%Bn1DRmDNoSJzA2$!XpLF}U zl|hbmyKKO*os32s9uy8!+aJ2)z-E35rE>OL2nN#X;PBiW&M|@RE|a442)TJ)#CLJ% z3XPakIEC zN-nj~q=xxez$et;-TU*}Zfu&5g#BLW{D7!CJO}`U)Z6r15Dn<=U=pbi3h1vyL8W0Z zo+qewEt`M4P+px!>Zcml$|HR(HC@bJ4%ZKm?8)Md30(>wWRW#9ffS%DyD2PW(Ghsj zHQ?sg!h&6q>_+T|$^ery-nc6JTYXj_rQ4fxHd9Y0*E5Zdh+{D`2kS)cvG0pY#j!Dy zqnn|0@Yq^dob&4`&QL*QYzC57bA0L+@vK0r9G!_2b}F0|tWBg-NML*CX#h{@Ddk|| zAQ%ShMO>S)ppB3)U%aUDJ@^T*)g?PD=|?>78a)YEN0m30{7ZEyClV4YV~fKbeRVk< zApjE=O3FC8uHgj+AckwYlSjAEIpbTd@cmt+4~(~s$dZGO`Nt(`0U|EaX#EV*~L*NBE>wUxN#?Ik9Lc4EWhct z<4F&t9W~$@(BSm7cly|NOF?ajp^AZB$pBCTK`G+M?3h#xnY>B~%!m*^bU_QmSGXk( z06beJ3iSshrKC$Tn)^=D6qCSXV(wKgYRLD%VS6C_293e?HvCS!RSXUE*Z3OhdcrAt z=Rd=HB;_6;U=E`;II%M6qof7cA=)h~BHsfHbaM%zeYkja8RLiZ;dsD1u<@sySkS7l zurXx>Jwdozt25X=?tvq#bhNEOL1zyG+~OrO&9Fvsd9Acf)uG~U zgSq^W?~+A~UU91dll3;Y>FPoJ5xEr!t=(zMK1i?tZjPJJ{KmJ@?)49GRA9cnd)Qoj ze{udIBIV}@ME#O7wtAqc02w`t(?eNA>B(7P$u;CLcjPsNCR0NE#{Ipu<};r(ETA~Y z%q8kv--vk(S9_8L8>5@!Hj;E9Zz^aJDZO?#vNY3Dht+ko7-hLB77g<>qR*X{QQmu}$Q zedKv<$WN~Je0S7;Cbtjp2TPN9`ng58`+*Uc2%zk4@7bla2t4^sLggvtOci-O90}S;S2t^)X=|QxR ziN&i_u19_7akyh1+p7Lxms(vIrI%NgtI)AFvUc}Ib9N)vTn`2SgbE_b(P8uX9QQzS zkFdo28S2T+F!rR5Tax9d+P%(xCtSm6OsnB3kTLm{Mn#h`n9NSXPypbfD3J=VlNzn& zsEMMR$oiQ3|Kp?#Z=*(;knNc*nNY#gYaa2(#~{?tu4dQ*;Ra!yFMMj*MtOl_lnn?m zaIruoiREaRe2zjPZ-74D z5wd5Yebc&Y0Dz~;xjNp@^Sz2+zE)M(Z^KdyTb*yHhUdB$@^?wOil{k;%sa$ zE{Oi3b*XXSNvLTQR~hTXPC?|j*o8@wwN7hdT;}wfv9)nz0_ipyo@2`|RJOo+fLgNP z*A2*J(-EK;y#FD>>YxhE;aiv~KSPDKC}bbIqLoycgZu(`Xe8QIn%P&(Yq z0ZYI^U_qXz010vqH4;chUp5!;(C#h(9mw#7*#Zz^#Y@or_z+;( zO?8yptnaAD$nR60hhYKPvxiW|#FeK$r|5C=*Wz`O5?rRC2}&i<+zS8$ue*x$7Arsxd^ zT!{Uf8zAR7ux4Q4dTEf7Qd16;bd7Ac*F5ZWPjW+*zwTEHoX-GBt7%UZcy5TijNmn4 zkiI;^8qPN5gQldrlOnJvC2zPF<=f;D_ppUWgCt$weDJDeCV44o0->AOunfVUD;HLUNL zq86K55&>$yWx%x9Z(lL>hnvCLy>DFGQjI6Q+{M)~CLtk4PkmO${|nt-Y#*A@Ao5L1=B6+U1$&YE5=);Viv6>Dm8Dxj8TjuBi`Z(?-ox+Em- z9D;8WFEibR-_U5g-sxe1fUUDVz|B$ght?UK|Jmnri`Q??mWJsbmqe06lgND5?e8?Z z4L&V2>$zab6|(dMz9_|eu}GozIwMY?ydA<>KJpC8ky#`NWy9VAo!YHqOqA9~GlzW~ zWEcDF5GlbZdT(_*o_WXB;u)k`l9f+$g?==1PUq zkY;uOiheZnq={8@chET+Es>;D>t}9ToXV~F=Ix9JLa)hb&`N+F@G=Rcms^?!s0TaD z-1cuv2_8sy7J4>+jErT0fkE(-Rd70~`h$zl7q4MIuWutuK~cbRlHO$}qYVDi3w(3i z1B|;$g=E)3zPuwIOn-IyJx=i~$!~Q49;xu=0`G+BF)X4*$PXDb6`w=T5%8C9U68-O z{{D9^{6EMM(8X{5_a}I|{q`SUc;LrMFgbw-3Jm$d^Y-8O!0)|4u@i#MTG`DF)Lm5 zntXDy(cEVkK)u%O1mh=b=&S*7sfxQa$5d+{)@G5QAR&O(MAm;=Q6|)G7AyPA3RM@U zZ`kW5O>+#s19Enaq#TR?>F4dg{{p}HpNz#H{*wzAvdLrdtM6ene)ezv*)N|S{Nm^T z^!tBxp{`@Wao~8c4YtMc=O5epf6>+-+_`Xp|M|Fo{I`?a(s4idMMZ9i|G@T!n`7xx zBB@KAK+@~elhmX$9p7UaN6QokQY8@D49rjR$|bjw zl2xG4 zokFrv(~Biwsb0G%qd*gOcBuDx!k~uCe7G(Z`p`-L7+0)V61{+-Tti3Uf+G9asrgNG zxKT5T93;45?B-Lrm!cu1{f(Q4Xg9|%n8t8Eqc^(O-fO~35IT?{&joK$P9AXld4UE9 zIL~J08;r(8I13k8Yyt6z@^cpMF8I8d4}+zA<)uMusZx3Pqx5A% zlj+M+zpeBY+^XoS!iIB#*?F*eTt-L?FZ64M3p-0Mb)a*S%BS3=)K3>5HfVyV-w4(j zpOD3v{$#(D&Xd{9d~OX79GN+n*%2x(1rt*;2Tb>>JcgAO*_MQsHJip>@-Y- zmxr{5E;&P3?;F~+iP-6m`1DM59LHq1DQ-C0{B-!r6G-m!^q5&t(;Z=uPT9LiA${v$ z@%FpzTf-w{dJz%((Tr;`7<#C(x90iow%GD&DPwqX%pGi>bmtj1Qrv_p*DM;>1j3ZL zP|?&JDSEH6eb=aX4a#?{g!^JQh2gQDEh9tlhAdX~Hkgy0Y)B^J(5?ytx=*3=piqQS zHKJqLM+RuZ;g@n3O9Mdh<Yy5TEqD0f<-`Vrw9lgDMj=r!&qu5pkEaiV8Td;tyHx!JZ8jq?5g4DH>zHN zjRTQwp_h@jXp$8jCN!ES8MMq@u1LHdF;GB43mLf?u20NS6&$tR+=K5I`e}PeOE9kp zrp5~Qv=TM@qCKkNRLO{(OPy=bmjE`rmloybI5p>yyea#m^SB)ZxAGzwin4|aY?~Z7>EDsB7AEeeHn*S8I2cC&yo_5 zP^XFlSm-3dJbG`eJ+{MP%ziTq%;aN`Q>-!E-uMATUu&Sp`HGw_9dRn3eVNqJ2z$U1 zfVjiQl)fiU9_)R)S*pHK^yyA@PId8&3CEgUBs*=LWUf5b5Y6Am&DgpIfKkKTCT9xk zQUi<)PN91G#>@shbR(w}M2P6Z#>0CLmt+r(^$m@VGz%)^3&+HLm}XdE^te4Z!D_|t^_e03!@CDFv)FbIu#Jaf z$GvSr-x%?uH4yRR&pkxOU)&Yypta}*V$r}Chrs8{LARdIW~=Rkv}U+M$`P7$dJTOc z`q7%)uF5`q)9D`%Gnjaev>Op?&I9RW&waSU+0wg&Cqi@jC7LxhKmNgE!u@FTCqMXl z`1rErA&v!p@`HI87Cw%q9^(!pLlJ$XrZ^Cr3{#N_7O=k97c7TA5IYQ@amAE&xoWm? z-l~P=eiivDj{3OAeN@-YqOL1zI9>Go2n5t&FO2siTf=2X#!4VUI1&i|QdDnZH=I-8nUc z!Vvk4qCEgSU^A|IjB-1;909nSa|nSDlw=1yP66$x+Q)LRn3~C9T021SbA`b&fTY#6 zZMI~bfZ609p)C2Ng$6*I)=@oEC^7=awZqR^m}ihk8otLMdm}O zCF;|b^T;@Vr*sPnP(c+$6&IWpXd04&5rYcT=!JXMKT!>{ZCpt1-s&+!h!VLO7Uq#a zfKcBLbPUED?!MC{oKa|wuA#!#V0s_{R!WC8jq-11_a5F4{tkTUA7Rvx2pbtE5uUTv zD5T%5Zw}j!XDPe`rR!VJ*Knpa;0E0W>Fjq8^vG=TnC^~Y8~0n*mZYz;^>O=@A1q<7 zHal0Y&|VfxX~lMBMYH#%6>ZBWN6eAOyQMaM2Pc9Z8$xGNlV0rlUS}{IiCtFtlU1Tz zl?$dtFo|$y0!?i3T7Ah^DR)hqT=GR+()w@9UWkhoZU}GoS{W_#R256v@-={w3d~F0 zB(aiUtzo^%YG1bQhgJf`Iktvq!VEdFwCv7{dQD1_FO*Dj64to`hhaN7)SfzRz%fXQxn5Gs2>gky-+-4dn|4Y0+gB$Koy?Us*#edb}!xf z%E-$A%Rh1Kz7(%c*3c^6m1^R;2gp}pl0mx`gvhB>bi4vF?GQ)oUg59-UeF31d&dPN z|0qmC9Vl-CYeyKkv3+M4I;>j8oLEE2Vqx(bzlgr#5*kEmp-)(`*(0e2Dd@4l%D`L*TdfuP6}1T-088;KzO4s1fR)B@R`jtsf(hh6fY)o- ztx}<7OM-=yMmx)YMcLdL^q*m4!UXuB48t=~kb+M`5=EB+#m?t0GIp6Qzgo3l^)N#+f-5{4Cs+zIWRXH`2m)y4 zX&{@x`9~kfMk>6yKsLq}`U&ZxM>5QzRNYGiTJgS0SE!<9RdsiK>E^H8R&s12FkwyH z^3Ko-ta{W7f+al3LnS71*u$s8Wjb@_-l485a?Lz)2<<+lXHc;~CR8-($Z2*pd4tOn z9Eb8flz?bf&IENYemeO$)6?-NP>-|tG<-=j8Mood;Z7g=R{v?*0jKV}NF$f@Om_5| zYb(R08i#4$R4_D_*AlODkuxg$YZP!J+;rWa;NhGG85=AK)DTX3w>8VVE^r(dx5J%f zT*`U;#47K11vGZxmx6h!yH~ww%%|4=1e>F19ZKXU*Hm8}>y!rR9cKL9NK#;9IwOt~ z*J#aPxOQiv^xQed83qJ!Q(KN208aK?y2(Z5d{lt@o!)Pi27uL%opZ$@S^x1SENwCU z>bS)`NW#LJkaET; zNvDJS7$c3U_6cX*jU*9$6|E$13vy52R7=Y6u23iJQz}{t@2cuhdl^^foc1ujRHB)& z8_CLDPI)6k4w)d=SwuP-YnKJPz)7UC>|^!7ej?dJ9)RCb5lkw)t_-GnON9!9OCcqc zkAY5V8}RK6%i8uvrC~7QFkA@Ezho<8HegN8udj!*jVH)Sicp+1HNQeS>rznEhsVoj zOSzp)*HqaTTVH~b+Xt z2p+dunni050c6;Ty>NQM7Af1&a(4vxE!d!u-Tp^8M|hON#W z=BGCXY0kFCdCjeNA~$xP(>C(~pvioYj6bQ1?i^3IPu3&Ox^JW`O6|ESyvC|S z`dTD=vF6#dsIzL4L4zBI8YhI{6_p;}3E%5aGW~M!mYb8UzbrR-J6xeOWsyC8M=ldF zlD#?QNe>m8-QQxZ?4Tji;@*5uLjvjB(Ja3@gkN=9@S3S6*68J*EqFwMY%fI%S%ucc zQ;4pg$s0}A^KcI*b|qc;4dE-hwQ+#sIy?Pm%k)Z!XBnCw;%X3{fFMDA8jOwtZHR>0 z?VWye&~n_~OW`4H7f&ST5Eu=bOwryS@L&KkwQfGXitAMTKR41m`D;M-ppK2yR6QOlgBua6i9_ z-Pc4wx++KEE2*Uzd`u>U8{6ElxziN%k5y0F^(y()X z7+n!14BJAU_hbqhkH-zKv%TrK^niIS7ernpof$qaq!|X_B1*?&vGW1jTEY}$!8P6@ zY+_W4*ic0<>T7c>%Cl1#NKL3;9%=fr+zi*6MaH@-M{|X>Z1s61w#ZGFQ@Elnk%#09 zj+O8}qBplBax+B|CvQK}{5GUB#WN z_`4d$$X+BGM7eToLB`xA0)rixSpuJij<@nH?L1x!EHVG}*IW26ityKHRprpumbWP~ z0qZCFpTq7i1i7DhF>MiN?Rmp#t$?5m${udrg1&~g=YppbCyzivl$n_lTD}%DmwDD7;qY=MP`y0s%9{PG(Lbf8p2&(O%h=>kvc^whMHB1s^<37Nv)9FS`92P0yF(PI z1Ga;|U1?ZQa`CgA4Hj+{JLFL&wadR8xua&J934djuAa$ica5D+L$%d^hK#Ro1lfB8 zohs}T(EVf#x}Vv8+EoktkM7PwW^+?i1GMrBQJ-kZU$j#J^hP+Tl#)psbHt$lQc{m|Yy-Ep9|q!Wmr&j+)6` zKS9nR6tTrGLxE!eObCX(pb9swA1FB{#>7e~vLe4-mL_pYpm1%*SH&4F%Cv*n1!tV! zdV?uPd&A=+NuJqSVTKN%Cnv#%miMRl zUWlRWb%p@-;2>o03ju23T>zc94QN3dS0@`o>!`uQ@ZJ7D6qLQLka80al z+}&8&V&f}ph<48=uJ&uhex)TsgOfch{{!UI6_#`9s7zN1{*yA&?Z}ViC=rG9k3LL9 z$Z#&MjtT`ixG?BZc2y%hI9>Qd zw!p+#I||BI^?y>+A{GQTvrFMzp)ir~iSmRTA|@yLSoz=~Clix0=<)d3m~}7k7%&<) zf}xBxFWEV80Ywk`VGz{P`B14k7al;-%xF}Vw#y8SQ zyb?Qr{77E9U0?~9R>Uf*<#-)0lN1;}?LgGwmd*rf$kgKH!vpiUMED~lzDLc&BU}I% zGQA+(%9k66skujoi|XGqOZcrnipAW!a~t{ zV5{5=Plfnpf@Hdx*%I0Z)wM8Vb4fX1B{Y8wvy{;}EbS20D^& zOjaAeCqU>E63qDM^AV~rA%RcVcXRr z)d?X-bUp~(%-aW8j;E^)S1MvSO)ViMp>rWA0oHsX2LmEvgwr%OK@h6Yl~NMB7hb5y zk{9D87KkJr6O~EIQkr6RAviYOCWXFOZiN9iqEa3L!Fr;vS{>vb`zTYR2m?p%@d30v zp#tL{_@ItzlA{_-1>TZ(ZkhA<4cu>h%scH+wt-|w2#jgta2z}jZd#`X2T!H)Ojwzi zp92e%5Y@ynLN2*(nVjIN<$^k-=w&08?~b-HOXR`ch-*Ocw5Kc!I_*B4#h>#Wvm`(@ zrqtn(b%u}BDV$4%eKve;i8FlVLZf1Pfn_E`*7}YvhrKvOB+m*b$SF1+@>_nA2%+kf|Tdko`St48_1E-XJ?4-pz!y9U~=l3p)&s5%yNMSeXRE2R0c5t{z2Z zUBdt9i{nE(I)KP+P99%IJa=Fm2?y;#H;+oHMp z6w;j$?&yGmnn({526}=?p!xZwiz0qhIH8UVuuF?1v&~`iXyf6sCLp|;L6=N`6B{%D zZ1CIwsDP(Xh2HYzDh$BJjBstlBSoPwDr$9+w&_=F=3b~k6RQgAV&BIPf2xaSc#C|{ zcv-c9Rlq3hCxX`qU9`7uR|+K8-2hU1lSb&vRit*th$U@Zxgt*j`1}Y$ zKJ$+cp*AC^(fd|h0rP~{6;O!G{C?8E{AnO$Rl`cs=}BrIZ6ppZe{-=R0A{pK$0Y4 zg=!b*L|Ei>0IFbK9=-!?rI`^i-#@Ec93W}mM=3Ps;~It>wZ{#)E5~70BoyN~Do5uT z>_wTWiijmwn>#jXOJ>kgPBzqvMlK!3QX-Wi_g8TwhX=!)jFr^N4N;($k(SphP~}n0 zNgz;HLUzceUdWdYr`3^-kqQ%pH9}m;z{i4tPSt(G!kQY}63WlbrPFLIn6RFvV7N<2 zKyeTy0jbkN^IOVZB7aANcZ$0V=?!N?Blae6Fm~+Q+uKi&>O3;IRhE`et>RS;b-wP! z7v)|}X*C?Px3679a_D8i_np(&ECgdYabivM(#sh7%H6(57SE4;)){?%ypw&}#nqPs z#I$<3ygrH!A$oW?e4UF^F9)Tg-#Uiwi;aW8)W^RTjdZ%aBIL)!(Oa!t3S;AyOww3m z`ZHdWy{;Ok@VZ&RoXivSPA?|?iQ4OD5|z}Ye?tZf_6iFSict($4$LIQ^FiDoYSE9f z4^@qd;FhV_=hRql_xEb7Q{p_-SlZ07ywEaYs|Zy>xPo>tG-b=2VJPI^sCv3`NkrYn_Ru_~p=8l< zNDoA)=}tD-BN$j#0Md}hC|}$3HNh(+T`5)yuUPRP{?#vvRdHQSq(iZC@)Fh63TWxR zT76e>0}|p-D5I@*9X21-KCj}3ean^n4XUZdl}=4As6+aU;Aw8zSQM9i%CC|_ldRR4 z+*Mg~QVTgW;fk|!Sd1bLPO~vcxNJ>zh6D$%edUU=quIFHxI{*-nfC&4Q>9$1#mE{u z5fBY%Rp7?Tfnq9VErSDvagRV19@U}1E0@Ex`%Ymj5;P_4vEFAfXye)n9PQA{il9V` zwG?p+Fro408qAK~KE@;{*1C%fIJts~?SV}%&0r%*r6s>u+_9SK-)x)Ferf`jWX zZTjQ}^9-aSrM#EaP#L$vXTppL(r(&Jrv}^|p)R)n>bV*AVd$iLLd{Q{NX%eO=c79S zxxZ}oPKq;XN`=*!$j@jRACBpAezJ>u_6?r6d}K_Rx@G-YQJHP#^pv~`+XclK4Rmf6 z)h`s_tE;cmXn<#kWDKI4T`U+-!#kPzucEG=T_H}LXh4Z8%{0-7%8ICL{LFu(p0zSgH+Zo_`2gqn?ZM>c3Ta=T~tR+c&;NUJdlpc2ZQ z-&l?KKN=_l24fUZ?IJKi=86U~$meBR+E~Ft#T1fq-y{}UF1pF2jar+Ky-(*sAU-t3 zxdnJ6UEf4rTj-=$t|-}|b;2uYg+)8&`YR2{!<=d&)-b97r$#716*H-nGKjWOWD`*y z1Dl|HAfH4bn!*ZjvTV|PdgNh;yf=-!YC{kYWYx8&IQl|6PZ6 zUSnu;!D8Dg6+6&)%6njHulIFuPh)*DA zIOF2gU)jF-Ce%eLwU}PE{3FiVt_XQ{fZhBvEXJcjcWxQsEd1>u--Grc4uX5p<6ajw z%0|QQe2sFnkJYVSTVMTb^}zN&+!)+EDNPjUdL@u`R6fx*A7OZj9!Iib% zq*EL&6aN~lvrx93Nu5`dpA7rGbzg|i={V4zu0MRB zFjcj9{3H#h>d=JS4RTF0z8oz_r`_z7jc`JxvY0B4gghp87e3?U z!UfK~!VUJK5g{HCuagKyBc}$RYp9|X0Euv<0v6HUaX0EZxvtQdg02wqDSgO|5GHKe zhXnN;WLWM}>x2p<%aZ2SZfap0}FIYZc;$E89l&H1A46a6_RXUiB`v zuDDYs_^?nX#1sgD&T;*`s(EbaPiXj9RnJwQ#%yqax#omVB$zc*6NATD98tQtGw!QP8;XO1n z27zOU1}9b~eU!8?JZke?413&=@6uC?_Ejr-FsAm^l%#nH#c!P;paWckd`&0wNEo+!FbjVB>2U`fcQwO(b-2Ir6TLhPY#eU7 zhr6JKbG@=bM0hxk4h|ci@KQ&JLiHYl|F58nb znqS?YZrpv8lo>UT@C*Ou+9IiwLR2mBlOMTacE_bd=3SR4#*a&CyYM%>WF>*u)t~&x z!Nbi4NvT8mg?}&I%#~s?-J}?}g+KX`E5>v6NijK2j~lY_G*?U_dy{g0pk6+6B|X3* zDSQ~Cef?{$%A@E}cTzyixRc$#7Ks(?-CoDFe!8z@Q=e-j&WniIW{rb2r~7U(PsZ&5 zD!+sz)pP<9iH+nm2`)k!?9Y3-UVj9(|DwO&PfK=ipAXKo&)@j7XOie%7uNjjb&V)TqC;1z1o(1pYZ=Mwm78xYw34$1WWx6E2r7EnEXham;o3 z$#6wP#;3R>_W=+Zf_m+`*S)kLW2~CV=v!qcedOs9ima4|SRkL(QX zp<8}f5?=U}sn=~lKFaE~^m&aZV>BzXs*qOqky0mC({q6ga3j_1{(xgW;i&;6*2lmt zzy`qtWAM;7`BuPQ4482iTV*WHA#@~MG*v+*sI~Zib~J1sxB3W0&}0MDCZ}Vy7If|| z_1eZ^|7S3BHAPCddvjl|&qF;J&O>!hsigW^Dka4_aTj zh%)O|%F3p>ugR|crO69u@A@EU+d^VUL0ctd4H1D97*e`(VkQUM)sU}jVu5!P)GS4> zjykWWxeJ63k4CvEVVeXsvJn*aF0I^HB=e#8&ZmV0udMEI6C(42Q7X_$kNSvWX=Nwv z5v;7)%mcY|JFEtx(w_8>-+Mc&uib6Ug30h_+}jv%aoM!aU5$_1!+!Uhb{(VL z-a~jy3pRuXExmO}Il=wJeh0!uOf%+=gh4-05fg)LzMS2h5uJMGF=byEVB7zx%d6V% zBD?w`ZCEdzbQ9z{Q-wHBWjiNA%5=(wtzfkj4s&ACoJ)sxURoSd?aEERMtnYwy;JT^ zR-2rl4kR=nD#nJ{3me{BCbMt94E)`BM0fD}U4~hlDZU>n>m~!$j2h4z#_gn-LYHb0P1pf&lm#AANT?DGKvql zKaaaDb${EKOO-pxF-m!mHjHfJ%$ITto0NWU|26>Lnz!!`DO1N#w*5`Bd)(e;5+9Ci zoQ(cL(g=aJu=+63LVs^bn!9z}y)9p|>{hpP`xbpDw+Z3aynM~-k{o6`Vae^;Tk|Md zswG@-_G&>c7ODn@g;-6Syftqq3j%kdg$}aDmM)vB-v-bxF@HcFEMlh&k&iOdiYe@p z32wW z=noRJjJGc^Z1~$9^oO{Yc;@Tl#hW*lXG|_KMY27-_TCIjs?;EauI}KI&1XY8DqDM9 zhgodPvJk{4;Q_$0gxDPQHCaROjEU+UL5BmB^CdW-9*n7PXek`ZWBo=CKx7tco^XT) z$UKOyOL4M@w_~DGPbA?S-lqu=SiG4W!AR#d0%n?=CqY0Sw7An?3yP#0L|F`XK3j7o z(W=q&H#t) zyQ4wP9>D3`%hiJYX&*&o1L1|#OjA3g1<9Wo!>rOOfRq@}YOqc+gGk^x5J58;sZ9WE zg>^m8eCd=zS2$xIB(topc5Lsg#^T;R9`!ZwzPX3Cv8n37tpdX^g6!&t&8JwrK%h?l zIPABuzk<(Th`kC@fEl-b`fzP|W$WITYj-zR#S(hs+BJ>7iUx>Fi@AMyLt51vt5d{r zDRv%OL5SQP=Ee}%AdVP8eK<(Q3teev=^tZPaXi2^w#X_W*Slg`iqL`kOhXiXH<+rX zwp@si12eRx+$!`b(bxPwP{503+ z5}amu8Pb!0^(k7(oT9HfYldz85*Byc;R}xlNN}irURo3lUI8${i5Tvr*yKg_X^1hWualPozXSQ3YT+fqbRa5Hl!bjX>;y!~joxlu>i!_$~Z;;W4RurUz$2CE30X@v_P(=nQQe-Y9wQ&r8c1j zAdPPaFVTi?TsE+}$QlgGY-e}Ks9PP^R5kM`X{gr0|L%U-JU4LQp?_P#oa}{O{_;|j zEDRx6Y5v~FaQc+i5oL1G8kBYi{L*tpi7~8bnO;Cln zzd9X2IJ{DUf@)%8FyLwry74F*TBp=fg8`c(-aGC6W|?GKi~3Gg9kBUs_Za4_vHcBt z7*2)BwN@OW!(khoF*;}>ot?El>i3@t5Zd54J489TE?igTuyA$@LIxepVY6@}|&e>XgZq<;wz~+$LfAmXa;( zQ*`pg+?qnJ_*1z*`3=SZvEl>gPCQ{l*v{}nwxmkAU|G>@y3{N~_v^L$9i2m377E$^ zF%8)krfxe#jrwxLW1!@Q6=0y^MTH`o{}drgtcpQp6h7oc!$kwi#PV}KQe+8XDH$f$o~2+=Qz)5W zzhJKDRC^)AQ+(;W)gBBkoz`9BKV1I& z?$+u(q%wN=Xp8x@ld?e_X_SjueNtX(Y~Tx?xqw~8wFKA=b$-@{!p7;k%>vtS>fr)a znqNFECc~Vz<%}h+RqjeI=IuSbKE@?wvg}LFO3Yd;?xLi(hT;dJPg9@T9!mR&NH2oN z8pOu!2h2wj^&|e0Xr%kpyoN8c&Ar}Zui`j0vJ5g7PDWZ|B{E(?!oEo&L0@G?j~QEw zX_FC;d=S5E-?zUZeXPj0I7IqBCi6=ZhmRZQOAGay^vz{nHX~h@n;~i8MYJD6+Jp%j z*;;$IjU3-N&WfcYldOQASygID*xn2_f;IWcFIqJxNhJxSK!5>egpQe`6#`aI9bz0M zDK6+l@?*O7)W$6}8R0i7+O6}!_*@4C6m&2I)dE>vImM1?Y}|vNx-%Nq+54-a&9esE zaTZ)-Lu%{e9Bf196Q0DSFIc2?E5S1dLFc0mL2yapML`yGHVmW-49fRBif|R6J#V(F7w0vpUEl!4SyPlII;*NB%Kj$_(kSZ^ABufdhJEE@Sp+JrL5A zke5n)n(Kn6FBblD#__CBKifNBqI%L z5d07oBTcbPWZ5^W9S%s-B2g9~J8a-^0=2EZCWiJOX09fr28{vwR=%aLl+Z(c>p#*0 zxo}KrJNG0lnhaVBuO(fWrHaA&#;3$_Rp-|UWf zakOGPdM?j_-0=WG)@WBpB(VKjj1Q(a^N=ngjT5GR#7QTU7dK<}hKTwQ8xrnH8)U1G zmUTnnvRrL*Fj{bG(lJS09BJNQN^I|UdZMt)g0y|FEOde?lF+qnm&vD9 z{0P^*Ep`b5g@-|AXqUIt@s2GBTs)%_hOE)nf9X;>kT4LDueQ=>un=j%5b`=Pj6u@on>WhpKq;veDe34;=T2VB%}Emir|K)Nbr z)%>Tug_2`0@Xekn^C8%-ntr5UAcR#mF%TZB!5ZT0YF5^0s2D1#RCsh+v(~c2HycR# z?$5cb_;Y@@=RyN}u1lbf99J@bjIUPOVzot#VAinc>G%OLoie^ucr>8K^ua+ngtwI2 z-|xPin7>5rw5^h>ma=~=tCdxy&}7t5ix-(lq)kpUEtbet|Fl2Y>9pX^UwIBg0PY>> zj84X&GPWoH`a&7!yLOvv%^@tP7)~BCU=A4iHT<^9^6D8}wd>q%Z9aBG5ym2Fh|A1h z{2a#zpz-lb?&WlBC$c{A4%-H5K^QWkDfj_qs@8JvXNgE4()w z5g4woCvO_rDz+Yj&OXeImQ)7dWRtISY(K~4JM1bKFaGIZjHUku#xhn9mEutqpAIi^ zH(nsTo^XKLsv2Si8jwsS^OmM@b@H!CkC0^Pe6rgo%?UHkzE)@N-c>8(Dn zwD4iS#ztkxhP+l;%iP6YM*`l%CWq4dlpd*<^9^@M8cF&izayURBTu^{Mb6wC8=p4r z_EsgC_aX$AERDfy4Nz5%fdBeBIRd)1|2Qs3K%2LfCj``f$`$5ew5zCCRc;zSSFU)| zWRzA4JqypKV2^zNW4~nj%FI}bM2XXxl5APD51#pJ+mheTM8^D(YZy){c6dr5h%4h9 z)?7zCJ|mySh9R228p$AGb`UE4%(*QJ1lID{D|ZiJF>&E5uft*`NHEA!|6C+wBIpwi zpxkHHvSC=QSbDKFr~tl z>Jwf36>thTD61zZ1nH4OV)AU(`H=8SIzgh)(%3f{Q_;KSo85wIN;lSiWDDdxlrc(Y zs?|dXxMuSCDEmZD)(B(zA}e0yX)#Oo@J9{3fINTpwKYly(CnggWnP9d+`!z9sE z8CCA4F*S_u3uk`{&08V0&RQSSad1tjp+rt!Sy&;7Q`KUK!IfLc-YL+pfJRD%sy#N% z`Rm+*s&U?dCA$~~CeCEfcvxMJZ-}h!VJqg|6Tag?v@Yz$4GB;LNV)2~84J-%{hYD@ z0_H?Teb^#4X!mz;{O)>vel+4$RLsmu6DSW>Im*UAh5pOiVHJ@RHncsML5ho)N((60 zvR0E(#%ddGR)7Tn#pY6_^mH{r7T*f7+qd1krPOS|vi-fT;<9a^(4S>k>qu zQ7IH`1Xv)F-#0Zy-61z~CsW!N3K5=>khT-UJgivORnVqV+Uy>>)i20l8wdH|CR42a zw5Mof(xRIiy8#|8?S@8l2< zS9&u|oC-mXoH2P~AB}bp?%HI@Y-f|qnc6nhUe7EIg+jVx3}xhJp-9|}f+mWC!Qw`)P&n)Z zW7+ViP!z@s6v}UV)c%D9z}i8XqP@tV#C;)8C@JqlkDd|QU}>ui5WpDo?{Ya%fZIp6 zruHDP;N(#%r&Z>$-cg!~eN_OFVfe*q?z2#OFXmm!1Dbj9B=A$og-;MR39aMGK&D;3 zFeFe)gcOYb;t`LJ)%Y(Qlsshceb0Ye&<|!v1qEIDI{v;BQM*6U^Bz9;B1spY$3A*7 zFV&zRex<(4PVCM1Jg)IdawAu{<{5L+dU}#nz@u=ad$%CoWU#sFFe0Oo<=lmYG9t>O~bZR{0J|UOPVcpf3sNB^2-WO z)m)1l$J#lqvWkQV{wqW%M06w7^3p@F7j`o((FXyGeyr_?S0U*Ffsml@C)QYTTyrEG z=JVVzKab<=1v&^-sFVW9s0aL&Ssc$iiW(5-L2f!B#SVhutU;M#n9JHa^8%?>wP}ZS z^##t+J(icn@2*p!MR)4nA@1ZeyZ$C%iOSwXUB~YF+aygAp@%G zikQQRPFAU?alBtmFMLJdQ|p0Kz?ZIXw3`EFQJb#!WMuxGi`qEKtBv@1F4|%~)YN9x z`Rj`aJ3Ho5JxRqI8G&QbaT;D^#aLFgNfW0oA#wv3%T{TlzX7eWycmk?Q{Q`77js%8 zt4!7wrQ7K4{{V`ipgLYF)YsKg9-Nx4??KXYGh_E${@QiDDOO(X(km>!v7*OhQNYNu zd;W_1RLb5dN?u@Jx720Z2%F~7*lCqK(GVu_@b8s6@_>swlI&d7I$5pVsltue(R~i|g75S;7^MP}~}v!iG0Zn+^uI zJD}ZbNxSe&D_UM;QHn5oU*x6yzFY|KQk?XS8cD~uT4R)v)J^0 zdJINL7u%nbGtSqpcWLqWmc8dAMreW1zgEj$s+#01a>9}6u-o~VxOEN|1wXrx-R5m5 zFI04LjtY#jzbTp(s&txju-!3nhGU^KjRJ!c6o07!G@2CFY28kVp@n?`ke-ZLdXg@` zA(Fhd0c>i5Or;hXX)m9m9z|Ct)uK@0O{hl{{NU5qF-u86;jhg!MTEz&(y1zcsHZVX z!Hv<7rSHvZF;pRHq7tZyh)Rhp45z3ii&RV8sH3TOho(@}VFi7Fyc$T}0ddDmvS-J+ z@;s-r`0;=R#fuwbYKdt_ozeaVw<%To=x8?4bXtgpNgZ}EHl@<)BYy9=BvX(SS|H@z zKJvFCJB}>;c2GZU(7kn&8cX^}KdSah1el^Q<@&8!p;0g&$Ziik;KXED*lt9>+@%H4 z$yAmjUx!D(SNm(tse3j1rZeo&!po^2w(0V)j?+YHgb9K(G^?sCiHjJN3<=T(JTC-t z@(5BWuEuPS2HAPCi88oR5Q%N= z4zAgk3pC|0m8ChxMZ}^l-%ebShE>5`ac# zNf6T3DuToU&ji*N{xkkBLny{S<$@`aSc=31e~IZfkiI#UrdfT)Ciu*36xcx!oFcTZ zlUq3uF#8Jy@Ch_!XzU3#qxM8r04XKk?5Q`yHN(I2dIQ1;@fs8`FE|2#zod;xWD$VF z*u$3Or@&pxtRZ=1AekFV?t=)au6(JvW69Z<)q#da=pM?gM3~px_F4}fdH{pzdqB=! z18;|0K2x6q!FCW#8qY5hW)OW=lxqvd)IlakjCJ`?m-qIX9dF*|Q7Xw^!k|$_wbV|C zVD(y>rI|IftZCUV42PF)Pch1T_icNT9LL2@M9x=(5TOf_uS9}Zb>yh*zBA?dWdjFl za^mq{36r+jF5kD3HvOxVH}qKuzqtxlk&jxS9rn$(4~LUzxw4_hM9SGPvHqO5XK2(`h>7| zGKwrG-5A5m$k-7wA0e!?{|rGj;7?>A;Q2Stenjkrc`H!H!CTy~8`5s|w8&X`+}lif z+&vPn#Nr0<)FJdTmb1cej+0;45wVdBcIDjb_`5y4lwR$@^+%q7Bh|>TEP-K9hWBL) z5*(jAQ^Gw7GBWBCW8*k~`5h3FVNe3bzAyKWPH?>NU{v3oMbg8Cg>2(bv(IsBF+%=# z500N^w?+Nrb{NA`>Pw-7oA;XVzk?JWu?;awf6Av%TcGxg;H~F zFshgrAgvg_NECnrD6_~09MjD%;GW$O5-lQvy?)ljQGYDP%zim+@RvpLLLC*=#`2r2 zS>8lB3mhwqFH;RB*alC7lP^>Nbf4#V{eG~!UEtU{VfJ8T^lViEomgRt2G;bHUa`U(?1O<=5Rst(sQ)QYP)Xq%;}-r z&_JwE;AE>0RyUB2n4LrBVSSc1Ap{E0ND3}n;pnec04lkjMexW|`2fi+(SlW*vXK^Z z1ms$h(1HBzNwQk|+KMqks;~p3AH+8tZju}Q{4_m@_2d4r3oeS1~9lV?X58~H!^B-dB?Ip`E5|x&LHO4EHO6Sc;sxDy+dnEScz)EvO@mf zea0wp1%>aX4rD%G1weyW;MDQD=P|fFgX2w{^u3!<|f>RkqiaXD% zd_sXrPk>m9>nw?U;#;uR;Q6&5>bF}NpX-k+R|02dQh$?$VN8tR^@;S&_pTx6yl(k{ ztUry|1tiQUyz}s{S*FFpVP?uC#aZ`q*bJltFQ9Gs=yeBrG--?^hD!oOA{ z{{ExC`PKJ++1>w3$r14V@BiIfpI^A})?0u0-IIU!FaN{8{pTX-wat>!g=6p? zkh5zfU$WCpZ%ME_RH?UFMj?{|L4EDP}i}* zIQ(~x2iss<9Dn|?tskSUKe%(@0{`=I|M+hwx25BL@QX3IA^v-BsGMx&37`ZSHv=TLc}j|S2+|ZZd2f1} zyk|6F6{E>}Mw9oHCht|#RT zeWS|zN|pDksq%iAD({~gRTy(H-Ad&YE+1B?Ce6+1NpsUk!zxCan?{{_^?cf4_}`U(@&PFGdb3n%cZzw2~9d+sKIlgS)x`u^IP$aDIa>>CDsJd2pqA-YVwPAsl8T2cs~!A3hjK zha0VY>TJoS&S9N~_-?-J?KY3$9UuheoNeyI?gtyaJ~f-XX49c{Vl1rTNpJTd)?~u@ zv_C+yu5Fslwqv9nB4&`V8!36)lfmua;x=R4=5WOKgL~Nqa$R)l4~d3LNXbU9ET^M zdvcLk%(jSGZrL8E0D=pt2xI*KPE20WS$FvB$KTtSxpB#HsLdHBGv& zWhb)_2x+Oz98Mu&w~Uk6FlC23xkn1o9GL`~o>m>69o%uZyTN;o3F=e)pow+&DGob; zJCAXL@;F9P3NX)WpqFwC0sRQq&5>zvgUfRqNo7U>m?Mp&hP%kxTqNCEdw=Em(YK{B z7(WDq_Wp4fmPoV!12J85MVRH;EZ49R!4-{+fM|a@>L2NaYkn8~RD%(lTz1$*JX?DTD82sY@LP82yM$aLG+-n16~boJ ze4ZU7uZulXYJa=y(wJ9(h0*kxN|II(bTtvxS7D3OyD z*zkSuiN53!re}RzC?M+)vS1HETCN5TlP;bTS!MNRIvE<0%j0h^q$!q=!9sUNphNRW zgkK`vx%L+^SAyk)jrq%o{v$XSm{OF;ZxfOdx>D`m!gT{w38}80K27n&pJeAv$a?+{Ct6=>4$XNGb#gGq}B5%Nr{1B zxF#+1o4&V@r?Cb5_QPy`K1s1GJ-2`{S?B_+fuKgoyu7kr)`67R3ncR;zGj=fTH#B$E>dZ;hAUyvyJ0U zcyipC4Zy(z<6q`aH8ODY1&x-RQovZO_}e~dH&7#m#4#(N&1=E4mpLv+!E z9n#5y3mALPm4J8mWZQugCE^kOPq~2!0tw2WjXxufJm%X-?EuF)8$HU(UM;;) z`x*jg3h$j|+`3K#Y8IYUqpY;@Vf${)S&={@`&|ULS@rUR#{E}!R`jgs3?QsLZB-?NhIP6W*QPRS?&-L(e z@=B>7PlIQdyFZ98eCQnypoRWU;57b!_TJ?;&MeCl%W4eDQ<_d-X3>~h7=ut`PARAq zgCeDTl$6R$>Y1vNL=8z*70gnTK}JxDOfrHMK}uq&1hh9cX5l};3oizS0S_7j*zlsq zOaBYT7?_4(v|-P}d#}7P{QI59eSO~-BqddKb;H?RnT+qg&pr2?bIYH>X$14>0 zkV#cLhSt5`5@~*gn+Dth@MIuN+e0|`zZ_hEgsPqrcpD3sFl^!LZy=3*uUEj2z@FaV zrK#J4-QLk2pDr5fB+;4G1C4-@^bK3;^CGla50Il54;?%MQsaAIb}Uiq-DC`w@6pwe z@NtW@p_2H-4kou`8Bs-{)3BwdYyRc)0Zuu1!9>m%4mrcqefGjMKBDi#T@qp}V?X4e zlmvFH3`wwDwYD?p+^63O&N=>Hc^Y>V23dHNOd<4>ijdIoXyX+?IP~ir>ibOQvN@h? zHcWJx$Kp)_%K~P#=52+gAe|u5=3ei&c!k~84oWZ2YuCW=zAR)qK-N!T|2@SH!yMdf zu%hqr`ZjsFEE<3j7a44RJ@@85|B@h~EC6zcH^3BzFNVF=ST<}Qo+GdZGx4+Z`FyZ< zzzJZi=RH)1M-m@8z)x{E!5;}YYK;30s1?ECQVIZZGbYIu2IfUhumpTc=S5c*PGR!R z`GPCSiaP#zt~-#+(>;0VDDSOOl2`UFLeFV^FRZ02;Y30NDmjRVy%ISTIM9WZ%St)J zS`(TiUTB>QJ-kJ?4@N{cqH#-Slb`-1VXMHQy?h2%w;Bn&46>w=%F( zump~Wn>EjvYHUndV}hcbGb)n&)jq+5DU!Hv+PDWx+j+3 zpxjDP)=3N2%I~5J5slHn-&B{8!0hm@6rOAnqJey^pcOtRP|2aJN2!;G3Gsu3 z35o~aUV_G`fUv4|MG~=YoMlo2ca-Dh zJIXIp_4$%QI~XVJBPa-56kWl96>RyBtxL?%?0nqbtS@%(G-t&7o988Qej@(~kd{9 zBQ)XnYgs-dMX#+r=Ra{xyukJ9%b=7isUYwca=l)MwhI6yor7?(eFO#dJm`?u>6(15 zZlC^jy5WCu)LiKI62Qy?QXgIpC#+PH%fU-aEqG1dL|_+r=SdMI|KK3;tbM z8%ulUb)5WvT0D#RZ1X#|`vp@i)5<^Wo>eHXYnR)c% zq)9Gz$B@7Pwri(t1QWqaUO2?whpCJw*M2>^fQ~sWF+@}rSA;{xWKEXBp?7GPzUj1v*Te5C%ushSzVv7)U(TfAi&CXlEZIo zNQey{qJ}C;o2VH8w@2uO#ImDYI3UBcB}97Ruy?QkLI7>rbZS$aF)+1?4gw!p0evbF zLd35p_gh;d5P?#3K!kGpEhLAdp~?(LH8Mlg*56)xV1h&RDla7mmE01^VdH3c1G6Hx zk3DhfVqT%L;Qh1rFuex;-XP5%4Y4y(iv+c&A33t5Z6wMFD@b)h#y;7)DXl}+7K0oO z9Zw5RDO13|$Q1##$P~*ST%jD6It8Gis`e8r{3dG@7Q>TWA9+BU$EGQefEbKCPnuxMd&nN1$ zl7NLY1wlWMsY316rpUqjG870|1!@BwdX>T>39!1$J6&@nPF<>~de1wv+fuwHZSYYo zxP(AAxef0E=;2lD2Fs{Xl3$h7h#~(dCyE=k%U7bmeb%(A z=~3W~1ds1j)aCr1AU%Jgk3trcN`VCEsT%Afhj)E!Co?`V`RjL6)t_k=kxMdfKQ)%T zq+50q67zT$F8+cta2luU1<__9KJ+xR35Qu`bx`cFuJU%5>kA-_XJiSTmfE=W_{Mi?A_dCsLP^d}cQ>(DQqNmI?~2?BW%QIUyq zEYs~IQEP8YS2AmbD~kn8dhPY>011sThDjs1?Oc-4z^;Eubx;b>yKaCsE@*N?jFcpt zUYGoB1Rp!L)twUAfW!oRD1t(WoC|$TQr>49Dui*DU5c?-jh|<6V*Ts(^h`~ zLRiwh)xrMw1Y-z+#fg_a#JJQasF&U-pNv9frNxXw>V zWdGTj$Pj_DbS0QL*|${WEwd$b5LoPJ3u=J7q_{Oe$^+TfOJy&l7aWXU3_*M-#szy! zfzKw!ef;s_B2svTo@Ktmoy%=|B9)@>dHP+d6Erb@@dThI`!`2W;p^V3rxTtc+y#<8 z-#czo02S0gNc3d={ z60Zz+>*BSxz>owJ;mHMVASz_RK5c3pdnHpD-t_r(F-hC4 zAO1Fo%HBKva>1Hr{nc1KGM<+TpMhJ6)cZCDr?}yr z@-Y0+0C&MeaU&C(mCU4bL8?RxvtWcIJ)!MSvIJbh^&q)<3mD-_j${+ic?;ofa%$3I zr|ORSkyf89yvpqAPeyWI(@C7*E@d2qb!$(S7<9JiLbXM-qdTj5rz0hL?|`;Xb@o-~ zB_uL{6aaT))GM!aRpU;ELL4FpHU;GaO5(!ti{9Q5E^%TG1TNDt1}780dpKXupeyj> z^UWDhu=P!Y5VbbgW8zS;RKQ_{xeNI0s6Kyyiz1v6;mE?r*|yq9^4$h_#+Djt`khTk*6%LI5Q=g%+g89L<1K)r!}VNaY0kVXzFgDYsXkGl$&(*f@LDlB(~-9cBR zW7|a4=V_J~Q6<2YZ)ZU2iVc@+zuW0Ya9V zF9-Wy0S|W$=fzk2%LV+#aeIZnaYH3-PN!`1kvYhuFdA>l0u8F}kB0*|w)95F?t1Pc zf4M#JOjph#9-BX+pKkG%)~=upfiN_AIT>OK@UFvK^@I*t)%jENiK>?ak#OEN^qKwP zcYtpyf{}P?2EtG&hVlV)Ae0;7Sk(XoMeH}&e~=G+D?$u{Mb^+&u+%~Ijh&lQ_)WYe z4FS^fp+-n8ZQ1oU^xVT|qcO1?K(>tOmfK8^?t)ZYaK$0?Kuy$(x@V~Pd)wGS@nRBE zWl+~+#M}TsL~a27m;W$Fz<=^iIRgIMep8MBIkLf}Iird~lP>tm0%2@i+D9L?mPd!f z`E2F1=G}v74k(HgFMS?LIUZYl9G1f9JSpQmzg?Ky(x+ajXj8&$Q~2||;>Qb^4E4z9 z`_amIv5Rj>=xk?BbP;`e)(xkYgRbFD%Dyu~K8b3mROVJ(#howpY{JOMAVYpi*ulro zJ={pEg&G27x{wt&oG2Q(z|{%vX-@^vSOG7+=m7JW4DiG;tf-xZKmYYYr+aY@|9-mmprLfoLkYhqejhKxZ2WE`$c3fAIx){&(rAckrfA`PX$f36}IK zr>d1jU~t1($9W-4w+h;3ICYYw%BF!@{N9haI96W-Nxn$051#h7IqY2}a_+p_Br|BO z4A+9hkikDxq$`|3~>zM>x*l%yJV&$wt2^@ zJVS<>m#D?SDvZ|0fRE^yUFRexrFB!)V92+i`wb^PP9xik__=;pVmX>6KY}maJM0vk zi6QEwZpe0xabZ44J=iFRgvXu{cf^nb2V!v2V^8FU@C?dNLT5$7fivCS;SlP7$@}Z_ ze+z<~IZPr|m{?fo`ZV^Nl+s{LcZR+%pit7!p$20mpeAU+pB6rJ#Xg;IpRfgnvtD9L zL&S+A<>^U76BYnjN3{_x@j}}$ha5keu93u&hB3~HG7o#BBVPW)mdKV1ZwzrJ+M&*=1xC_DOO`iwG; z(Xg4e#_T+YT_P73`r4q4uq2G3{>jRSRdrxDOY$vs-}5;rLFJP24dV4?iu|;D1+jIB zDqIL@blG1H;#VTC!6v zwS{77WGj&{!!*+3w2Z$lx*FG5F^E$x1=@(V6t9fniay>wgsT}NdZ2&8fsK!l;o9HfUP@_)6N}(URJ%Hk3AF=gvZxJX4guy+2A0i^u zIYH~~s8Q9(yQ<<*1{n#EB9j4#96C)}iNX{UeJ5mA9}TCry+K;2=ow^lL$RY`kUd?% z%2#Qe2x>KOoFt(*m-;JT&O!E|uc zA4AQePPNAM9N1~#R-IQ#zU%}lve1tNfsX@NT>D}{dDt9s5U5`C4;LG34&b#laM+X~ z!}@iEV)1K$Ck_q}3(W8kUO-UgLGy-Nt|Y1uk4CrFIPi%kc1KBbRs=v)jQTYMNrI&2 zeVD2nVW!ZIB76xSz3Oi~{hjNlY+m!N<(-|u0Tq zHlEHg6Fd9{I@V8DtrQ&#qC?=fSS=FE`(W=7T9f`O>MWv8J*d$6!l}O#imH4m^aiUN z`3yGrDmA2{h*x2HMS=Ul2ZP>FW(;JIudHT@P-P0Vkb}huch?Ips3Uzz7_1e5P+wA< zjk=3E^Y%dQ#ndcv12QpQv>gma^UyZph6Rjs0^ySSSq_HuJ-;(A|ER@?YG;SI&zQ<4Ezpv!A|nM zexH&GXqf(b-+MM3NnjwZ#>hAI-u8vP`DTApswOsATDK8+Ca9A5>iunotT5dLnWQ@k zWpvr9%74xZ@Ip!yE21ZWs88DCq^K$xE}Jos+Ghl}<32`_i}(sqO?ayMExZy3qZKq2 z?WHLmU*o5W+0cOqRTVGRY6An6-ntB%j7^T#UUd=1{g$%%+uUiaular0BJi((0+g&a z)-^4Lg&+8^p^l+Rk-2DpI@p;)#SN2{c1_pQ9v`EhQNCZY7k8(4& z)#xl3f~JHIH+} zU}E8lXqBN1?Vy~`S<`Ky6(Yz_qrGUf*)7vE0!J@P=p{-*nGq35RfT|Dw$--y&Pkr1 zRxe{Bvf8?R_D;3JS@xM3cZx^b(o=SpZDm&^1JjfY6#M08n+eTk40{#@Q{xs19=AEG zc0xmN%Afb(TF|RI=&aoN^!IegrSl7yyPuwT##uAl_{IY+eV*xb-(_M?Nb7X`;ZY;b z4&d|ynXM;xH9)2&?I$pcM}}UclK<1F@LBLfytL=VBHarozal9}trgg}>%;}zMP_Ct zeGA^updSy@$o3(8%@3j9;zBVR#lO!gPC!dcW(?hTHAP|zf~4z)-20|}4{XCu;q1`> zfjo6%28R08R~o#dF}6rxOGE|oX?EMUK|fOLdGB-v0^o&_xHRxHi?@3v65L^lr)xI^519Wp6mLQE-uYt45C#_?pRb&QrUrf z%}YiSFp)IudLTz|;1I(U{)EL7=^`Z*7r%O~HWmKZ@3z(s1U@q|H1N+&NmEHf0Xh)t zFbuEWdwP2dQ2BkE-9_IBAYkQi%*?6i-o8_ z0122u?+B=F>oMF^ppwy7YXv?p9m@>5-PTR05+o%OoyQO9h$2|F)!^c?75s&eAp~k4 z;Gf3W5M!s*DHt02_JNos?nySa>6v3SaP=>};uTNenaHf=)H9jaJGc+j?Ck>>1K@Yk z{cbuQm02sqd0X0lWbIuXU=V=mw)_*rPsq*mw;dzR&)n6=N*_bsgM;L8N4ks|++cdJ z?tyi$rM)VLt^sHg;Dku4%U!EuZ^uHdBU!4r4c9c8o0SZp>3|R--^rfsGu_0K${faQ zB~e)tV#bw_z!6a*$HkN@_!5!@$a&LPau2_EKxE{k^$p$8B@X>Ij@7N3p_V53QmxDz z*Q8TZ_9!G9H$M%?3`_+#-jM_DYCS+WQ}lo~Ws)4(nJxf&LIzSBPFe(fIqRx`x2`@? z#u78vIplJc+zF%~S`K2&@Hd+(1U*}4Pv2s8V!dS>%2z00fJ7|$evcs&cC>h!Xl)qm zOZ1ra!80S(F$A8RFn{I%$cmXEGjk@6M8VFP*ogr(*nlOIYv@pSMz;$&>KoDt)FFk# z*7qn8m2@EJxN=*w589x9WNSMw~S*yO(E!N3O#mKMSfTX_F&kizVSL){UjNJVS0djLZG=VxN6{OiI~?~ zeulTY8(7^n+unv^1#+-TLk2mV-f|zuj!wp<44H9EYDa&5o3nki`XSx9H`H#r(WL<( zbNHkmA+4krHaUu2`k?{GcD@%^x};@rP&0tqC{Y&_2MOPbs@Y{dsh)n%nL{=C&q!oFoOh9ZDsr#(&h3;0JORIJG|3_5xNxbftpU$t04BP^=u)vJ<*{p z=}2)v{B8<_scRig;~_(D(ihxqm?0;mA)9t@LiX$8W)7qrPZ-ea3zCkCX*M)Z4ZN{~ zsY!8#I3h!k#Qp=x^x_i-x+zHV@?DQ=sxV zvRnJvaE9RvD9pquaYcBC%U@a{dF}vDPzbvi@kXFdhNJQLz*nZZ?26o%U0o{<>jhtK zo*vPC7NlYT0%D3rj-Zh3iU=Q0BvehR8GZ5z8PQy3264b;;o?V|n~$HY-r3x|xZsmX zvUM2GgL626C{$p5e2=+&dvM|IW85cT~W?^z-v z`F?l!3Ra8(_-Y!G=3Vo@*}O2%&jR|VwYG6{(Wl7MuQ5P5{aW^TrKU&I)$5dT?2@JU z&N{Zmt_4I_YCsf5JiMGjdJ1QPnz2J|x#QnxeO^hVsFB;1qJXdgxu+h|O0S3HGIfN0kp|ic8Wo>E96J4Q5Ga(b2fo zmXufRmRvPO>55Q$s#JS>U3-g?UZm8b!*>&2&N@9b28*+swb*?Cd3m}AYA3haEgX&L z0R>Mb@p{6`KX_O!w70mZEg0zd?A2CFW9{fnO)hGFpqwTHwx}wiO`8*e#R<|4XT%#a zt`JZkZvi}L1s#Y#u!SVn#CX&TLn1c_US;uo(E*^^bWXF0Q8sai8ECa!U{@;Nmho2L zGw5ZW`%7fhWkjo%j10eav(t!PY}MWr3s0L#TV^y2&zT`#D|!{BVla?-S6IU--b~;W zw7W#43?HM-i(-c`vL%o+ij0nbQUH|VcXw`^`px*Qo)1e1G%}m-E`6-_!)3TOK*Hdc zZuk=FzW*En|JQ%qlp_EnQY@OujM6zmTzxSf_VIGs*KqrWL|m*Q%o%b?vOd0=R4kC6 zlG-|ITF-{nPcz3Yy3&CqK~A!Yu75}d^-n&vkK>1i0lh-fNitkIeI2iunlw*q>4^Ge z){v~>Seb5+EQ$62(H5Uaq^)ot z5&L6vRo=v0H-k+q9k$zgz_s}#&`vTJ#z;)sy?hjdIQKwbw(@ zxN3~=(4|WjbR=)0CJ^q^`tiC73or2)wl5^uhb1@Llz9S(1kq*7S#B&B1}-~?T3b|u zY^kl;t13bU&k6rrFzx&`rUr|&1BZJ9niS-~^n1?8b)~5LJ{Y#@QDp%VYpQf^IK2tw z9iF$L*35Q*#6%i&O3Ec%s1C&f?2@9orQ-@G-N+F?ne3(oZ3Q8EK z7i)o+5P?JTm{1ZT$%#x4aBS|1K`VU5=0k$ir}gN^;L1Eb=E-tPsuNWS!H{6)b9PfI z&XSI1!_92kDzrv0@c3BT47>#A#~EMyqI`xS}gRC?z z-W>FX5QC!imYH;OcuBuGr1$a6s61XLbc$wnJ)_Cdq=%4Xnly?sXVM040m!@X{Q$X) ztPMa-f~gpg>_|5o(-I?O->9kdMJP8drTXC0>F*&5#iTr*u>{Uha0m|{)xI3L4m>mx zfYr*&a3FHv4`P~sDX+;WHT3z&89`tmY`cVn(^cl)6fH-jSz}~>V*iXZ;WL7YOMnWV zwdDJN##z_{hLgtEap)k7ZV!kzfILxK_8Nrr5BBwO;4b`k z&q16&f@5U{fRl}y0TP%SY`1SiD)a44Xk}K=F|y%wOOZRP0@~?Blw>6O{@D|M#921b zH2c7Ze?EmvLm)?xK!R3)z1LnDZ~60E>W_n6me2zYv!wG0G@?koC#p}|Zi5*Z)HBI3 zhI=~^1}qx)Wats#8Gz83P2u)#Ek(*P&bH_Y?h5(+F=s`ArwXG}#il8sepme@PiV`8 z?~dd>Zf%gS0a3#?{cmcSV*~e7aI6V5k_}Bh=e*CS@t(L}c#t~jx0Lj~$R%>YC)aW( z6UCIgstNIiO;DNWLu~!lKMx_-QZ;aUqL(+e+qVyw(7d<6vqLyy^byrjBFG;zs`;FA zZ1bk|2rQb&jy{PRg;Zb^evV4>FzP#_}u zM=bV?xCqfgh?9acClKIZd@>M9M_jv(5gCtYpOL4cHgsGkqvQRccXT*L{ygg`bcr;_3&gD0elmn0wLWv}HzM_GvdNFvpmdLulPcO4pNS_T;c%(AMdw=`sowS~_KB*c z%CVAg<&p};t$sw>OmVCaZWNH{W68A^ErBA@7}W5e1aKrNK=yFWN{akm7TWgqC6MA5);bk;R+R7 zRi;q2G$-u1%Nx@@p*F#Kmn@d=S%{$@ggXatgNb&=oZTUjbFS&DYO}Rz#syU@Wiu!D zMPUY;VIQlERAU}X?O{IsXc${kRh09$H_?n*|v8yt*ECU>P|a#!Ak$z7>qa#tFeoRrL9at^zCKIf$+ z)peJT9R88pdAn0FJOu|PP~|pF?i^0RBI~MU9*2JWI|a|1F$=>Nkpmieo-g_Ru)Q$z zl=Br_-=^g}?n?I$#pAAY&&=bloPozVBvS(5YYn{0E4>}3^VTz%ouYOlgjnz1-mUPAX4Z1EKkVPPijo~TFZDiV6y*)z z>QmgnB%MiCDJ&xUDqQR;fR}JFmmuv-oc6AEHL|g*Z^Oo}mTc_mnb=rZA2mq2tU6A1 zwULua37%kh8u++Ve@E$Rzl-8=$h+ZHzN0`pRplBeCAA!~5m~T;L}~8Rz{R@68&ph_ z04FtV&H<=ZXT~tPz>ALDj*^`S%li9J)&13(gzg!7{GtLyC$Wy*vb($oIKJuZ6^**arAt&rR=W0tVgo4U|i&Zs(K`Qiy_dxgdI<|538@^b* zVmAT;ldC@+0X1wBtMZ-!B8R(R+)`EhQ(5ZLnL4b&gD^o02w19OSsXNTWWTy$9;Qz_ zSN$UII8aX)>Otg(PgqNak#sn(gUhV5?#rmcB`(A308R4lUB*A(ywQwk@ELEo6Eevx zvb62(rLGeRECP@X3$83yj`Hcn{JD+GDU>B%X&QgteK=!6CC4oAc3^Uf9Kg3DK^T~xito4Q!~tf7l4&Q`iO z+g;{LNuFe?^$zWoq0W4nxq3C>l9 z3F=gORpB}nYkiX8zH`@1gdhZ~zZ{9QtTpg5jk;kASNm0y zgJR)tX*0|5-*rFzCf~HBUjDbet3Hpn-`G_N41pn+NVG*2Gec=-`qiXvXz)Ya8-`@M zr9VtKPVV=l`_gcr>H`?lEvT;%H^H#jaXdQ=N^{hXp*ac^_e=M+QvsyJH^i{?_*5fZ zi0Pa8{$b)f?G(EfEM=v$K*rm;a&2= z#}oW1CJ$IP zCslCxr%k_o)3WRB?IAb|GYZTF7<#IX=ry1AG{EmOcjaFF($VrR;0EZOeMZtvn2`2U zGasC)jQL`(0y~lvIer>@nZHL4ZdjQtL#o7hgAPd8wi=sSNxmM@J9=B+3EwOqNi%YK zE#2kcxxYl#gO+_|j*OM1yBn{!lDep>f~~-Tu}@*){L#2l zywt1CFi8DF_hk4paxUs;+Cu_p93^D3r6AQh*gL{Q*5Xb{)Pmb$PJY#gdPoZ+g z9!sO!0}A9kMqV+V3(ek*6akVA;t}(4A@36Y)3;AN^YFuMZn>e3d~8G9UpbI8bCNKN zj=2IbTHY|y5npp_b9^j|d@tevF(Xk_IYN znIDW^0I&D=$D{A2UUm_)r7OU2pE-T$E)GLiAMwE4Xia@@-#=co5-@jr6l+atY8XG> z6dUYWHn(#>;_QB;S1ph>1nVMINzaa!=RK4WWO!R_>vd36bD=VO-beQNp4G>T7?-Z= z@=M3`WFmOA?D^sT-i2b^HA+3q)q!M6gI(m>;;ZR``4a89Hbi1Bpe{Hc3Q5j7^b@@I z?flY}&n2gGn89t#|6`gY9DMi01*psKSSTk6I=zme0J)E8fiEh?QmgKP)OTL-Std}r zZzY^sve<~apMBy59gxu8-U@)sD10RY4Hv59e$nfq7Wp1i}hU23tU-2YmR*71G6LCXd-F#r(V~&BncMuYW^e*a~ zkM25%d4f^mLIngdQw(eQjPk`Nnxz87K5-=RsRbLLLycUST&A&?IDd@k{&KFL=I#u! z$jTag8M@N_9sbK}4+IHR67niqU9A!fyNAU8j9A;=3>9bZ7OX zy{>Mu(6=`dMMgjCo40Sbp4_K|0qKzVJ5hHt(3+4V;KL8(pTGR^4?o!WPX~YV1N`Ry z{u#b*{pe3W_|yO8hu>(8@b4dlzx0nE{G)&S*MIg``xpM5k@M<2kJn~;b$SUe}hiO5Uu3@N4r z3Q2Sb30p&Wg_&^_S6S}h8j8TVb3bzQ@zjWX5qWuU&&l(&a{)vhFE>hxR`H4zinb3i zdI+9|m-irZ-B81GR$@GknCF1eC%J`E*%`=MAoCbljPh>fqn)|#Gv$_Uj4-dVVK%<& z9ARC+&AZwdCf-s|cx^T}U7cfi!MU z@ZzRQYijAiF=CFt{&0c^Pa%mwZX2sCsG`g|F9i61h`>nxsDbs+=SWtWkmr_(V}dO{3hE^fq6Qj^3Zb^+TwMdag!R__q6CT$-Z z$X7qah!2H2L2li0>6A3M7ZJTpmmz>ch>|AYdCqsyC7AwU@z89Dnymr@6G&Oi(a@Ho zxC@SSIHocH)KM+-91qNO=<5q_VFxi{gg@Kx-0(D3efK zpionZ#Kb9=uwD=QBU*@V*!LF|p#Ml$g{o6q7Y~o+M&wtOcvW{1#au1%eQja6lFm%; zfR+tB(ka$PI&P$SmENcl4>-Z4X<0_zNQkEcJhG$_9fC5d%<6tWIG!@GCtiL<{4SVo zf^7I4dN$bMlSr-?WCHr&^BXj+AZpr{K(OKB4ns}8@^bXp6rH-;oQEVVP3`BLICV8o zWt#GrZl?&q_}59B3yP=|;u21>XPDv!8>y`9DCkADpW)CEj+hBZ6D1`_0Q(|P^>50F z!C&{rNWX;!7IMNK5DEtsnZ)N$$zmtRa6m~hx9g3%Q+V-0XNYk23m*SLU`h|&ECXy9 zmlvDwl9Caj}^Y^>1{V z^S>#b+)?G%&Exz1&IOq-jxFlgo_C8kmgr@d9mrPeIoSCg{&%?Edj@>iL2d`b1>!HS zaq4Xnkc=Nv+Mc3$O4RSD7)V40Y^kz=GI+SJZ1DNv;lcFU!ooAeavW{r0ptAznf-TD z{qMp7gpY-vE`F9HKX*xb0(R_*pR7v_F4{JpM4tKxG9E##A}i(e7vpmr?X^JU)WBJpyjv_0n-` zOVqZ|Qs4>VA++hpovR{l*h3IWErSvlN=xa)WdhTow>lW)Nb=%Y2_6L3!#oE)yv2IL zmfZU2i!Ux?Cy8}d^UjFRAl_&h)k8xg?~8K&VRN0 zH~$5G^M5|ppY+Z+){pIWq|PdoPS=y)1V)oyEPucC_(yrO;U@@L#TN%`0yOw6rJCBK7Z7^ z)@nb(LsZM%n|KSR-@g9hM*F8fMKa0uEj(MZKRnu(Pm4=e+aI1=5q;9N7S9%rRykJa zbAErkjl470T3=%ZqU2ph)?m!;;rO?ZD|-u{b}zR&4|_Y5U8m2lx9&stxYxpm*2-Gz zSGc=uE`GZC`CMxms`vq@+s}uG3!h&3ynE%dR_Ev6u0MQ0O#|LsxHs7OemsYaRha5v z0h8=r=KtZv(_Ki-)+AZ%{J~!D5UhG1tKRSJtgK;C`X2l>$TSx}Jhuk0+#Mi6@cbG) z#;%D;iSKtq`#sf)jUe_~E%#(X>t)ptT^!+>qV(wabq<;6ADO zJ0nm_pgW>Ce>+4bb6ke80Nk*)p>X*v^wXi{17v+Xf>e$aHKX}^H!lrF*MD>4a`&en zp8JqzgLqn=jsFq&nw<^k4^DG7RDW>wU;g!P|C?X^#XtV>|LkYu_}~2J=l=Cy{)c;h zHmI}UKRg?k|JCl_{DW^k_<;X&UB%b`{^YY!j`j8b?z##c%hA8Jbop{?<>w!s`_=s8 zF<+DD&)>u&03g?hPd9i@r}H=shm-N%JTw4!dC$=q`>seZzslU1uo-M0V<&KUaP=5? zqiZdVEa!6{ujT>j8$j*{NX<77Yye>#^slwW^xD#5>)yll z56|5J2fWt$}XfxLa=$@<;-FJhwy@|?r9)|I8tKmYvdhv%pxXr9hzI-Mrk@N=Xf0*F8-;IyQw z{2QMVkrpm~!wWt#u^@W>;26i^`5~6L_~|?ryVP3V#{Fn@(A%45tJZ@Lrh3k1WinGS6vU<3Bdrb&KCa>e5<2~rm zAQrG=7Lo#hI8?bC9n-!6^=NuPs? zWOK7pv$HK%JWk7dWAC~#^%Fbg)F>_o{dw>DIf%@9A{2g)F-i`;u#Ho$HJz&QP;!gK)Dmd`i#2>&%6MDWTb`*`Eb6j959>{mkkl@VQ>VsQf;w1d&Q4ccG@;2>J@C1h6IO?W@dD_Q{rC#X5Dp9?qPgI-^B%4>sX^uAyW z>0}^^o`Bq2AHOE2u^Ml-x@aT%Z=}RSUCiPN$O&Au+n3uw;Wx2!V5gaeI=V{TL%V}G zn7ZJQ$X*3)#4~Dr5lFm`qw{sRt#|gP&wTSi<8Us7@i9M4>l=S_1A=8x+fz9}Owlnr zhBdxYUbnx+Er+i`z#i7V*2cfn!iU2Vw5^TB5MIZlz880^t&#E-GP>5GDV2lZ|2}D9 z9Woc0-W$M7CrFU-IAdP7)eQ4MP(sK@pu9p{dWe?6x^U1|VdX&i$UXAJ@XSf3Gy!Mwupvr^0; zpHEn%LqTSpunDGGin|7)9{1}h@7JApV0e&>9q3%R-aTCKTbuU#H6X(Nz}V?FCho1A zqv>YB#i2xiX%kGOZ^9D9T*%ctO^`9zzEU4GELm^|$3AHXcOqCr2BB9v*tyA4eKE`} zYxjux23yeG@fFE#>*LoL@Xc1fk2tx%ly?Gpat7!OLy1W=m>dYEN65brjghmCi6;3L zC46RZtDb5d(8PZ45PXzI6;+V{EIK31@dZd(SRM=~N=~;29LPJOADJ3d_Rw+OC3l9& z`s88O4oTegz$T203V9y^JxNU+N#&mB=3g_bvC(QYmuaE9J4Dd<**dANAQ{=v6N)df zC}UyCs=eRXWwpAM=^);qm`Jr%T7gY@>cC0hM<-S$OvCyG;WpHl!_(Tp+^q=ej(o|K zjVn~yxrm0a7s!V~Fbm-l~jR!hQ&dYOd z)5tcW(-mNW+Y&s?ncB0eJ5m1E+$gxo+8U@uM-?cU4<=X9^cV)snO}0S*!LlgN9*x&HO%oQd z9Xv1K15yaer6y6|KQyD@6k6-?s8)A$II*JPg|JPYr*O*ci2J}TKZ)dhixfj-Pbq?Y zU4L}!4ZG~*;)q%{2Bz_+Q0cVURjlXJ)0qJZyLY>FGh~ay=DU&2Mxkw z$VUgD!~m#UJemX6uYKiRssA1zQI@xqbr)Koda5%Xz*HPcjmLl$LlLaskLSOVboq2M5 zJ*1K23;IHqsnTp=3?OXT@H9i14p7A#5RYkS{9xtY=A)HIchKrG58fkqQsCUh-dW+! z>gvjBwO^kAt2|u(nN(R~Cl7nyL9J2t^6>s6sd7cCz%B|HE40Khi?BLB^_JRdK zQo&1h`Mhu6x%uQ?P3?=mTqB1rMvBw4(D#c_-3!$=%R~)P<;86lRaXW82Xi`)LCAsq zqRK8h@;-!zlYj(lJt%1`Wb3)DIjSSzN33oy>J_4D`KX=|Kl(IOT6)Z3?gZnWcAH-WwMyA z@-VPGh>wndVHH4z6M3CU>Xo*q5{XM$C2T(%n6lHdu#g% z8Y@>!YNU;LXpZnsFmz*OJ0#)_g*SWx@l)Ch8COkvehw}9BWpvCuDVA2F0Fu-#I`#G znXFKpz=V(anxR42rON7j3ITpdmK(Hj?dOBN1LPosvVS z2+lo$>eIGhfX(G_7Ik(Kp0zqcW^; zIZl_WwLP|LbeulQ;t!p!w&SAMkpJa(ifZ9B_zdkr7{0S<5NFsgt|_~)uBz4@3U(L* zf{sM*DX(4pt%4Ro2ByP@Eu;XXL0CaYx;lE+rpn&nEXx*cA3qhOdbr zf_I~6-2}v)c7$}Y7$nC9M*&0ZtDOOcKjLPo{j;;;YtME_ArPpEA%}T8&{;R`v7=NK zN_dXQ;2MFXU4kfK^LYsEH_uF5X7UkmZo367J&Q^e7r3sZOC5&@5p=0qs(51hoyUy! z>g@&C5t&rcQz`j7cl62?{QoB~p1||N>7yZYLeZ)N=9w5G00`{o$+OsG}CCORY@bEmlBU2!z z{L*>)OgJC@&snXsqCgX5R79&BcVM>5c0eKd8lnCy$?B{7x;_aB4YD@la`fQxlLOKQ zWu%eLg4LvDcQ}nb6xGp#*Y^(a34J7!9!^(8c@5itHgEkJ>1o$x3k4=?(=fAv4k3Y> zfJBim>zf1!fXaHtZ#VelwHdhz!`2~D8Q#b{{Da>4~_}@&k&zO1*u!B&4IX5+!k)`f^=5` zS*${_m(J=FfTP<0kYwR{E@F}oVv&)G_Pi5K%o00_)|eo_6VNXxJ=P83GP;)CmtqkM`zX^oo!#Z zm0^y7cfi*?Y=;ubHz_fK5@`+k0Hp>}QCgCa;@B9*i?vxI?h=`ro=txCbP>D5iFnVT zAu@(V?-auT_D7@0afm_bzzuc3pw9f{el8%T(x(iQa|v|zczghtMlgEw;^%}5k~-;H zaCI&b;7+nQhbd;H?{F-^8m3S=;PY&D7ql&sq$f`H2%xl1wwuP2t=vc#ej&0)C>Q+s zAbvhsy?+Z?nxQ5e9d^imX^K#_N3~r05(Z3%rHtun&q|y?|Jz^lLZlzR8$)1e|D;XN zvv$sgP{HC;Y{?Qlq5vd4$16>Ix7o?Q#j3#lqqFhnU;pIB(@*AZe2qVU^7P`|!n0UU zPXnksqv^wQIno(EYA@ZvtHF+jqGWoMjXoSW3cyH9q&S|VRj{#qNgdakY0YpNZh9+| z$Hm<*s?V$gyA%u%)J=A-+`P>L#!tMsGrE(%*;I@y3}=7_GmOI9eoz1ymkP`g_oLT5_ z_%7XVr@fcpXuC>HRAZd33s-7)wY_Q5V4y)QKyQxwcv~F*Qh*YIp^KYGyGRQ11pZ)C zNR0YR>uTj7*Rp*v9rI9Oe}*osq<}MxPfaJ>#LTzlgjLDJrBO4dR{q(L|7%H83w z(=JZx7W1kF2ff7A@ml-WIb_;G_BCt0q2F8TX{J!&oH_Tr+p1DaEC#S33`cYc!O_xf z%9ieSgx0ofBvWbWAR6NTvS(T^+aOtdM)cue-4iYX8fYF0wjuaH#d>x>oWslR+Zdp; zB$&ptsfzqh=t!Jp;&cf9cng{6rh`Yy?njwikAd!k_tO1M7LCxT&Is;>Xk}sm z*yjGxA@tw_OpuF3i3G)WP!i~Vvk2`YWCFCdQ@)4}D@;9(SmAp$f)_1mkhb_3-Wno% z@qQqsAO55wT$80K_S@$!%v_^RN4pB!1*T_}>nN$0VVn2hCt+>nfXqQw2HWf?M+xp; z-eP8NO29xKax$ho@1|3+ORa~~XODY3-$RaM*tUdf>ao<{9HR~AFGLS~55E5zXrsmF zt)YK2P4dGb%x|M-nq=#a*i711lYXUatx5+&J}ZN#5qY&zOIdrw&!4TWJc7F_N}I<6D=`OV$PJF2k?uRtG8opbdA8wPZvEsIxwPz(}22IFq$vDZLI|L()O$ z2mO3}UkuLnRfG<$00tC$)mh~rm4TnY-{}1h9DA)B7?kTK&<)whZjA@Kh@+&l40NnV zzADEZD&9y~vu1coH%a?b09jXy$P1DYXDIJ3cj2g;T>ME; z2ME=qe{;vO9`J8i<0V*pa=eT&_B9SZP}jU7x~*Rw=8?3QS~XKH=W|a|is{A97)~NV zm|wYAhN8oHff!oJkuqsr?}c8p)=J*mfT`Z;3FMG>l2K%Lesk2@n}%oz)d^3>UGnrw0}`0%4nG>f87PrI-Y$}W;7(nZo`egZ%bcb?yd&*}@fY(4KGJan(4 z0_|&%C*{I?R^}Dh*TSE7e!aoV3~n%;udj8w7w6`F{dDf@PWO|!kKs?^^`%eLXFqTk zCV7`G~ zV+%PBU|2*{Aa7DV#G7g#SDx}3(r#apI@a4GK+P*$eaaPNN8)gNQ{?=nsh$eOzG%$;Bu)cb} zzq~VT`w!d=d!@Pq3NO5%=v!vZ@lkMk+Z2Zd``?kYiZx7HJ!=SF?a;cTT~@fb;1oRU zV!b!+jYFh>{PSYiAM|y%7k?_7p08PO>J%d@?ww|$+@QKlQe`t!_4yY`JZB9{u9}>dK>scOI=% zDMD;ry|cEy`R&RYKR}#249*@}xcp%K{=+-50`gCTi)5AVEHx0{RZ)D&SBPq~K2E2~)B7nk|>`h&Gi{eAW775RY0 ztvp%BtO*`EH;0TIxPQSP&6A=)q=Qn7(d1IEKb+#QG6H|lUv)kU-g>RI_~}4;hOhAv zd~p!cT2#0)xXO`btS8XnY5tEvU+--gCwMOR4u+CenE4;zG6q^E&eS_cc-#UxKjUoZ zAh3!&5ZFHB@tB7X!@`HXS2D}nM;h^vPSc20(<<?B!s4ZM^gS;P962 zMW_)LA8M?DrHA6HgDcp9H(Wsq9my$)SZjVqEciq9E9Hg#TI;hYf7aDnDE#*+M7_t*{H`t$##}ohaTkOahuHSH@Ml~d@9Ztq0iotgc)@+9SAJRqL zw@{8wcE0yPR8|e9{v#o`Rim-)n zMtshdwO*QWyr??6 zF6kJdB4&Z`P3e$)2d|bk_-||z%dc}=_K;$m$5cD7sjp+O?nII=NtKMl18Us%2(`mK z1DLhIZ^{im2mbsz{l(T$UwiohewG77Wb$D$p6E@r>)=Y%rc#`^k8~ekIEnb%gpPQ! zB;aW_f|C2Bl)C)+-n@@XjzgA^ZcTU_;&Z)4wMub=N)W1A_gc#Zgl?rULF{Z=YG!wBT2@puV_ILR z7E3V9Xo)0eQ)1#|M1jKtN1#|5`)N4NPpQO*l8Hf!cT-XsK%C0CFL{=vF9~$)@K4cl z+4$bbX_@FdI9+Lz%{Y)*>*O^yJ-K|cfjUB|Y9y$h>TV`&sl5*#E^gqaw7rgq24sp7 zKSk5nvK}N;@H$?EWMx!F$*qfJCT+V&eZp9jdm%$0+5UK5&1Jk`<(=nyv}%Iew-_tJ z3Ouim=uhk$f=MGqkU%#0b?a<6M@LX+?d&GAa@18I&gG4j$oe94=kX*E3+?!imMeMj zU+!w&l_(5`Sa^9mAb-gwO;ByME(BJB5H~pcQtRGkZsRz6V>QTg+{O*;5X>Ml5=NF1 z@@NTnpE3U{DHpRkv%5STk0q3W4!qvo%McWYP!+f)Nd6R=Ue+-p50KVnh-9MO3j!cP zqQI`oB@pYe09fWwmDfDm!oU+XJpCkkiKq_IE-bdQw;9IB>Dt}VDU zXBKA6OME)QD7>IhhIb_K#%@aYy|Ulnx0R;RV4ncM`za^B%v;x*+DHtBIy6nkBK@Hd z^ec=a-%8Y$k0uS+`gj|Z&r9O7VuDLvu@y&Ppn?z#YXi0`7eL=vZMdPOAi+E!Twbz7 zDZ^~DC6;oeA7$7>s2KbC;CN-S&YX2bY36Rj1wgLdCNRTPqLG-YSD&tr?`x!{LMb`l za{0HwV!MFp{zHck02adm4RNQh9THJFMo^OkuNog@Ptx@Aa6??|#7zxr8fku`<;V9m zCk`Wp?3=7|3t0XZ<2DSqrTfrG$cln~h-n6Kbt0QlGzmSs)I7t^9Ml|ur=9(RO-QB- zPKiiC{59l(V$u=T*pU^;mbD8$muzY9VMCS+n$qdOW?O5#tJu|88kCN*`OP3V)gHK6 zWwXB{7G%43UBadWJ3u(7_5qj8B2OI^6kU1cFOk@B`3b1|zlv zGpHY6sFXo-+2z+wEHY02JoMV0XTxM!SHa> z!xe-oOjgS5_+0O|NFAFSW0zcNekriYo|6t2m9d!gXexGtuL@? zb2CX*)$w1ykl3RRJ)+}aFsr{doh|fSMb+XbTQ*H2?XznKdrs`kit%<4j{|3{u#^iU zD>PHElVlu~S(H0+zMPukYO}*6_)1mX1SsBCHlyy&9=sM-Mo&h}Juda+qGG#K3>vA4 z9cC?efw!m~f@Qt@6asNOpAT;>oR8=!dk{f2p4FCh9J27p^@j5EJSirPGRPAF{{|RS zKusmJmL*?7C_nNLs+dgTip*9}Ew*Jn#={&m0eF_2Bt^^foqVS4M5GE%^xjdvrW>vE zUSJ~>9YfK2G%#Ujns+SI^wwEDUl!V(-{xP`_r3F-HWzC_aqQ=Wb0*7Nh zo+NO#J7{_{$;}Y?)g;#zB#RB#YTc7C|F|LH6QD$gnwpV=2_+x2?mlF;78%xuOrRsl zUsjU~WF$Co==zH{cgbsabBJN)8&Bb$qskLs5ZwUc&@t0}PB2?sOigL87 za0*`Ewh~xheo0%oJtm-7r;Ua)juh3Hm>n|Ob0a{Sm- z`PtAxZuKQps$fi?LZI1hO;WfsMCfl4;OOg)?J0Z|MAf_>>SS}+L#d^dV8*r`ld#hvXf`O3IQUL zV*ADL@c0%DEn@K}Z0P((c=N(ksr3XeU`4F2D|U7Y<|&v2n!o!@rpluCv;R z$NymmPVfRMVKfaZ_zjh#ur(HL@X$xV5^6F&!HkiU8y#!~ywl~EI#j{D63YS~0UJhi zteJ*_$Z93(2$$<{8V{y3>j_l$SuMcS!T82we*QpJmg zLabFw?6~lNVtW!@YY;NcYiC7Kw{vT9jBLYjLp34J_g+y0v%p=~jJMV#;s=)$PjFtV zyE8m^?y6d2?KYOjX~{jY#{HqK^%DHz9HcvpZJjXPiV#Sq+aXH za)OByrRfy{%N!mb4=(VN=%Zil!)Bfp;fs{;ZBP`^foFk#%SY&Z=m%RinYZt4 z&-Q4F2D1f6OyYFZtrlI#BA`K9fx(?Hdm@7ssQ`vUpohug4sVPh8gNWoeEc>uH_H$Dzx0_ zvlaeD7(jU&<;T5S~hUved34H8L)2rz0O z#1j~I#}RD7Tbg{%f{7(hR_xG;wlXoT6Te|_JXJ#o_&-`B8%k%%3UC6YJ1Bz8(k?1i zL@dq}wn@jfPJ>QXpx+#i#0aS>`>a+w*#YQ9u+cE;#YhaWIKEXJ%#ymG_LGq&7lU7z zrbmNW7Q`ACPrkd_mTXiz-vjLOsf*3t`92xe7_cnfK65*CQ}~xeY-YJ0@(tC{6|WGs z6H?hB-(%Q^-%-eYYA1m{nqI`vlkpx??oI|gA7Y*N{Sw5H31s`_QAG*?APwYLZOv*F zU#(M*Yw-=H&?Re=|0-{m(U*aIXaku0zRS>pl+`E~^r6GCnT)6tj&1mnLvaW@UV5ZL z;x#)2KAd7W&zn4oX=zszgs3#smDJLf3b4Fijbz8fPd9gIP!A*QBzDJXC26&tYWB?P6qL4pa(@pW`Hl_l^IIp#>%Ogd=!m^~9P%nYq zU{-JzfS`&~^*I8O_$k>>EeM=m=Hab;G=40aQG0gv@)fTEFIXQ*zF)pf+@&x||Krwc z`B7BDY_yVoPv#^Pz&b!n6>>bKfTP-TJdg)$=ulfA&p-ucrGiKjAB1XkT3U{vbz{g7 zswNG)i5{1A1WeilMrTzCH@85Qq(Og(r`zb|o%YW~tUd27efpWKLwl6f=%3QwHal&X zX`r=dRE5A0&ce>()lp}schJL2hfw_LM#=6bA7xvtd*&9=3y9fvV?Fx61Ya3xla{rT zSmF3RSvjY2E6fBCD1{EYR+@N8VKr$DC{nA${~%_)ho^W$S4nWMtc-Os-%MQ-KX<1v zW@r)$xsLJnKSZ~d=S`~A<%Y_p&fG1`^G1RlXA!<8VUns4B~er8a>qg>vErt8?*1Iul78Ur#qD3^j8) z*v&r#c$7KJPwBJ8S7vG25&Uj|l6WfJ9vmWkG$Xzx3KV&j z&$H=zNtPuG6mz(SQ>TO?ou`W$$=>ygGm^;X`FW2~H6>E*Ts+u9KNc z0Vc#@c*#1P+~-?LVD^DI;oc~4Hc=W+cV|Pg#V4P5du|#Du4n~`jKY9Tk*9|%ct`np zhOTg39L+~VrU)MXR%{UTJGXaN=&i&j9-;mfpC4kqMkd0I-QGchhb3(q_8chUJ`WJk zJ)xvCp2(RHWeLHMSR25DDfp-!MPCNt+$l6BC9)rC48qcUC;O_J70_5A_R#H^+U3y% zk9ZW&LlF5 z7n_CypR{Y+OIvsc&faLPc+mEYnnCu#>sWlB3O7u?;4nId4;LO87~^I|@tM9^vK#s& z19JL67deD72PuH?N{^l`xK}604s4rH9>F8yYseS>9CviSsKa<1`i$%9& zDG;=l0T30rdZY2^cz=9^SXGt2gjWc}luPRzv6q5AH_7G-^zrS*38GvI;%mSvmD&O+ zyUXelh!||6NwK(1qNeG{CMb#0owOmHFccyw*#jF}t*)_>5-H_7f7+tb*EMA5N0lS#M2O}i57G4rkbOW+$+Ao>-CN2^? zgGYmx>qN~IBuscqf()I00x0P8RS%!6E~%M*)tUjV2+c$Vk!(}&3nCUIN`X_ECIaTz zmg7*H`XbR}JnW4ST{G#9N6Ucf69I7FUj}6l02$YBC(?D^T0*UX9bGF|T_-*_+B?$T zmfVqp-34#}CBxqZ%?dzBdvOX$L`K_SAM;$J{7Mifa7_R}+@*3O)lUFL8#G;Auw2zY zMx-U$;(VS4%DtV#mC+pv7dloM(U_qyghOxBvePp;27=_`0q=wJ1{9Mh|lAJ zdvfbxiGfNEk`bQxVJ9Mb2nh!_MR$k2?33 z87h?SG@rCu;v>*b5g?O$q_oOvrG6bnQ|OYN6j$^2pCjOZ_)J1VdKc--+e?DCubJ?yBfv*0w%ZVSpfYPJTghE)E?YvX-N65mTNNr4^2z#Qxn<5wYMDRi-4TIw$ynpCD{=GoOQ(v9~bMIbaoY&5dY zvuSZi7iHbW3IXVo7Gb-r+TU5LPSio~Ai||$)0q|=R75k@YDuE8uiHVz%<3)$6Y0#o z3y{%g5$xEo(ra_IDjeA8fQF+>S2uXi3`cFv;eTB8We&~OU3)#@yH23*Gf7gIe&y7esAgC-~cexK>un#RK}MDN_-^~)}ZI-vu3 zv@4J#7MEjVjDyk{c-Ek5?(qRMJ1P6+KQr2$uoUeTSA)=Tgo!TcyzNpv>$ArU^r?bf zY*#`dm%*A>qP+%GVpj<|so>9#>0i31MEPP)3|?yjnN<~C2Ast-FMEVZ>=TGkr8VwO zk-N+wgAsH~$ad{{wRNT-BEU)JD#a#QHf>A`UNK!sV44WreAitC?Kl-}jtRM2AbN?a z6&=FJ8M}n=HHNd!>kNjCWIL;6LZMbJcdY0_mGO8nv#clg#Dd`A*n*=KU@SbYpjKHO z>C?nM7v9 zc#%Tl^6F;kX%e$gcrK=S)axl>90Hkz!tY z%-BzX1o&C!u=mG;N7sFovUiG4$-32#k4G>=wU9eFz34TPA>Hl_F^jXevu)Huk0zdX zc4MONjNcGb$m_*WYb2-pXhg^JK?oG`E-;8*9Cyh`2^S{MdF0BoRVU|0kI{;#_JWZ&_gp0H%Bq=A+LbaKiSEao=sJld~W)#w}319 zgj6DK_t}AnjK2~rpwD!wkd&XI*eDU8w7QDzfquuDS@$mw5dlPbq5?*lA!MWTV(+h_ zSGF~+_=cnC1&czES#rtz2CirQk@sMFiF1IZ3; z;u^s(1*D=Xs&;J|klAs5h%3cFx73rGvI%8Fx(iZ|E~vQrAe{N@RBPc}sZ%xX@lz=J zN(qC*HlT_WR3=eD7ficEn1aA_j4IOPP)<=OqrZHvG@SMXzGjDG-=|@ua#h!gDF}+D zwSw5&31JYxa6M29he&MljIC@2h%(*DQ{9GW2uMf79bV;WWu%3BNtDdxEu!o8%(vF1 zy-zNOcwy)DuEzRWbHjgNx8{vKp>8(a*bqxbbBScL)yuD(T;eR zQmI$-FJHc#hemyW{%C^JNvE}bJ0&7Is-3I+rKe=k=E3JWeVs$ilM)%;CVCplAK2}W zpG=0ik~?#94lXH#W{NKyZ^rhORSh`hXD+h*R$lV51r&!))$S@MiOPZp9j^*1FDkAE ztju_WhEnS#87@JQ8tL~fVNG?qsvSbCQWtLK&38&122~Gcn5Tk?7U(JYTLX(Rzwdj#4Ez!v^;*Rbb}+OV(vTg}OT@j(D@`Y&M$c zfs`caRGnhZo-J~)v1YrYW8$a3OAW+0&v)=(niYP9@5$cH}*8H7xvIsjk%YOek z9!I4Yv+^00F?dAV(YsUJz#QKM8I7(Od}@jiqU3J3I0NE{8-O{xx>d9JD3+y1i${ts zgoA!E6Em>h%C*zl7<7ft3!q)48IA2Mqe4y`tlA6sqPh3I8B;M%68ixJW|?@GnZXkd3j?xKCVQn&!r`2;2PsXbYhyV{53$gZCzy*A`L5N<%(i1om*M?4 z(c65Wc zpAAl$et#fWReVn2YIrX8SGct?x3uO!TD8-vZSA<)N4HSgfFuebeQighAf3V08~!RY z^;9!@>@%*YNM?H)BY?RmID(Nu?!rMqFf(810-k)h!g~&8haUUxG|Vv?Pgg1sm9?T< zq54&2r$#KI?lA1si(6M{%-rMabJKu@lK`_vHvdo{XjVYp@gpbSineL}m5IC4WVhSg z0z%rBHY&E)@X3!Z*H&J#caU&-Vw*avtFR_jz{-UoV#4NP<$bimU_cL6wv)3nT=Nswq4BnNpt9KPC8ct}VP{9ps-ZX`)ZVF#@f*@CD zfooSiXS6x4p1YrPQ>EDw)??_GsiPS)hVRpdy;mxqN@Br$`|A$yO!98T-DJjMei8y3|gsIj5Zyl6Ke<7tMXWDmLHvA+D2|gP{P%kt)9uQn z=&;R~Bzzv8N>){E?g;1z4hF~wlhSKv7+^a-SoY2AXCR#Q^_H|4XL7aPcA+d=V)wncGStAE{RX&-5Wx z8%>=ZImPb_4j?P>>)R@U#xjSd@*GDc7O(~i^)NjnfB1_UFkI^!;1Af8#= z9rnh=kz?yd<<#l(}@Z>XrTZ+AiGTuf+G&G-TC*{1*zfNZSas*XE$9y9!NIk^$ zRdf)bLr2I=s}s;3zQHc{_EV+3e&^aG=bebM7@uMy$M#N55pzwe&vQ=Kh`IKUO%rQk zpoKhuB=0Ce7UJW(cr3HWCQ!yr32^WUp~MVs#Yozz_Z9xjPFI;rLSj62dpiRNOpMsj zw>71e&j;J7e)rniA_{wu)V9ZCT>nStq%VQmvalWkHqblv>9{pLM&`Wz=zG#I8;(Hc z3)`)<-O&hD(TZqT2_o181(=;gR?QGgd(kPItO3>4zhSbZl$1D-!hs-@k&@uRIrMip z>A9(y!0z=aXmUOcv$mnu<@#$slDQZ@$e~buzxLCJ4}w1u;~oHEy#h4SO+b-Dz8PBC z4uUOfO3gAxY#qm*PK!8BssvfEKB|UlbARuln z5wL_^pHp-SrLwQn>3C;I(j^@Vu1Y>Eg|X3;Fg^d{{w{8N1=M)-6tr=&Lj1yPainw$ z8UP$7K18^ZZC1o_9P4785*Bj5Z=0X2GrZ(;|8~P7Wun*V4iECtFr6?oSEjZX1m4$E z76I*PX$bK`f_!x5$;1hN#TsHKnRSZj6yu09nnBuL*3~ z4;mHX7}%(=v<%}Se4sPLGw3a_mK-O${9=WHToD12?vqJs)nuP-iZRYF0-;ibUX$o( z3bal)((FWKD0mQ1Y5)Y94SK@3AtB6N{f*_oj*@;s4J4Kw?|0?^sz9xhhT)qoO~Frb za~+aHQqSQJeZj90kp{`URafR&O;gY0uCmo4^RZx8(8n3FLUKl83G!RO{sOx>nehLE8 zYNPYvPVjZKwaB4^QJ8f}rOddSMRf$rty$%AOy8UlR4b<3a9tDvFDK7Bil?bU>pOY@ zFII;q#F|ILzEB&5-9zRQs1G2JyUNAJ^L=!R=XYfbQk+gVWp-vGw?-OJ8twb8-93_nq$xaYjhRfW0@=dgqOIHxP&AjGYhKl(6?ituSf$Lfj;ZsL_ZBAsF-X zh!usuqtcOdL;qf4MhPPrjoorT2EYcNT~(%?;R_z8Q&QK6Fn+vAFp+H_Q8`Jgs=`wzWxW3D0+;-u(A>Hbb zG8J?T(2J`B%Gt^AEoH-~;~e zpMCJb2U|b-(+|G>_dmq1?4KWGzdrcj2mk2b{`H^z)&Bqe-#6t5n80{S1$mV|5>6t( zYb-5)rl;k+5WnG+-&X`KYXjs;B&UuI#4O1(!6Rc*bd2gxtao7>P}e-b2oTM^2-=Yc z%%!zck>LqL7IZS9rBR;7YIeM>%iG{%kQiQKA)n;AJrob(YPq!JVe$$bUK64bz2dqm z9no4wJD79EYD%62dcFk$eP>h7rS$9suGDa2kn%vJDAn0{Ooky>GY%xxlOj^9xSIrn z`|gv7;^9GNEyF`t)Jr85ed4BP-UMf#0Ap@h^;Fsm5^5sdkszEQ|Ay^q0VN^2ZH1Ch z{6t(1WM0}xO_dI?-sG1y=4{lhrFMnvJ1J0J7y*E*X9S=Y8WrSN>fTYQp|=@x?SNl? zu}sFs@RcLS;};uNB+W8%vF&|8p?vsq0GK%;ARUm&fjEGu%Aa8fUU%liqTq}@G}GE# zTKL4unGXd_u1Lovhmi-8zBgCGuOLC|Y1P#?u`Q6X^Ex%CnI)4SzT_W}=Uiad$VyUh zHQu+v^bG5@V!DQ+X-!Cm8`?M%lCaG49))Vm*y-UlOVcC6b2$PX!Jo-(EqvI(au_wZ!($EQfvt zT5uRS_~cMt6HPS*ym+;Mnq;OS*a#td|p*!jwJ$rsA4vHD1)38+=-Gae0MUIKPG6jW} zR921(bxR==I-|$1`U(-F%U&B^=2O8HHHE_oQ2t8Ka9DBdwGoNKX^=^3wRk*>W;KUX zui!Io+}UYu-yTkPdJ}QH7Z3%;1I8kIalOT~vrLCJVmdbP58R``K|C>NIJ73h)*#DF ztca&b&rgE(&Rgn_kZyzYU0)$X9Bx#ylW`-m@$^tbywN8IA;=`fa4eu@e;JPtr9J69 zW*wHK59)Nd;^raz#hwIhqvVsJyg|MScat@qK*XKLg%Pi~@dZ^8?I0^$xOjp0&;D=< zabf(D#!1yoGr&tUFqX%zA|pE^bl?%D=R2Nx-<67@_I5!LWX@ZO1j)50_paG0akrwI zjT}#$A5KW4aj|AUwMy}ry(=5HeencEd^mO&Zbd~r)qiNoOn-@W3cq;6_SpcII4iuS z_q(mmI$Q#gQSh0Xl-!t^AFb^H@(~Vc+B6j-)QiKtKF?u*)+NX-xc)NFousD2W9*hT zSd56Tt7(_O7leoS}AvLa6lQYpHb3K=Mstc7eQX%f6D)1Qdsj3X|`4~Z_#eY_N0xePHsKqR9a>|HqZN;f2Tcyx!) zJn?MBDGQwGlww$#ySQ5qJ3icial^J7jf>lyD`b?x1OlWx81Xp~;St(s)qLUBb!0kl?svV8E*=^_4gLVIpZct?&`eV2YgDwgrH@(L5r_7rdL9v<)kCJ*pb zE6$p542!|m-7+zqrkBUPp}e=gA!cG8P_fvAH9#)*M=+_TL>gug%e)FQ*@d3;Nk*%Q z%i;|lG_Ag&U!OWPlr=_~A$FlTyMDr(NAk!DvQFr={;^t&@O*d3NhjpRppEYs(pCW( z1J98|hM^JKCX&M=8v_Rz@;5FWmW>K0P|Q$pWQwDCGI9kaA%;z5*r6bdABRFp4W!}G znByOKk_xTnOrvO|qHPjR+Ge_iE@&b8V=aTsnH84FW^`U&#h?#t3=9jH06VATJ0v1eQ+l_vlD|^YsRO} z5gS__RrStk=e3P#RQc@c9Z9C*$fX^iQ8p?0ii2bxxY^4o*bBRKbuuhw8$UT!T-FWk zYUZj3<7f8JkP{$#%m+9bL|APRD&VIw!QU&UTcq@9G2rIuHcNs0HoK%P!}iF}d|&+C zN|5kbPog;eNSKDSC>|m~?%6|-=6wnEHk)g9Z&Vgm`)WZY0jN=KO)Y83Ka=$%B)ocKL>5rKJjGWqlC&U_ zZL&Z}yCyu4%IUPsHFZjkT3Vx1)}6tprcqs=4~C=f&)jFy$ot%c#^_rlO_=(Ink20p z9RD^yjDRCa27F1eW##OHbz%cZIPq7~${!A3+6T@;mA0`edvYWV+6QIf){C`w^Q;jbv}isR%HC@uDos4^O} z(`F75l?^b9#Q#oHm?aF`fmRvlIS*nJX7~d9{F)ddBC1@pc%RA%o8+o=(74#4GHpJ2 zOkeJP-4be8NxVaHWd4&<(o>>!I(go={2%K|*Agogt_iGt+6j8^{$D*kge>2#6dqKe zz&9p{r%rDo>1(3h@xRokTWQNZi>D4}p9lfR#4B+fm`+DgdQPOH;&f0x;O?9l-ic zmlnV`5(~WVQUOkvwxh%$M`2DROndptQQsJ9%rrv+jXO|+Dvw+2rW&M^L}|4{y+BKzw1G(}&>CVqsog+L28S>Ql>? zt9IA-S-Bzhrm%>&V{8kq{y#xz7}Cjlzj*U8>>F%K*>sm}W;azEd1tM=K&`5DU9bt~ zx#zWWk*QA99nEVfj@Y~AvKem9riYVK_AKv43mv@Gch0g5Z7m{{#Hr zM;lmfc}E@$t#UC5`*6=BD^ZzyDrvDCP&0b15A@bqd~11x_gEE&-$F|EtY3RnblRxM z^+k6Q;~HX0;X&BzEeSyZS>&Lx>`-ImuKe@C?mxf&`QnS$E?wuZq5S-VE5YRK=%P22 z8#&qqw$(7Q{v;P%lfne+0EiXENROA2@%7TfA$lns zVg(cojxeFno|^dB>wRy+BN&^pUKB(YrN9WyB2GbG#PE#flqM=+h{rYew>`|T;($Ij zQMg=vyN7tH1@sEp5PK*cA!DBn7?p;VqXkuyD3cPMu>MX7u7Ow&>V~GIm>_u{+-kM& z`L3&!L)OxqrSfWfup+ns9}M=G2Xrj~eK3Rt14run0!>v#zA1Et#8yOX&YvD51cPe# zQ2x)wW7R_2XFeWk-9jlGHoDmRaB>7;h)9&v2aA2|SJDVjO-}?3_9#Ht>hj_6mflct z6B*{_BXQ`JmcgT}f07;6xmYMJc#`FrkfjJ59Xj9pYvWTyJ@d@TU9mZ~B%LGnK^G?; zxT=)w%M-f2WV$H&ytnpfTm837t^rX42`d0>caww60IMm&i2}%cfW#6ua-cnm z>!}T`of`b=r60huVvvP|9+_ZzOBb*nKi89jQjw)N=j_LI#qoeL!qz5T# zAyWu0HXRFxaf;M+#r@Ys6`ar+LQ%-aqV-ScJJCplr5MP|l(pw}+}0g<>XkP!g)`~e zu)F8?k^2U&ZoNWdX>TvmrbG9DrqW$xOq^h5X;0pn@8JItzR|(Z(h6mZAR(ku91om| zmJUMO>lF9a%w~t?xML~4jhKW?RKK`kp9;aFDu#Xb2Gksey@bXj)iQL;8Zya$zAft` zQn4E1zCDd1sbX`nrJ*zjWXWxeEkd*dop8Uzu>fL z(M8;ZJB7vhXM+49f|JRCFGUmvwcG4t{>qE_O5BS0qkrZu@rRJRv$+*WFT9ANh#5`< z0)O<+p!pG8#v}XekN#Oc}G;8|DRNvoJ ztt5(Rwv#@mmeRYbEhnyKOa3vn<8P`~oCce%_{Y?Wzo}Yj&}Xy3MmcG_&fZDmqEXgN zMNVWM+^`;PHvwYRME*-*DT@_g(2;Nki5q_`2SC^-Az6BpcL~ks;icsr31hAvr4%Vf zNK5>T5gsthgow7~eS3*&oc>yenla=T#Oe5 zb4Fq0S~Hr~ct!E52cD1Lw$m#sYMB5gWtQFc{3_l95^T%)g!^;J5zQHFE?^e=?CA0YCon-~QJBj>G{! z`0XD({p-K{(O>=g?>|~taH*4Qj7@lyju{Ox#(+uNQ%E&>T zWc#zzDYcRzL^m-RLT}oNi)fuMDQOc1GU^Se)h4L=CbU!U9fTR7CH#EtwUW(tC&)tH zD`Dac7vs$a%o(t&^2oQxY2xImi!A;|v7l3kGYe+AnA1kd~{wEx@x)rAYa zvuXeDeis=s{^Ec6v%h)#zx}6w@n8S`qYDG2ebD{Kq<{9ozQ}LwP z3E9O48p-8s=O)eNiWJ> zWOl|8T(n1#qQ;yClkA#aH*S>jVSQ%pP~TY0GCi`gN{?45DDU=cQ}h2jJ-VFTTOeEb z=m5uRj~9bIds4wMu#4kix`L{niN3hr+eH>S&(VuT0P?%^QWjf^1r7zIl?{xPNRWN7 zUfp5IH!`jEx=Jbb^SmwXX|f2RerJy9!}+qKcrzGh`YJS*p&O%7rh_`qnTHFwa$+bQ zJ585+)`dAJnOG=F zG1q%f<~%!auoDy`(%()e8z)357hK<9cG;UxYo`%81F2_AeOjKA+*Xhpao6qno!+%K z-(Av2fid#k;&O-`VY z-Jmc3@L)|$AA@J;Fq8RrnoCW}($zWJn@tm?71Ssz=`uB;zA6zRtEaR^Gp@A`iiqh? zeJeS$@3QBFq*vKDA!_;eHLbzIV; z_E6qic8Ei^fK?lG02uG`l??617#aaVGG$li7@f^sH8IE78mYkN ze6NYI^Ujald0h?RJl#>LP^=eo0D3~wq7pCXX|%Lz_s*iRyX>x>hx7E;9>nRlISr>B zHhJLzWO4N`JQXxvoI#z$dU2liU0XnE(z#2!eJ|SQTHYUW`$H{DRWBl~=;gPgTUxGK za38pLY+$?`+iTgqDz>Gf4XCZGU7S0V5T>54Ck{T)wFzg#+trrcZR_yt_Aw~lm-YrX zi~3(I-J!r84dbux91i*j>^VjxS08JO_v$PD@&yj4ZuXj3A?z14)w^lP1=cZXfoY7TkL;r3Uaip?!5aFU#LCdsSy zqk|S6h*8IgeT>S>jG_Vlby$XDO9i}cwLSCp`KsgV0iic_)@8!pL@&ht4PZQAde*&E=s|OzJaPsYwJ979A0(IK4Mv-EkB& z+(^n|Xhi)D@Q*KbyCoV{OPI}vXCi$xqV$jcK}VwhPes7gED*^@P)p>j^C2|&w!K>A zPd^?Z034g^2VTEOOM(T-_W0mnlbwha?0EWQWD_tF!o}={y!F{ zuL8&!wzI406VIn3w2_IqEQ&P$CS%Yx{1T7XRX6)w8!9kd&EwnJL`g0Bb&#^5V)nDP z#4-Ss?3`g#&v|tzO^LY_1RkNq8?PY^Og{7Y`1G2DZGn{M?lpO$xm>HYB3>Dd;fpwB|!w9Y51qhzp zKyf+ba*Ug48dl>oCmpGcl%q2#G&IB)zX0^8{apetPL>w{U+RB{1JK~joF|M| zOM{6Lx|Hn7#Wbco@?e+|%QEqjEeNXB6&_2sw#iN{maOHf8W&}nvQNY9)@5{kzd#g!mc}Ae6>bsh#90rn zte^z#wr$n2mRp&ZLvmAqZ>Qdp(6z89eK=N0V z>tsM{KBlI~WopV=_oU7A-xdula+9fbgdBqey&1F`YmJ_~`H&>adi)SBf&!Bue1x{vom_p2$TTX=pK@CS0TpS}gsX zVd#(-WA3GQF;1erq0~2ov1p1xusIP(?0D1}uvn=VfW}%_1&<&YLXY8ND+VoKv)FQ& zSK@_Lb1?GlOyVgj)8nI4$(Jf4Gc*dg$QpZFA@<0xVuFmo`(1Fo;g}UAuf-=wTaWRh zmEw}{%5fbqUUVmO4$V@>GE?sgXQex|Gsg`_c;#~MGi0yAMfS)oBDtF7A|xi)u(QgL zb&|IVLKbPwdG*HKJ3IG~-FS-B|4i;Yk{epFs3nD}$Wb|~wMh|$=hNNr$XzN~n;|A?-wP>89!jJ^k1PRW-Id^I=q$|17!;2JV zJzm;LR52QcYSiZuHLKR-1DWol3AQ-3+iy|Xr#Jn?l zHm8y-g<8OxlyRoQ;S5U-CPWsF8!dzcF(whDrq%#rdQco|iBr9qH~)+%PK3wMK1)@Y zEEn-KSxwis%@rsupG{e6i?xHMFalY8XD#5>Y;I@e03RONCkx^xtOclzWl7%E2^(Y2 zXQWj85ut8}P*n5ShXlQSO)p&MEp+()U7!4;jnF>&6j|c}JcnqXWf7WGl=crSTdJ>m830*W5e(?V85^VKJoa*`#Ml#6U0R|4IRimeN>{~ij zU@xjB9Qm;&(9Kr-V`|0UXe$}m>zr-)o}WBeGId$l`MPHi&Tc8+J|%7Q zFXasabC#Y)Fj8-X_Alx0Hzde^3G^A>?O4WH;r`1c5pLhg4%JY1OzGJD01ix5(@P*g z$z@Gyz2mm%%mr~F0DD6btjG)I*LowJa5tfG@+Mia7nQC!ho|5~AYi4X|$i07`iN6k+fuv;7$_ zu8DvS+SwM|0qYh%kp8b0Gh9K9*ZhHZ5zU2`J4fg31w*qw)}sZ6B~RJL(0T)mcbTZg zjF$YuM+Kd(6}kD#Bj)F$QJZM3TAg>w zWvR9O8&BT9;pD2^2@A?M^Ow;t_7@<}_{XT&o{W}tItyufh0bE-p8MN3H)oI01tQXn zs)jf$?j~&H^ruKCZj_Ser!q3+#P>|yIW4c&W$SVx z38|n^hvIoT@n&K~ht%4~zK8w#P2@NvoM}7ol(9jqnVIzp`OLj{WryX7TW;?dt98Xm zm;}OKha);M-MB{_th`u{RnKo>nK-4vywuZUCRo@t%0z`OfQ{p{72zH5<4VTw@MhC= zh;j&LbOD?}y}n*{hhg3AfwV;GF&!-(|_R`IaTO ziL93*c0CtIo+IEdUnobw>AzZ*Bj9|7$G1*?wt(m%)3@ zug@T|#oV%;Ed|Kc3>+iPTDT5&j0~Gl6BF!8BC8dy<)O6aK@IL9;_y1QD<{ZCV&#@szCO7ulAI zk5diK7E5W<`rX#^XZRTNm3`4y-qdfT`|7`x^*s-Inwew#X-~GS*l&0{V>R>&7Vzs3 z+;_B;|A&PIQ|%UhUuE<2@XGTnEZQ{qGFKMQOLgDD8sk4pE9p1Oayg40mzplVF+@pX z8oy2)yj(l~gR8>#z05whW%7Ynv4Hjj)oTGZj)8zG*m9ENqR! z*!^4>`CU9VcdRvl$ilCRV|ZD7BWR+_f>s=$~vT%0bm zf&ImJb8?K;vH>yB-1%^w*=d2EaY`Dmy&&<}&mqzpqX}OX2vV#a-#-;Udn=2*mh)r$ z02F?7Z4UEgjnG%7Q2ISA)}updlv1NtpaNRuU#oIg^C6Wppp920o0#;$r*mcghSO9a z7(iRh+s@=K#sh4iD}oqjwZI#UPvQ!RE_@tLM~`EpRK6pK%HKO10VXcXyo#FH@V;9# zc3#cDEvX7Rn~x$ts8_6_*Vw%kT+$3vX4k#*-3|u$!PArRLWU-#$gBk3W{F)AU!@0E zf`*L3?ZorzP6j+1O&NvUR+A~tI^D^Wtt;gKV4yV%JhB=>AX>!d3n3hG)dj%N>9^*( z9FTXGW$-Cp>!CvFCLK9ZFPaKg;vp_^l5*d44t`Vza`0&9c$^oj0_ns~uWzI#t7yj` z4(Rld?K1-XwA(ZV0BQ9MXqcGy9-_gJDqqu>ga&PL5k-P5eB&V_xX~Z3r_q^{DmbWn zJP4P)&ybOD&<7{c2eJ%;)VXT{bcRuOs0y9%K9O<~q(^ci$rEHlYUfX*GdgATrGSV> z1a62Z!E2);m-9+N1j5UrO#FO5{X{|vY-%HFq|d@4DI+=72d9UJ?lJ)Ey7yrri)NROqZujTASp3B2&;v zujT2~690}5Aai*4(of_ckvJ;$U2nPkbq%`Ij4(m~uwB+Am<5nI)v&*o1c2&Lfo66d z{0|0|c}Wpj$oL}R`EuAra0p7&SE;3Rt{yivA?K7tT|UEG^NS+EFN(`L=o!0w>1SO<0;pOi%%m89^3 zXLo@HTzPpNRx%(M@AA+yi7F{*oxyKRz}om)&=V&}tkr0x$z9;d7#u_OUkT z^|?a$qo4M#M_c@8h-^wWt#CtgVKp>|Hm-oL!l&cMX0L>ejg$mQkkWwpodP2L0qSvl z_|#6l>U$lb=&W-Lkc!cU$4*Toc~8sx5y9BRqex#_g{tH($FaOcRd*HWWHMHP;&f}m zEYYwvAtKu)Y)!+Z*s=n;#M~?vXg+oq142w2u7pA9N_Rg&o@)geuhwb5#DkJd)i$Jl zt@OK;(h18N;CT7y0azLlSdf?02QC%#+}%TH_o=mvB>WIHk8vPw!YVcbOxNh~!lhHf zKuLAMDuvl&UA87$P}m{VN;#$8Dowg#TyI0nBlK)a3Cr=04|?V+tjCa#Ksn^A{e#Kj zVS~=xRWUTzLgBKocSEh+os|l936<;HlD_w;bZJf`ID{VIIQ`=Kl`9Wn)}1~WVm_{5 z0-wGCz47JZigxh^@Cuzg=Q4#R!_RY*!Eu(4PASSvxBEDA^_J*!&1-WCy>d92!T?zh z^g`OOxBiXs5lk8Zinc%TA65;vXC>APl6v+8njLq%jxiDJJc9nXQ+>_|@K(%{Y@@G(*o!A3ez@hM@}%7ky7 z&4e6dt(q-{uvC|o#GthMayok=GEHp3T$DMP>%U#+h*Jj6mx9E@E~xsb0(d2;mmw20 zFv-+B-_6mgg@yG`Sg@QI5l6NH1#Uh+z4qqSw*)!qa4stM<-^Zo?;5LqPqBqHoUVRC zyx`G(8)<&igP4M2Bwbza#<|;-7~cv@>mB$F5nm|F&g*V6FOG1`Vt^Z!msh+r{M8Jn zrQm-E9`TNiM-ruR68P82dATHUSk(*NaJ?)!D`_h)_uwwM8;Zt}?ohY@vS1ROD=w&P zx8jywBkns}GDMD`wLQT$+@IM^Foy**2E{VEHIaD}?WN%_7sabxeY6MmWfg&&H)1_s zdGql2eD1y?hN0>6)5#<{Y>mr-aIV}7m%B{!dy=ep_oU`6U9J`fGn>uniaT!;G({i( zbKJbtn#=m$C7i=RaC2wo6aYVWX~WX81s;;qenA(uukX!KPDKmyKn&UJWOM{75eI$? zEaR+2i_Db3yaZrUZLDpY(_b9&5GLY2mj_8mXlPf^u%QrSZX=R5I3VV1u)+W{9q4-H z$JmLYOpZx#nLq0|#ae+P1YGhpNgZ;#h$5_Knp(H?!X-{(ML(tCD6ex+I}qqLepZfI zT?&hP)_x{C$wXumEG@jH&Q}%;0bBT}sH9gl)3!#)wQeQZEI*T1y&iXrECm36x^3CG zWz{!>Je`1?uDuzTu!1G0$lZmQoRl;md*uzMVt+D5N?#2ejBQ-VFuo>7wLYlgp*;T6f+p0z9k!EZDF~Q|; z>Q;1@u?3NmMNgWj+}SELv})C$a93zhnS40(k*p^~NjFa|`KOp3Hj+T+llB5T4p(xE z+q22%A%3E>OOBpK56HtR8#K*g~ zHTr42Ny#d%NSc97@#Ps?&;%$4H>!(c-IE23L=@2>yxSi=K#3E02>Q6C&41zzQrP0% z(HIfc{Be4W;o_Epx06Y8GE;NvQ{DkN&^Fb-sfxpdsdYB=YYd8lOYGS#5%mYxVuxDD zpBvM~h630NmX50XWJO+6pE^s&f$U^T=7!|8V!txnf$w`S*hhS3H_vs<%NH>&5n3YC zVv_b1>?wCJCuU-WKAWJIyO-SQIdy8hLcV|kZ(6h0EP)5F2jl6^$>CEaG9@W;So1^A zZx~hT0%aT7?W$oq)JL%dGc&zwcUMzW+26GKbY;Zke)_Ak;Z!fkuGtD|y%m|!v@)!) zr~u88e>V#?lO4Q56=TlX%vNg|o0Ypn%UR9rx0k(Wt0qtQYCAtmzTV=^N4$hag_WF8 zl`eJCzTG94LvZ$*i*t4ZO4zo+pMn2KPSjs;<-^K?hJc2zu;zieSy~!+9n;@Wksf1eqcn9&K_v8`o)PvKPDjMFTLOOE$8;4Nwoy#=FCJo2K-jmTn z9r*hvr}Xu(`^(58h*RV^$3rhvvb}o9-7bZ&r!hirBkbSupwJk58gN1Le^-Bo*N0Gg zJu#Lq_YNkD)WD@-?;auJM*L!o)Fe2GzCXgx95CN7k>rK+Z9kBt2bTc|_Dbe(cX1ty zQ@T^|wj4G(032UW_Gb@qMdqUkvoSvHz0upgclX+Zt1_M|`2S?FlLjBzBsqT<#h}r% z`}#XUoI=*ZB|%+i5}1vKPp`h;&IF(4R_g%`bfM1k++iq71HUKC8D}YBAXSlj>4pKEiXSPc30WSCA z4lJn}GKt~>!bxtK!rKjO@A-*D98M4u9v*+p0yMt!8WfF}37xs#ZAvuFH!JUO~JHiWH#deKpp@sV7#_ zUj7SP(T8KCpwjcK>D5z^RX_L2UditYnmBO*;_LctymO8$Of6B3ev(=vR-7bMnd>{& z(O;Zhf(m#2$}3g0^qP07EL}1S4EojgtNc*OFkNNW;{|pxKFRMvd%kZV19Dw9(nJ6?130 zbVPUbc!Ex^nRTm^;E4W!&8K($+EYO=h9oiE(9d`NbMJt~J=de4Akv_cP@GO&WPx0B zLDh86>NJQDcOi7L&`rgikM?ff*xR~&Z~M;OKi~V{&+l#Rpv9kOj#n%cw;ms#JiU2< z(?8}YQgLp>^Or-ca4`qI3GIbl^jqnRRvc;IMC`}nouk-PUK5#!djLcM7TUz_&6fQ! z*B-{1-VYrCd!uX0s7pz}D08J6xP50E0zZR`x83vBJS_UgNcKS}04ntWe;T>UY}+UP zqkt$4EKP&!vx?>@R9X|Qq9AXr5KOG8C!lb+vH0S*G&nPEG5~SL#kEGAyiat&`79~j zRHHdsj9MJSGGSovv-GqKvr^Nza>1JMQ-93~%X!7hpFOe+xx>A43~y#f&U{=dK%Eb< z^hS)SL%Ecaq;p4DRjM{8Y+{Dq#WGovky9Z<6tScZ4=%nX>cZP2ES2c+ljWXrcsLwl zZ#{;ksxPj4!52CtuoA?F17MzIBV?T`dgpc}M7~ix>9Z`CbPLbg%%Tn%pPJs1+#I<$ z4U@T`lc#U+%yz}4njRsz?!bL>Nqp7R6bgcad(Gb4c0FN=vpLdGb~n;HMwLg!huTedunZ!eDQGJ4#DR)__#kf{e4v5HY8uXQmCWq1ZnX|>HSC2j)0~%v zptr5j{-cg5z>~f>E|mHVzGqTcIh|>pBP#Pc^{SN5&b&IK=su}ih6<>7Bsyopl#B|6 zXaMVgJJDEGq}b~?KJoP}l}-%Q$|$Y;prDc9rOEfIdTG$B`S;f7>&fHO$9kqbao_^{ zfcuT?-XmjVc=_>eh7A=k^gbfk@nRsG6~vu@!I;MBN_$h^pk*r-z z0s8JV+E8<0cSQzbK$^41dA(dbm3l~9X_C{rPI?#swQD4^ZMig zq6}i6@X9Le_h3WiUE4dSM6%s-{{-_O9k#V}ye(q`|pZ<1!X5BKBl%EX1Lt z2DTC!36M+4CIu+h=1WJ>MNSPF0f{Aww$hfX!5aKy^yiY$2)cj8-Y=Hrhqv#^zm_2a zq$MkVD-$xre5aL7;VtQ?GUK7NDqh@%aMuj+p}NQ1e!rm}u^2?5NLA(8Jg#Z2$0d2WY50Oxu+FS@Wr_@>yp}E7gr|`kP#cHDJ>#MYI2(Mnd@_ufY%zZzz8W9Rjxps*3gNRASHG7l_6}&`@sE*WTdZDlPCZkuI*8^abT;(ul9!x}|C_UH zo7|o$Y#5PJzLzO7-+5BRj!7iv=$b)Qj7mu#a9;GTah|-(%BnCCI6Qr`nZwo}ja2H} zO{JTKMNuhySwl>iXGQbed7a|rqNAO8@@zHmQMw&Qk)t}&R1&TN3#HZg{8DYMynUWs zN4(kb@eH9_E3eg1#66}*br7tQH|5IJKAI+9%l^rl!4`rpsoETQ4qj9hD#rY$42vgO zWcCM{8GijNzXjhI)a|pBSzE2`m{W6HDn>$*Lg=KULVl=)*Sg zE`|+ce{^OrJmk&`b!*56BP=3QAag-U(Zy?-R7J#qH?FaD2ma24T!NGWt9u@Vv+C zzXkc+rui9eck2D@%{L7aN=%o@D(2wx!v5zyfNd(8lINvKimUB~`P>AM1TwKI~%mQ_;1nj!{sG z9f@~A%n18IdD;6iPUtKrygy<=<}oK>Ulrwrj0##wL(L=TF|%w^(aT?ktld`onh6b7 zO!K3T7Sa|z?PCNx_REVejd0LcnI0{5SsufBJrks8R1>YGJ2O*rLK)v&^4Zo&aEpsn zkx82KDkr4?G-5yCAM#BU?PpJE2PO0eeCMCco{Z<4aOsy28B?QV)WKdhR$G0fBUrZ5 zTP;r0Di5@3H;;a*)Qg0+M#hNOhf-SBLB1`LBgz-%akuE|9+FV7JSZYo@{8mWZJNXx za2MQ86XR-nzQsOaYm+>eVdvHfWR@o9VlSk$Jjzmer#jVf{T8fFxlA3%)`&>zTr(7>utr#FRiKH6nB&Svv;yCS_BJq{(18 zNFyq+{5E-UB3w@q%k_F*WK^8mWbL6c2$FM7_m55wklWVyAln^oZPg&{iCL4-8OCkg zZn4@-xB@jH{}j4{5Htb!3`vzf018(DVp6a(<-6AF7iJ!*HQ@c0f^FS4ymq0Q9x&g9 z?S&2&(3p4TJNSRZ5zr#ZHbHLOyQ2il_qrX;;DzRp{X`VNln6qpX6rL5+mf#bY z?QU-$We!I;_-hPP;{Z4HEKZ1SfQX{IS$iSEI}O&SS(E`^?Q$l`=NFchah)+~upw3B z5@nMBl^|MGL$R#*$mR-|RjY%T1~cbaZ>wuJN{srv#k0JFva^=~$i-FKoy$owBowsN zH=R3_ZT||VB0%R5sJv1UgMb(k$uca3mA<3g3z205wc`A=);KvMCAsCa&+}>pNMY|* zMvL)w4!zNTgNrdJ`uhg%OzR@s>fqfT&I!;m~Z)j^NxN&On z%+)gcEPcB%iYn-@N)qFhTH7rpBDPzZ^fk ztudRK#E8|teO10ueYTh#eKkI~qhW%Wd$U3_tI*%*eF0psI34674^{W}7MSMIfqFy+ z&rH-JmJ|fBKu{ahqasnW6UVdo3x4?r&*H_9Cha%Z^EcQ^J{^DaOI<^QK0pUK2zw~06TJ=|z?VfhKa-U6Y z8-H8EC|Rei!F+T_Y*9T_8V zB@k|(zC?h$pyTZbhw?E*jD|=+&>qg$j`sJ*$FMUIajW6CSiYUgdI=GIPw?Le2Xle& zF$4ETy@#{ef%z@X#6^50nnU&hq7o_*U5tRw=^OW;B6jxY6J%EAJm^_=-bspxLR3&} z12W0*X>ea1!mEVb?u-gv=xz4{q+UmUa=?pwOo7{@$(Lim4LV07PyhYD_@B_>c=&J# z*9FoFAdTol^_&tWTeTo63W@V|9DMzFc5n(@_-j#FmwVTuZ``LEamzp!CQ`7fs682j z+t~`U93bH-b2tb_IU*rGR0j5ENDs*fJ$Y<~|U` zZCib&)}6FK@o))s)?qqn$Qol@=O-Jmmf;E%rk&FeER$yvZHJ|pXyawHc#8W%u1Kl~ zPC9(mq(1?2cp7hM*D_+-H7o|$%y>x5MgjfPX}2&DJ|TN zE+CEI!S|t8CmQg$A&0?zC!q|CsY<6SZ8(4U)8Aqij4c})hsZNE{_%ct#yhMM*edoH z?zDiHWz4{aw;2Y9)9ZTnW-w+{;CLwS)C6)AC(P+Rxq&-1yZo`hoS@~y$q{g`IH25j za27-oUr1oGKS-6^&;xt{Lem@6sy=Qq^cf((`F5}Q<(>LRCX@bX8}loT3;i+Kb=2Sy5|1UG!9Wr5`8iWOlvZ;2>Db+l@S3UQ1lA@Alrf>ccBQ zlKdK2xk@`oiD8Cq+AknD8K@)-Z#gnazKbI%$Sv~Bs7^9pi{cPd{1ZoK8+i>xc<;6( zCkS!eBs$NKAp{a6LlK@zWl*slGh@V;POE?TXtcQVgrTaCM<-8*lm~;TjcYi_T_nUy z9Ql%Y(IK$Z7a3H7Y7Y#W|#G zHCC3?_8DdCQqeIBFjzKRJVpA1REP(vTp<+6@f|rshI#~5Bo-+>p|&34pcUO zV)Q@6Xf9oc-G{X$4rc(e)5jn#tW+t6!;!r?n;uRcf{nR6J(0m?K6{}LrHK|QuKA4n zT1-hZ5gT_Xi4!L@HbOpt6%z=NO`RnO;kI*Z0Kc*U>O@TzwZjV|y0{;7ddHC=C(JwAs;NO3G;lhPq{^Ngg;r)O6Lp&9Keo#DJxbTDD z`8R*}yMHtN55K=GM*sy&afsX)3A7@>QK+QZ3(|u$h~JgtvLJG4Ly|t>kS!DP74-dW zP^`;xO0|+ZMZI$QB0w&bQorDlMqRCyuPISt$eB)E#+$(?B1aAn&lV)e8jrq}=uB*g z(9hmn&E>n3VJ7Ts@)UBsUsKc(H{Mz$K8qI5CqUV%u0EC7Rch!Q?8<@4jX6?v>%mm~ zEJZ_ZqhTam@M|;tpk$T5Z3&~Ra(zm)pF~q8bQ})7qogTxLM~w&YBFD(092P=9nyEe zIt7&+N`ak$5kM-hG~uYWE=~BklreLbHg=cM# zIMvzCiW06pz$zfY6`%MbGhKoqyL3i)R*PThtRs9o0#QIDcBT9hd6=YO8xm7-N*?W? zg;zYiNoV^kC4OkmN--DuP+{K;N1KF-7joZ?);0m_ywfef=8HmvnSUeY9fDQ3#D@i8 zrw97&{s?E++4d9~&zve+09zo) zyGU0H?fgFkS^lB5V!pM2#!<%dymS&Y$a+$m{)m9qj0#&DkW{5=nvr!imD|jwbdxsA zaOrV)JzGAcwFk{ga~%X|9d@%BsaP$I#Vz6Y(<^MDCV8!dXQ*<1PnG;lR;QS9$~U^x z1VN42Km|@CldsL|xEVF4BzmR*3X0$#hFMX%Wh4xkP<|>^Ort4TA zE8nFCO~y~ax|Me2VB&%+J-9}ARrP=YWZVKRuwmw@3`nRVc1nXFTs134Xs=Cc#-Jz$ z>ln~=el|Kc@Rr(*IbZ4;!K*kYrJWwNmEwCME8$;V9lrz%k+a@(0G!`M?2azr>kh9p z!y3cXNm-1K4jHe>ww(_2i!;J!NOTN08OpeU9B1j1RGMJlZN5R#|87U&$t_&!V*|md z`y&Vij$SkGg9W1-p)J~eX>Qn~fIM7c92&G)`%a3idd{gOp|^Y=VgA2_$<3F_F`Z@~ za8j7;!*Cme`o?GKoVYX0HN6Zq;v8+2g_&W{J74N)c=gCr@#1R5DYo)4P*;ZR>9`uI zuZ72fgN-@Ki7>-Ld|xVaNqDaw6*(ORB2)$jh>3v2pdj}6H!S^6L>-z{uibu zEf|4n+LUtMLQ%$>YtTmk18)vCjiH8td-WkJQgmCMDqJM0htDZT2z>Z7wmINlO%6rs z*mZt*dMbX;mk^@xv+)`^DH%Z~@z9LOY#Q{~_ls@)cY9me_C@m$DN(gR1fL#pwtaaI zA<*p83+kz7n68hvHn#75u(fgTdQYy7-Prt->%FVo{=6+eukq*Ro!hs!Hc{j!+0)jI z>%E`y`NqwiDDboL1Sy1j`$t_o1Mwsv+lKH{T*wDae;H}P9w*|>j?od_%& zoA+*hx^a)?-ujWDT{n}dD}f`ffNaZ)0Z?|!&*Ivpu8QTlTZtjHuhZtSqv9z zV8S`ahesn(^qdPgJ2x#3XLN$y*I}`y=@8195lbbt4 zufQNU-nsw5&gS;b4~S%WD--Y4_d1_{?i0bzI1SW6`5Xukz@Pj(ymjZs*51Y^pP-Pw z@RoZ>?MHBj22?ypkMYKi+SyNq#{n9nNe{m5sE6ld4&^u|iI`dm4Av$rhN^)mvB*>LG{idrYvc8=n?K z#Ul^I>2BZ0jaZPrVTnHjLGs=>E8&KhV3Bqa#WTT9++U2-Ati>KXQ)FzUIxnFO5+q^ zB;4{a<6D}|?C#O&!^t$_?nOc=ma~?amQ4@RNq~E^T{ya+D+O65b(wDEMgr#mp)+~S zCLpL^UD9;!7P2A8VN-!Ubv%p{sH7WtP;XZbofbk(*%W1R#r#mSR-zTFm@;|K2`(D( z_bkcI{8{^p5Rr^Zy+lE%sLenAO;22>6q3=bAFx)S9K8U_f8NTcT+a7pXz@aDs-^r} zgxWt8wOs}01-R607q$_!M(h<@BSw-)@E46Y9kV|bkffa1I=T-*brxRjZHOq3N;Z2?;b)Ear?V?4o+tKvm@(*cX4^lHk=B_I389-a3jt-pL3Ld7Eo)LS4GbX z+fO_rmr(0@z=0Ko!%HQf=sqbz(DZUSA9sN#oiXl&h4}36VodpPA-0TC7Z2_FGO_rS zAe3yaw%)_3x>jy!$TTpH+WO^Zv?J4FVwuI{@$u1k;{+SL2zE5th1;%82AjgTQy86QX!W}oKh%dW6o8HE{ ziee98X2{woJ!xC87fz=d0g6S>u{W&<>NIYAQ{Ud)Dd%)fgz%592AS?q?`2HTf+5&1 z!$1SA3fV5-8;iLUh5^eC^UGiP0I=l9JRCEbhu$O)^xvs6cNeG1IG8dR{ zhr>Bi#cyg8jKTvFK;h7~UUa)i2&MPW)DGX}(-)VBc*W^A{DmZTM6TmaGkW_u&W}Y9j_%EFrudJ#iyu^1T@$1GUj+b|lC{ zECA)3;6R%8!LX1ARx_ZJhsdQ#3Jh)3+cU$BT>z)P>6TmTjm{KJO61b9&5DBKO_OpJ zTnWJwpg2taQHplDG-PSvqw(}1gbJn#mYKXNEHMcc=Mn()E#zbJIP+3egw=LbAdxdp zr_N9Od@K&AosQj8VPf}B`7Y?v4?Hw|BSeYd(n99T7*36tw|9yI!JF%nKt1syS6Ma* z$&0)GMPXJ@^s1(Ce!77$-PPS5O}O3S-E!k%dJyKlS1m!!_T!5W$XM;F-`j(VT%*C$sf<4J;fLyP zw8?VY1bi(-Hx>U>RnkQY_PuZ2 z3c(ILuw;h{bfE)!6Jaj)BqjLU3a7mnn5Ai%16(vV=f)BL4>LA}Cv;YQ1?H8`MfVy~ zT-8)D=N+&58Kc1w;0oJv6a)z@AggkB&F*B=zsjbq1cm_tOAK zwvn29qiD{%G|Ru3K5h%tt>^v6x?8pYd0irX21XyGQF3?wZ+qf#*1*cy_OnEd^d~rg zl+Tfh3S}vX3!BP?bZG)hXsw2LfYIMRef$6?g>G&9+1}2^hg*9$Z{OScXlt9Kn|=Cp zK3jg=CnSp%G)$(?W#nrH?u@&-sIS^5p@XdlP* z<{<(r=6(h8K)XvPi==-ZPooehc-A=-A|d#qFB4`nU6jV?++vXT^<0LoHcW|*b-{H?t>eyjSmp=~gbpuM;3t2d2Pi;H>e9*fA|(!?ah8!OCWyn@jnSrT6DDfYdHh(}#l6PW5at zeWEC$TrN`EU8F*^QMt_&=WXO-B4o=N@gy!b!6^ltu3>%I=9{MWVA>o?H_Q~0XT5oK zNvg$jOh=+Ros<3XO=#Q*I(MiGi@+IB=q&F`c{S7TQW69KOBY(LvhF;J!Sn6;QbSuI zIAL07JF-8m7D0-}3r->41~lK3^mph9QTb&E_H$Y4rHrET0qOdvtm;BQ;A6`fyAAam z|0lDDcI?=7TDmbcJE~MsD;~{7EUw05H~X8Eezxh4Q^djGf}2F^_{29<^e{}`R+Hac zNVpxcz@hWDg)k?Xw?eeiSxU2dhL}6cv1~|3kWP;$-u?(iFY?Btm z0I$nEm-%5&<*t`#PPL)rySQ5nynUriK^^-uTeEs2Vn3a~88ySak;BP!f|H3(mdbho zFEK-r8!wby=eOq7S+NCRGiSiiG5fY5R2K=2PWh8;%Lu* zW>~Q%*qMg<=r^*iHR|LkjoCXCw_ka2>DrWymF6oc%pWWp#%&WJ8B&`#X<|4gFGDhP z%4{C@4W+h34Q-m=?it`ou`rCfcnf+%qEmM6@7&$GeZ${LAjXFqH$RaV$l{Bdn~0FP zc^lCisHCwed}B5A#r@lVa{JC_xA!dC=H{K-d(gPoMLkKAQQ+eZ1nhj0zFzf^iVAeP z8wqwI)A7Oe9@WQt?agKurVE_cKylm%0YYL)c}f4~^FBG`$XJtua~ys7)x`KbkQt@fA$Bk@5;Ct?v?;SAsBQqBB4lA0$Xlr%duQO=Jlk zKPQfuYxOLa2v)r#p>@W~HJp(ed_P3GX4~n)tG4U+16Z@8MQSRfls~R0ak6q73T8r% zPQE0n2-@z7?AnN_dC_2h97 zQkLZ^oe7D(Z>j6_>;{q;j#lourGnbe;gd*YX)Xtx*TDvKN(&E{-TwHGp{(7gaa&^H zIRgGiJMsVPAOG;e|9~6;M|kF6&k^v0U#yuUVD{7hM{)%G_{V?ygO8Co;0M3`qo;rU zm%sB@zyAA=Bvn!e)+O!{65>*@{iay%$05KBSWDqa)Qq}I%jC85lLtujMg{8>ss2q{ zVRWG31O%lSHfiBldD-KKg9+Hp-fDNKsz0(Xboi-k$erapZ&)r`5HbB#2HxnoB=a|VIhvJ+O;P(;AHWknCweF-k4z7zG!~L^`f-b zMWjL$0BLCtMVrRgdq5j^S*lOmbK`pPs|mI=(pSnDn>1TO$QyEXEGc5unvKhuz~ZL&D#WPT8xFl_mZEK&2x3z#&yJ!vYv|tXHE)m5?Yc9rT!k3i7NYJl%$#Cif>gaYo z)InfD%SlQYoo}w-f>pFE>tfO|*neO*2$b~Qy+Xj^ycEK+a7OM%uCl?9p(Cq>xh4Ch zUE?J9O-uO(vLh$(rVg6#nNug!Biy#G!F(Wvi)TLGALHb{Y<|Xm4jfc-Nqt2prY0%! z$Q{H+s@67FPvVx2@4oBcQJ-k4B3HIXuj#!vmEPPu5X$ZK3g?haIQ`Np;M`NOcruZ^ zdj=`ocqh2?#U~Duj~O2I<>J~f9VD?XI$pEoJ~tyQB>}a8srWiAB!_zR0r%RvlVrUV zv%-7jR8w>F-S;w2%zEl>fQEKaa_yA(KHdUJn zsuNMxT-LRXM})F>Eeaz+k`KA{_Qn|5RFB{qviey^tKe40MF(inZ|7<$S*#5tWODyp zjc(wGQwf_+mF_7yrXrLe2Cu&L^-v&(r&^s%*Xt#9Dl@iTr*g=t>@-cV3xnB|{y=2* zy`=)kX-EapdL6~7spxD4HOO(RD9E#Tkfb~izcW5LL1tY`EFp2L_}^@f10{@fS7RXC z%_Fx^U1XLFU-6Gh4tMu;qj|K{QZdtLf}*C_&hjSCA#PZuzwrP*EVJ;SALipXXu~7x z#sq0iAx|~GF1$##B{h2>35=057hA3ps;io#z47HxW%K6C41V(6Q~q8tMS2J?=4c&k zikw+fVBfy8oeTAIV6Y#0RoK9^&GU-tdM|NV#y}SV%6h2fJmUAvA|{e%xbl%skJqu6 zh?ea4-PK*_22yZcn45KGg2m1yr_7}Nhoh6x(U$CZTFqj*i;2x=U#h<>31FFqE6Mqs zt#ft5zYs>1CbRJi=$YjYD>NC%MB&B2VQ6hrR>?r=gtXFTRAv`o!kam#R`qNwL9Z-|b*CfSzZt`I0vqrn(tikbJiz zG?xd2Y5$xv8O{*Yi@}wS6dT%7ZFYY8E88d3E(oM8*(?{pZYdkofaTQt%Am_TX@i)! zpoWuI0}QY{DX4sqNJX`N1;4z3HVaF=NH46HN+I=x+&BNjf>S87}`It=4>&L`Ln z%p?c0YD#RiBFh}y$iP~fM4ZYH$n)_iHnbKov^{=|8%-ELWYH)!KnO4Q#h=In{@t8Jd}KJ0`f<7?k1i*k2)l^bJlst{?Nt0)E}iVE_`3PWn8rpN z>N9MxQ~mpDRn7&vS?!cqTCjktGwQfC&E(2rrS;o{8O<&gX;DGarS0|+{bV3ep(Lsk z%d&6A*B60>R6P`tlda)e)4G}R?0IrdEF_DzAvmK*71zp1wc>ksmMl>SGG@e~P0b)Mmh)YMMrd}d zk5D>}^<;(ID+bN#!1zRVFmE_>eH_6Pb|90anMt#Xsv26I6_iV~BxeCH zX~1e4JG}|8oanSO3y2KR-J1uVyywH|1Xy4gh!>fjEUrWu9!K{8i{d51GX{h54Q_id z2V?bq_}Tcu&TRinh)RU#KN&yRTga2>wYu!)40kTG91cRkFyL_NB7gR1es^|sq*}cH z^`rUTu|A?S?qx5FbNjS@1p{2JX<8Xzk{IE!od7|;Xl_$JJeoZi9cdg4ll53KHGQpV z)J_pihh;LP7ra~c0g_sCcRqpSz`Yfc_q!-)A8=PBIA3lhbJzpSa*h_+rFLID9(s?*|i7s>PmwP4!g6E0N{7K;$a4+rb!Ik1a-ni` zqJ$db`*w$>Y5EO}=Ner#tOpQAM`PYr&vag}CKvO4ED1(m?_d*2$3|stOl5UjMK4KtpiarTeYtp&>Oc5?8nuCl5G(7U1>ZNn$J zu=gcIHNdml+*#0{*rNACiQK+`Fn}j!f86Izg*gKkP|C+xzgYkkN4U%8zQE4s6n5hP zaOewc&ng-w&=g7~c^~K;I#-!YP<(#zPXX%TuV|F0Eq8%8MdgS5eK|hZ3 zm`Lf&&PDH?H{#5n4qRL@S4@TOi+Ba^6a^IYD#YnBtR^gAwBCLu*VJE>2@=ip;gaT0 z#=L7@1t@-NPwDdLz2ZX5rdgSq=qDpGCr24UKf{g<6DG#&uuCi+jwT~xXPo@Kf3wPkCAWMh&w5GMK6K0}St8j39?fGA0 z-Tt!N>*@`~~?QH|AP7QNT`B~?vwv?8B^Y1%CnMN*T+>wLBX zI3>Jxqxvnirq6jZ*Tke=IohZ7&-+5(lo+2%;zul zj3IE-&pt=)6im!`j@^gRk)zVu>fuswpma-a%7XU-Syq$pk2{b4MPzmQL~pIkRqbuH zcEjhI(9?o7eSLMHg1zQXZ;X#dPnm(Knylv^5f9&Wk#8N)r5zYv5A_v-bKIA+vNq~- zHf+I~e?K?4B}_TA)j)Fe2hrzUi-a)7NJv|Il-a@7?sUY*bC0hY#d!x99iKhAD9VF> z{F8VG@xLPdx&vd-1U`M+!)gnw_N-aJNo!ETJ8~$R0xKd@5~B!pm7+-}1b(SnCP6nO zS!8V`9P(q?oxZ`!{Uvl~ZJG6&>p+p(P#vP6RD|QmWC-rJ1ugPXwtBWDZve{sBGpu> zNaurOQ_E(ic^~APJN?yg(%qU|#bK?tqxtffOF#AMl5jS)C_wbBmUgp{1o*G`u1nMv z1w>igJK-s^kOBz?|C;q(Z`yZI69z5qj|moMa0cM^>WB}hmwJ9FOm_X;oQT9 zd6T0vI!(^wV$#A&jDm}FQZ_o%1i*CN%N|L%Q*6@1YKRK4nMCwKM=PExqj!xi)2>S0 z=L0OOqdW8xzZKS0(Yj7onF$fE(YI{+oU>c0lMhxpdvtPg{4o{+ocPYf!fhenoDlNa zd$L%&8n*;37`rM=nMRS`b(zQ04Sww(Wc0wvV}_qz9ICTE|LafBd0s zT5=RWnfU0TK6)my{Yk zz|Bm!1N9*2y9Bk`QO4tjc$;$xwj?u{hPOgiYLd3idU<47!kCH@7MRWa(*8^{=`=|q zGFN0(mCh-u{%R1cVK}KEq8HrBP3!?&NJeTW&$PN;Q%=bhC10qm@STq^5{)!QSjh#( zL49AqrT`HqEG39cMRXLlGvfQ(Qm$;vAQ(>GNn5FrpPqXS*{>6L6E3SyrTeH>1ZHoq#OVu)y}za;$d>#|)< z+c$UZZC+4uBKCb(0@w3AGv30rX%zs2{(~`ui~!$d1rcGS`#otADjaK&)4wsas-_It7SO?vXB8?L#&{xz#vODgr7Fh z5`i0kT%Jq9VXd_Up|)7ekKN(N07!T*A0qcAr6exk0|A=5oAFmN3kaRmA2A)cM31xK z3nsQ76wU`3m2sb#mWZSi8{AeKTscMX94mMrU8039dCjJXMj3;!Qg{Zd7C{>NB8))k zlW`UTkUTB23}+ZJOw;tOE*UGsobF%A%-*a{oMC1Y%ee1xe{}lr(Ft}>W>1hBsrUKm zwKuQ6rC5>QKi5gk)}%xSwBSe+69enn^giF@h5x3SzsekKBHl@B8e5w>UHOrJ^Gb&G z+un0WluU%VYa2#$$*-|-bQFz*(^1R%gwI_pxlfXxRSf48*`UP3!zHA+n(_<*2KWiO|Kg(3#ve-4%c*y4+cT3e1Nh`iqlVlC zc;!m(KC`YM%@~}!2s%^$En=b@3s9<5cn)T8-`-?$akef;VdH)c%q-OQA|l8j?z(Pz z_yE5t{N|Nsd}%L;UC@?I$ik(^#8LLLwPdC>K%9{eF{bl(WCW_?ikL_pG_0%Y8n5c{ z8NzVGUP)Xy)Zmwc8ixoiUy5HfYj&fNYUTcVZ#W#bx|+=o#`7=IB_t;vRK^A%RNe~? z)FH-q46YjPZhT|iFBBp*R^kgIXX0U)#grl~OZ3F)kPySxj8(k=jA+k$RK`$M$=}ti zdPm)@DRF$=a}3z|^)OoZ6857^HAQO73H7n#eX5k?t zgU!|}13To4NlLIB99z*ZTnlwO9!Bh4>TDuHV4`=|0FQFL%;tk)(nC&{9c5F+J<`nw z187ePbjZvb9aT9gMh+SqnvV?u5f)egE2NLDZJIs~EcH$5M*|?v>_|sw&3?$_qOJb0 zfXC4t3tVHUBgz4Nt$;co32{f>GAQ%32MQeM_~32fW4&DiusYc zA5LquF?~FaVILiAYwHE+akNBrRpMEOBQs`vDdaG|ThFNz*V7_0g&nM*Dkz5X{1D5h z8jQP~y6Z+isodf3WTtySoD+|i@s5jT%rBp~a-df}tq{X1CY-q20*4+n6F3eA5laws z-D-#{_^l$e?*)y9P;+v8Dies&+X&wFADn5tmg5`D^IVZg&`?IDg}mT#ucc8`Ejf}k zMBExY-b^mYjA--yj;eI`vKuv0gtBUy{C>}q#@qNzxMo$N&F(zx&WH1f>#cOYMk^b> zlahzk%T_M;+;7cQxvs)`r`&?X&F~N54rU%vI|`%ae<3iYx7vR3Z6A)}3B()1DY^8I z2DtLao_$qT&+EubUhItm8$r1BFnBC5+V-(JwJe?5TsO2e!shlJ#Mgp|t9wIAU?led zUJ*NFm4L;tEB!zPNZfFYfx^a7=(~FG4#x>ejvRlaa>Kgcjb6TR#m1ufZ^&!&oHJ50 zzIdlPL;ia3WX>DR4z}hvjv0VeszjOFR@<2;!{wo=8b+|x&JDVDh#+`C+N*UYzY+&Y z^Rw=}`jjeaC?PUPOO>{C)(x-PgyB~UJ1YEB)kM=sVA*vDr0NwXp`51d!ULdes3V6n zy7%M}wy}Fp_}?5kxN6F|4)@*y%7biOLs&FU^ISyCRZwWI^X5U^w>0_`cS} zc`Z&zBBOG$DrDlZYpku9jjH;Rxj6Ss^aCFy=W_Q#-lX9$WFB#t_#nqM;abG+{4);( zw}f%!tR#}ikHPa3y@(c!mm$wCwB-QZAMFhJRcK>XS8GO7NfplZi=$X9v#9{&L$CeI$ouj!U5!9x?Hwzx6<6 zE|4$*mx1q4YG#h>h+C1#yxy6k!aC;ImUHZx&?Pq+_ffNDDcj{7UCdLG=Og6QbSTVl z+#HvTSOnc7V%?_?ha9b7AP&6Oy>!OAYQ!-krBcYM$Yy#)Lpi17ziYZm-zu@xlxi|! zEtqSVs%mG`nW#UfJnJ_PUWcJT+4VNonJ04i-CWz|2bVZp!)TW1gtum-0oetGCD6Xo~(Vq=UYYicJJ2K5_3q&8Tl9>&HN|HZ`G~cun z@amnH+#J?XN-+@c{`e?DOCnmu4VPA-ELWR_U?~vNUU0sTt1i3UmJQ#Pe zn4wSbEQXiq1(P8Tr+$AtIT<8+9J*x7CgNPOCImndFZK!!VoMyrQ(^GvL6AHe>DCXW z$CJs?5z;z5p@gDTlCfng-C=KA_EHv3R;N>qm*==;G zR3RDDYmYc(y#q~{e0DPwqK=XmVK9@dmHc}}BC`wdIs!A7jb;$Ts0u4=DdM)J2NvS~nE_gXiN_5MV2pu$2cvVIvLVX(Xx;9?QX-osAC19U zOsIfuDj`@b1v)2V&uRg;*mWL%jQ}fna>QDv)~0?EgFdv~_@MhStbN#3Qd$+tS;%dm zwyLs@DYJ@b`hF#!K;_h*4^rV33>qecOS?su_`I|}JzoXx>^1a#LLsmuez0>@(UqcB zSwn0*2iX?kLg#1787rVV!T`UFh2N7#BdCu5ynQcGm^ogi?Tc@T9*~MJyaW+ zN^_jOi>dJ}i}Lpqdt)5Umi&grD#no`A}&Tl<6DyvicJBJE|Mm2`Gfe>qZ#hNoYOWj zDG5`plnd@c>0-6yeG0%LHeM)LxGW;(&0wT-C_jM3Xg$Coelpvi9l0N@BW|Qki?WaL zF$n~+4-ENUdr-)1M7o2I9@4W(z;HIm9)BW)RFHdJ+<+#;<=cySdyEhW-K?A&nG?`` zCVQI}|LeVrys`}nUSUw8m3AW8H<~f1?;mr&Bx}>&*QRYR1;A`-!0r_1gYQjnlXe-t zm=Fn2LlU^!r0pIry;s{4*h@HR4lJb#qr&H(^9~AWhyuJ20@0A(L2)Vw!3u*Ulpqq> z&D8P_$3ai_)s#`KoX~=JD5KOCT#8w*Ixn$i^##Xr$zO?awK-hbC5n*-Wd4JQ3{yfC z+kP-ikQW}-G*Wd8M=`0Sl=P}GrBoXzQUq0-`vP^-@0XL9raR0WdQ$EA$4}MD+3awX z(o7JQ2_jHWyt3is(^?9*YUWJomu37~>ObY#YRC?~Vf?+`o2haq}Yl5l{I)^bjyG1r(Z1$>#2ciYYEH@9S=q|pR$>$m z-V-GLF*}x0a*NVtaEbQeeq5x~A*w`=!i;KUzm#QVI&;$S$}b@+yN{rnITbl(_;Fv7 z49}PAc#x9;M9j++WfL&$-GkoezE5wqj}-xl=Q6y`uu&1R8@5)G!@7&T#JM81>A^U| zy(MbPJzJ&^l)P+Fa@SKjnRZdI{q5_dCS^#PJbIzHf21u_y(;3@Xcutp;bW7=?y9RA zt;KsSMWd*;rorU1dtQC9v;Sy(a0>tZhqJlBB+6U%9yi0URq~cFbp7yG$ zvd)UIH8JP))l}VnH;@Vm8Mo_iT*s5h0;#~>R+%FvJG0s0qfc{ub(zToVb}mf6K78t z(~L=WJS01Z%BMFo5e;~0;RGSVO(<7L!mj;}@ zO%_m@u*jG;&D<^pyhe=KxMCWT`uJWA<|Ew-glWta%urYA@RpNQr_^4exyinz-0>Oe zs$!#~P|2P3rEo8fNuG|420hoopdqX3BFR3l3(EjH#oaEJPRk*hoVw@QJOrabyr(&pdE8IHh?y5Z#_>DD%=}o3! zM>NOH$B)Mc6WCuz$osKH4wePoh#a^? zfmmV|X`k7i_bVuDjO033vlR?Bx@;6`_h?%jff_!&kH<&w;bMAVTxt>SZe#qIa|&hH zI`|9gCxkP1pC=N+n8f_4Fr&KKprBhXy39v195w>j21kdq+clo0ta%mf1$|-;fyLvPrwX)RDN&rPaC&UDU zFYR(E*qxk1twFBB5B{{La7myWjnr*}s0cG)Dl4 z*yLwz-Pr4D)9{&5WdS#IDeb@Fox6wwb5vWR>jdyOBy*o~^=bwiD3*g!giNiNF^4L#WIrCr_(uuwZn`Y9S#Go;hTR9zC4B z-J?-7njcW2rD;&ps1jx-`#a)7XUM*aO_gXej~<0w>qi=eewtU(QPW98Ur>U{gL|Iv z#uQpKwmY6|C-TT;vkqbB;D{U&k-3(AI_%w<;x=O(q&UJoLcFjT9wc_*Nfgi(&qJx( zh{jMOBFp?hB&k;Rlte5_s;1%XsFreTS2{TY*=klJH6|8Px#v0S$a7KGB7^pKWTlSszBi+yS^xjNo$#hwan~Q0 z;f*;EL&rwc$S^=eI87=ApP7#U2U*3aEySnLjx1%i#mkY1Ln#f56sZIzLr5xf(#j(* zHX5c2D?6tZV#Vk6aqY+{;?vA5$vSi*b+u*vB{mL?CZO_wF_%{Yg<69|QuW$!Tis3) zEe-av+f|Yz5U3)3;H6#ZPy~-Gj>lind)mEECtax$bEZB60W`2}1I!u~Yj;c1@=|AI zUs484;(-Gk(+?pH>iR-g_WIlBOlORJi?=E>N=@!6Qni?EpkPL1gxb>3d<=93=C2`J z=m8Vgq5jsRFpVa)rp0?>9}!NS8v|%g+h7g^SL{@C5e$l z6Y_fcsuOZ!eVQ;0K)#wDQvh5>R^W727TFZ~x}qk8P}zN7c7f$|PP=oIrWYP!n^fId zYE3s5t=$QBKcHG{hUJhIJLXDBwCpS|EiHEQ1`QfZcTrP|g6Fht=*t90MY&pB3C{}S zl_n8PEMD!T=g{O0kmGcD31rHchMq~5oEk5szBuAC3#0;hiCv>z2%dDuIsqxIV#7Lv zE+h*Kn)Uv01ed!_~6Qg*#&#hU}b=6cjYQr1Y4NDbwY=N%G(W1%AP zSHu-fi0Zwa1e|h)ILFdU74kCkM%E-rnW0ot#_D4`o9CNc->KH&`?g1+h4nN>)Dcn> zAHor+`QYgr^V6vYkulk4$LyBk91!luY>!jfDI?Vi5#+&Tw;i92JVQ>m&9rtU8=gf$ zEF-g|1zol_sy6W4!nAIIaFeqp4vDlok<6($WdzS>9y^7mEFT@GppwFAkis45?3>UV zVKtiLPZ>?qXS}qT%xA3Ah5Sf$VOSuRB|pT89<{j_V^vmm`d*6p9NqQ&BqX=oVoN&Y z@e%hDo=rIG67CuVMr84?2#}rA1s%>M5&|4sW6D?Gr_6l`f|R__THKLWaJ&Z%}i+WF#*Vu7EY(L7WjdpCYxm1xXBo$drLSHo|?oJ^pfo4 z#30c5^pGOtg}9ol?H@Oq^jjJ@x013-uI-ts$wYwAkMc*+cLGb!#g*S|rK7aB8io0i zy`L=f4%zxJ&4WvN4+UZ4Q64Cat^7+tss)E_Qv@l0Nji62%jn$+93rCR`zq#n`ErR~ z(>a2EO3_Y%j@J<9E}KlE6kz6DX@kJZZlSBS>~MEB1h&j*3sRUlUG zmMJN_noQ^M@>qJ~#JLW{iWi1SMkg#Jh5#0!g-R~D945C-;JZ@&5FPhRi+^v$2T#i8&fI^=T| z+^^i?mdFSM7!n7AU*l*HG~}Avz2GDo%8xyigV1 z4X0ooQWJ2xszy8Vj0R98FuRb8e4NkdV?UYAzC@-A1neLZYudZ| z=HhMf9jG&;H?ADv0 z`KGk0r~r>IY+ZHL&~uVelaQ!Sxqa-XHgQ(-bQ)KP^d6j^Fp{qdww9f05Y!Tb%mv!I zLTpn_Bd)ww$gzy^S4gs~RHD_c%O+%1Uf!)mne|qQraa44Z6poyzB^(F1jlF(+o_21 z>i$&#w1_N}vKUheJFUfd-9mSBb+25XO2`=GG29x6=)(3v>ax>Au??6`VU(?K^@9FV zGh!*MidC(OUSio7PBEvbI*Z)|3tGqxoT^GkPIs9LM@dq;wB+*cS58*NJ@zg;c$J+? z${F_ifIKO&xE+Nykt|>Fq4G*h#g1FGQ(`+?_x2&|$gbef{kchy>$ zR3`MjHZWhtP`lM2Y!6W{p@vwLyI?6ReEUwOUEV652}gX)hL?|Gy%E0lnzks>1*vC5 zB*g5do)Q>lSLXdCtl69>$`lVUL(Pd zd;uK{){LAeyEr>;LZ?5YM1dv~y@}Qo8wd)TF%nb4uYnY(qbyTbwvtX$o6u3-&y$*_ zaU-Q9nlSId;*Zf0^4yOhjh;AU1hHEdm$OObXz8r+0PylN=+Jtj1&4no=-}+x3W+s;Y{4W>=2IR%^Al zMAWlE4M}7`noc{Sq{ldi%fl}{+)?y&Sui3`IbtUdTGP+0@r=^|BL&uC>~iTIq8Ifn z0}OP@?L2xonoN_CWh6>yvW?Gz8eb<0i-sNVouzf$DzaJSZzvj!KFyd*X-5-rSJp@= zvduN$71^jiPf}{GYEy({A%Jon*fM-B*4$dDjMP6rglq`eZ)@VU^I3Eh&XRk6d@Y|e zk0UHsV`2*l2{VEyWjIM(P!V#22bvsERU`dZC-~PkbU^zb%$Z^rMj!0i2|`tI;#|oe zHYL124`_Y~anT*BJ9$peWKb6z@ zYPi9}DXNp1(GkQJ+$7-9jaz}&DoqOF-$KOOgF|`7I>SomtBi_3I&{^bs;bI5rgH&v zW;@$^r<5#Mj8P6qGpbX{0%TNv@Hk@EiB+`&> zh()2LmhKB0-5o<&hSM6J8^PQdr1+?ZOB8q+N?lWU5REW=m=| zxKxFSlAy70J0#>(qJDMOBlkdEuREoGyH=x&`fQmMB=N8B_GxDw`k@AVc> zlfu1)0}^J#(J0eVB;BPt%MX{Nk*O##UJ5auGnFcOWe6S{aApY2!Ix@{X(5BcSE@~K zW1~FUEf*X*iTO6&Y`R17mz`O1D^SW}br>#F^>q$v=Vxn0{MsJ{6#>DNe*Vo-;T4)tE`{XRN0 zaicV^U(b6Gw-7}PrxP|Lf7wW}Vc}6M(v5uI$%C8>-1N0}VELCaP|KdV4a}s4GVC8SupHBiUy*x9y!s(Xw zU?;C}3q@y1Cmh8y;XcHieqyQ5ZlxE|k=uH@0)_;K?rt0$XqQ_xws1#CUADM=p%DQf z^RVi24#jbz&vG7`*MDf652^3dkKG^OxEd%(_Cm zVpmP+k_0IRP#%f3?793%V+#<}cnOO`OpUyzYAE@HI{q@Yt`HH2h0;|F`T zS%*9ZS8!r)RBgKT246p#?;X$d-ae=!JFBNxDP2Y%AY!ViDTLs!7MF&3n^;GUj-HI3 zE_kH>5Hsir6XeievAKs#XdL}zbx+^`6cTnr_pwX{q>-)$+$`M)(({AboYkNNf8BcI&QaN zZg4-u{+FNugGuK`R?x_S?u3~`359haw?JC5be&|$#eplGrih-BY#AWw*;hC{%CmDh z4Z!>%$lU3z!9=eUzY`7F}HpE2Mh)t#jm#QpEEP0tE zt~|!p7U)XLCq=(h&2fbCNBS~-7cZ-7>lvN-pwl83_UZH3oH8O! z2ILF3I}0l>zPe@*C7`yN=Lq;eeos&Q|N6&2yzqY`N5KD#Xa4mZ0lzn2H%GvK_d=VBxG+M&Hj9i+*4pnHKv=ygr1IjdTp98iV%2??;#@?at zG&WYN$P|xV&-jvMRik=?%2}%6AuK5UdbYfh^2;wRA?Yr}8m`ZHzZ6dV@w z9~@dlsn{6PM%EH0B3+ z$EQcQn*_lq3+(G?oF@88R$Y(LoL6AQMSBdR8Cn7?`KmC6L7vAm)9t&!w$NDaHIG~|;Un?0_n%<(;YyT`4n%q<#;4vQ02wi|}IVSv%gSSPAq=VCpq~TSg3kuos40VQN(uNaa468dk9DXpAG} z2kz&3z~r*bnrD_GZfTh!Nf>zT6w3jGhA$R}r?@8>b2fPluLsbz0!Ip8Mmw29w@E!} zi*h(Hxc8CqjV7$a?W1krS&X_YJFuXflWw>c(-6(V?nO}q@J%oWW`1D_#MH#>REEOX zHZf8IAKjS{P?+GuVEJru2G5)QwN#S``|H=HJK)CF2lqe1Qhzg8%1?@HNh%(va)T1%ME0sVhp=Lh=<~}sCSqvCDY0ELVB?6fq;YST$dQEUUSF!3> z!wXXZd!)1v=*$t#pG0%lI#BynJunoEhMF}*@++SnfgvU+><}_|ATt>qXW&^r7gZbB z7HqZA&53YTTDk+I6UHVZ$Kx@lT5o_3)fw<~V!H z=`1Mg_UJKhn|7IzdsS7TEvKw$ z-y00Nd>m=@5<}pKq$!&p3;ylTRYPD4%`Mgji171gX}C=0IWI7TOe zONN|x0pf7^DTs6N?BEv@LJVRW%6UP4_{m}TAZ4&DmpW16VPINznxx-4O@fdCU)+fe z0Q$_2k{C&r!&M~2C~dpKAmu+f3Dl$g|G9gc-?*~uPEZSvyHOqt$^#fEpf@2-*%{1~ zf+F>inaYo{L@_Jnl2SBDRoNq_Ss^kcMI{-*iXf$wj7pn+gUU)XiWEJ0QbLP zuex`Q#;kg6pl5dT`<;(_&%N)xU{K0*yGO{B;=Ol2&OKlE+;h)8mmJ-o`sHeTN2AH} z(-(O>NC70`u*8UHPazOO;`X5rgLPvzPuB>`F*-5gsfM(l(SGQv16-h|NUYRfktl}A z@W{^qec5^p45L6C^XL==k^NU@?ak?uyP$1x7n_mUHcmrCYr9JbT+8vT4v`}e=KQ<7Vv0(BN>Gm z7PWUNyN6n>{Tx03PVs0Gw|44{KOhs=>%POzpT;m4{Sx8oRLwr#WjtkZ=t;R$h*A_3 z@uMwvRls*}jje1d%zjTyHZMY8Q#}9!B(bglSr^i~`<#`Oc@j!A)^6KE?fyw3L_uuD zM+tp(k4P(W7S?FPl%TX&S-7DpOpMqmGeU{j>4ZCudOO--|CHg7>1H&)e%x_v!FVeA zb1dbN`aGP^sdp-5v&JKW(Cckm`cb`BY?$RWF>33YprvXH2e*27%Yo+g0GnK4I&3;X z?mXW6($mlZH6GWQ)V&9G7QR}wxs^;wlhfYXANrlo)wK^W#9C4w;$UFh+i>;^^+5=p; zI+|dkur`KME7NDsu;niK;=OQa3^R|Jwtck?Be0=d3P}*h2v!nRlk8vCi;T#5j;wCQ zF$*Pk_?{9-w&!>x@P-6}UyU_@RTQg0s*0s?MlfK*GGV3r@xiRS49D8iYq5$J0-@Ye za1b$1rfcKDD~EcIHKy2Zz=goLX3>=istH`E)IE%+05{#zA0K?}4P$ILMKmy0pV7;C?xItGX0oX8-=3qobt2kc8a11+fo9 zc)p{m_$Nl7&Ey}}>6Py8bj^>jr%s3(`0a;faHHWED^NIdfk#6!;t#M{L{7#mnY3L( zg)5PxpuK`vHnfM&%%O~HkaA9-I>WAqOBJW+)Vqj;YE~*0?>hjcC6c08s1UVmA(394 z0NBvW-VHWd;Wc3TDW8BTE4rdt3haoa3+OjO-!dHM+6s-0lCF+0k2%9T)U8^s1^vk$ zj;tmVgo|zwgH3>So-AS-bMMtAX)0fwba<03N#lM7>&Lm+N2dSsZ~osY?&s|W7$OC7 zm47!TDs7P0a#p2f8Pf?xTGXuED=yf^WS@@~)8sn!DMuT){mrSG24otcTOrmKV<2{)`1f`pMIt2+&c@ z4IXHXGSsisL^eHOb)-r0z3GNF$x0~do_eL8bxxblOh!ddKk}yQidyjDyX8Iw;hT8x zXfJMSLA$-MFDUV`X1{yWnP?-I-9|ZV2pkF8WtiLo(vjzP^NbYRq>_3WA=)II)M#pD zHu?>NePI&I5F(xAY&1>1+%}Co%PpS1hKbpy*-pLxJ)k@~*Byb479JZ%W?Mm-s z-5?Gd9ZiI%X-x;g%aXCt`(XOKUyUlUNZ9(Tis13i4>sXB6H@r(&x+8Aqy%?qGO76~ zZ|NLAd#wy7=ucZT`#YB79-)nB>|o?)4NZ6G)FpMK<%(%ZY!)FL!sa%e8jCx>DYpS4 za9dfzZv)8uT75_4&<;2vT}u z2$XV_qGT8SvRg+EG?h38Q?mL6nkJD*`cNiu1Funye0Ba=?}YW};=>*+5-UTVfw0lH z2P3^_oH1U$^D>YTt*W6T2W$_%G3b0?cqDS#NPeCf8;5r>jjFwgN=;l`=u~ARCfE2= zIT7xJmD1^a_<#l6QZUXNe!DyVs}xr42ikC>mN6>7W)=)RK(}7bkAk_xZsfMH>LgTuT#wa)nf5KA6Gy$u{=en^h=e=v*R)gW+0r}_8MJ?khP|xp<`3!E0WJm-V z22K*;TpDMxE%CY&O(w}nm9^0UXYWoRQ6sFf5>vCTqRUmwbYe$@txW$|uYC$(2#!eU z#8{%NG~bmJ6~YLr7~eS0gm#kCNYwtht&Qhcr*fAF=yDKjH37c>KYWGT0Jl|aOL%9;4Y2wFX0v64FaE6MMxgla`>jaPH+9ZlpgtdfiB( zeo-1qB(Ta9yVL4R@+W5ZN*sst*OLQ3Yg&=aB-3SKD2EKBzqE`wu;c#B=tBwVXo28T zHclW~IsT~Wix6>ebJ_b{pic!DBYeA=@ztZ9);N2CL`>dfo}2DV&q>*-q)aD!nq(E_ zo}Eo}X_;XJB^>YpcQaOAAT8|aQ`m@Dv`;5r`crB(ZuFMHoZgS`=kUO6YR!+*j?nB) zE~$&y!Q|>U=?1=`DsciLCcwi15Z*J5Gc7|2B-=ejerx9_A8Z0R4%d$Hj^eGnx|N*2 zNdACvVN|~bZh#%$uW6|0pYq&Of{}c$aC)~aSBw!yoJe9Bybn#PnE`E^>#=@lp1jIG z6*>h9bQ3bjC9c4{!|jl+ZBMf=DrrK`~BY%ZO1Yg5Yn@1(K%kOFtuFF{lZUi~};2nlN$=dsvqRS%rGP zl4Ow7Oe9dIF_!TGRWNW&#b&CQCaK%yVCl?0ST-%}MV=I1(Y;eAa{@Zg2&$nI&ns@h zlNUg()RErgSLM$s1COW_Beex0qHxGC0TO3*lYmc>C%`=9-XGQLW1ruYTwn6YqiXv{&hh@WB_;+0*eMG9cytb;gF{7;`kj&d1zi#k*(Y=g6CM zD9pn%<=A zLY!ICYJle(@01Gcq48-@?%?G91UxUjGqI~GQ$Qy$smr})B&X}OuAm+ab2 z&HtW~F7z!rGtV?gd|)VIB9X^4y{y)0BezX&Bc<3Fd1jC^b3Q$K34Nl0A+Y>DPm?bf z&u}4*=gj0*teuhZ0)B_d6dqQ5sMmm^A-rOy4OM}^MXk6A$xjAJb_?+(x{*^_@vTxU ztr`s$DTZbRFz_S{yYCM&#>^}LK|P$`{Rj(jE_X7$VOnC*mNsw!kyB4p+9ki#@)7K}X zL25*HxMc&|!ivm?r46eznL9&zC%ovG{{&IXcrhfR2rY>GzCwI8?$DHUjOvx*uy!@n zUH=Z1z8Mjyms9vOuZ7p*;%vMXUfj_$CVD(7RLKx~kL~9{I?vSzaV=8cM&Uz}f9V~6 zKJq|$?fIgqt3|U(YeqC}G->_h;E#OMKC-hDBw(Z;xpP3Zo6Or85Z!W0+s^?O3?zWDh)K(K?kmX1Lu(6(y=OaBLfTU=-b&?eau z$Fa<8(J{#238bkYj!cBMh!Vjw@`32gBX$JRfcP|ke_71P=o%JNCQnZMASkew!JK|{ z1a|N*MATE%2PA(nlXuZn&lLNi0umIyLJanRnYv!1mo%inbc4gu35v+_?^nawgv1w) z#U|n&mV3Y6%o9Xt>eqCo%*M!0I)eL<3Dq!7BVyrbh=f>7?#iWNtgCTFI}w;)o6}~{ z+tG@>*VD6E?`)3wj7i^qUG$goUm4TDdP34L7HeyI(5Q_A2}sMU&L>HGJH&n$+zF$e zcy6YXfgT_-+*>coaj>pWi{#@{NaVcv$t1pLAmPwea0|>-oGtUaM`mF*$fQ^}qub^s z=TUBCLN)u$u3vWfMfEEh)ft{zO7y%<;^2vwV`RI-W~Sb|p+a@c+`^#uUBppBY4N38 zVq#+!Y{h@^(nJ}0*%`*t#2#93>pgL z2Q5Q-`L>=wZG3L+$_Y(2%O9+fiP6AlBuWFRi-?2PnUqclgF9oKG7L-K0LaA-EQ}O? z?pa=8AsgyFk}%A9zp%21Lwi9F{>sU4HawoM$l*gR&)1j7^G8p`*tD_(Etld6gHqn2 zjjQ)OmxU2Jh-EC(T;pJ)v<8)yHp>)wis}f^G5l8rJU%;$HGgL|8@@)CarxH=B6kYR z6Kur-qXjzYAp(cIBE#1;Y`QSQN&yCZpDU0tP=D^@$Qv4}C`%zyQR3ea5?M9u z7-Lhf0B|5w6-$Z;_YW6ZOXwm6`Gh2gn(>lT!nS=B)w;mY@-0gYF!c=ANg#kyNG*~t za*w?OELvm%ATc8@aeb2t(`@hH8F_f0NkV!n6@~`Zvzl>E01Z?V$T()3jGX77@=hO) zzeV)5uO`GZgsY_Hr+yWMe2?s>1Ci)TQ3wM$NQ|I(=h}>D{DA@ z96~!}rsmlijG71^FLkkO@R(AVh|7Uw0#1Wa?|+G1^1L#4Yv2_bPY`bqqqBOV28%9l zT)P&Y6G`JJ?J%E`DiX*Ei6A2-9@9tcV><*_95@qnAjYeztR@YRcqlO-iGIb}H|XN} zI4!Kv-#_Z={GHcKmBgu}fxBl25<#p7^)7DH{W?- zCVSnQaGUiI{3XkW?cwXA>F}@P7NU6{6-7vlP~z-6n0g#`LG7}nUKjNR z_71SX^F`f<%RGr7wWzqwbCVsYSNMxO-t$BZ~w!PqiF~c@NbDGud zVBPHxGJu!kX^vkuH7MsdfM zTSa)K-<5@0`Xjq9p3}6F%_eU>u?b0FbquhMhQ7#J%1>lSH}yxiaF;+??m*AlLi>s} zw>QOxsMU8>4b#W8RY{Vtd=hZ91Q#2I~cDj(<$t00>>XYmN!P+5t zpI5l$hb=uAohkXt*DhtO=UiPnzu$zGA!RWEoy@VBRoDjqXrdVFx6Try9~B`0rT$F3 z$d+H+&(daFbH5NgI<8!TC^lrSTCgz7iP9R7se$bpULC>LyS!7gbZjD6>!Qu}Kz;YKUY> zY|Bys!i){r(>sV-JM~7rrX$Z(%ePRpoPV12C>n-?x-MZ=PtpJ`>p8Z0CE5j(zcjOI z&J$Tk#&V;gH!tQGR-!Y^tJuAD`U(N&FECM0Uv2#sF?I8P*&bbzB^*n&d?EDHB1?0T z1ztx)$#-$%!2M)UI_cz_svO6wHg^FqYwjWNws&*(6zh=}{lQ=$GoWz@eOzW!ao)6P zP?><=@WOo~{N`>ikw(F|s{MKmV7VE0=}(T?%GEv4Q3oc{77b$84H@$piqCo>K92w- zpQVpt)n^JE&WELd9Rm*RNlvcl2k_>r$rpz!x^c4xT2s5hJ&j(!y~*67)XL4e2(i_q zw%Qyc>7(ta(9$~^UBzhO$c8@(UdUtaW1JZ6R{Y_*AycINXgH6lHN+nf%>FQ z7gBNM;qY5r2Xu@}fsg_qQ-Mw{TdmNw!ky1 zPhaB-(@%OwW9Vy7hF1cYi(vybaTI8J?c?InJ~@HqF&O<=0G%I`BedFgc66@5e!AF{ z2;RZJoqMXy-PD$r(s>QnPjb(*Z>rFJ%d;&AQxH(xIa2w9@`3xNZ`Fa9-DVpB_P5mi z%cYBt%1@Xp_Zc5ipFs$ubD7EYtD8;oDywTXhIFZvOd);QmS@k$-WM&%&6PpcF*@Lu z^_!!W(_@hn&n>6KybC#jNhfk9bRE+LK-D>_KWSe> z3Nlmc#rhP5TJS_f=a?UJ1jj#$rQ)NmLKMRlPAS!8N@NjE)_s-9^TwiN3 zQzK60?CJA%oIy~+f94jHGcdk~s%To$*sz_7RH`8PH~*hbwir#7)zc3p3*M2)0=Crk zh_4OGy$Z(pl@CtG8DA<6+BVJ{OKv>0?U`AbfYY#5Hjn)bB4@e%weJiqqZX+Jm z@KF=IaJgjh)%AX|(zEEgW=tM8C6T`d*Ihti8VF+3`wbZ1OE}8Dw>+I4z?r2_yr-Be zLG>%PpE<@QC6-quX$OA;5+rs0CW#;CMp5$l)pF{jQ=v4fx1=JXpfr?<54uz;!AqsX zx7d11K7?4})2VKf_OpQ)4y@-r7jxe#!Ik^*x1DS-@3m`(#s`%GV(W6_TbEJnm=9s+ z9t@IA;-vqS1+^cAk-Y_$mK|fo0oRsXZ9pnBe`F??O13CcQ{7w(tXHy85G|vqxFr_* z6nt8gej46{1+D_e2*gwTv9Kx9O4q;Hfo7Q{bp4-D)X=Z)v`8+J?3Y+H9e1SBbqE$h zmn4V41R%{xL8>$vB$J!pIkzQKpdYS0QsRDs^{nh1oK3!&OkYhtNr9Nj11mVUOmsXp zAAnjGS!9KbEh5sBL@gps3Hcq-N51?W%xMW=^Gm_CbG}TQqm}_U>$^+YZVpRO>wKO!cp3Nlf!EjkytT zc8P7u$h>Fd)cxPq-5T@EcpHfI-r0MA^NhE9_bqY+wrt*jx7}mx!^2I-OFn6TfF z^@-LxMsr+u3ck5um7Bf6?gpxFjfwcfNb^1V;TbY<}-N$j=@kmTGCv&uonoxUJkC&PFtHRbY>o!Hm=)qZ3Dxe0f*CHQD)lT z+1h>laLakAQu%S43;~;59Cz+*wRKj|!e_OjQMaxis*Sa&+Yn0II133{DF;@tpO6TX zhe2#vKqZ_;MLpSNP=-AI^n*^cx_WQ)G018+4yc&DM1yApcF!7uhInQ)`{jemjg$C- z$*HYawVdQ^+!At=@5fU-*J~_p3rlKzs94#V!%@d;2|!;urujlfRay$#E~kf7O|g2nDygJmzWbD{8kFPjq!Oc=t{%_aQm-x~zgk7wS}Q&Y!OGAEuuN3N9_))W z)`n`AlfFJ&F;!a>ysg@wj_N%J<_7rPOP4NP!(A-=!yEzsFLDI@cX;Oio+IF2{KsW; z1f2aFzk}sp{HHQUfKDq<%n# zeJTH4oO9TTz{;RZ3r)~x*-o^8Y6;dZw<@Gi*hUnRdFa;{<0Bl)!;#;@kCN!4pT&^D zsav|9aEG@ASeQUp7g;Dn6s^G}+fh~YmrVdtQAJbTa}*(7%`OpMO;%}%lK9?esj=1_ z*!A&~xsmWDUpn@z4VO4i)Ladr(f|hy@-;6PBM*#{JCnnEBkaPBS_#-eFy2eK1@}+C zeh(Il%1^}Y${im(q`jF zEKMwDOu18h0aad+%pReF||NN`Xh3Y+PwmMKUE4I+1 z2ixcpz}E~c(785fn%rC{^h2XU1>vQzf+(gLhedd^qd}>l1eWeGk`elJt!V&|{GdvJkJG1D3z+zDEkGg&C<<+&1 z0VQ1K35&8PEe);r<(=Jq=bF~ac0#kO?%g|^zra>ZtePhX-T&s1v^0rkw&1W>^s~Za`G5X4Z}WzQ`#6#OnCi} zc8jHF`4F>0bR2GVtYb?ISsOFw`T)QWo4TIjKL|n6UCSJ;sht-!BkIU80uamPQ=J2i zx_p$dQlnVvRA~uXy2=Y@<56uyuU6Lm9BKR?nOnVJfcIzvMmUO0E0;vZ}p^WT+Eg9=b@N# z$AeVoSx0SHOwHtG%NA!4iLj_#i1z}8q4hL^h@8sj9r{q@chI)zBL}J=yi2?i*U?H+154162Cc6ffI^?Z%9K8hsSc!75w8u^Ky#C}=-ejriex&;lkQ3& zSNl;V)43{cGMzUR`uA5^l%#8aT}pd_sl0vd)5IGjy@mywtf>2V;`wrL!SPA&yWDH; zOohSXQ5|2U2FitLPdH!?aRpRDM_UMp7ixP7ew1i<(b`h;XXxe!r@q|^_#4v6ZZ znv6p{2PTpd=H*D$NvNv2#7*A$6Wkz>MnHl#B5=+j(tAd|-pYG9o^l|3_})ry{>>PP z2@w6tuvn}BO}}Vifs}jOsK~NnZ`zsaY;xLRV~K}l7g9^hvfAq4y#Rk8jGxNMV&F7! zrD;l@5##pLQxL*y@N7K8A$#S_T!6>M;4j5##g0d`-kxOsC*3!ASJOXFxVqDJ`$DXMA)zT=-G!9yzNacrG@FZ4l6#g^8#W$+0Nz_u#@r z4^|R31oxe?n=LtQ$!QN~`fxkxK7T}`q`kWr8qo)WnlMQIssd#s%*h3x(Rdcw&Y&`7re1~277 z@XTxBg{Ikd<$L})mpyX253RtzquV~emDz>ed|Y?qUpCh3F9twi_owiHWxLL*H1eby z&kM~guzR8FpaQdTrTc{3FXX-<|8T$XcmDTx$tnK7{I)BnxF^?Dgo>$1=#ri-&8^}S zpiaf2zDbSL#u{rcFwrtX7wBDd8m1mJmwRs3!n}Pt?KmYLryX6q)~g_C&qKytQv?Yw z^pXQ#8atvvqp73H2TSeHy)3-*Fo-@D!2E@OM7X%y#suBBN+}Zn-`z2hIDe~c6CSrzneJz(Y+>l$zXGmlu-URA0wtgsM2Woh42Ub8VT4RmD{!baLb|&6z_bxbh1Tj#nDZ>@8z0*~nMZCBOtXj=2U zPIS)d>Ll@i;w8AJxSv4&3?H)i=D|z%5UWPo#VlUhLYYFNY9Q-t->1D$bvs42<5{xu z>=(Ag0vLH$hI@12gXyFSy1Mx=<0+Ve1Zzf{QwEmzEm>e<8g!K)Bf3=R_{y$|jTq@L zDV*dj<*9mn&6MN&%4_s{!Jr<&)t<<^SM#S9iM?s$1=g z;(pmGv?}0EQ8av+0@Y%U#D*E#Fk)H|-56HFHVV%%lj__+->LGX@iLx?YvHEOsf7qJ zh>iP7H-xhGd4rWc%Ar_zd? zvr}OinO^Td`)Yc+b2gE*=?PgzXEm(Lgi+NBQhUo<=N)>}MwaMJ!Gft(cZSUlSF&8{ z6)XM55;uG$Kk$G0MQ{mh882Ycb|I7}tIUlFm>jg~+IQb|JktAN5B>8L01mr+NT=#Y zHBF*E3HFxWVx?l<7`yU2V4-i%%vMfH|%zkzW+txM`zO4R~DEim^M`UUWFjX_?WG11N#k%Df| zk@8Kb^I{@>Z{>97p6@(UO&OeOb>=)8ERgPKo~k{S8e>#Pe`DoT%vz$+Sdn5;L7eBR zTq+Z#xPCemaNw)PD0M}01i~k%jmw6>4pLvNJ^{}isd$5oUfM}6A~~l%_&{Ild@NP5 zmxKgIpD~+e>c&oBcHq>^{Ztxiz^EV%N=Js_+`S{PlP$^L86kQYB%8W#wMH`r6R5oZ zjA1fZrzFS>#uCdbC933Mk9oG9p(ZQ;Yx_yGt z3haleH0fehsE`xsTc|DH_#XL_szvDn?y^s)Rotr1%#so1N zA?px*trG~;Re0A}mniU+)VlpvO`*n7E1SH@ka1Mo&+%T=55krlm`(h#^4>-1R zagZE;%VvG=WQw%4Psc~N0gj2Vo}JD3wWr~WusnIJoCnY6ayu??M;=NUX!>E89xul0 zMX-9;QLTQGGi5nP)(K{12#I+b0n?@zbd$ri;CT`zd{RnRRYfIhk=v~SNse(@dCUu{ zhzfU706$2Gjm!?7)}1zb0XiLTpX5#S;JWMbf@Q?0o2h8dF=3jds||2zQB4`uMa6R8 zf;Z0Q>0FSppP}!hEZ&xAL_>WW&%P^H}i{ zyY9j#af89*i_vanh%CAch6%I1A-@UcF5Y<)#J}9Xw_m*V8#Gv5ah$q;1G2BZPulZZ zY)eCTz%z#6w>fthj)o${$Vx}_tJw1l#R>Bb`eiP94xF!|{{iaY z`E+`yyGSW!18RbTE*7%t2}~8!$<;j^zuT3p?zq+oszENgo=zlh9x6c9017}ROA&*6 zeSo_N=5r);q~?(uy!)?Sj1OK=>)<{Ke?w&q)r>}7|Hr@i-!P`p;Q63;Jbup9 z)sU^Ee9Rn1=41$&j)R~gc>fHz@YiCfyx-eMeNU!Lc!;olQ~|OO>MdAR)SiwoGsu9a z$0s;oKf{Aylp`V%06RcZ{fO`uTsAHRfIc`Uv6%yG5TWpq;xbUSbSzml%Au+ACR%tmrzNHba zhnL-~7BfoEVQw8hA7QynYs1Vbz4OKgNQKnQb3mlapI_g>C5`FM0vzzc%tRi=1dWN8 zle66W4sQJA2xva)vA^C-JH##S&v?U_kOuF#W-rRQ2I6HHIuF`~W_mB#3fFZ702pRZ zt|g0~piuCdcZmQNDG!x^q!)L#?+d`AAy%ovxJgy;TLB$J1(%XtopDP<1VAoE|S{kdHCdZ@0A6Vcuz&`J-`meWVjYNUonh>mm*We;4}6Q&jiNZ-5tD> zE?dAF{Mx7R>V_0Vu^4@g3)MQ58DxKWsGtvz_GZJ${A4;irH5lgu>?%WCPGafnR$>d zldcN#B#$Q8*O_NvvgLOfSnt}eYhd5KK`;INr}B3`BwRNDj&9_!;_=|RvEn9>r#x1W zmRQnzcFdteGF^V*ir!8IOL5l`D#HrDO-sZM8`#us&G|;2bJZ${4e;vd>89@IOCX@= z3SYrR$kcT}I?*yjzW!x!ZdXRQq>Glz6$z;y~xn=$& zeflQ4P&KbuYGSS-$T1f)gQSgTo98P=zG3u(?!j1bf&Avr=bQcddsI`1_mf6 z*CZ%l4mG{p*b;q618C9J$1`*7I0NYP>~CAIB~xDzy7N*>cmWnh2R?8~y1&2ucxP*W zA4|)gb3?3I8|s$V1~t#Yp#u;RcpVquJ@xFLH{So3Ny*@XZ%UUH+Tp@!@#$QeI=HpZC?8vs&!N}>Xc zll}ybRbN<#iMYzgiU8&80#~S?WG>*wM2{G|Y_I=`2WV)mc-pAtP=m=EdHF{XlCe@48%E1&CiCcHPl8!1}oUN8_aZO!*gy(%Z zBVj#KV{lQ5HKsaaxs<`^v^X9H>Vs_2;O2)6D#O|oei!>4-cx{_iFpBTC>62#4MThf zAQR`MBQ6w3pciMKyx@Y}s}RWHr9-pXU7yF3)tM(5wpDSMOQEsyx!RU?746(QGK5m{ zz1*@6aL`rs;``xdXDp#$Va(3#5}5uN?iX^7t>i30F_xXM4dA0Vnj*?-2Db<@pD3G% zK0s9180)0h&Rm%P&5KJId07S-U^qbmWqWjD9+nZ@WTTn3<)g%!QV)TPcUJm#M#W-L z8QC~d^KKAYyIos+8k~}+&tb1@rg-7|VVof+@-BVNb?l09V5%#H_NJQ(yF5Wly&=#f zgIZt{hPAlmI)$N6*uPLaxt9f#BMpj`DD`^O;W28Cp4C@VYSa> zU3Jh1SJrNGTd`t&o_2cu{^AN`9br??R6{Ct>Y|&g%JvhA+{E#A9am)Dh3+<(8Jmjb z`GAODtsQL;e%P-GujYx+$?4Vf>T=WGz-oGL#O9+M|2#K@~blQ|FY8XnxxbF>&aM5fKOH-z$wG2cC`8(tz$3HgSb zR(!Gs6284bQ%K~iqToQY%VjdCxa(Uo=adeuTQ}Nkxm;+aV>#UoOP2o{a7MGzf;YkV z^%L#pv!A}vAK(4-jnp0RGA-JVGudwW?rVQO*n> z7RL1D^$u{M^AJYI1e1?AZ?B5?{1dq6;W7p5%y2<7c5T2(H?v(=oHbRDuKbJ=8v&(o&Ks$@V%GOGYX~Qd4^Y( z3y?%tYTmj!IU1f~A~{}rHF~;sG=92vhC9C3UK|e(uHr7XjhnZ8_v#GR%SW=HM_Z56 zgLcV}*Eixr*8Q(>}&Ca98 zU)|f^eDoCxezmuYl24%3`Q>3tty@ga;@*BvDPPQVWi&jxJ3gKFCmV`o(*k(L31+2Y_wSXS8M>D#MMd+1%*ZH!DuTF9f4 zWv+e(P+*&}DeTtB?@uxC-dcX~!3WL-KQIYX~R<#0N zLt0ayKJ9(vZ+pFh3Qu$(^jbDCN5o97^wtTj?<%PVt|+u@E7!dh?Nx(?*y4mgzY`MM zC=~OGGX4Dk-nt`PNqmTnKY)Arva^q}s2s(#;2vuDpnvsIk;4?F_-hePL7 zo9e%s&g>{WF&2AqoH^$R#>Ml&E53l2tDnndU%ealg-!K7|NQgb#tpC%JS0*M{AT5@ zTRG`d3a;Pk{ZVh@=FQdKryx?ObUjttC@TF?@7B$YkH8jH`5USHdIScgHWWIsoXk9V zBSmaj1X>mQcUg>Prrbt<#a(dhZ<3lN-DJr@n&=O^^?U^LOsTI~JaM;r@3f<5kr?>E;) z?sJt7M0WqMrythgR4KmQ^mgPrH}v0Rx7_?11kB455583s`BB<&hGb!V0TV{Bas{%U z-ae7hP%76qWI)pB6Zt#lr9gp_nbQywI5XUnCiE43Bv?C|9(;qE*FNbzm7kxMxLN}V z{nH14ARXCdWq|MvW?f&U2?Zm?aAz&_U0-_DKJ+IwC0rr|CM!H8)WaPIkv1%a(5vLG z`9;e$hODU3k$j*%XxInq6b#Q79K-YB@$vB5w`l3%6YUB)K5p8=p(wOo7TO495;VDu z55EQz<;V3~eC|h4vYxN>K3whnWv}(iI#l&vCJ?DiuCKN>v;Hkqb9+1T>EqN6M!|O0 z^JM|5#eq^CKN-!&^Vj4HQ4fl%({+3+#t=E+$ql4N0e_TZX_Q#U1)$9$o>Tn)(i8!b zBjCS5j)4Ca&-~wWieGxMY)ni%HEEUb z#}ez{$a9Kpz+h;g7PkQ6t=hSTD zt5<#cW~l;cWAc0XMzZ`k-@9}aMR?JC57L11Hexz@;iAxuM$34E8tZCV5)y5^OG$pz zq9aAeWc7#tH2a!j)8N*jM`-Ol&gf$yuA;cptE>!R;nY5?V z;y6!<-VxII0PveP!1@3vCHL_z^z+9X#b*Z=n?ub(2lELWX(-?}5)t6Nx)I{(1gI&HRo>joOd3W_+>GSaSt>+Ob5MoILvntCvnvQJuAc;-j2rRTGQwf3c} z8u?ts&VA{6SM2`Bd<9^2^ZyNC6RxmuJZENES91k@>js=Hvt9VWu*r7k?k3FApMQD( zPk!;>;a88g|8!?}@9{5x^=E(nKMtQBAV%-`i}7#1IXa$9PkxIOV`nd4ef#>auB~re zzj5={haY|X!P<(7fi(VN^lfN4m(rG`Bx#31zBoNSncrSpdycyt2G8NVKYL2Q3BW$Z z9v5N(j@N#J;O-I4^XX*moN3ZtWQ6+Y%BZr<=#SM{SgHqW- z;`J%-ge8WXIMm^5Nw$~_b+d!htGeLM=on5U_}I{FsQ8Dy>#-!u6iwO#mL6z1wV_ow z2=MV!IQ5`w^1Fi|1NI?Hz&F9~ z03)_?;~L!<_B@nD>c_PllYT^5fI;@t}P4?E~_y8tnz%89f(n zeJ@d!@tSOt0u>uKbqr~U1rk63;Pi%%Z`qNoeD;}fZ}8DKU`EGp9Ipj=1I#5!^9P}~ zgH;UZ)(tE&m2AnlF2=Ne4Tl>^wlu7Qs_W_>$oP0W>a8RU$Pi82Dgp^NX{k?pQ*rF6 z7VYah$Bc>ecru*5Ms^>G7DY1s(06`* z<*GRsm1U+e>#q`9e1*K`Db*Vr&JV^EYMkSnhn z+C<}>mUv<0pp3B`>+(`|LKyUn=&68l9)AdrgYldSy07zG>Hs?n(ulve z4rmiy4z-OL>FD5; zsZb}8LUN~O?i$X2GEX)ynm^La!W7+a#P zB-F7D5~>g!+kip=Y)BQG&SFyx_&*HcR_y7VAb67w>7{7JnL=;K4&|{se|Uy_fciN7 zbao8Z0ne=VKKmR|b9g4-;6+YD4aXv`**%08b9TzTpOtGXScO<{u>orINFX2HMH6#J zHfd9R@-^!p_BJHqKJ48z@N1fvd*?i$N$3y&Hp4+_IqEbdru@7V=7#CvA^hOkfwP(YWWI9xX$-JhH`kfPrF4eYax;akE#eKCwzfp1VD zDv>BcrOph!C80SxefE*@k{ThAGBtDVA@ExZC*g9dU?kEk#1+;vYhytR{Z+fjn6irX zj}4*}zj6R|CqC|Fr7*yMu8d)G{tLL^i62cu2oQPhj|Yxk_dpIT9r**WV#L2l8ZgfyzYlVsG| z8jg1LPKV!M0~K|_GB|D`=k^exIDN%xicy@|(g-%jME>Rs!2?*Nj%GN=BvUV!tpH8! zIGih%L(G6-gi8q}s6bEe*~kz?fQ?tgLtxO5G*Q7lJq?Mo^5|4sgX$v6u4=x?d|DCj zhp>Qn6k37f!NuW`gfv*dgEV}M6+1^J;RtNW^oMpBne(z}w%R=O5-nz0QpQRu=mWNI zfU3#`UPXP_@IZgsW-wEzQ%apd%|(7v_<}r`{84{|@8EXr$)~LgP9UMFb6FSUR+gD> zF@VK-Tz5+VOQ<&_mR<*;LxpGcuX~sE_l6&DvXO*+a#fUq4ef#38aBg-*y~&G(d4sH zE6hvHTCPxu;MkKGFlww|UQm)~cN^i;d9ZVem=o$szsH^mu%!Y4?ylevxA`TtKVOrT z>nV;`9#=;wU3@4<(iNo0QH5_=8jp5{m zO)oG4%uB_|r+zzRE*d;=pgqUot~aLdpJhokID1$ge^kWrbzKBL@@x#3G({> zlm{K?O9T7)QqK{bRMm%jpIK!yej?GF_#Ut(lbb;$mJzuVpYnq0w!OC(7SBFyh2 z8fp3*yA2YxQJvm>F*^8W(;~HBGBt`HAtL2CS0g6RoFnr)XQwZ|L|iN59E-~ti&789 zlW$r}k-j)#92!=TWkh2hak-rQYxX6cHdb|kza^@iux=9g$1@%~?0ZwG1w9Cb^UC@q z9iVP&KyE{9yyFVvJNksUDDY6^{9ym+>Ozeum}s3spXzBL{Z# z^e~wdY%6GT=sYZ0;4y*Xn;yMXZ^;``YAmVS-uuI}W5ib~*I*C8(KWt-qS65Na01rG zUL$}EJZ-MUcTc%$~S4&^O5-H3@qhSAy=JC<0a0vrvxq;i~w1k}g0lWtMqi;t=K2g5` z0H(4^hDzGGifXDy;Rc7}Iq!j`1 z2%&gEc$9_32KJ?Gx8tE7dR$fpayWfF8SaBac}#mkZ?RZMf9_xZ(6n?lPy4Ld6CQ z%0W7lUKbsL(BMqIJh!91>9?{A)%z{mvCwRAm1B7TZM60mlQnUALy2H@^BP-u1v~+d z6?10Zj_h0~yUZ-yTas;=&ytA6=}frnb?gNRZT`|P8Q7$Pbb1aO{Pip?=0Y(~FEAj? z3$f73k7`Dcv198QpQ)Fcp>6d`iYEou4OnW@v~8Za?1jx;i;MzCUP7G!-%uutm2E={ zcJfK!rN}bjbyYPpPbjm}|AN-$a*FQ)YA^8Ek}9uD%h5z?YBq_Az`0TCH2J%w!*dkM z4<+Xn+TTL5&m+k>LftCT#+8*yY?rU(J5uRU0*>gu0P{8sf5fKHkAay2dC-osJ7WdM z?`<6q`(1n*DY*mu{eHJ4PJ1gA;gMM7;#qd^7I{!y(2`u6m6q)$A1oN1`U~fU8XFnn7~&059BHn!Y|%XUZ0DA5Kj2*iw?2T zxvK-~-6u?$RU_T}LyZootX8tPIvr15PGS3Edl}AZY&XGW^?ZWo(`h2fO_C%aGj$RB z?||Lb9J*lgA?sPyFR*j;6oz+Sc#6I+AA_=5HpanksZ5yVl>>}qu{35~B(jw zYyn+%w1oB0%ndA9z6Gu z7k*f<3qv;GfMvz!N7JXnBTfIs1uDe;=iwFo>@0@RFG+q`jpu0b zSAy_O#&mz{Kt_T!=ppwtm9(3Wj-JI$F>Nyt(Up{q%k9)+O0{okEd&K2OvjM(J4~S5 zz}RH?a*WI`m|LN>N>rs!gH$~S+!#08g>>qZE~`5&nhpDx!He1GnMwt42T=laq_3rj zUNIh$)i0Ql3HhN0j}cEVS?IW$Opx&*1H&hcCfI|_VD%w8cDh?A%_TOtT@5;YU=w1o zr^Ur>98oTZDBoEy`U>k7|LoxdDiNRefaVourQJk;69~dIcPpT~%$8-*{wkZ!+EH)r!r%w@m6p&-)&-|_gr zY#5;>7BnmIGdR~mMTJDb6K1C#%_ja`5(MH&0b`5FZA?uCm_X+v9EyU|*3j?X3JcJR(WUewa12V!@K&%-!)<9E5wljd}1(Ny>qeyfUxMtVz zN!SnZh;=%vEG*2$_ zXRZoSiAn+9-u^Q`k@THFeW+J#JrLxNaG!3`+5jxR#SF^+oplh9z);}Z!Y;7(7zu_P z-Tb5vcM;XFJN_%ElLQGqI4q`m%YK4{Q4P`}ZWgdOwjv5`)ngCEaGZJ624Io#v0bZH z4=sEm=mCPZk`^<>lCW2HAT875zyVM>vPwt;&XFBHZk>$zUg|-GbCi#H2uWT@T!{vQ zV9wx@uEfB>?Dfg%RC23G@3ym+8njA=-t^jHjoG4LMCM^0-6XNwCS}j80(ddg1Pf26 zo^0Y-5Crq6qy-~FB4B=`$70W27ZrC$vh*|$F|2>Zk7DQXS36s~j~@K;&fN!FnpP6Y zQ0{H*0$ERZhxW}Ya+Nmj#KO~crnXS$JDP#2%@^6zra&6#7Y;oF=l8IPnxJbgW>($d zUz-8iS{D>KGg#`cYRGMkWK?;<9u_Fr!6$F0SD*H7j&yYrgCT2>Xqh-yF}fh$iOyW$ zJHuC760v}G6_p%(7p|Qdt(PZ^xm8BGj!hIq3u5vCFU!C4je%zN)V1Ah{)4>|L3*1p zbzWol?(ZVA%~xBSdt3M91~6XV9osY;Of1;FGz)oD10)$%Gv*Ng;>69St{ra#FNr5A zB@4#v24?WhLB|1RAKc|Dl9v7QxsH91n)ch)%Ju{^z^1ZrPQn&{8W=M{Hve*?xi0C=D)`?|My%BKmC_W=3@Bm?`vLzpZw(S zfBLV>Tns#NL~H7ZlxOVhQzj1^0$`w<`=p9yMi1>u6tWT%6r7C2=dDOqZ8W186V1@NtDDg!`)EGCQLgJoT68J zu#&|r9TO%plYl_76NcQPWwuj8@^H%IRSvWclT|oStKv1k!U|nNreBS40m@6{Hbah0 z2JkAKjMIgUk8wx<)aLFfM}@l`#&f_aO#Kv@s&&=`|IbIGaGsb)iPaE?g|24$Z{}+V z{lebf+WN-&4Y2}&YTALe<$?QpAtrLe5kNuQj_~)r5wg4;!NnJLEyTq}nSx^#?mw=~ zBqV%3-etqLq95Aj zhnqAWlI91^M2~AKepf&q(w%tMrvaufKAqCD;}r*71jMT%)W|TTS`@TCDZ2E#ZPa71 zhIM-p%OLolE`mm67;M8Y@hM+aV@X+MI8~^UF=jz(r=F^IK@GK zT=MP9&=qipJYY!*cUac_GLP+RYT{ZIM!V1ti);4Fi2w zNHuM!WKa=@rWfGSvu@?H;+J35pz>$kja6$>P&J<48{^s+xo+=`5T(14R46n`e((+e z1Q^gjQTRbwsc9UC@op-`Y{Lh#`vVdr+Aib=r z=?-YPpqmL?J5@t!#hFmYEBt&q{nNA2?Dej!Q9V1ee)r)eWH3kqUH}`OX#M0KB(d-z zqde4u;AhR)Xo(18us1SJG7cL$p*?Dh zWvu6f2m`=|i1@Ak3bUbLx5<*&h1pMeNYC{IB)EyK<11xD=MMcsF}oa*URI1>$lfrQ zozqxfkRX@IujG}&S8EbTj+hUP9ap0eVX(k47Pi-}^Ui0_%EO+jfdovWai5Y|(16P503Tz`$z3); z|0Xe+IJ|7c!s_piTh8^2z1IAN8JK3*rd&6QCA(HADdj6B^L*CJ-ISVB>lSO$qPbFQ z``I6>6>!qcsC6`rd-NI?K-&OFp@@jgX8Bjea52tM3z6zGWsyz20f~(HQ~E@Y%WT2ZA;Bv?Rcy%@f4k1GBvQJ^+lDdY=S{<2PGM zbM(UiQ>D*R`~nM|=OZ%X;iak^GJjiR-knc0hIgOU%ju-80gum+j`L*iuiN!Mj}|4x zZ(WMUuT)=Q9I29lTxXamOP!Ps5@zC|Mf2p=Qk_OXb+HUf)rNq2u?;Z2nn zF@{T4DLcjeGpd4B^q~qdEa05&nV)+rdDp@?63z&dU>uvvEsZpWK2=> zQMLvf#4iSr99it#^`@(aM5X}QKx#xSUBg~Yu09J(u?~8hc7z)hl%LLWByi-5z8_NT zHPTviPAt-?8ap=Zlw$(iVmw9&`TumXX=`Wf1kbTe>{PILs;r8n*-TI`S1xFD;HC(* zVGIyfH4tPcnyepRdgF6;mZ*sWu}mkg7?G7Rh3tX~(4sYc8d6@>U-5f;ZS)EtSEV+3 zK%r_{MwyqZxoeC;yM71Ob_-w(t(pfO#9-kCxiXzT#Dyee&*NLCgG&-t7k7s>*8 zFmqxx4G=Kq>MLB{Mz+5jOeeI>Q@dB`MS{Ru`DXqkR=H8=*-M@q5$- z4iyVHWcZcHrSJSXv_8njCChL^NSY-LEf_}5!x4il=jmH)b{!qI6;#0wt-0X0yy_Nw z7QUF^H*~}It z8q1b~;gq2f>2kNh{*G;%Z(~H5K}Q+XbPw5g*uO^TI+)6Fwah#xbgE~$^XIsFhBJ!A z>22jP)=QR`a`f%NNRHUz=!;lSejQa$u9DO}BgAE%BAUXmYO0e;k^h%wgRRW(N2^9P zViox2ha9yeIe?8V;u7O7(Y+d~9+^naBtm<^09=fe2;yg)7dIK#3^8kn<+YzhnAdpDIQK2_nm8yti;xaAgaI20G7gRg2%#ueI#CFONk^E-1rSdsx$4X&fw z9*!kLjdgP8=xE2Zw^c`MDFp8r|IAO0#;5(2znJ~SM4d>n9j8LO77u-SJZj7$rVT-g zad{NZ=?S_8FsNzo_V&u^fLBoTzZE;+TZ2mYC?$`0B5mM?FGQ7O5n5%sCH=B4i)6L= zPR|gCEuCGu#8@ZZ<#MDUPjdgv24bEb;Fp{O!r# zt^UoA|NDQq)Yq7&|Knf%-(SA|KmX_7V;^;2U%qQ!zrFdN|K`Vk@JC&JF%FG?7|S(8 zU%&ImmoD*tkLCK=zdL_i7}X#AE&7prb$WO;f1o|s(uK?huPeccX&JvePKM?=2}aG8+DR3t^rSI zfRg=yW8)1p3C#w5GngUv3qt^xoG`)}&M~*FWC{mx_{_g?u}iVDuJx@SDXVOq865Yd zJ7)2D0`x0DzYp}-@ZIUjtGw7XM8-8?%= z*!dH|!1#~?%%22;!V8lH2O8|etrhNnZ=9m)Xx~T9zKyp?vPOi{-u;JLj~?&sDu!%w z=JRlq~aP#bHn%q zi8FTXNoC$h3$zeCs6m9zN$lcPa+iN4?yBt&?!0rZRYuj;DRDw-bLV5}fkmH`P^>E1 zt71MF6kU2a-kkJi+XgPuL=gYCT@bTLn44Y?s z93mZF@PwQAQ*p+Ekb#gb7X1D4w?PL zj^W&u2Od%rGTAzx5J-;$(vF2zjlq=zY}=Cf zr#_FBNVc8p}*j0Ei2QpsD>pMJ~=G2#hZ99zsh>*aaRHsbkY# z+cvo!*YUVAxF^|D#(u(uY)VFOlXOTIKGn$0!rOJikXWycjMkQ!mcsJ784jZPvNfsm}*d`Rf<|?KO9Y$}8TMgiLV5FRQd_$mI(V^(=lJ^S!qWH*IsnDtWGZ>ie0{@nP zm;~sgiD;3-Gdqf)Q6x4y@W|>|{5Kg&y(X7>ud%0bes?iIupYJ>3&rpqkhjLT4^+^@ z`~3pKeJIu=XC&x6987@PQy$h=F4^IorUu(Ff50G$owx`BIpCiaIIP($$RLvR)cM>A((xs3b623tXY+SP|&q+ly;j*Zt z6h}^TB~)%A$ynFkR6-)465gCGV>HDuUrbf?0P(8bd!yqt8ahh1WCd7alZ1e&j@Wfa zxT7dK$~|rkErr>;@=lc#bwG&r&si5^k4^k6J}sWB!8x!Dsc+(JNd+DaBvOu~WnWR| z9e%#|ao*Kgy`@Q77{RQ;)RA^ALdx(#xD6pT!u6{y3gc^;O&qro&Iph1BbYJHV*FDQ z2uKuDMBd6!V-o@IE!wEHwHhlCO0^&aiYTzz#Nelf(rW=Z;v#pDn+kR=Wn?;thSfd5FD3TK+VSOLu|S1zFEcDHrHvvTJA8(R_XK%wat2K+qG$^ zFDz5G>zRJ#;qZtVATZH6Y-;Ipn+a>G*-IWG7aIeql_bo^l^^5R1D~m%z(I48ii)k! z4ZB{B!{f-d9*ZxrhRc=T*svNy5Di=wPbO-|dfy@HQpwbPn4UqaVsoLRlQdusj4S^L ztTw~tU<1!-K!|VMqV18TvtjvbQ*-HyMx_tM<#lB#Tcc0P*lOMRJ5|J10m27A*VBS1uzcyUVgk zLi~k~f(lBS)MB6FcHboBrLJa4f}rX^=GkkxL$#&!+a?zD;tM)=9?tDKJQVS4ce#s_ zZ(Y@BPXT7wb=N6}N((GKB2;WG>yX?_@NSh&6_&k^3Prf4$*55<6T?I}v1-HuB_UBu zf~jH|AB#z)f+ffpp&+%Dke;8Dv(~0Nr7X&Vq{4#usr8LOdGu_sm0|P)v@|9dRh`H* zB`FB}DK8skliKm-9ikRz34g6H$@2<$0pky^9l1D zW$Cq*PluAivEEHjTP}nd8}u3|fhKI}l{V_cWo?V%1pyK%f}PP3C)1-NuuppD2@sK- zWp?@%lP!GK+w*KDe4Y>f?8R(bYbhjfeAsg;h)TN2i0KY&Gv_WxTUf^%j7TW-Hd#?n zv5XU{Qm812RTqZQq><@&m`T`igzBIm0q(GdUtE>src%MK7tBCUL7R*L+jYVP8MUqj z)^}4BH02#ceT|7q1ZsWOh+sK;?T3tS|{O%y*-6?T!@nBO-$P#vqqe#^3T*^iR zRVfuH_>-4qm3g9&?ruKCoepKLD0+Pp4{bEXBPAUS0WjDI#>A7p^j}#FdSa4SbEre# ztWV{-IF}|Cb$yqO={8yJ*)$OG3G$F0Cdk`pW73v2FW zlqpZ%SP8RuNh>&B?zQA9sXZjoGB*$L@E9{GXuGna6d-J2V^OFr={HjzmS|baXEwl{ zGa0>BAc^ELANFD3+wk~n(&UrSS0`Q4AYoO=5VfQSk`T_SZa#Dx>aH|J)=x1~am11t zR?VwJcx7xD35Z}$v)L@wF(MNb+PEm=Q$Alg+?~f>7Ewn9q0p!xlAv%-j@eYf-xgt% zw2AsNfK>Vg+*SU{EgpmrphZP(>&tpx5WeQ#p%_e!?s^bgg9=SE%jt0T+IGV0IVgY3 zOjp&PPPpd|2$LL?xOMDKC%>9M;_iGHIoNzbyK+=AHavRS-L#%bM~T?rqSk$fI{?0@ zeK}h-dO0YLFp+l__2H|*gqlS?Y;oy`z4q=AkawE~S*B&-z9no0p_yvtgtN|-Zc=4p zHIKWnK@7J9FNs*Y8@wU<&;({zq?&BCOK~*nx1QF6V|QugfwHZ~8bpYI9j1y_+c}=+ z>)X)=2F8rs8z1#+ffXH1R43uHFShkx`5+52Iw_1Noy#G?GRbBNLmFg0iiA~$m$iF* z?Ts{0m`NZ_nYM1z(H`;8f?OVeQ+p0qwJN?`;XtXlVN)tj9dXol5#E6`nYbdIve|H~ z*!l@bDHqS!rm~Eb`w!>OnZVmhniA$7%P<9!7$w@+Rnd*eD`0tLD;;=|y@6Ns1bD}| zMIIUt10la4S0W+TNvF(ek*HqHf8Q?!0C4I^DB6)cfu^Z9 zX(L~%&Q5h^tkI#ec52cU(gGf@D3UobHPS-Hh6-uX!b_5}Oa0cT%1jfQDF-K4=ee?M zSDeSEab#`k&J$&}sJq+=*Kag{E6EGrt6C?%0m(-o5oXA8K7iyhjF=>d*W3Q?zja6s6%F>?0U=Bc1vnfhH zKhwJx-vx~jR-aib#Io=xx2(=`*|g+ZtbQ(#Iig|}JTC41q&d^N{wNShO;oHd9J4e8 z7TE4;C*TH{tfl&Ge49GET`c+-56%4fem$3QC|e~z>7N4iqB8Ru-IseTowh4pxrS^w zE%R^v;eDf$DpE zjB0%Y@T3w=B)j##yz(8PJ8xtFt#_z#`vf+8-dXL!y=4?euY*g@dt-8A;$wk(geFJRXoKu5Y$$+3$J+E%2? zNwjhc5V6w2HHSw$b4XY^;qSyI3+v5B$H)txs-{XJ``$;|FN`XqZS~bv zD{N~j%XW{8H+mgicvMBLg=5l^7aLKdPBk8m32wsv1UuADIok^njO_bIcx@P@Em*cn zyGqAp>ZSuQtg3_Tt`@%6z3QiPJ1$x%`UbN}$5(nUheu~TYkPXsI_|cDH8dy_L3ztI z3;6ci`!#lUNNvuW;n3FTP!bbR3F(mBBS@_t1_y6kD2{w7IK(ib?z)E!>%nCD3bQ)4 zPfjfWM0q`Og30}TM1aqp@uF>q3G%E0Odh&Y=g)|}szt%316z4BW~CBrd&K}CjR&z8 zY4_h(nx`+SscBbP5&_tvTV(RFTP9#hn~IS6uF*#+DV;q$ppY+aU#T-2zM^iTLZ&g& zjXp@2C@~SiY^Pkd1{@OKp-eG4txOQY`MiE^GSVV(0Fd1J{?ou2&UfZ$=pKs-UOgQ5 z!-W8&g1?IXMJ@@m@JS)bMl*+|$(_s%@Vl2TUE;s|!yExm-zi7H*}v(^5in|zgtp;x z7@Y_+rniwePnOrh-KZu^%-rR?sGO@DuZV+%N>e3U6TYzyZsc+^PvbPT7Mmo#d+G+s zz0tEFF0-F=-}ep11~wFjDAR*)z8D>RgKIFcKJhCncpvI)GCI9_c7n()yG4;PDR3Jc zvxv zX^(hQ(Id@OB$pV?wYj8)26`8bp*6J#1Mx|EsN==1)S+Y`;I2g2eC=UvP9~=`$&*O6 zfW}4EAGylYqT@(!-#B8RmM7oYNZE;af+od)t56yvU%qT78Mp=6zesAIg{@O@F9AuV zA3O@1;J$rwpM(nVJ5EMeUY@xhQ`SCB^N;M-d(FV%sDQV0Yk2UY-#5zx>5#&~Hb4of zdV-hC5RsLj%vpw3EyHN1@)2j9YQNg?*#^AT7 zJ{fj;^b+=MI)iNGQ4q$1O}eaqoufvR;a0qY(=CA|NRN>-ctSEGwR;% z8NGEIz_=RMfR2zf&R9i1G1ggs@mAR(W`lr2eTB}&iz232?XU{BSY}a{h)RORur9wd z7$C;(2QP;6`rN!EkQu|*d4`l?m^xQ@5!zL~<{ArVH8Xtd6v50xeU-Av4{`CADglb& zt052uW%u)N6E_k~33QBrvtxL-uR##O<)2=zPg3yXB8(Bv!S0^(qWKFSZ(saJ$_ z=8v*bOC;yi3gFCv(MXl>rhdM<#}o^xDy50^vOq+22E~?O9)`#ELz*#PM12-U8c!G^ zRC2ab4^jq4kLH3UKZNeM0tk=oz4Q2@T}tlkLX0,{}G-32lv%)E&utNna34mZO zgwxBHF9#Tx0y!d#2{w40x&on%8{s&I<3*fq0$CFcMTq!e`b|WDHYIuq?SMDK6fR>W zrzIv?CHs*%5wOGixWyeTTeS&67dgPjmKk+=HYexn!9wiCsN=dJ@OtU69Fo{rcy28> zo1jW)NUID}#+r5KwlYGpQ*QgI&W-j{gSQ1K272=JR$EndSJ3-%K9Okso;sBAWk(ff zmrUHoIg6+b%vdlixI2K$kndKNo2`Uty1|UA`6uNRD!h@k;n%?Ocijtx!iX$fskkJZ z-qO2g%opM*;VaiDxRaLB;$?{4kPM@gD;teD+mu_AH;;yMnk;UiQGwucV~`&=hmK~C z;a9b&an`)I^~IgX5BB!&Jox#eo%?%VK19ux;b<;%K`ii#tv`RT_0`XD6(^Dd+`L5r zjh`Rl>S9(sczV#NdiTMj&0nO->r&UDqiHwB_Wfvce1f%!hR1ofELl*g4z}o#;n8!< zRi`iDN8nj^0!j^IUwH+)ejpf`Kd2F`2nVNGd?gF8uIdz1v{yhe9a2@D>^aIOM!CTArnVc`sVNJeSDrJ3V1C|g_%O2|IRlfN^r&9Kj+Q+$&ZrWP&iV`d`p=pqg7wgMd zhgfHm>S2#xj6+1Xo5MY^$Q2??iH%e|vR#W8J}wU>&J2YMV2!z)%HpX?jexz=@1lgV zope#WM`^92ZyoVA3K7-~8^GH8=|ba2PjT_;1UKcvA)u-DiUB){bPJTr?UUK`<@gYW zv?38+*|D6(0>bczD|cLU`&xW|si@p%Z0519t`M3IPu>Bv6Jz1geHyFusL~y;2FCfr@$uO)e*GFP|C-I~ z#mln%b5{h1q#e(DBd7u_kA{9ZHDyRV6SrLY~^?>tHxR&?`7gvLQ zh;v*9?i_%``R3PQMA@CKU7v>E7c!Th--FD)XMRb$SeFwf4s^lFFsH+|MjR`NG7nOP zVld7&V!CLV0bb{FO--|++MdR2(FFz}h=V_eix+sclcQIKh)ltLY`ZJ>rkYdH6_jUB zn)@tHA4pIs`3lTx4HL_NZlPN@?%`_5!%@H1EV-{$-%STh+0@P7qb3MlMTC$$QfPO; zVZ%1jf)U6P{M>7@ohYjOL-J&vNWJA(m^>OYs1ws@>(dRfh>f@@(|eYSR%0YKk~qZXt@urG zs;m?A`OguZHskqp+0LxiB3f&`dZa;>eP}d%a^>Y3J0YKvJfW-Bb@FNt z7~rMp%-Eyy>6J|l=elY#ODE$E%$rrOjQ@Z1KsBP098=ryyN z*L)GZ1a3%C=fWzb`qH`q;C^m|)|m@fvOrgRYdz1)Mg8G<`pa`96));7q+j4pbIb|Q z=?=LQ1#maQh~#Qgi_68rF%e&B+@Q4VfWX1?3H3h6y@@c&$>?ZPWHo6tnV;bG65o37 zITD`W(wZR76}eO)yI^xCvO#U2gY#%O+%R6in#j*p0f> zsHOF-IvY3dZW{DOS--l?)aw{WSCHG1t5obLqK@zfL8D#Rm9oQChg|NmN za?e;fn!Fs(80Ch%nkYS_O1+A`E+9{ALtqa&^$@O-3yqnfUTM^wgEY*mHfdRv7|W&^ zoerd{oFsSkD8GFVde;ls7upieHNsKY2UYUiN#<^gX>(pH=nzbKA+t()A0vPo+zz?x zu1on;iB!N9IhZn_>ib%4-5nYmnXyrTJC|ptCz8Tk_Du3T=oO<8_JIMh5nd(^jLrRW z3=>NYEkuY6`PkQvs^SJ+TlwzsTBU3h(;Lv2Oik$Y8WJurACvfR*4c7^R!m+oJ}W+ zpvYKi%a~c#hlhik-BDwz>h-p)qXX_-vYU=Ai~qYTcL-O+=MAicT;4JBUZqW zZN2)q-t-u_V-tK^R~RF5i>E>0oP5H!cWHzYxY0d@p3|ew=t7w$^>7CfC&PXyl!W4Y zB%gQFO1|88ux5cTS z+t~}66LaGS;ylA_;5=VrMI&e61h_b#<*^ePhACBizL+_sv?aC?FA42bPDgK&g+zN- z$Yax)bFIzY@+szXN=u&cOD|fgTU{33McmRiS-2J~j}{TiaMsOnp|gMj0%TP;1>Laj zyY?VpPjC-o&9shfL1;C=kC3B3-rwJTytB2xkJz5(-h^#PxHk2i~3Tc2wH2Weg zEici2UL2;tgaUG`Ds;h}Duo&{Ds9=_W(xSWE~wDFT1}m8do``#rO(Hf9ii~BF|aYr zvWJ>Tl%s-AG$jYAJEw>rk7*TK6 zw^$k6!Ku0jqmcW5$>{Vslu|1;(|HjbfIGp_)G}7jchkjuRz*(Dt}0TT-j>8sG`#7O z73|QCaG((0b1H3`;xA!%`)@kW`8zb^8#C~|gt^rx4pzWeR>CJ~7(V8fm4(74`Z>7A z4dT#|FGcEJ{C(Ml)+g9h_u@cc=j!aRao4wcDAHI*?La!P$r5@edAEt*W!+9%h{o{?)nb3VHFmGLFRSZ$dx*VLhZr;2e zHvX6EZGD4Sxry#JHg2TumaEG_HXvQDDrwQE3Vt}380+inH`dpK=VZD5);~grB>l#X zO#CIQ5!HNM3>h`h-rS+~ZS=N(5ZK-u(cC=l!GIFxI&149RbIcj+WYj=-YxJ~ITljlkr5cJC~HfivN?he1*MSN za|ZB_HN=LP-Ji&wt4zOXCfzUQauc^S{VF>(CfB=|=;cD;B7livcff0gAyjhRO(Aq} zqWt5|u?h+#Ax5~KtFFtrGqsU+;JV~8X)Jh;t9dOoV#!CAn;aYSMr!89qB*uf_4Ac$ zqPFx<5F4IG=;aMRH!{b99S3nmMAR0V<2HDjLHK9-tSUw@sS~vf%)x7g`Kv1d7Sg7C zksuKk!FHGW!kAi)$^l(+$H8rHTVP0`eTCU!Vd*P9FrUHB{>-*?8(pv4-TiX^!9HU8 zuv%WHo`GeH=%@5sog^rX~t(qQ$7Bd|}q)u~1CWz$TWZ?M}gLSn$U%DX=~ zy}r@+itl?Ln4Y`@ZN^jt?`Z^u`O&7OcY&ekfmm?dEDeP2hEy=fA!S7d*#gQ4vhwl9 z#`WtTZd|*5>!X`DKK$_3=(=lQ8Lu{!hI^&=aEN@Q&yJ=@7{~?$Hj>2mSK4Y3NzyrH zHe8oM7APW@yiPIhE4}}Zy?2k1^SbT?DcZ4P+MJPBiN$|1`NVkAMTuSA%{N=7Ws0I6 zmMGF>%kqFx+SOfOvrFo(YFAbBAx4RU%xt_su!xb_0XB;uGmG6k95{bucN|atSiqYs z1``Cc*vafB$~y4G@MgV(#Y})qFu-E|*x&D*d+y_V)T7y?D2q)ryXyPy^W5{g=bm%! zk%eO?kDWSt;@C;4l4|XKNZNRzY@)F^1$q)_ESx%a?8M1q$L3ESJvo2+`0*oUa1;i4 z58-j_$mwIJPn4CaJo5{rZ=_SfZsm3ER7$xEf}gH`1S zSiPeh0sr(`U5)@-DjVbInI22-sky_M3UN);zu&^1i1uA&NFVhY{6vrjznQA{WZ&wj z)i_x#i5OhRjVNN4W?9899Weo`>*^P7VovCUc>-X7TlCag+q_5T^!RgCTR1vR3qcX* z7(lJs#<6MIh;sWxO&p)5iI7(cAufh?SuW+Z+?IL$~-O*RrJsL8xX!zAKmlf&fnWFtvr%Z?WZ@~>ub zj?B+bHjrIfoKYiLm~14wv^b+ik}whBLPehT>_)G}o#Y*&Ny6bAyKAn z{&e8F9!smcPncI__q)P2syk2EUTx=hj*Zp5CoHqJ_q(<337@pygH1vfo18mQ?Z+{N z$=5w$j@G^Jlo}@tEO*S1ssW#{!@9oj(yA{cEU>QgyR_&F3D>jE71l=JcW=!X5>DrJ zgh*#hG=O+V;F*YE$Ovw_kgzk~N1{nYd~9cZBs|Oa;jO*Y5$?E;gf;m-e01Ed^pP+i z--pJcvjhIz@kA0n<2#XNcV98A*io3ETSz!g{Xp)V?qzPHMw0NK`jOl@6Bsv=BMCFA zAIUDkq;kJ$>vJUGP4#2hC8&%ZOEsq|A?+@~1r~=ojrmA5KP!!7m!MKH60=8?&Z}P0 zNG0|8nZIf7KjmY})U@hsmZjqr$7;wEp#Sm@bx7Ewqf;C8);wybNYU|@t41SW)mf9; zwX`~IoKj9r+;RdW#;nvp?Fz>>KpLOyv6}`%fYoFhId|#lSrK5RVz_|3&>B6bkSMUj zTVvG&O#Qx6V|8?fq(^ATnV7=?ePBmv@#&wddQq-sV1TkKg}hUp4WzWXe=y4}&!n|YAd@Iikbt(M8VT2W>F{`bg>lo(2;|Q!Gt~{hih7a;rD0n_Z zn|C-($0)Zo&#|7Ix?;FSJ96<5@#fByPPvmpvysC0U;(x?+a^^z!cp6H34?t}2k!;E z(@wPsrBY7J4<*UfQazR<3wC0bo|)NbbpYC;A3^O{ku52Pi`UtXj2~;^Aii$2!D}rp z0WR#QQQ$S{aF5mu_vrZH`a`oZPH{Y%JnaD&j~V=WCu2TdGv?zJVUbaoZ#7fx3b>S(0D(>d8; zx92;fh@#B?yW5*9dEc{tVr6<{4~DN|O?bceK8vZ^_$KInK7iOth#3#t?3nNs(M$}u z#c)=Xz|)o1K266Q-!BKK&*1`-9)MYgYB@9Un0Do%*H;DHl(6rd+=o;9V8IxAv4OgO!opZ!OG2moS6kI z16t2ksZC=4t43Z^f{MD2^qH~2gd*wyQ|3}ppH(n1-e2GE(IY2MjB)8Fww9Fw^gI$( zjZfEi?LC{u_rDM{PlFBmABmx^e}|un3h5fwJBZby=0Z6B17czb6X2yANWvpWVdMaL z{5G;#Massk(p`d=Ocg?N&4Rk7ac-QMZXUQZ2w_jge)-<*vILtwGZRn2`uUm~VNj1b zv?83XOic;s*j6IO2ph8!0Jk%`)w=CzZTiuM_!8HXNDAvIKxd`b<0Wxka#oGpsjbLw zv2gl0vREvfHjz=)cCk!rzg`d356AO6k7#9#4hu0w;n4BgN1?Ty$ z3Szt(MM57(j?ANvBS(x}((x7eq;^sqjFae9gQ=3|<43e0BPwfkB;f+*tR7K`b(U~q z3QsiwIb0+X+`rm^ohHV5uoMT7PAMAf@3OkE^mWM+}(xROA;lqcABjd1CNYT?5N~hKe;vP zE?J?B!2%Z)FKhWhqU^hB({FQK#T{-aUF}g@x5&=$9^=CtL&91zaNy&mI zN6@(^)>%20D$O(qd#9thqn<=(oGLcMgnc{}QAnamlyr~V4mG?Qu?w2+RHODCkJ4Y< zl%T#ai9s?!JcG_vJw=%t7r=oy)wm5SU5m9+xu80`Y80;=NNu%N!>{6l#*?lCWY#AKe!%y1z#l5uvB5i|+4H zKEgQ#vLp}r(Vt)07Y3=@XMe;OXL>@?`ORKeZUfewt8ew>Ep*gNyxFI~(oQ zR==(@MRDs3P_vIVrb4$wDXn8&M|GNoF?mtkc+8i^Ij;XKC##RcHh?21>le5B>2-j( z%7KZK-TA9~D#>Lct(vzcogEHwD;g3#IRHso{*4u6wLz+VxqVOJYVP_5M`_(yop{S1 z#Fc;2)IoK7)rW&^U0Os%ve7A!Q}-4C3&u_g0FI1(i@dh z2!^@pU0*C1&D!PEGG}4mvcCgJawL47XCqPu^bw>Nk)H zX7g~C-|P%{--0e2r^V;c^{?FOBDXGCR~unVKr<^@d}mAU=uE1UT!9apTeJ`RivB5~ zL*}KJ&l+-nBZfhdBrQnD6lfZ2VD;lN_DnrSSdMMl@O{Z9*w~f458M$&+iF$3ub4$B zB{%3GXHdDmypieXB?7l)sUuK?M#5048uD)yHX0auxxml>9E}i#Qzl3V*H0jKH=x(y z)ta7Fa|{Am7e49;)Mki8?eIh~s?}_6&L|+BPVNo+QVz)xIftRat?ueMyA=e9v3LV@ z^m;Sru^!iu=ZnVjF2Li8Egx3gk{CEyW6!wYinGXVzCQH~>xFhauI0^J7k1Wu+zQRl ztNo7N-sc8d1x0nhFGGi{3wUaCLkpUSis)=vTh3`>$*P9Qiqs(+ySYVPWcZ+Dt(} zNMVlAlmaZbrD6iiyE$9!E=-m~+x?kpFS>eRsxp5EB3ly$j-ip`D&rxWRv!)9yVPU# z94qmmgR3-(BaZb97}`_H*aiBj8iOlOBnm#}o<#c9g;uwP9GFcG{(3HQ z7$Vqj2$cHjt3i`>Vp}Bb8|9tzA^3IbO#LRLsg9yZ%;P-W13~wj|b^b!;HW z_u0PW_<19YQ&n8#kbqu`vqNn}AIcq!ys;PftTSeNL3ORu(rp3-Jv|ZgVV|=lF*4`qcF9Mb-70U0@_^q9y}uVmO&z?|Fh#)TCLbG>y9L z^OY{Wk13Z^iuL2SHOA%!*UVreE(QI<%l?mk&$3tZ^v&6xo`*R16NpwBGX{_2wT4>8 z7RuBKythY6MEsw>stw_^8fZg7Y6P_t0bZ3OpnXR<0{-Sl>v9C}X3r|sXdM&5#fP{o zr$R%5?M7z0V^v9NpG!3)ff|8Z0H-TvJSf!?-iP8VhFv7J_!z4Clb$G4M#b{H8DyA3 z(}^qttq{bW$)bZYx`Rq1cP3z_W%^@;i*aXVw%)Yjc%PG6yCp0V`v$wHXY@{~dAHei z&4|mks4$x~x!mjEV#MDk;PAMq)!4e=N|~ECaMclZ-M9%!EyREAky~j}zQ)0MTPfHPI&U5;cvnMp1-NGc4f?*&Ej~|LF)5JZs zVSbC5J(h#BL8KoUkV*0h%Msb@{13b-H13);q8Z1p{PIK#mSyKnWW{E|+er~PdjM;; z2j?Kk7rAFoH63CpUz}c;pFduFS}X5yLXg4?P`;o+p6hPp$;)t}Ow`C<;E~{~40-nc1v~h53BNsXIXvLwDVnXCtiVljZ!|i_8 zU{VGL%f$L9zQx8$zUEH~+Nx#@egVR6v9$HT0$_F;_WHL9Y@o0&#n-cwnZb1TT44sW ze&jA3!@EezQ@Xn$Di6Z0XLzA=QxeX_>urZXeBZP!krdQ5<7zohfU_0-)I?6#&W7Sq zSd>xZ?gecqP8JMTN8F(->@aRKV2gXlYY3Kc&z)Ga6|sy<<631Hb%z~fvDZ%2=xt4u z*1O6Q=m`N=rRx2}xF65Y5a=Oy`SKP=+)1a}0m&U#f!n+eXSg9%@32gOD;zHnO_m+Y zk0oE{Ejw{^`<^13{_ohlU%jR+JiEdDO#(YvXqJa}voR{ay~PO+%oIG-Sj7o4{y(QP zP&nCo)MBWEjm%05+4u`pCNQ?d!;7@le!iN+Y=ld+-PT+#WamE59$*f3jR5y>m^E&A z?rgQX!@-l~IXO+XG*_95BMLg%N`dYEpohy_Hd{!*rAVXnQq9LuFfzppP=awDx9RkI zEu4{p()4l}o(EjT!9AMnzCcS+f*gDbodtJ1n*A(1;Xy1}6NyR}&sNImh;Dp5+3YKy zbTiXBrO8V;tjrR_D7{5CI?TT@_mfwD;>PT2Pb@Z?k01Kv98S?9eJ+3tElByR3*HMe z#@Q;r&hknYvLY(ftr&WUt{#bT8NMEVqNe3rEoTOc2d%ocZba-*(co$z?B|<3?9{E5 zWYR2KT2-~9`0~bUSXSY{Pr43PC^D835#Vm_Z~{#AF<+=~_83ou4SL*b7KdCngy>|I z4Jb79ydgkCpXwln{%G1tJ9~C0t`jrh;kw6n2XghmNrp5LWMb?M6i1SIEMR@;(B=+n z;uUHr9w8I*E)f}!Iwa@QE~`kTjBd`MHokepHdlr^XuDJ|a*~#TB?o{_o}K!YbCd&t z;#jbo5=Y73URR|(PQ-D|_a!UjxI;k_;Hy(_goRCRsek$6WfLxCOMNtiNOqVwj#MAh z41$3p8ZzKS!4f@@F}mq;?W0#=#RY!0>?M|4P%@o_<6bZsqzf^$l8%R#&S|A?!Ki?x4&~0dEd9|V81wVQOOLRL-baNWb1@=j5RCrnvbnWASZ_!*zX9+AfzSy{qH<45+6jR#sc7n8Y&2MDLz7;iNri@8 zBgSoTh;^}RYAQ`WxK;xHACAcu&N1Q6c~bUfUqoN?1|N=l++*tFkX;QyNTVhub8XFzAgpi;@TFhUeUM>qIH!V11D`) zF$u>20z`L{#3F7Vk(gWdX2pnOQgaCQq}+Jxn7YisFfVX_;E5~XyfejUBrtR9<#D)* z>_)&vDKIR0|5l_fyX7jAVbe&buxxKZJ(DcJK0^*MB_XRqW0;mPSX<~4&bblEEW%a= zyM8ZWSQTCY)q=%USIOe_Pjp;pkVmiT$FYK!-gI=^0fz_{(JLqBnjBo?;+RH}!SAy- z+s|jEEqGbsEU&HmYE%z?z<$N7og4ku)>hue(xN$@4a*|SVHW($U@(Sx4|hHUmmLnF z7Mo>q`nJ+L>HOu(P*p1ALM(qJ=FKR$J&Jmv;}hq@BZdZtNvl3TFC+tu@ytG=7<&Y?arK4EEFW9K(|A& z?BEQPN12s(n8t${n(ko`qJ79T9NJ=LT#Fw36^^$`N77TlTTHv5k5Jm7edifz@NkL< z&~@ioLP-;)v!Rc})Rjv123Ro}R`O8gqEu}H8P3DKIhbboxVZQp66s#vSb{k}gSvHl z9@Z5@a)yx?K>Q`w$f%(6f44&JYbZb%xt9Vizr+xmJ?d)irF{)Gy~pk%Gri@_Ztq6J zjP=2!oIpsoR5lxr3AP;amy4qA0j}yw-oU+^%dP&k!iw+-76R(7ga9~_HI4vHt+xsz z(@U^7^Ume7DBaLjbfFvp(n}Vtu(7N2j^6YYPjgt)-kL2(-@5J$6Wmva17POHL4@z< zk&ZHJAD>V8N2g2Ah~py~t6qP`MnE|cngY4kRb3T~+0DQKSe=lpW!3sr=VDvi5OCuE zdfx%OOlnP}BdMIEq$y;Kim@{|7-NZc;2CYi39)3{+~`-mq^*Esx(>!NR(pk>?V}=w zyak8Hi{ee>E-|3ny-C)Hs18jfFEAwG8Y~OM`l5R^9(UT?t&I!84H`NAq89utP}zUx zd#*jtWhJWWwjh^mxYPF+!q=Nnj*E_8NQl}vYlZ45d!MJ$q&=u#wPSuT>L zai9=}DCET;wIt#n>X`e{LpQMHCpmKrXL4B>9yBdi|63NN%i}@`by4Lj@Q2-$(c!QQZG8FnN6p1KF z`?ipk7pjO&HY6?pND9!_3njcVLWl*TQvt_6A|9nvHgd)c2_T)3F&il6e87@s`%Cv$ z!ZzsM2-E~FA9KV^r(AtWRC%yUR zpwrPXE?P>Z3sWR~kf_;j^n5o_4p=FjiwxGuIxgyC(q>vFtg5^$a1V@SwYPPvfrW7G znDWVlVWychA_puk5`STeyCR1`?~xVp-^>-d3= zJ}KN~rjyRpU_*nx3y=1kMOk~y>;+Uk+VT$y%%MrUT2hHi>`b-}k);Cg0bsT}P8Hk< zzls-EUKcPkLJxKUn^nZ@I-c*@Tnel|NDFD(iHV|FHJIgso%aGoL(-WzvV|ToFtYjZ zz`;)ESllj#VhU3!fF{wYY3v= zoV$^)%x(7C+Z(NZW!eVr+KbH`;o<@8#peto zZos8kq9TG3u%E9jF`i#M4-pHsEQcHD1a&u?2u1I=V6}soA&*7mn7fK#k>h}m&RX@m zm8KXMrO~u6xr(*1Oi!`KGJVBIcd}aFN4v=^KB4u_;BvmUh>H&zjb&cT+gRqQ!|3Mo z`sUZ7DI5yD*yfp#w9mj;{=8*tK>f^FgD9=xxY^LPLRkKc}Bm|RY5xqUv2cJ3HM!tiV91&SDqaq3B$1ELfO*~NY7aLl|U>)T-ic)}x zUTx#IaU|4kQUY}5LTD*SEy0d{vXghH7rwooX->*oylt62ru2xfwF;WC0qW|FH0 zVFQ6VM;5l3qo)l?9LO#nW1#H16}#$2a5yUu<+az$Y-2P9OcgalB>`rCw%dM2yuhEW z5+AnwhM_bVhIKG>n+7r6p4yDH0nr|dTc!a|0c(92+tB+ga;2hGS;hDlllE9PPH}b_uPKVM>Bvcf!F6z_3s|#vEg1NJu6?WZ|ana16OZ5dteJ z#w0g#dJ|>*XXg&3N1{zF#=5@2y*>Sey_ARKMl?4Y-&=4d-XNfMudF2Nle!o22r2UKp|6H$`Nd)5}$UJ_Xu|DxB@b2 z4+g;jxsNDtikLAf0~wmSJwb~ZZX4b+ml3^!*q#@Vdm`TiSAr4_S4=eEb}LVhD)!{Q!j_LQpfB~V zJ>O#6eMJ35!+R!QYvJ^XZDZ~18?G|b$2Lr6+a^|fSSy5@m`N9@8*YPa{VQukUoy$_ zLD?7j0&!iYuFG!{kkZHst}Q3ZP}#P=arT})jpvu$bFvHlK9Hn+=lZv{hCM#@$JYF^ zmcud20g_ET8-3^dXRD+a3%WfTt{lkwYI`5BJY0dckX0@o)rG;eOH4F}w>G#-&f;{0 zEfpVXK^?W_2>6AE_Q=m~9r)0m9616u@SVSZ2T#BFk&o?p=rbSsjF#~KyBgv9N5ApT z5C3le*q=y_fCC5q)kDwk+4ImtKe+GK*M9z^zxi9=eV%C7TYUp*;|y!#Sr9|zt;b)E z^X7VgtGB`1<|-?F;rYv#^tCI@fGePE+%U>G__GX12{$Qhuli^w2WP(1tc>Tot6a*w zJ@$<(h*m0+D!%jA)?&|3Pr4Sz|D&zNp8q^u zi+Fe-9-!DTzYNOkZQ@vsun1(Rh=HR5Li>Tzb!I8@&}IkDH^#p$!zLPbcik3}AeHkUhV&bZKs(xv+oV^S!}v z5wrZB6XdBqFt!5XmWM9Y@=9d?aFP}V=o!x?z0TXz!Gn_kq^knns ziLCMB^Gg?AqFLvSJbNx*eWQ0MldB1^asnCC+H9>}yn<1m zU0uz$Ft*3%9^b$33g#``c=ig8As4d&pgP;@cdm81@k>ZmyzKU7S9|?I{Nfp`3~EVU zy#4!NBZ0{1FN!Q*oSRFb5BnYz;^z8rbHhe43qIrg$gaKF*+M>&d<`Rp(P;%ig>Mdq zZC~;wczSL_#xaHL>~l{a&bv>3>CAld^!|POL27%5i$(nZ*w+iR1|B{Mttk&b@ya`I z{`y;QKYZX{82$qv9|pZ$Fk0LCfq?(t`Dbh2zKHMqH6HZ?KQ)?#-4CbZ81mV~Q17|a5{hyC8h?AeWt-i_Id zvXEG64@I!IYdIoqS8jo(Ko0Oi%&ii30NX1_umzu{*3DUf`V6r7B?ObqV);939eNT! z+wUCC7ES_nZ(&47j%B#X`}pz2<0rG{E-dZecYdh_m%vx&4jw(-nq4@xcIrg?#Hmv) z5(`HLnwVV@BORC~dJAsPbDTJY9r_ZomgcJ0<**p_8CyMEN8B<} z6G(1h|84_ust80`xrH6I1UG+nz;ib`up*4?1~>q7GQZ5^M~~0#15$Uox%c+WkQJ3$ zn$xu#qDba2hnfz{msv*3)yl>#>r zy+vV`Wi!`Tv5srA?mF9saRY@_N33DERum3?NDI>fWl0T7TlZ zn)Z_bOWsQgYx(4t4ve!iq8eY%@xL&pq}lM^1_DWxLwgYe=rWvPZ{9-aLq~*`qMyX= z5|e=xF*I#{wG9-JVJDRZVd*B!-#z5BMc#h!_X@myDn07g-}>GDlV5;t^Ks+t;I%J< zzkl3#``?dro9usE|Mm*L^VjP(C&u%3)!AHM2R{Dsy`T2F&7ZKZpxeM_l*B*R@AZbu z>%HC^50shru`)y4E8_bXfrBqW-Qch37nAEUPk!N@H-Gb&pv!#I@E!Q~%fR_RslxYv zUc~o3AKSBc5`6!mkACCPzxaR8{Lat+KmXs`2mZ598NLrbeEg?=cH>X~hk);9SD2GL z_2du_ly}wl-;c_B6~6y@5#RTIY*O9*hlqcV{>8t$0(}2t!}p)vc;~+)9vZ%XIpXi1 z{8#JW&heeUN?RY=v-k7_{Qc37e&gJ){&nN6SAO{y-#+l@^4_z`-~aVDKk~*`zxC^R z1-?TNV*|R;e1P)r^ZhFEugK#s0T0RF`73z%!4FP~^N$h-&;9D(oCVJRq2c^jzx5lR zAud+o{5twt#~Ao4ef_Qdd-i^60-Qha(Qkb34<34S>np$g`r8K%{G+|kD9)dMT{umA zG`x@ZufLDJ+86_W1@Hehc>Spf@cxmHeq;9cKK`wnPyGI0f!DY8en#>BwSW1!fAS-r zyYbB`yq5#O2N?gp#`r3I{?Cf|{sAE4WPJV+;@|A=J@Oxb?_W3F=0`qv^H+(7hVQ=- z+2a55o%L`31AOPN^7)VL`GLPT9^cg#@Ak?E4t(kMSJT^z10zEB7KhLhT3zHx3e3poCrd?dF!0mIMx2XlEd>nZ)iG! zP}kgqG#6x(`m9g~6>DUSkZSJnUhxD^gKoA5s2 zqalEEfGQy1*aGJ$*%z-YoxQx2EuFuz^u-J(so58i#Mym?PmCU~;9zC5g=5XmFw4-Vm zH~oIjW5w)7XSgo!v?&h6FPvoLa4WI8(HrE9a}7T8OC8)k*f{jo7vtqr zyiO8~*pZXEe)#so8copy4hDp9VmL@_jrUoBF9*+o5siaki3NYp9`fg+4)mcvE9`ft zvf=;cFa2)+Ghcc8;fMc|$prA|KO?U;nea*IEBvAE|NH3cgP+;6hrc2dU{8ALPbZQI zi9PA5f1@%1_N1@So^+qdgr)UuoX?(uBSAl$&z@L3=1xWZ`Rq!owF04#uPvO++owBS&M2ggA?nO(evVb3fcp z$`~g};M7s}Pj_M?Hk=ZZS@KbS6E{9BIemOet^%cZL66GBm68}l70DcQ^j$7hb7mCDBt)z0VE`lz)oxyr2n?ASFxHGo{ zN62%Yt%eGvS5}9t^7~`%bQ#p+`8DOCm7ohInqou)m#Ared(CCK ziK@6IXkWh}T=1OQQ(uPL3Tn-K_SL0jj*V%it^iTG*Wh)7+j-YEdcD4Wq+3sK6Jky! zFdVm^$QFcs%8IS7_papq>yp=JhJzWvk0r;`Cb6v9=>hW;7s|<~0tm|QL_wH)9Cgw0 z^MZCkUxADg7s(9chrj}I4I~y#L=`)SSmcUg_f+ z(~K>-$sy_1oFT;^xK@0{J>93FTsrqXa}-7EToRl5MowV2jOb0^xCks^xV2z(6G~V zDCXNa-As_cXeK#-!mKP~aW`qDomhG((%3P&7SE&D&YuxDItA=LIR3lDRBb~v3>5qYZN!#u*?#qryr`VSknxZodpaX7D z>dl^ix@r)`UR~koyA`0owXU_%5a#PSFr;K}n(cs?;nmgYwP(Bp;lkq; zckZ9Pa`9!o1iX>7xZ2uk!J8L`dqn(zrrYosZ0b;MXETq(Ywjxke+`aQh2;zt)BZ*x zS~RkHelW6yBB~k(7(w-LQ8qy?cZHC&v8{9tnYv3Rc(SEP(WQ*p!tT`FNnhX$%h1iw zs;060`k>dHkV%;1Af-d41oQBzy^tdF!KUfQ`aFZw?Ex$;2{apQrYpHnQ~LhfH@Lqgo|NFUNVqAtiIW} zAQ74fv7T{;m%N>7qPQlrA^fvZqy@I6$(}9dYBMZw095Ta^ znvWWBmdMx~08}xs2B{3ys6noLD!?nZN>gu^DmVL{vzNC_UMWZX362eBB$y_eQ}rIH zUSY1WL6~Yxs1|HUF&=pBBH2WH`ZQTFQZU(4tCD5kWV7zzV9iXgW)-azZbRc6q{wS- ziq;bCqa2@!CO2kTqmuQI9;xt++L|~hOsMI3_7+SRwu$kuWpY4Hy||N+rFAAB&mEj> zdOSlcDQ})dV5OcWTHYlDT(0n*+UVA1RSEHIt2G#4BhCcv+t=20CXYj!ioKRY@Yv}AxKrzJ$JK*=@p$c8|klRjNHXJ6ccdo7HeYlOSauKCH(Wa{wm&EdTh6|_rg5Ng~ z`hU&0=Pa`pyC01QBZQTxIv{qm{eD(6hm!I>2>}-yQg77ii+;Ub# zw;GzqmCu8*i)j!rjY2_r77B^W4;$8zMi7{8sIo3L7zftS3olVvEer%tLV?0ClrXB! zD84j+RLtX!jQYs9u(!m9E6b~fl0=rYvYJy(9w35)E3p~ zbU|nxQY)X^HA%dvMxMwR+!nz#SlGI1olbk%wbY`yCU&5yG6z?m>;)|3R`i?=#%)dQ z`#s;8-u7?-;lu-*%A2H;HP@J>%1jt26Y-_h)ZHmwq%mq4nV=#6{cWx?T#PovG4P{# zR+FT(Of5@J}5-JPB71gXg4rkzYa-1?Ll65|{ztXC9BbVkG7M zjim^R#H<8#rd%ZQ7epzHXFF$8cLJ>@j!!Sq1%+&06|3y|YZi{q?ZX`06Rt^Tc9 zOPbflopFN!GDcZD4Je`u$8o);{9ScO zXhl+DDS=~Bubv6iFy{c}Xy5Ca^vqx?BBT>h4I#e1O%h)Bbfnbm_GpysEjS+5lIUO? zN#L-*QtDfog6fWrp*mw&qeZr(hI>PA03t9o);z>LQy^wW&ItW>gUk#H(-4?iPZBaC ztBOFC(3^FUQrcv`H?{QT8>M<*WqOX8XF@I2LarpWcAeBJm|Zlk3D1ni=-p$5Wj&pm zn2V83EF;j)of_-q=FW-o*aM3?44BhMIK}6 zu2>DoW5l4nc6~)SWp4_E;m6*Hc4uKs6dF{iqnAw_!(5l8c?>tYAyY$V*gnIjdvjFMpUL;1BL3N5Gd4{f_0FEanIp$+gEg;gvadx)?!8GnR|@s>QjJJjCufY?BZ^ z&xZu!9$BhcR5%@r-{W?`?XFyNou$sEDEn~92b25jwhbZ5l5wspKLBSfAY}3 z|DXN~=6p9|_2Z*>)lf!vVLI^y4Qr>3BC= z8@%O}p+gQb@#+SVxXbt^A?mlYbzEA(y!iPFGi%dq6t+22Pi5HaEpOn=d096Y_hLdk z#ZgNjzXTRcwu?$s; zS9~lpoN;%C;aizt4A7N)@kzLg%)O8j18ag{%Qg?io>IN-Ox)}QqiFYVhf2N-KNcu_ z)3G}a$jc3=wrRGGC`xXMAW;c&R!+s3(c6)a%UTcl3R-=#!$bZK;^GV;*QklQGeA`} z3oZpvn04F4jSV+R+g-Vlb>6)CDTB z+vYWqdEJ3m>xMlAZ@hslmmyR^BHB9u3Y>qI)7?%FRiWbCL_)Z33s0%_KmpJI>e296 zUd16$Z*zGP{cI#~{7Z6}7@Lw8h*0yGe)Px7k;qA5Me9*f$+vZ`ysKo;!^MF*846#5 z0LVskGZr;|J-jX_x~sz&+*hJI&5c{jycO{Jcn=iSyh6WNid{Mb9_zO^>0#8!%}aS3 zP_~Hsm7+pG3i-Z|HU~}ib3~=WXV7*GKoL2Kfjk8SjM7xbRvhemn6ZS(V9hDO`nU=0 z&Ag#Ye0y51(ZZG;&0&vXTXr_c0wbF8kPIAB1{$B~o2kaP8_Fh@7!@nd4ijmeh0#}aiIMjD zm&FW2aE&Qa4ax*Vv`<2};&H*EG1e}VWjme?bhN}jqS~es0aPGSyJ{m@Pic^&4M;n% zXFv=j;Pfgv!5wuU_HFiwf2C@0z)-Ui5grbX;)TL>harx^d`SDb)w_mQK2azgD$Lre zgTPLni~_*YJfq%8%I%cI91W5Y|K}U)(0QzA-cDUEc!W~OlBa2uG{A-#0NF@#LS#4! zL+v2!*d{Uor>6KAL+hoThkFHYWUY$yDz~%Y5L=q#NMFkwIJ*?PSLyLoK9WdLC7p52 zIgz9njE(KEv||nt^DVkWm2;*UnkoIK-4+bzfvp82Sy)JGfazr|L8HrUlC}!K25T9Q z1c0*8F&$F66s!&-6^~$Mk7xyeO1`D7r(>ogmuq-rau<>|uZROjm0O{cR$z~{sV5ze ztOV!bM!`-W*%pO}t31gF#gXzcs%ai&K?FwU3AC^KEKZUp7zXvg5GIqG6`d8>GrBnj zYm8<8s_3Xro>p?^bQKEF#=?&{BP8S|XtS(tvSNWtCmqMw7CxIL8bvGFwB~Onx268( z=`QQZk(lGy*E`rr8*i2xEKFNWNRp}fF?DXk5#@4aKXWt zOK!?3AbB{~kQgD>M%fgsA=p2^1p~zpJ9W64u$;qyY#o=xujIhQOzN}soNRB(p_4WZQWz0qhp~yk&PFz<# zr4_}cgYrTo42zTxfkhe&0@=7LXYE)k6D-0L0wR!cKnWCt9HJ+6WK((OY@)_M$-gp} zpyQL?v*OQ%`d3yG|yKzdv>F3}6!1LgcWtSZPd&0LLL4?~12Uk=bgHj=|5eg|z46NpPkfGLyhn`>-8YRn&_c zT(sz{6Jucd%`;aPn;1Xpb^9xf=Z89FX8LReF{*MVB0jo~JA*6tGA7lZeSH9E=7a9c zFngohyWw3xj4umO%|MY8dx>oYCgRTSkof_3&btq|b7J&SPvL|{VhVY{qs=P%fJeLQ zrjP`Aa!Xk(J>OeAy4#~~HI0oH-ixg=jgi8Jr%{con6L8kc(-HHa0eD|t9o~I;tGvb zXHPLHmYvbo@oHVnEap*D!4Lx-bo9AkmZ()k`7$*?@rnM}{@T9B?5YSgJ%CO2v60GM zRMfRa*dSlhBmrVr8_iQh6O7Xgc%x+)Ui~6Ww+tsM4E}mj%W1+QRC`Fuu^2&=6F0;o zEm}UpyYZ_zWKc<1}%1{-pk86G{eG)g6JF6Kyau zB`0+Oxh6URwdJ{I@<2?|+>K-7iGzW`a7io}?uZnqW_&Krg=rEXn)4XGU&HmM=J{oA z5aScf<+S&~Lp3rfhZRudG7#S%B4JwARL#hzVdGW&V;tu&nALNQYK}3EThwy?cvaJ_ zJ{J+Z`Q_da4)He-?S$*_;FQ?MK}oj_yC{sE+4YXQ|3;0eH}aK1Z}km1ONo>gGz3>k z2!fRjTrx<%PrVe)^GMuT*KK3dp13|Xvnvd-qvyH2C^o1eSejQ^&f^BOC2aB96c`kI z@+%&O+sH+FxX`U)bFskB);fKdOAE5)YI5>DGuR$%Vc6L7yw=2FOyLq$5qm|7h^0a- zIyE*f)^y7?9k-8;`maQeD{|t`bZgQt{z3*jF}dElp2JJ3%gei5bYkK7KPA^X)JtVU z5m#^!gy0k}CgRuiB7-NXWQpoKcSr`<>%&E_Mby9xGuzWYwlf%-3EvEwxa<3StPp2-JL@yR%0G(R3{}w#4^ZQm6?>!_nHWuA zdI9)8x9ZbpIzZhpyKGpW#C$9#LV9Z|@FKLOj|NR#^9kZ2Hl)XS6)R2mx^BMFYz>F4 z)%DViktqUKEAUSAivHvLC-qQInYAE|Ud05pMEv>CVWu78^wn-^tGQr~JTUYCcqLAg z@X9$6d9})|a1bmiu&Nw#M$6+`XFt-Jfi`lxQw2DJPGM&MR{#AHj=nqgt~35E`GkQ+rb zlo@whnCo{c{AA}N75RwrS(ZQJU^=G7YVWQxWXC86(ZJ%8cW{6t=>q3pHyzDx9TiPt zd3&o(^%O?M9{e_z+j{+WBJ)Xt0jw9uO4ep494p4gkCC6XvN`^LR>*PyN$N;v1ObpQ) z(LAb}XAQ=5l!u=}C~&-JWscB6If~nuVRlIwFjnYD8VFng4a*VmLuW#cfd2(K0{;3_ zd-m}6@8Izl_kL{8r~dheKBFc4{}1_3`r)CEe&d}V`kgO#UY8sJ2M+x4r~cPHdmeh| z2lxH##yejbeE9fJtt+tIAzgWm={~A!>}Q%OMSumt9a7<=lha1-aH$EZiFpy9qQ8RIubr@msJGSyi$FBUkU}rt1dbW|lnGnP#8PB7KCBPx3c55Ra=HhlF5laJG zvS>1TNbYVILVg*rGeigYb_2^8!{9wsR|l1yHi{oo>bE=CaE!5575?HTMNuGS`3^q4$h(7cG&QN=B{kr0yij>plJna z5b2L106U~>Jz7(Q3ZpGU+AcZ@mIs%&IVep;SDKsM3z-HwK7*7_OePT&CKgOJ7e4U{ zv#$?ALnEt5b|Bh_7b*#>z%jt~D((XoCtMi%R2WlTq4KekH+ydcaA-dxS(s;lTDFc2 zPS8@y3|(`cBU2U6p(_^P60fUz$0P3;+)xeL@m#`o#+lUE2Ufg-u}ZES!(>yESv)Lo zuWJ~0K{IkAr0I$TE>FI^{Q8Zd`q64RII6~0)UuNA@`Swz*M6_&!;G;6 zZg6&Mt8u7_doc!A=U+3hlc4zsrK5xhp%s?r^(2Q`>Pik5d058M*ZR~lEvf&k%?izm zpY3N~T{`Eo!FnSdyWVQ?He!@g=T44X(EtL> zb12PzJcfB-o`sj*Wf$~Cgo=b`%9h8o+({zMifpAqHLpx#Y!LKNBW>7hV$LtTBX*N^ zW{9X_J+z{lMgm{EPa587i zEE7*;NUVq}px~h2>&}4*Ov)aXqk3c>_ba=gIggj#FJZ3OfO4b{ILI3hI0(4Z_ZJ6Y zfaPkxvy#tBG^V%HBjBl|H*EFf2+))TsI)lcb>|a2SRahz0=_fEV*YI^4sXQ;PDV!UGG?b<`^qw^QNx}&DgtHSKM#^$Ztp*mcVOvULuY>TJ=r3A7` z7{#&sDx@#m4Teb5O zaBwNWCz_aN+!bu1%pkC(b(ND+M9W2|i3n+fj|l!d2tG4ILE&-#a3H>D;N-F(bAh<42INSPI}6 zNiUe_=qMs%tQHJWo`k6>ko?sKK6E~$aegnTS_1qj2p4xD<~Py|U3X5m*iT#m!&&Lw zbUv~zz43zS$>g-a48_^ed6b}=33HRcAC*p&YOitR>ZZai%B$dS0148bSs7uA8?6DZ zdp&xb(Y63yKSv;KzsLJtd&cp^I;)4tlD~9l{afpl)OUl?U{v1d%|6~goQAWtQvx-Q zMcW&KLEQloM-0=OMs2Bd6%!6MAzMmDBYFpt%sami&lhV(78H^wQZQuH=?n(jsq4x8 zpqEtW7}$!OTNuHm4&!**ZZ!dw8CXoOkiAL=hv8j|QKyp-Pe|}^6-2(tGjhTZ%Ck7z zWA6uBe8ske{Vc1xqDLWv4jl;OXhax5vcz}Jl6H~814$RG4Z%(!?w&G@7&$AWTq<{# zsg*t6X>uNZS?bO&q-PhQ=y#-bC^>o1Z>>QB4oHW~+giAoZrR-xo z#Qmn>S5nf_%L~U=?2wY4e3&&bpGo2e@cIV@z*whJtgXRdV^G?l77ozIrN5~#{?vF~ zSilyrA>OdvT|6Z?%)5bqeXh5_=tm00j%IKAX1t2^L{yNx8jbN1JrI0M!F9j76oGy`US8{UBNc{pUgIGG@gzNSmf&N>B3 z#RDhD0H}Bk1*kmyruR>V3fxqRzUuu%*dH^TK)D@sh7$VH>835RLZb2OmNRnam@kN!>e4fby5N7v_-^O7m*J*518thcb)Npm(%0f1) zNhSeBXyltcL}EEUrnG=->edviS|ETvQ~=F1=rR&AE1_FWvc-f2E_Zv3XmZUilYuQm z0uGmnq|4ga5HXtXBCEVd3=$0IS<#jlB}QY8b1E^=5tW4VH1#$8DPV2Pn;@^oAuLgv zf2_zzJ=UXIl%}j$3~z(hvfKPNB8`aC8j0*jBZ7pW^y)B@2N3{*_2(o?Bp(-Q-n|C2g0d=nY_Xhe85G3 zthV3)R!h-g_DaqVDER>;lZB7;qdH8*qIWKdM@gs~NO%QuM0Nya5fdp3l{&D?up+}q z_<6h?E1MZok11nRu`WQ5CMft!n1l^~tV*XXSFsqcWQ=1nvA#qxkR1tI0{M>roCCh& zLV*SaVyQs!EJy;$=*^tROSsJ_zRYQ6a~pZ!X_f$J zoPVSQWJ`r)`O6jxL!UZ1=cj>q@+Izo&tkiTO?z}}6OOD(aZZfP^2fxt_^lA^?DL-( z7|M7K_p^yp4vnHO;*#v~1s)*ybYSp%+1PlskGlkY+;w^XnbJ+Ii9w??9oB2?EPL0L zTU|j$FGJ-Tm+DbiSZRX^coqOzljYU1n=#-(%w6y09zEl(BB~v3G`j-~N4M`aXxtdC zo$cp;ueZH~8>`=dcgik<1rF(bur-e(OeOK&z>_pn!8jzTG%DVKVmKPb-AQ*EMZXL2 z@k-v55X^)R^8iA~Zk=al6_FZ;vY+}Xq&nZ0FpD+Zae2#yAipOfC?e?@Sc!e&Ul9ce z{jI)CM|j+FXA`%}cCZ2Dop5UqRLeA>Co;$+&K+a~87r(14>&?x-I>6OWq2gC#<0~A zxdfx00VLJnMqbI1ildQgPEk3r6{Rv#-}5Be<0zT?fC72b~KDK91Ha;f$ogez>Hy-_qe|P0~ zzWi$+fBWGdJ-w%)G0}*J{u#zavk&(5_xIvI{IIXD{-5jLUd4C*N?$+t;XQj#PSDp6 zBLe%)-~6TD?SJMgZy$L0Kka==`})n_`tG0I`r6O`%5&$JvN`gYIfL3odmbLki`hmGTZ46eq#bepzH{ElyNIx%d~3F~0cWE9`=Ec!uCC8+ zw-&R5NV_$Aw)r%|{MrYfyng23>C*=fX9v&0RbjKUy(y0tjvPA}Rhr%Gt>Esb#q23` z@d^xpvuBZ&72RLxy$S8HHFvx@pEWMDRy*BcZ?OI(!p6V?aR>BjcJWH~1*C6UUO2vt zz&!*)ZRD@!D=&72bH|UKY#u$4HC}vv>B38gGr6txxqS7F-l0s!lFwlj&3XQVqrzIN z-*Hvqfk6Td;gPV3X>GPvFJ8f@&qDreVQi1jJ-&b670mnD92=Y2D;*{qO z4I9Pm`7YdQMQ^(HW@igW1^F6A44<$Sq*#4(Fl_shFTt5>8!?-UIMJAW?&-sM_sK7v znQxxnziZ@lVc0K;$ z1GyoFA28|;|AM-6q)?O08MytncN1|A5?VO(T5MziPiLqe%^}(tKS^W!z{dDDZVb_) zH*cMjrVj5@;Z7U4ntP$`unsNkFz8Tk;JZ}l2aPCwUS0YuFFmTOA}@VCu;F2T=>iIK zN=8EV~u(XlSwV7W452s=m4n^*1?qG#wvYbF;u7H zfTy|dqh=&ij6z2+V$olP4=0c2cu`n_-uEX0l&RKdFD_$1Os(Qr0s*@PXPA5mvLYrf zu1Y0=@x>I-W^w)$y`}gp-~zvu5!oB#8JF8zLmSapgD2BWcYAXs@2jYS1_|>zQUTC2 zE);kDmmL6oA4%y?~!M4XijSWxmj9aYq zC#-87E{vcC3!0nh((@Ohk+FUZO-5TW56~`4y}wo*P8duc8~Diws! zQ#C|Omal)2POBED0&IaH`F&E8#jY@~I@EgJ#e}p{u`*UoY-N$d;qk|#etD!OJyKbr z`3GlQEP$0^a-oc`EbA|aR&;~X9>>7F0uM&Zgo#?MvKni}@~Xuejw_SmT{6VDbo{xr zeJ*Tid?R)8ZVK$I*otg--O|7=lb`eGGvz)+c`madUUsSkkiiraz3v1NA&uLfO9Wnp zf=COq%%8_FhFh->mT7%nW@EF!7QTplPdqbR%#H?VJF%kr1uSy7&DnJoK%L^Ykxb2I z8M)zgBFu}M&MLH6z4fhk2NI{@bGsWh=^?5Zcxrxr;grqYFy4qTS!>vy#bpV8A1?bh zeRPqDG8&}|)r`Q;COt-K`y)65m~F3rSz?KyQzm)HcYoYrKFz4#9gjUUSC*zh4i}~o z-B_={G0=OorF#_)FL?Py=mDG=ac9}l9S;_C(!^aR`OS-K4Y9DsRD?S+Y6m>KP=_pG zbar)x+=mw)qtDUf9m$vyB&uU=gyG0m%IrF@=|HD-%}>#Efpdnufsqdxk`bt#R!#rB zABO2G<-QV2a;dfgCI{q#-vY(0AP7UT2!R#M_8R33b83)0L*7_%e1t-TP!zY7V*4)o z(D%^Dule@q6QGufZJ1m9Z8fbfgfK%|biBwRfRGlZ-^?0O7@x%!ujDZ1p=|$}4J5AX zGQLKxzyU=*x1Dc~wrbXx<$=u3_V1*j`{N&jYn{{W@1g9>ry~c#*i2f>+kNWDQE60T z!f^6slD(hJ`A|~d^IFGDl9v3-Xyfh5IZH7K!6a5xXkv#wJ;d1sHCI)(Eg{imt^-q%p)noe%;s zp5$f}9XS`Xcm*D6vRfVw>&cQkvjM0ZAlCwxvJJI&;$0I59{x-xi;Ox5qS z;bf-{#V(xRmx?>cwt8FJJgmk>B@qq^tHQeSVP!KC+gGYzs*ThE?S5}7UgH8V6uD%t z5>o*77zMZy#T=uqK`u3;aEMrxrOTEhMxLEe5xE`GMy z9&i(v>?pC+)kxydssN+9vSp-l6~VGJoqXG!=-FHh>SHj7lMLE{O__fSBNOk!bj`JN z&?rJ}Y%~gp17;$5DQ+-y6#O9IsS*X~4||JFjtIJ#!^j~5T=#ifd{v8XkPyL+icl8k z!>c)-pve$DX{^g*32%R>YEc67HJa6O85_I12IXY4)u%QBRppBVFix1x86%pvzt}9# zIM`R}j6I`Gi3-oFrBUkh@vUpQ!a9N?Ld_A_sg=|1p*~ChcbqrzIyc;0hYJR>ra*zh zx^{=#;CHtU$;}4L&VtTI9Nxse)Tyd*8T$;|9cNXAsaB*~MuxZiR813Frrta#HS4wou5l z-lVZwE)AGbAvqdRwBhk=N6Ss4_Kk#u&8K9luovmyvi=A(R*y#Do5>3ZAPMYI%`)Ek zq^*T-W7w7!tevz2dUHcO*&>a1qN$f`9${GVC!4wpritdty}M8iH}A>Ln3RH@kV;Ae zPr*zQ_Ypo%0FY^fgEl;oh|r==-z_3|9g7bGA0L6T~u|dl@z?;>=O=NPe*cl8AB| zr2X@onM$0}*qCvM?lx2Pq{fX$?MR_3J<}OD`7U$wYD3nL`v(v#(}SvkHIT#EgD?K83TZ{!$E;_X|w3wt^Q&# z#KV3Ie{0LY7Os{l)tc~N4|}Jo#6*!%GqgOlNmCKxPVAYb&QnV$ti!k>ih1FTpo zu9Oupr**g%B6F)8r!NiT+Zz{-96fd%RyI8b2*a|XP-!*0WbusKbrNdWRwO*JHtN+I z?Y+Pm>c`>^_(Bh^&w_rEV6#8@_uz21`$VIfS?l!xXzSP&7&mpl{u0Zlp8YSh$2aR{ z!CEyy^)2_@t(yqJxS%TI75L3ZU7S93@5Ebh1;M<>0eVbk+ShRmTx1Qix$Y( ziinrewzgo>M`|z6sc}J6`P!@qlQgU9r3=xSJ^Qe0wT`9iIiS=Fh-;Z?6)-Bi*3!e7ja2a}-*$Nq509}QRL?+_0I5QHqePFHs^)3q-Y3f&m>AxuVSJSmv)f27az zFa6Slg_+R7!wUvR1$gHjkd;`@D4(NqE(}u~LDdM@Jp9iM9pC z>JWiB=y*KwhNXyonWEY;^*eSNy^Y!yf`{KU2NNk$Pzhx+E7^D6{)ajpZtRLvq1H6W zevBrf!c5!<^LQSJE!ylL@+tNb^>i6e#8-}|Q8js2FxIT_2+QwVh^FenSoPA4E$Er4 z5K8882sy=ubQ|z+BZ={6L?r|)<<~pC?Low1eS{0{8u8RIx)qmIrJ|A8pB@g11}?Ol z;B?A86``ZDoQ2XS|K~444;g=0jCuU`#hAyxwSTf0-vb~024fJnzVeqp_x8h&e%)do z5rcS^v4}qAF^cj1iEpicdkx?DYw^T;7stmuCh^1ve)RO-r_*@iiWuL#t5KrO2VuVN z>oDIvUk0ufasH=(he@0-?)si2u3hi?{G_lRUD>TT-($y4Atd)c3G;;!q>~2l zGD`8V#qLV*t?tn1%A>*tQjOK_C?>b0=b%xy#Vx&}gkT2;WU>H zLE=mt?xOJL1+%buU&CBk>*XHu`XcwC# zY0S+*nr{@H9;k*4Y`Lgf6fFu)VL~b9F|y<1XvA)o!M|Z9dqOhfvAp0Q{NZ?4>F|8W zeq>5*d`Wcu29*#fofa3jpkV_l#l5zsx{~Tl0)KB(a~teN41Y0&ywcy0MAcmD7<%$D z0Lxie!%nWUA*b8HGo&-9Y%uJL$7lDB0NGnT5%O&% zA@W6$82Ky^B)_FZDen!rBd2^4YqYv@o9Mf+v<@Zj#kxKQ3ZeC}%u#jW)j`U!nl)rx z92H4j2J#M9G+w*NT$C`?Xq{3j#5L9ZTN*brEh+L4VHEvMMsum>R0XA#>FnN8S$UmC z(Oo6gg%vUZ7l}CKjS=e*cH0) z2m-9wQF-zkOMI|1Bm79y3Zf6@x}Ipw#_59JUlPhRJ*PjY#Nz+_rA@79$NR0K9q%Ks za!-<<@)IBZ2JLE{uRZaLZ$JFVL9^q*uJ(V>zGim3Ux4k9Kg>_L|IgRI{RY1CSL}GO zlka_MydCeI*iL@n(Xa1)PVIPRC$F+y)4h5*S1;8E2JH8Do=W0i5$}H-xR}_lkvnn{ zyw}{3fBAFY`-3024Ey!}Y)#pS$_rzVm=Po$KG)g2!oX6@71|ozG0ExO;BJpfW(M)6DE)*zr><$@9j``2d%X zAiwIR7DAf+EK9Gf4m@YK5EqS-E-Tv&1iIrkxihe*^;TYoQFJDINDh9ql0LW6Wz8tmD8CcSjn`{5qL%Iv z-F#!v03OMQ@&$;3XwA*mmIW93qD~9*ObqEOSfrut-9Y~3+cL~pUvsEmRoPb~i0k$*h5bHv`sHDr zN4)a0ots10e%+APkae0t9741N_RI2x!x&u3`>rrXjRznz9$DNRejaDYt?m#es5NbD z32$vu^m>0xsmdNX4WD|kn)7FnwV8CuOdNDT8EkKD_4;WbY-}BLp3X5}XmCU+Wj%r6 z*lYwriY5eBA*TuBs))@NKt@A-r3-@M^_Lm%iDVP-PlBTy4sc+R1#a``A|`z~bch3b zvT@*IdDcWG9Y2gW#}sF5uwYnkeTqX6>VM zeWGfe>q#v~PpE2RgrQogu?aXBtthtO#+%L-0-<;f54vY!bO?pc^+o)`I81%rO*+PS zBu_(-RD*Ntpr3ghh-IG=0Lwg(O?-3U!d>v{i6_FU8TeQPHEmg&QsrvrHQyZz!dVqwdAWZB)BjBPJDE8G2v(&~qb0~8m^mwPuTVSKVzgncsllXpQO ztgPDxgT>dVnGE`s3Y!>+9D8BHui}s}sz=r_ISg=k7C=|glFT2?#c&$-qV8g-)YVV$ zi8C-%7~OZFnu!fI5I)*I*@PRUv&|5J!!fgUGbb#H?(%`H z7?QkaeLbKIbn`xPcU%Vc_BLOHa293&EXJwOMrReQ4^r?YiPkihM{8rL-h2WWY99ui z%5!JctRRC6-8W7gE4yi61fekv35L!RKXR%WpT_JVMTHpSQVA~N)d^`4=ZJ%bHiCOp zR%E|+IBW8%2nPnr`xY+d=-oh6T0-rKOmN3)7`(NNYp?h%G!;3@p2EJ=pwVVA<{KkV z#!Vv#{2C(Un|D9Np15U;a~=Iug2xkGg#E(0ArWmP1+?h)B5ZKJJytY3a{R>XisDOh z?V=U%Z6RhdqM@Cm%DaLn)2-^!BX!H_?t;9B%c^8Md`2&!yoB7qn}cOiJGLLV8S~=W zb46mj-`2@6R;4Gi8*kFd&-0RWZqUC#Mxw<#r*R6MvZIMxQEg849U^rBJj4il)vmPln- z259bY{AdMj?nT*jj<>d9;iD-w($%NNHYv^(`c}naB>Kg=8BW#o>p(0ojewemiPAV^ zLwE-aWvz{d9J<9K?;c`U3-xYr-B2z}$yq4}au}N}$2OE#s&tOugu{B5Nub75FFg#i(X% zh*R*#P7WCp)>K?WY$SIXbI{^g%#mInV2&J)yjL&>2Oi`P_n7BY_F9EG;<6rCQ1L|N z4p@&Hg0Udz8jkHg=?;M=U_GN*j+)<%%jn5c!%?a~r%72&O#EPvm8>OVA3J0$BUwpt zY3>axsqFOuLL`dEyMz$Yf#kBD#x3{scy5G-p!$pZ*s&qCVHzSRa5y^9l0H zB^3$!3ryasxA4d)7Vs550hMOp;t*piIaO&Wm4&0D@dx(PAK80qxqFA{s!H+y!r2?9 zmvXxZY3fh0*@z>2&krYRNzbhh!^vQZY?ssRLeMkfo9-RsBYYv^_U_Y1*WL*z$vnWOw(_}PtmS1O0D9N6~HtJNV8a`=$uTUcW7Ax06M}$uRGFAIKUuvnyCa zV2@MI+v0RWZ?5FPI9Wdj2Cl~iMSL;pwDWw+nf^V<9P!|&$lclJrf6=BuGc}p*3^i^ ze(SA_Ix3MF#p89Um>`A;6RqS`_4+7hH`L|Piu%q4K+v3`ae4tDy+$t{2moB8Q_Zy% z2NU-2Kma@t0EvdAR1XEKz=s|PfCmD=a}^U2ZY%6}vI8hj8~HMCtSLD7sh%AUH+=ZR zJ=mvLXy*QWu;{uLMi`%e$_5>;Vx7NoZ$8pPvFPMDYS#{p^;zEA5dbR62d?^n|39@5 zYLhc?-|7!nw-JPMqa|0Iz;oHDw_t0ciU!H}I5ZY>kd{l+o7u}fxg1PlNN{MuR$IK3 zr1ys8O%^vgI?-Ws(^*}|0mvY3PHmxZqjuh5)O0amcYlgq&Vxe|*>v(|2E=?I*?g=q zaR+YRnUF*o&%dQPYMjLHUDv;3J%@r`E)K)RF)i_Kdt39u9KHF_Si{z_= z^#akA5w47Kv8kwP`{cGFHr8P8rh9x-ajaQ+E=ngV&oNZ2Ow?E)!Qdhjp2Y_0Q3~&r zfC-kBa8tlwdu6cN@2nt_P41OS-D9EkrYlqhJ%50V($0e$`*z(u6USsffF!SR9x>6# zL6<`iiv;j^UTLy<%DJ&x(Ti3(iD+pICMD}=++T-dnBnhL@UV*K8I~>7woguq%su|N z4(Rdh()J4WUF)*3^s8`~Hb3UK4Q8vuNDqBVN?{j3e+<`vrr;-^EW{Ba;a1?NC5u%; zyB_Kax>|47EN0RL0#vDoF?#q}A~ZaZv5p;MaZ`1d#)xie$LPiT@+N#tJFslT5}r|b z614&sbn*mbp34!C8ffDlNcah)$ZdxIJS}EVWMUrnR(l(Z*<&1h9x96mFgj1nN3 z^0MRxluA!!GyIDubTW~4mth!vg7G^J68JJBH3T3*%D5hCOrsu|N#+D#);y4U96@Ov&Ag zoIOY~Pq%V|P+u*G-I7dUa?0MHEI}~-L+?5Ey9d#t$d=vL$ zQ<`61*!i4rB{ynMI;kCX}!WBwIF>>IH?_Vq;sn7$1}v`ShF7FB#~jh zZ0hR3X~x5wsuTC+Z$QO+q$Cb+UUoUA!I!Iy4LZI^?dp%K;bu}&?@WOl4VEO6@F*3J zJ{4n{3PTv)Jg3Lom}Qu<=_+a+am3k>8eq6S##eO_-=ImT0o?D9Hj-RHA>Zp zxvK#cAul~$L1eP&SVbTJ#%p&~XZ>zd5f;axc|kv)Y+J!$xCR5j@2tU5CaYZlTcl5M z@P#BsSO7=egunZkXe@ytvpRo#xu!S7Oll5e^{O@Ea|hNb&0?%M8iFiQ$tb2nJ~mT@ zfP9{AG5BPv4oiq`+8kTbAHPh^X*N}9I}tnaJz9yf!Of-bMnj9m$kwpwDu??wV|nQmEsk)Mo)uTARbnb_NmP;$BY|Uv3PY19)!xwL)#=FO zIq3={AU41o*b2*Yf31M*6m*1lX9XOPYnDLQr%FwBM7G@7+|1h@XssKgqN48?O*K*4 z#%Q%sSx0WBomS3W(Fwe0ghIMA>*6kIev>owA|nqBTu3Xgk&4rs~8CF^b6e($82$EvheEUoT82+Y3#!z8r&ZcM2gr zQYd4Ff+SN4h3JxM^*x2{+0uQ*Cuw&@1WOpC3Tuhtg2#1d11TL%AZdgol!!LGEs@2p zO*>f+@*59|X|`Jl%rtVUIx$j9S5ou=QHKnUDH^->L)&47>pKyzV`s5r|KyvqTOW;|-Jr zBXp%)yF)HflxbnRIHmp(n6ChRr)pUwL745a_{jhG+~L#wQtRtjc6e`OS~Cv8cMqh|ARS9hL&vAh!6;`g(s}7xn%zxJ zqn4LxjE~{y13QN*&nU09uhCpFmCw>q}B^(q^PJ zaENrBiDqW1)q$|W+ubVXB{w$D*toK=^cEb}JwYZYQ?dCiHy74)GC!Ua(t0t^6=OaL z2vd~)z94QRciT(roxbHg z8^MQmvi8E#r(pOE+|$(esZtN^fb}2Q-6gMXu5QU$di0X3qQl%%aRRlgkwqhDp0VsM z>5A#gRBFfX3UVfX#ptGl@Y9z8FVp8K!i0B`?h&+sf<^xh4K`IrVyev0N-D9Tj1m2E zbbtCbVnlO%=dZ+w;;#0+r^m;Lz7yZoe&CUVd(Uc&sNL0Gaeun=j(Ko%`uqFlbj3g7 zA@4Qk4`Y@8o8sN+e|!H#cc;Je$Vb1yIOUs&SAP59M_26bblheB-|(}nM zuQSVUKm3W?ll1l5#lAi~*}QO1`zJbId*T=W=)2$fSbQh^_x3J)iZo{PV%#@>2*dvy zeSPpV(Vg%g{NSW_!aw@fE5H1U=YI8X&Z4hBv^(Ly`mNu1=3jsFBX8V~cfv0$WM{Yf zh|)ZA3~4YHkDXdPdNh0P!qWbI=a*X77PD994zA6gI?g-cSKCLA<_r0;gZuZv&wPk* z@7X1!o?OgYTf87p5;x4f-n!mmzLTxtleF*jAyCe|vh?iisZdF8rdZ5QEF3@ieRL;0 zk|^;GvfHxNqY|@>{blK)?m1Bo!09yg8!Z&95MR2C63%`WKedwS>0~IIKCdo)mi}{f zRph1B+w8$?)azrho!3REReDuhr_f!gV$!2(5tlBYqyL}1_l=P&yY2(2u`F4XnT%JK zL9LaAx-vZoDfW>y6SaziPcrD`a`mZnKiwUV|~zv zIN3$ApNw6@S;vNqAYY;wK>!QJE|3kfUxI~YBvCAQv$7WpWU~uojs3E}bI(2Zo_pVY zuU>UGIX%Pf8Fp8_cmLn>|D1cSxsXXtfmn@!k`7+UZAQ)a^0suE$baI8ns_PoiYl+K zR(vP51~@&^-?=p!kagN^lYVM!9ZongcOoJ6=q;!2Tf--(>t2QCfP2ctaK^48W$2Lm z*`)x(%7`-(c(I71WMIsIRuv{JHmP)MsJprt!~~NNNxo?BUMjk?yY0aNu50DPdjZ_(>cQ3c+O?UB%`Mj35{e? zm!Y019Ncn#H8(1%?&o5MkL3r+lQ}sUz%2|9-LxT{@}4&)tsF`sMF3@1gX@Z1E*gxM zMF%heP%?58iG>_(7lXW6I8t}XHPM_E7W4(bq{D!h<;SS?hQ`; zCAX&w0MwwZMY1oAIFdqi#8DH$&&gvNJ-ID0R**si+~zdMi0N1HwlIjeiRze;tVe2qb3vx2jZDv&jhe{tZ~2G*Y!UIE0wXC z8AK>q51?h(Pe_auPz{8c;s)Tjg_e+IniIAlC4&}#`*F*ng${+{KOr6J7@I;RWK`IY zh@1)rh>qe3!7(C&bRG~99aV$KWHdYXpePc|%Pmeg8Vkzb&Lti3z$USpw{$!p_d@64 zC>u7cZae$p0xmp3?lVe$W|+uE4v%R*>$yaj8qQjF zrFl^oNZhb+6=pwxVqolCvUU$)rn;MB7C0TYY*gz+ummf~LhBc#MXoh$_!f-MKL7f- z*_|aVUEq^u!9T^hZ03|3yJ|9v`aRF0PLq{bCql=69mzUe+74-AgxE^C2{HN6E6IrK&y+TG>+SbW14C_G8SV7;o+FAoj)st?$sugbq*ed9dRi66eiO*uJaM2a8pq!S%Cihe^;WE3CjcmMc^8+(Bf^gG!g|vlPLnCX}D| zI-?M`a!8+o{#H`p2?R6^@iBbUaI1#Oa8iR+P(!7tNiX*~+|+=%C)p!hMuc-*a1LZM zJlf#KUhZ0cSJH?8oux*?ksz-o&Zw8)&#qEd`PrE(2H#A&sJy+L-7-VQi7s`K#R5;{ zOnMj=6Mf$yy`ksvllc1-d=iaS+{jb8ibc5deBTOyXkDTKNNncMn6{at7YZ#8l{0gc zG-FRJx#qAM>lQedXF-8HMg4&#YNiC8kMl|Hny)WRVI& zRT^%ln##0d=@klbOx~&}2J?s-6r+M#)QC$EL?}zk<8;{63JJvk$oeamaRP44L?2SeLc`s%GMOGNRgUQLc73ySNUVqZ_CvrrIusE7eOm zhVd9CibEKk!ZfK=Mtf3%-!WhCtA(pQ8x_860ZSym{WEM?m0qV-;XohyITsCYtL^immA?_JWgu0tRr&z2ZXg&m?Dk7L6MugvvB7WHYtilh;#|V#IQIeXB zJQm9san=QXKBD4KeMGV{(cvJ^1YxH_>X0idi~s{oyp7xiA;l*=nZU^sH6D{JQsj(> zfWpUm5zdTcACO+OZYjaKx#{KUWvoIEm`)zdI)eZOG-Gnu^6`4n9tsf(N!xM>>z{gr zL^mpINc4INeSwOX(K&ke!Pt|i-%8OXK^v(~wf&Y$@bAjj%WX@h3+B$cHGD>tmyNrM zUYM_GdP=W~w0FYPC(u>gfD79m?qOh1J(HCgpiJk9bxaR69_EDgs}wBDMik0*;kTnG z<*l%@+c*}x@WtS`0uE0YzY;q-?r(Pxz=UL1NVlhM9SWp7N-Gx#bML}WX{rZQJMJfw9%06tAu!QC4~(fC|?|v)0CEOBeHi7Anc>Wk@W%MJq4Lx@2zyZYdDlOG`R?b=)Kz+ZLcz+ z<{Yhv73{R^li^qL@OncLE~ku=BF;f$kZa;B#h=)<2bho(aTJLR2AKN<OhxsEHEyT6EJ^^x8S_xwP^gOB8OgOCHOz9h0VT z5c>QAQj4m+Qg@GR6Ye`=sIWZ;2$@toVrr>bDe=a_VpV7tQ(`qQS3QX`h9s^VQMqXD z+=2kKhxW3|k>}!tjl{!5cI)>3!A7vSGXY zn9b{gI)$OgRb_D&HtK+XZby^mr;>nS!pYGP=cP%hTsUn$p?GjKRt{VQl9Tj65{cnis7leRM#qtn{U`hJ|-y#7YuiTqMdzy5Z@Gi+82D1u3gxc!rp2zg1QR7hu>;T z0BEK(Ze^;uh`1BSThP)?B@opb@Ez{^>yLSB_*OC3+JZsU-C>9YQIiJ{3IbsAyivGp3F1Yd zbIh4N*Nl?W6xoeoUczLLIWsMX`FYAXvr{KmHevo%98v37!v7A)i%a`Ds@&HS-H94) zM28YA>|sRUnEEak6j!h3+kl93ZqXuzz92(}0->j&SDK?HW-zk`!7QUB)-!&&3F6&o zUFtwDA}12EFqXtp5(bxBRa8Q@@FNW^q6Q0VxovFf2fACOTJTV;tUwL+ee@o=>e zh90%V#p*OD6uQ%Eb;qzPn|r~menpqvY{W?`D`u8;MtVS8cw-S94q*(&>-GBx!;q2NlMgeqHQNXmSxt zYtZFje7>cF9`CK7(_UyQ7nUk$HIQ5nlO-oZJV32)&sa7;bEjCSE>V|#XXviB+1?HS znQC}(EWE%*TC3?YLFI4;RKGy~>U5|0**oScMwbw}*nyWX*8$b5OxNkpRz9TELAPi4 zM#UL84E#ik9vz;nU2xxP>|~ZTai}H__-}$s7M7bz+J1ukGs%M09Edv=J|uvonK+l= z--*4T7w?x?$S1Fs$*%M+ZvVsihEb<=Hyie|`*{Z0Z3fOloTF{i*$1o%;(y>p#bF}e zi_9dn&IU-eNKZ>9jx=4-c62*%QQ;c93|x&`^As&}ui)Q?8j^@N6g6ryGb1 zq3e&+N&%C zn6H6RA&?xM9?ZI=5)MM!gEw@E^4L82l?;v;MxiEM!DGgiVU^T=<>)dSGH|YBIvNUGFfYi#@)pSB6O-SX!Rmwr0;d>IDWM#Lb!Mh)K#7~_u0T6uf5F-V?al<=AUXBBdgc*6dXz4Am zme9iq*LL%ca)8nP+>+C|J_|{vCEVaRzDUWfM@L|(CviME;evZQs&a%OiY!4eT95#d zV!eI>L_m~V5%LNKpaGlI4Rqgsby`Zzxs!!D0sZc2A z9Eb1X9>>^gCgdr$2h?M)H=2Xy&hQEyIDtZc%}Czbe*bti`LJJ4cw-X#!K(0vV8*Q1 zE4xpE4=e9Pd^#xh{2VLW9~PFKR<<7|HaOzoT(QW)3sQ)I++(4jMc0N*alHv~o)4i= za3FSmI16iDmMiRdZYRqobAhsy(|d?X8h1TFBnm@&LBQ@5`-|1kKM1+N%eZ8z2(l5M&dhrdUgbvr2z(-Q-h`^6_g-*H`2t#AI+a)?x@Mdw1LI6jfuVb@b zPquL+qcjpASQd~G`gp11#}1me7okUZr6Qp+AH%2McmWHJ;q&pqCo3DEon%l*Al5Nh z9u`=Z=!3}S7R9Uy$t%|bA0uHyoC&3|*=cquppVYVY>Y?d5pHqqZ}mEq(wyTHZ8jVV zPaN;MB(r>p2#-DMZ+tCpjS^9WwOPBs=R?Z;oIfy;iz9&RX1_mEB-@XN&8MSWqeHc| zxAz0t*4pcBMJaz)s=(NfDZ&R#5ultL1!aJtot$a`(sdt ztVYx(m?1wrhJMkM=x+p}9u<m`<-b*n?-^X1-&jwo-{YUF)iZx7~(zvZ?J;4>KIjebo%%#-KmyxBA`0y~y6+ zH2sa;iom^CYP*uuuWFKNL#xgvy;#>G^!QJv5=_cZxDou+lBgFOZkDq%=8#OdqY&sc z1an=OeAeKA?T<$jj;*9RrY2nH3i#@GZ(5k@Kt0g2G({9o31g~iG4?e}CGk1C@5zMI z)tyh>vF=oFj{bbqNsT)`HOw~l_;ePi&z^gHPOePEO*Tm1Y#?)(eZjq-NSGEU81U^8 z;Ni`@m3QtzQ@flkxNNo|+!E0cqJv_o^qGo2C=&DP-qm|JRpmmrU)_7lo+opUkY?2N z%Dy&*5^FFtphM59LiNgGk?p0SDq38^638hvTS$%5VWA&Y(1g@{yKg3us)@k|Rf00* zCSw_}b$0l{&T#sS33lUfa~SiihWQ+LIgA8X%_(%-Jl*#)#IJ77Py~$_SLYDZFS$SQ zkg+v=^^V5jDvqKyN0zHM?shTBT5B~SNUvMaZ^4g`qK%6u(Fsi2jzc#hn^a5-Dl zelC*83Wacw^ZAhGW?Eh*`W$A_^bo3SKYFB=ntljI3KTMge^@bAdyq}G!A?#uiQX~c zq5JVUhrA9$@{MV?b3t@poHL?BXaOpx8^W4mp*X=wHJ6HEBpj`yL@Z#VEla#L{3Y1& zG_#Z~2q#*Tv-sIEZ;{4?^;bW{CfK!E&b=3f7)6BD3yj`_wlEer6>||aJv@370 zAPQ(VlA1}flXy~^SQ!ech*w0))SC}fSkG>*y|sAW%G22jQXJ6P|G6Oq*X+vGwUyP^ zuU+1acAu)_K|E#D_L2J6 zumkEhGzm|@u{QSlwJ(OIloMKID2cMT1ctP##^Hav)!gWhnp+Hq0$>7#*1k3D?2PF$ z7Gw<3pv}+|r|q!Yfwe~rIBp21wj%{hF?L!Rx7ybB+8D8AWY~~5H#yV2wV0qeTuBwu z4e7Oy3t^N+g`D~Ms!1#pGZ-g6sxpn%crXBBC<)TWxIz0NrbA89^>^_?W!ueN;9GDV zQp`t^9ipMcWzrWH@PqEm=?WX2V~*MPcl%qIQ5#5Z2nSa$_B09nY)q=yCp zS{BrYopx@>?0AqTe86$S4#kqdtn`?x@bK|Luj2z6dXes@z$c0@WVI`e9t>{T7rtN? z(;^mOX#$2X0fb*F!f>yD-$1U#@nW}=Kvym59lySQb;&H@(nJ{On#L;WTDKcX(ue^m zZ~dRl-*Jf*OeGdYnPnRj3K64omQypFo&_Z_2jFdC3kcZ;!XI`_ovHZvy6M?oJIy4^ zFU*nP>%|c|gq68Z#peNgT>_<0A*#ozNwjfP>aa;5SnIVuW!F+{5ONu|dzY>;WJ!-M zZyMTQ7AGlchAMlVLE;nBIn1S!KrHBC@+P$JHpC&S! zt2b|6ziBl|ndoLG?;>!{>VKpVnw7P$Et{D)f64o-l`SJ0Vd?y?f1o_V4(Eeo2nR)x z5|{Lp5Rx+82WgT89grwi5Bs8s6_o#&DlZ|f^O28kY%x)UlpYEk_H%O^$3jCE|u5~9dD zwz9_7F;MDur-j2P@H93vK+Q1gZ$d#6{gXc8<+wB2%Vs-`ydllq$DNJ{)-_@@0*JHC zZgcBgwu=Tj8*uxW*G+rC+vAA))yWVz2BdJG;j@D=H5f@YUmt~i6L6^_`vRjWaqnxr)2Lp@FbH7{;Ssaj2v zt_vhpEt(sU-L&odnr)?w4k^KNcOX`?(uQS24eM0H3oaWD<;&ry1GkG?5Je0vt)5^2 z{_t7g7GrhrPwm_18_YLooOx$Eex9-SJYcB8l;XL3#cHs|e|l&CHIS?t6!+j1B?q zjU@a9zDOBc-3WtTwu_8#`o)=*R zdj#@4$my&RXse+Xg-qRb1>bVhN@WYNz$?OTLi(~$1G!7Kj%gOe8Tb#$bOuoihpw#t zXd+@p@R}7Jhqk`8F0P9KS1)*|K4P=qfrGP&>&qWtOPyd$x0hSOi4VBh9CV*trL@&X z%JLj(uqJy7%z29YN95_#L(TeoGpq|LN3HG#1U#>8$;;L;0koQCllCTu5GO{HJB^;YJe8t!al?{kcS$Uf-BRuj&sCSCjp(!J419{npi>0&EO z{9WzDla<8C{BXW?&ioOkmZiY0vx8(2WP|9#j~`kewvZDYY(KCjGnG>3dK_G=i>QDr zRh}$&1QfrDtNLK$r8`=1{$~W?${#f`*aWv?wn(ON`k(#z*{HcOd<8KK_h_1yu@5td zrPK^eAqE|WFj(EU-YUX_L5`RZL<3L-)O%7)+R})a`NEauIB4c^G%8k?NvHSHbs%(V zDp%#x#m^29lJt6$fC>=i@yNw1gap{oIzH#p@`@J9xScX2+1*LREXCk)q9Jo$Mkqch z3*bEv2@MmB8yv$NX&o)zNJ&WxjKxynf*F92*iyl#;K!wEmQRa~WR;a|$kC9_4PT^W z2u+DxF=sOVi(A*<#>IdG;A3ZVZe*=8yHX(NZ8?C(=zc>(VUF}LtO;>m}?mEDF| z>^B!M)^$g^5jx6JG)95(7mP+R8;!p!wpuOV$QBd=CA?ImB!}YWSYT9TQqqO&nMBKx zc!6jmi%j+{ix|cEWB=bJTLA3;*u+70zsc8WIiDtFjWGriXT;}(A#972;xMRiL?h(4 z0vx!#Q(+l8paK(*5F@oKqGvPQ*4_i@d>?k>3G2>83Rq8;Sr%>#&!(OPk$@I{E3E2Z zguUWU6yflw%{ZjT*asa8P<*MD#4r|1N{xm=fd`RnC*m*bKPJe!kgceoizF}vNQcO{ z>Eh+AXxc|0YRl+crMJOOu}e>0ckJS5JRJ>rov`kGCn6+INlv z&-aPC6^2(P9&~r~0i?Vj@Z5%yqhUJya1OcrMu?584nOBn5LF`^a)|RVGedr~twJsU zLm?HekzIYTOK3$_1)K+@Lfy{BfD$$ku0nCbJ6|(mA6=NJxy{u+1VC8mN}|wfhwBjo zv2+8nS|UJi$n z*!y5fB3SFTeU-XbNv+NcFN6YSmQi?&Dv({q*}$cuq+u>7#ca3W6u>pdm@wpqw(aye zp(@OJ`FD{JLQDz(BI4}=n%zadzJ*`XGF+L^1B4qH^4l$hwhF2x-TRoyzT`?Ko%=Fss_H^qMK~e(ZiX zhT@GfDCV%e)MQ~~?;kL1sOEV*0gwsMY9kC2r4IQvxa$N>gBBE|gb5KZEL4 z6@YjSCja}{Ra$T)&@h4l$b|(;WBVD62a+5a@QA?uA#Sl%U{nm%^lYcHYuAPdXY|(r z3+$|jhs*Bw2X{$yabUtmc?c>-FL_epb7JR(s_{VA&A9Ag(wRi@nt;O0T!AA}AJWnJ zhwwVl%`z0#$UWke)*=pLc^j4^N%;ts$bzpjX%A&>Ip)S4W*(qzuYK49U>bfzGUHQ> z4N4cH$lZ*sp~Ws4hfXBp`*XWqb>6y>qRIupew?AkybttSrsJld#Gk}^QI+Y}%yd+R zr)t?k^OqnGo;ofdLw3O-oV);HwAwC9aipxDp8F(8<^#NByj$lZEW>rfbl0hot^8o} zg`1%Qe!;PlPU$@6fpM*Zk?R)B)L>HP zNS*{a!-Xm-5Y=@hj8UUES0*Z}Y9Er|P&wE6d1vJ8g4nnB=42j%klVyP{5LFm!Qa%R#EZwNYjym=c5}E+Ci!lEYduV)IkkP*^_*a<$=-x& zsq*z@P*tgp!0QY%)B{Fp;Tw?8)Sl0-@Gxy!d?EiC4iSv{uvyL_W@Gp&FP4hnG#+Ey z-XZdX4~E4*rl`PUhIh|Wgfv1R;$q~t{Rr%>~U?6vM?FS2Zon=0&)=x)qHp5ZFvJk$U z-hQFEOu`=4o2^Cwfvya1MuV~V5fW%aL$CvKnXKxDoVU;{jz^xRe zSGP#hluHJU9;TI1ZK#P2)iUjnV(fSLgl6^Veib}cwh)V4!f<2_14iQ32HS6f3bWZW z+2t>~q&Ic9-ZHi3{U#!13JLU9D1+K;s(q}60j|2>Li)2~ppb9i-&wlY1QDi*AU8F3 ztG!3js9T68g)e}%{Tx7-G~1!kbX{%kxYL8Xr`heim$wa!tQr#xz?P?yfFV^wYxCBM zpx&zXM8Y6-GckdU><5qjYn}q(ay)#Biyvk`LjgF^=tY@VT_Hc#4(>X_3=(6P@_OJ> zOo+Q+lx&UEQGK}ONxZZD`&R72B#NGCV74~xGp~$rq4GNQwU&xDst&k1N(0qVaNh%+ zg^Iw$$k46I(kvL;=r{etc^5h_^9lUz+CwmOZsz~PxtX`{o&K3~GoM06aV&rec>+8N6&t?S*NcbJ#b%t`8$uE z{mG3weSPY{eSPbfA3gh-zgyPVH=p4Rqy75s_qV^F<2(J6{d(ro6#Mm6^mY0(fA^V{ zaKFBCbuF8xh{Sn;qIs*9HRx&MYs2jIwY3}bi;cxoCtvRmagSKH52~~zLE=F#HPh38eJxt%_ad?B;lm(T?c;0@+hkkSs_U+cezGt15Si;abB_FA(=anQr< zSF$&Hqr98pL3aIC_KP^kw!V0A{iQS6%IdNFvoo5%c>blv`4_X&D zznf=YL3C&T49-$uEcrY}(O97WkWzB9Iq29bdSJUaFhCc*VOl%Q*7aK$^-7C`pJjw& zoIQ2&7Uun0KEl**bw-!~i8^!rL1(Me(=X}H-(|#!&b9i3p?+}%>yBEjL1%Y#>g3IQ zGauwg{kJ_D?Jm#HhpRuo(+3f4Y>#%jGK#sYJ){JLps}27z1P{LC?uqlAYQZqyZ3v; zQQMV#3pW2TEbz-&-kbZ%tLO6GD__67(71H!9f-%xP)hk(Nke5Zc~4*%k* z6VJR@0}em)>F><_-e>-w2j?!YKRW%nhtGVG;qcDC{Dt5Asb6^T-zVUZ_}MWKKIK42 zuov@_{|Fcico)um*5O@z=JQ*>y!z|^>90I`_Vn)y-L+>v`zhY_=W$;@f&tawlj!R+ z1nYCZ_qmhk>vyFu!1`|x%)7pR&eQm%{|)oPclyUP{>M-JT)nT;&D)Ir}xU{@@e);0X>?_ySPMy5E)&%K#cmDaM z^Or8pExw#LFD<-;e;c5)G&C@QxwXAr5G^FDm7{L+Uu)iLGRb^}q|X6j-7deg_S)Rb zzS3KHZ)>!@oLyR60EN2(lDM3`Ht67@o|nKj_INBy3(E@^mzQ4Tv6Qj4H;K)y5Szob zRD5*$@FxCLS=^3?At7#<&00`+X707H9Gi1(Lox$wD^E@)l8LgAIvDQeBWQt_SCBAEm`*F@RdMj?3!Cu1Lh6qGdq zOF;pxh!e{}_InV+{Y9%+a1v;o5Nh%B5lQ_5(-+;A-A@-0Pqo7LP!%d zNbo^FHr&$$%9=^FbD|0xFu*wZ)(ix|;)f>VF=Mg#Jp1B8c9zm1P&}z=olk42*pbka zV=)ATXS@rUQa!h=n9q{XzfA@qZc@$v})ZMSW=1LL#{fA5aS&r0ou#jV;o7K z$YsJ(Njm-t?Esx3x=fdDX_hmqhGvs+E8jRRc$P&E94gQ|hX(WomLndWy6nT_c}cKW z2=UwuK@XxA^9O*Pw+)SxOMx0a_SJAX`E5-;mKqaW5u3VgngB1iJ#+9Kcsz#>>!(2q zo@mjDV%Wief=lC#t`TTpfm{>i#X#~Vp1*9a}btC0Eluy7Qhs-B=y;LY8 z%o2D7_AEU}Y+o?fa^EM_s%$wnK2rtVcmyX#+%k7G3~%xM8qxeU_CQE1Cflf>0}{5^ zfr;^!Imb+%E9u~N=MKKbhmI6b2SY7LP-QDxwsupj8n2h@o(?XIdk|^cQ*)M}ny`fs z(Vh<0auhiSp$7jPQ%k!LQ&UUIInPx5m^MDGw6P1r#x)MBhk^SwD4%UyE7-@aS$k6m z;Z?0X&6M*)DU=Ig-IpLbozNL_Q||b1#ZW&Ph*A}CnER5<0=X}ga1-(@&br=``@1^B zAyka$=&N7wbwa2c&Ao2F*=|@7`whC*Idt^$* z68Se;xaOyRG54W{+9m@3c6`MamoXYe06sD((ekx;_XUY* zIEhwSq zsMBg$()`i1gfhy~?*nn55XQLCC&%d%EU3MSgUU%)~bc?^v}dvJ%d=QmnO$CBChKv|Is)9{!e`VkN?9C zVy*u9&wYvG7=O9@y}vX3=a-&ztQ9$-K~st`R|a9|4X98Q zVMWCGoTb$J2&^Jg6DcA#G|5tY{gm_=qV%thHxbYK4$>}DP8jO8aZ@h;y*1h z(;jorQ}k0QncMK+*E$by^dukNXd>60<3gn0-^_=|NQYQI^XdhcQ)DC^U6&RVdQRV@>WV0ov6P3;yV+GlL+aNaR;nK_{Y(T>M3#r&kal@ zhNJO9?VV);!p@EHMz=HE&T<4@(uFj%!w9wPjS+se_X-k_ZE&~~AF?xP4x1TmrpXG9 zb7F=SS@OM|F(x5EVLz2&}*lF%8mYGLS9)gsrB&K_p)dB2J{y}=&N6pi|=epha~ z(pTbSxL1P8$U1t+4P?D!Yjj8#{9J4ARyLB@tm5J--N2T$xIHs(zYpgrx<)qy?4GwR z4TFqxwh+cF!w*BFR3pJCdCIT6vkPi%2S5jRvTRVe(Q1=`59X$iJgc8{YuF^*4bTtFVw5d3<0LP>i|F?25G35Aa{K-0Q z+7tr5)5IAor0=b+X!aPVWIYpq zpJtp20p=L93IdP7OG5A|B~>DPAlv~ru_Ajit6_E#Q!@VaY_r>7*>{I)<0hBgilIQS?$C%b^rm%J6UX7y{8d ztmr9YLR<`s)+gF!t1%7H4uo16h{$-w4hl^dIKjl39*PVcbsG#zy>riNtLKzvCM!|J zo$__g_$Tbqd&ZZuPO&dh(C^blnMMw4*HF?096vxMT{+g@>A_5A&WVs;hBOEW+&DXh z$Qyt&w9>*c5rXo%S*t&6I=@83DrkMF0$;7CV7>l%&2N{?sp=fheF?;A|2nbWraz?gouv=mCRA9O5J~- zO0&`PE^8ZqgO0ntc!2|?LRFCpJ7yvytW-&D^Fk~FZQdxHArw-ZMJ?>fm^BhOB0ouy|{BSE|wo)=6t%xiYofnqZ z{5OT}QlbbI^d_-72^^x51p$8sOdN8B;#lXhQi0sWVRPm7ov*B!`E<2m%XVS_)2xlLooF3y<@+HA|#`{Teq*nmpRa!Wk154%qL z=%bwADym*F%KE16nmnRxK!Fk~JOT-?AR9(8R~#i}q{c(fUp2M? zRyGpL#9I;Kk(JWpGdzi^8@b^C(9 zP^*5coo*+?>h~zEkY_dmvdq#*+?3oj_QY%6j;Gl$3xdEA1Lg)2&Ya1>{*L9xSoAWhh}N)0n1xXRbBI?M*wu1pMITDDBKuxsaC5`cSa)qPytj|7nY17bp@N< z7DLx025y(GLAyOWV^_pMRwzU;&zKF{2al)hxS%i$B69teIg_@L$H zA;4`c=m}m`g1()eTMC*v30$jYpx1ldz3ccEz{TMMcE3m65mIrt0A81RG&AyF)qA~n z(}8^pi9{y=zO02B+zXepMGZnkIU@+7%#9Npj^-3MYnh&&T?u3!w218~3E=V8D7!JT z;LcoUkfznKuuZ6hTi__~suoZzz7&^JHHbvNXb{4FOYnz2SPj58_E=EGuED->g;wB7 zKOZ7<)EhfEmNB~SVEQp5k1Q5}li>;qbu?s5Kn){#%DU@2s5Kji`U*g{25*t-j;8AI zfei)txZlEugf~@4Awyd=ORgaJLK-DZxDa8)&|I2G6Lm07m#HJoDm8h;A$@c6X1;@T zXv39m_ZmfOL-u(KmpW?>7hQR%cGgF;4(i-Z>i z#zfiIwvqatA}nM`Wx|ZP7n+IwAm0K!44QP=J<)47DrsYtp&aa87-%%&{^q6|R@oZt zcUF|+5uocPG%U_&U;tcQ&3&|ZjmE%Z%u9(~)f^-SHZ7$Ih?YTJAkwMA4#opswqF?i zU@@<3?)#n1M+@VG=UpXYe~f;|=!a{=thRGFjL)l#ioTd-j`ho9gw#T)LC9kX)Elsl zCD4OOpn{0U{E!0+jf^vY_AJXfXS1ulA>|@Lg2m>D({D9#`yy+CS!W0j80m>^lcj?4 zvD({a&lTMK!>j|mLW+AWE@&r`beSH4Q zC#deSZYn59NdWY08s^IosvO%_?Jk&&gIHPx{YViAw3Gag> z>~-v84$=98Nm_#GF+Ca*xiA0_n85-V_+aAlF8~ROfBE3ul921P6 zWVDcGvmZSAd(9s_`fqDk3LihzQR;RX7#s;kx@yVDdVQPv)VP_CwjDE|jPD|D@H&{? zhnzw-2U|5AWdIb0K&s+{^=J4g1qX<2yiEKOAXuGDPGJw-H;nP|B-~@~$zpx{>GR?#Ad4IBC=wAOM5K2%`K5P4#0sGV%d( z{~_5CeC9^&k+~tBw%x|uhzG{E!aK>e8NPAGc)oY<0tda}?GzL_We^JAUuHOS&h%GBcQ( z#>%)O9Sjt~E1CO=!T2@O4Iz**9#q(tkB0J}f`KZj#j?yu#bTTYMhrAys9_){Xi$L{ zfl}eDhTP0^;c#6;{Md0(1!RfVjy(2=*&&HPL!2RC-ydTbVO|=0W;ezocFGfJIg`RB zR_>1~J|SkuBGa0QIVeU`mA`KG_9`mlE%E9?iTxmBG)jF>bbu*V)^m)-g{l=WmYjd( zI7^!u4Ezv!ED5BK7qPOZdJ{|2q11jHth1VQDcU?G#}Kn-Dupz)5s8B2gUBdY(P%F` zTgFB*nJR2iNxLe1MtI_cmg5~sHjF~kjySaeWo;AY)NKFAkXoOe+2Ev{dRj+Xt{o(B zDPfQ#cu@XKYTc^i@PkWh+K?7395D(Bgwss3tlCt?P`9(vL)%4vk+7)%Af!As^1fhBFXQHdy(fULTC|4hRmMip9A zwiP2qDN0OhdpL5N6RGoR5kDGxMVbrm9{r|&IA2cZ%<0aLE*&<<51lvv&vD-TEqtbb z=Dhh|ICbJgHu=2y_fCKMJ9O53_iz8~Hy%Cvxqo(Imd~5xtoao>b54CwUqAb0{K60Q zm7}kZfBD1-`e*w3dn_#?ZL}cNjPe`TP{mwtBKcUa@kQCMK@Pl<5A#8%+3mcSx20P19uA06 zPRO-Evp3xB4{%uAO*8RQ>J_tA`D(>?M$+>ls>omS_Hyn|r#%m9T-cxArbC7G0G&(Kf$M&9A4H zITY|in-+x{*gESbN2mr|KQh@Vwqe;+SRTTQ*V9wGviBZbqFXxp#864ve?O||wo~re>fgSU8hgn#*Gj9A(epSGFY1j< z^_fTqrUV`7ug0j&Dpe=9ny}d3OfB6amsPOFl(?6y^CsyMj2p;%8!kC}>TGI^K5NAc z7j@=YW($zvv^FSnAm!8JX^HSM@ylMm&c(j=WFm^DPO~IyFc#2Jp@mXxh@hp39&W7kb>kM;Z)+yj@B|< z0mEmxzWP|6ku$;eg2^{_n!8E?a-^xaY(f+H5VoPEv$tLOJB3k)-C$LrY|Uy)JWCsY z2Ek18^K|)&A~J4^G&BZPQ;amxp%#KQt!~5+o=RFLIw+%eNF-u(W}kx8Ch+=BDOUWY*PMJ7h}hN5=MJQ1RP$NIUjFb<~}p0%b22wNI1h z82bf%U&lT`SF*ZZK}JR7|7b!H#J9lpjO{U!alV`l`#4GLM`47sth2L|w<&uZI4SZ% zZ9`5*42#iUqw!~FEpYS!3j?UJ&AT{2fOw;PfNL`QM&u?akr~|Nt7^#o-G?(DBF%;k z()Y^KTF7PQOBcsT)jd4Y zfq&EcptFm3y&O^l)?j;(duS%jjG%TXK?Z(!9?J9f%^d2Yoy>B!xBzW0>O4L1n{%RF zWYAN@G+kgOBf~^l^>{8NyLu<<=>62&n#q5FyAR(_1Io^SPae!O##*l?B6V%Ug ztrf)I;{YrGYUxZipCP*m{+@-9-yzSGWyo$NxIr}cR{y?gZlUoq>ZmTF3K8m=;o7F@ z-i&kE;u5?gfJTR2GV;ori&XPP)Le>aKGm+QxrCaigkPr5Xt>1Gf&YW7gQYtE3jX{& zxS#?MdqWG}yzoMCwI}r5p}sGm@AHXKhcpu{5zk%ewO_-AK#C^(uJ9vZkmErwlCOiw zVG_#V%Bvhs%}DDSX3gt2Jmr(EG0z$3be1`OT}H?GZRM;&tA%Y&O~NmcS61Yc!+B*Y zHpYrRpx-3DGQQTPbv?)hO4%0Dm>VPUfODslgU*V(%C*Y&x^=Ri_wsIqHKGP7b&yVF zsbNBV**SVX>D2RhA*nKs^CO?a__EAHfZJ01OSM%GKeQOM0)r3H}ysw+$3Sa^OvH?H=|v zgbjamHUi9gNCqa{SOs&$YPW;Gh>10S-#{?(fw9824~rFdj@L!KowUDFO z`bThUx_R?n{usB$wEx()#<%_v+!{v~JUclQIwoidJMPA?HR!lNfPOuQ`t7yd5IZ&Lz=)sDeNQL7%d?*@$!?k!=$8F#V!|+h*Id_8m6Bwv#T5RtzX8LW%6{!|1YNvX0ru4IFHR z56_s?7Nd)>VzBcnUh{qvc^lFbk(M2-z`XVegpXjhTyr3c z!b=9v=h-DS(YJg z;U))IDG@i|3Z+O?8IIDbOo69VJVl&5oRHDan1%R&p6A}mlokpDm39+VOKibvl`WA# z^aj~zjHOe$hcTu@c^{E!aWtaLh|R5L$E14aImqwI$vc4N(p8JNk7d-0Rzg|r032aF zkPF3b%>KM5wz4LXpgae0oH$6)Z7$3H>4%<>(mqUdco3h`RRmS0r`x#E=OC0@4+4}` zTocCW;&=mDFJY90t$oL2#JP+(o>!6k6DO6jFCo~d*Y4kM=mN`NW?vs8ujuRyJzn4L z_wQ0BNma&?U$@2)hpERjGK$eKcZcQK%G%n>>g!jpAZpq$7aasqletVH98<9vY_ggq zEuvXr@upycbzE2Cda4ZncRZ}WON?{aumpWb=S{lwC6p=%FT{dP0DDkA#+M-`v>*0s zc5#o_Ef-pNSp!p}2S02?#5_pUbKTJlcmxSr%zin?c?wQBUs=I_(ly5=57|NI8lBEf z=c*wU72JP)NNxyaqxiZeWyNTXyT*lbCGR#R*3F?a*X7@pt~c%OgV%Af=<}=5i1z&L zyAkaKltz;CIj}#l#*DOAPzIydR6c9wDbFVG-~u9WJwRr`S;%iveGsL=zV8n6_N@+# z;)HoU9AG4GvZBC@dD$FdF%@=dsvv_73ZxoIRVs?M(p*3VIpi=o-15Z`HdS*ZPNv?i?=|_NmQrg7Saj*tD_88O+FtAnPjn5#6>z=WL3{I(OT&->GAl_ z@`?VMDIu2g=GxmYwRnDKvm5MS1U<3r6z4mU#zjJJp=sHBd_i)MVy|@Uqk zRVOB#8Br0gjaxcl3GlrF~dI^GV)ayJa0xUu2Jz561Anz z*cl191_$g9q&}ZPa_U77YqX9Sc|UPE^DC#vUPF8n>sb_~%zXP6#jE(oZ=(^T$2nsq z(*~tl$ALxI*mrQ0jG}7YR$v!fO*(Hj9E~@i%5P;HTWtf|f2QAq9bnXN^}E+{($jTB zH48F4IuHYU+CDlU?0TY*A6sMt4)8UJoxd}!1YEv+q^k0k0o&N-L}%#pp*{|I+m#@k zbel3;JOJ$@p2A4#dKLj{oqiB#8R2ATo1!wx3r%0E2USZ%!)!uYJXII8vu@+CwIVy} zb@0%8t=R))42-SjUM}#`a1ChHf~My+mFpV140v7k{X!|1wg7wdR_!jg&?Y8k&uNI~URlDlZJJrbLiHSiz9Ivaloq|L zFxy6RcelG|!t6m32V3JEc$J6I#!)Mpikt7@-d2k3E7=wv=kw9`c1}U5DDn&*}q)4C2M08$j)Bc(WG7AF`S0ukS&NMB(Ix8c&W8h z_&4pGMjpcY?}aTMn;(`k2ef4u%lIKu+Tv6Ra?si7VaQi^IX zR}lWO$==f*_g15BY4;FBT!kVad%9dvXtFF*V%02!m5b2g0sTrog32>QmW&5)U<2Qv zur?gCK$n16Ke~`#luj1;2D@D=(1_6G8?oe-DZT~h)TYFVEVZjxuX$-*zgI?>Aayy; z76iG^B;idwI9RQdv;gR)8@no>fT@2zyZYoe16i3IM!D#4ZDwn4-?nJjj@%~noY z3K=ixPHK2_gK!5y$?LmNWSoFj*EB&Vy@3!oJ~5!P;ZP^ykqbYD)u|0{GU;l=@h)Y; z^SDK8V3X(IG&0VycSbWfkxoom;X18a2fkJ;Q46YGI|nMdl_5B%9{S*B`5@<~rMt>BtMGplvQ@FbRAMrxIQ z?0qaqNbmrcf%tuZGu|At0>w12(;fr0`amc$lM$%SBE7~Lx9ujELV*gWa=%Pa+A8Tv znL#@38Hf!Bl}#&>Mav?@iay8R{3?|ge_%jy)MWNdQSR{?5j8I9Fe9-ZMm!V#vz)yc z@0*DB9_y(c{CHu0lgv7fV9~}pf>o%+`oP77^ElI1cXXf|bIR!giZkywQTU#Jtc(y(th29$UoEmzctUHqH4$P}l{$X{k|&ryWbwrU$| zxX@{34zZ1dR8dLl(t20`*idzT5Lu}5``J};FU-!!ra9q&Y{SkwM5*Q=1Gs1iTKgP{ zD%D&8uHIsvqP)e02yf&eh_{rPmeLN$P-K-K(zeo|lWEQp#@FrGS5CeOZ1~hV?P-DB zq_))&?i2&0mgI+8#7!FvAlHUl*AX{^1`C~lYDponKT8wzcXD|Gn{kgL7-x5eTPiVX zyyw=YJltw9$>WH}i^XDeN0Pw`fjkPZ!OGvF&6P-0V$8uV(|BWE;Ah86z`9#uRX_ z`xC!gr?3Ar?(4@sS#MsSMYj6)e&@IU@gV=TN6$XHEq(oi-}#e&v-j;^{q@wmUjN^t z9Q-GKyk1{F`RVU`{*V8|&OiF*|2+HX*`NMR>1+7Oi~rRxcfa>{q_5xlyx*^f=<8SU zo&FjB`o}+h;`6s_`PV=H{#U>C%d5ZspZ?0D)2Dy`^DXwT|MtKBt=In5?|-WQA@VB2ob#k>&O8IDRZEqKfIl1gQaJnGUYW`~oai!C2yCbCi-fj*+!!EzG_S)Rb zzS3KHZ)>y-x$)x57oKzq{vn2heBvxKfmqBKmpFaEU^{dPu;)%(2wuqHUaw^i8FZNU z5VK?kPb?Dk8vKp80KKb9qmOvd`~d=+5#I>;5z-&5K^M+t7w<@A91C1A5zkg`prW=? zl(yH7MocmgQt5_x2%~6Xj-#gM$e-6i@Ck$ryfC@(%u#q2RGDSvg z(Zy7)G#fsbwb|(-okxEF=yLN46ZDlhjjXC63bcU{y@K;*Af*Us0*u4ZH zOX>qh7BtMUur-oQ8OI+fxjjKxggFR3IztA%N(n}o7YH_MXrQd|grv+xv!13lA7*@#4*hxHYb@0Rtl~iau(RHY=ovxg7(z6bSPhgAlmy~A6&V&P*hB(+M(86UZ z1D>L?!_lhKL#g#p`J|ZmAzdBYUQUiyremU1jJgB`8qz1aM>&}sWEzR z5^QGzwPaK}K|(3APKdT6umI*|?t6_&PXmYrmR+^kc6yur@nE!lE`xpyhls^6Wxh=e z)5LE^!$fOmGebpKXh1?PB-JG|2*!YmVDN{Mm6ElE(;P^)Wi}JbeYkFoOnZb6oVQ4r zqq&Znc>)Yhu-oKx60AkZ|AD%NF%dwMJ{=|!@|}3u=L_vqVf5(Ur;!&m0BIG_o1Y&j{JRX!#VXd=;Q>AYZb0E7A)$I3> z5TE$2HyHp-936$N#5p0fh#EIZT*Xx)SG}-7CjDik&bdjX?o>RYjBC~57A$6Xg+T^@ zq0?b9tbySi1?-_s-yiZ=%22Xjw4gGE287MQp3*7pi!xb7HiL&Q%@|$ZxZrS*zPB}t zm`)r~gbPKRhi1xm1_DM9iy^(pU(I*jqRA8xKmy3|Fh%EUD!FfIt~luqt|c3I<5f@p zjz1kGHVkuKVXGtKiIG$zHk#h!eW^S}i6MRxehN6ZqZB{|oyBe(Dz<{N|m1`3t{! z6nz4VFJ~*e1LW3Ox{xiNU%vR_@`V?(uUuO@b@J+3b89(!cmDbFt@9gnFYo5!OL_a! zrH#Y#2`pZ`uz2Z7I|V2lja&c)=K$IEL!ST{z;K&K-i4WJ8kazb3f`a=J|}W)cMJ2nHPlHo^wyq9TzgBzv$;j*xDbj1&~hOoGupgsPJX z6mgdbQ$fYNxpUc=IOsLg__HJ=-Lpv~aCC0Z7(S5Cks7eZIC;Cl@)n&Flauby|Ax%OK5ghEcHWZ7+>S{&DoiIm(K%q zzL?FyPiYV8QI|-X&>e$v05kBuL~tvY38>SM=tYu6+Jws@W;h>_7^uk!jRp`C!p{+q zbXZgbWise!j?3c?X(BetNg)Wij#umassb$uW(7`V)x!O!5@_nyXyBoaB2+=_$W?Ww zftPft0sTcGX~ZKOs*z#a0xU7c#!ZWhvs?$OE_9_3!0ap~7JDT(4{9nCp=*ctn0}X3 zjKk|>^4djGL{i(U0*`XYof2wei1pA~*^nDb*+435hseWS61baf2moxwrEW~FohaI&6U zilA!ZqM>}V1CyZY6QoWZM$>ziLB2=%CftDFzhnlb?4BlXMz7!7+v$&o*{rxmaoDom zY7TH-#*9vOn&3@PTC=aZ!LcD(rq+^kHGRra*P0VQRGdn=jyKu@0S?zSimzL^GW$kx z0z1QXY2j$1zoVHMb8brr)MJf0Ozt#ivlCX!NQnz%u@KLA7V{p_1+a@t=Pz7*Q70ns zKv4qz(#!-@KLUt|X)4-7_ze1E$ehdp_J;fB>?ddq&S^uZH>L}^8ITq!o14pS-dcHS zPM{+o-sE7z;y8`>CsJDJ^PRM}6jcmBxA9veagalpLQvm=+VG=|IElPt= zDP18QAV_QSQKBYhash%(K?jPJpH}Ro$Rea7YQc?8RvL$3CK3)JUjk=I?!y}{3Z)j- zLKr)VR3ncRU7baj%_GW?jxM&%mGH6b4-3X7j#`Y+<2pCfX~VHvYMp&DW}u|(uedz; z{<5_-Y4%>t{AEGG=Jz7!adBxQxuDlC#a_pYyfLV@x%iL-YcrqyA|S0rQ1@xYKWM;_ zM#)|o&Nk}tan`azN>^YaZb=Go?606mQ-Y6Sz7AAfZ#opKz_1V|_H9(P;*|HYgw`d2 z+A0fArM7K@aurfh>cha5^1hM6M%&0;?~T32mf_&74AyE`JlM-(F*n;Djdm#|2n3X_ zJ;@W3I$M;|tkhn9$i?@YxNR815%)*5)%8jJNkC|8j3XaAxUukFXVC9a_7-vg@>5T_ z&YJucBt;=2yl=dEERZq9^9kfZ#1UIZPCb`GrGtP}P`IqAn3NisHKd_MY1CI%<}mTInhXxZhEDzj96^&Ny}yD{wWJvt4E$sW3k70zJ5XF{Xq(1j z(`)Tf{48j}2yh-o0XhOnEybE~ozc6kt1?}tftf`4F}aP6s11JFNDPwlFw84}UcS4HR5jzf1-5r^s{B68eXOc_D*|FZ zo^!Xo`Hd&tf!g$$pR2f6r~&%Di$O<#5;|g1rvOE=HukhpRW_8JnjO*e&^BkE0b}o~Bj(oCo{e{rfdz_^DQ+CUVXbo~KLs*j#3XSG*KS8D z#8MQQv;5HDNj3?t0}@6;o(JI&_(-H;=dB06V*FJiRX-u}$>o zIabM`vT)zIf0dq5XW}a)Qm4`u>uu|bgt$NxhYvuIG;VXRHJiYsW;#2R>==eWk8Ef> zak#CbO~D*A$5y~q`=ro}&;lN2#SYuV??RPbf}nsuSCJ^{VJb3374-0wNF$VsilhK4 zNMamiR1LAD2qH154`LG(n}`I+c%ehYfn7kX)#A;DghxJaMCcRkT!CLZ>u-FG?2DTN z7;`;=v%seG3z~Mc?(wL7^(f>l9(D=16^HLYok(2C7}eZhKJ%Aa(14>Mmx)1CaB47# zZ3Q9VR5qv9(L+_);3nA)oSju9S<0#2%7t4+kQg$lI^4x=UP4<}TC4PKR9(tbZWKtX zk}E~rk!&iX4ym{zenk#~WigJ?Oj(`gpnK~efX#iKR82(duY(_(!Mo%@YMYFjg8W}>)D$qJzh>Je;@SFAg*Zs?x7F{r z4VXmw2W10G?u|%ohlr*E!;vj6#$FjJHZMkDS(t-y!4iD5XIX0DByv%=@kuikz0$`5|&&Abet6Blkd(oyRf*PItg>hTx)x7jLf6Y!$CN=(s&iJaQpdJ z?p=QV(xvCmWzVl7*kGqK-Z76BmoDHGxvMm{)8FWH;Z^(+x_Ae-pUkb`U=g~%)_)Ja z_2&G=#zHoGt=YnLEB)d2D;ZtW)Xnf9yM8PCMP$2JU%a^f(it3O-|gn_<{NKzM)McX zztlMYVmABc>ucBEItSY{u0!}r-n!dA14SNV$>%YO#sdA9-D++&2OV2Q4-9rRM=g^?_teRo`6iNS3}Dg$qhFq%4_AMFrw^wKyl*>Q8O7Yy9&Cg#OD|_z?{#*O z{59Xih!L5vfg|hh4M%NP@+}xF$H-Q;jF^PEue^FL@4fQ%%L@%0z(0iy)h7u4VwfKT z4&TB%`e)$qWA$=bBjfXFg25mD!6)xNdiL}`5tt_!Bv?$r{O_Z$O^kv5nZA%W`?+?S0$d6PW)7;G2FZSNxCt+4lF__)h-}%p=eFGcVVGd7bC{^iTihGhb$y zN1pS)L3z#-Fb{%Hq2b36|1?89!Cp+`{}Ny@pz+WAcrCdG@cxsOXaDnm{2zY>@cvz) z@qoYohTt#-?>`^IJ97Bcf_I(6=k#Zm1>TXvXFxf8lJGvnZPLf^{#1)K0`K&feu(CF z0D~L&PX7$eg&hCPi#2Gjmg7%<_E(O_)bcy@#Ke`@Pc{ zVBX#71DgByiS`Q2YyA4PxUWzBc-_7}OZOCg@4avTkLc?kicAA||L+LyrLRZNdtClM z{@?BI-@$kKXYdR1)ANgy@hgy@PM`kn^OqREAV2**lApv7gUoyj+4VP1o&3eQ8+}T( z*`9k9C#{v zSxDp%WW6%*CWr_5!*iPo+2;M^$=`MpPkc<8P3_~HY~oj-zsBJL`~JHC%>nr)?Bpkm1*=hH)l&Ks&U8l<1yz3Otps8~6Aw&Oxpj2-@Eg)^N_rUEX$+dFFPj?ZDkaU#C0H)iR1x zA=rTWmuw5n@ft-yCv7i#mv1f517;$sn~wrow=rdXl#~f0un^@T0g4 z$)2M`-yCVE@_$l61$i@`EoOG$%QAJdB7{TcilQxc?9**>z7w_0fKo%(sCgB1RD~q7 zGAY$egcH$z`@OPw4p)>cjN14TI>TJ)py)yopB5+)hlD6|bKIZosBrMS#}Vj!*ag89 zG944lxrMuMWJlauA&i1=W6NgW;uHYLywNq0$cQ!AMQ9;D+v|tmckAzFt-V%P;=d^h z3VCXGa+RGCE%Fi7FxxmzTp*em$)`x3z#ir{43)b#ryCH*0Y`Mp=Cq}q#A${;0w+zL z0vGg5FT%F^YMg$e>rtvl z6Lsx@&7=pgsHDlcsgR2K=gx6FLY1&F{?Pz2#OO&dWEWIKE&9<@Ize^29=#MuW9Dr7 z4H{O>y5}W$V(;jpqg=Qv+}s21I-8bm*+xLN;??EW`Mz=8mEXVwbl8IRt`VzV62I;x z%K%-db$6AAdCS}*t%iy4aC<1jZ^V;a8{!Fog6y)wHd!3A(k5H9j8PTJkU^MuY48Za zG=W7R&mwGRN?42JI&%iFVR*$azZ7`85r z;2(x%h+!7!W7+e5vm>{99l1Rwh90i=W$<)aU%wOq`ln?{Q6&7Pcy3LgBxh}brcg&% z4OaJ$M13(_7%|$>l3)-4aLvSPj93FX(8Qohm&AcNV=r;*3Zz*acDOifkTnC5y?6$& z3tE&|LA;7z02*6kWE|*?aIH8*K^8{(Jqpgh(lJ*K_GQkuOoJ8@xQ@kLxV^f16%#|X-Z)caYE)H`Lh&;ea}V7JsQ zBC<~OgrETFA)CV@YNC*t_zUSL3KeK6^{}bgvsc0%>CLkDFk1nc);Bikgqz{E0*ksI z(}R(XumvB*wfR6{+Ae50P}`l}H&h#QGEQ;M@>Sq4E9?$EY*-sI6}sMA>2_VL{?L|p zyvCg}Fa{rmvju(<9@!uyBqEOF^61$p2Kd_;BB@=F@+Y$;8spw@yR$h`;z&`IgsR0f z<)O0#(XhN-h`vRtmRA61NUYG_7klk24^L}*z!bkuR3()>T||@F=L}*I$pUGlr6!gF zeuO{T?oR63nX*H0eK~rtYlk+3<&n zyLpza0b*d?rXTg#eCJ>GwqBS|ZmzAq+*}mHnS)1UkRnBYwYl3w*e}dw@9b_3n(h4U z{QfFSoDlAATZZDS<~kd&cuh!nl13;m;C&?c+Onbro!U7&gDYeJ4I-CVO_IECP2Y_G(JjF&`!O?iL zRj+~X9B{9~=}|^)+$&AN&xgKkvM2}JsEYBGZbv~AfJkF(EdcNt%2G)Bs_b1_rdKss z)C!9$V3ekPgY3wNwtFHPuC&{hH|-Y<)z%Kj8x-BXffP4~iHW6K>QGeV6}NtFS*D^W z$*ExTggJ+^Dg^{HtQDja!-w{4aZEDo@=>R8w|p}lsy>drEM0&D64;5`TE0F9-_@F1 zSv|%Yd+bE%1Q^5^%dD9M7=)Zq+zG|+{_K~1{K?**Z-4*e_)h;!{K>~op7_!q)`~v~ z&S-q;-*Nm2&S-4V8I2EV{K>|}i%Tm0q>QOeOF~gAPPk<_)9BI zK?q5>+ma<(V^lHLHpt`jxWNiF$&mC;OROkil?44%N{%V`#1}EKDD)1_CvqiicDC@+ zo?W(QC2!cnRE<^hURpAgZKcJ?2bzFP5}k-}*0ElZ)ZZG(Hw z?(62_QPlK`m^FCXslGklF<6s(vH=lNZaChC4!^u;YzHXpPLM%G&+iO zv?qPXs@EAqebH^7s0wtl+^!m#$b*@M%71vO7%B#3^B7akPbLPU6w-8Q@7!}obT|%+ zOM8ft(q$1_*bn|emsS`tE_vqKx>xBj3|E0{#=$m~0X;NgA^_KhMCE3Hs$JYK+aGk> zK?)f&G4VQ~pzo5k0QQLnD{A42=TIaTvjb_ao@bPUMG^)L_>oE0aAfxYH*>lrr$N(B zi^xy;Avi=ur9PxWeiE*%A~YUZc7|JmFI0_xLdcS*%*JL>qd|m9WumeB1d;U}XFbkP z4jcG@yiu(jA)(G~DD45QVOubX6O*gAuk}k?Y|vG(gcF($AcW<^pgMNIqG)>Y8QTzP z$}nia60w7p@J|9snu4pF;1YJVgFy-zp|#bY3ye1cLf1&yR!jlHyu{SISuD97`K&Q# z$%2`b*4fv`$kz!dHj&j78#PN2WA-cM1i@=$5ZpAOH4NVru5*TW!Gd~1JaD9Q6S36+ z=@hyU8dwXAJEX8hqht*_8uUc+iu}lnkQ$ok#v1gHsj>y3iG+^kzfSg1+);_M>p0j? z*K;CWKz|3~MT2O&sElk7A&#f6% z3W?2`E^bd29?l=n4Mn38{3XU+uWh)r$-%oa2R`&OugkU%Y0S{=w2^q(qV%eG`0 z6jru_8_X=^hQe?X;(Q-z#^v8z7M1`7U&c5aDoe~*O0@|K?VcKooO7UU}{w>Q#vy9+BnsP{P!f&-Djw;xlYSgmq*40)ffZ&?Y zu}R}%S00~n-yfMVAd^7Uu&N{{ZKF87!N_WfMhfY6HYnG*Q(bt4&Soo=$jsQ5O%7Vb zObiB)b}3mc#RVHT6VjHp^MS1~Z~j&ZFTa41M!J#64pWLRM5af$d4yFwIKA9w50o*@ z^yNYRt#v9;6pdMm&qM`&>vQl9!s*zD>4{E<`8#w1=#krn&zdO zTJoW81`m8Uevn}|BPr7$FEmD~@PwV-3{Ro>aa)xlB=cyS7CUtByp|A=P&TXaAxk_Xz_WIuenxfv+B$_4w#>jNS2jD-ng$P^vu|hgyFXS3cmp z1(+lCjo=Ft;8!GZVIWP|SA9vvEc;^=R>H|n5?jn_Luw(JgGUxnC_Tv{(DK^?g7M?2 z0IgacXTX?JB2Vgjp2UfS!uDxM14N`3h|Su#hK z<0mAWBbhMWvRufdFJqOz^`Ra@D3P0qa9?KOk{;==h(!9Ce4Zq#vpq8q)+c~H`YS~V zZf&y6j!RS~2g}P8{9l35Npd?eIk*)nhFP{`R;u(}$|vc%tkHuay%u#2A_eexCv0K) z2BwE$#o#hKMRM+UVy%Kk*4ijOE$mX%T-1;!qe)7X)Fp0v84EZ2IH~wf$_N$ouEti5 z+6U@V0C9pkL#d^qzgVq>R1-S+fvk(rT7bOd7$E(FvSm7_2pkd}6ksxo%RTAhr5sl* zi7U`t=0q2^X0tcfRu`Mbt#fnjt(P{%@+wu=V4+6)@emH)y}6>ItanzOl!xpp1|JyW zLi_Ffy!gaM_kAAip=C2h=pVh^r$$P2k%z(Zc#X!x>|iuSb$kDYuFc&m&BG2T)H}p~ zMVqB%--4eZfmwax|QQ8isBv{mUOOS9E4s z@LVl$ENqu_rADkeT1s_9SYkV(`dEZk5>pj@$Dw-@#GcQWGgSr<2k;$`=XUTXEUYl5}53kU!GJU}104&o{CdgpB%Au71{7hLVA zmT~2o=-+zo{Srd7J05O3CzS#W7^@r|)xsXhi*87mkb@P%gb-4aS|-Ex6p&IuTa(bD z#!&-SpdM8CQT7clDOJtGOeR@EticpUKJm^Q%-2h-p+--w9?W1IrbStA2VeDIhNi(G z9Gc}KGNBA+%Akf7MF%%#Qev}kRQq11=}{8);&=TP zD9Na`-$n}Mp34)`pxjc);rx)Xtw%lWI`Zwi2*MB_r6n#*ZzEIh7)OfE8<*z|xN~3} zU>8zued39o_wit*^NCTm>PjK1>3wW}vU7})@jytvj|Xile>j#TaQ&o(Lw(w|nM?Zz z^9Qn1oHVqO&0>X9O~=g9+KFnBd}LuvrNY(zSL{W@H?&bdI9)H>RLwGAu*r z-m_6-<8gmk1kN^E88_rOpSDoyTuSuaGHSV`C*MX6G#xyjr{(RN8U%sDPIX0mm%76h z128WgvKI$I6f+X`((ET_E;H9@-e<^Dtx`ec5g^%)rc}Mye`@7rC&S@V$a} zgceZYag7S8C;Pz0n0hfiEH}eMv*p1C%8M$U^mIULd5}Fbq zYE+`=8Y)KUy!vY1tYRbw&rgbk@+{u>%q8|Am}cxq_flaw)g}q*@6bSFDJ)gUQZFhhNxV>&bVT#BHMhw<;mvEpsjs;My0O?&i8J&2m zhpbmk2`kW*IvU9b_EN$`*}c+1l-WGd271`*K}2~)m`mjx z=zT1MWQLX81wHsh`OLl4+#xtsBzLc-N?d55h(nJHqQ%rQgoAtIcHA5z2fW`xQ!h*%x^$LgvaRck8cQ~4tk*?@)h}ze9aIbTTey`OMO(@wo`~%rU z@~B}sCB=<1$Y<2#B4POjqo$sjt5;>Mv7$G6G8CepT~q%!{O{x&!MxS`Mos<{j*Fiq zHkTWxQJ8_-SYEI00;k{$X1#p8Gc7U1lAi{BsA1xLCS7D>9X)UMb#4U8$1C!h5aI^80XZ;bwuP z@%3`UY0>rOc0XXQlnd`rpIh7|=9b>E! zW*0X`Q**Z2ry`ybf0Xn`(63_9JkS*hvc$jw`+73{DyuHk)r90#8S_GMqh7ecsv8AP z9ql2CTtCix*Fu^kJ>D4JOxBpgX=x z`@E8tM-_RX$0b?q4S6L&euR$A*0E>4lTS*B`jmhD7AVA)O8{vU)-&tt8?VDax;#ee zf}yt|sNbTF4sPlPmCH`Hym(X#0aDiC*m#{-q%Ozz_LDzJe}D2aE|KDxs`(ZiQ+O(rj$dug{fed&{Qg9R-QJzB1B7<9wf%tt~J=Puk z+F@_B`Vbn(1bhN)3S#so z^&|KC3Kv7?ZgiHES%;OdU1}}el4#fMLVy|Gegt4Cw*~uMi7lNJ0?CSa+_B9^SYQ+8 z1hFTGnPos>&|JX*XlPR&SB{S%sjxHc2Vk`5qX8WnJ*^-wWIJBUp9)o1^Vt;1In`!` z$hps6<;?BfmyS8sWQC~qw^-4~q|2&&-k4RBIfxh_Did31R#GN;pI=J}*4F2F$*ZZe zDsPgLpY=}91#VAsLN_=*@r9}28XTYX;;-yes5(Vg*~y}i4S_rVt+yfhHVvh{F1dBG zj1|SWSyqmp#keG86*4t=C53YA(r!ZKB0;5wo7TZoEJsuJD3%N@m(d-K1f^UXuDF@W zBT{EB4*#jaCAD(0$c`T0Fk0N{NDc_?jtU(IxSXw9@=>SsYJb`9kJ;cQg?pX=`5Hlx z9^N76*qea&LxtT4IxL^o$8X7MNSSt?OO{p6e4UX<2$6(c6&r#n*WU~I2iSEMre$Xn z&_af=_pz-h18P&7j@e2Gc#MjI0Mdp{tW%77jSz)aW|1oA7@kM0Z8(h$PA#uNTYz+j zh{?SF!L1k_4kaLL!NuD`6pC;^+@D*PTu-Kro}4On=Pss5x)iTpUR!h6V&@CWBJF>mD^_WJUyHxsSgonFIA$KKUPatO@p)9h?$4M=0avU-)Sfh;|aGn`JbG+ zqYEm7ST6=X+H+Wuu2#_pCR-y(n8 z6(a{|iyaX^@GUL~Q6yw+#Y)x<3YaT{h*i;doKJG_B9;*z)5zwM6-a9?DJI}H8i z^$*_fiZ5<>i`%x+t6SKBEpAV{iEkD4AR~YMkQVT?e33le$Jx1+D?<;<6LQqESlx;U zO40B4Zt8Z)J6FedlAyGaO4+T!5&ra$Ho1CN9ga3;$+hz}Doa=m-$$TY$dn7X5dZz=4Ee2BJ~*7;o^VIN7sSp0B1>RTAK+@j25Ur(8DA~wN0Ah2 ziG1x`zNp9H1r2u}xTEm?EfRT6vFU(Iig5L`MO)W@z#-0#pHhmCsClr2T^JwN64t;) zwaDR{K$)yluM{niI#snO4hAG2hEF_P$l{A+WX8Eb52cWDSFJ4I*e%g6!zEo;9<$c( zSmQ0n2DrxDh?ND_c_5d+(_|}ISxyk#%JD}D0}gOsuzUu%QI(8v^pe0F%cGMpRMINT zG4=b{a}%zNME)NSaUmmlyGsnAaMf&eS2CvV1%l9tA6&}Fv1qRKBQo-G^#DyE;D^XY z(Zea!`{*~2l_OrV4!7?OeiGgY(=!K1l$kFf3y={+c_?l@yWvI1F4W#_eU6Jvuqu9> z+Ql<@F?h1%MU%L2qDk>TmmLQ%>gf!~6d0UCXC}lNCIhY>5clbp3q`67T}s$Y*Vv(q3_tIl*ExQYY%+McK{i@Kah3dGiQmxpc5-(WF%EJ_lcy7D=k5OBI?j z6d=zqh{`i#i%Fpf%knxD0uz*0R2|T>w9&<mz8q?WY z?!X2pP%LfD#Ue+ikzd&`%E>YkW6o|olW~1@!vfM&)gN_o-7m76Q&F1N8w@SS99HNA zRM-}dzJ~(wbMglPF#vx{HP({dLW{A8j!KT?3vhH_J=`7fmNB_vi7BDg>%{O`kWX+k zsfVefHhF)7;6N8#>nOqhb8+QUn$gCabj=5QV24`-JI;B#gG&v1yeKm& zvsDMZl5>rx#caGR6f+HDh{8sKEb@f=)(ncHt*YKS+M_sa2t_P-B_K=TDen_YplK)# zLaUXv><2?N+&U%gO0!7KcqWJRqgB$}XCW*ZZCfbIY~uun*fc3LD8)pVkpMa%N{H)_ zxALz_?0^NUH&%FVaAg;{l?)1c#+h>c*icnE$9G%XpY%gu$IwDpY{4=91}KP1acLX*p|uFWBbnXulW4cS9O>vc4!I8EG^;0z-App z9UpXuuzK!_HY#)by}NKGbK4My_V*|F8=$ktjAT%?jW<^Nl)n)6xWu-LI|Jw2xbbZ@ z;!ynvB9t;@k4>j!Xr53UE>Loz&nPRrg0vdX;Q;@jUw^mD(i~aBP(1)u`a#Dm{kkj8lsUWCDZe_TW(OGNh=|F56~= z6(xLcgyQQPo3Eca`^KAZyBwJ}&3PG2RUShkJb zUY|3~S~(Gjg@INY=iDD3*f8ZG@&+VeJCO;uM3MFQsf?n66O{+a0;inS#sCMN74q9f zQk1w&%@Obq-$bGSe17l6FPwUa90C6ke)Iod#Ix^y?zvNMj=%6Ld~ZIVGvE33b6@(w z4_`d^Tfg(KT#kSjU;M*2KgPq){rGc#{O^2g_tM>OUECdHw6D}1^(V6&DdGdiw-?hQ zOSK@x1bP7?tNXbyFDYiKkV!s0uTA-rOM&rJG%%xpy<_Hxbq%rMdFSf)r~1wtyhtwk zN%bfAH@?FI=RD8e8$V#G>0V4#2yfIx?|So|E^znxaLh~Ql2&sq2fDWH)<7*h4|sK4 z8;4h?2I+KkQ%97}le2hydj%n-xEl?hdT?1Kr)t3XJ~BHdhTS)g%q8^}8$4A2tO=A_;g3WaSuh$*z+-y=(PyKM)Jwpp zP$4;ztT8K-Nr0Tg3Sz)3KOew0hn5=F3ON>XiQssK@Z;{S-f*yrxW(SaHYb) zhWUf%TCS#a955MMN43Jny{Qo}G>3HHfj^RAdx@bP35^W;*M)Rku8vvvPH(mvYQuuh zXM*JRb10XHSml16M12JBJg;jh&B?+&G;Ry}p`}v5hsw1XXHu~;X4u)I$rxdyX3U-5 zEto4fudDFpY2(Pf;%#LvpOPJGqjahhqnYefxp`t@OOMLLnAx`Rw<5}wC7+as?xf^Z zT%RNZDHtj8pEglq2H8V*K_5`Qf+cjH_ALz-G{u`5k&kD6W*wx73}$Uc4f z$i0^;U4x@2cqZwP7kHjiK++efKJ3D9gU+j?H;hgmJ+Tf#1aWMC@cQVjcRE`aH@DvD zT)Y0>#!&s*+%((o-M=EJcYXLhIDCwPm8$41VmS;KgmCr;Q2a@egpr1q#<26{mf*nI z(4#&dId<%*tr)HhJUu{zK#)Fo_;8dZyOL)q{TGbHgivx6T|xF2Zr1dU`LXxx5j`WD zs#t)0U1m<6Eulu>I-ZoM^B%ecat&KYu{xHxKXCj^oFYgDxBhm8$QCiGrQGG56+fc< zZmVkH{1v7yDRm_S{e5p9p%ByaQ?P%|fGo|7+2eWSD zj#@nefGl-5-06>OdE&R(b@xC&^TE|Cs}B=&NZx5OHBu6rv&QS6M;+I-~?ae^$jr z*!4sCc=mdeaunB$`fDq`MwmmzMgH2bs&N{zTDjInbFCWz5rY)xwzj0VtBwJ!*-eyC zXRmFYn~hVTkx}e4ua&}!Bd%84Y@YcFMRK*)>&>;ojAItQVjHFvUH#33i9ok!E`u%X$r*=QyCTE3JP2rC~I*W?W|M}_7_BQ#g; zvY~+6IVrsv*(Spim_yNK!8*2{a7;DhkyZ~bpk{6|Dz3y^g_U@-aU}u*?xVpWq>ixv z!47}dv6;8YW*QOYdpn~Z_lFAnw(O4sYsr{X1jqQGF?~Quh*{WEjXt=m5!;N%%?2Sq*^Q5GcDYtBcT-9-%I7dF7gd+23F@~xHFPQUGgUi-Yf*W^ z8xa$os(6TP`|DG8C*8o3!|z{B=2R&Jf` zL64D}UoB2V&;>;|Neh6Rv8`96(tOHa$yYp!GX2WE>xL2W-tS9Jbw;8ce^a`YS0>0^ zdUrBQ12rQYY?MINueaoCRoBZh#s$P(2S@Na^%l5UMV1#~te&|bdu9GAfax*c0kDx_ z#cGdFUi}s9fndM-X8BaUSCU^x0vlq#l)Zx?^b~@8HiHpYkFkkHe z{V0kP@?g7$Lz0ty2gGE!MuGqQo?cgQ(~O5~zZ6ayHvx0(mcY%$3*mxCQ)uIUHi!Nvwh)eonE`s#r}?6= z7tfiQaaaL}XkV4$TcCyvYlIlKK|`zZ0=5-tj>&Pp`;xA~OW&332X4RA!`78>r2pN} zX*}DMN?phsq%!Or9)#UmD{(j~RrD~Ta%Qc&g9qpI6}_bh?7eVs0ADFy%x;{$$-md< zQ)BVTLA`}%lqq0Up^FwB4+nZbDfDftV5F+88~glShlzv!Rewy<1%8WOj98e-1hlKjOB{?gbcx`9}~zbSslk10@5FnSz!K?4)AuZf550 z9NSY`OFL~ecy$^cXj)f$WZFh?{Z)bJU!@>p;eY~ZH0YwP{1O;rUYF^{W@&Yf(G`X+ zN@X{wolu=j&xJJskAUiO5%VKZ3e|H>Qs!&%Njl?=TX0ARoGR5zl!_LBD-5UgYyjLs z_0p(t8@i#6W6lOF#SqQDC^}*X`j#Cv(Q+8CP+1O!16``ocJP@c6rA0{(m9tn_yM=L za|})C);%;*wqq%)2;Tl3=j8h>6KM+&Azyv0Z-@6==b)!yjP-MU7f z#CKtld{Eh}guf-Sb^x_k zMG|tgqsOg}wd~BlTAH1y?>jEpBHiwYicot2zMz8&@W2n*??KW>t zh3#$SoLS+tU;E2`e>`_nh#JIkoI1rbd%WLw>keTeS_!s*hk*iZy&p_-}zUczVI{uU7NoC z?y>v&Kfdu2KmGi#oI1t-9SlGJ`BPv0$BSWz^N&CO$+v&! zA8!5jpG`k~;l)4HJCgs?|MPdh`M>}7KQaBr_V(4+Ho6;~&Gq%p2j6=BxnEtoircGU zkFR|V&WKCmjeY*P3wwJIJ8K9SnolRAwF|uCdhG+3Rr_4$6?uO!UxT0W_5ji5yAOcJ z&p)??tJ4Qs$;VOcon}1J8d7(kUw{6&_u$=GyMik-831*zvwi3AbZ7lc=fc4hBicOE z+1Na{@%p*5XFFfNvixc)*52C2TZ7))>u=)!!As~1LxaV>CPy-P zMLKh}!vXZ#N4<}GJP~#3NIGBUL z-1BFjfA0C`R_Nj5MF4wqY_UFvyS0W$;dWzXhA|ELJK__9%Vfm`XOg1FU93p{_{SNdy5LtYeTFKD`l|I+fv*G^X2tc?vo$w~LIMrCOwurVt zPL^GD5o;G-YP}>^aIBF$*0NQLJXWZ_b3VfUKu!m)BKA&vVy}S@Bh7fx1I7)Au3yE~ zjm`DWE4WX`UF+dg0Xe*CTqx;SLYz$%}?s76x1N2C=P5I+Ju~-&&-ucn}*Z z7Wmf*G6=IGI?s~o@#{Q-9UZVw4q!ZQVZ(P2nPm_g|d zq#u&k?VIi~3#bx0CNAk(Xy1MTUVG&gS)^Awm-Y|l4*+7KItD!(=!@$ZQRl4cpR;$6 z;B&SoyzLz>iGJnCO*vovHTO3xw6wp2pbmE{!zz)|u_^G%5d%z+Sn)ouKEZ0czv;^A z)iq}mcmDkTHSm&1*~}x&C#xQnrJ(==r;(wGPg2}~fO>$Fn1l6IUGNC9B8G+G8%JcQ8t|mt$wsjg zGmwq#`yY(=2HDBiguGYWa61SuP)n8fH2Dc~`6Io@ub~Ua@XU@48B8Z=ELJTy*s-U>H8`8ok9EQbyi46i7! z!)9?EYDMm9L{rl-b~He|%&OorNu9<16n^(-c2mPlMysH z%kWr|o;|EjmEL-{WAj_=R9oVW3ZKnL-v$I7=AK7L?4 zS|@Lj8LXcl7Y`{q3c)ujkgQw~w9J(Ui=0N1Wu&1pr4|>?6mcQYqD@p6==|W$nbxf2 z%wGUj;-S%=l?3o9N(Vyq;v#@LXQ_dmKJ=7Lcu^eeMrSYUR=ArX?^Ozb&b;NO%N0yJxkM7K((KU|m$Rn&9 zV|A1ZyD(Bvurl(n(r^1Ve%EiFunHzCZAkL(pzkI&q}rG6roW)lcxx$AXKFGM2uYKk z6e~SJrz+Y%i1f$Vm!$8&A><3^MGz}O4IT734(Fj+shXT|~4 z;A^m8o*4)3ip*!m0Xc85tpdH4RqwKK0M$Dh?oRs-%BQhw|7)+gK)mHa~@u0MArZe(2A*TPN*N;*(@riRd?cQ zFlEE;4eutNf9K9{G`JX?C@!|n8^s7hutu>TN|U>X;wmU?YNA!Vf-0&+xUu}JuZDTn z*up>V&cxL;v%P_9Ya^O1%BkwWgFa0!IBBtB09F=B*zMI_AV9Hyg zJQNPoaJpfw6&vEAC`ylJ(0VtA@jKRHM;H_@3QtYT;L}j10Eimxrf6hEwcQxN`t>t2 zrtQrWBJdOKC~&8AzCRkKv_asww&_I6fpp$);Fr~S3YKxXcsL zWg6I#2NN~#vIpX=`U}b$xwWvGXdjf1UB&20vX~p_(UIYLy}=Q9-@_;?o*Apbnoxea zwE518RVJL9TAoQp9M1Nwr2FC;$*Uuct30xNY|9#fmTg*8wBNN%3zM(F(h{R9EKys7 zFENVL-1EJhh_TnXw*CIb*}d0=kdWO(j6HXmITWoK6+NhCE)DP8M{Ik2pk(`cdeo7k zh51gb9?nZd+$n=c7rXWhD-p?U=`?TXB(0|*c~Rfwj!yL?L|R(1=Y|6b+_XZqnrZH6 z=`dfx``O`)w=K18B^1w^(bmm|R2aVOK*`D6tQ^N|a@=r8p@&6H zd2O?}6PK-u-H%JtShJO-hY9`tdT)0!M2@^^0Go{}{jKH>|T>4%NWr)?LP`|KgMovSKrEe=R^*0_Jug@Sw?J0-{& zfSeK7CieY@Kc=$m=R~9UM6qhYFk`P5Mx$-rQkq%iTZX*!vR5YPA7rz0I7?c;J;?P= z>A0$BD-693YFfZOmc1F`@o_zH^(hu9+0&{liL?uAY~!tz(`tt8JQint!5nMW zzHuD!C78pPnP9`PhgyV@Q6_aUP~yk#1BV~H_HFBf_us#?wSDPg9fmZd4+KYU*ko0N zVlrnFexr}&Z%MzFH>n9F&yFb1Zl)lL!mX&Pm-TV4Q&czkGO=V3JR~d+42ED$7fO*UxNHMRO4l>b=Sb&(%zZwShK&#eb`&mVj^wVZ0jRrG zsVXK;VI@sgU!8!?TB8iE5tTrVI8!skE!*&}!>hjr35W{_K%K-N>rL1Bq)>9jd>TzK zOx8Ky(Fx0g>YO4XifSJT$_VZg&`f*=C&;a+a*4+s;u?9X<2cOr$PDahimYf(^6d_~ zle^UkJhA-$snl^FL4yO{-S>KSP2-)Q!kjZV>t^Kkk_{?Sk4hEBm_-ORKvdvTw zCGTzCQbFSFTyge7qi1|pzjJHU^Y`TOa)pZ@;2MdsbD+@Y74&{MeGd*M(>arr4}GwQ zcMp;y(a^%Fj2++T4jWCjXw%5F7C!ig(cr@&z#IPfQ*v_aCM=mKOqBT{O|^aKJU|b= zHFyvoMs`;=Y)na+miq0>vkXR)f1NZc4TxvmzfZm3We@m`&}g&gJ5FUuuXj~(N-c*3 z@1nw8^}YK^1&4GhmGrInPt{MBU`C@3U-m2(y^0Q-jsHoKiK!1t*M=GY6!V?Kz-jO5 zPbhGrMO>)XYg6{v73q-{m!h@3#mypZBCLFd( z_ZC_sg|+}%#H@Tb7u-=Re`boe&^gjPr(YZh(uvSBBITKT-T+6?$v;>|s&RYSAe?tb zmuyF@YoTDi6zaRlpXbYbV&q27>2Xi3y+vcmsq`qbqNsHHBNd-N3 zHb%qUX>a<#WrAcr7xGiLG2&vgorIq=H^3K=8{j|d;2(ULBj65l1pM{RsZ;!4a|Cq0 z+crnQpUhp30Njz>xg&WNG)Dl26v_BHH!Zg3qYeU)xRpXjlAnS&T&Y=%Ctj)8;b?cl z&PO6cmewwe-Vn!=2<{M98W+^ljcNn6BMXkvr(L!`a`|9+dRzzHO$M@F2>YE_oJdf? z!++Hsg-eNx1lFiGWVI^?>Gnngmv7QEFqS=t*Eksq~3}RPd%-#esoz zI>+Evky)jV=+OG{*%O4d<6%7<*k%Yh@;~w<_z-8$v4Ms-8iJ#3n4aH$F+Sqf4rPx*4IHLSF*f=hTZwOb0+ zfxEH;z5I(83j}^qx)v( z(pJ*bT{<~c{kU$vf^Web6^LR}Q-UPAD0_!3Hb9c0Wd^N*l)hpdc%`lK(787)2ibX{ zuq>+EF?GglmOdZRMir7pj|d+LLU9p zaJZ|s-*gJ#Lo{iOer|BmXAQNMC(Css%cSXhb~u~;gx>b5FtK55~z2F z;~}oVN#@TIE>%$F=?%i%Fu4M8@KH7k<>N+ImOz)>#3-U z*V8v#4SCHb7et98Dc3eH36y{WYRH1y~@j>^2k*reks5Po79cdc66N zC+7XsaCm}uD0vRc4VQrrGzC6+u`}yB>=w01f?O-jG$=@5d$6hA|M1GrmFr)>4z!9% zvgB25nyj$gQZ613L?b0NClKMo@Qq^G=f$br*@*%**psXlZ^ywne1kF&4?Ajnyl3kI zFA7*a`*P^Ci{!YYRr7nlcd!Zr=loYX#ncCtd2V^%DjK(a;UZ(SGv*-)wiV%#vQt+e zjyaI7@CI$WnEOVYNCSin;~cVhjs= zcL(kq@|GB>gZ>9h+f@>SW~>47VCgbaw>EKMah8Bk3FEg2;_NYC==?swT}p4@;HkqG zPN@iq8jY)v)*@F4*#vpym|4Xj1@M2<=7&x`PA4GDvcOydkb>1pwl51#uNz+`V7gNS z&^9aDu-kL|312j)*q=xQDiF~8{^H~K?wtCg#uf{_$B8g@9I}YV#F-IXKapIoiBwb) z)t64dDeDW2KQOCsz}{CMgo|XC02K$3^b<*&r=Buqn=&gmPN~fVw@4NUCS*KjWKhbB z!(dnCfIc{P+E_SMLTkeDxtR66=G1=_EW!$@i@Uk_(Y*R<0GbxyMrc~d8M%SCR0f3^ z?52KXHf3EyjoZ*|_y?2j2R|qd#2|$%ZuNuZ*SR&tjdj$6CN51hLLkBIeclhzggPBA zLVS8T7<%b*?6W7>C2->2a{y5$lLMN4R=LlDwz>h$}GD|Qv;Im#jdZ+jC0C)T0BAr2BnU|CctiLidOB%zziE@gg zx!eyb=rXNgV6Hg?M)|8nVv``ys%R;q{epGLMivcoj@15&-}RgP<-h!&F$#=Tuy;cI z24WSGJ0X4oCEDBx@$+B$0pk=t`Szd8KYiifdPnb0z+DE1j8`b#3Gwe8x3BN~r9b%e zg@5yp+VpkyUuW|=^^@)9^)p}k!O#D*fBEnKmw)a5dHd5Be(@Kyuh|#R{?&hX^uzy9 z=f$`Wei-j@9esWNSInIdUwpppoe)1a{Qh72>;KE2{^>8-J0br0k8N!I#=rRf51+_8 zAvWVR3>$Brd;N`b8=Kjk5F4+bS?8q?w_fkPvA*~A+pnM0r4Vnv_0}7>s^YV~6oO}9 z;S5^patH?No%Ukq2vkUyz+IsZRAs`J6sD|pRbx`+dxPxdCGE3yms zE_A(%*b?T!{NeWoPIqwC5^)>bPWh2`Qn|h+R;awvI#=QQ9l*8W2cqLsA=Ay?YqhG~ z82hTebE-*@itduDz4_K?h^>Xo{n;vStmYW54?@CmQNa){AKrNJ;v{!y%2kEUV4cCH zDy<30s25e^Pt+gQoguVaw0o!Cg+~4Ot_*l}wH+J`UO#5-&-CRd0RP0eZ?-U3DG03S6B>DvNGvYjD^wrV-*K7vfiZX4^Hh&D;6Y!IGW&ME`# zyysruLkF=98CNMXogn9@io7~q<57&Ds75(@aL{n##!84PmafCRbb;At5c|ag^9ta! zMc)u@QP~V5+(&-V-knU71#`D!$a2X}Fl^*9CdZk1@KqOButX{I8@M-Q1g+8H2j68x zNuAf-1>=U|&^-()5(k0dwB!2+gFR@9I!Kq+09(rL#-Dy#KIo6W*FaN7Vaz8Dx#07_ z`P3MJu+u$DYw3Ge@?9^r44_S!I|^iV^0iHXI@NMXa^3uxbduvtl?a?)E7@mj!t zg^;gl*RW_0r4r63ajrI-#^EV@6?WrDOLt5(?GnQ;Mx(*V?w{W9vV|3zkDipHD}aLB zC0F2t74vfi38fB0_ENVy$9Md|@s!Vvj}>wF9lxx<4r2ob$O_u$$sTT`Z_l4*b|u(m zaW(j&xFV6kl}1~2q~tSzl^93e*&p7%gZR3s|H5-Cq#hiW$4PXTXASpZyW26e-(=;; z0{M0;xM8S{fnINH++^+@`344ojr7h}J2$H6BqeTk&IMMg7#vZm78Y68hTM~t3eTI_ zK8e+!KxFiV3%HcHlHE^T*yIYXH_Q!OoXC@O0T*4NSXZP93u+E>oy=yFy&>HOf&fSh zw};E__5#O_Nti9W;@q&9rAvTaFO{iN-Em*^nNzjd_gLKU%YaPlq32?Kc1bOizuF~t<=>nmN)O#c z+I8SsUD>9@l*x1)y05wy>);I;%ZxZHU8%ylVAM*DQpx_Z-z&~4y#_JC$^a0tg4kr8 z6{PiLdBqS`WZ5tCz;Ze@1npvF4Z#%9uYa14xzgxv9@r)T9lNq!mv1GXxlUoZGVF}89e~iRc#k^w@m=|EjqA+hP9-YLr zfjS!V?;k&rMOr?N04!+WsrXwC<2`g1q5MLGe*#flrzVI|5F*0d+bE!`bbe5+YTFs^Bkv9EXhc~f1F+XCkwzl;C!2LxCzPnt?cKT7 z+e>ftOqE!g@ik`H=rxha(wG2W?^2%+xVsA_RDUU|(bE zn1Q01sCuXQ=-!>--W|*b{fcylY*dx(j~Sx!XY9gaIgM5QbId=W<_QBeTd zigsY;ZYg~VV91FKDAZ8Fd!yMv-=_vQ)KwXkTRa!w?vw~;K#2R5bHrp37Y`>02@Oh~ zJ95;gD(eRbRm*uv-b;6A)E6t-O*93ZLqe4uRVGgd@Of5{>T@+dilPUw+H}4I*VrC82RU__Hl0;)5y{$_eNXd-Agnp-w%-r}c%c1cDY?2=|+u@!?FPvDb zws#M%BE)3Qm;s++T-@$1gs!1ck$62E2RxV~o<*(~9nHI)?K{&64us$46b{FGy+dxB z4DPcWBZslmim1E+V(x~ML!Zvu4K)mReh1kK?hSCf-1)M-M)5M_4+MADuoBkrWWybl z1>CL`zdJIqWgL$~s|prAO}!wFd0`HUO5(Aj>xlX85w;$+4u=28CGXCpz|P6E&mD-t zlyIFPXU_qzW~YOR9@Pv^Nb7*$51h@UvLad8vp%6#xXtqHj**lq(qBuOYnH_7{G}Cd zslbc_4XudkOl`uHV2JH7G8Nx|AM=P}B2Yh_aG4>)^Z7~>V(_=CZ zi26H_Ye(cATD!EXwE@JB_l`)-uBxt8q6P5HGddpdHn z$ruNxcIrgkwe5f^YKDeYW-lGnq@=8DdO;AE_?iXUJwe zH#uH9=K_~X73!!TWHIsqP00k{Vs)WOj(KpUxg84D#8nJjuQ_r*;6^-H5m;6r>ah7! zWR4t3l|k}p4U?1sIwsj43=aHJV>4jZ<>w&;SPxm+kQ(YCPfa7|CPXKaz9R%P0fZDs zrbTI5nXEfq?VISlga*#L>MvEYE+*HhNMlXRmnB343(P`CP}aGszE@Pw>RM+8TMH}W zR@a`(;Mni8I3T3F%m_jcLiV( z{qBs#Eo;Jj0~%iGWT>+h(<9rm#~9ciPHp#{Uk0%^GMp9L37NDX#qy^yQPqz-l}ph) za3?F-N1>OfJm_HkEQ8PpwF!zG&?z8y?WCe+rx6|~Tr_Kq)DvCmGE%qL10InFKwmKj zdrTyLQe>ILlrO*Iw$Z-^6y3))^Vnsc%|m8O?s{%?H#$6{#f?-P(RDV1s9Gv2e#7w0%$u*Z3oy~_e_7=U-tV_A_yxLWLI7EW9d9X zf$zczKs(TIYR_gkI7dx!tKNwL5FiwP+*GZQR6bb}cfdlq;o0*;cZ~>{BVtrUv#neP z&(yoxwCnJ)^tVX-B$TScCN-r}YOdpbp6Dwaua3_p0Y}TSofYe)O2_vZaU13D3y}Q!}TeY0ReqWYrKrxvkd^z_bwir$dMVU>3MO<*gnEGYV;T(T? z)tNU{o)LHIq(JGUW5y3IjQj6Z%-J+N+)-gc9}QKNKd_)1pT0Q}?dez?Bt_no3A9r< zp6$0EPRF{!LXj!;Ev+O}&n!A@ZFOd`mTjJ}?qk^kC*6LMZZ0jfxK@f~It=^EeqWYv z9ZB0s0`c7>DdQ4yuh(_z7+Hmdo%SgwT_}+p43vTD#`!va=Nnd9aNN#jkx99oFw93_bSFufIx7O0in(1X1GZmm56IiI_+l%#_7piR1T$0oJEE`RF-u!Vd(T2w8#ablcyH8jjO5}%5erT2&q`!2BP4}st$Olb z9F5yrx?8d6I7CAD_O1Q?nFvs)jH`pzOHLu&6Ofy3bDnXb%0b0-SJ+T@UVyI;<_iR* z=YE>h#L0QqQa(yTrKGs%+`jPo;>4%K|8jp{M-e)+)e=CYOzSv8GxZZfZNHB5x1&BB zo}EkYZ(q80+8uG&?>*p?tGMtCPwD^cxg&pR=8=-RCu58LYe2iA=EYN*l8bbSTy5&( zKANyk7~h`XF+vy@N3L9QS&7_=dI>?yu$tk z`pj|kD7zn^@{}l_PEF#O-G0J$yHe3&Y5laBwuwOUk{MJ`FP6iGpUSy-w}iV&k!L(* zBMqF!6QxG}43R8gxHp_5tAiA&mDJZYO!33e*m6QUP`_!w3gXl`2BI(SUIu=g?OB3* z#uS8Rr_y-vqc*P)bE&VXn5BI$@0g2CZwb@G@bfn1MN>K;so`6QqCEi4qy^_vU&%MY zt76xPL6lx3`8?u?PxZbVXWN|>l!wg(#>QoE9LrOK}gJ=g)AuV30;$Qfmooh9S)HPVonJs9uRGDz@f!`ZAMyl?{p%Dbtm z(5N+P60;{=l_gQC7NZP8r5!AfO-rdhC&Nff29tH;|173B*OqY}gGbYnP!sGrxBS-N{|$J#1G#<20(fTwx z1qU7_a{ep6iQkSZwJ#hY+5l7@gnX@>c3waiWdMo2oC)KUmQYn`g}gd3+8~5aDBd+? zJUBma`8F~e$lZA^ln~(_4Dou|Zbfo+T+*FvZ_aO%CZXJACMx_PO36pSJ=Gsoaxk6< zJIpA)%261mB(A=IGcH|=cp3-$2lEH1)#I?fagPtgeG>DkIL_K$6~hsR5j0b;kO#`2 zw8KuxBPD`oUc1qJxIbuTGcD3ypD$cE%g>i|^8d$rS-L~9hA=H(lfR*6H zRYjdlc{NE9#Mo|#QEE!H^tb(Gzb_?W9ie-oUnZ49DbJj?u&|g}0ny zVbr2Kx*`!aR)}}*AmQd@`k+>re?#6c663`HVrOHCsMC!_-(6y0rzi`yR>=0?>mg{& zDh0UxW%}T%Kj!U6nzBXd-C|A&3v+Sod#hj|?~9uqj^W7S>@wd@JWW&R|Fb45GK`INKLxTO#qh ziN~SBxGV!CUDU8ELS|vae#zHXRsmA)N{R6%V^?zXN4ZkGU%U-jJEvpJsywf%->CiE z+N(AV^EuXx>gH6PRSSG;eTuCS>x5Mw8TX`m*~7h$C?VZ?Se8WM^c&?sPVi`p$WE z0>liq68j=PUkTfald(JO$_>TAedx3N;^UhT5T@dhyTH6p5DACjp^%omYn*D|0rCqE ze9P7I-q&5nTj5^IrSxS)WTg@*Y?~J}Xc?I4N%f%=qmLtVH$DTQyYYym?uq9J`28>b zd0mbGK?9+^ii9T+(^bWk#n5O9QCQ4#H;(U}SS;j$k|oDsiN~gVX^|w{h)z$ZCzb9r z6D8)@2ZWA1%Q^{}&eU>HVeTf3+e|Y?mjqKII}PqwP~4zeESOset`nIsc=C91Pi-MD zVKnvy2^igZPT7^oHev~w1sI2wD>HLqAgVeG*bXh51=yg19T$j$oEFJP52o=3EJY`l(} zYRBb81pX%JCkv07ryvstXIrad>5`l~P<>fXeS6+UNI>)FD`hGqp$6Qr$(Sxxf}-lLp#= z-&D(dh+Fe05n-I(8jeUMyC#g7y~YkMs|{SWRJZRjzMpaqlWkrxpDm&CJE!ePt zhK@l?rR-|4t~0aZL2{rT^ri?77>sNlz#9qwihB3nZb2{RNSz10xCJF_Ykh4a?m;On zr9%19n9tHz*3(gpXlbadUe!9VZST6^M>TMztwln-wV5l;Ezqy9-Y##8qMKCGf9tt* zNxm)~xstE$Kg1FA;jOqwN6X*SYgV4VsQ{}6p^XnpT3dwZOBz87Np$nXNR-&& zWbjoV8~{K>gqn;mF{W?pYjt}6;)x%F!dsaXd%I1*;PTY-EWRyMI<7&~si(;`Sw%io zYUcB>vFl5@KZut64sJVkx8*toMzkIm&;lFIohR1R@jMNZp{BoLk>PZ7$nW;{?k2)o zy5dUmc*whx>6Y6qOjc5w#I3Md%%u)ffK*ueBwS8Q#~yWgzX7$XE=B4kCWEQ#m`#Cb zfqvt?fh#GuJxfe!RMa~ALtYKZ3zT8?PA9l1l2`HzMrw#@AyK5FpN~Bm4 zy~WFfXvV%G##hpu+d_5ZQp9^!tQ%!?lPJhN3Ka!x4Pg~~t=DnmL~bOMvKn{LK_RD8 zGD==<;;qBCtDaq&G}W|BCA3y8yVDa5p9YF_G7`RhGlesI-o1``sO*y(}Om5quJbmtp( zM`D5t02JAsPrBpDy#Ce+8J<>0m{^n>m-{7Jk_xGxjhEsgYOU|~z4s_;&pNVeJxg&+13n5v8@nEHKlop{<`fPWy zOyeS*$_VYoFZsR6^zN*#r#i2p9Sg1H1}o+9AosSr23vT%!EHn6CDrjr_+4Zdb;=Nh z0Fd5{fnbz*n?mQJN8!w@vpOPsE03#u&Fta+RHS`6ov`$p1<#0-hEuU9Gbi}SJYn_28d2il@ z=XE%7#PPJ;FuLSSd^Hrq_ITmu8}79rD2E&4hM#)me+2;c6mp!~YA$f+b&K6B+87cK zq8{mShNG#h1VPV@#JIS5YAVFketd$v~@W~&qh~0QUGK)D}`@OlQC33-6FQ?klBC9vLs9e*lD^JQ5G&ulC+PNK7J2^!VV{>*{ z_&T#*0QhVS2fwW0VriG`Js148srE}KExq=dPw$y7*fhC^ONzRGYv<)Lva)ExsnQ7* zJVDZh*Z{f#uAmCiB#xtMpjMyc%M|h4GxdDU(kARL`@NlmEQ}dGN3WGGb9lAD-@PX> z@+02`$L4y7VgB1w1b$7tr&~FF5Q7Ye6tQO`8ypSGy*OANUVY*vhm79a@s)dUoLuWK z5^T;|)aA5t%x{_{BF{Ie#ZnJbx~Mf=HUPhn-RHzvW;=$NjvG4#6`rvqWoQtjUmYIu;x4;?%Z911Py68ZkLzC&7Qw_K?!$}><5eQEz6By5c0B%Qe?+_Ox;kzJS zXL2x@LeAq5Pc5U6J}>t#&o288Tk#8cm!Lsvo=<7S*xJ7T#d?+$L~8*Yo-K%u92i2X zI|a-yjQ-_l9S8b=CMN9#2^bhZ)wYSxHh+CE?q7|2=UNBQ4Ud)amEK{n(FWDN%UXU; z@17vPthK^!CCE_bNUTT~UCJVn86rvN7GsK;vFhou0e`DBnA2aRy%G?+y@P|%gH;bK z#92*mAMOJ`XF&)=30z>Y0UD0Kt&R^zqeS=07-`YIKcU$*jZPE&FBo2}gKnuImK+Ol z5sD{i0vP2O?jkUf)fPd?7fX({G}_z+($Hi;6LxJ`cl@s30{@7bmRz@j)Twi5TM&f3 z-O(Ue!f?_1Yz{p{-Mjb9V=UPpM)j#dF0mzqZYdp87T9@7}ovnkYW;*_OB6)z_Gf*%RkHF!Mrm?>=6NRU;eMtx@v%`!X zS-F;0GYZpbYGHWzBZ9dB;h$Va%X2TOwWf!ZNn^r|^GnXhDY;T|#hA_HjW~+u&baI< z816v%uRJMmDHdwmTaWCEzlcX(X8{^Tx)vQ$4l*Yg9Q4t(mCmc3 z)lkE8wr+*3b-oIjFdVORARF9@yo`D)Yr0@Ylg>6nRPPM)izYV!sf0$Ru?$FT93%V9M99xf+0 zdmSNJF>G27v{#HT$f-7aA#74{Lhea+Hlz1Hp#3|g904Ex>pTDS^S^TH6#xIlQ>RXS z_lwV;`szRa0)8c*&n3T3o%-CDe(=Me8~*;+|DY~M01(NEgXv^nX3fi@A@BvE3ht^M zhsHY?rc~V#yKuPBc_k#7xTs341kp&+hSqau%RA5#!RQv~Dh|}_NOAY_`nDW$3!HQc#4h|89$N~*SHj5;4@MrEDGb|UA9 z+<`E2>vLI`N6qd8dT9V1D=F!qSb4w2u7upK5!NLRq#Zx@jFFgNz@j5CiWoGoc3#1% z{P$uzH0qXJ*Vzc!Bm_0WwppYWLu{%-)GlcO9c$#n3WwD0GCg(k>nsg4F#+?-ey?+- zRT_y{wT#C-xtG-RNvM3F$elRNY~{WAWNzI|;X4nsXGe`l(^Et+<{OGY|{LK8NlPsR8Y@ zVvr{!cN|t&GHBW|G^D#6+!~IFb}NXdR+cAmjc$P}7DSWvQ1tjHtEl=M7fH4P!W^Fs zR=IyL+jOKN_7xa4{2vh05{OBjft;c4F)^f?$jILe;uZnR&1EYunk5F*R~MGa1g+w4 z$tsrshbE0$zn}@r;+rf9+8M1yfR!RojyQvP&2W5Uh4+WfNy0 znT&TN1K|Q6q)~~Wfdw0Nr`nFf|KNFFz3w$-wNmy}f;-4c}@RrE=^w_`?~ z)YraZeSOkY-{X2P0sUE_uOan-cYLm)E-1=*BnsPsa%O$YnQW^ou(lZ!qYbxQ7cHK+=?Rr1j{_MaT8<-Guf5&q zU};ze7f*84Z+EV`_$_AW0DeHsr$kYhfudRklI25C>YKPCSLUXOL{_3gGEJZDlAtAY zw`BHgZ8lrO^qgiPe|A;;dtFHztjQt{gbqw!=3Gh7mN!J_bM*cCb$uCHYyfX_AtBGI{+AQ_IdlxbTBwJe;8snW_n!y z;I>YcKX|&-hBMrX#7E)}TyIs2pCErAe8?fR>4uRUg+qu!12!#T%-KqiYT>RMK$73M z8GEi}4Dpn3gvr5v$_dzB_uvpAK?nOG1|sk2Ho9NolT~= zx6KhIl&0i5*@8 zctq1jpr16PYe079(6!c_sq^Wl&h+|QqNVfN<^wjEkwjz153R}8A?1pPNPCLa^+{9x z$7?Hv2_DmQu_8CxIu)TC0dma#41w6LQ@OUJsq`81b`N?LIjXDsL|)J@npjoj3a#Xb z!d*LSCr6IiiFC>fLXJ9<29+Y8k@Mmhjef-!;9lm6xS6yH6nci}BB~{n30y#^xk(XM z=UrB%rPnX1^+^;X2A?C;TQYo)NOA!e1njguzel=)Yui`P?jd{ze>dI~X2c8B;aTHe zHeKUu(*a^6m?B7rhCTDS3pW~$KY|O5TkAbKcQwP)G$Gk6LXa9jWL!BcQ zcLpIYaCSI5Kn&HO-|bwwe?V^>Ld(#d;HTSkch}Ey&s`goBoz!((im)fRYi$akbVZY z4R=O|dv}rDfcLo%5xjJ-_aKZ7=}8bgHPRN9^xVKo`{aZI9C!{0N0fm{6IS|#k+<;X z?JecSlj$K+8Il{JYOTUdD(*BLUb>gt_D~$jDc8WQCz|gK6)ipibLO*P2tMJu^VOXGJa+VB}ZNRf>F~8A6o- zIgC{U+8bKA~TT zMarC}I~sbj3(w~M;JUK;RR!E5(Fqi)6TsJtT{_mNm!QrDBFM)l&<>Z z0Gwn&D0KA{eU4=cAIok%8bxn}Ad${i&bNxhbXUWxle2SB35&ilIF=!T*JpW|+3dSXQ zK6}qsBwgl8!;7TDGO&LiktZJ=LP?{jap2Z~#4qP4HNv*HV;h6MDq!aU&U;8y1%KQE zzSJlL2(scunrU}k@Z(iqw(MRc25>F1dNW35G6!VE*T@Pb66$ruSd zu3wf{v1+OlPq!yfL3|dB?g|)unzllmnl~a$t|`f zIO;i=M})&M9X>A}9OMZ3@eTS3R?|DZ9?`dQg|4qu!eXV7`-sus^OtxdM<2wq0P^Lo zbJ2&h5jWIR>vc#XI;_kUFGPLUp202dQ23DchIZI2`egF*xGBe{qG{wE@hL4uS1sjW z251ABU8OTerIpU`w7D}^E$?g*bsZDSsw7=YTQ?(_MIvkGK~RaC2Z063^-_X;J55I1 z1{-e%Bj5Q8{7HDF)zo)DA3-p!yR*B)gVh)tBQu zf-cJu^mZUVq%?~d#ekOb)#z0DSG%`1z;a1!mS7vrkSHv#swc;HAyYU%^)8nN2q_hJ z%SwxvmIZW&k@GNcD8&pfvVEus8?17C0Z2aByUQmJ;Il+{A5O}un+Q1UPAXu-I#^JvEBo+x4B=4N;RY&N z1#L$zQZ<;A_15ULCV!JBHx$%5Y4}RDXH!|z09Vsb0A<6HE*bbNS1238zk*x^_r zV<%B-2{c-$q|D}ryEqQ0M^c!kOBYPBxC#k?CoUUwL7dIe!ft%tlO)JPcWv^Tj`USp zghRBm{to{9a%Y2oUwyTzS8C@$FLiFnEgya_$hyPO=OKJB*Ii~125;D383zwxkuqfM zKnCj~ z8#HAq%m@o{*>51sU6P`@#S8FjbdI-xzjy3vj(|V^F*))7doO0un*wjwYB6y966cM*S6Mt``X5^ilRnuuB+D^n0%er}l z3`}|YMC%Zrv4CTw(A&a>Ug?NB={D|qo%b$X`1YkhJ~(RUT}VDjQE&Xf8>Up5M-!ks zasCVVJMzgci2HYe`|sg5|980m6VIJG)me=DKm55b{eXBs{Qf_>_~{ET{O6}u1^0pX z|AhF@KJvbP?YMpY{ulrJ(-;2j-)_^_$H(sL>woa+3%~dux9RJ9$L{MlN1wj%3;#)* zzCJy6U%&Nd=<9FS_4POYvLFX><3B)OWBlg-f*U`1>Mwt7F>WAt%Fq6T>ELhv@O$6? zA3uHZ#sA_je^YSd!S{dj@BaPY`_upH8{6AgU)$(zbT-%5J0E=O`R9Ih?dpVzSbyzn zaH3wiPo_V6{<#Z#+=gBQOPo(9qqPg8(d6FR2QHK4xy~!{{$Rd#jfNW%xa~f`?)UT0 zZS^4Cw9+}Diao}r-Csj`vh(ZDKldJvvaVf0j=NjK0ZjevJBOz`>t{L_4yG8<=9$jM z=DCg6&z(Kn`TCXZ=byW@-Mf9R^PSgT+T7fIb8X|TLGSJLH}U`ACG>@%K@6^KKR6g5 zDjKOEdEGgpQeOM0_i>M2+=KZ$RLPL*YkvO2?RVGSik03QjBn5Hoa?;x)?05r|J+5` zpyxX8PKT#E8*g^5Ab`$|WfQ?6XU}cEA!9***qdhu=Q?)>gM&2$2Yx(w{<&}Q`vrc7 zhZM)Hp%|S%`}}jyKevLsOfK=*-h2h>jGS>_y|FUGkOuu7@wn1bbiiWeADN#eC5P- ztWtRuYgG-oSgral*1I^k)#KJCN_*)H=X#LL`ZksqZ3{__zB6;2`NJs{a4pxphn&N* zTpuF_1}|gHkge+~PAUWOall%4S9$>GT6n((Qt$<^ehS9X1gUPW&nHtL^!3Ao1041N z*FWF6J(}$HMz}TzNB2yTSn+T=x(@1q0|lq0@66{1vvaS#W*Q#s-I-k1^Uf>$)#Z4) z!-*-xZ6BFxZ0^;Lsfw7U*FeDsIA+N$n6ENK=x}!a?E1QC1@ti-q4B}C=2|4&Jw6m( z#z_E)xlBnthFJJDlRN=PPjq(xX0mes{{3?g9y|a_(~;y?#HWJ9K7#f814lh|`Jgf< zce`ORW^oL=y;&SM#(lK@p)iNZgMAbr@`)VdY#e1b8B83bOFbE3`eDpR=?t4d*jOr{ z(f~-DqHBm~s>f)wULXPv!C5N+C|ClTg-VN}et|4e$-6k_$*BJw;(({(=`9E^H3pTL5iL#N&tS~JI>amHAEZn(HOK6fIs!zST00vp8hF?FotL1OYhG~Z2LNvJ;cLyw#7S#S_L zR4b_G^DJ{P|wujdXFbN_hvf^A?hxTt6gBU2@@m3l@FSP zIM5j{z>9})&3fj49eV$^Xtn1Y+hT~Te}~>Fv%~Ax!PNi;3kU7+Nk^(gjEBV$(1F=N zZ*xv-WC{+vo}12IJtWrwgATxEJ#sax2nJm-r5qOZv~q7a?oaL|+9P+=FV6@2tD)Ca zX_ZsvHJ1fuS&1JaqGogmBPE$D*2}Uf4kw#_ln%i0hNQiXbn*m|80ZT}we}HVy>n+W zo4ZIVT-qB&gCkYDN(WqU!?9FB3R z{ha#yg?^vrItCAa-fnO2F3T~Wx(@bcvc4xpnU8_FH)5B;Si?`3NE&8pc`l68eS_(E zFn>(YpFmY`wB6;_?`Vk%AIA&@N)Zty$4;?5B97cR8+ok4@b)h_S{ z^QZz28X>jVJ}wGCY$LgcVS=kZ3Se?LLbkF)c#TliMfbS`WH3KrU&nknN*}pAustWV zXz7r8df{RpZ8O6Hva&=ft9%VA)nvNE+3W=7n)IA&R*-hw9r%t)Kk$L$$XcsVh5?Xt zsq?9RV;tTwT+XK!O~kI{;f?Y+7Bn~?+kPzT(neBp@zTWt7gzb)xNgWdQV^^V*G+=; zw50bB*9O3)Q6oJK)*VOt#;pgh$r;{zGdk=7#e3buT~7>NKN;cTd1qc}DbSlc2AmRR z*N79e3|Qgl60D9M=o+U0(SsZvq|q!}Kb_QP=KJ*|&CHV6BZI-6l0S%?_Ym;lb8_+z zT`CjUb2YFJl2yIuSO$(Z_jYlX8Fs4U8@GBN)0&^$qM9jMzL|-VxasW2a(*I7Sd}m>`IiJ5 zf5%*wd{!PpyUf!ib1f*LrG~2zc56OpX|QqKx7F8{%&A$ST)^(DDkYjT09#N!8AuB1 z*2Y^RUZC=WM+H`H*b`3FgWc@7=$N2SGzPM8iGLKh)-5J3#l0+U+Z5;b0ymLJp^PKY zigJN;ig4rGW{UJz|rpDs-d*@n)V?9T=CUSb!@`YoS*!kLH@{mMkLQ_#7_`lG=^meqWoIF?aj zT&NEQrTLEs`CfWHe(4$dITkiHor&5{ z5Gs>AI+of>=qgokRBVj@pE~t75Ob8rkNs{Q`}E^qY!|EcvxrDSEYd%i{?>nm__6;% zW1kR<^v@WRq_Jv@4dsWiPya9a`uwk$d!zo+kF~uw>Zk9Ye)xs8KYFqA=?gFZy|4b? z68rQEf93w)zxluZmEV0zW1r6S&-Nch?9;~EZ>=Lx>9Y-fg4dc`T8o09lHe!qU7q$E znMnwgI0s!q%bL(9zJqTOAqEdFxnnY6L)1PcKVV64(~*gU`H(;LT}r5N6CiyaN<-++ z2UoA497m7LSrT&X@3njvO#dQ`!l~TK=3FNnK*jQm{Zw9QSJkMhSgHEXZTJ>K7+it| zy9uI>*V^C(a*wAdb|JWbe6|ER4!~RxkVA-$-y2*X%yrVLMNl&8yC9mf9PuntNe<(~ z2>iQ{42EkaA0J%AA4z_Af6^cytF0Aa;i4g2oseTVW2J> zjdq};R&nFU7%#iJ4(&vokW9{VAF2a)3UsjUaQ~WKFHTQ?Z`yaEJklv#kWg59Olu_I z;W5~~(IK)WiW3o0l<2^FGB&g+zSnsb<1rn&l4c}QNQN?(%HlocNE?` z(9ghGU4&@S*+~YYwn$_VWKY+8AQQaY#X!BN@B4{sz$6Et{k!gEh(KzEP~G7w(-3qH zU#;hoJo#7TnT$d9EHehcs8v zd{_)Kyz1SwC_EwxHlnr?{?FYP(1+T-plUq4U|gh^;+R zPS(-s+z8MoTZv<=o=6FhNoufG4)uqX5-~~N#v2xvtj&)HbuG-LR3~6Iw!8{`bShqV zt*0yPv#J2+i`6j@&mR$pidCpD7Q&I3G>}D|dxe*S)-=o%f~H(ChoFvjj@TJ&g6C=g&$pK|8_R0;tUZ3Tf??h!#C+5P0iX{1!v#F@%Q#90!Q zO8mEa{*g~h&EXIM0vsdtR4A4e`9YI>_fBO*Dkr5FdPxBvn=TP%Rb{JY?t`7n1BA1sWuqQ2?0-3k5Tg&WJ}@LJ>!XjppHrwT|>L6aK%ITrTd=;$^M>D&VGEJ2fiH2}n!J8Tx!k1VbMIg`YMZS6?UJH07xiWtmxhT|RS@Nrn} z4TA~z;pIK-S9Ket2~zxfcRu4ux8b1}y*r#T8ilLsR|ck3lgA<2Uutn#i`UP-#?DoA zORd}3A}Lf`t+8Yq?bl5D)>^HLZPf+~)zD&~_dtV)SbU{(K^<8HE1g?palCUHI=v?D z=^Vh1#?qh|LC&&AG!fJN$*e;ku(@BS_)>KmWtfE&9 z%?N=NHLjl{BwRmHr;l%}wYw*1EyP@^>w?gF-zuC<Rt!V_Np=sSlSys*zr+~*qxzP%nq^(LJ=h3ftJ6QRZ5Co4$_xd@}}PBSKq^D0LwrXCpU-5Gjis zj?Rg+I~=KL{Xd0pDGQh6fcc^!4D8+=5}>vN8f90Ex+?U&J81e z+Bke_x6c$aTI~QX*u=^mDlPU_ah9StMG*5;@Vj#h(dX_Y!Kx2OpxtpB2F9TO@@D|% zHlWOx!d|X^GGKP3ZWfp<(Cig14`!k&fN*O#_OP z0kGbn71+=M2zMOJBqClemNhjOWBImT6a86miVTIJtXDTQWxqJQId}3Xyns{WCPX_J z%CaH);@%MXozxw{9Lewx%#f`7vq#{^1l~mmoWnODFkall8T;E!Se&2AP-}DLIK4J? z7(YipP7iw3CDy}7zQMyW8R&6`)%|3Wcbq}>S6b$Q#c&s7H$nNuji^H zgZtpmW6b8N(@<3q2XTPwqQ-E&9Y9${9?s6NA3Ax(X{S6@h$i&(&ts6!Mn5*-a7$!f zHL*9`kY!HBEu{=CkkZRV^e{I7^AUXdQ}_oT<_P$g$PsW8zxltr9|buAerluD{V2#0 z@JIiR%MtM6i+}H@-cEA_q^G_XppNY1J@)+)wE~}+{odM}<%g1<;_Z?=eEo_GUtaa6 zo)FeTjrZj)MTotl6i-E}XoQO%;Nnvl5ws&}pyWetDjiX7Ry)Ge=8jx78TG6%*?+6=Yk|n(ac}* z%2T*lYzt>I=H@1mwt9gQ$C-;13bN0LmC5B7G`!5$49Bu2eL6*DlIA3)NAhMr2Z{i}3* zO(oHg1G)jGw~cc|)Po`A0d;xV+=Epfc7UgNdi#)<7tNAs6E1LrD({CssW17K3r=t! zM(NHJ6^^K|DSj9z?1$?vOo0qPfBro7lBNNvw+W_65)M}3M~z~; z1uJj(uQNgXOz_?MS7M>e;N;Jmj10lXI>$Q=<0nN*X<3m!b?C-k9~$lvpIQfFLEx1- zVr7MbzlFA3tU^t!d9zwJZndxgKQ_D@ztY7k@PTv{^`7OU^RIfuQ&P@uz>s#ocH-Oi+~T!hq<4!nD%h z*Z=&#p|5Y&^>zPDoY((^zJ3+I`M=&redcs4zrxQAfB(1sOz)#UgZkz^>VJY%o&iz4 z%1*R%r$>?hbH?;kZhr@AlTX+}{B2&xI@f$cs@iexh1@=|QfN6D zT}=Fh##WYtWsnBmHbM&u!Fmg!2$^7<#Np~3>swNmUP=9z9ik4JM_s{cr>Np5w^)si z2nAI);WtHnv)Y-xt$|VliPh$~oE-&u%LS5HC%J6$E~;h$cypMtW33V7R#9GZw5nY` z63G~WqTQ(Q5k34khD1RSM=Xto+Y<+Qp@|c)qzVA=1PfEaCmx~>f@|%>R=*Aoi_4m) zhXZmlV-7$t;6t$#!h>p*_QsQe-A@N@e%1BT}!1#PIFBP721*Dm<>P#K) zDRcMWA#Zg!+b!_)ixjx5Jk89zf`Ormb;-PFVO)5=gEWzsnaGVli>8G!EG~j!b;px? zAk%ELi}Ki&Es7|4{?F7)=$Ja zOEwFT&(?hHZpwKmeuGD8Fy4-!#%3ze09ogB%rc0H9Y4q7q~GnW9+O z-+H7xqFOpzPR1 zCzdEE1Of+B+J$-GPI)4VkC<|*O3_k>{}oCkf;&1Fwzn^AedE$a30@vgI^Vc(edp@6 zOV=;GzjaBK9Oh@Pw>D=xlQC}ybIHZwrJwDH+0l5T4_)L6uo}zQ=qH}x>VDqQ#uCum zx3;7O%&ghLEQk5c-_x)qSZA*49D(+}{}VS-wTma(G(9l`$*AXQbv#qasb-ju3Vzo>0>(LBVHu9k0bU+ikPM*#Qm?4*H^>V+^yPsV@kj z+efCXYwfqLR#<+eW;1P>cB1W+w&ryH*)lCjjkJ}_kZ6WaU{{>mmT(;y4Hhy@8(zM8 zon;Uws*?(oSXU*5K`2gJ%598eaFIx+$ptR{5~uijf~y&)dEgaW@*tvhG;f+7S%rMc z77gFs2q2V_vHPmh#S#Sv4F_?&jUP6gN8|BXzV+sw59kFr>F#a#LPYT!Pzlm$-W)ZQt-@A8!5jzJsLtgZ&^AUcXg00@-xd6^ zF6*SbGjGt>ei2UQnnLmD>B{zdJC2e)UB}%u>&wkXV?aWnmC(vYG6iU{sNo^8uc+$Q z_Y_*e7f()Qg0sZt*ukphRK}aqtdC3MA;kBFUuL(*?Smt@$t^t;m>67LSXjjvPQA76 zRNJ*@<)Pb*5gwz<0>>$?R5|X;%WsS2obUplzpqu@Q;m5_5nk=jY$-(rz0D=vPvFZA zpD3lR8NqzC&Mt0^+aFw44JAR=qodGq*0Z{d&Q?;&jxcqx?~aOK9<>4`m?nB+2C4+-Y4hAsio~KosSU4-Gi0*jM7k z@7$$=1>Lh*LsS{a*;3g4)K0~TWSF09Vx3%%k6!3DGD3GO4yU-m&5a9_m=5*^xJ?FP6~h8HL~B5IJcDzCVu&Av9dF}YI?NXw zR6E^)aLaC$w-!xA=G^iqTAoGHcm#T&*_dx)sB(n=X;cS|tr?d9;wsg*$^rit1^<8c z-aJUI`@Rzc$68SY37a-45s`H~Vl8(AobI_WI0gcw!2lp390Oy9A{_)f?&*Fr^N61A zQNJEw23W{&m9{LqyiuZx*LK#9oWxa@?6qad+L)^(8>^zY?8LSE$GVcxvBQ-t%e1rd zx?I|=&AK+q=kxuY@91L=fFLl#8e+QN``zE`_dW9r>w_s`xDi9Ux=kGjW|&*+#K^F{ zd3^{lt^-T~tCY*fR1N16^YU(>=C+Gz7;TC9${{SubH2EOcxf9pOxr1$}{@T3JSUtarirN|rlu%M0;h62jero_o$QFK=sMjiq-} zS-drAzVM?#5lT7kHpjnWMRHwAX*Y7V$!u|1K}sT05?AZ~ZtWSoRndGoUn3U{OqE4G zajR8iTS=+OZ+*=PINOlo7YR<`%AkuWZJt5qnrUcdz3Sd)3l0*Jhru_y8V}uRc@hMU zz=$i0sFS9y=^-W|l}9!ac$HTgB_Hzi(l8b;pUJ(${olf+dM}rns*Y2qal1R)v~QbB znEIFh=P%=p7*F*Z11|39(*L*g`ls-jzY=$}>xo?h)!uPOuRZccs{k5Nc{`71xv{1PoL0~E4f58j0vzLZO$|HMrztD`^6M;B_ zEb-4V2m*U{Pg%wBL~tz(S4x#SV-_#PTqpvQ@S0keb_j!#<%guS*$R~miVTc#wuvMB|gf?shxGto1k*FY%MeoLM#kq3?++#sdKWRYSk`i-Iz59~Pgbkp z3g#9qBW>0Y_HJQN{dpstU(tV7RvL@?&-nV{b8E|W{prBqfuRG(K6V_uYR~Q&Y}%O+ z^`uKPQ5&m|k&mmS*qQ(E0+b08$P`{eR)^Ssa0>iH&tuQ-%i#jpX=@@_YPVM=hK7bd;s% zPY#9+S;EmhyZ7uCI8Dd@)c~*O0lxedczq0!f;Lp`-Ffmozhh$Z zKK>WK_J6-IFfx@F|F@JLYv75##(MnK*PbR`JoB}0|L&b9_x=+z7VzTdh#zLGJ02eX z?-=Xv;4^>Ky57EPV6=~QJ@fdhQ=j>NTen~Ot}or$`@LTtm{5552VZ&Y`mg-aXFno% zNbz6@bgw;x`@~Y2AIq=AJ17Y(?h_?}TRwhl1*_<~zS4dZ(P|grE{#`znTGYZy{%tZ ze}=F(^_jo<1YrFO2G#+4=Lmxa)<5aN`rvn#UJvn^zXI#uy=T|J(LP{(@8hq&@zqDK zt$h0bI(cXBQ-3lrsbKx|wR2~`{-fvSQ?Ne2x&Xqp+K%e+4#;nu3q4REzl-pfhWRzX z;d!5zJklR80e#;~7<}Wak0oFpFjyrl8kqlt2lMZHBznDu&-^ufYv4#9Fz@rNz3=&* zfe$N~2jBXatSLg5j^U{~!eF*UW3r3~^{QV=sVII8CVyr5< z=dZx~J09INaJUb6e?X&TMA5iKmZ-uM`K9FVYdh zRE#6%Wc&DPd!YpNi|OWk*jQ{Yq3+f=v`>uXp9s#hpaC8^3=Pvd(uR#5#Q!FS$0tS) z1l0IzMgylIxFMk>B`v$Z2^KjhSS z*RDKz{7JxI0^T>IKm5z@JoB}GOL}Z|Dw;(BFLM z|LhI#pvMXQ&4>P_f_La|E>eGE=`nH~2Gi#@O^B6lyL6dh6CkPc>rg_1+`;`JG}L=S z1xQyBlTleKK`DG3RP#J+wRN-@G6)Y*#$bLS7D)cFSZ~fFwhLwE zy`Ta%8`P#_U0G@{&~GaHnuHLnwp!qj^vs~0ieFJvZ2ne049fN!mDMNnOjK*mI{hLw zZRS~6U24KAit<}{p+L()4ATL>Em!92>*c7)CBp0&>Qo*DtDnY#vW7q=Jr!Fk-A4`$ z2M3J*h}hCp$S zh$#RgY=g=H%l$2j)uIJgG<=w4-_EhgYz@EFZQ-_t57?-W!YaS8u4i+-QeVy6t-KD9 z7jYH)3+G9HPG$Y|2{=Ny151yiUdlO^yn*mtgcW8+GT)!bn?QO*{qn|!^z7tfmz-Fqd`Pe1AqK&F4G+&N+G9u& z!=a-FoEhuUe5(Sm708I%+X@tE9N0WSB;37(1xa6EKN&KYPladso=<>PF(K_|>dFK4 zTt7S}z{1Jg%;G5uvFdW5kyv%xqYRre_=Cu^X z@y9om`avP!_ZoZh!6#~ffJI8|khALvJ@b{C1|65kFen9M6yGevG3S_c@Y)hcnQSeJWkzlzmvAx!=io4Nc_ai0Er&o#W_=Zi34&V~(gC$$QIxupE?~y>3l74~ z8!Yu0i0Y+SIGf&FI5X-vNj(zeDAR9(_2nN{ydJm1Wp7G5(ii2D1eL%B-vjCE{y^T^ zs=Dun&}O2-O;6PIsB%ISPZIvFGI|Fpk2)Wm0WzSDjE)@~KXmxW(P8x$!~gTC!QC5Y zTL?owNw8a9(|c|gw_&OvJGMoNpd3oiqR?EX8i~7)3fTo`p7M$+(Ot}B#X-Vab3z-Z z&}IfyoqI#LL*J34)wL=_Avp$L^^|kWj(WE_e`_7JgY#nP4bz=Vq%b*ltyJFe8E}`9!D>;*bj2Jva_D1s*v}rj*r6P~DaR%-U5JU@Z%0lPn0gSSLB0iBhuJYfRb}I#Mbjksemf1a_}Y-mt#H7*fER!V2?7qNF6oLFRX8Oe zoC&YJ0MmZh%2SpDHzwT+PE+I5>1?k(9LidL^}2IyH%quJpx45B*p{#>t;p{@vKea! zH|`#8Af0$`+~|XjC*Tz!K5&qMdk!LOiDKQZ7+V2fBYd3OVF^37tk?kZgUS+&!WHp> zT`_8_w;%Lxv@sjJ{q)wE=Bq}iE#;~#li09E1g*EI57CCqS(+Fwp-A#FvUW<{B^yJw>?@Sk|#Fy z3r2RbNpFbktbwwfW@G_?i9jgy*4II!kmwi6mgef>k^n;!_S9BXtA(H@dQiOp3zS0# z)B_|Rh8&Kt?VCuv6Cr=M6S7eK*(5M=DMl#qcYM1a@B?JK%Y-iHT}H$~@rvD^KRYvR6smbsIcv>p=HjfA7txLnUPYhkt z9&SATI;5YpE02XndUeex8s}>w*XVf93{bsxVXM-K@W`=4)OVfFRz4lwQ8?6A-J4QbqJDOv=)1w=s8Ox2!pYdC|A8NQy@uXl{7^(q zzk%c=tJ;(I0FohvF;n&FXQXifvV%E=Ff+btHlW9MY&d6q6oM|TRMr&Ff!3S>rtdWP=B%;P9Gv`%(N22H__V8flNX2P@b z%$o)48Mg7RUDJ-;KU*vir_-}WMyPZ8mlA_K}xnc_UP9ir!#@x?AV=0~tT@Tmp-7qHuUEBEaeR2dLql zvMXzj9lmOSRJ8)KTPrS2c>p{WM}d9}sTw3TK(sF0Cex4Ax6ZVyI`y{Yc%YK~EJtfm zqsYV#`Ug7N%QKS)7v!HK>eHC5)ietrRbro0Y(RA~A2lRuC}y%& zx8cB|YMlXaL1i9FltG1u$|ad+osh$_@XyGkh#6dg?L6SY;FeiH&dZneYibbX!yB{_ z_8qVxdSPBi6-iil%HHmYngXOiUkC7Acm2cc|2fn1g!HB!XtPR2|)i;xgBxR1q2Oq$G0wn&(= z`Xp*~oZga)?Le>~iXbOuAZczr5YrMnv|H&497sYj>?wy7mNI*^_SQ#TlnR4(5lu{M zhZS$bHRJ{Gl|um3@XLo1T_m$`I(gvVFdTwWgg`H z$YO%@5{(4KEoKvvr*z_)o=D_G0>`?#i57&aEaJIdHX&HB%li%c{5{0RSV2$e!j+5% zE27@z{Q+|WynWZMUBmCd|M0_{7-i%L_#S-bugMYc=%4hPBVej7IUe`!{lcUFPclb< zBi3m`lP9TU0;0VbFUO!LfSA>2#fDFSRE)1BaxNGde_6Xh9|XtWRwb4hK=m|n?595( zvkeF$rCSYsAz=5!m@M=g#_}Mr9sh*-0sIFY7?bR;r;NT;mM8V5!106=8a_bee84yw zxmE(yux2T615^Zos^LSGC2v@OMKc%S5k0Zf@ANGCQaMK`uAoc;H`1#P;J@36usitn z-}ZX;>lKh5D;k_twD3MsCl<;C7a*}P~Llpx1SVvzbbr`Hhii~49)xtf;Z z2(`>sW8Q#xF;W7DEo-x#)LTa-VADN`M}Ha9kz5`AoI6~Cx;`F-V+nJ(Zd%sqpI`yE zwK42hS1otasM6uQJoBv{5Y;2h6$P3yWwrJj=KyA@M4Jh`xS+T2U-jU^bg8GME%x}DIyZ!|Y_7)iSWi6e*7chh>t7*98Gl6%Lf+rqzulJ{@N)AHa-v#FV zy)Sbmjk;8GNR%{sB%3Sg=-45oN?I5@dN@2ZK03Tzsgg#=#*qr|-eyW-Y9UZ$l`$!i z42jw=LDEQ(Gg23Ymmms2=X7qPlaf4KQX1g}wk}`R3YYRFUAm#{y+qQ-KB@0ex+8&D!Mg?CXZa^J81#O})`apn7E@BCx8QD1sUY>{3j34uffI#JB;?JB ztWBl^KseigDHj3HIlkUX>9 zR4Y3GA%f~(y=8HkT~mNTv9TM_?5Yu#;R@;v1GS23W%`(GwJPiSl+39L>UxAnkAvzg zsGJ0A74*-%4rXy))pg=?sLWNTO7Dx@sggww&bFSy3%em(Ve!I>^Sz+}Dl%xHTdP&% zz4QP)x6oN9lCXs?+fB8Kekj|PhVjmR3uAe`*nPhpgmvg6-6a7>y$q-a zv}))~lx55z@%i+j!*cVcu(hM_yT=Wlf8YIX0}#B3Vp2zBKzlB^o6>H2v)XPz5IU0- z@+kwSW&Hm+Eq9|9OJ6d+)M9z;6Dyzo)34uo@~Kyij1M{ZJmp~{`mjIc{2~z|I0M2v&KCWSf`WZ4y^CMdWNq5QX1Bw{1tr)>dL(L9ewFjTwNLH zQ{MZe(x;%V%nPh5b6@IHdgq=VnLk{+8@ZHmpfqOXm#vM$)3^zAY28*I{Wdt-~Dz{~Z_-lm*euyqGkCLq_)7#yu0hZ+*mX+1RC zpY+sDZXCU}@27*2ByPAh3;WLXqB;@(7VG4!I3&^?ea?rXC z`VOHxEl0mnX)kU2;g9y2)C)(Va?h=Kf`OlUZs)`a2itYx(|DlrDTBUm&Y@aq z(?1dxe9Jjp3dGfURriZ$Y(MzYS{Fo4UV?ng ze`pVIbQ=z^-|V@`Tb6{=$~DVS)Ks?T4%oSKh#4##+lE8z9}9U^wwO1eN^jZEJD6CR zkLoBGoDr18lSoCKT5+1W8MH4A#U?o2Qe*8d;(Xqn#BS%^)GExC^`Do%&8r@~=(l{; z15-KLjj-FrLGP}{A$OCzlfk>N$@eHX(tWkb-O1El*yK?!7VE)*WECVq9HlLlemTYO zb2iog6*kp(;4^>4rixnb-}^^>*;HLE_q}^R`@P>#HdWMe{}tA9zaMR?BS*Y?z9{B< zXyTwQhi>cnjtq~F(5AXDayYCVJvzT#PU;6o4!`*}Ra?dvDvS=sRe2?CV^xwBE~adk zs?EFDY}Q_YTdVlLrtFmqI!ZL(m-H@~D-lTSyPz^#LFy~mRhy`H%x{fMpJgM!8mk^M zYs3zub8YM|>$0E7Z6CMQMzAyfBrD?@CTUGfVDQXfF}~ol^ci@&B7qF@Fz~u$Hn69> z#=&!Dcgrrp%+40ISZ%bBC=787At&v$TV_api#VSvX6<5?R_kJsWgUq{vpc$(K&d^% zuj|pwN>!kOh$t^MP_x-=Hg8=0mHpCs3->Z^=PFFeeWlqy)BI*qh;bzCAaF**B6f*; zQJzbEZziXQOg**Z>hJBzAYK;-mN#~ON36h`>btyzt@b>e&5qkK`9;8&m^a$UiQHVs zezLK|OqJlqtg`GLnuUokHlpp}WiA;$h~#1Q8XU?cKM}$ZnGA&a>THs{R=CXc8BB#D za|j!?l_pGXte;eg7MGACur>G1Qu=FHX7izfpYE< zGX&BtKSrvdpcoA2WNlY2$C!zL^>tr zWkHSE#L=;qJAu#vB_@O%wu{Yn8$(&=dtyTa2^WqBu1cnXj$EAZHV2K^v?SHgO```2 zk$EEb7?%|yI*iUI8U87p;3-(b-~kAM%LA+oEp%LGD43lds~-{&cl`Q7Wepzvl@;cn z7dim=Q8Wj)s}}B+U_rUzAh?DynHk$i;>iUVxk5t3-xBRRm>T2DDZ2usg8QGXkKKM2+@;CBa~aSGsC8}T$1GK9?uSPHpY=O z^)$Uq_uN7c1pp)*$5tZ*sd1Y1@<5m$>q)d^g6L54eStyz zz^y!NxQzl6^=LV2|A;$4E9iPBNexmKbq!#pk-xKR%{Jli5(J7aNKCHhq50^69JK3< z=nGK`oHM&N$U@tP^~j}O9=AJfw&hL0`$2O}*&zqM8fS+bkht;30;##Gsek!@{!%|g zJ<(S`;Pgbto{V1qC4A zR(DfW%~{5!88WUeNQilw34y`uhx%Dj(spXjt+~8?$8=z|KHlX~eD%xR)N<6!2={qi zsQj7~<&xc~?>ErZO0(s6ab(ycddCH{>+z*ztAhu}dN(tyROHWcj2?=a#LRYU&rF^_ ze{yo_+}sP(GqW@1Z6kVho0_*DI@&&YAa)3Z6v$MHnf={gu7{1q_LA4t!Swq2>E_Dt zRq4X>F3*hRz#+A`^Z?mu;!-Dfa055EZdDLro!QjnTfG+2&p5KN-tJ(8EZ}wCc0x~f z7(dg511K^V=_!fLE3IY?asG^N@Di2Tz_xs;Wc7Okq0tXTvgmvWoxo>Yu z2FUHH1BuZ55ta|vDh0qs(`5L&)uH)<&o)R3l3w0t=VA@%SYv=vl)RxdfqNVV>(NnQW{dS>^MVaHg|=<#*FkHEOCeMqyU>s zs&^OLBtE2>;+5>q7~TBU^rUkOBth9R@Ibr4&=xWWZlIqq)j+^2QM$ zdH3$o=q}^sAdFoOYk;vgVwGj+%|=>(9%-n^qW%uvqI7e1TMQ^}j%Rv!)j<_z-$lW5pQp)H84(6pxgD!gk~2L!b{aQfm$&t9Isc;WQLS!lbB1TV>edF9-M zHqG*KE97@Rd5^Q0p|?xM?RXbS14DLpZxXtin=sXg-p$k=m3ON5<7HZDKJQbNnuCUZ zMC{zR({N+YMcWo~1^e8dItT)qfZWr2bl?nJDN3M8fW>C`SIthJnpX8E=v)y`3=J*9 z*tR;4q^!$BRDa3;O0UF2Q5>&^@zBUYR7$6_VYC+3uxivKFx8G>yg-2`$lv&ul}V8- z_6Gbr;PQiy@Gw0o36D|ipxvxCQS?|9twejeNZJHPvSrRo&7!ig--$6W+Z!s;@uCCT zSlk~RKVhAK=nOtdHQr@o;;<>!r<#q0Xt5lxu8=y!YI?r=keh{~#TVkmOBMLf(%%z) zvM6Ru14d>@5?PY^Wfav@^^UXCh3{VOblKLpk<7GL=gp8vUSl&0sCPC&#+ZSL+-Rm}SVSCL zWo&e|BK73%mEJ*%yRz;&sy$9OUToBxm0Aa>fQwX^7TaUR z6+%-wZjeBL^%&Og_BNBN)6`4Ut;$t@MxG?VG2GrH$Cot+z*AMOWf}GA;R1)OsK3auvg_! zxBr;7cfAR;de%UwhAcy0o7WVLP_&f)=P!M?(mA-#!-p%8m-u`7%)$NC+x5A{~O;t5&ilfe(TPY@0l@U zAy4a{FkfrlSYJ(#^^QmT%0c_uJCTL<=I8(Tw_5+OdFRRZf830P_{BeC9HSZQ69aBt zzx}<@>lJ+FulT`Xtby^~esGDg_P+n)1ILvgoEa;XZ&~{gD`m(labVo!_UxuAXF`?c zUE-gNyxOxH;!8uNh@3!1*_=3W7m)G zJ9>2AV6blrPSMNJ>au(_GI|i6Y_?Hpxryj>)X)A9hIkR7J*CM-NIDZJE`Bqr*DFKg z<>8=sp;Cox(~Osnp+H4DtiyS(8cfdwFT;a>Ze)D!@P33{LP&ZkoIe+}hsMVam&XnT z#d9yrUN}DpSLJJA@H`@sn)?HpOE`pCl!y6WFjINRQ!ei!?4|Me{{Rf02T1bQ#O(H& za~Uza|FHSm%`f~laxVX(fp;CV`)7IZ{%wpkk2&yH#sbY4IMfHc`!r+kQ(qc5q2S%n zj1;_^tXn$(|BwTG9=z}Vz7)K}_qb1Zhwt&fE|k9fp7VhBpEmHWeUHCj;N7ns@!c5f z@1T4BD%{%LUp{@GZ|!~0jLD~O_*NR;SL3A}SbxZ2op6_??e9s$I&$3i3G2vl|A*iD z{cpT+$?;0rZ`uy2>FFLBCD zN{G5T4oT%a!emPqP=#(G3TqR=?9%FBFx)$z{^;T1ip!@zvTX$lj~+dG@J-LBzuDXm zwBhi6LDhk}tU())lLrFNs5iqyrJLgWY&(nJ>BdLmW&>KB6)MbZ5{2ByW~@~t3}A0M zuu%#mnrBoiUQj`HeC3L$lWqkK#9!m8A6|!uIt&d6i>c|Wzx<6$zw%Q`zRHA2{;N_@ zjbC(lpSgeZ`wU9s>mA-4>-)`v_RTBE!8|$`j3K#M-ekw^i?^Vu#d7g_`$ltuZ4j>* z;+rvKVajcL$ZNaMM4Q5VrG=@hx38MrZD9kEZ@%X3u)pEu<;qI2I5!xez$H|x{-Z1Y z2kmyxka7G*SCz)cY4>>gL%N79CYI24$bsIa{2;zgmveA1M$PbLeB;s-^vvOr3&O>M zUe;VJ8cVD$9X-i*l4S+Aw)#cDt(z4QhxLS7`IH4#;)XM}5@#<&N zkFTJTsK-HsO#@6Th|*;)2WmhBL!fhpx{n%rGm=%Vp_X&cI6XM)1fRfkAW-&N-`S@OL{V8o#d}5Ps>DYQw>+t zlt7aRn*-An(8i!|&~bnwmHeU=9)ossJ^0uv6p4(wlh+e-0Zi3xc zo8g^^E5=NW(E|fzq6I{g*6YcEp{ogT5wAJTB?qu`lf%_xl_SKTLociP)QU0lW;Tc= z2iM?e_E9wtQ_0btx#HpevA6XOJBv>w>LjDw7z=XenCeKTn8lP!zC{^{)BK~`9% z42*VxO@mcC$f`Nk_9Lre&2uXiTs9a!Iye88LtAE$D0=LKtUZBl*6wXGX7Fj6!D?93 zEY^GyCTr-jwaqGCxCz?ebDK@`XviyY#W3_bru>Wa4UlZe#q-&eq2%Ba%%yQbvkBZl zp)3bihMz!|d)UctKo+>AQf`PmUW>r>=?owecJ`%s=!o&7@|_$N>j9`iag`un$^`% z^{V$5+nOE)(X$4clqisBpoN0OclH!SuuHF7uhyNqU7y(+Jr{v%&-k1eLj%1L5=>LM zNizKwq#vc2_R_9(97s?m<=d4Ujc+&^&5p*ev!hx0hE6M`Qa=2i2!?$Cv2#=7Qi3fb zGt|X!4VM}>as!_MuMIe_08H>M#Oh4OsDw!Ntk+=_Q@@hv4=y`(rY0lEb?C@-0O(M3 z#C=ufjQnet$-QX)b&zikzLSuucC~ol%8+!`NL~*;9<-3dgWUO&9C;L6VOi&!VV6;i zKr5)V*;}HeV&+KR1oq>!1^^~?6}@ELcG_vP*!I(b(l@7!^=g&t>(62@MVkOl1> zI;*(ZHp%&6qozB;dAy^{fnMb;sLbi0&vY_-7d^}aC!k~1S?3g|n?VU!I1n`!=Oj%u zGs@gc8@^J$@w`xxNlOv9P+7;7SKv?cVte5T3Nc`gn4Fm|RL*=hwAx-M9l`g6Qhax7 z9~?gRP3(ii$G+Q8MH>x>r%tjKJ2#?LSZCRXvGMmX{hM(*K%PImR#!PKpt}oh%&M;R zVhJ6$N3gVhP|I%0nZV`sb8AoGx9Dg^Roa3z-)X;7-I-(X6wY3k=Bd-fns1aA*6-R1 zE>z&l|5GlW9}@4rDr!w+M;{-Nm&Ruwm`VSwe9rfIY zN46^^_~_`N@q6t)%wT^=4~2LM-gC7%<%G*GK;=`FXgCWaTgd8k_ z&C2SN+(}bzpv+-}-rb$ls6y|O4=7|hGXfdOcGQULQS6QChqE?Q6AGQPhL#fDva42` zhnHsBEU%(npyB&43z-$6bjAJR9S5m~|Kg>Tm_?sfI%(*JI^zLsw(4!CfzXVWB8IJF zhj%=7Yg-tGD=a#>8db{Ot|u)gyPbwaCp;f+9E}jAd*HqSzl>|BQ3c0PXUf;YVpq>x zzC-EpT(~~HqTJ3A_lV$vj+>RJI;{l_>4g(G6(To-_?uhPG!nk9qQ;MAwzGVzNZ|v1 z)^1!YA={qRk@@w(Azh-aGb(boI~|a`iY~ezk-X&{lGm!+G1XDePlCd8QO){s%?(J}0WN*_NF92`I7dARt1HILjMFSep$AzZ64R|d0*6#V?)1!fyTvJvn3 z1UffDwv~iaP{#=|E_~CgVdJ~A7^Y6~SA)&TtOm$nQ@2S)s>V8ZlTd7OsDusBVK^z{ zTdiYGY(dXfo7ovgalngdThF$i?ZC?RIRaU&NAO8GTa%Jsu(=ct6asj=RT}Hy2=Lu* z(xDq}PDp3~7bT&jd`|qdo5%7_2yo6LuNpk_9`!&2Gcnw$F(rZ~F%Gv7@Wv^rr-;l1 zU%&HnZFRWyXuef})43#BsNkP^tqN~2Bt=l`Q_eC{Xv*}o9dpC+ZFp|*41n)=71=iK z^5j&mjE!#He6v{(aoimzr#j^S`MZm9YWgntFCecbWaIDdFShQry^p_2S#{;pfAs<6 zKlqf9jUlUEqReV!<2&fi$i`>(B90WF`75&V+upWo&uCw=@iVtyIyW@+ng2l9__KQ^ zlx+MffArbQfAE#ZZoWlj$XWYrWin+r{th;J}oD!XC@69o?1b! zY|~bmr+HE}*=jBe=qOc_lFf&(aD-kQ2PIo4!)f^nzE!I$6h-rCsFra&0rWDKTfC*I zCC7p8sKE-u{&$GisIH<4=Q1NX;gbj|J6s+qBjV0$sAJpMha)0ABejMO98i5o)#bw# z{b5M{C0m_Yk^+$uEcJ4UTU|ozNX()n4D*vOCOIpJn3WoyfWp%sd1!@sWwe->rzduM z$D?jacx$D8s)+;THkElyX3+yX*62ZaHSo*pdKm)LcvpSL`ul!6J3(|1TM{b(a7Yf(Md9Nr=_ zui=CYrj+#qD)jws8N9QMhUkNlVWzoWqph!slb3j|1!PU30Mb^TyJg#zUb5b_E9nhY zMTB$}83u@&O*NIJ&A`f2&xnnL_H@tQrd};ajas-iy-+Mv2)Rhn$H2h!n)e4Mf|Bpv zEm$Tu2_$MWiG=ze%SYBBg{kQw)GG?x6Ch$Y3`hDB(orFI9&!Z&j^WoITtqUx>)}kb z6#)kjFi?R8fyJunb1Iv@f|_6WuuKnT)Woc>vL+^j{A{Nr=eiv_?00`}qpT-VB6^c-RIW#h732*|&ypp>?ZdJz zUKAYXQjo^5+E#m&T?{fSSKEkf!A5R)L0;R9FUqIrINV0Fw($wD(JP=S{cos=XJi@O z_G$~6&Mc)ZL#nOQVx@>Jas~838_ApbV}oC8dk|~T?kvgmDfkp^R?2QgGRy+uAQi|- zC^TP+@ggZ^y>3WQSG9w^Wq5Bf=Ed2{yazE7QO52Gd5$*C7>1)i>QG{`pE)jOPJi!6 zj_Or^ZS8}S&zyv77L9lrV-JQ&bZm^>gRv_tgJYV>k$cM~d+ZlCI&d%6_k+0z)yv6Q z;}z71mI~AHzV$`QJc+!WR#y9sbp1~#)#IAsqSv|Lgw zz=p-g7e|K7r!lrk%)%Ax70>?Y|cn=o4okD4Rd1`@$+*a?eiuNy2%zp1xQ-t}@J z_t;21uoC;#d}x!uJ;n|Ux~ZkV|XLzegAsxna5w{-Rt&CFHhci^2sH0*TdcG zHt%5eu7}($=C1d@{YTO3bNI|(x$9x9fw2vawfD)Tfn(~fXU0m|{RFdjtbPx-)h{n+ z(4PSQ60i`WYd&2T>GYB5{Y+3i0!Dllc$^3 z-EGn!Zo+f>(7pweu%<$uhlK&k8Ep?S%6!qVg^hSsQuUa8&Bg|VE4~y3;B7#H6~jQg zMDBji7m}x1hMs28XDm5wtP;H>0lEcMIF8_{q)$m$~($7vtTGIGyri;#4blkjv zgGt>aynBP(x6I6OMK`0&sn&B*Z4SA~^o4|%3^4|06s2~s3Hujr5$UoC`Z@tUsOwQ* z*YYoW9BwXmN)V*=q6x$Tde-!6PMIV?&M`Q9idrUupn|M$8`u-IWd`KnRg^vhs|A2Tyf=+lvseyA*mdTyr?NIC zB$$KiKqEAHQD>xqIF~NyXRbd*Nz`yPYGDnb0Ws2hu_2ORdbp2BLhh6vc9LL;v`uq{ zk`~%8!3TNoy(G!#i(HtkH(;y5&*KqkjG{)K$sz4qB`Xz}lol4iIz;FYtCFJ#`BDf@5}5?Z1>mtlb}^6iF^YkL(9np8 zFIwR%D)o@((W6a|qGwcci`jJMZWN)%P-gHKH!tP?k`Po(!|fzUQA3tLWnmvujrs~T zq&)5+ZfKU%q(z$jIsSCF?3U(2m)g*x^y{Nug59VUYbLFe*%(}!rRQCO3D|H_ z(9aC`C;{=lruNKyYHTGY8=R2^HH|8Eqy4Gf@L0fYAOe!g1;x}IvVYcK1$)O8vPsEM zXuWVjrEl}?{!5kXA#l&X>NyjXVUy;rVy>%-u9O$x@>?tzfRB~`hjhp%yh8HUmptpU zHulSBFtgKR^&`iEsZ*m<$AZf<=SL#nVKYnK^^W`ZlsaU7T!Gl`O69Dj*F4ABO!773ox8OP{ zA(wFp-wjJ#t>!A~wyhIom+5|RC4FLg0OaM{_>-$i=G~tNuHm;Em8EZxf)c5m#tfTg zAM`He1i!it8IcmzJP6l~@ult9^cU4!&@1INt&!*rw~EgiC0!FfTTvBfVxSVZNE)Za z7{aA0n}!H!ct+)3_|c&QZ|MCt+GST+8w5J6#1ZFoqXNZ|%3(@c%j#Xhjj#aeQWZNC z=O(;pz5Ug#skXYjEP3g3Xs-va(%tdEzHI|~xF0MU<|G(uTCiqLLNq7Rl)9Q=ezgHs z4q+EqT%TvP20n|0cT^UjNs~qr#N))L1K4uW*aZbLPNX`$!FvvgH(a@rqo|egJ3E47 zRhHv)){DAPy(3Q&A{79?>1t*-&k zZX_qFO*cX}PE?z{(R3esOX%5mPc;#F1GwQG#1*}r(_W=`X72!o1{wV>8l@??ub1_N zNs@Do)R;cn^`px58ex%L8jV~v(wh|%-C*hDt_2V*U}IJbJOT>i>w!D6#nc(ml5YbhV>vC=J#4ycAfrh}HOmb!=l_FV-jFuGQ z4RY%%6?#bXWXr4pYb?1YMgsR@%{XN|cNknH8tw--vNABY0oebws!meHs zPpwN_lqdU(pRjzX{9rAzSu&Ga@itgNwJv~lt%&W!3Yh_Di~ZYp<=XiqEu;G8P}F(_ zAiheW#D6pqv0dH6ZsD&B|B?RYtUY_Tw0zZv-Gr?y*-~9~I(k14Ml(z^5H`@U&>mf>sm z=kz%F+4sodMJ4Q!ffXf-sf1(dy?h6 zakGUA7DWFz62k1+U4SY~g5Rrc8sci<0xY4$D-r=lfjX1CMX0_KwKw70Mt(*RCLgRu zD+solYBm-kspG}(lt7@^mP_`c-k)l%uYf zP<}QWZk~EW)8d_b!ADen7x-*;fM7;JWl@Nkk%`7{v%E3uy%uyDL-u@B& zWg>8#Y=v58wNOiGmA^HZS|RvQpve>d23>;2E99-a0AFSZJgta+{;DGf7Fu_wgIuYF zxui*ul=idrk_}cGR#)JNhOi}?X|o~f)G@ah#?LghhDFdtk$j*%Iqk(7Fbtb;N3(@G zEC{vMbY)%J7s!(KxZ30RW`vGP5eFBoR3N23bUeTj7$R8zA;AINJF3%AD_JM;G~F=xv-*b64sivjz=+#BY*9K)Q| zNf6DA(_$^`bYeycO6>TMCL5lSO8(69Q%(wL>N2=6vi}$bYc+S1kHue!Zh{3Bkh1D} zXle46haOWyORoaTT$cQifE^%9$AbwXNN2Z~mfXX74iN2!0liV7Y z1)kKr?Dw4knG}8_U}y_)`kBv6C+2iC>5#f@!{=^n&d%WF&(51ppP`@6kgUh0{CDwK0N{OPz~O3re@4&yv$gqcld(2$#3)sMz;X7o4mx>Gk`r_ z?{(J4Nf2Len}RC-pTE1Pdra#)hrd6i@BAJla_A>V!&8sHTKe*P&aaie>jd)g)r`Iq z`p4g-9@6MLKk4OY_#nnw#Ap7Bz7x9Dfn&Y(ov*zU(Y!acZgubbzBw?Z^qoex>f+XQ z5}+Y>uwoV|zY+&VDY|Dj-Ag8ddJ{qieM=@_2%EH0~@_$0z2WEdg+_M`Q@JrRD z(ke#@90q^x7;_iM0@k{2<6VY`@RLaNpb?$Xvo9%%VKZ|ALvy!yUj* z_)Ek5g*41R_C#MWuVTu-(t7RYm-Zlj{bvl!>zMLCH!$zlBltHMtBN`BS709aHPDBS z|1}@K_C8e`&^mtL*O!Q2S(sPS_YS;2-0)7=OT+t~_oQe%>`eX8c)wLKQj6Dr?Mwc^tHx z^|nhFpdEn@1ir_!ORIwcaz;(Aw3HobWOQO=Y+`&|*^y4qRu(6MmxlI@ja5fIo7U)d z6(krL8y$a8j9SLXr1kppk=jd2*0`=A88$Bqw?uEDzoR$2_-3SyT-ACr4ksJ6Gsx>L zG4s09rs`yVz)%36323Wk0=x6%jt>i{C-M@;OVFE07CPbu!@^7gnBT3 z{837DVDcp5F$9NJGcr9hdEyz|ZJRATT3HguNtwjTYP{sKvcmU2T4Btq`zk=z^-2Rt z*;?&c+f=`=*vCKm z`FiI!6Z^(joeig3Go)vXmx|~Xmo2^NY^*f|d8SK0_*SNB;(L?&0L~QWj}uix07Q?U zp!%dOpUaina?~*EobiFB97FjfQ_@#LPKYQ#oAt(fQwD)_f4BD+Bip@Ap4esCZhx}( zS8uJ$m6f85#ns~b;(n^1J#fYjjNq(PCw*-P6u3x%-5C-`d{vBIfm1YW%Mhb#2)&H# z2AH#v)#HPlHU3SkUKmV6a_+`2HkvJ@L=J03IIe;l)aYD1qSO<>B=aRV*5de;GzyLs zt{UAwm<#z|x8Ak#qwn5FUGIc!S-Yr9l{02nrD!q$QJqPCAf)=1c4&)zd|l%|0LA!1 z8&uJ;k7;Uz4iuWCqjW3nHU!1Y0BnD$vR-diYNT_vali}&5EvPW-fS>MX&cFr$gO9w z!Nv&~i)TXc)VJ~-eI32tl-J%Z(BvlG*3NtOIrz8zo6FWUU;Jg8GBD1!-FpAnG}TaC zQ$Ye4(s80Hb}M$!p(q*`ec4DRsb!~ylL|s#G;^_{2X|PX3>K3<0)N?TeU5d7(o>=* zPWr_cTXjhFaGZg|zk8P68(7DdF=sj&T~fgU9tQ*VH0#$EaYjbZ6wFRFXsPE8G`WG=nvvI=4|-*RJFz8p z=sV}_&5cA*?t374IXRBreBYTwd2DjI{IT?d9}MN!pvv9S%+Rv5QI+2wy8&aJ z9@6VUAWVid>*6#!^Gb{gCh3-vyiwWB>E4MPY42`&0vTI2x^6*7BaP+OAs zJ+H$ZzfUe7kd?lkNNY$bMh-Ujej+>JQB`D^UQnRQamLL-0PU*%1tkS_W zN%Qxl^1-~-uM)z%pOAGD7Ds$Ar_7fL2x==c@U-!h+Szoo|NJ*`28m6V%eC5dUL!Pu zUQypzPsGe6yLXEO6_7c20N%T~x)H1QlHg#eD?8O4`ETbvPxj!yoqU3}-Yf}_9hkF! z!&h^#dzG>{`{<%?=2@K-m%<CLIcAfn|fKhtnsnoPKBC!PrH`F^tKDDM;ho4&9$R5QN3v&HTT!GL_ ztSLmLP2T)vcics9n|hU9F}+@O$evx0!J8~p>6L1EH6@97ew~=|uyJcL7};GOM2oC? zM;}3oOj%s(*<)6vqkHs-eF7>sqAwcDXrsDz?x~CVP(~f})KCr(jlQC%RIGpu6qUZt z0&9K9#yu`#{aVi{t zYGreZ<)}A#pV0_Pv7@`rCU2eAu4CE(UCXVH)htvi=QplFxNX8@NgV6xyot095P;Q;MB!yEjsv7JqyFjflZ^ z_S@rlq)ACHU;+|ZSs_IUJ%W{@$PA5SEaO%vvw@h7#CNOuzdSH0I}qzQ?wdvQHzgb! zpebs7pQff+?qhgsN7j?Cj7j?B_+Toz83`B0XU=~JWeHssoEWZm+v2g+<{D2R@Pu1> z@>-AFITCZt>QNL?7&>r3H9ZhqmKx89z-=MiRub*4AsdVGNebYuAz{m~tVYWb3t%II z?OFi|_aufFg__ix!Foa0Up`3T=<|ZCd zW&O!~X(s0!rq%`n)Wa&lyR6ON%;4|JV)Xk%@~_>!POZ&WQWBly%*s(L{}!=#cB8d- zV)BLc#0ys1D!>~9{y)e(BP)$<@G6M2xfrSb*1Q}R>qd#_jp@2{6-!iNnyy`wo*}0* zeB#BS$+H9Hk!LfBjCIwzJ_6lns&!ta8~b+;fAWG>i?Wm_%RHbbJ$lR;Mw|>SFR?gnHrgG zkb{GmkR4dh2rb#Mze)~jwt#Ju&vboy17BvI3e{uPUHGw78*e%O(&U;XL#5|um%Oja z{0WUh8^Ov@pUJF=6B-4@FJhkv@y`W?5`a@bmUvL zup{WRP!4DyGE0lD^1Dp8{(>xICwIWT;$ey=a{dnMz2&x$XhFk>xKZTXo)+rlPgQm< z|E0hCcY_V$vnGDtc6rmZFn^7^mZ;OGsmEG*sS;1$XyB?tZiI1wNX zZj3YZ#!EuHJ^Va)zb5d0EeY@34xHPw9iUxrwH}^ly2c5R`P^2KeuG@yHiA6DV42ZMf6P+>S(M}4jL|4arwGD$D$9zvaTKx? zMlc|i2Vp(csHk?7hr8c;QW}1bd64Jxch@e)WToT4emflp_E>*)dtZCk8Gj`X3}X$9_l^TgjJ5asKR$3=#etcz zvT=_~?e@w})Z@b)^|)(SUfkn<3>Z9*&_w>4Sj0Z#9^XY+|NU?LMd;V5*0G4+H1Ph$ zJ{R}+$or$$e;1$mD`O2jv1{MY_l9@GJwE-#pLnMI%-85pEHn!*ps*&tW7XYo7T_z1F%T!HKzeh_Q85V-&~T%21D!}hEDxRUPQuZE$!MVho3xxyFW3}W&DnIV<$ zjjiKp;L-|p1c2m0L6Yj=`kxCwKD0<>1wXJv1?%0SSjK@Ufa^balw}cLYRt=9s~ln`;sUEbWKSEJ=LZc~7#UKDpPsWCrzBJ90fsV8HaH;<67d~Y;_0FD zCp~D%N*SK_?Pj%E*TBV8V@IlN13dgG`kUsWwb3Lcw;-K26Y0QcZd|fIR|HIT#xmZxo@(8V6b=hlEQ zER$mm!2&!|0yw&O5*cADQ~^klLguy}GPM_xbUALaf(ms4m<==NO-)~(VG_25dbGHN zVjIY4V`#+z=yalbIk*@?hvXW@tGKu#A`YqaK$$AwFm)Cot3aJFk3tI2BC3!Kru18_ zc)e*jl3s1LK9#AJ^Qcd9cb#xbjdGF%{Ver1Q!i{MY(M&i3~#XH3Xu8|%Yq`c zV~E-*E$B<)nE0ntfa0tX=b}M~!B`+F(5P|@+!c`mENUQTsCGF-0)+-(T#B&B5)hNQ zJP$5r3U|;1rU7G4k2NPR=3tX!lsJNXk%12=s7)AQZne=udIf-Ch+=Sf8hd7;qzjl9 zScm;Eo5*48Ijrn%L-0;4$Ga>IYjg9r0l{viCwHLd#YoewzjEVB5j0VKcqj$L(~E3 z4{Swc(2yI(QX&MOawT+7Yv48L%oZx^G>WS*;sO$(BAode62|&bA85sLL|&`q3gY4@ zgX(rIP;@l0vPpNy0Tf`!V?1-7CN!_2;uE2 z1aRi47s-;0o#X-bA`F~mcCMe;4pTr=4Vi%@wIy-Kl^b)yL1)�kF*zS{2ylGtr(BqbnO5 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

Q!^2-F_r7FCnG7>h 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�JVdNqD=M z=7LzmZTdRR4kEodm{_=v?nlzM7k%+S9r69P%PEl9?Q~*%Mbe>UWg^uVAzx$DmyHeW zTbv&!X(OI16i!?+i8_`Lew4>D2~SJjYQkm?N5{_LskA@s>8D3>?`pVnn(t(TZ%o)t{^H-5IBI!tB_quw172sd<&# zwN0W&+&-8Q;HO4Z^w+YfVmMM}l6s1`?qLYnk<-Px)O>W<}hmj}Tq?%%FXqhW< z2=M~1#blSNf6u{hypyrwTyc=zO77FHxd2o$mr;90*4`erv~s(M>`bh}gKd2T;(jUG zL3P}8d?LPu49Xl1YQiB?s+Uis_db2*r!7{x+=^wq>wIQ*Z!51()a`?^I&s(TpNll> zx_>f9SnP0l&BURAHj23FO74gbutY&(;T>LMi}^#Qgkv1k-Aq=mBpfe4P!C~bDP)y@ z{EdX$?R**~aU}gE{b?EoD^Eou#T#SP;ntjy$-IMZ=VanZ8l!w!zU{e4Agwe})^qKI z_Bog0*dobd@hdo_B#Ac>GVzrm;UQJ!Jpnkivakkzf7bo_Pbg@^s}vjAXP;^ad<;CD z;Fzd?WBEmZs{VBw6+c@4`KH%tustwVCJ(->7y3BYB(!tS00>M#AYWZ&o zZWfC{FbWtkjF7;|&(90;5Wokhm;n)t1V%J4fXo0tK?kFU?FK3m4+gebfet>{F8r@w zad3g>ECAldf{}vf6u3A9xVTt&I0SfjSOoa^Sl>xuUx8|eVdcSCTbI~R=dnD^x^SMi z+w#UmA+0GscM{bV>_RQrQRn+Y{;-Y$ySg^kf+wHJ-Ga`Q+~O4R%TDh59OtCTbmpwj z)3`*#tB+RsIn-*;+3lO<%(oW1#5hQSb7}t=fpbk!I{gQ$2_j(t}kq1suI*9BKV-Wgq zxF@u>mMM#UaiXBOiB+|v)>c$k_X{~0Ohxk3Z9t|yz^K6J|H>}|WQD;%vd|AeA(*Bn z_z%W|MGWhOb#UI6A_-Hk?WaEcLttF@SoP>T|5e ztLtbcNEj!5-k)g++Joxn#lI53TUGAtbnWnkJM^Xm-(Sr>EWWM8yhQSW33<`-WUPa# zSo!HYb2gC#1y2(UZ09NES;r)_Zj#dEWloLieAAgbc`6?}%&B^~iK~@$p2jXEy)!D= z(ADIw$-aB$-OUufHmO5;f~_#P@RakTcYNu#vstv

ow#I#vuBGP~o237Z@) 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

pv6EN>OcLe^<_ULrliZpFD3iN%R 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

&w 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 z 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≫e+xMhL>uG{2% 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

xJz^k$-9c0{P0hC_X6w*>hlH&3&N!6 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

8q!_ER}Z(t4^0YZBW4g79WD4D4SHZLR`wqKNY zKPt{3rG)^L3q~A9GF4<1Az=WqZ!mBg2!VhQu;b2(HY*rQA_p^Kd!i1$N>=?g9Lygpx6YM0#`8L$;5Tz+Z!N=za(Dn-p}BM?l&YJ zm68Lnd=p@Rwrw6SIeRtNYrxn1t37tWQe)0oCIi`{B!m`6s)2Hxt5z{|tkQ@rD-r_Y zNbHIOdc}ed5jvPf=D!_gQ&Lw~2ayAgu-K4T3-b?DCe4^hie=C!FeZQwJn&{PBgjk! zkP)*tEHYF>!SIAoLBzwt*>q$dpx_n(+KH?J7&fR-g6d&|J&*#xKQf6G4%nl0lej5F zWGXPlQV*lDts@!1Ux%$Px%0_adfX>=-O3TYO80V*)C1Hz4Q;4_0l z{dyz!0#J(@8Hy2zN{@*`T;R}}!yQx=1lnq1Dr|{Tmhessd*?`=i@nq4yra>vcRJj6 zAxs9`sSEEwW&-G;T(**;$rL3Ny}DDwkk&#$G$tyT3YAJW#01n?_ffd7m7<6hJ z38k}@&=NV=18N*Ky=;v zflzm1&?!9*RR0@@5Zywyl`|U3hrceF^veW5H%weO#ONjq@DF{2IuQ_caE@}Q3FvWc zmjiYcSrR2+q(9D7RUUf-kpW0TlOat)!x@oO&M1rp=u<4+#QO~03x)#p6&y*lnURAd z6V&G7J0CL!+mWgCSQ?W-$2K<-N5e6XAczYhh{WCc$+3`4hAFrXp3q)G(Ff_9|s?8)Q zaX*1w7i=ib3S@0LydaPXpy0#f$V~2a5-6dNu!-=|1bn87A&ldy99Q3$zb__~SV~9X-z=Wmp z%?j6hnxcD^aKj$~0g{~d2ux70_!7bAdUmkWQW$jbF&&((=Que#SrXR4M>4eOVGHYN zprxCev)k`Ra)|vqn2x4)zaNTir@w{jXzTQcp=j^@!%%ZK=ie>Zkp>$zHWX+FVFpwx zFkR>ga|=r|PwT&%2;r`w!U_0Ppg#y4Cg2(vaV&fyLrn-*N{kf{=0T_hF;zGf^Y6hk zf)R8EDT)Cv!7?!!Aah9SxwC)AYlP+$OY={=1iUdM)Vm#m?J+Y7Fo;L^e3a=2TPZ8_m5H)BkSC4*E#&<~H6(IGA5DdH2nFJiC{W@JLzWIRSV8I}+fY&h zBL?nbg=5-7MlyogMl4H&?Ts*)iBc~Z7LfT<#R3+DSds}8FCx$o&N`eJ?g-OleC6Ea z2v#ZnS@aQ<1O;B_-Mw3!JQkQkT(&>_rg7|ZV5E+Nnpre zCFvN~aF(Hz*qEp+A*8R!efsGH167|(u3SB^uAJ2E`pa0c~~(cA@K4m>ii9Cs5$hcg?5ZQMIZ zAXrF{FfSgiJD@jQ-wYgQ+)5Jd6nMM%$6TYQtTe?Gq7h>hM{%VPUQFS<=Sm^ZaYypU zwQ>|Hs1)>G0qa1(ITX7@Qg0Do1iH7Vg6yE=3rKES2MyA{9h?DxC%G z*Qz8|3?v;vj-l@e3O+Oz=DMN{71bIzn>x={adZ_-1ZqA4$zp?li#8B$3L}_`0O1oM zRpz)nU^%(Y1}4CCXn+UT235w;U@juKql|^&Kr3vAMYfM%Xo>qJH<0Go%IT2pL{=3b zVfJzwX4Bw*^cPx3e={Fst9cnw)$a7N6`p}4Tqc4>%;msExl-N?%KU2p1hAX1wQy25 z;hfwemSXK;Shq`#BSRDjn2$T2haJXk;3dki;~_hs%84mZx2MqAckYc?d6`p@;uh7_ zHDXY!D*BH_D7j)cqKJrh8>h_`{zqvrzJxw}DTm4oB||u8%PlKnXxTzTD+nTV{!&;Z z>=Vuwh-@RC+wCqVa6)rVV<<26ixDD(3|5rqQo#t$T-?713U(Xhj6->M!6z8)a3>xN zw>wq|P@*y+F6&<3e7q9M`-rRJC?5#kCuCKCFH`){J_|#!JRF-7*{Gw<2?LGf1zp59 zUVPwG7|Gd^30L_>Aa{#{vodkeG|U(0T$q7_?!K3A3PetU!RRC2F!Y9h0HUYh2=o~? zgj2f!7apZNF`{6oVNBp`IXJe6;H1fuNfU^;qYntks$*?B&Y?PU3dX$(kN z&LpX6fraE!7!e9^rcyC~293ui2ag6mM=DOZFA)C(%d>GVz&%7&Aqb>7gN~JDA@AzJ zz|g_OG6_v8VB0Z3MB&6f=%zX@vqA#E?uW2TtJuyQdzz0>#d%~#=8yHVVxg5v zg^S&9xJ$;i3=D5H6j2_#fQbW4fZI2yesG+3Jl^2$qr4l?Jbb<*f&`5f$k2O{BcZWT zDHi(!b>E(~2SD%;#i3yQgytpMt46k7Ik82pY zBvKaOE{6)dZG$T+&?rL-qbu=NfD{cE$X^Mitjb*gJ~y(roGD@V0l`5gm-`-BNdl&X zPl4D|P@@|QzBfuVy`1lwXdu)Gb8JUj;wh-w;7J+UIRvbmAXWa)8#%!h{79C_09=pQ} zM}pl^nV^USK~ax__$UY>OK6FY2B4~L6O@=hCde!SNK9rzAR48Pwm1F z_-5MuJ%L&x%EZe@`&ez66RtuRDjD@2x+99dTpk=8+3*M}Q-d9&1|le%@dV##BDH!{ zdd+~xqExl1Ca)3^f8>8$W|nTNSi4R)Jzy!k^hU>LMBQerLILs9K&Tr>lu$fUJVr#6 zE7yQ}>`zM_%X|dXV?hHpvBs@!ta`>$?{v@>exX2<88r-n@K07*vB5b;bXibw_WT>j zMVRp%z_M&RLrhk4?`Q&DzZsNZ*Aqv_ zi0J>Otxm;;lSks#it!U50Fu!zw`CTlMU>L!Syb)%4OP$jXcrn;YThsjI^St^ zQU1t$B#_{0>tnkAAHw66=5L_Nn2sG(Km#+ZC5R6KxsT|}0+s}4j>h9kL*-R8p{dOk z-ZL;{IJw7U8nW_PE9GGlA5gg3A$`jT&W4zgtUpjh@(Lm-7i(K5uPVw`*av7EdDFK= zEA?1^fjma=K;CaXlgsKe0{t1?*WqqBZaqr}`I#(BmbN7!>Y7Z5x5DRe5jfe!mGTgI z3i`dt3;$;qUdGFZfSBYw7*f7P;MPo75C=ggBNE^zC&c+gs!~uC*1`Uo%YEF^$51BI z&d*aTK0Sy%l}LcS19~8XtfsxyP1{s8t&#)V^dW)>M1=_(2%8vo2qd_{!y}p}iY5SD zj{;A(wRUhI6&n!+l^EY}jMPW3fHSs+buM8Z;#|bTD;fss6!c_3;F?XA1)pZ(9hKZq zh>B#Mqh0+oqF~Yl#BGwL!NkJMxi!3LXNH+N~YtB{-Cvg zG(mI+SkD%$AB@ICCYKhiaWI{r1Dp?*W*kw#dl@z)-77kDw?lfJqcccpRC+U3GCS>> zpw2DuS$jx>_m*V&Sruf6(7UTBb&muw1Z6mruFT;}%rH$xF^6T2;8cVA-x=9cgIteS z>afRf|3){hZ{$jeZV{EEobeL!0NoL=A(^-f`0Z$(fm6^KRM=_@QG&v@y^SXfW%DV=*F?{F2J%c^pC1!I8Vp5+;T&Nt|Og_)iYoE-r24vzSs6 zF-)Scdrw8~5E5U#vWh_s5gpT8pC*g0-&VKpP-EcAf=}<@5Q9#A`s68CzbQdH$`p=~ z+js7O`mj`HX@ghg(?vK!q0=RhhB&cR#C1(Rdnz&V19X&OIF!{4K9wS=SH zYjQz=jsqPdpjPhBgij=<98EWQHYvSur-A&iXa5lPT2~^wO_I=X)gZGpj4HNz+j)5+ z0O~UpS>^9ygZ(0V(I!{vBY6A9(WBENM1DPl0^@PIvNZw4*&>3FkPy2=q;mfYaVTWO zIgSJWnXCLc&m!Ba;W&>)TB!~}Oy56}x#-%n>u57^Jvi8cCtH-_W?UVC0mTZ_iPwQi z=RpXK(Tjik^>n2$B45g$iWmFCF#?~27e2ZEw61<&pKuf%pLG&x>VP;NR{Q2R*JD8B zm2QQ>=rti|F-etM_n~CMJx)MxMlnpH?e;ObQZuV2Kl0x;zBB`HJbpYn-V_VkJ=HMR z*eZ~q)Tnb&#tTc^8~i_376AumH&y(cj{f`vu-H;}MlmBya3CvN=A>8CHDGl8psTgx zh@g1}Oxr=_?rCocu0dl2UO?LH74R>TFN#zO`xtJmpKroh$dadYP#GcLt+x6g*2}dQ zvB8)JO{Brvx0(!b4`|<|vx)1+#HKPk!?+%fVhprn?CCrQJR0Bb2@ZVQKbc<>?|-b~DRwJS73(Iav7eCRt zOVq{q&5?j>@PL5j6;e{}4<2Eavg$0k-sZJc99rX2;?dwKP+D9WNoJ9pIAo5{Bc!=4 zYKXq6pzexquu#D4ZAPy(?b=({W z*^QdI#H<)-u{Hdw!ADHu-{CK(ML0AH8W1IQT+EzwJ}B8s4U~;d_;i3~(w3pqA`2&2 zb~hKQsq1x3uBmJ1iny|B&o!r{dy+u|AXK{xPPKYZ6`(PVy91Me)nPP|*J%$*ck%+m z1OdUU^Nx2Cdcu;orU*e!@QxG-C9n#YPAiMhS|au3xN{>N2jIarbhj{5sOJfc39vT~ z4e)UZpPeCzOJ!Yp1_v37}?M93QKlf0`Lk3%#5(&|Vrrf6k_ z5V-m$NJcFNwUKs&mpdRcOb4()MTAqfuF`~c0-(V5)+Cj%NS~B-=ye#<->9 z-bwjUv>QceaF^a`5AmVZ{l`sG1s=IF*!lKB6vwJ3PAloYGY#!~H}8pP(9xj;;Mh*8 za$Apwa9@IsR;4M>1_Wb>d?lVX&;x*@9Uma%MAChUDn8x9gR(pwK}cKcFGf)8KCDS* z*p2`cSq|z%K?%#+fM`is=>eUcu>GAQ(HxqnyC||E0t!y1bS*+3gc}7s)iqeLO9yF; zBzraK6MfXuEhk=KF+x@D?BpplNLJd|kBoa^eU3a2pkVZ{@x&-}7&|$FLLTvqL``j| zDvM`^Hwb*(Mv)5du;xmBHyn})b2va{!FH)n4{UVWiLI3cQX1sWs=#w%Bhh?3pv8aC zUldz5#e!$8#)|tV2S`SWc=ttwv};g4($2`@GCa+t6Din0F`lF8djZ0-AeUukc|6Ndp+^Zg1uuT&y;D!MyxT90B ziI*KAO~|i63~AUxmX1V}0I6M`P{N<2I;lrw$HjIA>Op$igeurca9bG9%y~VyDKL6S zqR)_oX?e(6ljW87@HmZN7vdU_lt71m!MuU=r;;p$P^W2Nogp13HR0yTe*qkTHU*J; z85Dk2s+TYoxj%x?Kzc&qAxTBo-2D=-SD7ECZy%011b1woT|Lv~%&vwMbF_}g$bJ(| z_c4|)Sf}Zuxd1-^K!DBaFM5xl?zF9{C|!@N1vCV1IpT7m@B$13zWm4F zE8tS*iqsPdt687|?cE-I#)qQTLBOIa#<(*ep=`ss^?4YHtcE$I61(fTZ9u`5revSx z)}^c!_k=vGZ94yvov&iO%<}VNnwG!wS>|Ccnk9(KNAP|g?eDLT2K)QNJx27yL;obF z7_`IV2f>-TR)U0iW3jc2mtgSkEKp#OKa;l^;uvMOD+uEjc|j!?@rb_Oz2Q9?`^7dU zuV$tOLX0-k3zC4^Pk%s58C9&0`H#=m@InOK(NKFjU{)TOoXNP!*$OW{zNfMUD@FtLQ@b9dpOLB$p<6*OrpxRdPy@>5zwAZOL}QAOKG^@I6XQ;6-7! z5ym1K$CYarf|sd_>)j8^ZtIn9VPd!9$ec+7f2Qo}>+h5>cS(?}HqX|-mit?_#N?V0 zFLp$y_-4#;tf(G2)Q(9+fkfw6RXtCjMu{Z9zuK)>vk799M5V%=x;ZhZ4V8$8){0$V zX-vs!SwkC1hWWkS6GsYj%&zIjTr2`rg={rICeVt8&MTA~V2T=3nA2Ki11y@lSQU}T z`=~zH<{u7KQ}7pO&<&xI0z0K2tx)SHw3FL%=vSnsndCzBbsxi>2MJKtA&lU$jt;}e z{bFhh%Nc&Q5v2(nd_H)IEY)!KloLn4COVD42V*#q6K=2N=-pHtLdC(g`@Hq!?s&i* zyS?&se*|fKB#XS-dZOw3Z@)bItD**_c?`*eJ(8C_B|A3e2`MV1zlHECXPRzMqkZeM zG7Ay$PLW?%!y=FinalS6O!A_;4w9$or~_P-;H!0VH0ka0w!vk4E)32H?%yD7=wlbj zYt#d4033M^wE`Wo;A)C|tSAPS!Qh8iDaV#*`l_S=$NiOw-Q?b_E`U@v!Mzlz$LUo_ z?@+ri=-3EX5eF^^g9&grnFo@Ht_7DfWb4NLj1C>RydRGsdNHI#b{XTq@s^u>_J3CLPUxre-b9c4Vy}G!#v-5QEZm0Y9;-4-{+D3)b zQXg47Fy0b?CLQXHT}B77C0;=spzto8E58)kQL8|Wx*&hKr3N30-?v)tro&%RV3|SyWNc^efaw>J-`i1w`*tAP20uEW zF7n3o1Zz{yPWAweFjKAr;J=1OrG;EVB?y^wRik`tm zk6IbxRu2kw#aPP%q>i0T$wHu_t8aYb&t|WBQ)#2ZNUf{Hg6Nm3!+2i-dF5_m#8t?B zD?Vec( z5zhvggQPu+AfJUJXk|W$tMV}LP}MrB?>U+7e_+}k45avB3yjqYwNUPCCRv5xYn%lt zRUGLjPoXNbzZ!W(&rzN!ba(xSbAVpW%!rM<)*2?%NxTr>g#pmLPS)@D=9yDfy3=q= z(*Qo*Gw>ducNzKz$zQH>IX!~`4qhp_gn77fPv3ZMJ>oR<0$&di+@{F7@-xBNne&v> z@p{wLA!u?~W!moi#kfgV%RaBbD!- zJfE!u^#Qe}2yOGd^SI3Xk_U1_;p3z3CF(5Cl`z zvAWCp>@4fc;}%mbg(q>Esmhh*WV>PNoPy{@yh|Cp&%h7e0n!(24m1T`BMfSO%SF}K znWqk7SxxHW$byvADKt2xu0OXsZ#5Py+pR4~^CFc)S>^nEuWo>EfetFms|;zcjCgNS zWqFUvDx~FqnYTliSq`n0@m6rCY)g&1k39ko%RX}H)m_@T0`U%Mdx4WrwDryv-6!PX z^^Me%Rl;KDN+XDNu0T&JfkP9@rnv`%0hS+h{;b1smFw`-A`e*~iW7Le1z_!55#;t* zWa#r0W?$g&rQ=07@ADPX$#ilE)dT(|OHeHgUf7`4YHaORaBOef2=jXmQ;86fFIHB% zA9UXhMW;U42i=vMT{MdDJsu3;5;$YhY0r1A+_}B-9{P1sz`0845~8Se;9O%~|H#CENo9(}!sr_A@43V0LT?*)+lya%3y z_&X|APmvA(IfK*<{@1%J?{rsU<=x)y;9%Lb1|#3X_q#XVDLd7AqHw&Z5o(=&|bo`j&5{se$Xu!Ap!gWe={%2^O5&qm-MEvY!?QV46NUG zyYK$21hg!-XjcHe-r#GvT7gn&x5{#?^A&(HE?&%!S|;oXTBffi%kuS4j9exz#WnO! zCrgw5R|y0wH?ceMltIRI%);R`h4Ho#2%TynB_vaiajP?yeQS&vRBz znU`vxapX2%pqr9*6?g)2+#l^(w>N>QbGnV^=>6_HP4n{^D3yX0_AB3no89;3bPa3U z3F4n10#X?KVx__wAkly~<*rr$fB--$ytL(C-z-k;bAUAQ227x6#ImJCyZ(Bmf??7Y zZ=ntlAS$y$je7gj!7kryw0XZq*Xc+J9qx+pmM?BpcST$hpcG2L zx>4}F!x7Gnl>xK6?}TxsZ0Xmq_fBz?DR~wM7uQEJw}eN_PMHIAKkp3AOXv`W`Lk1~ zY+mHqyz{eSqp@>SWctW>{XzGG*ui*&$Jc#p(K(N5KF6COHEB^8E+1as=Fn zTZ7B@pm$i`LQswZhSSN?fjmuTll~bFU&Phv1Q&k1gs?=6m@FB_+ex=JkmL%uPNC$p zBMAaj$^_&W>Bf`pB4B`hLnnKc7GPOj78~O2w{)NQa!8hmx$^MOC;e7 z9%n!_%228;6m(5uT;}$a1Izk6WY9g1#&&?nJKU~q6W_V=>&dYk_S7SEZaClG=7^<< zTlDd^Ap;^yDVzK>fn06@I*)jfVVu7Ljw;J2c)A)6;L-8R7C|i6>d3(Y zowYyHbn}K_87)4f#4oD~v!a%LBLncNvJm-BGo}%?dZX3JSHt5aTQ%D^*2Ml&9pIEm zCaRMOC1vMT>c&}1lVv;S%UBTfWJUtFv9d|L`r)3<#pZ5S5fgsoM^g8q-Y4tiPCrr- z+|X^<8AW`8H(-j64eo@uopr3RW^yh0URm*Y9mHej5LBm0*$X4o^Go9;MnfE=)xfg@tsHXu#xpn_i7t1+`Up-Mre?*QP2 zsjT7xKVz1wPz11O@0dAs@>{;r;gX0&xRpSt)=lWjckD3C6Y^&&;HR*oI$f#4(RC%D z&#fhHgXB(`Ii8d8E*k1kuQ0*XMyH3Lmzg4<@Oo23!&jbSYNJ!c&skFpcM%c`#hdUk zVF6`oU4Y8WEojk-!qxrZ%c8>46227GApYQjW#_NJqR^N6w`fl;FJVt1Sb^9sEvY$4 z_;0HVCn^11E%1g`%H&O?0C1CnYLUt?5Kzf8r$3C{LFq{54sf@AL5Y|;CH^pmuza=q ztr>or;J}dsU(Znl=Pk|9(jaltqs`>v;9Imb=!0=9UaM|EAh?^M=bEU!yEu5y|-!Z7MpAqIH-`dLY-A z*j>gHv`s1t^)H`+QE%m#XXA^+zVKp_#f!_upzG>b@JM*@j3t_huxKY3_-d&p^*vh1 z3b5KEnn$!BAg=VzH**U1#9rrJhyMWM%|F&h3h73jfY$n{YCi8h{N={xqlXXfJ=}IH zBsyrdHt%h1fBDIyt?Jjc&$c%n+^d(|U;FH{kJi>dm69#*$|BqzKiWh;YPXl(w?EtZ zvi=brKl*$djn6rQRtwg4(8D8fN#1n7A^1lXUE%qH6NJ)0*WI5}hgP9YBozS(Hs`BK zC#>+G_fop}*q)iIRIweLGm1ZPIj4#(2)++neDG;|ip(VeFtl^3-E8h`aq0NFc^zOR zTYNlux~`DBpw<>1`fjR1vo)TD4nSFtZhTUD*n9avpGsjQO0f(>MMndv4w+~=+8Z7G z66#_szo;+xT-1g$(kG+Iw4*9J#Ge!-0#Ayd5dOTlm(jB5e!iy+$jrg;S}LQXzsFFp z%&*;Vly{+-dZaYaJjBwl$v+NTRqP~w z>rf`j0YszIPX}j@#@l#)4_IQmX~ilA+#ijFvl;sNgshHm@I+O&M;jXb1I#GttyBlZ ziuuT%!Cy#um#-$Rqo{k${mknQ=gNsOq;hDCGGoVNJhQw00yqyx8=Q}fSu>j90BB8{ zAx5&M_5mYST=^8tcjAD^I{e*?sKK|OeUN|yH##SgDL9aM)CBGWm#4`zyZ6^m)_}kLX?`}NpkLHxE&nf$OPT9R#WooKbHu!-)?wgRTll;yYIg99(JC)VLV#!pvIfExv*uaVC>lcCM)&7Ge49s zfvpw1%d0nj6ecA#604D4Rkk7@tJGOO)<|gl8t5E8D=|{PoSekZR+uSoh18Stfyycs zoiA{x{7N6lQ{-M^LrC5o{TF#Yl|w?!1mepw+%WSuB})9xhYPeZ{%xutlw7hO+7R+j zQCUYoMQ-?59V4X{=!UKYWsUBM0LL53O9}-W6yg<^2&aQH z^5)k1%DcmQvgXjTK>Q1&zhc@?ly-)$aM^1w^_HB}&0;XEV&ZJG`xaA%m_;-3X%flEGeGiB2mcL~L6 zl>$kHBnOT|$;shU>Of(s=zs#RNM{m=CsbB~Wh?YtZ;Tc_$c0K9 zN2nCPm)MVV zr*l7DbzwT>|41+a%RK;IVQQhM`K>LD7RUqA9T^_*e+5>_2=M`_5*W~t?`x6vI2`fXwrD8BwaEDCxi2oGL*#_E*-eE48;Gb-xFZh; zjG^#vfJVS2GtQgt|BhZH*a&|R(KLU=iDeR8#4B46ADkuuZA8g1CIL^Sj*f-+M;eTH z3VoJUmsvdkP?< zCt?|TL!RQ%%#C=(VWy)I0@InN1O3|&r_2H^@1rB=2$|9J6=*J_m=Ns*h(Vpg;NmOS zlaxfE>KgMoGla{C4Jwo1THHTDN+MQ}%kn5USH=Lf6K3kSaOW>hmmvl)e2uCRjr>e8 z{LIg4T4!vbMdl3BleN6yLSZ_w3z(8#|5(!ysLl)dNHkkk@q`Q@Avq$`y8L3A5ZAl) zL~semdE_d(2peh9>OwN?)H=SfS#7s`1`g#05r2(}^DWIkV}PqDfRbpSl$BY@#fhEL=l z%0s+W3ulo3F|?IZOn4R`s@E#f)+KOUQdb9ZIa^bAv7YV~v~<{#;z%fX1KcGdC`~(o zU(p@O9I$bf**cxO+d}wG<7B^)^g(2r7H$k3cV7eEJeP_G!1xJNup&PVUfO|~mk+%1 z#Uy0!1P0hQ(P}>P;a6X0c(5-qwxyG=<32NNs4)=x&{r#v{<;?V$Gy!>@Q>M3=`13G z31D>USrKkJsYqxWI2F!}!Q>I&@hLVBv*hZzd!?K#o7h%)APZ7qms95B_A1H|M#j9% z=MG9%T&V1FDE6pN#fI6NZsCYc+b+S6#Xf#0Tu3B3&_~94QMPE>97UX7YiH+~IxKH zB9N~@&=9S@9~tUmq(PA~&g9(hZa3|uerx+_{mJv9eq!cHZPQA-$xSV@02XLq zKVRd{@7u!MAqi$2aBTk|xxE+{J@Dlfk2-&yVP!EcG-MkCEUS*>TFO>q_?%tH+Cr zG9IsYsf$ZF30|E!2{At~O&Ib4h})j51tF;?M{+HdJ2o!}OQfg_HAg@^GPWW59UvUM zM0&spqB`Z`f?No8hm@OJ51<`a?+*@=1Tsn2r&zj+a$%PhuxN zT`mm55j`siF1OD3s>(^+ZY_9$wQpD=JS$EHW{#aymgudEIzVqO30-l@SiW4DU8#!P zHLk3}EgNz2$Ub0c=EOk`?*#UXYnLuT1-^J4gWlbTkDsA(FE0VzP|94WpQVgY*dts| zlH4Dxl>!DGGTajZuFx0T#-EISZ|B-nH*@_Wy!b?Y<-DJZ|5<>4HW`GESyMt=LMosV zz4!pVH}&jQdfF`qly`wlofB`pr9HL0_Lhpeu;8S+;wlwZNfVRxtLYOjf*Cq-^kfk( z2Nq3u<-To>OFFcV8DMmqnSh$~T9RblR*rlaS?TY3D|X3+B%CTChuP!NLDygUqL|Sr zkG|N&rSKl&**i(q=)L;>%f4mc$j^v^v=|HSc>~*59I5J;*vxIq(o_(x(?-h~hm|&x z;)p6B{fdn;0CC&Y3l0xo341qAmynI$+Mq}u4Udp4;ITOa6{BZi-q%s9k8$CQKLrdA z{S7U1{-0>a(VA9kElaOTCP_r?*6KHmrfNnV%ex~=G)g;-JpyMYq+z^M@=cC z7own)As`(-de_)M!p?Jc2&;s8g*<8h#S$+PODchE^xI5Vo*<{0LexG`Wd3NZ5mJcM z#??a>WH_)pT!WC09^v9RWRvORlU;a$B1Po$Vz1MTy~|mxFmGcN31GZm0%*d%5NmO^ z&OA+znVy9>%hZ|z-o|R5kC8tlos(KGD3-PbkgG$XQkp&od4g!kYps7Wkyji|ZQ9hc zJUcM$Ag{iHO(^1wRs0j$HFSsIYEj9m4-FHvSIi(>k738;1-WuVMjb3Ym_6Ta z;gc*^Kui2-nl>7Fy;3|joXc{!$#{|8rBBMa>}S<4!I7Z+UNGLW$og?|WIt=OSEQI# zihZ;qJ2vu*V4W}Pm+rou_3_#9bhO&+N$j49Dg?XX!(SYt&t2J@Ar@8wyM;NsJTeV$ z!dn8ywx63{R_pE!kC9a?VJK@X=o}XfqvY=1kZPu_)gpRw7SbQEKufzI{Oj_mdEm$_ z1*Hn-Xqz2+({AmzZj|9-bv@dFj#+IeO+vEzwstGDrtBvH1j6RWcvJ+b$(Yb(_%(Aa zL#>ljyXksO*f!Ku@(P2HJYv{N!{Giaf_HmDiFJZsE=`xC=XIAi1su5wd@8F=Re^M_5A|JiP?kyUmmZfYv#i(ODl(4tSs&77@w3wk-bpg77a7;e%Y1;fvmQUQDHo z**})~w|<2VjZpyAMoadcm3WAfH-to}?IUM+#Ya)+MqVztd6nATm!Gn&kOZU0FwRQy zl$Hak>$OW#>HbJIDxt>xTV;VTQi4Q>U9}UTqe_^Qz@##CFv3?#s%uR*PMg**vQH;R zHEf!BJ(s~{%Y25|!p0R+js)DKL5rHi2&$QlD)prGH&x$JVhtV3pheh(R$$z>O!c@P zi{+%q(car*>>-+9Hxk}G(aAlPZ8T+ytxD@7RhYE1>ASdMzTxfF>Vm?n8s0?Yn>89% zP#rW${w!~GnjU^8K{vPt@32yRGed5F|r?eY|_3V_ioy_8QbV`{bhF2 zdRwA;2^$kS_l+~r^gG#W+v0S8rv|nf76YIpQpMxjlq2B(d7~Twr~hzPjsVfW0C_*Q z5S`Ak-ERB?#0vk@7?^DWl#)>2bdky(A%@9%N;Rlnk5Vfv57aUQpq)eafegdFaep1^ zFL`;OG2ZE<5^VNb!DOoK^YE<@p_V|Nxx)iIkp%XH#8Y?*Nnau2gAkH>sy}JncV(WO zJ*LM8N63?MNelOG^n)V4q?rN~_+l2)`tz~4>gq9ucnqbwIT`FaL|Ld*VbuZQJmf10 znqn1iA5ig%p+*PHunGg8zn#F8rc_nYUBMPXzXf`i=)3jsD$y*Y()VNS7gLit*iTGJ zj%uFC))`(c26PbZ^c)6d&{rLZ*2VmH7q;TJU;e<=A)fzsT; zFhExmH43KS=FSd|>#d;@(;k5_eNp;XZxc2@ApOhLW2ZwVb;K_%b!f21+kfI2$v0ecNp%IacXJ4sw&k=;UgA;1eCTW zUOMn3jJ(;*x%lfHe(7c@63H^9EZ+GjdTB783f8lU{3nxA=o>rp5+!uvk5!sAv_d=V zIxG($bZ}crFM`-J8OhGzowh$eg2f5AOLg~4OY#7@8*0x1Ri7V1B7-E3o#Uqt?lJZ< z8lF>PK{3Z-{k|;h9|x0vd@uRrH7@l?wmcW(?esX<<9_J_h1Q3TYn>~?8=2$#P?_R+ zN5D|wWKR;KNik>yFmV!PA3N(xP20#qv6p7p3hv2KlsEo2DE!<7P< zV)l)6&*v@EAYm=(CI~~)TLT2EYi}%y12`dLR=MgJumo z5}Mcy;2I)FZQ{^t6i_Zh6u4nN93H_@N|H`5g329fFTu=HKY|zgNB&Y2?%Pd#H&ri6 zJGoWfd9Z5y0Ob5Jpwu?ku^O?taiH|H5CiY&r7Nf$x(J-gn;SCX1j!*X8+2bq#<(NE z7s`3^$m%Eb?nZ9N5hN!89B!hd6A(7_7O(Gb^HU$MlS~Ktm6suYJI25E1rJj2!-@YE z!pSfELoWM4fc9C1;j6O(OPQWb){(u(X0~;LyCCeEw_Av<5|Z_Bw62#D`F2yjebhsM zw?uH`BU7Fe8$LhkonVb)an9oB75RLBG~ONdk^WSwYA{n7qa_6&NM*?YfjF=&$wzcg z9!t92LW~?rBf!(uemJoia}CJf?aOifgs~Jm2f4g;=XQ&52>|H&+F`g06>rt*<<$e6 zaaIxFp<@HOr8!XM7s3UN=RR8QrAz1qA7vm*G}S2iJ$na*JW~ z`lAxVgSEf-a{JMz_a1)v*}aFq*!~0ne}H6#-Q&?|=LX)`exHIuBBtq$rgPGBqnVvH z<7BU2r&KF#_YX#RS55v*4X(CU1}pC^Le!PV9+&VpIu_cPdLK^w$aVBUuD0@dh4iT( zc|qrAud58x=CZJ0O(|T*T4L!p9~vK+Zu;ISIa8MK>4)j-Gr&yS)z?t7iG!s7sKBomq&J{GZx5%c zLuF5ntrAyE)zAa8^^bH1(xVxk{6Kpr+Lbp&IIdP_|4PkKJGAWvmjKq$4b(Q6#YIg} zg)QdF{g5*IQoVC>`l@80^%FUzB zUhlZKJ3N3F0hA{Ov)@$B9;yn_(mSp^5p2uN`Dna6%GFk;Rk*n4YV=#rPVVu0E4=cU zzxyf`xSaBOnsLoMQ_d6cG$pZKYUEnV{(O4@N($Y2e)&V%2au5BRV+Z|5Ef4Fxj(Rhf#uj7?nyd5WXG%&GzcDGzH9}=730chm%4>ygw8$h7Np-Gp2 zuN(1BG|Kc#99X|av)%<%^^FBi138N6}7xmGWHg`wK#+@fEoLP3B5X%=uPI`1)gOys zec1(Acu>YFjIE%W69s~^RZ3!@$-})h%m;UKysGXlY?bIBgRGNM*f7%Bitb~DTWhQY zN+iQV4%^&XyD5S})n`A}ztl9!WL9+QOOt|VqnOZHn6W@UbJ+4>ila@jXk_kU+$fxd z_({9@+f7aG!rPD1Y~wo-{|{unzqqw^Y+``i&~E$Nn=!pkY*JU;|KW%;~a2gy8u3A zKe_gq-G#04J?)&^GgiHkd4hn^SD2b{c8t$#g2(XjoJ=0{UVeuB;#fDm3(>|Bk#Umv ze;czLj91e5<)>~73LmBIo>-drRVhjRZX$D$9aj|w_y{@|AnFIHfOi@w3YV~THIyZ( zk&351B&t1njK!$5~Vn?uVZL4il-i;mpm3R~B$P)}AVX9oX9N_Xo zzkNhl;K<0+^nmQw6y1BRZCup1{DC-o;ZX~Gzojs9OzztkhA=0^{ejEMsA$@<*bD;tG%z`vYA}|noppa;_N;O zZyJdrl-XHPKnB3U35RJ)0%DMcB;QaFhHV6UfE9>E4HhTG7-KSaFc^O@I+7?- z_&HAiZfkI86MtGcWaJlW<7mP<%qh95S-obY%M}SU6_X=LbxM_QopQaB6{-xQw>@v$ zMCD@J1}?1wvjdx{vF-Rhh*foaUgCwZMf+F1G3AKWl}A^W_BbMzRA&S$&hb4fsdfapeFe zb=ok-C1eqcQc(~5jDI+9=LJ&tqXBmV911aW zo|LBhh^GrG31T3~F~Q8rdy;2n#o-!u-%bHHOK%;shObMxy`$05+2QB}bVP3bSP66{LqdlHG z)madZ^jU?SScs+dTaL_3K?EV8k-!BusZGM{X?(CkxX#BzSS_pfNu@MsJ}rp&=-u9RXoaQ1igOo*(gW!QP96 zOC=y0m&ZnvGdNuyCinn4c+m(kxTIt)&Op-+aoQJ98(D%Lu^@-*2NRcr)6b6t32gsI zf)oz%j|2%i0ZI=)5~NoqNJid_+1DkiMrO}yewzmSI~aUz$r6N;i5yks^dygG+oXyG zNj3!$C~{vEuFgD3U?r=MQCZ90vD?g%Bkg6&bYbUs;#*#0aJ(COrn@Tl2=|JD->TFD z60LRtyXJuAZ-*8p8&&z6K&DC7Q9T--O2)jONv)jYhzMlVRGMR)Eg5=uyf6f#^i%L>@NIGATuL2tn&9<%PqN|Z`pO9p*P zc94uXu;+>lWK92*{qu>6s6k6~@My$-$_;_;gk;qe!El#s=nw$He9UEEy&Y$5-i1}+Ee=y|RBQe)COXPE0+ve*U>4T~6o7ieF)T zq=cB+;{gpbn>8Z?4bscZpP98^a#$MNGSHwMz=islSuO_sYkJvI<-X`h78(9C?nT%E za0ZJDCa0)aAb~{QRBySMJ0R3RcY=0!xdM%lfEJV*4{XDH z06ys#H1TvqOV{wyr+~BbHNun@es(z>e5xu7<@*90Eh=?`-mj9qjxMO3Hk^rf5tPA8 z&N0pU(mu%sLcej%g0%vZWtW!w4klBy^TRBVjGLh74xHpT&MpfnAP6k z;oww|HnN=7-MgY$FHq1wa!4IZ)SsK%>mT?}?8s88$a!lat`+Qp&w8h zg_bgx&n0{=Yv%G0)N)CP-AknG0xj>zj+!mRed9sZp(0E^dhQ%Aou9rKBACbVP29&o z&E+vybRC-keYpgXe&rJ&s9zt7@&|NA2HynrG4qS(&E*P+iou&O%&;^zmC{KOOOJa%#5IkLoF=X;>FrzOF*|YzoL9}@*J)}NP)-Xa08rSSkv*p;$kW4o`b!@mC{lV}n#gR=?@70#gBDf@AO$f7mb^BlQF$igM% z1zJVMYD!MGQla~TRls@0B6U4-7A}M`p6IIm7rQ3*pX~RnCXcX0l^yaz1{G;4S&@fBoa1y!H3U5%90^oB#jc;_I{j{3mbyga73xKi3-RfBzu;rGNav zAO7=y^XcR-|JlEk907m)$N%~t{BLi)^#_0OpZ%l%^nd<8{`)`vpZ>?c6`9ox)pbK` z08=3$WXXWWyV<^qvOfVyYL-?*xG2g*GuxMH4-;3&HEhE=QZrJUfMhrwChl_Lk5CX~ zeq*}LM6_K5eIDqF#-d?cASZ;Sb(0!Ak%U+?%)gtoGmR9&4PBddgT|?iRs~tCqOP7k zyFF|Z&tJ`yHg|-UDXGE|b!ZA^cB=;oe=Um?lbi-yRB=HiGTV~CQ`{QGuQC&o{6la8 zc(G&jezr+b>L;%M1UP$O2uz&+M<4vFzxxco`Tv6R|HU7^^;YX*oc}kU{^36-zEA$* z@BiuF{Lz2?Z{O-D&J*8>_Z*`-)<1sJvHtS?2Y>TN|JC1JW~~3_jmJ9uhkx@&|M=fs zW~_xb9_yd|%fI=f|MK5oW~{|G9_w%KVXXfvjP)<#evvNnKjOx}#aREz&)<5B|L^qh z?*Dl)ZYVwc+j|W;Q~n3w$G=F1Jv%WJMvDJl%REX9Z!(3>8sxGTQZq4L!WxP-1g#Cv zWU@SpXApSMs~beo>BhHU6GgXaa<5|+E!TQU%P1lPxD-ut+@QBih(U|5-X7tKnt3-! zn)-XVkzcNQIsc4=8bSRFxxftDw)r5a(7wABww$}rPU_}KI^W0;i+OlcneY_7cP{@(Rn5AuU-k`1yQf1HwgH;Oof#+oToti0F++aDRfDU;ZK8tvW26iDjR?~Q_ z<|#Zm|6CM%he@v_%o>UhP1m>L_gkfAeGeVA#H${x0<4zkrFKYjRx9yFeMZ*+X7 zD)LaAm2z0_{%{OS6CDOlj-iEy!I5?XYM{lo7H=cul+?becY@$4jRexO>vLRdtnaT$ zkxA>BnFjk144g3iCPR-d#xUYn@3}_JB8V}LG1g-YmZm~(8=@tm6!-pk_6^mIu)3^E;Gdf~Z za}0sqg471sfJ8-9XD|=FR`3KKVgfCjXiVQL25}R-5wyPXP`O_;ZC946O%6xUQ||S{ zX_1A3^L(dk#CS1YBw$WhUgy|+dG>Z?PtP;X>d7TVaeD444-SVfheri=pIch$N@{cF zN(c3Ug_t>vhDYrd(_=d_({5QKECMPUFw|Y7wWs3bp?InZU$sx2GN_zoW1H2#rW>F= zbAFBTK_h+QOA@@?0G*ZxI5cd< zOoxOz_Ak+44y20{kzk|$at>;u;X;1YB0rkJPKcnXi#z2@kSwpR1j8s<#w^RnG-g3g zM%TTQp~L=B>**cSzPx4;xnjA8=o%KMQKwd!@P@7Y27@rSlsW z@H1Zl4jBG431ja@13CuamFq(y{0m0bcv~di7W}sZj(we2^0_dxOp1VA#?T@W!xF(h z=>;b3H|1xQp6OBD9re$EWtM2ND?iOqNT!f@uO`cpY;1v>&SkI`#~UdesRL&3+|`+@ z@peok#Qy3&8w$k4^n$sN}s%Sl|f49CANmTcRA5|N!!Rw#X1FleH=P-1ZZIe zhljnT$$+TO6veO`f{8$g_26R)neg7+`wEUq!@+dFI~qSKytXu%b@(v(yu4WL%0zl8|2D+EANS~MSr9keVA|v zRLlYvXohR>T`gL-|=WYi1l{MX8oZwwc^(^F?#t1*poOq6HG<65z-uvG>pGHMh~gW_&@s-HgjM1d z1j#AI(=Yr$cHQWMy2HM2;pDFecytRYLXo>XHCYr4&h`3?(PE1tV1)!zT%XlL5aqQk znRtNBjImCqcvp=>6=)-XmH9#tUyyuwuG9#KQsrPJsH>$dP3@F{&sYJGwoi`qJ)CX@SKdFuv2v=+M+`=5TQOJe6M}2 zp8l44JeQ42barpiVk>GVnA=iAbZ(d&9A3s$P+IJ2@;U5oHGOHVxt{wAPKvq*VABwW zO_pd+H0vmrIVO$kt58D7NYO3JvCW7<$R{XY@?r~^k%75SZSz{oZQv*uAurH3zFa_^ z5pM>J-WK;&UJDV(<8%eDlfWGp>CCE+7{KU0ftPa)UpR+Z_$4I`E$TSdh-FpQ!=V~@ zMP(-n#Cv77fT*%8phYxirYTN<|IHNyX35HP<>c3tks%+;^+aSYs$(p9bCtSacja}Q zHSD%|pt=I7S``mj=>1PbguG_1yONnP-_#ZxdeQ7o4ZU<+n{v0+W~f*juRpXAI@XS8 z5kXHP(R>BRJ#xa>2{}{m>k#<02J<<>~k<=NKq zX}+b?)6*px^<)fcA_K>SF+Q#l0ll|OM}N+kRg((>2rYLqLRa_(x2PrP2nFeWJUE2f zKxAi2W7NXKrIjUW@ARO4tPc%s;pud|QC=w3>?UXVSa>z)_D7$Ohm}e#ak*EO)}%|# zSM3nb!Kj5=WdnTeI{{PsSXEohR?}6QM)V=JYFq{4wnS|J8I{-f5}_saZ}n3Pkrmt* zaQw;zl|3%a#yup!YokLaxP4q<@8O%lGKGP~zNM{XJ;n&YUsIw#_6US(wy&wX>jFK}Oy ze6aor;@3l_ChNsO6%qwf7>}itKocfb_mr_D6)6dwaCk;LTq5CIWcBI^o;F zIt?tW7@rtnyeP?Jg?l-EU!oCSX!6wQyk;|*dd9z389j7V9B%DR(K{Y-jFv`HgLs&2 zV+eKXR=Qc=^+%ZObZ^S(lT(>aqz$NgkLdG|HRpPBWc<3ShfvGhS*m8`QiZQ80BSzG21L{`m$%VsWe+B96oy`5fN^(>JT>Z~+I4|YeI1=%q_ zsrYKwhjIje&Ri`~Wm&W6P}a%gy$RiVuu<9{ns{Adh=@DX-oj0S7b!_!0kNA~E1NA^ zQ$Y%|EUEUiavQ4Qf94%|bu+nLKCjC6ByU;QB=k-c#zY)f;scZ*aD_qGW?rja(i*0v zO4xwX7fQ-tn|Xr7vb#Egb>XPrmPm~3H6)lAM49q}8hD(&FQ};vgfzL%R4D>zNP1~A zH*+dc-=KVu?EF!?V)ve=8Bjqp zT%$bhznw-2xkH@^kXMre*dW$o&x%Yhm$qw=p(mDbm687w42-J=`)ZpkRB&E zBJ{M{dP>F$g58qLRo6jk{Dpx^VkGN=wjw9^Rv+ezy(K}zQ9IxD=w$T2FdxV zR6(U@V>nwS$FWs2n)$mQVWajA2EDOw{+u4-dUQA({t9!NL!&vzxHS$MeowoY_o*yy zqSui`vx~OO-Km~%Y!dA~`0C*!pM8O}jVbe`U;G24CmmP13qM7^;Chdxa+ePWr>bmp z#PFwt)*!EQkm4Dqni~qo4?qvPNQjO!eu9#z{YLVuh&j}~3=fCTUrd=n%TutpRFhI6 z`MILnUr#HtkIFL`N&X~=D1(~WD{gc`F!egp-eE;KkDDNE0}V-yTr1Cn4A(1-W*j4< z209RRS%bslspV;bJwo!d#G^&^x8ym$a1xg=4cPw0wGlSuL9dnqy|%e{_m`Y&I%suH z!Fz~ZjZk)gk)-XOA=xxufvJx-OLcx3)6A>EPIo=A!!{M4jT6_3^dhMuha}mcrvVIt z`}+D_>yVFri8<^T@4_9NEiq%!;1E`S-g zFZgpI8kG=lT80i5Fet17%DpFikct5$HsN)K@tU5wbO_Q6S70QcI?p2>dH??1Kxl&VSo-7ja`YcU3U!!ng1OG1z|Pde(UK-PRnIOmqnS)Hw~Qz=Gjv z;gQ|^TulWZ8rjl(rc?^mm0di(_tppCC5?|K)$o z5%70!lq2B({r_g=2-us-hRkDw%}lV)0`rAUNNU)%`PjidZHuQ`Ulel9xKIj0kk{YDg1{<^s@(8Y=+6qu zQVq#2iKF$KRs$$YLO$=dl^SPAR~ujE##Os>LEZA(xNlW&T-+<_Rq(8iJ>PnnJ6FRF zR~$kJ*@dL@@x8NanDGf{@h1b{Nh^Ygp;WXKEG~`P@g0^fLdLdvo-~Ze(M_G3D{ibV z0~wO#*;LhBab7W*pMSS+X1&OnBajygMm5RYMeSe}{gHHyL4B4TO@l~W5heI@we|4P z_C2}g0}u3lMBZEBqXEx2=5XV=0WGtq3UKp7w&>x3_{kmMDR88o>RL~aP<4EYBu6-O z4f%d2`jjF%*R;SGAYGg>fOUeriBKwa%wf(R+Qbwb%zA*6WCg+L1d&rV1?%JIV#tYR zIV<>WhuCWp7z7ad8zQig3$U8Aqu4A+B8vYA;!Wnqyj0Q@Kp^EwM>ju){RUVXhm+&! z_aKFOi5h}Us=vDkH3XL~^JGn#AS`T4;5@+j=Imf)POyYevoPkz^eJJ}f6T>{@+gW7 z$+x$}i}01m3N_*1lUz*t@U|RslhtBo=MeC$Cp=l7slqZp4Y+3=oizo}TZec21_8Me z>1TiT;#&!z4->*IH~yL(G9O46+QeT)ko>JAVJHyp%!!)Un+KVEF$o&X?bai57k-8- zOOww<8_)Z(n?%3VB^$2k6&DPi-ZUyEh_~Wyvt@UJ6zS7Wdo?(a;noBF{d$rK;~J}uDq%`-(Ue;iA%cGhKqrnSp-m{Q4W}Dt ztag`8a5iT8}O3WwshdU{cI?9&P0GDT!RRRep1%hYL0@K@B0}tO=tRQsM<(INf z;Z+l>h5~6(B91LG=SdB)td(IBA@w|O2~JYyW!q2UTn)}3J$RG`fyRDa#Rp33@)8VG z!jQ%BYUx09kNRG)yq!XELjkA=%Cy%epK8#abo!yn{OAMeJqAqX%y#ApmKuICI%WC{ zY!mV}$OVDoJH8-cF@m7IS#>zt4K(MxKg@Z2GDc{;B>A<(yNX4+KqgWU!M>}%u@f-0 z#xJM=&)d;qCnP~n91DQ=+UZ-`M;(V3l5GiHvbCiahLki{@9ZE40Zc%^p8P8yNcd=P z(S>?xbW6jcxu#Jbkz2Ek(qRZd;p876ud3jIx3p@G(|8{&Iu8|lh;U?bero7p8 zd{YrdZ{_w12IOtKirUoVey*db4%+dcutHc@n3(7v_)ora!-HDR3fZ-08ZcKPkRaZh zC3d!l#OAw5Ec%s3co&a8TrF?qp7dM#J7&1M+%{yAF=sLe${L1L>K&6NS9}ju(Qzk9 zFy!5$v(qRJ@TFE8YJuS%c$2~4oV!7?g7nb%YoX;{v0}nKS9paCIIc!52;RJu)#51Q z1WpxX3qpmhr$APz1uNdv?Wkg_w){Ec*}Aa%B#;s(hMbysm_q!43;NF%(tN=FO1A-2sDy`vzE&5FkSc zh?tfJ7rKw+foLI~#34biPa#7&9#vx+lqg3GD4FM+z3qI@aH$F@xbB$Olsd9ZM*!a7 zy_%%Qr%M=};%J_eO7_kM zyLLU_Hrj^I$d|IubX!T8r-RC5(4%G%qZ*#liBdHvBq1MA?l7F^vEY=vTg}VGFW!x0 z@#4$ioc7gy`}W2lEA zRh?o*Zx@e?bQRWl*<7RDEsUhqfnt;(PTCe(>y4)Nl)l6|tiMPe;E8)X&Whd76GJFC zmoqM5%w{eDzas6(O~bWS8Yg1p*O7GMDvfe9iEoy)54FmH2(WXfaOARWg~f(iCPTZl z8k_T%5EI5gvvm_AMfa;LL?2mxdwfG@{!5`X5ph9!sr9j5P}-u z@hP}v@DVinpIXADYzx@ec}nv+97Nxv+FDz=4qrpOJ9aSa#aou`kt|+?Eo^)EWyohJ zt-?(6Udsi}>|aUTuQgDaBJBZJkA`lgk%4hvkY|hRHAVfFTu1bIKd@B1LNsJ%Dq117 zxlzVV!q~-AcRI3Hx}Bhh8JJT^SeJ=DqSer$+pz)t$g`_Yz1=s3fNf(IZdEPB4%gZl zu#*^0=nxNU6}`udlyM)^8tWri(X4?kbEaSCR2M6nPiHd1rA9yyGjbtjd2g_F!t(~+ zxJulH#vmRnXR-dA5YEwf082U9?@*8SRi+Vm4rAry8ja=RU50aZY*7?`!th!XU)IAA z!mR1)!cO8PWzMndRHy1;J()cxouzF`V$?xi2dC{50lAx=4nX6aiwJ?^F$QM=^Ogmtc~Z-Olw=5)cj+%R)7o5d`ozjvVa92} zBM0v*#)pYG!Gu<{t&l#-H3gOmu(JyBj%qk7Ym zF2Eh@0w3451D*xGkq6!m7}*=8B^hBiHONG0cxeWKxf~Jd zJT0mKl6R~~$ZR?~;c)G*5fQ*3$*YObx|ss>5hjV{clt43I^2 zE;Gt+w;mue8R(CkYGZp!S{vw|d+aD)sT2nfk6ZGMNHon3e;gdP1ed+Vzp*5{0R>Hp zx20t+qez3D^wmUe;=1TSk*yj{9)80(8IM6AE3>-IO)tMeor`gGzz}t%elkIxH9DVA za<2z8(%_HPTHtrNkwq?_DG>y&78Qz{CJ9W(F{X|>6xiU|dtwFTo8!>xY?bzhg9}iIeI)|7jDVfL33+mGTSc$5b zorPr?I6(mv*dL17K%cRNu>pr3%oNf?rcn;jL}F$jrmUqIPQ?jU43$)idd{#BbIz>o z$($M`UUARDE{Ag!hP(?$NczF89UK&uZLrx(B^j*rBi{7vC}5|Z3$83;HlB)2$Ex9! z+tmdp{Bv+_WST_evc51)u^%#E`zqX4VHp}uK(t{3lG_)RvP@dDj0+{hrINbWxBTG>&vIW-3?6(a)} z7mS-vRC_&JaVfOyT)Db)g-1WUoP}Rvr?V*m&Nw3!p!(fbXB&|M$T6dt_7T3Z-(v;~ z*<4hUGY>ftFUk)2#x3|LM}e_nc+eN2#%GSla*@9RiEM^+52WnmNggD==iGW0YNwan z)z-N;Ue$Sj^9_=4sJf7Hn%oLZn>py9h)!;lqHqtF70N87v-tRVtyj$><9eQa{wb5v z#GRpu-|3fAhpPTePdN#!o$fDBjs%wn{itB^rFl1ci$t?U0B7#ow-hDyh`^S>^C7(h z80nbU8Ic$bhUrlB6_3jxfdgE25bgM2>r|pWH~=A3t~!6}7oI2~T{A8@Y5f6}asIdP zW-;C&J`(Nf3*;ZfWdqx(Uc0Tm;dt-lkZ6PybKGMOS+>lEX{WBDWN-BRh!PUSB)M0K z#BFQ#97;hEVbpo@9Qzit+WACNKOjw_B}3{Zi_ojyYzSI88MqoyiuEoMk&QS~#%FkR zaOJ7_R}evqSefPx1gB&onT&cF6KslAq^9h(wf27Rrg$B>D#+JG(hT1C^^l<=6s_^w z-|r*efZG6Q94G+LP)+sNz50RAw?mid?AnpWu@jZgb+}Q&WyF-13Cy;vQix8H^bEw5 z&eyH0^t^;CCX)`|)jBrD!a^yA`&=OKI#Q~bU>%D@Os*En$uNE3ncpQ~tZY}HAIpm+ z=3##>Pr5NZep!Nt9U6;WJmrw96JA$u-xk_>ZYvD4Z)22xtLfeo4#F}=y%R-{St|!Z(I5gsbimbU!Whfmrv`J`nt#w|< zH3VLY#jcIf*^`KV%YtJ=ygn29(Q86|nF2+$BvMXUIinjts z^oD!h`aeY+mZ*O!>mm5(#n_ zbctks<|47abJ8y9qw-dQ0^m1UJ;GIi7MvV?1g*JSn6;le>6LE>mi`8Ws=!nvw+76@aEBS zMVUCm9JI0F^n+)3OR4@jn^EZK==sD#^H~PPEZU%3T>A#_t>}X`%T#U!dZ3TlSoyDz z#h;71Og&i3=2VT;bjD&7Hy9NQ!a7;QEx-<0V$d>mukhLM=&ObbTwV5~+6E)F#d@Y} zO3x~e=Zoft@ce_M3?D?uGnP@Cr2OOv>N5#_vMVW_5$#}z8Un}f{O7o}eC2v9Jw%## z=o>$3a6?dU2xUq*QcaD%;rW4NB~Ax1&8lw3YD}_fSC*6U&?R>JVn?KwOHEPA(bp>T zh^1pF$gAhiijU=4lvF`ahLi;^To4Z;4;LZVm-W$+xTJkOobn)R0-?v|Bw=yAji&GV}We}ZQb(wxMVSUo^h2For6D{QV78@6{4@OaM&tf1-2xKiGv5chDCylnsz2`GX*p1zCr<_0sl?E3(wz!Y z0?xT)j-)voiDGe?s?=fDIr#WVXWiqI$qPIWAXQ74zNl&2{ zeM94?qTFs=xm@g+5bd#`O()`}jaS3UIw)*lG{!7#>9G1Te=%IZpd_)m7a->RWlm`u zATj7k6cJugp|YWZ$g_@CoIHV|@T$$f;Z&)tvT7Ct3}PF{oz!_Kx~Bb9$)}5UYx0)L zLwN(@INd$8Lpze`(x{e+n7*z}BHrcZ>Z0&RJDO)IZ{vI@*Vu+l%g-U9gAY}otO@Ky z;6fG?O3juODXgd|N5H>(lNZ#;-JRW{cVGY+|gqzSm z%DcfV9N5kN7)6Xv+JhKRV-U?qL%4rQT!AUY;Yj29T{$B@G_-v{SA!6l z7kPr~wBUDOHv~M<>iC*J5x8iaKTr>ue}%>mdPjI^X53}AV{DOjMR_aNW@ibPl121M zS>Y-B#C@;hNy-6a`AjSV9v<-5;zxUGs~(S>(asr9?Psp^~K z{gDZ*O$=9egt?I!$r)5|w(Y;;ORJyO!i$53>mzx4lNTCM?d^?UrwCvV;yex6BMgiUq7tdtbMu9Ou(7ZRghNZxB#Lc2eQN&Em_G&wG!XeVBd z@QMKO9?=)k33sBQaoQ^NVzwddSCvD0(vTx6?@FgKT_K4u3)=w$V}PWdE_i979FL1J z30rk9ptg0Pp`s`$8UWX!BnjH&;4!gEhVbmRqz@~_X()H&bG%yM8xj#)Izdi`i;+1jQM~=eXKSBeQn(Y3 zA$qOB4T;Cn^!Qa!DNw)&qzzBqK_~^jYN5Lv~{w_m-3+Q ztUI0;>cl&hJl%OWFlad%E|kN4M2iLF@(HFzp;7%CAC<->gUc;i>sYTwSO|Y|GhOn< zyYTH06cGW7tuVYQFbc@J+}eKh&cS<;jp(We2fbtPVu`oID;EHb1+FdC0Vqk>;BH<3 z&zyQfH+P(oxDN$g)WKdS@*Km1-pkDa_U7Xg@O`kl%1je$JCAea`7|YT$;qpgTCHbX z3Yj^@6pTZ`Khae=HDsP+So^xLt516e(3J@YH0m*>10|XLQ}d&8`BtI|XRhR%L*`n> z>zL1y^v-$ff0QVqtAF@jtL@4>ujAov`a7IwesFSON3?P>d6POB#G{f(pKe_Bq*k^= zoMP5j-rWy0jHAw`w3U4$#8;IHrqfbca264i6s5>X8>EItzMX+hHKu<;@WC6aN@C>WHYEN^CTgj9V~lv-x9xY4Rufh9@_!TM{vI=YV5115jqvGGbS@m zv&QiHe@In(#+u1_&o%o+U8gyr&vUE|l63|!;5seJH=s>`f~CJcK0BVmHY|RgUf=u; z6$TrzO3{ZfTEu`d-^1gB6Kt;RRUX#xhe%Yy|G@ZH58Z{?F%&bjOe zz@Te}`~v6#fp2Z&z9r9ol^;==pwp_4@jAwE@`8@3v2ys_SY2;?I!;r&Sl-mZeSH{Z zW(P%iQwOPKT$}vuQ;$=iYZ?J#Wkv7w#tHBktD@8Hv}qUyP-_=W6&kxJMk#<~T@)1> zyGX;=SJ^a;w9KXf)aytky=OE@=!t*Uf@~@=2)qnY$q2chHb!2pK=Iv+Yfp%amci>? zIS=%Bmfvpc<4?P-4TP*PAh-o*UVYw14goY-e1Az)Jro{n0Clc!_4;t7pCZ7a-#R8T z?rGj@npSiod9KRA?5eOji@X7ntyWdPNiRq&26;tPl+i0oV0kU(;U4xyiy2%dRjJyt zKy2PaG1^^EmRASwmyOgEiN{oT-&oqX z5h{wf_1Csj#B4K+C!8$UXu4;M$o%DH77IFIeRYq8XHEQ-WgE4KU`K7LN>q+Y8k<5u zA52kdIkV-m@EJUt5yRr6U}<`{9s4C%d&|CA$tf%Jn{MJ(IeB}e0%k5V5>q&2)t*9D z!t%&CUEwyfK04YTK6mFUUxaH;@|8!y>lj~y;N7klQ8@@QAji{{!K!Wc@jcMmzykog z)CrA+Wt_3PJ|DZbd})J}x0pOhXj$NdPDQE1KB-%Ht170!OiKxQe4_aFK(rIsbeW3H zgO$4y8P-|;qVwd7)t#Nm)3+B_`Da)E{?ldOTvZ4$Z?E(f2JvAIHF9hi684I37NZ9! zXy~OZ`Q!nA)SD;X3$MBF1M$KGxk`j61Gk#PPB9hcH)gaV|H*4e`kopfazbNS-xEn# ztW&Pljp>cG_Kl~uK+}sTv{Lk|JULTz6X3^9T=3A_qEe0ri#dK6h&!hm@zj$QaQ^DO zT`ES?#9k{b7ur_l0jVROo=8u$j3C{-=}oi9rFaD8_a{u3@w=Ce#*MME^=Mi7k_cOV zktHEXjbcVh8IOX$c2YSCZCn9qr}?l2QD~z6BP4{0^w{T2OqAkP44>o%O5Jozq>=}O5-pd@1zD9%WQYbEklr$)&JO^l2>FT2|nSw~GY zl`<*Pv0)?+WLnp%qEJ(pR#MV-ZPY9PGr z#I|zxqsz>@ z0aA09(L7RhVT{c`0zGQ>Q6o&@?x$6%O~ute%{+oonz1-G*$sXauJo$5P6v;+VH}Aq zxEjJFCL3&MOQ(EZBIt3xS{zoid5mD5qBb(g^+0TOyKO(!$|~9)^Z8F6xvKNQu6pE1 zMK^Ve8j(rPL|j{R?6qM~8tZIKsP9ZruMJws=~){j^wKbf-7hK%dA)HNF{PT(x4=Fb zrSt1ms))c2SfGoUS{c1NQpB8n+dF~3#bI(ZuXvB^9PUWn0Ap@+gtLS^-m*}H)rZB*_WV=8=8VgurSYeIz(a($jI^o?3jNXiwZWG!0Q)#X)nXHsBGFf*=Pz})E& zZ{}`~Qc+Mq4yf<;IA#Qdf=ED4p>yngTuSbPcS3I@5PbZCzA;Ebam+td#MTquqw=*c7@-%e zvOd&`h9zlE8F6G%t|?FDzA;(~Nahm!u-Qpr(|TG^KN3AR@T|rZ?%a|=Al}0F}dcHiX<3Ce*29VXrA5t9$y4CQXsoddU z<^D63H$cRyHk71Rl%$Z%NU0;ikTA{~vjP)y86KvFP@fX_i(2v})DWC5YRH#V;~V=+ z(%lxDBs*{PmbM~Lr{~;BW%E8?k{xgd@--aQCq)mg)}RzGGTso`->mZ6sQn=}Tp~!V zP)1bUfPC>itTgh^xv77tc96HY(nT)Fo#b!TZX6FPo%rY6g@37b;D}P`z(3~>{7bci z2K1@))lfsat-eIfD^NpSW#|$1CC*hwBSvO~oH{RqsH<%Z6u}e7qvUhMYh>Z+cs=nSAbf5!zTLP=ZqdZgx zhB%DK+g{^7)Bt&|px0&^XbwmfKjGJZ&mA?ws%$801K-7sX8G4Cg01lpUWebCc3~yO z<5$Qs0C!^%F-#O;3O^lv7HbjYq( zE`*l_tnA ztlleMR_PEV)@TxIdOj8TrVvra{E0cu27U7JIQ4x{r^iqs;i{&(D^s?p2$+^sc<;Qx z=7pK^=N5Q|CJqR$S-35i`x$Dn{mzl9?@}-q!^?;@Mg!n{BRUy{O^lP3Lm7hqilyRC zn1Ya{;&DnxQ_w;tK#=m$@w!F8uD0%5U>OQPE?jj8V2aNg{#Bd=LO1@cYWSmw8osN*hXAyRp+EFF(sQwBIQEB(ze4H914>IBp34?S8_-0Re`(g*F5P# zd44GqnLC1RX{}3@7`T%u_zyrMf;sw+o@0=%yaatH|ubGYhPR!|xF_RRi9j5w&0saoONxL7X$TG^{|5 zo60c0Fz+M{jUW&gpI%p1O1}T8Qyo(=V>n4P_0br}QKXmb45BEN^#zP)S#9|ud1bCj zP1U+&(6!!e1~CWC07pbj#OWn75vXK{AY5@b7v^9=<8bYa)Mn?>tnRWi@CQO7TKZHX zgf`B=wop&!x!m|Y9n0yM1iYU~C=<&n-AhM)wPm%O!h8cHkP(466{(2SFCay&dqLMk zN7Ht~1LK|@R)0YQ*l4ZYkq!P)fHSjPdT@U_Hx;a&kIIC6ePXv-H?Ci&<-cBp%%krx z6!~0*HcVC(%3f7tqjKmp&x-W|%mlDV19YQ60sL2C~rlB{*jN#`fJvM7-aO2-X6)!wDrwV~zO>|ITQA8eTnV>VVzlkDYlctv-z zDt-QLS6RtdbeV1}CezojEjEQcBcJhUyRgj~!+2ybs$7TGh zR%5u{3ms=C&~j}HoikYzzrCLEIw^IL2E{quqH4~SkD?$()TCsrjnhz3KUtAyPB2IQ zt@#TSMuxL*H#zC}K!R+=bJ%2l*;QqdLa#Tfa!Yol6)LCR+&&Y9Pagi~a(LCvP1($^ zUVyyesxGd^d`SRoUzy;m%~0pboJ41%6MM1!3|UMdeIhgxL-0LTiZwz_^>HiX1(GK? ziSfR*mR}g`lP>ek(6K3sH$0#-@|WIi5XMsJNa|51X^5mAyyzZYUWDLhk~PHGQ8QCgQXn*z@=UP7d4^Of26obsj~#vj6>1*PV! z+7typs5Ki=owI7+YtSvHQuxrPMzc7HLzomcUm@(868UXqf;>O#sj zM2xH6fFuaiP0*3P{&h#OABp4-f=J54c~BGm$3`c=-|K#DQu+N}_IE=qKOR7ffmfAZ zn_wobEV=WKbn*v5Cy(J({ials_b!T($*7d|=oA3If5PSu7$~nzVSm6d`EJPXW1O@q z@#V?6q_p}Y@g3oj@E_Jq9#@vV7e7+p%2oe|43*a>zdvA9`Htu>A^0N!#yguos#0B* zdVKPu@LSci{%~RP`o#AKizeR@={@$Fn@2bZl3p`shU?{qhaLt^eX#X z+9pu`j%&h`b3rRTf_B?%`t)Bp|7P(?+v~RJitIncPLUkSJ&}oeBA}YtEA=<(ib2pU zSIPCF?{N$kN=qxz5KibYEtzHMvTB3NSgD$gO%+pvdg$o1FP~`>Zb2Fz(Emt1>4-oE zA?iK|anpZ1Y11YM556UaDz=~AMXH_t;N_$JPTK=Y7m?9FJ0-C_026)f^bx(dA7SgDuRX>8zJEa^f}Zgy!5K-9i)_@ zS{J65+FWOPes~|cEeSRJv$d=HyLbiWeYnW)CDpZutUTlezV}!gU9QY{NzbbW=fJ$I z%KR!|(1XCy0)*$TykXUISA5ykw&RmsjlSJYEwox{;_;>{=%eY;}O6vYQ)t z8@lu&g$v-651Y%ALHOf{MyZByg@^h2xueJt+#Urm!x_}&hRS4A~eEIDiaK~`GLoK z8;afJ=@}X%4R2`Udzk0oJ~zcg{A1`XdJ%>W^XF986OAW?qnqYftjGz`Dj=o6;06$% zqOrYec!S53*csPmu*@__^35EiWXlyAnT^lBS82NJTo3srISwl8IZA_-2SludVeY%>YrHRtu0+;fB9PNY$=@zer`(pd9C zfIa~U+Dcx+uM`4gTOoNK$csMF3?Mk@)j-%pjsP`5i%;-gBXWIZhvn?{Cr=l8^bS3n zu(dl!Nl*px-y9qOMSF*n4qxH^e0<=+?siNR>)}5tS?w?#tCq3^?(85j;BseY=k)Ex zot?X#?$t$45om~)8iR%T-%oBlWpIfK95~mL!JnTD#%C6BA8PTG3$CU~OKnV>?+WUy z6#zbQP;m{*HJ4;t2#J6tw&D`B4ZQnX$e6}3e>{yGzlR^)$??H(+G$@CVUmZ-Nr8c` z=4e)lF|dg+h4Q%)^`;=nJi5KfVgZxqdYpAkR*E~J%Rr!H*pJE8Tb=IPi`eU($<^`T z;P%cH+ny`FGj<*L|Ji%HAGxw4Ppk#3wTl&YA=@u{u*b>qjw`E0CYwDPZHxUScCo0g zQS-wrwlp(Tqm`^mlBurBEN50Vo2GgptREHz_HqA!ec$H+H2btKi?t0u?!$U)7+Apn zf`Ng70sQ;L*NJoP&8#YZbob1PQj>Y_Js)x6M8t`R6DN*0mPDd<0~~`S0B?svq;sS~ zbm^-tX?Y&*G?d&AKrz#_ue1avld1(K)cy+DWc50;tp%Xf+{TThyjYwUkv2zWJgVM8 z2Eho+$%l9DW;PHcLOz5Ix%752G+{Age5En&HRL28jB(YL!hncIC=eTI%PN?4U?+Px>(9eS~y(|yIUY#-!E46Yc ztMApu#F%@!`g2B_0Rz&9ne5gMJIqH@eaX`YLl3beXDK%_R_+r0u9Ulw6#?PLl ziD@J#nVxc6tHy&GD?foy#oa0G$ntRB%XRIpliWaxKfZEtaPQ6cU?+O6xa!0#J|(A1 z<^s_HuapFDzEFsIT}8HGO9$(LWnayBqqnbf$QtQ!>VSPsNjjm${k)W^Hz-ykg3R)K6yP}m{`t3F zlRy9Jd*6QT|3Qv`13dG;-^1Hq{)2D7_N^a(`^Q=${(Ac$^WS{;zxY4T(${N0dckr1*%ybu`R;%If1RbT|LleP`t2Y5 z=DXkhzt7UwcV4)!zt~1!|HrDn$gliE+V~Un^>=>!+H3sJ`Skt&a5`-$pZ>-6s$3px zmH;d@jMDkq+0wvx6%w(BG1nkOk4jUL(VGTO1QvDbsEwm%-7-)VfZFv$O}jQ|w0Syq z4|S8Oblk^8~Ok_~;OU(S>lTmlDI==6AU2(L%6n~B0=N9wSu z4JN6PZ{9W_iu08YfyRqdl2a5!4F>Nc4@G{)?%tCzPSlC&l{8&qsvrs>DTC5CV;(EKcu2(`b)(*2E(;HSVQEt+e;u-e8anH_=x(2jt4x9cei1pAhY z_=cDza3#Z)2{7ZCJ0`uRW$gK?9hDeQ=`|4F42Hvd=9wwUr#99^n{YpcG~!WIc0hUBXEEo&h~oBtig>g+(tTiqLlK4FVLd0@iXr)fV+@;et#6{wMt6@uZS5Q z%NqO~*CH>MaC?Ge$8g1}Q`<^X<;XVqt z5%~0MT4K0~fGEL-^RuBfz5^5zmS`GxO`fV7Ni3=S#38+Q=4M){vLF zN}8}QU+uaP6i^p)DL`7tQd-Frqh7UQ*=k$XEPG+77JH%EoYNM&qqTY=`f`*QhSam$ zVNgrOkj~2!T+B{gQvhDQYzuW2C_qf*!H7+ZDE_PONaTsEQnX=8odHr!Aq`co>S|rT z7V41=S!=Hof)=Yi%zHg+qgt6#%-e$7MXEMNK4_WijN zXr8{`Z~CxVPm^O)x-KW^fcNmO&M3ZOUeV=>FC}j@=Um&41?jw* zGr70EVrVuoChe8N&Xj7mobjn}uy)=5X@#E=Dz0{=SE4ph|xNh$774=?G7V#Cm z6}nKp^{dM#z5<{$;g+TSc`}QyXdHBtR@>7TPs?k4J!g3@xxX2HvAnD@ZC|ds&ezF9 zYRC%j<@@5~I_dxe?ea_75PtE~=i= z;23^N^-i9Wh0Yt>;#N45U7Dia%<^h_wSX>rG4&(Ai4>mX52my6;whppkLP>y1MC>6 zT5v-a;gOw+!OeKp>t8MBvrylPDdohDBPkEZ;9#a(_)z1gZ1~O_1(xgs>d48x;VW0|I(ZOVW_5;#!u&BQI#ScBW zoE}T}|w;=MaOQksz#nyxzkKYdHU9aA(CC%kk%vp)zXA z1qzwnJ#b!jpb`t@S8e3wSG!b%I1T=dWTC&U4B)J!4mM0><7`9>Pwa3h7l*Vm{?I9| zg#2ah0V^whd>8lP9Ktn*qk=|&BV3UdjU*S#X)lTUcM|irjGp$x|I=Y|C>O_P z+(L5a&ly(fAe&dp<-Vx|=1hiBeJK#5IgH`g$-~(05p_b8Uf$v;Kh7pHg6p4)6>QCD zBO}EAZdF2M;)>0o9y&Egh&*;7mrrMK0NUkBgWx5uG%-V7&l$~E4=a%5(fQUjbIGk< z(C&W{FhDmG%cm&H4$S~dnBKaxe)d8jZOY!hD)RcWTGJMj!+GeUYnHV$8fP(rS4!tL zMbAx|0cEnw;$18We^XaDozidYBKHam&{|2pkE_RdaChUAVDPVCu{2ZJ`E=caDM27C zsPahX3wIpqddEYb2kk5OJY?5zC%nzIn&g>V z;aon0-Xlhodm79;v7)u?r^o>MO7=I{;ip33x%8k{K<{p4l#I&H>#p;bR(dPwzjKM$ zFN6D>&Bf??mF|djWcXZ;3C4wn7O_fyJHJz61)RcJl`8i;%S9p}{w7&2{nY=}nJz16 zOGI%m4}6o2nBQqol7_@2&sVttv{L_WG^o?aeT@pmRRrP3z3P)^YdD!rv8D~C`)|XE z46~NUp%^KQ8^I8jJjM0w<`+yFH!lmFBEa})fs21}73{>X7fLa+GQRBf zb%~DDq}t-The|1O$ghyJa2885b#yR3CjL@Jz@X7(TwAZvNJcuT+8rp7JQ3&-+Kgx%Y#^A(-dm7%s&VGHsAraC^I-ZJ z4|)tfz>dpuve49<@-kwV1VljTIJ*2~^5F8p^nu0!Jve!YbBiYk3Ca;v0>`yGJB}4^ z1I;kiPJ$Tu#y*}A0sC8vr$>yAmEcY9y-EYNlZ#YsSUhInwW?+zAgmBKaI(k2*7OL@ z7@w0ml3KrARg)d54`+J>@9N-&IhBnR#|Mv)0qFSgA>t**6G4F=sX=fDT1V{lGi5EC z-=^W!O~Y-}*SI&&kZldy&N}#9=?@#a;~sEN*{R)&@{)( ziNHPC2gQFrou4f4Xb22?Rf-l{%@LQ?3YoTgnplUK`*ytTl&Gg)uIq&`;+hf_`_ zZfE>|oKzDmE2PQ_9PH^6FTd6+9tnYp^mL2%U@%uHjX=daJEMB|Jigo7sg!U{bkepc?7P*6?~!f7^(%=dJL@TA+y zBoNVEEj=jWlJ6pDv`2~%s~=C zpn0BX#hlaLL=fY0`ryE`JEx2oYBuY#$%#cCLq(qL(^}udLf5K%GI^S18__Ae*v%?3 z*f8{pFUMzn6ZXeY6gyE+H%H~zk@d-O*gyf%ndwPSa{L#L~ zYGOUP)}SIEL*ayb9W)U?-!DJEkL|M!*peI6vsGMQaARwvTAa$c=~ADDBHlt68r;2A zPL3bGwJnlpXr`mqm7e+`130L4>8;BO4(7slr*yEU6)S7%E1cDq$x*hb;hD=DAn355FPhqdx$bI7ePu5p7X7QE7Zc{0NZ z^P~CVc(M-({)0E(xblbcj|y#5mqo59hZ(;jxKi=CTH`dLa}vjRLaz8KG&w*rqh~tN z6^%;2(rdrIp@gdVwiOfhqddRki+}XCT8h;bRtt3RLc};OeONA$NJ7j^1;k%PmzyP{ zt_?tG91ahpvQQ;csYx54(@co4f4H`g6H(TAD6d^9E)rH0ldUrvqha;61|phDGC#$N z=xFe_3AK(Locrf&6LhW>2S}!4rZyJ_#iT47Lc!Xu;KY^=E8(xC6nW8K1cPeTFX&Ta zerx~kIleE4ITK(k=6h&;vcGMn`3~>3vGu8lc-+c?wVfr=sy1)Bb`(|N)Q(2Un!QOa z)V75RLM>m8gT&EL;f6y&O)pGoI0c&Sr8}1|4<<__&N{xdKV8D6zNl%dG zW_tV-r|6C+d&if+_Tz_>ON+^)$rlPJMUdhUCyAk#`e5&0y5zVlokv#k;r&ZU5dX>d zH<5_^`@{SAeF+bn?_YNL!DcyM7o^qA!GpzQ{F%%mzYGF5@)_yJ)2Ai!umF&upfBcG ztL?#qGuWW@|HB__TrDHuSDTLBQjvk|h20XS>lRAM)V`Bl) z5cos?kejBn6HlyWFJ+vfSDa^^M&b+g;O@tS0>kmDNjJ<4IppFi&Yzm6CP< zB#V0H6fzL4tAn@AdtFwWvsEy+0{kIoEw3)8EpblNb$X^Y$(n2KF$KdY4gX;dwsrI< z22h5m?+(z%tNk~0BHNRaSRMu>Ql21D1x_GfO`u+n1so>fQp`i^1XIKu|6^nfgjX7A zK$DH=@bF*aUwEsG0eIF%V8@u7xo7yD^Af|2k7pD(87`CUnoQ{tG`pEKjXfL)+<>bB zI)rqAv*D6p?@Et0Wc1SI3UUYkHOi9r*(gnG2KP4n1e&Z-^?2MQV6LmqK&oM=^in@} zA6K~3b!0A2Dw*xOkyh`So(6v28HH=prtlTO8vB_z*Ui1Kz%6gcqQAU)`SK%dDV#hQ zVPa&z8#_|y=8RB4EgwrYe*U8cMjU%cKr5PCPR=6F^!TZgm+ z`nC*?nVi@!DXbTJ60ZF`PMu4=CY_Tv+YU?nnjlubW4urF7`22fK3hP;}b6L?+W$wp$2b zJ3?8!TBJe$Pp>mOL%xsM7cM!5gT;b)A8`NE} zPgf_pPCX~Key-XGSrDwGxn{vDk^)Z-cPh)jbrzQAKsy?Yo$P5;ibh6J#(p-NKSA1C zQ^qR+8VqGWzU&*Sk_xN%;|+)AZWNmJRV-GG2$;K7}QHu0(<=@UXfAJkFTN zM005ZWxqIi^NlNS3C@uC%$Gk@k`F)1LIyxW(jr$H&U=QJZ zbNIq66-y5ICs7;LWy<6)=Y!QE4mA^*qXE>54fMvZNmpqnkdR>|9X|kZTO69z-Xg4L zxBjkkJ~8QAs-TIG@9{X_Tt2!p-un#pxBe*GbE~s3B^&xCC=0%W@E%i!YZy%kYmNbk zuq_&)GP(yWrpCIh(;Eny`eS9-n(qw_rr-a5bffG7uMGNDZIG}k!(@Dxt99&@ z9R_Mwy1$Y37$QYE@Or*ohH9cu-D)t?N{G(fN*qf=PvMSFLq;GUwuWNw2@_`%ri^Ee zb<;ChsX84~Cf=UTWc{{B%|Rngq`}6ndS8aeRV>p zMc2r`Q>mKq850;PTCkOjH_`C-(1z`vcOeE7}xVb+VGDj;O zX|LdU(~-KwmnC8(!JrJ^VeVHoWMq{^v*UDl`hhOzl6=p+WP#MOxx3_krn}=Xk-=|3 zt0fP8MtMN>3$$;l90D$pV3zS^{MLsrKt{e@_Og;Pkrx5Rq!}!_(yVP3%l0qiz3j8f zgIvO904mtaN5*WKbfpzXxaJeGN=lU6p2ofv@&-YANzc>$`uTVY*pA1CM|iDBkYc_G zT^9zm&7iy?15ur@QOqd&^3%!Fx)LW0Z?L&3E&HMrg-lB7N7>p=rHKqY24tLrSDUiY zmr;lTYMMzlLgr!LD1(&EyuKGV!O`I7b#$o9)jAoLCx|AOD=zX0ATMYw+Ut+5+`%N~|4f-33U-6rEeZfnKFb zj8ezuU{gzRFacNmYemcTYUjScW5oqac>XOKYgTeb6)@Stt%q^8#h}gF2 z8)4>D6*mQsv%!XFa7knlGD3hf#Ov`OLRp0rBz^Uf$9FEh$pI3?9ZZ-&Lh^eJhSol= zV&ENq7n8L_4zNE6BS5-qwPO(vk`cHL0SrL9Ix6oe14iH{B>!;-*g&?Nni|9HQ+pvsi9P%ZOj?GX~u0(>us@;a;4Q8o}Py3pz-5dW7q1sKp~x-I7JBMom$ zThk%Tny`*XQ*OQ9epuBY4Q3+fvH!PafnOPNsMFVk5}GFf3g>B2gl%+`iVVdVkO*ug z%hCEGaWwUy`>x1;jN6?ei6E2^aGB5*HOy~HydZ-bpGiW-UW;CN?`%U2Sz(51P1f76ks5Q0$fvvTisFoGn=h4j18nR`rQ0$fA!A^EH z60j%!uKFO+GuGiU($ou+LZKL`Kmco*WVm0y2Y0ENs3x{7Pb-}=&45-rXI$i)3?~mO zZsm3&L!a`!3Vy&>tpFkftz3_oy4&W2r#EV4b_`3_R6LgXB#F?bE^gHU0+aa9>y~U# z6*O$Z&YT~(=>W?&P~%G?JXBaRbS^l#-vCdht+30EJIlP8CUafE`HFp-4gR{P;h)F1 z=|gVT%UF~Pzpr*VHh_IoT#sbM6^p0NV6RuQPvBjLRx8GE2>NwWN)&LMNrQ>M$MDkz zJt4KMdlnbrn*~xq`%t8xdMt#2WkJol&9hd86v-1=&TFnyJwyd0mi&_JS+j<4!83l(aecC7@jPp6ax3g=xz+BFqGTD z1fePjCg5LJ{s^xhLiHVtttmv-l@>Nf>iq^R$O``OueET_X6p8FZZtRxNC2P9ui_vVilsU^n<9ww#^`dPLFi zk#Az!tK_c3jntPjw$BnSfWsaHrwJqDg{tuXBJD%$bmA?%uV?_#4d!koQjQL$$HR@Q zQOx9mfzx`!r273gN}O04nZkw?%3A2kCl?1--Y8j=ZNN>bH>*;W!|T;L(&Nl-D{wGm zyOOAu0XSkTwx-XS(HaGdPc$UiD!Ede#%-(WWWZbBf(Tmp+u`Gv1<43benZlQ;9rfd zGi(n~N=S>p+XIlD%m2jp0G`L!&kdCM3|Ff`GTJh2Y>xdjY=vQ8jZzc~DpxwJtc>CNdOJiM0Iy*VUS>5B++^%>-*YaohR#6dDc& z&}nbs%-;DkZbJB-TzBI>*XO;$s{vas(rF^%C@ozcn|!*_7V#Z|$O+^X%&CxeDv(kr zd!i!qO;qhx!7x2jneWf=W;2}Xk;_F>HE16I>oUsm0M8PAlf-& z);1rdP2PKvy-hn$Zg=TeJFHIZ-`v@{dmFno8E2BUoqnbb8zhFysMQL1+2$754Tq-B zyU}A+{a$Ltf=56Sf0|_8oS37Ra%om4XPnNK!SFZoE&??t4ND!|>iBN!87P|!qqP3p z3w#xqC|K>S1wIYYyppxWr+R6`$mnGP za!l6Pgvyx>K;uUP0QE4p;;A|wMhEU1e_(aTK?MA=LM65WYQmD)#&O5@hNI5CKm6w7 zT7OBxVBj8RI8v<7-W+o5RuPD`5mM^u*DD(wi1WyYKH;~T%De~So;T0&teWBqa#lpG zxo>^bKg%vK!K+)Hb4R`o$#UgXn${~5$yjzdfyLEJdb4$q#4P*ZOPT*tM!fK;;IfpI zPf}bI&q);3N9$D+4M?$apq!?WpDuUk2wNMQz;`W2bhH2)LK?7~jo^U^$BZWt#90R9 zqieGdHVH_Jvat4EQp~`q*PuRUX2TC4+&IAwe*e{@XAiP)g@uY&IsINq>@w&cZN|b< zp26FV3m=vB@94qJn2oF}$*qZLK3K7&S@$Ycpa+lkv4%%^+}!=ir#sg_-M)42?(I8& z`soLMdT)CdYtE0PNbDBD+q}())17^!go=$nA;d_nU|N$gzLy%oa}N0xEqV2b!VYE2 zDqgUf@GAobZd~IZ5dj+JOw??dO7@HeRI2E8t^6ppsH(W{P+mB@sy=vUp=+FcGPT8) z)Ha_QibyZ?@w(0^dQ9o@;vjd2Lv7WJ!~baTS`RVej>cvJvR7xjb^EUAY}VRP#4&cG zn5F}VPBCIk9F?}Lr^#w&-}sM=*cLhME)=u;$Fti3(_E z9-x-i-q(-P)VpeU{YyS^U&{hb8z@_q^F!pBe5Vnt!ICd#8yKC9Fgc=wtXlpvxmC-) z;sLA{NB3`vPU#I2TbFSGY^6_K28KIE$!4;`<1Mu=4I$r|FO_&+wJEk^s&LN_M%1#2I1- z>7X27d^v{O;Q_Gs?RU`yhFDlcv`OpQ0_2>I?#oS$x*&K8vJd!8|6s@4>0oRU7fFMg zA)Dg#o&*4P;n3pVY};QTIQ1v1#mEyPt?SM)P=+mahg!$x<+LuJ=`>N)RXcs{`ObUT z|K+((WJd9`3zEZnfE|9Pz|A`UoLh6B+9gsnfy4HbuRJC_?tM17=j;&@KMAS;!bB2i#?~Qw z5d}1o2jA_(%dz06`#8)pXYN8-W%Ryf?gg}PKqKfc833-nsO^k5XoI#C|H>TAUDrNr z>xPq7W@{C2OuyQvK4n%@iys@lJNr~g$+b^#Ikp}5T;NE_{BTz{*!%P~r=G&IBTUuy zc<*sn?_zpNY>y{Ck6OG>Rr2x~6gZ`PmFk34NU0lx0WAbHk*$K=W0$zv2YKJOqP7Nk zK`pkC?(TkcWg1kjxayphtIzlqN5$dzi<_#j@-$td-TH%#iE>ezeh+zDa>azNQ{>6b z@fXv>lS9oKTOdgj% zLXe>KZJhi%)YD^4l^Xuu%2?1#CpcpM#*gafcya;@X`=HiGx@0t$=1+JQ*QDkTqh!6 z$H$xL)=ZOiG7r{`Y5~!Hx}1qhe6e#Zi?Ux}(21ecZHV_=(~xC6DNmIap#y^;5|dMJ zgm)bE$;|W)S97$APVGDcD{XkNe_9#RxB}tsF!QbzJMozcMLaZjUe8v$%^e=D|3RLks zFlLYo@0}*RPs4lPdrzoix%YT-SR&5k-T3IJJ(xP3VZe_tCv0~{D^yD2(w5`u1$Lk( z3j`EPeJ{s-Uk|hsfWN7L5`7{O%{0}>Xbdo+Ib@d*t05b>w`1m9ptKq?P0B=UQhkkl zJc2f}7!~)ub@kKgsxn2rHRa3die(~uYnRWfo8YAPR_2G*)e33!RxY1=nlKqgW|`s+ z;BfoJ+5S91HeIgh85`2@mQq${Ew@QQOjYX%1-H9*YxV6HRJ@E;y>NCjB@feG9CGII z!ft7Ozo!O&s&VGsQd_21ZCaXUO`8DV9>EMBY%m|(8Dnl0M5aOmCNrLnHvPO5P@|Pal8nXp#&>0_NNOyoR8PK*a^>y zW{^u}Dcy0ViD|ABh(1ZQv3l90R$HlZ5~QMq5Hm);8<(x#5($~VuVECEkMHhmAkY?kCVy@N7`nvZxEDLR@1t-MNq!#b%DX9u!qO!+vtm^+l}3VIkEP z)XOoHe2)#nsP6u6#V%(Isd5<#RmA>a{|2Ycff^Pq(QY7N*I+YRj^yFQcRWm3U?V2ULuznp=n2F^ds~_A?p|Y-&iP!BNJW{A`Wd-7A|mb zV`#v${Z5Z!9%SOvZnW-`D;iygLhk8Uxz2I^hqB`js zT)ljQz?a!o+oY~T^pw{H#Wx?GM~nDc)_NbwDJqPQ%Zi<@%6J76A_*VQ5qG7#id#yw zy4n{_26OBISmN|zSD~a7T_FZaKYqWm;4mxSdxfMf_^Vc5APHsYO6Z9<=?QUFru$oh z8b+_FE-Hv>{lUwh3Rt5;VAnz3tkD*HNH(!0CacjJ90VW8*A*$X0*=2GdPH|@O7XYP z9x>IgPieMVb|m~$cf6)6-B#tI=4E5`Y*PBuk@>wOysLgj*gyyLG(^$7iAS&yJUuQ;7u0bB5bg;VBp0hYOz{Gn2=k4DX3$fc%(4|sb6I)(e<9o*9NuB17s zUkYNxLo4s^=sw&oayIAU=`|{Ji=XTYv2a1L_1k9C`)r!QYX&vRNwm= zh?;qHxrN;f0*@6EH8!lOb$XlA02hk&x_UySPfJyxw~4Bk3Q5*SRiL+tHKXi>(}&sD z0mo@0723T!`FxHnt;qFw4;$i>W0Ju1;S}ecb+qdXIk-(JTYdYRC`+^8yQx|sw7-F> z$O;H5r1m#c6cf~RStZida7o{~S zzpSsVqQBa2@RP~$hnS?vVws^Cnc7vhtHZ^SaN?z2x)(9`!KD`G_~q8G zM7vGzzycIxwHbyUoSU@)j_hM`h@?G^tV+ouol%6C$IGg=^lI8Au9VJ+RK%TLL1ada zbf~BOM=yq9iXZN(UdIOa@p2-E7pM`dPu)qZKNoOnwoV6}K4|)xT>>CUUUU}}*^dIE zNUThS+fbA~8&gyl&-b|KY{NS=XtJWxI=60&)Uh$Jiq>tr)wiQg^NF28+Xi%;X;p>| zqISx7E?Od*6g-aXrEk#XXhh@V1SLDwAruw8an3^ z0ilA*Di`)5wguQk{~EX=Z+&>$2Mb?tPQYzk+*Y%D3D+?~K|HZ8wZJS&Jc!do_+^^< z3q)%N7>e^SYla&;+>6JZ28w6oV!>Tyyfg%1F<5b^5sHE!rpiyY?+q?Xqp-pM2*E43 zo&f(imqNsI+7Ld3R4IEWNW6=ShyVhD^d2G#7(q8!P9^dNB3HH!kiF}3Tywx=E8~4X zjLz&ZM~gYqZ8OEMC)&*fgs>OH7TiPAx3y&?WMDs+2G`N&2-%&74wEr7KMQ86Wyr!n zj9d=IDsw8f>BX&0SiP07?G?ISLR0hYz$i$Qs$p>Z#(9c#NA_;-1QEW6AL;_dYJ2m= z{yWx@b@-l?O)DblIg4(wg5UA&f#5o&lKUDH2Hw#eY51W_9g~F(hxK`|RidJEU@*~> z2IN{c8wzbRv)1BlRGL{=H*Ic!JYpB1!G|aXhrEvXgWaPz9^#qgb$ryY(t*$P*pt1o!SP z^n4%IK0PW6QnRLTtF;Nwp}z^`bnxH#)mFaPK$HY*SOp8XdBv)Cw4?KI !#%rs6_G?od-~meA*JFIWuv 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 z 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
    7TJ%F_9bdW~c4h&xRjMz5NO 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%0A4D;^c}w$@WK%THZ{>Ob-l>iHeEXfnyPzaUf?ti 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ȃ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πN^I9^XIXgWF~>oF$t9N-n2h?Z#^tddr<92E%V? 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�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 <(T=$9KoMVDgUv)r3v=HPJEFF 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 literal 0 HcmV?d00001 diff --git a/with-failure-logs-5.txt b/with-failure-logs-5.txt new file mode 100644 index 000000000..0afe8eb57 --- /dev/null +++ b/with-failure-logs-5.txt @@ -0,0 +1,1003 @@ +favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found) + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `time()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `stats()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `request(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `history()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` + END TEST: browser/modular Rest BaseRest without explicit Rest allows you to call channel’s `status()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality + END TEST: browser/modular Rest BaseRealtime with Rest allows you to use push admin functionality + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` + interception proxy got message {"jsonrpc":"2.0","id":"c7b4b8dd-4c39-4d9c-b90d-5625642f3e47","method":"transformInterceptedMessage","params":{"id":"3b2da9f6-6e48-4d08-b7b8-eadfe74b2849","connectionID":"a2edcd9b-abb2-43d8-9c42-5a2b94142e0b","type":"text","data":"{\"action\":4,\"connectionId\":\"gUuf_u0Gqh\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!gUuf_u0GqhAZNpQ7_atTYi-376e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3b2da9f6-6e48-4d08-b7b8-eadfe74b2849 unaltered + interception proxy got result of transforming message 3b2da9f6-6e48-4d08-b7b8-eadfe74b2849 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `time()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `stats()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `request(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` + interception proxy got message {"jsonrpc":"2.0","id":"ff035231-a74f-4eec-b6e1-ab4d3f3fedad","method":"transformInterceptedMessage","params":{"id":"cecd9987-8316-461b-902c-79ee1a06d109","connectionID":"5519debd-9271-4efa-a5eb-33b7818ddf56","type":"text","data":"{\"action\":4,\"connectionId\":\"GSCqygclrb\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!GSCqygclrbAcA-SVDnmROz-4e85\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message cecd9987-8316-461b-902c-79ee1a06d109 unaltered + interception proxy got result of transforming message cecd9987-8316-461b-902c-79ee1a06d109 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"fb63d2f5-2b27-436a-bd87-ddba0642fbfc","method":"transformInterceptedMessage","params":{"id":"ec6779eb-b883-4f07-a363-d507f754137d","connectionID":"af5206b9-b434-4cfe-8977-ff04695f3a90","type":"text","data":"{\"action\":4,\"connectionId\":\"vwrRhNUV9m\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!vwrRhNUV9mAYm6VNzwTXWb-4c5a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ec6779eb-b883-4f07-a363-d507f754137d unaltered + interception proxy got result of transforming message ec6779eb-b883-4f07-a363-d507f754137d Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` + interception proxy got message {"jsonrpc":"2.0","id":"31a3813f-532a-487e-b72c-61d5e96d75a5","method":"transformInterceptedMessage","params":{"id":"b8838edb-b134-46db-ba4a-cf286beebf44","connectionID":"f5ed8dae-1f2b-43be-bd2b-6a141be8aa02","type":"text","data":"{\"action\":4,\"connectionId\":\"VKYc-X2EH3\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!VKYc-X2EH3AXohl9FFd7nL-429b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b8838edb-b134-46db-ba4a-cf286beebf44 unaltered + interception proxy got result of transforming message b8838edb-b134-46db-ba4a-cf286beebf44 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` + interception proxy got message {"jsonrpc":"2.0","id":"ab14b2eb-6545-474c-ba53-d2f24aed2162","method":"transformInterceptedMessage","params":{"id":"59b00316-c75a-4d87-b703-b41e835dc763","connectionID":"b8da5579-4ed1-49c0-bd31-2a3e21cbf86d","type":"text","data":"{\"action\":4,\"connectionId\":\"EufvCwLJ0L\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!EufvCwLJ0LAScTJ9S5YH2O-4c5b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 59b00316-c75a-4d87-b703-b41e835dc763 unaltered + interception proxy got result of transforming message 59b00316-c75a-4d87-b703-b41e835dc763 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` + interception proxy got message {"jsonrpc":"2.0","id":"90c1120c-929c-4776-85cb-bf669c0175a3","method":"transformInterceptedMessage","params":{"id":"06390826-a692-480b-b2e7-260a16faa50c","connectionID":"f128c8dd-ee50-46ba-83fa-68b1bbad60aa","type":"text","data":"{\"action\":4,\"connectionId\":\"Y631DMhArp\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!Y631DMhArpAWglQC0NKVoa-3774\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 06390826-a692-480b-b2e7-260a16faa50c unaltered + interception proxy got result of transforming message 06390826-a692-480b-b2e7-260a16faa50c Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `history()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` + interception proxy got message {"jsonrpc":"2.0","id":"b464e732-9f5d-4183-8662-2b4b3cb3a560","method":"transformInterceptedMessage","params":{"id":"67bb714b-10d2-4c65-95ff-3bf32df04c33","connectionID":"1aed8420-9fa2-4789-a49e-3d153011e99c","type":"text","data":"{\"action\":4,\"connectionId\":\"zMBohARhlg\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!zMBohARhlgAVVqUuP2ww23-4c5d\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 67bb714b-10d2-4c65-95ff-3bf32df04c33 unaltered + interception proxy got result of transforming message 67bb714b-10d2-4c65-95ff-3bf32df04c33 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` + interception proxy got message {"jsonrpc":"2.0","id":"31677030-5139-470f-8ece-da8502f080eb","method":"transformInterceptedMessage","params":{"id":"70d1d1eb-59a6-45c8-81c8-ab6aa3e40550","connectionID":"2e0669f5-01ca-469b-a5af-edc9f52e41b2","type":"text","data":"{\"action\":4,\"connectionId\":\"HrxNZ2SZeN\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!HrxNZ2SZeNAdZKvjhjmtHR-443e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 70d1d1eb-59a6-45c8-81c8-ab6aa3e40550 unaltered + interception proxy got result of transforming message 70d1d1eb-59a6-45c8-81c8-ab6aa3e40550 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime with Rest allows you to call channel’s `status()` + START TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing + interception proxy got message {"jsonrpc":"2.0","id":"f8868784-2ad4-47c8-ae3b-8c07d02c2c2c","method":"transformInterceptedMessage","params":{"id":"c097e7e0-420e-4040-99c6-f2dc69563790","connectionID":"d76117c7-fce1-4aa5-94b7-28756fb1bc35","type":"text","data":"{\"action\":4,\"connectionId\":\"Oxl7brH-4v\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!Oxl7brH-4vAWFp4bWkXHuv-3875\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c097e7e0-420e-4040-99c6-f2dc69563790 unaltered + interception proxy got result of transforming message c097e7e0-420e-4040-99c6-f2dc69563790 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f9236f76-c229-4b45-b965-53ed861ffe0e","method":"transformInterceptedMessage","params":{"id":"1a403891-9778-4a4a-8157-c3df5405a266","connectionID":"48aee968-2e7c-474f-a20a-91c288c90a6d","type":"text","data":"{\"action\":4,\"connectionId\":\"Ko8-UQsl_8\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!Ko8-UQsl_8AVoN8fOU2-b6-3777\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1a403891-9778-4a4a-8157-c3df5405a266 unaltered + interception proxy got result of transforming message 1a403891-9778-4a4a-8157-c3df5405a266 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"80c21470-23d2-4396-8cf5-cebb9af5ba16","method":"transformInterceptedMessage","params":{"id":"1e634cbc-84cb-4400-911d-a898b2ab7762","connectionID":"debbdfab-f1d7-41d1-809f-22c96426cb73","type":"text","data":"{\"action\":4,\"connectionId\":\"QhceQnazLN\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!QhceQnazLNAQqqbTcfXlcM-429e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1e634cbc-84cb-4400-911d-a898b2ab7762 unaltered + interception proxy got result of transforming message 1e634cbc-84cb-4400-911d-a898b2ab7762 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0c4abe1a-31d1-4f67-8abf-8409c105c2bd","method":"transformInterceptedMessage","params":{"id":"685875f6-362f-45ee-a372-18c8d01e137a","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":4,\"connectionId\":\"-DpN2IY7oV\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!-DpN2IY7oVAZHLYWRYVGc9-3878\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 685875f6-362f-45ee-a372-18c8d01e137a unaltered + interception proxy got result of transforming message 685875f6-362f-45ee-a372-18c8d01e137a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a4299306-bdaa-44cc-9136-fb54601a6c3b","method":"transformInterceptedMessage","params":{"id":"368615d1-9660-424f-8062-3413f5d3aca4","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 368615d1-9660-424f-8062-3413f5d3aca4 unaltered + interception proxy got result of transforming message 368615d1-9660-424f-8062-3413f5d3aca4 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"10a3d649-d457-4e6e-b0de-62851125e3f7","method":"transformInterceptedMessage","params":{"id":"1d527488-e506-4d32-b4ae-05c5df3be19f","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976340141-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1d527488-e506-4d32-b4ae-05c5df3be19f unaltered + interception proxy got result of transforming message 1d527488-e506-4d32-b4ae-05c5df3be19f Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"92c6f9a1-cc2d-48a8-a93d-6316f6151f25","method":"transformInterceptedMessage","params":{"id":"3d3ce038-a2e3-4254-9415-a3b48de9ba0b","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3d3ce038-a2e3-4254-9415-a3b48de9ba0b unaltered + interception proxy got result of transforming message 3d3ce038-a2e3-4254-9415-a3b48de9ba0b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"64e08738-6ec8-4898-a0e2-133e2d315591","method":"transformInterceptedMessage","params":{"id":"d93d12cf-a01e-47e8-9655-5713a337e52c","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":15,\"id\":\"-DpN2IY7oV:0\",\"connectionId\":\"-DpN2IY7oV\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976341689-0\",\"timestamp\":1715976341689,\"messages\":[{\"encoding\":\"json\",\"data\":\"{\\\"foo\\\":\\\"bar\\\"}\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d93d12cf-a01e-47e8-9655-5713a337e52c unaltered + interception proxy got result of transforming message d93d12cf-a01e-47e8-9655-5713a337e52c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b1f2bc84-e0a7-4f2e-b779-876ceff99ec4","method":"transformInterceptedMessage","params":{"id":"5e0f5bc8-bc4b-4412-a916-098c8955dbb2","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5e0f5bc8-bc4b-4412-a916-098c8955dbb2 unaltered + interception proxy got result of transforming message 5e0f5bc8-bc4b-4412-a916-098c8955dbb2 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Rest BaseRealtime without Rest still allows publishing and subscribing + START TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime without Rest allows `auth.createTokenRequest()` without `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to use push admin functionality + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `time()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.createTokenRequest()` with `queryTime` option enabled + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `stats()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `request(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPublish(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `batchPresence(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call `auth.revokeTokens(...)` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `history()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `presence.history()` + START TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` + END TEST: browser/modular Rest BaseRealtime without Rest throws an error when attempting to call channel’s `status()` + START TEST: browser/modular Crypto standalone functions generateRandomKey + END TEST: browser/modular Crypto standalone functions generateRandomKey + START TEST: browser/modular Crypto standalone functions getDefaultCryptoParams + END TEST: browser/modular Crypto standalone functions getDefaultCryptoParams + START TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data + END TEST: browser/modular Message standalone functions decodeMessage decodes a message’s data + START TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher + END TEST: browser/modular Message standalone functions decodeMessage throws an error when given channel options with a cipher + START TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data + END TEST: browser/modular Message standalone functions decodeEncryptedMessage decodes a message’s data + START TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message + END TEST: browser/modular Message standalone functions decodeEncryptedMessage decrypts a message + START TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data + END TEST: browser/modular Message standalone functions decodeMessages decodes messages’ data + START TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher + END TEST: browser/modular Message standalone functions decodeMessages throws an error when given channel options with a cipher + START TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data + END TEST: browser/modular Message standalone functions decodeEncryptedMessages decodes messages’ data + START TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages + END TEST: browser/modular Message standalone functions decodeEncryptedMessages decrypts messages + START TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher + END TEST: browser/modular Crypto without Crypto BaseRest throws an error when given channel options with a cipher + START TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher + END TEST: browser/modular Crypto without Crypto _BaseRealtime throws an error when given channel options with a cipher + START TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages + interception proxy got message {"jsonrpc":"2.0","id":"9ccd97dd-4970-454d-9116-b0d510a4076c","method":"transformInterceptedMessage","params":{"id":"00e4dad8-aef9-44cc-a43b-c29594c1e571","connectionID":"f15e2d6d-0c1c-4912-a95e-ea5d06439b2c","type":"text","data":"{\"action\":4,\"connectionId\":\"P4M0vM7FBZ\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!P4M0vM7FBZAXH14pah7H4j-42a3\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 00e4dad8-aef9-44cc-a43b-c29594c1e571 unaltered + interception proxy got result of transforming message 00e4dad8-aef9-44cc-a43b-c29594c1e571 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b530551b-2214-44a7-9904-a7454864eb37","method":"transformInterceptedMessage","params":{"id":"00db4581-64e6-4ad7-bd87-524bfec9dda6","connectionID":"8c9d9e19-1397-45c4-97ba-e83c83b268ba","type":"text","data":"{\"action\":4,\"connectionId\":\"QwemqnVwAU\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!QwemqnVwAUAdHZrRhXTATc-4e8b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 00db4581-64e6-4ad7-bd87-524bfec9dda6 unaltered + interception proxy got result of transforming message 00db4581-64e6-4ad7-bd87-524bfec9dda6 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"61d0221f-e34d-4f4f-ba5f-0c5eeecd7fca","method":"transformInterceptedMessage","params":{"id":"6508feb2-91bb-4d53-9e03-cdd9bc01d5f3","connectionID":"5c3ce37a-18ac-4617-907e-6d09308b69f0","type":"text","data":"{\"action\":4,\"connectionId\":\"7pX4t-CpWB\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!7pX4t-CpWBAddLqW3n3sLE-4e8c\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6508feb2-91bb-4d53-9e03-cdd9bc01d5f3 unaltered + interception proxy got result of transforming message 6508feb2-91bb-4d53-9e03-cdd9bc01d5f3 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9ab1bb90-0f83-44c4-9da2-e5f86f45446f","method":"transformInterceptedMessage","params":{"id":"a59a1b51-18bd-491a-9261-b3e35beb4c6c","connectionID":"cb215bd9-0655-4a72-9676-8c7c74ead1f5","type":"text","data":"{\"action\":4,\"connectionId\":\"OAZJSzmrEw\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!OAZJSzmrEwAcvFeiM1CIs9-4e8d\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a59a1b51-18bd-491a-9261-b3e35beb4c6c unaltered + interception proxy got result of transforming message a59a1b51-18bd-491a-9261-b3e35beb4c6c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c5ac93a3-8791-4c99-a324-788d72c04df2","method":"transformInterceptedMessage","params":{"id":"ff0df625-b4a8-437b-8a37-49bb12445bff","connectionID":"a148dfa2-a37e-472f-8f03-bca2ff804e90","type":"text","data":"{\"action\":4,\"connectionId\":\"UXiVsv9OJx\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!UXiVsv9OJxAUwOvtMXuIgh-3778\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ff0df625-b4a8-437b-8a37-49bb12445bff unaltered + interception proxy got result of transforming message ff0df625-b4a8-437b-8a37-49bb12445bff Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"5841f7c7-88ff-4428-8a9f-f4ef1ffbba52","method":"transformInterceptedMessage","params":{"id":"8fe9461e-8e98-4804-8850-c107e3d7bb69","connectionID":"1197cf65-f25e-48a9-bce7-b1e18cac12d9","type":"text","data":"{\"action\":4,\"connectionId\":\"vCobPGtM6h\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dbIQeoABc0Cm!vCobPGtM6hAdfvU9UV1Emg-42a4\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.c696.1.us-east-1-A.i-05410be3f8b9acc99.e7dbIQeoABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8fe9461e-8e98-4804-8850-c107e3d7bb69 unaltered + interception proxy got result of transforming message 8fe9461e-8e98-4804-8850-c107e3d7bb69 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"da054b8f-878b-4579-b35d-9e41c7276031","method":"transformInterceptedMessage","params":{"id":"40ace21a-7053-4db0-9433-5e93d6becbef","connectionID":"fe0c80ec-a965-4036-b295-b1bd610d1b14","type":"text","data":"{\"action\":4,\"connectionId\":\"kayc-gqCX6\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!kayc-gqCX6ARXc1WVSg6B6-4440\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 40ace21a-7053-4db0-9433-5e93d6becbef unaltered + interception proxy got result of transforming message 40ace21a-7053-4db0-9433-5e93d6becbef Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"fe496388-da4b-4633-9796-6f449ae57189","method":"transformInterceptedMessage","params":{"id":"2c44cdd2-2db2-456f-b816-5a4df3e20311","connectionID":"379b5cc2-eb70-48c7-a6ac-44ad741e9010","type":"text","data":"{\"action\":4,\"connectionId\":\"d7U_K4h7Y5\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!d7U_K4h7Y5ATMucJf8LMmu-387a\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2c44cdd2-2db2-456f-b816-5a4df3e20311 unaltered + interception proxy got result of transforming message 2c44cdd2-2db2-456f-b816-5a4df3e20311 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8d4a5f77-483c-4b23-92e4-9acbf2eddfa2","method":"transformInterceptedMessage","params":{"id":"19644290-96d2-4f49-99b0-745aa989292d","connectionID":"9d5f0fe4-8e1b-4d0a-8b4e-95ba7037f978","type":"text","data":"{\"action\":4,\"connectionId\":\"F0ZlcRB8F6\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!F0ZlcRB8F6Aec9Af1sTcwE-4441\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 19644290-96d2-4f49-99b0-745aa989292d unaltered + interception proxy got result of transforming message 19644290-96d2-4f49-99b0-745aa989292d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a12f94ef-6fc8-4827-89cc-84e3c1298a0e","method":"transformInterceptedMessage","params":{"id":"45c590eb-19c4-4063-9d22-8411e3278b7d","connectionID":"85f5dfce-6c9d-4a57-bbc2-c45d5d72c4a5","type":"text","data":"{\"action\":4,\"connectionId\":\"2g-NX7Eehf\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!2g-NX7EehfAT5rJUXCTI0k-387b\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 45c590eb-19c4-4063-9d22-8411e3278b7d unaltered + interception proxy got result of transforming message 45c590eb-19c4-4063-9d22-8411e3278b7d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2f7194a4-19f8-4b18-aa28-9977c92b1822","method":"transformInterceptedMessage","params":{"id":"50676b75-90f9-4184-9d56-58a281c48f8e","connectionID":"be11f962-7b07-40b5-a4b9-4de162c3f76a","type":"text","data":"{\"action\":4,\"connectionId\":\"i3yyrZVMth\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!i3yyrZVMthAbH5M5dHKYj_-4e8e\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 50676b75-90f9-4184-9d56-58a281c48f8e unaltered + interception proxy got result of transforming message 50676b75-90f9-4184-9d56-58a281c48f8e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"56ba063f-6d17-4328-8000-6fcf5142fd5a","method":"transformInterceptedMessage","params":{"id":"476cdfb4-5674-421b-ad7f-ee7725dcd047","connectionID":"9ef4a169-866d-4990-b066-27280140bda5","type":"text","data":"{\"action\":4,\"connectionId\":\"bqhO9I40zu\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!bqhO9I40zuAeGyCJFUbZLI-4c62\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 476cdfb4-5674-421b-ad7f-ee7725dcd047 unaltered + interception proxy got result of transforming message 476cdfb4-5674-421b-ad7f-ee7725dcd047 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"06d6ba4f-cffc-43b6-aea4-74ab0613482f","method":"transformInterceptedMessage","params":{"id":"0ef81c20-1b96-43c4-86e7-63941b5e0226","connectionID":"12fc4bb7-6c5e-4efe-9ebc-90cc477bdc88","type":"text","data":"{\"action\":4,\"connectionId\":\"bkzRCnNiYp\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!bkzRCnNiYpAaLxvp_eTu-6-387c\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0ef81c20-1b96-43c4-86e7-63941b5e0226 unaltered + interception proxy got result of transforming message 0ef81c20-1b96-43c4-86e7-63941b5e0226 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0c7fdbbf-d325-45e4-b081-5582ffc7e8a8","method":"transformInterceptedMessage","params":{"id":"7efd5450-8ccc-4c48-a5ac-f34851c9ec09","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":4,\"connectionId\":\"hXSifPL186\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dAszwTABc0Ei!hXSifPL186Ae0tLgm0Wdr6-3779\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.99b8.2.us-east-1-A.i-0d0eb08c978a5c1d0.e7dAszwTABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 7efd5450-8ccc-4c48-a5ac-f34851c9ec09 unaltered + interception proxy got result of transforming message 7efd5450-8ccc-4c48-a5ac-f34851c9ec09 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"997a0505-e8c0-46f1-bc56-f5359229bea1","method":"transformInterceptedMessage","params":{"id":"99b675b7-c526-4fbf-8108-a4bba13db323","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 99b675b7-c526-4fbf-8108-a4bba13db323 unaltered + interception proxy got result of transforming message 99b675b7-c526-4fbf-8108-a4bba13db323 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"31c1ebf7-eff3-43d6-ab72-a2ce96417a6a","method":"transformInterceptedMessage","params":{"id":"43e33d8e-d41e-4f51-a25c-920fee93ff32","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976341689-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 43e33d8e-d41e-4f51-a25c-920fee93ff32 unaltered + interception proxy got result of transforming message 43e33d8e-d41e-4f51-a25c-920fee93ff32 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8dabe80c-ea37-45b8-a508-3a0041f64c7c","method":"transformInterceptedMessage","params":{"id":"0a94f9f1-6ad7-46e5-8f04-9f0297174827","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":15,\"id\":\"QZ/IJZAqUwhe\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976342739-0\",\"timestamp\":1715976342739,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"o64tN/hA3Ll/LJ3sRhizzV1iR7SyIxKk9gg2hPzxY+s=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0a94f9f1-6ad7-46e5-8f04-9f0297174827 unaltered + interception proxy got result of transforming message 0a94f9f1-6ad7-46e5-8f04-9f0297174827 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"322fcfbb-7739-482c-a212-1c1d876b1ace","method":"transformInterceptedMessage","params":{"id":"f7960462-1322-4936-a1bc-85e520528279","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":15,\"id\":\"QZ/IJZAqUwhe\",\"connectionId\":\"\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976342739-0\",\"timestamp\":1715976342739,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"o64tN/hA3Ll/LJ3sRhizzV1iR7SyIxKk9gg2hPzxY+s=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f7960462-1322-4936-a1bc-85e520528279 unaltered + interception proxy got result of transforming message f7960462-1322-4936-a1bc-85e520528279 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Crypto with Crypto BaseRest is able to publish encrypted messages + START TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages + interception proxy got message {"jsonrpc":"2.0","id":"cb17f04d-e431-4e95-8728-c73b66192514","method":"transformInterceptedMessage","params":{"id":"24695999-26ef-441b-a6b3-e98ec10661f5","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":4,\"connectionId\":\"SvQYBrfiAb\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dZXIKyABc0Ap!SvQYBrfiAbAU-YKxqbHecd-4e91\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.591d.1.us-east-1-A.i-07e5ae922b5503d80.e7dZXIKyABc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 24695999-26ef-441b-a6b3-e98ec10661f5 unaltered + interception proxy got result of transforming message 24695999-26ef-441b-a6b3-e98ec10661f5 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"cdbaebfc-9a90-4692-8505-30c9d908ff8e","method":"transformInterceptedMessage","params":{"id":"096c5edd-21c2-409d-96cd-ea37b650a0d3","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 096c5edd-21c2-409d-96cd-ea37b650a0d3 unaltered + interception proxy got result of transforming message 096c5edd-21c2-409d-96cd-ea37b650a0d3 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"93d5e83f-1091-4ffa-b7e9-e23383d56b6d","method":"transformInterceptedMessage","params":{"id":"32b14024-eb35-4b51-a518-dddb01ffe97b","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976342739-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 32b14024-eb35-4b51-a518-dddb01ffe97b unaltered + interception proxy got result of transforming message 32b14024-eb35-4b51-a518-dddb01ffe97b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0f7497b9-43e1-42c6-8ca7-0c80d3ec44ca","method":"transformInterceptedMessage","params":{"id":"94868710-d977-4887-936b-346f3df434ba","connectionID":"3169e6ab-56d8-45bb-a5f7-06ae93b026af","type":"text","data":"{\"action\":4,\"connectionId\":\"0UAr7pzRLG\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7deKLRSQBc0Ap!0UAr7pzRLGAQVYORTGxy84-4c67\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.9ed2.2.us-east-1-A.i-07e5ae922b5503d80.e7deKLRSQBc0Ap\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 94868710-d977-4887-936b-346f3df434ba unaltered + interception proxy got result of transforming message 94868710-d977-4887-936b-346f3df434ba Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b58c09f4-a4f8-4fff-a77f-71f7075ec054","method":"transformInterceptedMessage","params":{"id":"9c3f3524-0dab-4af5-a19a-714df4138055","connectionID":"3169e6ab-56d8-45bb-a5f7-06ae93b026af","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"civN3DmpciBVtVXU/E/I+fwiD92vLcbDMYS6EOF4QkE=\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9c3f3524-0dab-4af5-a19a-714df4138055 unaltered + interception proxy got result of transforming message 9c3f3524-0dab-4af5-a19a-714df4138055 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"81134738-20a7-4605-817a-60b4373d7326","method":"transformInterceptedMessage","params":{"id":"5aaff6bb-f6ec-4363-86a1-bebe495c3bdd","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":15,\"id\":\"0UAr7pzRLG:0\",\"connectionId\":\"0UAr7pzRLG\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976344168-0\",\"timestamp\":1715976344168,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"civN3DmpciBVtVXU/E/I+fwiD92vLcbDMYS6EOF4QkE=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5aaff6bb-f6ec-4363-86a1-bebe495c3bdd unaltered + interception proxy got result of transforming message 5aaff6bb-f6ec-4363-86a1-bebe495c3bdd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b73a813b-b157-47d6-88ad-eac571d20976","method":"transformInterceptedMessage","params":{"id":"9d99a626-ad1f-47d4-8545-3577609b3a51","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":15,\"id\":\"0UAr7pzRLG:0\",\"connectionId\":\"0UAr7pzRLG\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976344168-0\",\"timestamp\":1715976344168,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"civN3DmpciBVtVXU/E/I+fwiD92vLcbDMYS6EOF4QkE=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9d99a626-ad1f-47d4-8545-3577609b3a51 unaltered + interception proxy got result of transforming message 9d99a626-ad1f-47d4-8545-3577609b3a51 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9eadf867-ba9f-4c7b-a5fe-5ab0b9c8790f","method":"transformInterceptedMessage","params":{"id":"d1f6b4b9-bf3f-4f50-b66c-b6b6aaef0512","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":15,\"id\":\"0UAr7pzRLG:0\",\"connectionId\":\"0UAr7pzRLG\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976344168-0\",\"timestamp\":1715976344168,\"messages\":[{\"encoding\":\"utf-8/cipher+aes-256-cbc/base64\",\"data\":\"civN3DmpciBVtVXU/E/I+fwiD92vLcbDMYS6EOF4QkE=\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d1f6b4b9-bf3f-4f50-b66c-b6b6aaef0512 unaltered + interception proxy got result of transforming message d1f6b4b9-bf3f-4f50-b66c-b6b6aaef0512 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"93c0bb07-43d7-4ac2-9e79-d76bdbe404de","method":"transformInterceptedMessage","params":{"id":"f708b16c-9fd4-4bb5-a894-4223cdf88999","connectionID":"3169e6ab-56d8-45bb-a5f7-06ae93b026af","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f708b16c-9fd4-4bb5-a894-4223cdf88999 unaltered + interception proxy got result of transforming message f708b16c-9fd4-4bb5-a894-4223cdf88999 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular Crypto with Crypto _BaseRealtime is able to publish encrypted messages + START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON + END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRest uses JSON + START TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON + END TEST: browser/modular MsgPack with useBinaryProtocol client option without MsgPack BaseRealtime uses JSON + START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack + END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRest uses MessagePack + START TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack + END TEST: browser/modular MsgPack with useBinaryProtocol client option with MsgPack BaseRealtime uses MessagePack + START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property + END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence throws an error when attempting to access the `presence` property + START TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage + interception proxy got message {"jsonrpc":"2.0","id":"23ac2efe-104e-4015-be06-1448f67623c9","method":"transformInterceptedMessage","params":{"id":"6dc6f74f-6b34-4ec0-9701-545345ea0d68","connectionID":"b301e48b-a1f4-42dc-96b1-9ef32bbdad40","type":"text","data":"{\"action\":4,\"connectionId\":\"vFNykP3bg8\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dzQZ4LABc0Cm!vFNykP3bg8AX0HiMh3zDTk-4448\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.a90e.2.us-east-1-A.i-05410be3f8b9acc99.e7dzQZ4LABc0Cm\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6dc6f74f-6b34-4ec0-9701-545345ea0d68 unaltered + interception proxy got result of transforming message 6dc6f74f-6b34-4ec0-9701-545345ea0d68 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"125fabe6-b5f9-4d0b-b901-ba27809f19f0","method":"transformInterceptedMessage","params":{"id":"52ca9546-7b20-4d29-a710-a204fdff7f62","connectionID":"9708c1de-ea6a-4a7a-99c5-85f7fd00d6f5","type":"text","data":"{\"action\":4,\"connectionId\":\"v12I7jNCFu\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!v12I7jNCFuAVCGXh34-AWB-3883\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 52ca9546-7b20-4d29-a710-a204fdff7f62 unaltered + interception proxy got result of transforming message 52ca9546-7b20-4d29-a710-a204fdff7f62 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1ab9fd87-82c8-426a-9b0e-a57b864db032","method":"transformInterceptedMessage","params":{"id":"71617ac4-6887-419f-892e-83a3b4b3d81d","connectionID":"9708c1de-ea6a-4a7a-99c5-85f7fd00d6f5","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 71617ac4-6887-419f-892e-83a3b4b3d81d unaltered + interception proxy got result of transforming message 71617ac4-6887-419f-892e-83a3b4b3d81d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b71cb1b2-404a-4cef-b55c-67bd62c96b8c","method":"transformInterceptedMessage","params":{"id":"5307c0b3-4e87-48ff-9cec-122da74e5a86","connectionID":"9708c1de-ea6a-4a7a-99c5-85f7fd00d6f5","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976344168-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5307c0b3-4e87-48ff-9cec-122da74e5a86 unaltered + interception proxy got result of transforming message 5307c0b3-4e87-48ff-9cec-122da74e5a86 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e3c09501-fc2d-4d07-aa0d-9d9d3e78640f","method":"transformInterceptedMessage","params":{"id":"c380b8e2-082d-47ea-b98b-732396ab99d1","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":4,\"connectionId\":\"Q0NVRwqS6p\",\"connectionDetails\":{\"clientId\":\"1157576467847643\",\"connectionKey\":\"e7dNIPVFABc0Ei!Q0NVRwqS6pAe7HxYVx1AHi-3886\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c380b8e2-082d-47ea-b98b-732396ab99d1 unaltered + interception proxy got result of transforming message c380b8e2-082d-47ea-b98b-732396ab99d1 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4f91e904-adb3-42d1-8fde-76c8f17f6ec0","method":"transformInterceptedMessage","params":{"id":"aa75eebd-15b7-47be-b0df-3d65293a2e4d","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":15,\"channel\":\"channel\",\"messages\":[{\"name\":\"message\",\"data\":\"body\"}],\"msgSerial\":0}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message aa75eebd-15b7-47be-b0df-3d65293a2e4d unaltered + interception proxy got result of transforming message aa75eebd-15b7-47be-b0df-3d65293a2e4d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"fe697953-9754-49fd-8d9b-3cdbc07ba570","method":"transformInterceptedMessage","params":{"id":"3f489a3f-87ca-4531-9350-ab2b95e23fef","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3f489a3f-87ca-4531-9350-ab2b95e23fef unaltered + interception proxy got result of transforming message 3f489a3f-87ca-4531-9350-ab2b95e23fef Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"af75690c-6bee-4130-8d5a-430ca4fa9b40","method":"transformInterceptedMessage","params":{"id":"a036de63-aa4e-4a16-ad09-ccd9ef1371af","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":15,\"id\":\"Q0NVRwqS6p:0\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345556-0\",\"timestamp\":1715976345556,\"messages\":[{\"clientId\":\"1157576467847643\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a036de63-aa4e-4a16-ad09-ccd9ef1371af unaltered + interception proxy got result of transforming message a036de63-aa4e-4a16-ad09-ccd9ef1371af Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"09dba608-28f0-4665-81d6-5a32dee9a129","method":"transformInterceptedMessage","params":{"id":"91cd2de4-50e4-4b50-96a2-433539b1feea","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":15,\"id\":\"Q0NVRwqS6p:0\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345556-0\",\"timestamp\":1715976345556,\"messages\":[{\"clientId\":\"1157576467847643\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 91cd2de4-50e4-4b50-96a2-433539b1feea unaltered + interception proxy got result of transforming message 91cd2de4-50e4-4b50-96a2-433539b1feea Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"edc00a6f-7521-4435-a6a5-43228726e370","method":"transformInterceptedMessage","params":{"id":"265c4189-5251-4ad9-98fc-d9162051ba38","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":15,\"id\":\"Q0NVRwqS6p:0\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345556-0\",\"timestamp\":1715976345556,\"messages\":[{\"clientId\":\"1157576467847643\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 265c4189-5251-4ad9-98fc-d9162051ba38 unaltered + interception proxy got result of transforming message 265c4189-5251-4ad9-98fc-d9162051ba38 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a7aca9ba-64cc-41ac-8b3a-f9bb41f28db7","method":"transformInterceptedMessage","params":{"id":"a9b656db-2c5a-4230-b89a-b0ad62320cfc","connectionID":"9708c1de-ea6a-4a7a-99c5-85f7fd00d6f5","type":"text","data":"{\"action\":15,\"id\":\"Q0NVRwqS6p:0\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345556-0\",\"timestamp\":1715976345556,\"messages\":[{\"clientId\":\"1157576467847643\",\"data\":\"body\",\"name\":\"message\"}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a9b656db-2c5a-4230-b89a-b0ad62320cfc unaltered + interception proxy got result of transforming message a9b656db-2c5a-4230-b89a-b0ad62320cfc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"526c4951-d25b-4697-a17b-e889727bf72b","method":"transformInterceptedMessage","params":{"id":"d1370dd9-8ae8-4c57-a055-fe2c531b18ca","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d1370dd9-8ae8-4c57-a055-fe2c531b18ca unaltered + interception proxy got result of transforming message d1370dd9-8ae8-4c57-a055-fe2c531b18ca Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"52bdc0ce-f1ae-4b98-b89c-bea74c07f7e8","method":"transformInterceptedMessage","params":{"id":"2195fe7a-b446-4d47-9253-421456002aa9","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":11,\"flags\":983104,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345556-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2195fe7a-b446-4d47-9253-421456002aa9 unaltered + interception proxy got result of transforming message 2195fe7a-b446-4d47-9253-421456002aa9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ead0c8c7-90b9-4f26-89b2-0e1d602870a8","method":"transformInterceptedMessage","params":{"id":"5a7adeff-2344-4815-a8e4-7ee6687c29eb","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":14,\"channel\":\"channel\",\"presence\":[{\"action\":2}],\"msgSerial\":1}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5a7adeff-2344-4815-a8e4-7ee6687c29eb unaltered + interception proxy got result of transforming message 5a7adeff-2344-4815-a8e4-7ee6687c29eb Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"fd13a778-9368-46d8-9fdf-97f3f2e536e7","method":"transformInterceptedMessage","params":{"id":"9732de80-589e-42ce-9e96-eca15cfea4ea","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":14,\"id\":\"Q0NVRwqS6p:1\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345829-0\",\"timestamp\":1715976345829,\"presence\":[{\"id\":\"Q0NVRwqS6p:1:0\",\"clientId\":\"1157576467847643\",\"connectionId\":\"Q0NVRwqS6p\",\"timestamp\":1715976345829,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9732de80-589e-42ce-9e96-eca15cfea4ea unaltered + interception proxy got result of transforming message 9732de80-589e-42ce-9e96-eca15cfea4ea Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"5cb3737d-197b-4c1f-a915-97a5c8236db1","method":"transformInterceptedMessage","params":{"id":"6f80f687-7780-469b-b6b5-654bb51c9638","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":14,\"id\":\"Q0NVRwqS6p:1\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345829-0\",\"timestamp\":1715976345829,\"presence\":[{\"id\":\"Q0NVRwqS6p:1:0\",\"clientId\":\"1157576467847643\",\"connectionId\":\"Q0NVRwqS6p\",\"timestamp\":1715976345829,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6f80f687-7780-469b-b6b5-654bb51c9638 unaltered + interception proxy got result of transforming message 6f80f687-7780-469b-b6b5-654bb51c9638 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"161e37bf-4920-48bc-8cf1-156b720de3a1","method":"transformInterceptedMessage","params":{"id":"bab09a38-8075-4827-a9e3-a5d9e4dcd3a9","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":14,\"id\":\"Q0NVRwqS6p:1\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345829-0\",\"timestamp\":1715976345829,\"presence\":[{\"id\":\"Q0NVRwqS6p:1:0\",\"clientId\":\"1157576467847643\",\"connectionId\":\"Q0NVRwqS6p\",\"timestamp\":1715976345829,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message bab09a38-8075-4827-a9e3-a5d9e4dcd3a9 unaltered + interception proxy got result of transforming message bab09a38-8075-4827-a9e3-a5d9e4dcd3a9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"8efefb36-e7de-4ae8-a3bb-260e19148ed0","method":"transformInterceptedMessage","params":{"id":"0962ab7c-3456-41ed-a4ed-bbe1b52eab09","connectionID":"9708c1de-ea6a-4a7a-99c5-85f7fd00d6f5","type":"text","data":"{\"action\":14,\"id\":\"Q0NVRwqS6p:1\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345829-0\",\"timestamp\":1715976345829,\"presence\":[{\"id\":\"Q0NVRwqS6p:1:0\",\"clientId\":\"1157576467847643\",\"connectionId\":\"Q0NVRwqS6p\",\"timestamp\":1715976345829,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0962ab7c-3456-41ed-a4ed-bbe1b52eab09 unaltered + interception proxy got result of transforming message 0962ab7c-3456-41ed-a4ed-bbe1b52eab09 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ac952fa7-6e5c-414d-a797-7d9fb490ee77","method":"transformInterceptedMessage","params":{"id":"338cb9be-99ab-4af9-a997-3f9322c2f452","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":14,\"id\":\"Q0NVRwqS6p:1\",\"connectionId\":\"Q0NVRwqS6p\",\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345829-0\",\"timestamp\":1715976345829,\"presence\":[{\"id\":\"Q0NVRwqS6p:1:0\",\"clientId\":\"1157576467847643\",\"connectionId\":\"Q0NVRwqS6p\",\"timestamp\":1715976345829,\"action\":2}]}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 338cb9be-99ab-4af9-a997-3f9322c2f452 unaltered + interception proxy got result of transforming message 338cb9be-99ab-4af9-a997-3f9322c2f452 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"da24fc9c-3c1c-4b05-92f2-62bd087c9180","method":"transformInterceptedMessage","params":{"id":"157f1af6-d364-4410-bc01-37b9c41819a9","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":1,\"count\":1,\"msgSerial\":1}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 157f1af6-d364-4410-bc01-37b9c41819a9 unaltered + interception proxy got result of transforming message 157f1af6-d364-4410-bc01-37b9c41819a9 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular RealtimePresence BaseRealtime without RealtimePresence doesn’t break when it receives a PRESENCE ProtocolMessage + START TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality + rxChannel: 17:05:46.132 Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"plugins":{"RealtimePresence":{}},"key":"_tmp_arPTlA.eykGKQ:L6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ"} + rxChannel: 17:05:46.133 Ably: BaseClient(): started; version = 2.0.4 + rxChannel: 17:05:46.133 Ably: Auth(): anonymous, using basic auth + rxChannel: 17:05:46.133 Ably: Realtime(): + rxChannel: 17:05:46.133 Ably: Realtime.ConnectionManager(): started + rxChannel: 17:05:46.134 Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] + rxChannel: 17:05:46.134 Ably: Realtime.ConnectionManager(): available transports = [web_socket] + rxChannel: 17:05:46.134 Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] + rxChannel: 17:05:46.134 Ably: Realtime.connect(): + rxChannel: 17:05:46.134 Ably: Connection.connect(): + rxChannel: 17:05:46.134 Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized + rxChannel: 17:05:46.134 Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: 17:05:46.134 Ably: Connection state: connecting + rxChannel: 17:05:46.134 Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + rxChannel: 17:05:46.134 Ably: RealtimeChannel(): started; name = channel + txChannel: 17:05:46.135 Ably: BaseClient(): initialized with clientOptions {"environment":"sandbox","port":80,"tlsPort":443,"tls":true,"logLevel":4,"clientId":"8075554743894953","plugins":{"RealtimePresence":{}},"key":"_tmp_arPTlA.eykGKQ:L6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ"} + txChannel: 17:05:46.135 Ably: BaseClient(): started; version = 2.0.4 + txChannel: 17:05:46.135 Ably: Auth(): anonymous, using basic auth + txChannel: 17:05:46.135 Ably: Realtime(): + txChannel: 17:05:46.135 Ably: Realtime.ConnectionManager(): started + txChannel: 17:05:46.135 Ably: Realtime.ConnectionManager(): requested transports = [xhr_polling,web_socket] + txChannel: 17:05:46.135 Ably: Realtime.ConnectionManager(): available transports = [web_socket] + txChannel: 17:05:46.135 Ably: Realtime.ConnectionManager(): http hosts = [sandbox-rest.ably.io] + txChannel: 17:05:46.135 Ably: Realtime.connect(): + txChannel: 17:05:46.135 Ably: Connection.connect(): + txChannel: 17:05:46.135 Ably: ConnectionManager.requestState(): requested state: connecting; current state: initialized + txChannel: 17:05:46.135 Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: 17:05:46.135 Ably: Connection state: connecting + txChannel: 17:05:46.136 Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + txChannel: 17:05:46.136 Ably: RealtimeChannel(): started; name = channel + LAWRENCE: begin waiting for presence subscribe + rxChannel: 17:05:46.136 Ably: RealtimeChannel.requestState: name = channel, state = attaching + rxChannel: 17:05:46.136 Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching + rxChannel: 17:05:46.136 Ably: Channel state for channel "channel": attaching + rxChannel: 17:05:46.136 Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting + rxChannel: 17:05:46.136 Ably: ConnectionManager.startConnect(): starting connection + rxChannel: 17:05:46.136 Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + rxChannel: 17:05:46.136 Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + rxChannel: 17:05:46.137 Ably: ConnectionManager.connectWs(): undefined + rxChannel: 17:05:46.137 Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + rxChannel: 17:05:46.137 Ably: ConnectionManager.tryATransport(): trying web_socket + rxChannel: 17:05:46.137 Ably: WebSocketTransport.connect(): starting + rxChannel: 17:05:46.137 Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + rxChannel: 17:05:46.137 Ably: WebSocketTransport.connect(): authParams: key: _tmp_arPTlA.eykGKQ:L6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ; err: null + rxChannel: 17:05:46.137 Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + txChannel: 17:05:46.137 Ably: ConnectionManager.startConnect(): starting connection + txChannel: 17:05:46.137 Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + txChannel: 17:05:46.137 Ably: ConnectionManager.getTransportParams(): Transport params = [mode=clean,format=json] + txChannel: 17:05:46.138 Ably: ConnectionManager.connectWs(): undefined + txChannel: 17:05:46.138 Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + txChannel: 17:05:46.138 Ably: ConnectionManager.tryATransport(): trying web_socket + txChannel: 17:05:46.138 Ably: WebSocketTransport.connect(): starting + txChannel: 17:05:46.138 Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + txChannel: 17:05:46.138 Ably: WebSocketTransport.connect(): authParams: key: _tmp_arPTlA.eykGKQ:L6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ; err: null + txChannel: 17:05:46.138 Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&clientId=8075554743894953&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: 17:05:46.162 Ably: WebSocketTransport.onWsOpen(): opened WebSocket + rxChannel: 17:05:46.162 Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: 17:05:46.163 Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending + rxChannel: 17:05:46.163 Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = clean + interception proxy got message {"jsonrpc":"2.0","id":"56fa048d-4c39-4492-bacd-52bd70fdbace","method":"transformInterceptedMessage","params":{"id":"288f2908-ae64-48e3-b0f7-e5454cf3a31a","connectionID":"14abb0ae-e150-4e2f-9a38-9d7c925e9e29","type":"text","data":"{\"action\":4,\"connectionId\":\"HkjZzW_e__\",\"connectionDetails\":{\"clientId\":\"*\",\"connectionKey\":\"e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889\",\"maxMessageSize\":16384,\"maxInboundRate\":250,\"maxOutboundRate\":100,\"maxFrameSize\":262144,\"serverId\":\"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei\",\"connectionStateTtl\":120000,\"maxIdleInterval\":15000}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 288f2908-ae64-48e3-b0f7-e5454cf3a31a unaltered + interception proxy got result of transforming message 288f2908-ae64-48e3-b0f7-e5454cf3a31a Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: 17:05:46.663 Ably: WebSocketTransport.onWsData(): data received; length = 354; type = string + rxChannel: 17:05:46.664 Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=CONNECTED; connectionId=HkjZzW_e__]; connectionId = undefined + rxChannel: 17:05:46.664 Ably: ConnectionManager.activateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: 17:05:46.664 Ably: ConnectionManager.activateTransport(): connectionId = HkjZzW_e__ + rxChannel: 17:05:46.664 Ably: ConnectionManager.activateTransport(): connectionDetails = {"clientId":"*","connectionKey":"e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889","maxMessageSize":16384,"maxInboundRate":250,"maxOutboundRate":100,"maxFrameSize":262144,"serverId":"frontend.3966.1.us-east-1-A.i-0d0eb08c978a5c1d0.e7dNIPVFABc0Ei","connectionStateTtl":120000,"maxIdleInterval":15000} + rxChannel: 17:05:46.665 Ably: ConnectionManager.activateTransport(): current state = connecting + rxChannel: 17:05:46.665 Ably: ConnectionManager.setConnection(): New connectionId; reattaching any attached channels + rxChannel: 17:05:46.665 Ably: ConnectionManager.notifyState(): new state: connected + rxChannel: 17:05:46.665 Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: 17:05:46.666 Ably: Connection state: connected + rxChannel: 17:05:46.666 Ably: ConnectionManager.enactStateChange: setting new state: connected; reason = undefined + rxChannel: 17:05:46.666 Ably: ConnectionManager.sendQueuedMessages(): sending 0 queued messages + rxChannel: 17:05:46.666 Ably: RealtimeChannel.checkPendingState: name = channel, state = attaching + rxChannel: 17:05:46.666 Ably: RealtimeChannel.attachImpl(): sending ATTACH message + rxChannel: 17:05:46.666 Ably: ConnectionManager.send(): sending event + rxChannel: 17:05:46.667 Ably: Protocol.send(): sending msg; [ProtocolMessage; action=ATTACH; channel=channel] + interception proxy got message {"jsonrpc":"2.0","id":"b61b5c7b-ce3d-4438-8993-d8b4f11af1e1","method":"transformInterceptedMessage","params":{"id":"3f437cfe-7fe6-429f-8e60-f4acb7e73452","connectionID":"14abb0ae-e150-4e2f-9a38-9d7c925e9e29","type":"text","data":"{\"action\":10,\"channel\":\"channel\"}","fromClient":true}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3f437cfe-7fe6-429f-8e60-f4acb7e73452 unaltered + interception proxy got result of transforming message 3f437cfe-7fe6-429f-8e60-f4acb7e73452 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"84dade75-fb2b-40b2-b5d2-a952d0098c11","method":"transformInterceptedMessage","params":{"id":"1070ec56-a394-4615-9411-2dcdf3e2ce77","connectionID":"14abb0ae-e150-4e2f-9a38-9d7c925e9e29","type":"text","data":"{\"action\":11,\"flags\":983105,\"channel\":\"channel\",\"channelSerial\":\"e7dP5PvyABc0Cq23500427@1715976345829-0\"}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1070ec56-a394-4615-9411-2dcdf3e2ce77 unaltered + interception proxy got result of transforming message 1070ec56-a394-4615-9411-2dcdf3e2ce77 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6a48d6bc-0271-447e-98db-d76293a5beb3","method":"transformInterceptedMessage","params":{"id":"dceb625e-8355-46f3-965e-c5707970eed3","connectionID":"14abb0ae-e150-4e2f-9a38-9d7c925e9e29","type":"text","data":"{\"action\":16,\"channel\":\"channel\",\"channelSerial\":\"e7dNIPVFABc0Ei11501694:\",\"presence\":[{\"id\":\"Q0NVRwqS6p:1:0\",\"clientId\":\"1157576467847643\",\"connectionId\":\"Q0NVRwqS6p\",\"timestamp\":1715976345829,\"action\":1}],\"count\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message dceb625e-8355-46f3-965e-c5707970eed3 unaltered + interception proxy got result of transforming message dceb625e-8355-46f3-965e-c5707970eed3 Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: 17:05:46.795 Ably: WebSocketTransport.onWsData(): data received; length = 105; type = string + rxChannel: 17:05:46.795 Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ATTACHED; channel=channel; channelSerial=e7dP5PvyABc0Cq23500427@1715976345829-0; flags=HAS_PRESENCE,PRESENCE,PUBLISH,SUBSCRIBE,PRESENCE_SUBSCRIBE]; connectionId = HkjZzW_e__ + rxChannel: 17:05:46.796 Ably: RealtimeChannel.setChannelSerial(): Updating channel serial; serial = e7dP5PvyABc0Cq23500427@1715976345829-0; previous = undefined + rxChannel: 17:05:46.796 Ably: RealtimeChannel.notifyState: name = channel, current state = attaching, notifying state attached + rxChannel: 17:05:46.796 Ably: RealtimePresence.onAttached(): channel = channel, hasPresence = true + rxChannel: 17:05:46.796 Ably: PresenceMap.startSync(): channel = channel; syncInProgress = false + rxChannel: 17:05:46.796 Ably: PresenceMap.setInProgress(): inProgress = true + rxChannel: 17:05:46.797 Ably: Channel state for channel "channel": attached + rxChannel: 17:05:46.797 Ably: RealtimeChannel.onAttached: activating channel; name = channel + LAWRENCE: end waiting for presence subscribe + LAWRENCE: begin waiting for presence enter + LAWRENCE: txChannel.presence.enter is + txChannel: 17:05:46.797 Ably: RealtimePresence.enter: undefined + txChannel: 17:05:46.797 Ably: RealtimePresence._enterOrUpdateClient: undefined + txChannel: 17:05:46.797 Ably: RealtimePresence.enterClient(): channel = channel, id = undefined, client = (implicit) 8075554743894953 + txChannel: 17:05:46.798 Ably: RealtimeChannel.requestState: name = channel, state = attaching + txChannel: 17:05:46.798 Ably: RealtimeChannel.notifyState: name = channel, current state = initialized, notifying state attaching + txChannel: 17:05:46.798 Ably: Channel state for channel "channel": attaching + txChannel: 17:05:46.798 Ably: RealtimeChannel.checkPendingState: sendEvents is false; state is connecting + rxChannel: 17:05:46.798 Ably: WebSocketTransport.onWsData(): data received; length = 217; type = string + rxChannel: 17:05:46.798 Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=SYNC; channel=channel; channelSerial=e7dNIPVFABc0Ei11501694:; count=0; presence=[ [PresenceMessage; action=present; id=Q0NVRwqS6p:1:0; timestamp=1715976345829; clientId=1157576467847643; connectionId=Q0NVRwqS6p] ]]; connectionId = HkjZzW_e__ + rxChannel: 17:05:46.798 Ably: RealtimePresence.setPresence(): received presence for 1 participants; syncChannelSerial = e7dNIPVFABc0Ei11501694: + rxChannel: 17:05:46.798 Ably: PresenceMap.startSync(): channel = channel; syncInProgress = true + rxChannel: 17:05:46.799 Ably: PresenceMap.endSync(): channel = channel; syncInProgress = true + rxChannel: 17:05:46.799 Ably: PresenceMap.setInProgress(): inProgress = false + txChannel: 17:05:50.140 Ably: ConnectionManager WebSocket slow timer: checking connectivity + txChannel: 17:05:50.141 Ably: (Fetch)Http.checkConnectivity(): Sending; https://internet-up.ably-realtime.com/is-the-internet-up.txt + txChannel: 17:05:50.211 Ably: (Fetch)Http.checkConnectivity(): Result: true + txChannel: 17:05:50.211 Ably: ConnectionManager WebSocket slow timer: http connectivity check succeeded + interception proxy got message {"jsonrpc":"2.0","id":"99c0e743-8d73-4c7c-96c1-75eb62ead860","method":"transformInterceptedMessage","params":{"id":"5a91c2f1-ba6c-4d99-82a3-6b01a08a15c5","connectionID":"a2edcd9b-abb2-43d8-9c42-5a2b94142e0b","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5a91c2f1-ba6c-4d99-82a3-6b01a08a15c5 unaltered + interception proxy got result of transforming message 5a91c2f1-ba6c-4d99-82a3-6b01a08a15c5 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"08d7c5b5-636e-4ed3-99f3-158a5808faa4","method":"transformInterceptedMessage","params":{"id":"4845d63d-04b7-4297-a5b1-fbdfe1e88195","connectionID":"5519debd-9271-4efa-a5eb-33b7818ddf56","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4845d63d-04b7-4297-a5b1-fbdfe1e88195 unaltered + interception proxy got result of transforming message 4845d63d-04b7-4297-a5b1-fbdfe1e88195 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"93d8283b-637a-45b6-875c-7e278e8441c9","method":"transformInterceptedMessage","params":{"id":"d0e2596f-4ac8-420b-ae39-7fc04ab3a859","connectionID":"af5206b9-b434-4cfe-8977-ff04695f3a90","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d0e2596f-4ac8-420b-ae39-7fc04ab3a859 unaltered + interception proxy got result of transforming message d0e2596f-4ac8-420b-ae39-7fc04ab3a859 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1d2c9f77-0b55-4f0b-9c63-c0a412efcf32","method":"transformInterceptedMessage","params":{"id":"48246caf-1978-42ee-bc86-a4d825b4a9a3","connectionID":"f5ed8dae-1f2b-43be-bd2b-6a141be8aa02","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 48246caf-1978-42ee-bc86-a4d825b4a9a3 unaltered + interception proxy got result of transforming message 48246caf-1978-42ee-bc86-a4d825b4a9a3 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b30c4ff3-06c6-4ce4-a13a-11962be0d592","method":"transformInterceptedMessage","params":{"id":"71a6dcb1-994c-4688-a21b-10c525bd75c4","connectionID":"b8da5579-4ed1-49c0-bd31-2a3e21cbf86d","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 71a6dcb1-994c-4688-a21b-10c525bd75c4 unaltered + interception proxy got result of transforming message 71a6dcb1-994c-4688-a21b-10c525bd75c4 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e1927c33-b400-4bfc-b856-d3bd2d544ae8","method":"transformInterceptedMessage","params":{"id":"b70d2be3-822e-44cf-b4d9-400da1ea2e26","connectionID":"f128c8dd-ee50-46ba-83fa-68b1bbad60aa","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b70d2be3-822e-44cf-b4d9-400da1ea2e26 unaltered + interception proxy got result of transforming message b70d2be3-822e-44cf-b4d9-400da1ea2e26 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c3ad3038-3ec1-49d1-94fa-46362712943a","method":"transformInterceptedMessage","params":{"id":"fa9ad7a7-5bed-4157-98c8-0912a9c72074","connectionID":"1aed8420-9fa2-4789-a49e-3d153011e99c","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fa9ad7a7-5bed-4157-98c8-0912a9c72074 unaltered + interception proxy got result of transforming message fa9ad7a7-5bed-4157-98c8-0912a9c72074 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"226de186-0365-45ea-b943-5db4510389be","method":"transformInterceptedMessage","params":{"id":"436dbce9-2f3e-46da-baf1-6c23eca891af","connectionID":"2e0669f5-01ca-469b-a5af-edc9f52e41b2","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 436dbce9-2f3e-46da-baf1-6c23eca891af unaltered + interception proxy got result of transforming message 436dbce9-2f3e-46da-baf1-6c23eca891af Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1eff87b7-480f-47bf-8b28-4a68ab65170f","method":"transformInterceptedMessage","params":{"id":"1d49e402-63eb-4703-8ae6-d3206892e951","connectionID":"d76117c7-fce1-4aa5-94b7-28756fb1bc35","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1d49e402-63eb-4703-8ae6-d3206892e951 unaltered + interception proxy got result of transforming message 1d49e402-63eb-4703-8ae6-d3206892e951 Object + interception proxy sending transformInterceptedMessage response Object + END TEST: browser/modular RealtimePresence BaseRealtime with RealtimePresence offers realtime presence functionality + txChannel: 17:05:56.151 Ably: ConnectionManager WebSocket give up timer: websocket connection took more than 10s; + txChannel: 17:05:56.152 Ably: ConnectionManager WebSocket give up timer: websocket connectivity appears to be unavailable but no other transports to try + txChannel: 17:05:56.152 Ably: WebSocketTransport.dispose(): + txChannel: 17:05:56.152 Ably: ConnectionManager.tryATransport(): transport web_socket disconnected, err: [_ErrorInfo: Timeout waiting for transport to indicate itself viable; statusCode=500; code=50000] + txChannel: 17:05:56.152 Ably: ConnectionManager.notifyState(): new state: disconnected + txChannel: 17:05:56.152 Ably: ConnectionManager.cancelTransitionTimer(): + txChannel: 17:05:56.152 Ably: Connection state: disconnected; reason: [_ErrorInfo: Unable to connect (and no more fallback hosts to try); statusCode=404; code=80003] + txChannel: 17:05:56.152 Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Unable to connect (and no more fallback hosts to try) + txChannel: 17:05:56.152 Ably: WebSocketTransport.dispose(): closing websocket + WebSocket connection to 'wss://sandbox-realtime.ably.io/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&clientId=8075554743894953&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser' failed: WebSocket is closed before the connection is established. +(anonymous) @ index.mjs:7598 + txChannel: 17:05:56.153 Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports + txChannel: 17:05:56.153 Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined + txChannel: 17:05:56.153 Ably: WebSocketTransport.dispose(): + txChannel: 17:05:56.153 Ably: WebSocketTransport.onError(): Error from WebSocket: undefined + txChannel: 17:05:56.153 Ably: WebSocketTransport.onWsClose(): Unclean disconnection of WebSocket ; code = 1006 + interception proxy got message {"jsonrpc":"2.0","id":"3cf4ce1c-1c7c-4830-9ffa-db3284ecdbb2","method":"transformInterceptedMessage","params":{"id":"99b0c290-4abc-440f-8a49-b391d35c2e69","connectionID":"48aee968-2e7c-474f-a20a-91c288c90a6d","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 99b0c290-4abc-440f-8a49-b391d35c2e69 unaltered + interception proxy got result of transforming message 99b0c290-4abc-440f-8a49-b391d35c2e69 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b79410ee-1f3f-48d6-8953-5dddef5ec304","method":"transformInterceptedMessage","params":{"id":"ae0a2cc6-6fbf-4ad6-89b1-b62d771559f0","connectionID":"debbdfab-f1d7-41d1-809f-22c96426cb73","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ae0a2cc6-6fbf-4ad6-89b1-b62d771559f0 unaltered + interception proxy got result of transforming message ae0a2cc6-6fbf-4ad6-89b1-b62d771559f0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6523a4d2-f697-4de6-93d3-758cbffa9396","method":"transformInterceptedMessage","params":{"id":"853dd19d-c573-4359-9300-3671b1a15ee8","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":0}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 853dd19d-c573-4359-9300-3671b1a15ee8 unaltered + interception proxy got result of transforming message 853dd19d-c573-4359-9300-3671b1a15ee8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f7102363-bc99-49e7-b81f-15f2c793925e","method":"transformInterceptedMessage","params":{"id":"d83dde04-e1ae-4671-89c1-20af73b81b8d","connectionID":"5519debd-9271-4efa-a5eb-33b7818ddf56","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message d83dde04-e1ae-4671-89c1-20af73b81b8d unaltered + interception proxy got result of transforming message d83dde04-e1ae-4671-89c1-20af73b81b8d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b56f897c-f2bc-4557-89d4-42dffcd605f7","method":"transformInterceptedMessage","params":{"id":"44f5b8df-f366-44d9-be16-8abd4a495ebc","connectionID":"fe0c80ec-a965-4036-b295-b1bd610d1b14","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 44f5b8df-f366-44d9-be16-8abd4a495ebc unaltered + interception proxy got result of transforming message 44f5b8df-f366-44d9-be16-8abd4a495ebc Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6c9e1223-e546-4dd4-a031-415c680c0d8c","method":"transformInterceptedMessage","params":{"id":"17cbb04b-f50f-41c2-bf23-da23adb964cd","connectionID":"af5206b9-b434-4cfe-8977-ff04695f3a90","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 17cbb04b-f50f-41c2-bf23-da23adb964cd unaltered + interception proxy got result of transforming message 17cbb04b-f50f-41c2-bf23-da23adb964cd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"12372f83-7eef-4fd4-a809-96c16a1391fe","method":"transformInterceptedMessage","params":{"id":"ea6450d8-c7bb-4900-a433-ef5579baafc7","connectionID":"9d5f0fe4-8e1b-4d0a-8b4e-95ba7037f978","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ea6450d8-c7bb-4900-a433-ef5579baafc7 unaltered + interception proxy got result of transforming message ea6450d8-c7bb-4900-a433-ef5579baafc7 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4cc561e0-b49c-4cf9-94e8-ce0c2eae96a9","method":"transformInterceptedMessage","params":{"id":"37bf5e19-eff5-4cc5-b527-8dcdae9c6a1d","connectionID":"f5ed8dae-1f2b-43be-bd2b-6a141be8aa02","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 37bf5e19-eff5-4cc5-b527-8dcdae9c6a1d unaltered + interception proxy got result of transforming message 37bf5e19-eff5-4cc5-b527-8dcdae9c6a1d Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"328ab612-bef0-41ac-9cf5-dcb8116b1a80","method":"transformInterceptedMessage","params":{"id":"cd9f3bbb-220e-4eb9-9587-62808151bcdf","connectionID":"8c9d9e19-1397-45c4-97ba-e83c83b268ba","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message cd9f3bbb-220e-4eb9-9587-62808151bcdf unaltered + interception proxy got result of transforming message cd9f3bbb-220e-4eb9-9587-62808151bcdf Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6735a4ec-4dab-4e1f-9775-2c364f3ec4b4","method":"transformInterceptedMessage","params":{"id":"053abcf5-c111-4e27-87ea-b1b2e1206dcd","connectionID":"b8da5579-4ed1-49c0-bd31-2a3e21cbf86d","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 053abcf5-c111-4e27-87ea-b1b2e1206dcd unaltered + interception proxy got result of transforming message 053abcf5-c111-4e27-87ea-b1b2e1206dcd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4f07b1ed-fb57-4498-bd12-c125bb98ba9e","method":"transformInterceptedMessage","params":{"id":"13559a96-831a-4e1e-85e6-06e93d5b8260","connectionID":"b301e48b-a1f4-42dc-96b1-9ef32bbdad40","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 13559a96-831a-4e1e-85e6-06e93d5b8260 unaltered + interception proxy got result of transforming message 13559a96-831a-4e1e-85e6-06e93d5b8260 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"d0a27d49-fee6-4c68-bc5c-217f627111b2","method":"transformInterceptedMessage","params":{"id":"afb062dc-15ae-49c5-ae1d-38d5e031d8b4","connectionID":"5c3ce37a-18ac-4617-907e-6d09308b69f0","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message afb062dc-15ae-49c5-ae1d-38d5e031d8b4 unaltered + interception proxy got result of transforming message afb062dc-15ae-49c5-ae1d-38d5e031d8b4 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0cd87cbe-49c9-4334-8b25-e012e6adb329","method":"transformInterceptedMessage","params":{"id":"ec34a7e0-54e0-4c9d-a097-1a46018229ec","connectionID":"d76117c7-fce1-4aa5-94b7-28756fb1bc35","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ec34a7e0-54e0-4c9d-a097-1a46018229ec unaltered + interception proxy got result of transforming message ec34a7e0-54e0-4c9d-a097-1a46018229ec Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0041261c-d4e5-4dd8-a90b-a88453ac0a81","method":"transformInterceptedMessage","params":{"id":"475233d8-29ad-4ada-9113-f32c80595670","connectionID":"2e0669f5-01ca-469b-a5af-edc9f52e41b2","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 475233d8-29ad-4ada-9113-f32c80595670 unaltered + interception proxy got result of transforming message 475233d8-29ad-4ada-9113-f32c80595670 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"33443757-6599-4cd1-b4e1-3743da263ef4","method":"transformInterceptedMessage","params":{"id":"82457f28-7606-409e-b65a-b265e95d2d98","connectionID":"26f33cb2-a126-479b-aea3-4ff7697c8ea3","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 82457f28-7606-409e-b65a-b265e95d2d98 unaltered + interception proxy got result of transforming message 82457f28-7606-409e-b65a-b265e95d2d98 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"c487b436-7785-46fd-a57c-65256948ec2f","method":"transformInterceptedMessage","params":{"id":"19bac6fa-821a-4e9d-bae5-296510887e8e","connectionID":"8ece73c5-d1bf-4067-8437-e1c3582a8368","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 19bac6fa-821a-4e9d-bae5-296510887e8e unaltered + interception proxy got result of transforming message 19bac6fa-821a-4e9d-bae5-296510887e8e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"5ca4b45c-b385-4b2f-9aa4-2a8fcbcfd7b2","method":"transformInterceptedMessage","params":{"id":"752ec0e3-e233-4f0a-9dc3-f39c4017d892","connectionID":"be11f962-7b07-40b5-a4b9-4de162c3f76a","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 752ec0e3-e233-4f0a-9dc3-f39c4017d892 unaltered + interception proxy got result of transforming message 752ec0e3-e233-4f0a-9dc3-f39c4017d892 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"b1509495-339c-41d5-9895-68d6df5603cd","method":"transformInterceptedMessage","params":{"id":"6a5205a2-9115-4290-b852-7571e330c949","connectionID":"379b5cc2-eb70-48c7-a6ac-44ad741e9010","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 6a5205a2-9115-4290-b852-7571e330c949 unaltered + interception proxy got result of transforming message 6a5205a2-9115-4290-b852-7571e330c949 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"e4be240f-9294-42cb-907d-fde5ff734e99","method":"transformInterceptedMessage","params":{"id":"9efdd609-8578-4096-ba6c-af9c886791d9","connectionID":"a2edcd9b-abb2-43d8-9c42-5a2b94142e0b","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9efdd609-8578-4096-ba6c-af9c886791d9 unaltered + interception proxy got result of transforming message 9efdd609-8578-4096-ba6c-af9c886791d9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"34993b85-e02c-489c-af86-037a24fa0834","method":"transformInterceptedMessage","params":{"id":"e075a4a6-fb94-4272-828d-0c17f750906e","connectionID":"85f5dfce-6c9d-4a57-bbc2-c45d5d72c4a5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message e075a4a6-fb94-4272-828d-0c17f750906e unaltered + interception proxy got result of transforming message e075a4a6-fb94-4272-828d-0c17f750906e Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"38d0971d-551e-46d0-9b00-7e26e359aaed","method":"transformInterceptedMessage","params":{"id":"b6f0d338-63d7-4fb2-b39b-0e57ec849730","connectionID":"f128c8dd-ee50-46ba-83fa-68b1bbad60aa","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b6f0d338-63d7-4fb2-b39b-0e57ec849730 unaltered + interception proxy got result of transforming message b6f0d338-63d7-4fb2-b39b-0e57ec849730 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"dfc5dec1-ef73-4221-a243-de53a634fe70","method":"transformInterceptedMessage","params":{"id":"66320d9b-ccf9-4cb4-892b-38f17f9260d5","connectionID":"debbdfab-f1d7-41d1-809f-22c96426cb73","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 66320d9b-ccf9-4cb4-892b-38f17f9260d5 unaltered + interception proxy got result of transforming message 66320d9b-ccf9-4cb4-892b-38f17f9260d5 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"f87d4f57-4b3f-42b8-96be-35aae1442f35","method":"transformInterceptedMessage","params":{"id":"c9031b18-85d3-4e5b-b0d3-2a33cb179da2","connectionID":"12fc4bb7-6c5e-4efe-9ebc-90cc477bdc88","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message c9031b18-85d3-4e5b-b0d3-2a33cb179da2 unaltered + interception proxy got result of transforming message c9031b18-85d3-4e5b-b0d3-2a33cb179da2 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"5436bd2e-b4a5-4ab8-98b9-5e71ae0a59b9","method":"transformInterceptedMessage","params":{"id":"ea2b4456-5317-41c5-9916-333189302415","connectionID":"3169e6ab-56d8-45bb-a5f7-06ae93b026af","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message ea2b4456-5317-41c5-9916-333189302415 unaltered + interception proxy got result of transforming message ea2b4456-5317-41c5-9916-333189302415 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2875e5fc-9de5-4f6a-9f4a-1a04017b2fea","method":"transformInterceptedMessage","params":{"id":"0a11cb19-4263-4cb6-9161-59ad38cc3186","connectionID":"9ef4a169-866d-4990-b066-27280140bda5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0a11cb19-4263-4cb6-9161-59ad38cc3186 unaltered + interception proxy got result of transforming message 0a11cb19-4263-4cb6-9161-59ad38cc3186 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"7bd3a3fc-6636-4fc1-bff1-6d770968562f","method":"transformInterceptedMessage","params":{"id":"07802f1d-8c19-47c1-b53a-fd8f01b666a0","connectionID":"cb215bd9-0655-4a72-9676-8c7c74ead1f5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 07802f1d-8c19-47c1-b53a-fd8f01b666a0 unaltered + interception proxy got result of transforming message 07802f1d-8c19-47c1-b53a-fd8f01b666a0 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"4859f8b5-86a4-4757-8cbc-9dca407c5685","method":"transformInterceptedMessage","params":{"id":"0e4e835a-aefa-42cb-ba50-067ced6bc960","connectionID":"48aee968-2e7c-474f-a20a-91c288c90a6d","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0e4e835a-aefa-42cb-ba50-067ced6bc960 unaltered + interception proxy got result of transforming message 0e4e835a-aefa-42cb-ba50-067ced6bc960 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ec3c2f00-a527-4152-b25b-fa96bb6f5765","method":"transformInterceptedMessage","params":{"id":"5d737080-ce71-4995-9ac4-20cabe665a5a","connectionID":"9708c1de-ea6a-4a7a-99c5-85f7fd00d6f5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 5d737080-ce71-4995-9ac4-20cabe665a5a unaltered + interception proxy got result of transforming message 5d737080-ce71-4995-9ac4-20cabe665a5a Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"1a420b94-0fe9-49cc-aa0f-0ecde4be6b54","method":"transformInterceptedMessage","params":{"id":"a0940f6b-58bc-41ff-ab84-4a21e287e2af","connectionID":"a4b3e3be-7289-4eb3-9295-3f564521a106","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message a0940f6b-58bc-41ff-ab84-4a21e287e2af unaltered + interception proxy got result of transforming message a0940f6b-58bc-41ff-ab84-4a21e287e2af Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"96c5dc39-ac23-4e19-8ef8-30a40482faeb","method":"transformInterceptedMessage","params":{"id":"0ea5a040-a331-4af4-9120-857a442ff721","connectionID":"1aed8420-9fa2-4789-a49e-3d153011e99c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 0ea5a040-a331-4af4-9120-857a442ff721 unaltered + interception proxy got result of transforming message 0ea5a040-a331-4af4-9120-857a442ff721 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3a18a56e-f757-496c-a21a-af30e2ae66df","method":"transformInterceptedMessage","params":{"id":"8473cab9-b5df-4e67-be53-56dc5e56c0f4","connectionID":"14abb0ae-e150-4e2f-9a38-9d7c925e9e29","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8473cab9-b5df-4e67-be53-56dc5e56c0f4 unaltered + interception proxy got result of transforming message 8473cab9-b5df-4e67-be53-56dc5e56c0f4 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"78814af6-b1f6-471f-849a-f39e1a317e9d","method":"transformInterceptedMessage","params":{"id":"1e175f5c-37a7-4da1-81fd-4c751bc2f1da","connectionID":"a148dfa2-a37e-472f-8f03-bca2ff804e90","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 1e175f5c-37a7-4da1-81fd-4c751bc2f1da unaltered + interception proxy got result of transforming message 1e175f5c-37a7-4da1-81fd-4c751bc2f1da Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"38ae58bb-dc1c-4677-9957-aa01f24ef44a","method":"transformInterceptedMessage","params":{"id":"bb8fdac1-f6a8-4535-9145-d304d2da1aa6","connectionID":"1197cf65-f25e-48a9-bce7-b1e18cac12d9","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message bb8fdac1-f6a8-4535-9145-d304d2da1aa6 unaltered + interception proxy got result of transforming message bb8fdac1-f6a8-4535-9145-d304d2da1aa6 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bee41dc1-80df-4aa5-a31c-db9d1124902c","method":"transformInterceptedMessage","params":{"id":"3f34c54e-d802-497c-a96f-133a10746617","connectionID":"f15e2d6d-0c1c-4912-a95e-ea5d06439b2c","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 3f34c54e-d802-497c-a96f-133a10746617 unaltered + interception proxy got result of transforming message 3f34c54e-d802-497c-a96f-133a10746617 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9346a690-3ee7-4cf4-b01d-f0333c919831","method":"transformInterceptedMessage","params":{"id":"682018e5-0c70-465f-870f-c9f63d012ba3","connectionID":"6f9c70d3-752a-42d8-80b4-bd66350edef5","type":"text","data":"{\"action\":6,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"}}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 682018e5-0c70-465f-870f-c9f63d012ba3 unaltered + interception proxy got result of transforming message 682018e5-0c70-465f-870f-c9f63d012ba3 Object + interception proxy sending transformInterceptedMessage response Object + rxChannel: 17:05:56.669 Ably: WebSocketTransport.onWsData(): data received; length = 152; type = string + rxChannel: 17:05:56.669 Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=DISCONNECTED; error=[_ErrorInfo: Account _tmp_nMaZiw disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ]]; connectionId = HkjZzW_e__ + rxChannel: 17:05:56.669 Ably: Transport.onDisconnect(): err = [_ErrorInfo: Account _tmp_nMaZiw disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] + rxChannel: 17:05:56.669 Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: 17:05:56.669 Ably: ConnectionManager.deactivateTransport(): state = disconnected; was active + rxChannel: 17:05:56.669 Ably: ConnectionManager.deactivateTransport(): reason = Account _tmp_nMaZiw disabled + rxChannel: 17:05:56.669 Ably: ConnectionManager.deactivateTransport(): Getting, clearing, and requeuing 0 pending messages + rxChannel: 17:05:56.670 Ably: MessageQueue.clear(): clearing 0 messages + rxChannel: 17:05:56.670 Ably: ConnectionManager.notifyState(): new state: disconnected; will retry connection immediately + rxChannel: 17:05:56.670 Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: 17:05:56.670 Ably: Connection state: disconnected; reason: [_ErrorInfo: Account _tmp_nMaZiw disabled; statusCode=403; code=40300; see https://help.ably.io/error/40300 ] + rxChannel: 17:05:56.670 Ably: ConnectionManager.enactStateChange: setting new state: disconnected; reason = Account _tmp_nMaZiw disabled + rxChannel: 17:05:56.670 Ably: WebSocketTransport.dispose(): + rxChannel: 17:05:56.670 Ably: ConnectionManager.requestState(): requested state: connecting; current state: disconnected + rxChannel: 17:05:56.670 Ably: ConnectionManager.cancelTransitionTimer(): + rxChannel: 17:05:56.670 Ably: Connection state: connecting + rxChannel: 17:05:56.670 Ably: ConnectionManager.enactStateChange: setting new state: connecting; reason = undefined + rxChannel: 17:05:56.670 Ably: WebSocketTransport.dispose(): closing websocket + rxChannel: 17:05:56.670 Ably: ConnectionManager.startConnect(): starting connection + rxChannel: 17:05:56.670 Ably: ConnectionManager.startTransitionTimer(): transitionState: connecting + rxChannel: 17:05:56.670 Ably: ConnectionManager.getTransportParams(): Transport params = [mode=resume,connectionKey=e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889,format=json] + rxChannel: 17:05:56.670 Ably: ConnectionManager.connectWs(): undefined + rxChannel: 17:05:56.670 Ably: ConnectionManager.tryTransportWithFallbacks(): web_socket + rxChannel: 17:05:56.670 Ably: ConnectionManager.tryATransport(): trying web_socket + rxChannel: 17:05:56.670 Ably: WebSocketTransport.connect(): starting + rxChannel: 17:05:56.670 Ably: WebSocketTransport.connect(): uri: wss://sandbox-realtime.ably.io:443/ + rxChannel: 17:05:56.670 Ably: WebSocketTransport.connect(): authParams: key: _tmp_arPTlA.eykGKQ:L6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ; err: null + rxChannel: 17:05:56.670 Ably: WebSocketTransport.createWebSocket(): uri:wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&resume=e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser + rxChannel: 17:05:56.687 Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket + txChannel: 17:05:56.773 Ably: ConnectionManager WebSocket slow timer: ws connectivity check succeeded + interception proxy got message {"jsonrpc":"2.0","id":"fd62b1a2-a51f-4d89-a4b2-6fc60c5cd8ab","method":"transformInterceptedMessage","params":{"id":"fdac4b5d-97bf-45f4-80f6-4dd4bc5339af","connectionID":"0dc7b722-a81d-4607-9da6-085980537941","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357174}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message fdac4b5d-97bf-45f4-80f6-4dd4bc5339af unaltered + interception proxy got result of transforming message fdac4b5d-97bf-45f4-80f6-4dd4bc5339af Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"0d969a12-077d-4864-b594-9a84e1f81faa","method":"transformInterceptedMessage","params":{"id":"9542b5fc-c9c2-454b-b5b7-5753b3cac444","connectionID":"b55eade6-c287-48d1-b681-fe5a0c81b514","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357176}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 9542b5fc-c9c2-454b-b5b7-5753b3cac444 unaltered + interception proxy got result of transforming message 9542b5fc-c9c2-454b-b5b7-5753b3cac444 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9cdfe80f-5817-4a13-b9d1-5d050bf72fe2","method":"transformInterceptedMessage","params":{"id":"b408c5c1-31b2-453c-ae85-9680aa4dc9dd","connectionID":"7f569c8f-cb8c-46c0-91be-518a752837c6","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357176}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b408c5c1-31b2-453c-ae85-9680aa4dc9dd unaltered + interception proxy got result of transforming message b408c5c1-31b2-453c-ae85-9680aa4dc9dd Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"fefa97e4-6510-426d-9b6b-51b958339186","method":"transformInterceptedMessage","params":{"id":"37667415-85b9-4495-af4f-778dfad3c5a6","connectionID":"3d46ae86-30b7-4f4c-ae54-d373eb51e958","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357178}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 37667415-85b9-4495-af4f-778dfad3c5a6 unaltered + interception proxy got result of transforming message 37667415-85b9-4495-af4f-778dfad3c5a6 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"48a9c322-619c-4d9e-abe5-fedded5a8534","method":"transformInterceptedMessage","params":{"id":"f3aefc34-d2dc-4f89-bd7e-378b7a59c0d9","connectionID":"1af7abf3-86e5-495d-a629-7fad874ef824","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357179}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message f3aefc34-d2dc-4f89-bd7e-378b7a59c0d9 unaltered + interception proxy got result of transforming message f3aefc34-d2dc-4f89-bd7e-378b7a59c0d9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"ad708ee4-ded6-4219-8e12-8e38abba2f03","method":"transformInterceptedMessage","params":{"id":"8ace6311-632e-4786-ba48-2acc30d28321","connectionID":"fca00b4c-d3e1-48f3-9437-02dc624cd5e5","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357180}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 8ace6311-632e-4786-ba48-2acc30d28321 unaltered + interception proxy got result of transforming message 8ace6311-632e-4786-ba48-2acc30d28321 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"2b9f5303-454c-4e5c-aff5-471cebdacf4f","method":"transformInterceptedMessage","params":{"id":"b5f2473c-9ad2-4765-a852-8e30211771ee","connectionID":"f39078a6-7d1b-4f7d-8cb6-60a5c11a6b99","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357180}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b5f2473c-9ad2-4765-a852-8e30211771ee unaltered + interception proxy got result of transforming message b5f2473c-9ad2-4765-a852-8e30211771ee Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"3a94ea7e-0c90-4292-927a-cb0c05500749","method":"transformInterceptedMessage","params":{"id":"30f4f011-9441-440e-a2b2-1d3848eba8a9","connectionID":"9e506871-8718-43c8-9132-f5a134df8002","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357182}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 30f4f011-9441-440e-a2b2-1d3848eba8a9 unaltered + interception proxy got result of transforming message 30f4f011-9441-440e-a2b2-1d3848eba8a9 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"a3ee7fc3-79b8-4668-b52d-b631fc0bfa53","method":"transformInterceptedMessage","params":{"id":"eb85921b-0ead-410b-b07c-a8faa6d9994b","connectionID":"2481bcce-d1dd-4a08-8456-879dfe2cac12","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357211}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message eb85921b-0ead-410b-b07c-a8faa6d9994b unaltered + interception proxy got result of transforming message eb85921b-0ead-410b-b07c-a8faa6d9994b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"55f5b617-aad1-4119-97a1-411e79fec84a","method":"transformInterceptedMessage","params":{"id":"526fd9b4-29e3-4e47-8649-cdcc2cea09a8","connectionID":"9faff42f-3b64-488f-99b8-d4ba0a861a86","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357215}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 526fd9b4-29e3-4e47-8649-cdcc2cea09a8 unaltered + interception proxy got result of transforming message 526fd9b4-29e3-4e47-8649-cdcc2cea09a8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bd2c18f5-adea-4a41-a15e-e7633854e2ab","method":"transformInterceptedMessage","params":{"id":"efa9c1df-3f88-48ef-8fec-957e07530f46","connectionID":"48c94a59-59f7-4fde-b112-837519636a70","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357307}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message efa9c1df-3f88-48ef-8fec-957e07530f46 unaltered + interception proxy got result of transforming message efa9c1df-3f88-48ef-8fec-957e07530f46 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"18754923-ab01-4a10-8879-2428fe65b1de","method":"transformInterceptedMessage","params":{"id":"4011f61d-b2d9-40e5-8cbf-eb1508bea03b","connectionID":"13dde322-87f3-452e-b0d6-ac5e2842ff59","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357488}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 4011f61d-b2d9-40e5-8cbf-eb1508bea03b unaltered + interception proxy got result of transforming message 4011f61d-b2d9-40e5-8cbf-eb1508bea03b Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"9a7f6837-2123-4411-ac49-9643a62ac722","method":"transformInterceptedMessage","params":{"id":"cae5528f-d274-49d7-a6c9-2a6b09e38b4c","connectionID":"f2b116ee-5159-484c-bbca-15a79b209052","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976357503}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message cae5528f-d274-49d7-a6c9-2a6b09e38b4c unaltered + interception proxy got result of transforming message cae5528f-d274-49d7-a6c9-2a6b09e38b4c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"6d430dd9-a43a-4c3a-a885-8a15509d7f9d","method":"transformInterceptedMessage","params":{"id":"b5fd6aba-1252-4837-8169-5e18a598a3a8","connectionID":"2412fe5e-388b-4962-8c12-40ecf7626172","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976358492}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message b5fd6aba-1252-4837-8169-5e18a598a3a8 unaltered + interception proxy got result of transforming message b5fd6aba-1252-4837-8169-5e18a598a3a8 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"fae8f6b6-582e-4dbb-8993-ab3085cd591d","method":"transformInterceptedMessage","params":{"id":"2077533d-b542-4e8a-ac2a-2d60f07d346c","connectionID":"1ada4ae7-20b4-4c89-9dbb-4d27e4a5befc","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976358585}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message 2077533d-b542-4e8a-ac2a-2d60f07d346c unaltered + interception proxy got result of transforming message 2077533d-b542-4e8a-ac2a-2d60f07d346c Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"bbdbbed1-86a8-46fa-b953-2705cfef1a34","method":"transformInterceptedMessage","params":{"id":"abc4243b-441d-41e7-8870-2d8e8cb22231","connectionID":"b9161b92-1cf5-485b-9d7f-a7a536e41885","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976358733}","fromClient":false}} + interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object + default transformInterceptedMessage implementation passing message abc4243b-441d-41e7-8870-2d8e8cb22231 unaltered + interception proxy got result of transforming message abc4243b-441d-41e7-8870-2d8e8cb22231 Object + interception proxy sending transformInterceptedMessage response Object + interception proxy got message {"jsonrpc":"2.0","id":"064ff42d-ee63-4def-92ee-92bf85a22c9d","method":"transformInterceptedMessage","params":{"id":"617f1cb8-0449-4d44-b4b0-b5854a9bd9e9","connectionID":"100b6120-fc77-43fc-b8f5-fa08af996d72","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976358813}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 617f1cb8-0449-4d44-b4b0-b5854a9bd9e9 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 617f1cb8-0449-4d44-b4b0-b5854a9bd9e9 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f64c17b0-ca0e-40b3-bec8-a731c0a01448","method":"transformInterceptedMessage","params":{"id":"c27cc443-a4f9-420b-8a15-4ea7c9be326e","connectionID":"7d1d06a7-a82d-4fe1-bee4-617bfe480e31","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Account _tmp_nMaZiw disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976358923}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message c27cc443-a4f9-420b-8a15-4ea7c9be326e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message c27cc443-a4f9-420b-8a15-4ea7c9be326e Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"44c813a3-ac63-4c9f-a3a5-34953862eef3","method":"transformInterceptedMessage","params":{"id":"66d49a52-0a72-4f38-839d-a3bd0d93f63f","connectionID":"a7cbefa9-9041-4514-ab10-94aabe202607","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976359325}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 66d49a52-0a72-4f38-839d-a3bd0d93f63f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 66d49a52-0a72-4f38-839d-a3bd0d93f63f Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"133f01ed-4023-4c65-85e5-03958726a8db","method":"transformInterceptedMessage","params":{"id":"e387a3bf-afd3-434f-8e23-35b3767924d5","connectionID":"cae33f82-9c23-43d3-b2fd-ead3f3874a09","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976359355}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message e387a3bf-afd3-434f-8e23-35b3767924d5 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message e387a3bf-afd3-434f-8e23-35b3767924d5 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"5a721068-f570-44b4-8eb8-f68249f526eb","method":"transformInterceptedMessage","params":{"id":"30e63c3a-8e14-4cfa-b531-3497d62d8d9e","connectionID":"865f1ec4-34af-46f4-bab9-b623ab0180fd","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976359357}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 30e63c3a-8e14-4cfa-b531-3497d62d8d9e unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 30e63c3a-8e14-4cfa-b531-3497d62d8d9e Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"7d73c15d-f693-4aae-983d-3c9c60b6521c","method":"transformInterceptedMessage","params":{"id":"7fa66d8e-cab3-4035-948f-d03bf6276c97","connectionID":"518c9700-7981-4792-8d00-983b34d63d1b","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976359591}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 7fa66d8e-cab3-4035-948f-d03bf6276c97 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 7fa66d8e-cab3-4035-948f-d03bf6276c97 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"f6b1eda7-94f4-49ea-bce1-9f7de9e1546a","method":"transformInterceptedMessage","params":{"id":"ff56eede-5306-440d-8634-4e51a7322667","connectionID":"a348aaf7-a63d-4ee6-b091-84cf25bda68b","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976359979}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ff56eede-5306-440d-8634-4e51a7322667 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ff56eede-5306-440d-8634-4e51a7322667 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"879c7db3-2e5f-406e-ad8a-3f9319f604ef","method":"transformInterceptedMessage","params":{"id":"ee344a0f-cd51-4345-852e-764bd13dc93f","connectionID":"27b3b5a4-e93f-4c2b-85f5-379599dc3cd8","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976360183}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message ee344a0f-cd51-4345-852e-764bd13dc93f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message ee344a0f-cd51-4345-852e-764bd13dc93f Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:601 rxChannel: 17:06:00.670 Ably: ConnectionManager WebSocket slow timer: checking connectivity +modular.test.js:601 rxChannel: 17:06:00.671 Ably: (Fetch)Http.checkConnectivity(): Sending; https://internet-up.ably-realtime.com/is-the-internet-up.txt +modular.test.js:601 rxChannel: 17:06:00.673 Ably: (Fetch)Http.checkConnectivity(): Result: true +modular.test.js:601 rxChannel: 17:06:00.673 Ably: ConnectionManager WebSocket slow timer: http connectivity check succeeded +modular.test.js:601 rxChannel: 17:06:00.754 Ably: ConnectionManager WebSocket slow timer: ws connectivity check succeeded +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"8934c305-cc67-472d-befb-15710d67b509","method":"transformInterceptedMessage","params":{"id":"5a6f4d02-394b-431f-b6b5-1f1b29fdaf8a","connectionID":"427ad8cc-9c08-40e6-a163-4b505467dee3","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976360996}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 5a6f4d02-394b-431f-b6b5-1f1b29fdaf8a unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 5a6f4d02-394b-431f-b6b5-1f1b29fdaf8a Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1374c9e5-2b78-4ae0-ac7f-415c59014cf5","method":"transformInterceptedMessage","params":{"id":"86d67362-62de-4e16-8b59-06beb25a96f8","connectionID":"1a8bbd14-a7d3-4da1-8216-914733acba35","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976361073}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 86d67362-62de-4e16-8b59-06beb25a96f8 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 86d67362-62de-4e16-8b59-06beb25a96f8 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"353d24a6-bdef-446a-a82b-08a25c07c2fd","method":"transformInterceptedMessage","params":{"id":"0c355aa0-8f9e-45dd-bf24-92f6f238dc37","connectionID":"6b9776f5-4b90-40d8-984a-8d50fb93d858","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976361159}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 0c355aa0-8f9e-45dd-bf24-92f6f238dc37 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 0c355aa0-8f9e-45dd-bf24-92f6f238dc37 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:601 rxChannel: 17:06:01.277 Ably: WebSocketTransport.onWsOpen(): opened WebSocket +modular.test.js:601 rxChannel: 17:06:01.277 Ably: Transport.tryConnect(): viable transport WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&resume=e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:601 rxChannel: 17:06:01.277 Ably: ConnectionManager.tryATransport(): viable transport web_socket; setting pending +modular.test.js:601 rxChannel: 17:06:01.277 Ably: ConnectionManager.setTransportPending(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&resume=e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser; mode = resume +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"4bd2780a-2cb5-412b-84bc-05c18c748bce","method":"transformInterceptedMessage","params":{"id":"87b904d5-6542-4900-85c9-eb472c31552f","connectionID":"1b504529-a530-48a6-9ba0-c5609a94c26a","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976361553}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 87b904d5-6542-4900-85c9-eb472c31552f unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 87b904d5-6542-4900-85c9-eb472c31552f Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"1e5abc8f-9f3e-4a8c-a710-82e83a876de1","method":"transformInterceptedMessage","params":{"id":"bcac6011-7ad3-4c83-9a51-6028e8a899b3","connectionID":"b0e5bae5-9b35-432c-aef5-ab8480e16414","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976361700}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message bcac6011-7ad3-4c83-9a51-6028e8a899b3 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message bcac6011-7ad3-4c83-9a51-6028e8a899b3 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +modular.test.js:601 rxChannel: 17:06:01.774 Ably: WebSocketTransport.onWsData(): data received; length = 232; type = string +modular.test.js:601 rxChannel: 17:06:01.774 Ably: Transport.onProtocolMessage(): received on web_socket: [ProtocolMessage; action=ERROR; timestamp=1715976361700; error=[_ErrorInfo: Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300]]; connectionId = HkjZzW_e__ +modular.test.js:601 rxChannel: 17:06:01.774 Ably: Transport.onProtocolMessage(): received error action; connectionId = HkjZzW_e__; err = {"code":40300,"statusCode":403,"nonfatal":false,"href":"https://help.ably.io/error/40300"} +modular.test.js:601 rxChannel: 17:06:01.774 Ably: Transport.onFatalError(): err = [_ErrorInfo: Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:601 rxChannel: 17:06:01.775 Ably: ConnectionManager.deactivateTransport(): transport = WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&resume=e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:601 rxChannel: 17:06:01.775 Ably: ConnectionManager.deactivateTransport(): state = failed; was pending +modular.test.js:601 rxChannel: 17:06:01.775 Ably: ConnectionManager.deactivateTransport(): reason = Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.) +modular.test.js:601 rxChannel: 17:06:01.775 Ably: ConnectionManager.notifyState(): new state: failed +modular.test.js:601 rxChannel: 17:06:01.775 Ably: ConnectionManager.cancelTransitionTimer(): +modular.test.js:601 rxChannel: 17:06:01.775 Ably: Connection state: failed; reason: [_ErrorInfo: Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:601 rxChannel: 17:06:01.775 Ably: ConnectionManager.enactStateChange: setting new state: failed; reason = Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.) +modular.test.js:601 rxChannel: 17:06:01.776 Ably: RealtimeChannel.notifyState: name = channel, current state = attached, notifying state failed +modular.test.js:601 rxChannel: 17:06:01.776 Ably: PresenceMap.setInProgress(): inProgress = false +modular.test.js:601 rxChannel: 17:06:01.776 Ably: PresenceMap.setInProgress(): inProgress = false +modular.test.js:601 rxChannel: 17:06:01.776 Ably: Channel state for channel "channel": failed; reason: [_ErrorInfo: Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.); statusCode=403; code=40300] +modular.test.js:601 rxChannel: 17:06:01.776 Ably: WebSocketTransport.dispose(): +modular.test.js:601 rxChannel: 17:06:01.776 Ably: ConnectionManager.disconnectAllTransports(): Disconnecting all transports +modular.test.js:601 rxChannel: 17:06:01.777 Ably: ConnectionManager.disconnectAllTransports(): Disconnecting pending transport: WebSocketTransport; uri=wss://sandbox-realtime.ably.io:443/?key=_tmp_arPTlA.eykGKQ%3AL6apL_FGTQVYNsaOZMZYF899O96LilTfeMECxAyfcfQ&resume=e7dNIPVFABc0Ei!HkjZzW_e__ARSo2aGkrnMl-3889&format=json&heartbeats=true&v=3&agent=ably-js%2F2.0.4%20browser +modular.test.js:601 rxChannel: 17:06:01.777 Ably: ConnectionManager.disconnectAllTransports(): Disconnecting proposed transport: undefined +modular.test.js:601 rxChannel: 17:06:01.777 Ably: WebSocketTransport.dispose(): closing websocket +modular.test.js:601 rxChannel: 17:06:01.779 Ably: WebSocketTransport.onWsClose(): Cleanly closed WebSocket +interception_proxy_client.js:28 interception proxy got message {"jsonrpc":"2.0","id":"ba30acde-d94f-4c5d-9872-6e95a1d468f7","method":"transformInterceptedMessage","params":{"id":"8eb4ae8f-6783-4d18-8ad0-6a5774482d13","connectionID":"7546728a-a723-455e-8687-6243c24886a0","type":"text","data":"{\"action\":9,\"error\":{\"message\":\"Application _tmp_arPTlA disabled. (See https://help.ably.io/error/40300 for help.)\",\"code\":40300,\"statusCode\":403,\"nonfatal\":false,\"href\":\"https://help.ably.io/error/40300\"},\"timestamp\":1715976361796}","fromClient":false}} +interception_proxy_client.js:138 interception proxy awaiting response of transformInterceptedMessage for message Object deserialized to Object +interception_proxy_client.js:148 default transformInterceptedMessage implementation passing message 8eb4ae8f-6783-4d18-8ad0-6a5774482d13 unaltered +interception_proxy_client.js:159 interception proxy got result of transforming message 8eb4ae8f-6783-4d18-8ad0-6a5774482d13 Object +interception_proxy_client.js:179 interception proxy sending transformInterceptedMessage response Object +testapp_module.js:76 Test App _tmp_arPTlA has been torn down +interception_proxy_client.js:73 interception proxy client disconnected \ No newline at end of file From 4f63a155c6ef3cc35bb99b2adfbafe52beadd730 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 11:21:05 -0300 Subject: [PATCH 21/32] restore modular tests --- test/browser/modular.test.js | 236 ++++++++++++++++++++++++++++++----- 1 file changed, 203 insertions(+), 33 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index e15e9ebcf..82e5b0698 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -22,7 +22,7 @@ import { } from '../../build/modular/index.mjs'; function registerAblyModularTests(helper) { - describe.only('browser/modular', function () { + describe('browser/modular', function () { this.timeout(10 * 1000); const expect = chai.expect; const BufferUtils = BaseRest.Platform.BufferUtils; @@ -575,31 +575,8 @@ function registerAblyModularTests(helper) { describe('BaseRealtime with RealtimePresence', () => { it('offers realtime presence functionality', async () => { - function pad(timeSegment, three) { - return `${timeSegment}`.padStart(three ? 3 : 2, '0'); - } - - function getHandler(logger) { - return function (msg) { - const time = new Date(); - logger( - pad(time.getHours()) + - ':' + - pad(time.getMinutes()) + - ':' + - pad(time.getSeconds()) + - '.' + - pad(time.getMilliseconds(), 1) + - ' ' + - msg, - ); - }; - } - const rxChannel = new BaseRealtime( ablyClientOptions({ - logHandler: getHandler((msg) => console.log('rxChannel: ', msg)), - logLevel: 4, plugins: { WebSocketTransport, FetchRequest, @@ -610,8 +587,6 @@ function registerAblyModularTests(helper) { const txClientId = randomString(); const txChannel = new BaseRealtime( ablyClientOptions({ - logHandler: getHandler((msg) => console.log('txChannel: ', msg)), - logLevel: 4, clientId: txClientId, plugins: { WebSocketTransport, @@ -625,21 +600,216 @@ function registerAblyModularTests(helper) { const rxPresenceMessagePromise = new Promise((resolve, reject) => { resolveRxPresenceMessagePromise = resolve; }); - console.log('LAWRENCE: begin waiting for presence subscribe'); await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); - console.log('LAWRENCE: end waiting for presence subscribe'); - console.log('LAWRENCE: begin waiting for presence enter'); - console.log('LAWRENCE: txChannel.presence.enter is', txChannel.presence.enter); await txChannel.presence.enter(); - console.log('LAWRENCE: end waiting for presence enter'); - console.log('LAWRENCE: begin waiting for rxPresenceMessagePromise'); const rxPresenceMessage = await rxPresenceMessagePromise; - console.log('LAWRENCE: end waiting for rxPresenceMessagePromise'); expect(rxPresenceMessage.clientId).to.equal(txClientId); }); }); }); + + describe('PresenceMessage standalone functions', () => { + describe('decodePresenceMessage', () => { + it('decodes a presence message’s data', async () => { + const buffer = BufferUtils.utf8Encode('foo'); + const encodedMessage = { data: BufferUtils.base64Encode(buffer), encoding: 'base64' }; + + const decodedMessage = await decodePresenceMessage(encodedMessage); + + expect(BufferUtils.areBuffersEqual(decodedMessage.data, buffer)).to.be.true; + expect(decodedMessage.encoding).to.be.null; + }); + }); + + describe('decodeMessages', () => { + it('decodes presence messages’ data', async () => { + const buffers = ['foo', 'bar'].map((data) => BufferUtils.utf8Encode(data)); + const encodedMessages = buffers.map((buffer) => ({ + data: BufferUtils.base64Encode(buffer), + encoding: 'base64', + })); + + const decodedMessages = await decodePresenceMessages(encodedMessages); + + for (let i = 0; i < decodedMessages.length; i++) { + const decodedMessage = decodedMessages[i]; + + expect(BufferUtils.areBuffersEqual(decodedMessage.data, buffers[i])).to.be.true; + expect(decodedMessage.encoding).to.be.null; + } + }); + }); + + describe('constructPresenceMessage', () => { + it('creates a PresenceMessage instance', async () => { + const extras = { foo: 'bar' }; + const presenceMessage = constructPresenceMessage({ extras }); + + expect(presenceMessage.constructor.name).to.contain('PresenceMessage'); + expect(presenceMessage.extras).to.equal(extras); + }); + }); + }); + + describe('Transports', () => { + describe('BaseRealtime', () => { + describe('without a transport plugin', () => { + it('throws an error due to absence of a transport plugin', () => { + expect(() => new BaseRealtime(ablyClientOptions({ plugins: { FetchRequest } }))).to.throw( + 'no requested transports available', + ); + }); + }); + + for (const scenario of [ + { pluginsKey: 'WebSocketTransport', transportPlugin: WebSocketTransport, transportName: 'web_socket' }, + { pluginsKey: 'XHRPolling', transportPlugin: XHRPolling, transportName: 'xhr_polling' }, + ]) { + describe(`with the ${scenario.pluginsKey} plugin`, () => { + it(`is able to use the ${scenario.transportName} transport`, async () => { + const realtime = new BaseRealtime( + ablyClientOptions({ + autoConnect: false, + transports: [scenario.transportName], + plugins: { + FetchRequest, + [scenario.pluginsKey]: scenario.transportPlugin, + }, + }), + ); + + let firstTransportCandidate; + const connectionManager = realtime.connection.connectionManager; + const originalTryATransport = connectionManager.tryATransport; + realtime.connection.connectionManager.tryATransport = (transportParams, candidate, callback) => { + if (!firstTransportCandidate) { + firstTransportCandidate = candidate; + } + originalTryATransport.bind(connectionManager)(transportParams, candidate, callback); + }; + + realtime.connect(); + + await realtime.connection.once('connected'); + expect(firstTransportCandidate).to.equal(scenario.transportName); + }); + }); + } + }); + }); + + describe('HTTP request implementations', () => { + describe('with multiple HTTP request implementations', () => { + it('prefers XHR', async () => { + let usedXHR = false; + + const XHRRequestSpy = class XHRRequestSpy extends XHRRequest { + static createRequest(...args) { + usedXHR = true; + return super.createRequest(...args); + } + }; + + const rest = new BaseRest(ablyClientOptions({ plugins: { FetchRequest, XHRRequest: XHRRequestSpy } })); + await rest.time(); + + expect(usedXHR).to.be.true; + }); + }); + }); + + describe('MessageInteractions', () => { + describe('BaseRealtime', () => { + describe('without MessageInteractions', () => { + it('is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed', async () => { + const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); + const channel = realtime.channels.get('channel'); + await channel.attach(); + + const subscribeReceivedMessagePromise = new Promise((resolve) => channel.subscribe(resolve)); + + await channel.publish('message', 'body'); + + const subscribeReceivedMessage = await subscribeReceivedMessagePromise; + expect(subscribeReceivedMessage.data).to.equal('body'); + }); + + it('throws an error when attempting to subscribe to channel events using a MessageFilter', async () => { + const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); + const channel = realtime.channels.get('channel'); + + let thrownError = null; + try { + await channel.subscribe({ clientId: 'someClientId' }, () => {}); + } catch (error) { + thrownError = error; + } + + expect(thrownError).not.to.be.null; + expect(thrownError.message).to.equal('MessageInteractions plugin not provided'); + }); + }); + + describe('with MessageInteractions', () => { + it('can take a MessageFilter argument when subscribing to and unsubscribing from channel events', async () => { + const realtime = new BaseRealtime( + ablyClientOptions({ + plugins: { + WebSocketTransport, + FetchRequest, + MessageInteractions, + }, + }), + ); + const channel = realtime.channels.get('channel'); + + await channel.attach(); + + // Test `subscribe` with a filter: send two messages with different clientIds, and check that unfiltered subscription receives both messages but clientId-filtered subscription only receives the matching one. + const messageFilter = { clientId: 'someClientId' }; // note that `unsubscribe` compares filter by reference, I found that a bit surprising + + const filteredSubscriptionReceivedMessages = []; + channel.subscribe(messageFilter, (message) => { + filteredSubscriptionReceivedMessages.push(message); + }); + + const unfilteredSubscriptionReceivedFirstTwoMessagesPromise = new Promise((resolve) => { + const receivedMessages = []; + channel.subscribe(function listener(message) { + receivedMessages.push(message); + if (receivedMessages.length === 2) { + channel.unsubscribe(listener); + resolve(); + } + }); + }); + + await channel.publish(await decodeMessage({ clientId: 'someClientId' })); + await channel.publish(await decodeMessage({ clientId: 'someOtherClientId' })); + await unfilteredSubscriptionReceivedFirstTwoMessagesPromise; + + expect(filteredSubscriptionReceivedMessages.length).to.equal(1); + expect(filteredSubscriptionReceivedMessages[0].clientId).to.equal('someClientId'); + + // Test `unsubscribe` with a filter: call `unsubscribe` with the clientId filter, publish a message matching the filter, check that only the unfiltered listener recieves it + channel.unsubscribe(messageFilter); + + const unfilteredSubscriptionReceivedNextMessagePromise = new Promise((resolve) => { + channel.subscribe(function listener() { + channel.unsubscribe(listener); + resolve(); + }); + }); + + await channel.publish(await decodeMessage({ clientId: 'someClientId' })); + await unfilteredSubscriptionReceivedNextMessagePromise; + + expect(filteredSubscriptionReceivedMessages.length).to./* (still) */ equal(1); + }); + }); + }); + }); }); } From 50f0899c9efd36f950b23110282591e93b6c6c93 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 10:01:40 -0300 Subject: [PATCH 22/32] Make sure we tear down connections in modular.test.js (My mistake when I wrote these tests.) --- test/browser/modular.test.js | 344 +++++++++++++++++++++-------------- 1 file changed, 205 insertions(+), 139 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 82e5b0698..95ddd2f65 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -37,6 +37,14 @@ function registerAblyModularTests(helper) { }); }; + async function monitorConnectionThenCloseAndFinish(action, realtime, states) { + try { + await helper.monitorConnectionAsync(action, realtime, states); + } finally { + await helper.closeAndFinishAsync(realtime); + } + } + before((done) => { helper.setupApp(done); }); @@ -159,6 +167,7 @@ function registerAblyModularTests(helper) { it(`allows you to ${scenario.description}`, async () => { const client = new BaseRealtime( ablyClientOptions({ + autoConnect: false, ...scenario.getAdditionalClientOptions?.(), plugins: { WebSocketTransport, @@ -185,23 +194,27 @@ function registerAblyModularTests(helper) { it('still allows publishing and subscribing', async () => { const client = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const channel = client.channels.get('channel'); - await channel.attach(); + await monitorConnectionThenCloseAndFinish(async () => { + const channel = client.channels.get('channel'); + await channel.attach(); - const recievedMessagePromise = new Promise((resolve) => { - channel.subscribe((message) => { - resolve(message); + const recievedMessagePromise = new Promise((resolve) => { + channel.subscribe((message) => { + resolve(message); + }); }); - }); - await channel.publish({ data: { foo: 'bar' } }); + await channel.publish({ data: { foo: 'bar' } }); - const receivedMessage = await recievedMessagePromise; - expect(receivedMessage.data).to.eql({ foo: 'bar' }); + const receivedMessage = await recievedMessagePromise; + expect(receivedMessage.data).to.eql({ foo: 'bar' }); + }, client); }); it('allows `auth.createTokenRequest()` without `queryTime` option enabled', async () => { - const client = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); + const client = new BaseRealtime( + ablyClientOptions({ autoConnect: false, plugins: { WebSocketTransport, FetchRequest } }), + ); const tokenRequest = await client.auth.createTokenRequest(); expect(tokenRequest).to.be.an('object'); @@ -211,6 +224,7 @@ function registerAblyModularTests(helper) { it(`throws an error when attempting to ${scenario.description}`, async () => { const client = new BaseRealtime( ablyClientOptions({ + autoConnect: false, ...scenario.getAdditionalClientOptions?.(), plugins: { WebSocketTransport, @@ -367,6 +381,7 @@ function registerAblyModularTests(helper) { async function testThrowsAnErrorWhenGivenChannelOptionsWithACipher(clientClassConfig) { const client = new clientClassConfig.clientClass( ablyClientOptions({ + ...clientClassConfig.additionalClientOptions, plugins: { ...clientClassConfig.additionalPlugins, FetchRequest, @@ -379,7 +394,11 @@ function registerAblyModularTests(helper) { for (const clientClassConfig of [ { clientClass: BaseRest }, - { clientClass: BaseRealtime, additionalPlugins: { WebSocketTransport } }, + { + clientClass: BaseRealtime, + additionalClientOptions: { autoConnect: false }, + additionalPlugins: { WebSocketTransport }, + }, ]) { describe(clientClassConfig.clientClass.name, () => { it('throws an error when given channel options with a cipher', async () => { @@ -398,38 +417,51 @@ function registerAblyModularTests(helper) { // Publish the message on a channel configured to use encryption, and receive it on one not configured to use encryption const rxClient = new BaseRealtime({ ...clientOptions, plugins: { WebSocketTransport, FetchRequest } }); - const rxChannel = rxClient.channels.get('channel'); - await rxChannel.attach(); - const rxMessagePromise = new Promise((resolve, _) => rxChannel.subscribe((message) => resolve(message))); + await monitorConnectionThenCloseAndFinish(async () => { + const rxChannel = rxClient.channels.get('channel'); + await rxChannel.attach(); - const encryptionChannelOptions = { cipher: { key } }; + const rxMessagePromise = new Promise((resolve, _) => rxChannel.subscribe((message) => resolve(message))); - const txMessage = { name: 'message', data: 'data' }; - const txClient = new clientClassConfig.clientClass({ - ...clientOptions, - plugins: { - ...clientClassConfig.additionalPlugins, - FetchRequest, - Crypto, - }, - }); - const txChannel = txClient.channels.get('channel', encryptionChannelOptions); - await txChannel.publish(txMessage); + const encryptionChannelOptions = { cipher: { key } }; - const rxMessage = await rxMessagePromise; + const txMessage = { name: 'message', data: 'data' }; + const txClient = new clientClassConfig.clientClass({ + ...clientOptions, + plugins: { + ...clientClassConfig.additionalPlugins, + FetchRequest, + Crypto, + }, + }); + + await (clientClassConfig.isRealtime ? monitorConnectionThenCloseAndFinish : async (op) => await op())( + async () => { + const txChannel = txClient.channels.get('channel', encryptionChannelOptions); + await txChannel.publish(txMessage); - // Verify that the message was published with encryption - expect(rxMessage.encoding).to.equal('utf-8/cipher+aes-256-cbc'); + const rxMessage = await rxMessagePromise; - // Verify that the message was correctly encrypted - const rxMessageDecrypted = await decodeEncryptedMessage(rxMessage, encryptionChannelOptions); - testMessageEquality(rxMessageDecrypted, txMessage); + // Verify that the message was published with encryption + expect(rxMessage.encoding).to.equal('utf-8/cipher+aes-256-cbc'); + + // Verify that the message was correctly encrypted + const rxMessageDecrypted = await decodeEncryptedMessage(rxMessage, encryptionChannelOptions); + testMessageEquality(rxMessageDecrypted, txMessage); + }, + txClient, + ); + }, rxClient); } for (const clientClassConfig of [ - { clientClass: BaseRest }, - { clientClass: BaseRealtime, additionalPlugins: { WebSocketTransport } }, + { clientClass: BaseRest, isRealtime: false }, + { + clientClass: BaseRealtime, + additionalPlugins: { WebSocketTransport }, + isRealtime: true, + }, ]) { describe(clientClassConfig.clientClass.name, () => { it('is able to publish encrypted messages', async () => { @@ -494,7 +526,10 @@ function registerAblyModularTests(helper) { }, }), ); - await testRealtimeUsesFormat(client, 'json'); + + await monitorConnectionThenCloseAndFinish(async () => { + await testRealtimeUsesFormat(client, 'json'); + }, client); }); }); }); @@ -528,7 +563,10 @@ function registerAblyModularTests(helper) { }, }), ); - await testRealtimeUsesFormat(client, 'msgpack'); + + await monitorConnectionThenCloseAndFinish(async () => { + await testRealtimeUsesFormat(client, 'msgpack'); + }, client); }); }); }); @@ -537,45 +575,54 @@ function registerAblyModularTests(helper) { describe('RealtimePresence', () => { describe('BaseRealtime without RealtimePresence', () => { - it('throws an error when attempting to access the `presence` property', () => { + it('throws an error when attempting to access the `presence` property', async () => { const client = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const channel = client.channels.get('channel'); - expect(() => channel.presence).to.throw('RealtimePresence plugin not provided'); + await monitorConnectionThenCloseAndFinish(async () => { + const channel = client.channels.get('channel'); + + expect(() => channel.presence).to.throw('RealtimePresence plugin not provided'); + }, client); }); it('doesn’t break when it receives a PRESENCE ProtocolMessage', async () => { const rxClient = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const rxChannel = rxClient.channels.get('channel'); - await rxChannel.attach(); + await monitorConnectionThenCloseAndFinish(async () => { + const rxChannel = rxClient.channels.get('channel'); - const receivedMessagePromise = new Promise((resolve) => rxChannel.subscribe(resolve)); + await rxChannel.attach(); - const txClient = new BaseRealtime( - ablyClientOptions({ - clientId: randomString(), - plugins: { - WebSocketTransport, - FetchRequest, - RealtimePresence, - }, - }), - ); - const txChannel = txClient.channels.get('channel'); + const receivedMessagePromise = new Promise((resolve) => rxChannel.subscribe(resolve)); + + const txClient = new BaseRealtime( + ablyClientOptions({ + clientId: randomString(), + plugins: { + WebSocketTransport, + FetchRequest, + RealtimePresence, + }, + }), + ); + + await monitorConnectionThenCloseAndFinish(async () => { + const txChannel = txClient.channels.get('channel'); - await txChannel.publish('message', 'body'); - await txChannel.presence.enter(); + await txChannel.publish('message', 'body'); + await txChannel.presence.enter(); - // The idea being here that in order for receivedMessagePromise to resolve, rxClient must have first processed the PRESENCE ProtocolMessage that resulted from txChannel.presence.enter() + // The idea being here that in order for receivedMessagePromise to resolve, rxClient must have first processed the PRESENCE ProtocolMessage that resulted from txChannel.presence.enter() - await receivedMessagePromise; + await receivedMessagePromise; + }, txClient); + }, rxClient); }); }); describe('BaseRealtime with RealtimePresence', () => { it('offers realtime presence functionality', async () => { - const rxChannel = new BaseRealtime( + const rxClient = new BaseRealtime( ablyClientOptions({ plugins: { WebSocketTransport, @@ -583,28 +630,36 @@ function registerAblyModularTests(helper) { RealtimePresence, }, }), - ).channels.get('channel'); - const txClientId = randomString(); - const txChannel = new BaseRealtime( - ablyClientOptions({ - clientId: txClientId, - plugins: { - WebSocketTransport, - FetchRequest, - RealtimePresence, - }, - }), - ).channels.get('channel'); + ); + const rxChannel = rxClient.channels.get('channel'); - let resolveRxPresenceMessagePromise; - const rxPresenceMessagePromise = new Promise((resolve, reject) => { - resolveRxPresenceMessagePromise = resolve; - }); - await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); - await txChannel.presence.enter(); + await monitorConnectionThenCloseAndFinish(async () => { + const txClientId = randomString(); + const txClient = new BaseRealtime( + ablyClientOptions({ + clientId: txClientId, + plugins: { + WebSocketTransport, + FetchRequest, + RealtimePresence, + }, + }), + ); + + await monitorConnectionThenCloseAndFinish(async () => { + const txChannel = txClient.channels.get('channel'); - const rxPresenceMessage = await rxPresenceMessagePromise; - expect(rxPresenceMessage.clientId).to.equal(txClientId); + let resolveRxPresenceMessagePromise; + const rxPresenceMessagePromise = new Promise((resolve, reject) => { + resolveRxPresenceMessagePromise = resolve; + }); + await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); + await txChannel.presence.enter(); + + const rxPresenceMessage = await rxPresenceMessagePromise; + expect(rxPresenceMessage.clientId).to.equal(txClientId); + }, txClient); + }, rxClient); }); }); }); @@ -679,20 +734,22 @@ function registerAblyModularTests(helper) { }), ); - let firstTransportCandidate; - const connectionManager = realtime.connection.connectionManager; - const originalTryATransport = connectionManager.tryATransport; - realtime.connection.connectionManager.tryATransport = (transportParams, candidate, callback) => { - if (!firstTransportCandidate) { - firstTransportCandidate = candidate; - } - originalTryATransport.bind(connectionManager)(transportParams, candidate, callback); - }; - - realtime.connect(); - - await realtime.connection.once('connected'); - expect(firstTransportCandidate).to.equal(scenario.transportName); + await monitorConnectionThenCloseAndFinish(async () => { + let firstTransportCandidate; + const connectionManager = realtime.connection.connectionManager; + const originalTryATransport = connectionManager.tryATransport; + realtime.connection.connectionManager.tryATransport = (transportParams, candidate, callback) => { + if (!firstTransportCandidate) { + firstTransportCandidate = candidate; + } + originalTryATransport.bind(connectionManager)(transportParams, candidate, callback); + }; + + realtime.connect(); + + await realtime.connection.once('connected'); + expect(firstTransportCandidate).to.equal(scenario.transportName); + }, realtime); }); }); } @@ -724,30 +781,36 @@ function registerAblyModularTests(helper) { describe('without MessageInteractions', () => { it('is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed', async () => { const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const channel = realtime.channels.get('channel'); - await channel.attach(); - const subscribeReceivedMessagePromise = new Promise((resolve) => channel.subscribe(resolve)); + await monitorConnectionThenCloseAndFinish(async () => { + const channel = realtime.channels.get('channel'); + await channel.attach(); + + const subscribeReceivedMessagePromise = new Promise((resolve) => channel.subscribe(resolve)); - await channel.publish('message', 'body'); + await channel.publish('message', 'body'); - const subscribeReceivedMessage = await subscribeReceivedMessagePromise; - expect(subscribeReceivedMessage.data).to.equal('body'); + const subscribeReceivedMessage = await subscribeReceivedMessagePromise; + expect(subscribeReceivedMessage.data).to.equal('body'); + }, realtime); }); it('throws an error when attempting to subscribe to channel events using a MessageFilter', async () => { const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - const channel = realtime.channels.get('channel'); - let thrownError = null; - try { - await channel.subscribe({ clientId: 'someClientId' }, () => {}); - } catch (error) { - thrownError = error; - } + await monitorConnectionThenCloseAndFinish(async () => { + const channel = realtime.channels.get('channel'); - expect(thrownError).not.to.be.null; - expect(thrownError.message).to.equal('MessageInteractions plugin not provided'); + let thrownError = null; + try { + await channel.subscribe({ clientId: 'someClientId' }, () => {}); + } catch (error) { + thrownError = error; + } + + expect(thrownError).not.to.be.null; + expect(thrownError.message).to.equal('MessageInteractions plugin not provided'); + }, realtime); }); }); @@ -762,50 +825,53 @@ function registerAblyModularTests(helper) { }, }), ); - const channel = realtime.channels.get('channel'); - await channel.attach(); + await monitorConnectionThenCloseAndFinish(async () => { + const channel = realtime.channels.get('channel'); - // Test `subscribe` with a filter: send two messages with different clientIds, and check that unfiltered subscription receives both messages but clientId-filtered subscription only receives the matching one. - const messageFilter = { clientId: 'someClientId' }; // note that `unsubscribe` compares filter by reference, I found that a bit surprising + await channel.attach(); - const filteredSubscriptionReceivedMessages = []; - channel.subscribe(messageFilter, (message) => { - filteredSubscriptionReceivedMessages.push(message); - }); + // Test `subscribe` with a filter: send two messages with different clientIds, and check that unfiltered subscription receives both messages but clientId-filtered subscription only receives the matching one. + const messageFilter = { clientId: 'someClientId' }; // note that `unsubscribe` compares filter by reference, I found that a bit surprising - const unfilteredSubscriptionReceivedFirstTwoMessagesPromise = new Promise((resolve) => { - const receivedMessages = []; - channel.subscribe(function listener(message) { - receivedMessages.push(message); - if (receivedMessages.length === 2) { - channel.unsubscribe(listener); - resolve(); - } + const filteredSubscriptionReceivedMessages = []; + channel.subscribe(messageFilter, (message) => { + filteredSubscriptionReceivedMessages.push(message); }); - }); - await channel.publish(await decodeMessage({ clientId: 'someClientId' })); - await channel.publish(await decodeMessage({ clientId: 'someOtherClientId' })); - await unfilteredSubscriptionReceivedFirstTwoMessagesPromise; + const unfilteredSubscriptionReceivedFirstTwoMessagesPromise = new Promise((resolve) => { + const receivedMessages = []; + channel.subscribe(function listener(message) { + receivedMessages.push(message); + if (receivedMessages.length === 2) { + channel.unsubscribe(listener); + resolve(); + } + }); + }); + + await channel.publish(await decodeMessage({ clientId: 'someClientId' })); + await channel.publish(await decodeMessage({ clientId: 'someOtherClientId' })); + await unfilteredSubscriptionReceivedFirstTwoMessagesPromise; - expect(filteredSubscriptionReceivedMessages.length).to.equal(1); - expect(filteredSubscriptionReceivedMessages[0].clientId).to.equal('someClientId'); + expect(filteredSubscriptionReceivedMessages.length).to.equal(1); + expect(filteredSubscriptionReceivedMessages[0].clientId).to.equal('someClientId'); - // Test `unsubscribe` with a filter: call `unsubscribe` with the clientId filter, publish a message matching the filter, check that only the unfiltered listener recieves it - channel.unsubscribe(messageFilter); + // Test `unsubscribe` with a filter: call `unsubscribe` with the clientId filter, publish a message matching the filter, check that only the unfiltered listener recieves it + channel.unsubscribe(messageFilter); - const unfilteredSubscriptionReceivedNextMessagePromise = new Promise((resolve) => { - channel.subscribe(function listener() { - channel.unsubscribe(listener); - resolve(); + const unfilteredSubscriptionReceivedNextMessagePromise = new Promise((resolve) => { + channel.subscribe(function listener() { + channel.unsubscribe(listener); + resolve(); + }); }); - }); - await channel.publish(await decodeMessage({ clientId: 'someClientId' })); - await unfilteredSubscriptionReceivedNextMessagePromise; + await channel.publish(await decodeMessage({ clientId: 'someClientId' })); + await unfilteredSubscriptionReceivedNextMessagePromise; - expect(filteredSubscriptionReceivedMessages.length).to./* (still) */ equal(1); + expect(filteredSubscriptionReceivedMessages.length).to./* (still) */ equal(1); + }, realtime); }); }); }); From e18f566fb537231c4a27e4066a59f064c2ec8217 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 15:07:08 -0300 Subject: [PATCH 23/32] investigate push admin test failure --- test/browser/modular.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 95ddd2f65..9d32737bc 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -22,7 +22,7 @@ import { } from '../../build/modular/index.mjs'; function registerAblyModularTests(helper) { - describe('browser/modular', function () { + describe.only('browser/modular', function () { this.timeout(10 * 1000); const expect = chai.expect; const BufferUtils = BaseRest.Platform.BufferUtils; From 562f49f2ef0ed4a9072c2048604597607b48807f Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 15:07:44 -0300 Subject: [PATCH 24/32] disable some stuff --- .github/workflows/test-browser.yml | 2 +- .github/workflows/test-node.yml | 147 ----------------------------- 2 files changed, 1 insertion(+), 148 deletions(-) delete mode 100644 .github/workflows/test-node.yml diff --git a/.github/workflows/test-browser.yml b/.github/workflows/test-browser.yml index acc724f96..131dad99b 100644 --- a/.github/workflows/test-browser.yml +++ b/.github/workflows/test-browser.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - browser: [chromium, firefox, webkit] + browser: [webkit] steps: - uses: actions/checkout@v2 with: diff --git a/.github/workflows/test-node.yml b/.github/workflows/test-node.yml deleted file mode 100644 index ec119bb79..000000000 --- a/.github/workflows/test-node.yml +++ /dev/null @@ -1,147 +0,0 @@ -name: Test NodeJS -on: - pull_request: - push: - branches: - - main - -jobs: - test-node: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - node-version: [16.x, 18.x, 20.x] - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - name: Reconfigure git to use HTTP authentication - run: > - git config --global url."https://github.com/".insteadOf - ssh://git@github.com/ - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: npm ci - - # Set up Python (for pipx) - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - # Install pipx (for mitmproxy) - # See https://pipx.pypa.io/stable/installation/ - - name: Install pipx - run: | - python3 -m pip install --user pipx - sudo pipx --global ensurepath - - # https://docs.mitmproxy.org/stable/overview-installation/#installation-from-the-python-package-index-pypi - - name: Install mitmproxy - run: | - pipx install mitmproxy - # We use this library in our addon - pipx inject mitmproxy websockets - - - name: Create a user to run the tests - run: sudo useradd --create-home ably-test-user - - - name: Create a group for sharing the working directory - run: | - sudo groupadd ably-test-users - # Add relevant users to the group - sudo usermod --append --groups ably-test-users $USER - sudo usermod --append --groups ably-test-users ably-test-user - # Give the group ownership of the working directory and everything under it... - sudo chown -R :ably-test-users . - # ...and give group members full read/write access to its contents (i.e. rw access to files, rwx access to directories) - # (We use xargs because `find` does not fail if an `exec` command fails; see https://serverfault.com/a/905039) - find . -type f -print0 | xargs -n1 -0 chmod g+rw - find . -type d -print0 | xargs -n1 -0 chmod g+rwx - # TODO understand better - # - # This is to make `npm run` work when run as ably-test-user; else it fails because of a `statx()` call on package.json: - # - # > 2024-04-17T13:08:09.1302251Z [pid 2051] statx(AT_FDCWD, `"/home/runner/work/ably-js/ably-js/package.json"`, AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7f4875ffcb40) = -1 EACCES (Permission denied) - # - # statx documentation says: - # - # > in the case of **statx**() with a pathname, execute (search) permission is required on all of the directories in _pathname_ that lead to the file. - # - # The fact that I’m having to do this probably means that I’m doing something inappropriate elsewhere. (And I don’t know what the other consequences of doing this might be.) - chmod o+x ~ - - # TODO set umask appropriately, so that new files created are readable/writable by the group - - - name: Generate mitmproxy SSL certs - run: mitmdump -s test/mitmproxy_addon_generate_certs_and_exit.py - - - name: Set up iptables rules - run: | - # The rules suggested by mitmproxy etc are aimed at intercepting _all_ the outgoing traffic on a machine. I don’t want that, given that we want to be able to run this test suite on developers’ machines in a non-invasive manner. Instead we just want to target traffic generated by the process that contains the Ably SDK, which we’ll make identifable by iptables by running that process as a specific user created for that purpose (ably-test-user). - # - # Relevant parts of iptables documentation: - # - # nat: - # > This table is consulted when a packet that creates a new connection is encountered. It consists of three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for altering locally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out). - # - # owner: - # > This module attempts to match various characteristics of the packet creator, for locally-generated packets. It is only valid in the OUTPUT chain, and even this some packets (such as ICMP ping responses) may have no owner, and hence never match. - # - # REDIRECT: - # > This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains. It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming interface (locally-generated packets are mapped to the 127.0.0.1 address). It takes one option: - # > - # > --to-ports port[-port] - # > This specifies a destination port or range of ports to use: without this, the destination port is never altered. This is only valid if the rule also specifies -p tcp or -p udp. - # - # I don’t exactly understand what the nat table means; I assume its rules apply to all _subsequent_ packets in the connection, too? - # - # So, what I expect to happen: - # - # 1. iptables rule causes default-port HTTP(S) datagram from test process to get its destination IP rewritten to 127.0.0.1, and rewrites the TCP header’s destination port to 8080 - # 2. 127.0.0.1 destination causes OS’s routing to send this datagram on the loopback interface - # 3. nature of the loopback interface means that this datagram is then received on the loopback interface - # 4. mitmproxy, listening on port 8080 (not sure how or why it uses a single port for both non-TLS and TLS traffic) receives these datagrams, and uses Host header or SNI to figure out where they were originally destined. - # - # TODO (how) do we achieve the below on macOS? I have a feeling that it’s currently just working by accident; e.g. it's because the TCP connection to the control server exists before we start mitmproxy and hence the connection doesn’t get passed to its NETransparentProxyProvider or something. To be on the safe side, though, I’ve added a check in the mitmproxy addon so that we only mess with stuff for ports 80 or 443 - # - # Note that in the current setup with ably-js, the test suite and the Ably SDK run in the same process. We want to make sure that we don’t intercept the test suite’s WebSocket communications with the interception proxy’s control API (which it serves at 127.0.0.1:8001), hence only targeting the default HTTP(S) ports. (TODO consider that Realtime team also run a Realtime on non-default ports when testing locally) - sudo iptables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 80 --jump REDIRECT --to-ports 8080 - sudo iptables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 443 --jump REDIRECT --to-ports 8080 - sudo ip6tables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 80 --jump REDIRECT --to-ports 8080 - sudo ip6tables --table nat --append OUTPUT --match owner --uid-owner ably-test-user --protocol tcp --destination-port 443 --jump REDIRECT --to-ports 8080 - - # TODO how will this behave with: - # - # 1. the WebSocket connection from test suite to control API (see above note; not a problem in this CI setup, think about it on macOS) - # 2. the WebSocket connection from mitmproxy to control API (not an issue on Linux or macOS with our current setup since we don’t intercept any traffic from mitmproxy) - # 3. the WebSocket connections that mitmproxy proxies to the interception proxy (which it sends to localhost:8002) (ditto 2) - # 4. the WebSocket connections for which interception proxy is a client (not an issue for Linux or macOS with our current setup since we don’t intercept any traffic from interception proxy) - - - name: Start interception proxy server - run: ./start-interception-proxy - - - name: Run the tests - run: sudo -u ably-test-user NODE_EXTRA_CA_CERTS=~/.mitmproxy/mitmproxy-ca-cert.pem npm run test:node - env: - CI: true - - - name: Save interception proxy server logs - if: always() - run: sudo journalctl -u ably-sdk-test-proxy.service > interception-proxy-logs.txt - - - name: Upload interception proxy server logs - if: always() - uses: actions/upload-artifact@v4 - with: - name: interception-proxy-logs-${{ matrix.node-version }} - path: interception-proxy-logs.txt - - - name: Upload test results - if: always() - uses: ably/test-observability-action@v1 - with: - server-auth: ${{ secrets.TEST_OBSERVABILITY_SERVER_AUTH_KEY }} - path: './junit' From 8b9116a8c5d6a305df769ffe861f0e7649b2495e Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 15:14:35 -0300 Subject: [PATCH 25/32] what about by itself --- test/browser/modular.test.js | 800 ----------------------------------- 1 file changed, 800 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 9d32737bc..b56d566b3 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -49,98 +49,12 @@ function registerAblyModularTests(helper) { helper.setupApp(done); }); - describe('attempting to initialize with no client options', () => { - for (const clientClass of [BaseRest, BaseRealtime]) { - describe(clientClass.name, () => { - it('throws an error', () => { - expect(() => new clientClass()).to.throw('must be initialized with a client options object'); - }); - }); - } - }); - - describe('attempting to initialize with just an API key', () => { - for (const clientClass of [BaseRest, BaseRealtime]) { - describe(clientClass.name, () => { - it('throws an error', () => { - expect(() => new clientClass('foo:bar')).to.throw( - 'cannot be initialized with just an Ably API key; you must provide a client options object with a `plugins` property', - ); - }); - }); - } - }); - - describe('attempting to initialize with just a token', () => { - for (const clientClass of [BaseRest, BaseRealtime]) { - describe(clientClass.name, () => { - it('throws an error', () => { - expect(() => new clientClass('foo')).to.throw( - 'cannot be initialized with just an Ably Token; you must provide a client options object with a `plugins` property', - ); - }); - }); - } - }); - - describe('without any plugins', () => { - for (const clientClass of [BaseRest, BaseRealtime]) { - describe(clientClass.name, () => { - it('throws an error due to the absence of an HTTP plugin', () => { - expect(() => new clientClass(ablyClientOptions())).to.throw( - 'No HTTP request plugin provided. Provide at least one of the FetchRequest or XHRRequest plugins.', - ); - }); - }); - } - }); - describe('Rest', () => { const restScenarios = [ { description: 'use push admin functionality', action: (client) => client.push.admin.publish({ clientId: 'foo' }, { data: { bar: 'baz' } }), }, - { description: 'call `time()`', action: (client) => client.time() }, - { - description: 'call `auth.createTokenRequest()` with `queryTime` option enabled', - action: (client) => - client.auth.createTokenRequest(undefined, { - key: getTestApp().keys[0].keyStr /* if passing authOptions you have to explicitly pass the key */, - queryTime: true, - }), - }, - { description: 'call `stats()`', action: (client) => client.stats() }, - { description: 'call `request(...)`', action: (client) => client.request('get', '/channels/channel', 2) }, - { - description: 'call `batchPublish(...)`', - action: (client) => client.batchPublish({ channels: ['channel'], messages: { data: { foo: 'bar' } } }), - }, - { - description: 'call `batchPresence(...)`', - action: (client) => client.batchPresence(['channel']), - }, - { - description: 'call `auth.revokeTokens(...)`', - getAdditionalClientOptions: () => { - const testApp = getTestApp(); - return { key: testApp.keys[4].keyStr /* this key has revocableTokens enabled */ }; - }, - action: (client) => client.auth.revokeTokens([{ type: 'clientId', value: 'foo' }]), - }, - { - description: 'call channel’s `history()`', - action: (client) => client.channels.get('channel').history(), - }, - { - description: 'call channel’s `presence.history()`', - additionalRealtimePlugins: { RealtimePresence }, - action: (client) => client.channels.get('channel').presence.history(), - }, - { - description: 'call channel’s `status()`', - action: (client) => client.channels.get('channel').status(), - }, ]; describe('BaseRest without explicit Rest', () => { @@ -161,720 +75,6 @@ function registerAblyModularTests(helper) { }); } }); - - describe('BaseRealtime with Rest', () => { - for (const scenario of restScenarios) { - it(`allows you to ${scenario.description}`, async () => { - const client = new BaseRealtime( - ablyClientOptions({ - autoConnect: false, - ...scenario.getAdditionalClientOptions?.(), - plugins: { - WebSocketTransport, - FetchRequest, - Rest, - ...scenario.additionalRealtimePlugins, - }, - }), - ); - - let thrownError = null; - try { - await scenario.action(client); - } catch (error) { - thrownError = error; - } - - expect(thrownError).to.be.null; - }); - } - }); - - describe('BaseRealtime without Rest', () => { - it('still allows publishing and subscribing', async () => { - const client = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - - await monitorConnectionThenCloseAndFinish(async () => { - const channel = client.channels.get('channel'); - await channel.attach(); - - const recievedMessagePromise = new Promise((resolve) => { - channel.subscribe((message) => { - resolve(message); - }); - }); - - await channel.publish({ data: { foo: 'bar' } }); - - const receivedMessage = await recievedMessagePromise; - expect(receivedMessage.data).to.eql({ foo: 'bar' }); - }, client); - }); - - it('allows `auth.createTokenRequest()` without `queryTime` option enabled', async () => { - const client = new BaseRealtime( - ablyClientOptions({ autoConnect: false, plugins: { WebSocketTransport, FetchRequest } }), - ); - - const tokenRequest = await client.auth.createTokenRequest(); - expect(tokenRequest).to.be.an('object'); - }); - - for (const scenario of restScenarios) { - it(`throws an error when attempting to ${scenario.description}`, async () => { - const client = new BaseRealtime( - ablyClientOptions({ - autoConnect: false, - ...scenario.getAdditionalClientOptions?.(), - plugins: { - WebSocketTransport, - FetchRequest, - ...scenario.additionalRealtimePlugins, - }, - }), - ); - - let thrownError = null; - try { - await scenario.action(client); - } catch (error) { - thrownError = error; - } - - expect(thrownError).not.to.be.null; - expect(thrownError.message).to.equal('Rest plugin not provided'); - }); - } - }); - }); - - describe('Crypto standalone functions', () => { - it('generateRandomKey', async () => { - const key = await generateRandomKey(); - expect(key).to.be.an('ArrayBuffer'); - }); - - it('getDefaultCryptoParams', async () => { - const key = await generateRandomKey(); - const params = getDefaultCryptoParams({ key }); - expect(params).to.be.an('object'); - }); - }); - - describe('Message standalone functions', () => { - async function testDecodesMessageData(functionUnderTest) { - const testData = await loadTestData(testResourcesPath + 'crypto-data-128.json'); - - const item = testData.items[1]; - const decoded = await functionUnderTest(item.encoded); - - expect(decoded.data).to.be.an('ArrayBuffer'); - } - - describe('decodeMessage', () => { - it('decodes a message’s data', async () => { - testDecodesMessageData(decodeMessage); - }); - - it('throws an error when given channel options with a cipher', async () => { - const testData = await loadTestData(testResourcesPath + 'crypto-data-128.json'); - const key = BufferUtils.base64Decode(testData.key); - const iv = BufferUtils.base64Decode(testData.iv); - - let thrownError = null; - try { - await decodeMessage(testData.items[0].encrypted, { cipher: { key, iv } }); - } catch (error) { - thrownError = error; - } - - expect(thrownError).not.to.be.null; - expect(thrownError.message).to.equal('Crypto plugin not provided'); - }); - }); - - describe('decodeEncryptedMessage', async () => { - it('decodes a message’s data', async () => { - testDecodesMessageData(decodeEncryptedMessage); - }); - - it('decrypts a message', async () => { - const testData = await loadTestData(testResourcesPath + 'crypto-data-128.json'); - - const key = BufferUtils.base64Decode(testData.key); - const iv = BufferUtils.base64Decode(testData.iv); - - for (const item of testData.items) { - const [decodedFromEncoded, decodedFromEncrypted] = await Promise.all([ - decodeMessage(item.encoded), - decodeEncryptedMessage(item.encrypted, { cipher: { key, iv } }), - ]); - - testMessageEquality(decodedFromEncoded, decodedFromEncrypted); - } - }); - }); - - async function testDecodesMessagesData(functionUnderTest) { - const testData = await loadTestData(testResourcesPath + 'crypto-data-128.json'); - - const items = [testData.items[1], testData.items[3]]; - const decoded = await functionUnderTest(items.map((item) => item.encoded)); - - expect(decoded[0].data).to.be.an('ArrayBuffer'); - expect(decoded[1].data).to.be.an('array'); - } - - describe('decodeMessages', () => { - it('decodes messages’ data', async () => { - testDecodesMessagesData(decodeMessages); - }); - - it('throws an error when given channel options with a cipher', async () => { - const testData = await loadTestData(testResourcesPath + 'crypto-data-128.json'); - const key = BufferUtils.base64Decode(testData.key); - const iv = BufferUtils.base64Decode(testData.iv); - - let thrownError = null; - try { - await decodeMessages( - testData.items.map((item) => item.encrypted), - { cipher: { key, iv } }, - ); - } catch (error) { - thrownError = error; - } - - expect(thrownError).not.to.be.null; - expect(thrownError.message).to.equal('Crypto plugin not provided'); - }); - }); - - describe('decodeEncryptedMessages', () => { - it('decodes messages’ data', async () => { - testDecodesMessagesData(decodeEncryptedMessages); - }); - - it('decrypts messages', async () => { - const testData = await loadTestData(testResourcesPath + 'crypto-data-128.json'); - - const key = BufferUtils.base64Decode(testData.key); - const iv = BufferUtils.base64Decode(testData.iv); - - const [decodedFromEncoded, decodedFromEncrypted] = await Promise.all([ - decodeMessages(testData.items.map((item) => item.encoded)), - decodeEncryptedMessages( - testData.items.map((item) => item.encrypted), - { cipher: { key, iv } }, - ), - ]); - - for (let i = 0; i < decodedFromEncoded.length; i++) { - testMessageEquality(decodedFromEncoded[i], decodedFromEncrypted[i]); - } - }); - }); - }); - - describe('Crypto', () => { - describe('without Crypto', () => { - async function testThrowsAnErrorWhenGivenChannelOptionsWithACipher(clientClassConfig) { - const client = new clientClassConfig.clientClass( - ablyClientOptions({ - ...clientClassConfig.additionalClientOptions, - plugins: { - ...clientClassConfig.additionalPlugins, - FetchRequest, - }, - }), - ); - const key = await generateRandomKey(); - expect(() => client.channels.get('channel', { cipher: { key } })).to.throw('Crypto plugin not provided'); - } - - for (const clientClassConfig of [ - { clientClass: BaseRest }, - { - clientClass: BaseRealtime, - additionalClientOptions: { autoConnect: false }, - additionalPlugins: { WebSocketTransport }, - }, - ]) { - describe(clientClassConfig.clientClass.name, () => { - it('throws an error when given channel options with a cipher', async () => { - await testThrowsAnErrorWhenGivenChannelOptionsWithACipher(clientClassConfig); - }); - }); - } - }); - - describe('with Crypto', () => { - async function testIsAbleToPublishEncryptedMessages(clientClassConfig) { - const clientOptions = ablyClientOptions(); - - const key = await generateRandomKey(); - - // Publish the message on a channel configured to use encryption, and receive it on one not configured to use encryption - - const rxClient = new BaseRealtime({ ...clientOptions, plugins: { WebSocketTransport, FetchRequest } }); - - await monitorConnectionThenCloseAndFinish(async () => { - const rxChannel = rxClient.channels.get('channel'); - await rxChannel.attach(); - - const rxMessagePromise = new Promise((resolve, _) => rxChannel.subscribe((message) => resolve(message))); - - const encryptionChannelOptions = { cipher: { key } }; - - const txMessage = { name: 'message', data: 'data' }; - const txClient = new clientClassConfig.clientClass({ - ...clientOptions, - plugins: { - ...clientClassConfig.additionalPlugins, - FetchRequest, - Crypto, - }, - }); - - await (clientClassConfig.isRealtime ? monitorConnectionThenCloseAndFinish : async (op) => await op())( - async () => { - const txChannel = txClient.channels.get('channel', encryptionChannelOptions); - await txChannel.publish(txMessage); - - const rxMessage = await rxMessagePromise; - - // Verify that the message was published with encryption - expect(rxMessage.encoding).to.equal('utf-8/cipher+aes-256-cbc'); - - // Verify that the message was correctly encrypted - const rxMessageDecrypted = await decodeEncryptedMessage(rxMessage, encryptionChannelOptions); - testMessageEquality(rxMessageDecrypted, txMessage); - }, - txClient, - ); - }, rxClient); - } - - for (const clientClassConfig of [ - { clientClass: BaseRest, isRealtime: false }, - { - clientClass: BaseRealtime, - additionalPlugins: { WebSocketTransport }, - isRealtime: true, - }, - ]) { - describe(clientClassConfig.clientClass.name, () => { - it('is able to publish encrypted messages', async () => { - await testIsAbleToPublishEncryptedMessages(clientClassConfig); - }); - }); - } - }); - }); - - describe('MsgPack', () => { - async function testRestUsesContentType(rest, expectedContentType) { - const channelName = 'channel'; - const channel = rest.channels.get(channelName); - const contentTypeUsedForPublishPromise = new Promise((resolve, reject) => { - rest.http.do = async (method, path, headers, body, params) => { - if (!(method == 'post' && path == `/channels/${channelName}/messages`)) { - return new Promise(() => {}); - } - resolve(headers['content-type']); - return { error: null }; - }; - }); - - await channel.publish('message', 'body'); - - const contentTypeUsedForPublish = await contentTypeUsedForPublishPromise; - expect(contentTypeUsedForPublish).to.equal(expectedContentType); - } - - async function testRealtimeUsesFormat(realtime, expectedFormat) { - const formatUsedForConnectionPromise = new Promise((resolve, reject) => { - realtime.connection.connectionManager.connectImpl = (transportParams) => { - resolve(transportParams.format); - }; - }); - realtime.connect(); - - const formatUsedForConnection = await formatUsedForConnectionPromise; - expect(formatUsedForConnection).to.equal(expectedFormat); - } - - // TODO once https://github.com/ably/ably-js/issues/1424 is fixed, this should also test the case where the useBinaryProtocol option is not specified - describe('with useBinaryProtocol client option', () => { - describe('without MsgPack', () => { - describe('BaseRest', () => { - it('uses JSON', async () => { - const client = new BaseRest(ablyClientOptions({ useBinaryProtocol: true, plugins: { FetchRequest } })); - await testRestUsesContentType(client, 'application/json'); - }); - }); - - describe('BaseRealtime', () => { - it('uses JSON', async () => { - const client = new BaseRealtime( - ablyClientOptions({ - useBinaryProtocol: true, - autoConnect: false, - plugins: { - WebSocketTransport, - FetchRequest, - }, - }), - ); - - await monitorConnectionThenCloseAndFinish(async () => { - await testRealtimeUsesFormat(client, 'json'); - }, client); - }); - }); - }); - - describe('with MsgPack', () => { - describe('BaseRest', () => { - it('uses MessagePack', async () => { - const client = new BaseRest( - ablyClientOptions({ - useBinaryProtocol: true, - plugins: { - FetchRequest, - MsgPack, - }, - }), - ); - await testRestUsesContentType(client, 'application/x-msgpack'); - }); - }); - - describe('BaseRealtime', () => { - it('uses MessagePack', async () => { - const client = new BaseRealtime( - ablyClientOptions({ - useBinaryProtocol: true, - autoConnect: false, - plugins: { - WebSocketTransport, - FetchRequest, - MsgPack, - }, - }), - ); - - await monitorConnectionThenCloseAndFinish(async () => { - await testRealtimeUsesFormat(client, 'msgpack'); - }, client); - }); - }); - }); - }); - }); - - describe('RealtimePresence', () => { - describe('BaseRealtime without RealtimePresence', () => { - it('throws an error when attempting to access the `presence` property', async () => { - const client = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - - await monitorConnectionThenCloseAndFinish(async () => { - const channel = client.channels.get('channel'); - - expect(() => channel.presence).to.throw('RealtimePresence plugin not provided'); - }, client); - }); - - it('doesn’t break when it receives a PRESENCE ProtocolMessage', async () => { - const rxClient = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - - await monitorConnectionThenCloseAndFinish(async () => { - const rxChannel = rxClient.channels.get('channel'); - - await rxChannel.attach(); - - const receivedMessagePromise = new Promise((resolve) => rxChannel.subscribe(resolve)); - - const txClient = new BaseRealtime( - ablyClientOptions({ - clientId: randomString(), - plugins: { - WebSocketTransport, - FetchRequest, - RealtimePresence, - }, - }), - ); - - await monitorConnectionThenCloseAndFinish(async () => { - const txChannel = txClient.channels.get('channel'); - - await txChannel.publish('message', 'body'); - await txChannel.presence.enter(); - - // The idea being here that in order for receivedMessagePromise to resolve, rxClient must have first processed the PRESENCE ProtocolMessage that resulted from txChannel.presence.enter() - - await receivedMessagePromise; - }, txClient); - }, rxClient); - }); - }); - - describe('BaseRealtime with RealtimePresence', () => { - it('offers realtime presence functionality', async () => { - const rxClient = new BaseRealtime( - ablyClientOptions({ - plugins: { - WebSocketTransport, - FetchRequest, - RealtimePresence, - }, - }), - ); - const rxChannel = rxClient.channels.get('channel'); - - await monitorConnectionThenCloseAndFinish(async () => { - const txClientId = randomString(); - const txClient = new BaseRealtime( - ablyClientOptions({ - clientId: txClientId, - plugins: { - WebSocketTransport, - FetchRequest, - RealtimePresence, - }, - }), - ); - - await monitorConnectionThenCloseAndFinish(async () => { - const txChannel = txClient.channels.get('channel'); - - let resolveRxPresenceMessagePromise; - const rxPresenceMessagePromise = new Promise((resolve, reject) => { - resolveRxPresenceMessagePromise = resolve; - }); - await rxChannel.presence.subscribe('enter', resolveRxPresenceMessagePromise); - await txChannel.presence.enter(); - - const rxPresenceMessage = await rxPresenceMessagePromise; - expect(rxPresenceMessage.clientId).to.equal(txClientId); - }, txClient); - }, rxClient); - }); - }); - }); - - describe('PresenceMessage standalone functions', () => { - describe('decodePresenceMessage', () => { - it('decodes a presence message’s data', async () => { - const buffer = BufferUtils.utf8Encode('foo'); - const encodedMessage = { data: BufferUtils.base64Encode(buffer), encoding: 'base64' }; - - const decodedMessage = await decodePresenceMessage(encodedMessage); - - expect(BufferUtils.areBuffersEqual(decodedMessage.data, buffer)).to.be.true; - expect(decodedMessage.encoding).to.be.null; - }); - }); - - describe('decodeMessages', () => { - it('decodes presence messages’ data', async () => { - const buffers = ['foo', 'bar'].map((data) => BufferUtils.utf8Encode(data)); - const encodedMessages = buffers.map((buffer) => ({ - data: BufferUtils.base64Encode(buffer), - encoding: 'base64', - })); - - const decodedMessages = await decodePresenceMessages(encodedMessages); - - for (let i = 0; i < decodedMessages.length; i++) { - const decodedMessage = decodedMessages[i]; - - expect(BufferUtils.areBuffersEqual(decodedMessage.data, buffers[i])).to.be.true; - expect(decodedMessage.encoding).to.be.null; - } - }); - }); - - describe('constructPresenceMessage', () => { - it('creates a PresenceMessage instance', async () => { - const extras = { foo: 'bar' }; - const presenceMessage = constructPresenceMessage({ extras }); - - expect(presenceMessage.constructor.name).to.contain('PresenceMessage'); - expect(presenceMessage.extras).to.equal(extras); - }); - }); - }); - - describe('Transports', () => { - describe('BaseRealtime', () => { - describe('without a transport plugin', () => { - it('throws an error due to absence of a transport plugin', () => { - expect(() => new BaseRealtime(ablyClientOptions({ plugins: { FetchRequest } }))).to.throw( - 'no requested transports available', - ); - }); - }); - - for (const scenario of [ - { pluginsKey: 'WebSocketTransport', transportPlugin: WebSocketTransport, transportName: 'web_socket' }, - { pluginsKey: 'XHRPolling', transportPlugin: XHRPolling, transportName: 'xhr_polling' }, - ]) { - describe(`with the ${scenario.pluginsKey} plugin`, () => { - it(`is able to use the ${scenario.transportName} transport`, async () => { - const realtime = new BaseRealtime( - ablyClientOptions({ - autoConnect: false, - transports: [scenario.transportName], - plugins: { - FetchRequest, - [scenario.pluginsKey]: scenario.transportPlugin, - }, - }), - ); - - await monitorConnectionThenCloseAndFinish(async () => { - let firstTransportCandidate; - const connectionManager = realtime.connection.connectionManager; - const originalTryATransport = connectionManager.tryATransport; - realtime.connection.connectionManager.tryATransport = (transportParams, candidate, callback) => { - if (!firstTransportCandidate) { - firstTransportCandidate = candidate; - } - originalTryATransport.bind(connectionManager)(transportParams, candidate, callback); - }; - - realtime.connect(); - - await realtime.connection.once('connected'); - expect(firstTransportCandidate).to.equal(scenario.transportName); - }, realtime); - }); - }); - } - }); - }); - - describe('HTTP request implementations', () => { - describe('with multiple HTTP request implementations', () => { - it('prefers XHR', async () => { - let usedXHR = false; - - const XHRRequestSpy = class XHRRequestSpy extends XHRRequest { - static createRequest(...args) { - usedXHR = true; - return super.createRequest(...args); - } - }; - - const rest = new BaseRest(ablyClientOptions({ plugins: { FetchRequest, XHRRequest: XHRRequestSpy } })); - await rest.time(); - - expect(usedXHR).to.be.true; - }); - }); - }); - - describe('MessageInteractions', () => { - describe('BaseRealtime', () => { - describe('without MessageInteractions', () => { - it('is able to subscribe to and unsubscribe from channel events, as long as a MessageFilter isn’t passed', async () => { - const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - - await monitorConnectionThenCloseAndFinish(async () => { - const channel = realtime.channels.get('channel'); - await channel.attach(); - - const subscribeReceivedMessagePromise = new Promise((resolve) => channel.subscribe(resolve)); - - await channel.publish('message', 'body'); - - const subscribeReceivedMessage = await subscribeReceivedMessagePromise; - expect(subscribeReceivedMessage.data).to.equal('body'); - }, realtime); - }); - - it('throws an error when attempting to subscribe to channel events using a MessageFilter', async () => { - const realtime = new BaseRealtime(ablyClientOptions({ plugins: { WebSocketTransport, FetchRequest } })); - - await monitorConnectionThenCloseAndFinish(async () => { - const channel = realtime.channels.get('channel'); - - let thrownError = null; - try { - await channel.subscribe({ clientId: 'someClientId' }, () => {}); - } catch (error) { - thrownError = error; - } - - expect(thrownError).not.to.be.null; - expect(thrownError.message).to.equal('MessageInteractions plugin not provided'); - }, realtime); - }); - }); - - describe('with MessageInteractions', () => { - it('can take a MessageFilter argument when subscribing to and unsubscribing from channel events', async () => { - const realtime = new BaseRealtime( - ablyClientOptions({ - plugins: { - WebSocketTransport, - FetchRequest, - MessageInteractions, - }, - }), - ); - - await monitorConnectionThenCloseAndFinish(async () => { - const channel = realtime.channels.get('channel'); - - await channel.attach(); - - // Test `subscribe` with a filter: send two messages with different clientIds, and check that unfiltered subscription receives both messages but clientId-filtered subscription only receives the matching one. - const messageFilter = { clientId: 'someClientId' }; // note that `unsubscribe` compares filter by reference, I found that a bit surprising - - const filteredSubscriptionReceivedMessages = []; - channel.subscribe(messageFilter, (message) => { - filteredSubscriptionReceivedMessages.push(message); - }); - - const unfilteredSubscriptionReceivedFirstTwoMessagesPromise = new Promise((resolve) => { - const receivedMessages = []; - channel.subscribe(function listener(message) { - receivedMessages.push(message); - if (receivedMessages.length === 2) { - channel.unsubscribe(listener); - resolve(); - } - }); - }); - - await channel.publish(await decodeMessage({ clientId: 'someClientId' })); - await channel.publish(await decodeMessage({ clientId: 'someOtherClientId' })); - await unfilteredSubscriptionReceivedFirstTwoMessagesPromise; - - expect(filteredSubscriptionReceivedMessages.length).to.equal(1); - expect(filteredSubscriptionReceivedMessages[0].clientId).to.equal('someClientId'); - - // Test `unsubscribe` with a filter: call `unsubscribe` with the clientId filter, publish a message matching the filter, check that only the unfiltered listener recieves it - channel.unsubscribe(messageFilter); - - const unfilteredSubscriptionReceivedNextMessagePromise = new Promise((resolve) => { - channel.subscribe(function listener() { - channel.unsubscribe(listener); - resolve(); - }); - }); - - await channel.publish(await decodeMessage({ clientId: 'someClientId' })); - await unfilteredSubscriptionReceivedNextMessagePromise; - - expect(filteredSubscriptionReceivedMessages.length).to./* (still) */ equal(1); - }, realtime); - }); - }); - }); }); }); } From 1e761cc6d24d07c4be4a7317e42aef9e5720a280 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 15:20:39 -0300 Subject: [PATCH 26/32] whats the error --- test/browser/modular.test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index b56d566b3..5ae90164e 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -64,14 +64,14 @@ function registerAblyModularTests(helper) { ablyClientOptions({ ...scenario.getAdditionalClientOptions?.(), plugins: { FetchRequest } }), ); - let thrownError = null; - try { + //let thrownError = null; + //try { await scenario.action(client); - } catch (error) { - thrownError = error; - } + //} catch (error) { + //thrownError = error; + //} - expect(thrownError).to.be.null; + //expect(thrownError).to.be.null; }); } }); From 5b44bd3f5ce9b46f35414754de2d97db730c4a2a Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 15:26:40 -0300 Subject: [PATCH 27/32] Revert "whats the error" This reverts commit 1e761cc6d24d07c4be4a7317e42aef9e5720a280. --- test/browser/modular.test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 5ae90164e..b56d566b3 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -64,14 +64,14 @@ function registerAblyModularTests(helper) { ablyClientOptions({ ...scenario.getAdditionalClientOptions?.(), plugins: { FetchRequest } }), ); - //let thrownError = null; - //try { + let thrownError = null; + try { await scenario.action(client); - //} catch (error) { - //thrownError = error; - //} + } catch (error) { + thrownError = error; + } - //expect(thrownError).to.be.null; + expect(thrownError).to.be.null; }); } }); From 04eb10b5b8670b083d327d0885c1b011bfb46e68 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 15:28:14 -0300 Subject: [PATCH 28/32] print stack --- test/browser/modular.test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index b56d566b3..4de6f3b44 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -68,6 +68,7 @@ function registerAblyModularTests(helper) { try { await scenario.action(client); } catch (error) { + console.log('thrownError:', error, 'stack', error.stack); thrownError = error; } From e7ef8ac3ba24fba03f192d2e934536287ad2dd7e Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 18:14:43 -0300 Subject: [PATCH 29/32] why is it responding with content-type in ci but not locally? --- proxy_log_local.txt | 29 +++++++++++++++++++++++++++++ proxy_logs_ci.txt | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 proxy_log_local.txt create mode 100644 proxy_logs_ci.txt diff --git a/proxy_log_local.txt b/proxy_log_local.txt new file mode 100644 index 000000000..09dc89f7c --- /dev/null +++ b/proxy_log_local.txt @@ -0,0 +1,29 @@ +mitmdump stdout: 127.0.0.1:50971: POST https://sandbox-rest.ably.io/push/publish? HTTP/2.0 +mitmdump stdout: content-type: application/json +mitmdump stdout: x-ably-version: 3 +mitmdump stdout: accept: application/json +mitmdump stdout: authorization: Basic X3RtcF9YRDVaTFEudXp4dmZnOmZmVWxMc0NiWlFDb0ZtWUJlcnd1UEdVSlEyYUtXZ0xHZ1VoT2lMM0ZGZGc= +mitmdump stdout: ably-agent: ably-js/2.0.4 browser +mitmdump stdout: sec-fetch-site: cross-site +mitmdump stdout: accept-language: en-GB,en;q=0.9 +mitmdump stdout: accept-encoding: gzip, deflate, br +mitmdump stdout: sec-fetch-mode: cors +mitmdump stdout: origin: http://localhost:3000 +mitmdump stdout: user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 +mitmdump stdout: referer: http://localhost:3000/ +mitmdump stdout: content-length: 53 +mitmdump stdout: sec-fetch-dest: empty +mitmdump stdout: << HTTP/2.0 204 No Content 0b +mitmdump stdout: access-control-allow-credentials: true +mitmdump stdout: access-control-allow-origin: http://localhost:3000 +mitmdump stdout: access-control-expose-headers: Link,Transfer-Encoding,Content-Length,X-Ably-ErrorCode,X-Ably-ErrorMessage,X-Ably-ServerId,X-Ably- +Cluster,Server,X-Amz-Cf-Pop +mitmdump stdout: date: Mon, 20 May 2024 18:26:02 GMT +mitmdump stdout: vary: Origin +mitmdump stdout: x-ably-cluster: sandbox +mitmdump stdout: x-ably-serverid: frontend.73d8.2.us-east-1-A.i-066e977a6354e9fc9.e7dP0rioQBc6w9 +mitmdump stdout: x-robots-tag: noindex +mitmdump stdout: x-cache: Miss from cloudfront +mitmdump stdout: via: 1.1 3ed656b86a7abb29b14e84aa169ffd38.cloudfront.net (CloudFront) +mitmdump stdout: x-amz-cf-pop: GRU3-P1 +mitmdump stdout: x-amz-cf-id: jAbmUv9lIL30McB9sRu0Rj3uF2FQK-0m-1YyyPPyMfee5Qv8UiM_lA== \ No newline at end of file diff --git a/proxy_logs_ci.txt b/proxy_logs_ci.txt new file mode 100644 index 000000000..3f577d811 --- /dev/null +++ b/proxy_logs_ci.txt @@ -0,0 +1,32 @@ +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: [::1]:59016: POST https://sandbox-rest.ably.io/push/publish? +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Accept: application/json +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Authorization: Basic X3RtcF84Uk8xWHcuYmRjdkxROnRQVjVUVU0wS0JodzA2RHhjZDFONEhLWGJhNzc5eEVGZ0tDaTlnd1pOSFE= +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Content-Type: application/json +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Origin: http://localhost:3000 +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Referer: http://localhost:3000/ +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Content-Length: 53 +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Accept-Encoding: gzip, deflate, br +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Accept-Language: en-US +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Connection: Keep-Alive +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Host: sandbox-rest.ably.io +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Sec-Fetch-Dest: empty +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Sec-Fetch-Mode: cors +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Sec-Fetch-Site: cross-site +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: ably-agent: ably-js/2.0.4 browser +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: x-ably-version: 3 +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: << 204 No Content 0b +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Content-Type: application/json +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Connection: keep-alive +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Access-Control-Allow-Credentials: true +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Access-Control-Allow-Origin: http://localhost:3000 +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Access-Control-Expose-Headers: Link,Transfer-Encoding,Content-Length,X-Ably-ErrorCode,X-Ably-ErrorMessage,X-Ably-ServerId,X-Ably-Cluster,Server,X-Amz-Cf-Pop +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Date: Mon, 20 May 2024 18:33:54 GMT +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Vary: Origin +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Ably-Cluster: sandbox +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Ably-Serverid: frontend.78f9.2.us-east-1-A.i-00779d1f5c358a4cb.e7d2mt9CABc6uE +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Robots-Tag: noindex +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Cache: Miss from cloudfront +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Via: 1.1 a57d2f9cdddfdb2c5779462e97c9c00c.cloudfront.net (CloudFront) +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Amz-Cf-Pop: IAD12-P4 +May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Amz-Cf-Id: B9aJu-OhzaodONjjgI9R5xX7TVNSjb0BKDgsuPVjxNsGnP_Y_sXXiA== \ No newline at end of file From 7d04326f66615a6e88e2a80ad581a5b2a3a00240 Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Mon, 20 May 2024 18:27:59 -0300 Subject: [PATCH 30/32] sort headers --- proxy_log_local.txt | 28 ++++++++++---------- proxy_logs_ci.txt | 64 ++++++++++++++++++++++----------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/proxy_log_local.txt b/proxy_log_local.txt index 09dc89f7c..1390e2f98 100644 --- a/proxy_log_local.txt +++ b/proxy_log_local.txt @@ -1,29 +1,29 @@ mitmdump stdout: 127.0.0.1:50971: POST https://sandbox-rest.ably.io/push/publish? HTTP/2.0 -mitmdump stdout: content-type: application/json -mitmdump stdout: x-ably-version: 3 -mitmdump stdout: accept: application/json -mitmdump stdout: authorization: Basic X3RtcF9YRDVaTFEudXp4dmZnOmZmVWxMc0NiWlFDb0ZtWUJlcnd1UEdVSlEyYUtXZ0xHZ1VoT2lMM0ZGZGc= mitmdump stdout: ably-agent: ably-js/2.0.4 browser -mitmdump stdout: sec-fetch-site: cross-site -mitmdump stdout: accept-language: en-GB,en;q=0.9 mitmdump stdout: accept-encoding: gzip, deflate, br -mitmdump stdout: sec-fetch-mode: cors +mitmdump stdout: accept-language: en-GB,en;q=0.9 +mitmdump stdout: accept: application/json +mitmdump stdout: authorization: Basic X3RtcF9YRDVaTFEudXp4dmZnOmZmVWxMc0NiWlFDb0ZtWUJlcnd1UEdVSlEyYUtXZ0xHZ1VoT2lMM0ZGZGc= +mitmdump stdout: content-length: 53 +mitmdump stdout: content-type: application/json mitmdump stdout: origin: http://localhost:3000 -mitmdump stdout: user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 mitmdump stdout: referer: http://localhost:3000/ -mitmdump stdout: content-length: 53 mitmdump stdout: sec-fetch-dest: empty +mitmdump stdout: sec-fetch-mode: cors +mitmdump stdout: sec-fetch-site: cross-site +mitmdump stdout: user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 +mitmdump stdout: x-ably-version: 3 mitmdump stdout: << HTTP/2.0 204 No Content 0b +Cluster,Server,X-Amz-Cf-Pop mitmdump stdout: access-control-allow-credentials: true mitmdump stdout: access-control-allow-origin: http://localhost:3000 mitmdump stdout: access-control-expose-headers: Link,Transfer-Encoding,Content-Length,X-Ably-ErrorCode,X-Ably-ErrorMessage,X-Ably-ServerId,X-Ably- -Cluster,Server,X-Amz-Cf-Pop mitmdump stdout: date: Mon, 20 May 2024 18:26:02 GMT mitmdump stdout: vary: Origin +mitmdump stdout: via: 1.1 3ed656b86a7abb29b14e84aa169ffd38.cloudfront.net (CloudFront) mitmdump stdout: x-ably-cluster: sandbox mitmdump stdout: x-ably-serverid: frontend.73d8.2.us-east-1-A.i-066e977a6354e9fc9.e7dP0rioQBc6w9 -mitmdump stdout: x-robots-tag: noindex -mitmdump stdout: x-cache: Miss from cloudfront -mitmdump stdout: via: 1.1 3ed656b86a7abb29b14e84aa169ffd38.cloudfront.net (CloudFront) +mitmdump stdout: x-amz-cf-id: jAbmUv9lIL30McB9sRu0Rj3uF2FQK-0m-1YyyPPyMfee5Qv8UiM_lA== mitmdump stdout: x-amz-cf-pop: GRU3-P1 -mitmdump stdout: x-amz-cf-id: jAbmUv9lIL30McB9sRu0Rj3uF2FQK-0m-1YyyPPyMfee5Qv8UiM_lA== \ No newline at end of file +mitmdump stdout: x-cache: Miss from cloudfront +mitmdump stdout: x-robots-tag: noindex diff --git a/proxy_logs_ci.txt b/proxy_logs_ci.txt index 3f577d811..bfbe8db7a 100644 --- a/proxy_logs_ci.txt +++ b/proxy_logs_ci.txt @@ -1,32 +1,32 @@ -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: [::1]:59016: POST https://sandbox-rest.ably.io/push/publish? -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Accept: application/json -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Authorization: Basic X3RtcF84Uk8xWHcuYmRjdkxROnRQVjVUVU0wS0JodzA2RHhjZDFONEhLWGJhNzc5eEVGZ0tDaTlnd1pOSFE= -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Content-Type: application/json -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Origin: http://localhost:3000 -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Referer: http://localhost:3000/ -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Content-Length: 53 -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Accept-Encoding: gzip, deflate, br -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Accept-Language: en-US -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Connection: Keep-Alive -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Host: sandbox-rest.ably.io -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Sec-Fetch-Dest: empty -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Sec-Fetch-Mode: cors -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Sec-Fetch-Site: cross-site -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: ably-agent: ably-js/2.0.4 browser -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: x-ably-version: 3 -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: << 204 No Content 0b -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Content-Type: application/json -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Connection: keep-alive -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Access-Control-Allow-Credentials: true -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Access-Control-Allow-Origin: http://localhost:3000 -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Access-Control-Expose-Headers: Link,Transfer-Encoding,Content-Length,X-Ably-ErrorCode,X-Ably-ErrorMessage,X-Ably-ServerId,X-Ably-Cluster,Server,X-Amz-Cf-Pop -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Date: Mon, 20 May 2024 18:33:54 GMT -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Vary: Origin -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Ably-Cluster: sandbox -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Ably-Serverid: frontend.78f9.2.us-east-1-A.i-00779d1f5c358a4cb.e7d2mt9CABc6uE -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Robots-Tag: noindex -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Cache: Miss from cloudfront -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: Via: 1.1 a57d2f9cdddfdb2c5779462e97c9c00c.cloudfront.net (CloudFront) -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Amz-Cf-Pop: IAD12-P4 -May 20 18:33:54 fv-az778-673 npm[2749]: mitmdump stdout: X-Amz-Cf-Id: B9aJu-OhzaodONjjgI9R5xX7TVNSjb0BKDgsuPVjxNsGnP_Y_sXXiA== \ No newline at end of file +mitmdump stdout: [::1]:59016: POST https://sandbox-rest.ably.io/push/publish? +mitmdump stdout: ably-agent: ably-js/2.0.4 browser +mitmdump stdout: Accept-Encoding: gzip, deflate, br +mitmdump stdout: Accept-Language: en-US +mitmdump stdout: Accept: application/json +mitmdump stdout: Authorization: Basic X3RtcF84Uk8xWHcuYmRjdkxROnRQVjVUVU0wS0JodzA2RHhjZDFONEhLWGJhNzc5eEVGZ0tDaTlnd1pOSFE= +mitmdump stdout: Connection: Keep-Alive +mitmdump stdout: Content-Length: 53 +mitmdump stdout: Content-Type: application/json +mitmdump stdout: Host: sandbox-rest.ably.io +mitmdump stdout: Origin: http://localhost:3000 +mitmdump stdout: Referer: http://localhost:3000/ +mitmdump stdout: Sec-Fetch-Dest: empty +mitmdump stdout: Sec-Fetch-Mode: cors +mitmdump stdout: Sec-Fetch-Site: cross-site +mitmdump stdout: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 +mitmdump stdout: x-ably-version: 3 +mitmdump stdout: << 204 No Content 0b +mitmdump stdout: Access-Control-Allow-Credentials: true +mitmdump stdout: Access-Control-Allow-Origin: http://localhost:3000 +mitmdump stdout: Access-Control-Expose-Headers: Link,Transfer-Encoding,Content-Length,X-Ably-ErrorCode,X-Ably-ErrorMessage,X-Ably-ServerId,X-Ably-Cluster,Server,X-Amz-Cf-Pop +mitmdump stdout: Connection: keep-alive +mitmdump stdout: Content-Type: application/json +mitmdump stdout: Date: Mon, 20 May 2024 18:33:54 GMT +mitmdump stdout: Vary: Origin +mitmdump stdout: Via: 1.1 a57d2f9cdddfdb2c5779462e97c9c00c.cloudfront.net (CloudFront) +mitmdump stdout: X-Ably-Cluster: sandbox +mitmdump stdout: X-Ably-Serverid: frontend.78f9.2.us-east-1-A.i-00779d1f5c358a4cb.e7d2mt9CABc6uE +mitmdump stdout: X-Amz-Cf-Id: B9aJu-OhzaodONjjgI9R5xX7TVNSjb0BKDgsuPVjxNsGnP_Y_sXXiA== +mitmdump stdout: X-Amz-Cf-Pop: IAD12-P4 +mitmdump stdout: X-Cache: Miss from cloudfront +mitmdump stdout: X-Robots-Tag: noindex From e07fbd2a7080fc0d04a7851c0a566634f800c0bd Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Tue, 21 May 2024 09:37:15 -0300 Subject: [PATCH 31/32] capture packetds --- .github/workflows/test-browser.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-browser.yml b/.github/workflows/test-browser.yml index 131dad99b..8d283222e 100644 --- a/.github/workflows/test-browser.yml +++ b/.github/workflows/test-browser.yml @@ -72,10 +72,23 @@ jobs: sudo cp ~/.mitmproxy/mitmproxy-ca-cert.cer /usr/local/share/ca-certificates/mitmproxy-ca-cert.crt sudo update-ca-certificates + - name: Install tcpdump + run: sudo apt-get install tcpdump + - name: Run the tests env: PLAYWRIGHT_BROWSER: ${{ matrix.browser }} - run: npm run test:playwright + run: | + sudo tcpdump -i any -nn -w packet-capture.pcap & + npm run test:playwright + sudo pkill tcpdump + + - name: Upload packet capture + if: always() + uses: actions/upload-artifact@v4 + with: + name: packet-capture-${{ matrix.browser }}.pcap + path: packet-capture.pcap - name: Save interception proxy server logs if: always() From 2adfd24948cd65a05208ed53e0402d336f9f73ea Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Tue, 21 May 2024 09:49:01 -0300 Subject: [PATCH 32/32] does the test fail with tls off? --- test/browser/modular.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/modular.test.js b/test/browser/modular.test.js index 4de6f3b44..d836cef97 100644 --- a/test/browser/modular.test.js +++ b/test/browser/modular.test.js @@ -61,7 +61,7 @@ function registerAblyModularTests(helper) { for (const scenario of restScenarios) { it(`allows you to ${scenario.description}`, async () => { const client = new BaseRest( - ablyClientOptions({ ...scenario.getAdditionalClientOptions?.(), plugins: { FetchRequest } }), + ablyClientOptions({ ...scenario.getAdditionalClientOptions?.(), plugins: { FetchRequest }, tls: false }), ); let thrownError = null;

*m79A;$gaD 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