@amplitude/plugin-session-replay-browser 1.26.2 → 1.26.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/index-min.js +1 -1
- package/lib/scripts/index-min.js.gz +0 -0
- package/lib/scripts/index-min.js.map +1 -1
- package/lib/scripts/observers-min.js +1 -1
- package/lib/scripts/observers-min.js.gz +0 -0
- package/lib/scripts/observers-min.js.map +1 -1
- package/lib/scripts/plugin-session-replay-browser-min.js +1 -1
- package/lib/scripts/plugin-session-replay-browser-min.js.gz +0 -0
- package/lib/scripts/plugin-session-replay-browser-min.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as t,a as e,g as n}from"./index-min.js";var r=function(){function
|
|
1
|
+
import{_ as t,a as e,g as n}from"./index-min.js";var o=["image/","audio/","video/","application/octet-stream","font/"];function r(t,e){if(new Blob([t]).size<=e)return{value:t,truncated:!1};for(var n=0,o=Math.min(t.length,e);n<o;){var r=Math.ceil((n+o)/2);new Blob([t.slice(0,r)]).size<=e?n=r:o=r-1}return n>0&&t.charCodeAt(n-1)>=55296&&t.charCodeAt(n-1)<=56319&&(n-=1),{value:t.slice(0,n),truncated:!0}}var i=function(){function i(){this.fetchObserver=null}return i.prototype.start=function(t,e){this.eventCallback=t,this.networkConfig=e,this.observeFetch()},i.prototype.stop=function(){var t;null===(t=this.fetchObserver)||void 0===t||t.call(this),this.fetchObserver=null,this.eventCallback=void 0,this.networkConfig=void 0},i.prototype.notifyEvent=function(t){var e;null===(e=this.eventCallback)||void 0===e||e.call(this,t)},i.prototype.observeFetch=function(){var i=this,s=n();if(s){var a=s.fetch;a&&(s.fetch=function(n,s){return t(i,void 0,void 0,function(){var t,i,u,c,l,f,h,v,d,p,y,m,b=this;return e(this,function(e){switch(e.label){case 0:t=Date.now(),i={timestamp:t,type:"fetch",method:(null==s?void 0:s.method)||"GET",url:n.toString(),requestHeaders:null==s?void 0:s.headers},(null==(u=null===(y=this.networkConfig)||void 0===y?void 0:y.body)?void 0:u.request)&&void 0!==(c=function(t){if(null!=t){if("string"==typeof t)return t;if(t instanceof URLSearchParams)return t.toString();if(t instanceof FormData){var e=[];return t.forEach(function(t,n){e.push("".concat(n,"=").concat("string"==typeof t?t:"[File]"))}),e.join("&")}}}(null==s?void 0:s.body))&&(l=null!==(m=u.maxBodySizeBytes)&&void 0!==m?m:10240,i.requestBody=r(c,l).value),e.label=1;case 1:return e.trys.push([1,3,,4]),[4,a(n,s)];case 2:return f=e.sent(),d=Date.now(),i.status=f.status,i.duration=d-t,h={},f.headers.forEach(function(t,e){h[e]=t}),i.responseHeaders=h,(null==u?void 0:u.response)?!function(t){return!!t&&o.some(function(e){return t.toLowerCase().startsWith(e)})}(h["content-type"]||null)?f.clone().text().then(function(t){var e,n=r(t,null!==(e=u.maxBodySizeBytes)&&void 0!==e?e:10240),o=n.value,s=n.truncated;i.responseBody=o,i.responseBodyStatus=s?"truncated":"captured",b.notifyEvent(i)},function(){i.responseBodyStatus="error",b.notifyEvent(i)}):(i.responseBodyStatus="skipped_binary",this.notifyEvent(i)):this.notifyEvent(i),[2,f];case 3:throw v=e.sent(),d=Date.now(),i.duration=d-t,p=v,i.error={name:p.name||"UnknownError",message:p.message||"An unknown error occurred"},this.notifyEvent(i),v;case 4:return[2]}})})},this.fetchObserver=function(){s.fetch=a})}},i}();export{i as NetworkObservers};
|
|
2
2
|
//# sourceMappingURL=observers-min.js.map
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observers-min.js","sources":["../../../session-replay-browser/lib/esm/observers.js"],"sourcesContent":["import { __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '@amplitude/analytics-core';\nvar NetworkObservers = /** @class */ (function () {\n function NetworkObservers() {\n this.fetchObserver = null;\n }\n NetworkObservers.prototype.start = function (eventCallback) {\n this.eventCallback = eventCallback;\n this.observeFetch();\n };\n NetworkObservers.prototype.stop = function () {\n var _a;\n (_a = this.fetchObserver) === null || _a === void 0 ? void 0 : _a.call(this);\n this.fetchObserver = null;\n this.eventCallback = undefined;\n };\n NetworkObservers.prototype.notifyEvent = function (event) {\n var _a;\n (_a = this.eventCallback) === null || _a === void 0 ? void 0 : _a.call(this, event);\n };\n NetworkObservers.prototype.observeFetch = function () {\n var _this = this;\n var globalScope = getGlobalScope();\n if (!globalScope)\n return;\n var originalFetch = globalScope.fetch;\n if (!originalFetch)\n return;\n globalScope.fetch = function (input, init) { return __awaiter(_this, void 0, void 0, function () {\n var startTime, requestEvent, response, endTime, headers_1, error_1, endTime, typedError;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n startTime = Date.now();\n requestEvent = {\n timestamp: startTime,\n type: 'fetch',\n method: (init === null || init === void 0 ? void 0 : init.method) || 'GET',\n url: input.toString(),\n requestHeaders: init === null || init === void 0 ? void 0 : init.headers,\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, originalFetch(input, init)];\n case 2:\n response = _a.sent();\n endTime = Date.now();\n requestEvent.status = response.status;\n requestEvent.duration = endTime - startTime;\n headers_1 = {};\n response.headers.forEach(function (value, key) {\n headers_1[key] = value;\n });\n requestEvent.responseHeaders = headers_1;\n this.notifyEvent(requestEvent);\n return [2 /*return*/, response];\n case 3:\n error_1 = _a.sent();\n endTime = Date.now();\n requestEvent.duration = endTime - startTime;\n typedError = error_1;\n requestEvent.error = {\n name: typedError.name || 'UnknownError',\n message: typedError.message || 'An unknown error occurred',\n };\n this.notifyEvent(requestEvent);\n throw error_1;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.fetchObserver = function () {\n globalScope.fetch = originalFetch;\n };\n };\n return NetworkObservers;\n}());\nexport { NetworkObservers };\n//# sourceMappingURL=observers.js.map"],"names":["NetworkObservers","this","fetchObserver","prototype","start","eventCallback","observeFetch","stop","_a","call","undefined","notifyEvent","event","_this","globalScope","getGlobalScope","originalFetch","fetch","input","init","__awaiter","startTime","requestEvent","response","headers_1","error_1","endTime","typedError","__generator","label","Date","now","timestamp","type","method","url","toString","requestHeaders","headers","trys","push","sent","status","duration","forEach","value","key","responseHeaders","error","name","message"],"mappings":"iDAEG,IAACA,EAAkC,WAClC,SAASA,IACLC,KAAKC,cAAgB,IACxB,CAuED,OAtEAF,EAAiBG,UAAUC,MAAQ,SAAUC,GACzCJ,KAAKI,cAAgBA,EACrBJ,KAAKK,cACb,EACIN,EAAiBG,UAAUI,KAAO,WAC9B,IAAIC,EAC0B,QAA7BA,EAAKP,KAAKC,qBAAkC,IAAPM,GAAyBA,EAAGC,KAAKR,MACvEA,KAAKC,cAAgB,KACrBD,KAAKI,mBAAgBK,CAC7B,EACIV,EAAiBG,UAAUQ,YAAc,SAAUC,GAC/C,IAAIJ,EAC0B,QAA7BA,EAAKP,KAAKI,qBAAkC,IAAPG,GAAyBA,EAAGC,KAAKR,KAAMW,EACrF,EACIZ,EAAiBG,UAAUG,aAAe,WACtC,IAAIO,EAAQZ,KACRa,EAAcC,IAClB,GAAKD,EAAL,CAEA,IAAIE,EAAgBF,EAAYG,MAC3BD,IAELF,EAAYG,MAAQ,SAAUC,EAAOC,GAAQ,OAAOC,EAAUP,OAAO,OAAQ,EAAQ,WACjF,IAAIQ,EAAWC,EAAcC,EAAmBC,EAAWC,EAASC,EAASC,EAC7E,OAAOC,EAAY3B,KAAM,SAAUO,GAC/B,OAAQA,EAAGqB,OACP,KAAK,EACDR,EAAYS,KAAKC,MACjBT,EAAe,CACXU,UAAWX,EACXY,KAAM,QACNC,QAASf,aAAmC,EAASA,EAAKe,SAAW,MACrEC,IAAKjB,EAAMkB,WACXC,eAAgBlB,aAAmC,EAASA,EAAKmB,SAErE9B,EAAGqB,MAAQ,EACf,KAAK,EAED,OADArB,EAAG+B,KAAKC,KAAK,CAAC,EAAG,EAAC,CAAI,IACf,CAAC,EAAaxB,EAAcE,EAAOC,IAC9C,KAAK,EAWD,OAVAI,EAAWf,EAAGiC,OACdf,EAAUI,KAAKC,MACfT,EAAaoB,OAASnB,EAASmB,OAC/BpB,EAAaqB,SAAWjB,EAAUL,EAClCG,EAAY,CAAA,EACZD,EAASe,QAAQM,QAAQ,SAAUC,EAAOC,GACtCtB,EAAUsB,GAAOD,CAC7C,GACwBvB,EAAayB,gBAAkBvB,EAC/BvB,KAAKU,YAAYW,GACV,CAAC,EAAcC,GAC1B,KAAK,EAUD,MATAE,EAAUjB,EAAGiC,OACbf,EAAUI,KAAKC,MACfT,EAAaqB,SAAWjB,EAAUL,EAClCM,EAAaF,EACbH,EAAa0B,MAAQ,CACjBC,KAAMtB,EAAWsB,MAAQ,eACzBC,QAASvB,EAAWuB,SAAW,6BAEnCjD,KAAKU,YAAYW,GACXG,EACV,KAAK,EAAG,MAAO,CAAC,GAEpC,EACS,EAAE,EACHxB,KAAKC,cAAgB,WACjBY,EAAYG,MAAQD,CAChC,EAlDmB,CAmDnB,EACWhB,CACX"}
|
|
1
|
+
{"version":3,"file":"observers-min.js","sources":["../../../session-replay-browser/lib/esm/observers.js"],"sourcesContent":["import { __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '@amplitude/analytics-core';\nvar DEFAULT_MAX_BODY_SIZE_BYTES = 10240; // 10KB\nvar BINARY_CONTENT_TYPE_PREFIXES = ['image/', 'audio/', 'video/', 'application/octet-stream', 'font/'];\nfunction isBinaryContentType(contentType) {\n if (!contentType)\n return false;\n return BINARY_CONTENT_TYPE_PREFIXES.some(function (prefix) { return contentType.toLowerCase().startsWith(prefix); });\n}\nfunction serializeRequestBody(body) {\n if (body === null || body === undefined)\n return undefined;\n if (typeof body === 'string')\n return body;\n if (body instanceof URLSearchParams)\n return body.toString();\n if (body instanceof FormData) {\n var parts_1 = [];\n body.forEach(function (value, key) {\n parts_1.push(\"\".concat(key, \"=\").concat(typeof value === 'string' ? value : '[File]'));\n });\n return parts_1.join('&');\n }\n // Blob, ArrayBuffer, ArrayBufferView, ReadableStream — skip\n return undefined;\n}\nfunction truncateToByteLimit(str, maxBytes) {\n if (new Blob([str]).size <= maxBytes) {\n return { value: str, truncated: false };\n }\n // Binary search for the longest prefix whose UTF-8 byte length fits within maxBytes.\n // Cap hi at maxBytes since each UTF-8 character is at least 1 byte, so no more than\n // maxBytes characters can ever fit — this avoids large intermediate Blob allocations.\n var lo = 0;\n var hi = Math.min(str.length, maxBytes);\n while (lo < hi) {\n var mid = Math.ceil((lo + hi) / 2);\n if (new Blob([str.slice(0, mid)]).size <= maxBytes) {\n lo = mid;\n }\n else {\n hi = mid - 1;\n }\n }\n // Avoid splitting a surrogate pair: if lo landed after a high surrogate, back up one position\n if (lo > 0 && str.charCodeAt(lo - 1) >= 0xd800 && str.charCodeAt(lo - 1) <= 0xdbff) {\n lo -= 1;\n }\n return { value: str.slice(0, lo), truncated: true };\n}\nvar NetworkObservers = /** @class */ (function () {\n function NetworkObservers() {\n this.fetchObserver = null;\n }\n NetworkObservers.prototype.start = function (eventCallback, networkConfig) {\n this.eventCallback = eventCallback;\n this.networkConfig = networkConfig;\n this.observeFetch();\n };\n NetworkObservers.prototype.stop = function () {\n var _a;\n (_a = this.fetchObserver) === null || _a === void 0 ? void 0 : _a.call(this);\n this.fetchObserver = null;\n this.eventCallback = undefined;\n this.networkConfig = undefined;\n };\n NetworkObservers.prototype.notifyEvent = function (event) {\n var _a;\n (_a = this.eventCallback) === null || _a === void 0 ? void 0 : _a.call(this, event);\n };\n NetworkObservers.prototype.observeFetch = function () {\n var _this = this;\n var globalScope = getGlobalScope();\n if (!globalScope)\n return;\n var originalFetch = globalScope.fetch;\n if (!originalFetch)\n return;\n globalScope.fetch = function (input, init) { return __awaiter(_this, void 0, void 0, function () {\n var startTime, requestEvent, bodyConfig, serialized, maxBytes, response, endTime, headers_1, contentType, cloned, error_1, endTime, typedError;\n var _this = this;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n startTime = Date.now();\n requestEvent = {\n timestamp: startTime,\n type: 'fetch',\n method: (init === null || init === void 0 ? void 0 : init.method) || 'GET',\n url: input.toString(),\n requestHeaders: init === null || init === void 0 ? void 0 : init.headers,\n };\n bodyConfig = (_a = this.networkConfig) === null || _a === void 0 ? void 0 : _a.body;\n if (bodyConfig === null || bodyConfig === void 0 ? void 0 : bodyConfig.request) {\n serialized = serializeRequestBody(init === null || init === void 0 ? void 0 : init.body);\n if (serialized !== undefined) {\n maxBytes = (_b = bodyConfig.maxBodySizeBytes) !== null && _b !== void 0 ? _b : DEFAULT_MAX_BODY_SIZE_BYTES;\n requestEvent.requestBody = truncateToByteLimit(serialized, maxBytes).value;\n }\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, originalFetch(input, init)];\n case 2:\n response = _c.sent();\n endTime = Date.now();\n requestEvent.status = response.status;\n requestEvent.duration = endTime - startTime;\n headers_1 = {};\n response.headers.forEach(function (value, key) {\n headers_1[key] = value;\n });\n requestEvent.responseHeaders = headers_1;\n if (bodyConfig === null || bodyConfig === void 0 ? void 0 : bodyConfig.response) {\n contentType = headers_1['content-type'] || null;\n if (isBinaryContentType(contentType)) {\n requestEvent.responseBodyStatus = 'skipped_binary';\n this.notifyEvent(requestEvent);\n }\n else {\n cloned = response.clone();\n // Read body without blocking the response return to the caller\n cloned.text().then(function (text) {\n var _a;\n var maxBytes = (_a = bodyConfig.maxBodySizeBytes) !== null && _a !== void 0 ? _a : DEFAULT_MAX_BODY_SIZE_BYTES;\n var _b = truncateToByteLimit(text, maxBytes), value = _b.value, truncated = _b.truncated;\n requestEvent.responseBody = value;\n requestEvent.responseBodyStatus = truncated ? 'truncated' : 'captured';\n _this.notifyEvent(requestEvent);\n }, function () {\n requestEvent.responseBodyStatus = 'error';\n _this.notifyEvent(requestEvent);\n });\n }\n }\n else {\n this.notifyEvent(requestEvent);\n }\n return [2 /*return*/, response];\n case 3:\n error_1 = _c.sent();\n endTime = Date.now();\n requestEvent.duration = endTime - startTime;\n typedError = error_1;\n requestEvent.error = {\n name: typedError.name || 'UnknownError',\n message: typedError.message || 'An unknown error occurred',\n };\n this.notifyEvent(requestEvent);\n throw error_1;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.fetchObserver = function () {\n globalScope.fetch = originalFetch;\n };\n };\n return NetworkObservers;\n}());\nexport { NetworkObservers };\n//# sourceMappingURL=observers.js.map"],"names":["BINARY_CONTENT_TYPE_PREFIXES","truncateToByteLimit","str","maxBytes","Blob","size","value","truncated","lo","hi","Math","min","length","mid","ceil","slice","charCodeAt","NetworkObservers","this","fetchObserver","prototype","start","eventCallback","networkConfig","observeFetch","stop","_a","call","undefined","notifyEvent","event","_this","globalScope","getGlobalScope","originalFetch","fetch","input","init","__awaiter","startTime","requestEvent","bodyConfig","serialized","response","headers_1","error_1","endTime","typedError","_b","__generator","_c","label","Date","now","timestamp","type","method","url","toString","requestHeaders","headers","body","request","URLSearchParams","FormData","parts_1","forEach","key","push","concat","join","serializeRequestBody","maxBodySizeBytes","requestBody","trys","sent","status","duration","responseHeaders","contentType","some","prefix","toLowerCase","startsWith","isBinaryContentType","clone","text","then","responseBody","responseBodyStatus","error","name","message"],"mappings":"iDAEA,IACIA,EAA+B,CAAC,SAAU,SAAU,SAAU,2BAA4B,SAuB9F,SAASC,EAAoBC,EAAKC,GAC9B,GAAI,IAAIC,KAAK,CAACF,IAAMG,MAAQF,EACxB,MAAO,CAAEG,MAAOJ,EAAKK,WAAW,GAOpC,IAFA,IAAIC,EAAK,EACLC,EAAKC,KAAKC,IAAIT,EAAIU,OAAQT,GACvBK,EAAKC,GAAI,CACZ,IAAII,EAAMH,KAAKI,MAAMN,EAAKC,GAAM,GAC5B,IAAIL,KAAK,CAACF,EAAIa,MAAM,EAAGF,KAAOR,MAAQF,EACtCK,EAAKK,EAGLJ,EAAKI,EAAM,CAElB,CAKD,OAHIL,EAAK,GAAKN,EAAIc,WAAWR,EAAK,IAAM,OAAUN,EAAIc,WAAWR,EAAK,IAAM,QACxEA,GAAM,GAEH,CAAEF,MAAOJ,EAAIa,MAAM,EAAGP,GAAKD,WAAW,EACjD,CACG,IAACU,EAAkC,WAClC,SAASA,IACLC,KAAKC,cAAgB,IACxB,CA2GD,OA1GAF,EAAiBG,UAAUC,MAAQ,SAAUC,EAAeC,GACxDL,KAAKI,cAAgBA,EACrBJ,KAAKK,cAAgBA,EACrBL,KAAKM,cACb,EACIP,EAAiBG,UAAUK,KAAO,WAC9B,IAAIC,EAC0B,QAA7BA,EAAKR,KAAKC,qBAAkC,IAAPO,GAAyBA,EAAGC,KAAKT,MACvEA,KAAKC,cAAgB,KACrBD,KAAKI,mBAAgBM,EACrBV,KAAKK,mBAAgBK,CAC7B,EACIX,EAAiBG,UAAUS,YAAc,SAAUC,GAC/C,IAAIJ,EAC0B,QAA7BA,EAAKR,KAAKI,qBAAkC,IAAPI,GAAyBA,EAAGC,KAAKT,KAAMY,EACrF,EACIb,EAAiBG,UAAUI,aAAe,WACtC,IAAIO,EAAQb,KACRc,EAAcC,IAClB,GAAKD,EAAL,CAEA,IAAIE,EAAgBF,EAAYG,MAC3BD,IAELF,EAAYG,MAAQ,SAAUC,EAAOC,GAAQ,OAAOC,EAAUP,OAAO,OAAQ,EAAQ,WACjF,IAAIQ,EAAWC,EAAcC,EAAYC,EAAYvC,EAAUwC,EAAmBC,EAAgCC,EAASC,EAASC,EAEhIrB,EAAIsB,EADJjB,EAAQb,KAEZ,OAAO+B,EAAY/B,KAAM,SAAUgC,GAC/B,OAAQA,EAAGC,OACP,KAAK,EACDZ,EAAYa,KAAKC,MACjBb,EAAe,CACXc,UAAWf,EACXgB,KAAM,QACNC,QAASnB,aAAmC,EAASA,EAAKmB,SAAW,MACrEC,IAAKrB,EAAMsB,WACXC,eAAgBtB,aAAmC,EAASA,EAAKuB,UAGjEnB,OADJA,EAA2C,QAA7Bf,EAAKR,KAAKK,qBAAkC,IAAPG,OAAgB,EAASA,EAAGmC,WAC5B,EAASpB,EAAWqB,eAEhDlC,KADnBc,EAtF5B,SAA8BmB,GAC1B,GAAIA,QAAJ,CAEA,GAAoB,iBAATA,EACP,OAAOA,EACX,GAAIA,aAAgBE,gBAChB,OAAOF,EAAKH,WAChB,GAAIG,aAAgBG,SAAU,CAC1B,IAAIC,EAAU,GAId,OAHAJ,EAAKK,QAAQ,SAAU5D,EAAO6D,GAC1BF,EAAQG,KAAK,GAAGC,OAAOF,EAAK,KAAKE,OAAwB,iBAAV/D,EAAqBA,EAAQ,UACxF,GACe2D,EAAQK,KAAK,IACvB,CAXmB,CAcxB,CAsEyCC,CAAqBlC,aAAmC,EAASA,EAAKwB,SAE/E1D,EAAkD,QAAtC6C,EAAKP,EAAW+B,wBAAqC,IAAPxB,EAAgBA,EA/FxE,MAgGFR,EAAaiC,YAAcxE,EAAoByC,EAAYvC,GAAUG,OAG7E4C,EAAGC,MAAQ,EACf,KAAK,EAED,OADAD,EAAGwB,KAAKN,KAAK,CAAC,EAAG,EAAC,CAAI,IACf,CAAC,EAAalC,EAAcE,EAAOC,IAC9C,KAAK,EAmCD,OAlCAM,EAAWO,EAAGyB,OACd7B,EAAUM,KAAKC,MACfb,EAAaoC,OAASjC,EAASiC,OAC/BpC,EAAaqC,SAAW/B,EAAUP,EAClCK,EAAY,CAAA,EACZD,EAASiB,QAAQM,QAAQ,SAAU5D,EAAO6D,GACtCvB,EAAUuB,GAAO7D,CAC7C,GACwBkC,EAAasC,gBAAkBlC,GAC3BH,aAA+C,EAASA,EAAWE,WA/G/F,SAA6BoC,GACzB,QAAKA,GAEE/E,EAA6BgF,KAAK,SAAUC,GAAU,OAAOF,EAAYG,cAAcC,WAAWF,EAAU,EACvH,CA6GgCG,CADUxC,EAAU,iBAAmB,MAM9BD,EAAS0C,QAEXC,OAAOC,KAAK,SAAUD,GACzB,IAAI5D,EAEAsB,EAAK/C,EAAoBqF,EADyB,QAAtC5D,EAAKe,EAAW+B,wBAAqC,IAAP9C,EAAgBA,EA5HhF,OA6HgDpB,EAAQ0C,EAAG1C,MAAOC,EAAYyC,EAAGzC,UAC/EiC,EAAagD,aAAelF,EAC5BkC,EAAaiD,mBAAqBlF,EAAY,YAAc,WAC5DwB,EAAMF,YAAYW,EACtD,EAAmC,WACCA,EAAaiD,mBAAqB,QAClC1D,EAAMF,YAAYW,EACtD,IAhBgCA,EAAaiD,mBAAqB,iBAClCvE,KAAKW,YAAYW,IAmBrBtB,KAAKW,YAAYW,GAEd,CAAC,EAAcG,GAC1B,KAAK,EAUD,MATAE,EAAUK,EAAGyB,OACb7B,EAAUM,KAAKC,MACfb,EAAaqC,SAAW/B,EAAUP,EAClCQ,EAAaF,EACbL,EAAakD,MAAQ,CACjBC,KAAM5C,EAAW4C,MAAQ,eACzBC,QAAS7C,EAAW6C,SAAW,6BAEnC1E,KAAKW,YAAYW,GACXK,EACV,KAAK,EAAG,MAAO,CAAC,GAEpC,EACS,EAAE,EACH3B,KAAKC,cAAgB,WACjBa,EAAYG,MAAQD,CAChC,EApFmB,CAqFnB,EACWjB,CACX"}
|