autotel-subscribers 16.0.1 → 17.0.0
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/dist/amplitude.cjs +64 -64
- package/dist/amplitude.cjs.map +1 -1
- package/dist/amplitude.js +64 -64
- package/dist/amplitude.js.map +1 -1
- package/dist/factories.cjs +348 -249
- package/dist/factories.cjs.map +1 -1
- package/dist/factories.js +348 -249
- package/dist/factories.js.map +1 -1
- package/dist/index.cjs +348 -249
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +348 -249
- package/dist/index.js.map +1 -1
- package/dist/posthog.cjs +284 -185
- package/dist/posthog.cjs.map +1 -1
- package/dist/posthog.js +284 -185
- package/dist/posthog.js.map +1 -1
- package/package.json +12 -12
- package/src/segment.test.ts +1 -0
package/dist/amplitude.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/event/event.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/constants.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/valid-properties.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/identify.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/messages.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/status.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/result-builder.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/global-scope.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/uuid.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/timeline.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/event-builder.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/return-wrapper.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/core-client.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/revenue.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/chunk.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/loglevel.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/logger.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/config.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/status-code.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/utils/debug.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/plugins/destination.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/transports/base.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/server-zone.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/types/offline.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.35.2/node_modules/@amplitude/analytics-core/src/index.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/version.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/plugins/context.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/transports/http.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/config.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/node-client.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/types.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.31/node_modules/@amplitude/analytics-node/src/index.ts","../src/amplitude.ts"],"names":["d","b","__assign","IdentifyOperation","SpecialEventType","Identify","Status","_a","Timeline","plugin","e","_b","identify","groupIdentify","revenue","AmplitudeCore","Revenue","RevenueProperty","LogLevel","Logger","Config","RequestMetadata","Destination","BaseTransport","ServerZone","Context","Http","http","https","chunk","NodeConfig","init_config","AmplitudeNode","init_esm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,SAAA,CAAU,GAAG,CAAA,EAAG;AAC9B,EAAA,IAAI,OAAO,CAAA,KAAM,UAAA,IAAc,CAAA,KAAM,IAAA;AACjC,IAAA,MAAM,IAAI,SAAA,CAAU,sBAAA,GAAyB,MAAA,CAAO,CAAC,IAAI,+BAA+B,CAAA;AAC5F,EAAA,aAAA,CAAc,GAAG,CAAC,CAAA;AAClB,EAAA,SAAS,EAAA,GAAK;AAAE,IAAA,IAAA,CAAK,WAAA,GAAc,CAAA;AAAA,EAAG;AACtC,EAAA,CAAA,CAAE,SAAA,GAAY,CAAA,KAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA,CAAG,SAAA,GAAY,CAAA,CAAE,SAAA,EAAW,IAAI,EAAA,EAAG,CAAA;AACpF;AAaO,SAAS,MAAA,CAAO,GAAG,CAAA,EAAG;AAC3B,EAAA,IAAI,IAAI,EAAC;AACT,EAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,IAAI,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,IAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA;AAC9E,IAAA,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA;AACd,EAAA,IAAI,CAAA,IAAK,IAAA,IAAQ,OAAO,MAAA,CAAO,qBAAA,KAA0B,UAAA;AACrD,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,qBAAA,CAAsB,CAAC,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAA,EAAK;AACpE,MAAA,IAAI,CAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,CAAC,CAAC,CAAA,GAAI,CAAA,IAAK,MAAA,CAAO,SAAA,CAAU,oBAAA,CAAqB,IAAA,CAAK,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACzE,QAAA,CAAA,CAAE,EAAE,CAAC,CAAC,IAAI,CAAA,CAAE,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,IACxB;AACJ,EAAA,OAAO,CAAA;AACT;AA8DO,SAAS,SAAA,CAAU,OAAA,EAAS,UAAA,EAAY,CAAA,EAAG,SAAA,EAAW;AAC3D,EAAA,SAAS,MAAM,KAAA,EAAO;AAAE,IAAA,OAAO,iBAAiB,CAAA,GAAI,KAAA,GAAQ,IAAI,CAAA,CAAE,SAAU,OAAA,EAAS;AAAE,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IAAG,CAAC,CAAA;AAAA,EAAG;AAC3G,EAAA,OAAO,KAAK,CAAA,KAAM,CAAA,GAAI,OAAA,CAAA,EAAU,SAAU,SAAS,MAAA,EAAQ;AACvD,IAAA,SAAS,UAAU,KAAA,EAAO;AAAE,MAAA,IAAI;AAAE,QAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,MAAG,SAAS,CAAA,EAAG;AAAE,QAAA,MAAA,CAAO,CAAC,CAAA;AAAA,MAAG;AAAA,IAAE;AAC1F,IAAA,SAAS,SAAS,KAAA,EAAO;AAAE,MAAA,IAAI;AAAE,QAAA,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,MAAG,SAAS,CAAA,EAAG;AAAE,QAAA,MAAA,CAAO,CAAC,CAAA;AAAA,MAAG;AAAA,IAAE;AAC7F,IAAA,SAAS,KAAK,MAAA,EAAQ;AAAE,MAAA,MAAA,CAAO,IAAA,GAAO,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA,CAAE,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAA;AAAA,IAAG;AAC7G,IAAA,IAAA,CAAA,CAAM,SAAA,GAAY,UAAU,KAAA,CAAM,OAAA,EAAuB,EAAE,CAAA,EAAG,IAAA,EAAM,CAAA;AAAA,EACxE,CAAC,CAAA;AACH;AAEO,SAAS,WAAA,CAAY,SAAS,IAAA,EAAM;AACzC,EAAA,IAAI,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,EAAG,MAAM,WAAW;AAAE,IAAA,IAAI,EAAE,CAAC,CAAA,GAAI,CAAA,EAAG,MAAM,EAAE,CAAC,CAAA;AAAG,IAAA,OAAO,EAAE,CAAC,CAAA;AAAA,EAAG,GAAG,IAAA,EAAM,IAAI,GAAA,EAAK,IAAG,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,GAAI,OAAO,MAAA,CAAA,CAAQ,OAAO,aAAa,UAAA,GAAa,QAAA,GAAW,QAAQ,SAAS,CAAA;AAC/L,EAAA,OAAO,CAAA,CAAE,IAAA,GAAO,IAAA,CAAK,CAAC,CAAA,EAAG,EAAE,OAAO,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,CAAE,QAAQ,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,EAAG,OAAO,MAAA,KAAW,eAAe,CAAA,CAAE,MAAA,CAAO,QAAQ,CAAA,GAAI,WAAW;AAAE,IAAA,OAAO,IAAA;AAAA,EAAM,CAAA,CAAA,EAAI,CAAA;AAC1J,EAAA,SAAS,KAAK,CAAA,EAAG;AAAE,IAAA,OAAO,SAAU,CAAA,EAAG;AAAE,MAAA,OAAO,IAAA,CAAK,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,IAAG,CAAA;AAAA,EAAG;AACjE,EAAA,SAAS,KAAK,EAAA,EAAI;AACd,IAAA,IAAI,CAAA,EAAG,MAAM,IAAI,SAAA,CAAU,iCAAiC,CAAA;AAC5D,IAAA,OAAO,CAAA,KAAM,IAAI,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA,KAAM,CAAA,GAAI,CAAA,CAAA,CAAA,EAAK,CAAA,EAAG,IAAI;AAC1C,MAAA,IAAI,IAAI,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,EAAA,CAAG,CAAC,CAAA,GAAI,CAAA,GAAI,CAAA,CAAE,QAAQ,IAAI,EAAA,CAAG,CAAC,IAAI,CAAA,CAAE,OAAO,OAAO,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,KAAM,EAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,CAAA,GAAK,EAAE,IAAA,CAAA,IAAS,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,KAAK,CAAA,EAAG,EAAA,CAAG,CAAC,CAAC,CAAA,EAAG,MAAM,OAAO,CAAA;AAC3J,MAAA,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,EAAG,EAAA,GAAK,CAAC,GAAG,CAAC,CAAA,GAAI,CAAA,EAAG,CAAA,CAAE,KAAK,CAAA;AACtC,MAAA,QAAQ,EAAA,CAAG,CAAC,CAAA;AAAG,QACX,KAAK,CAAA;AAAA,QAAG,KAAK,CAAA;AAAG,UAAA,CAAA,GAAI,EAAA;AAAI,UAAA;AAAA,QACxB,KAAK,CAAA;AAAG,UAAA,CAAA,CAAE,KAAA,EAAA;AAAS,UAAA,OAAO,EAAE,KAAA,EAAO,EAAA,CAAG,CAAC,CAAA,EAAG,MAAM,KAAA,EAAM;AAAA,QACtD,KAAK,CAAA;AAAG,UAAA,CAAA,CAAE,KAAA,EAAA;AAAS,UAAA,CAAA,GAAI,GAAG,CAAC,CAAA;AAAG,UAAA,EAAA,GAAK,CAAC,CAAC,CAAA;AAAG,UAAA;AAAA,QACxC,KAAK,CAAA;AAAG,UAAA,EAAA,GAAK,CAAA,CAAE,IAAI,GAAA,EAAI;AAAG,UAAA,CAAA,CAAE,KAAK,GAAA,EAAI;AAAG,UAAA;AAAA,QACxC;AACI,UAAA,IAAI,EAAE,IAAI,CAAA,CAAE,IAAA,EAAM,IAAI,CAAA,CAAE,MAAA,GAAS,KAAK,CAAA,CAAE,CAAA,CAAE,SAAS,CAAC,CAAA,CAAA,KAAO,GAAG,CAAC,CAAA,KAAM,KAAK,EAAA,CAAG,CAAC,MAAM,CAAA,CAAA,EAAI;AAAE,YAAA,CAAA,GAAI,CAAA;AAAG,YAAA;AAAA,UAAU;AAC3G,UAAA,IAAI,GAAG,CAAC,CAAA,KAAM,CAAA,KAAM,CAAC,KAAM,EAAA,CAAG,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA,CAAG,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,CAAA,EAAK;AAAE,YAAA,CAAA,CAAE,KAAA,GAAQ,GAAG,CAAC,CAAA;AAAG,YAAA;AAAA,UAAO;AACrF,UAAA,IAAI,EAAA,CAAG,CAAC,CAAA,KAAM,CAAA,IAAK,EAAE,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,EAAG;AAAE,YAAA,CAAA,CAAE,KAAA,GAAQ,EAAE,CAAC,CAAA;AAAG,YAAA,CAAA,GAAI,EAAA;AAAI,YAAA;AAAA,UAAO;AACpE,UAAA,IAAI,CAAA,IAAK,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,EAAG;AAAE,YAAA,CAAA,CAAE,KAAA,GAAQ,EAAE,CAAC,CAAA;AAAG,YAAA,CAAA,CAAE,GAAA,CAAI,KAAK,EAAE,CAAA;AAAG,YAAA;AAAA,UAAO;AAClE,UAAA,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,IAAI,GAAA,EAAI;AACpB,UAAA,CAAA,CAAE,KAAK,GAAA,EAAI;AAAG,UAAA;AAAA;AAEtB,MAAA,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS,CAAC,CAAA;AAAA,IAC7B,SAAS,CAAA,EAAG;AAAE,MAAA,EAAA,GAAK,CAAC,GAAG,CAAC,CAAA;AAAG,MAAA,CAAA,GAAI,CAAA;AAAA,IAAG,CAAA,SAAE;AAAU,MAAA,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,IAAG;AACzD,IAAA,IAAI,GAAG,CAAC,CAAA,GAAI,CAAA,EAAG,MAAM,GAAG,CAAC,CAAA;AAAG,IAAA,OAAO,EAAE,KAAA,EAAO,EAAA,CAAG,CAAC,CAAA,GAAI,GAAG,CAAC,CAAA,GAAI,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAK;AAAA,EACnF;AACF;AAkBO,SAAS,SAAS,CAAA,EAAG;AAC1B,EAAA,IAAI,CAAA,GAAI,OAAO,MAAA,KAAW,UAAA,IAAc,MAAA,CAAO,QAAA,EAAU,CAAA,GAAI,CAAA,IAAK,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA,GAAI,CAAA;AAC5E,EAAA,IAAI,CAAA,EAAG,OAAO,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA;AACtB,EAAA,IAAI,CAAA,IAAK,OAAO,CAAA,CAAE,MAAA,KAAW,UAAU,OAAO;AAAA,IAC1C,MAAM,WAAY;AACd,MAAA,IAAI,CAAA,IAAK,CAAA,IAAK,CAAA,CAAE,MAAA,EAAQ,CAAA,GAAI,MAAA;AAC5B,MAAA,OAAO,EAAE,OAAO,CAAA,IAAK,CAAA,CAAE,GAAG,CAAA,EAAG,IAAA,EAAM,CAAC,CAAA,EAAE;AAAA,IAC1C;AAAA,GACJ;AACA,EAAA,MAAM,IAAI,SAAA,CAAU,CAAA,GAAI,yBAAA,GAA4B,iCAAiC,CAAA;AACvF;AAEO,SAAS,MAAA,CAAO,GAAG,CAAA,EAAG;AAC3B,EAAA,IAAI,IAAI,OAAO,MAAA,KAAW,UAAA,IAAc,CAAA,CAAE,OAAO,QAAQ,CAAA;AACzD,EAAA,IAAI,CAAC,GAAG,OAAO,CAAA;AACf,EAAA,IAAI,CAAA,GAAI,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,EAAG,EAAA,GAAK,EAAC,EAAG,CAAA;AAC/B,EAAA,IAAI;AACA,IAAA,OAAA,CAAQ,CAAA,KAAM,KAAA,CAAA,IAAU,CAAA,EAAA,GAAM,CAAA,KAAM,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,IAAA,EAAK,EAAG,IAAA,EAAM,EAAA,CAAG,IAAA,CAAK,EAAE,KAAK,CAAA;AAAA,EAC7E,SACO,KAAA,EAAO;AAAE,IAAA,CAAA,GAAI,EAAE,KAAA,EAAa;AAAA,EAAG,CAAA,SACtC;AACI,IAAA,IAAI;AACA,MAAA,IAAI,CAAA,IAAK,CAAC,CAAA,CAAE,IAAA,KAAS,CAAA,GAAI,EAAE,QAAQ,CAAA,CAAA,EAAI,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA;AAAA,IACnD,CAAA,SACA;AAAU,MAAA,IAAI,CAAA,QAAS,CAAA,CAAE,KAAA;AAAA,IAAO;AAAA,EACpC;AACA,EAAA,OAAO,EAAA;AACT;AAkBO,SAAS,aAAA,CAAc,EAAA,EAAI,IAAA,EAAM,IAAA,EAAM;AAC5C,EAAA,IAAY,SAAA,CAAU,MAAA,KAAW,CAAA,EAAG,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,EAAQ,EAAA,EAAI,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AACjF,IAAA,IAAI,EAAA,IAAM,EAAE,CAAA,IAAK,IAAA,CAAA,EAAO;AACpB,MAAA,IAAI,CAAC,IAAI,EAAA,GAAK,KAAA,CAAM,UAAU,KAAA,CAAM,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,CAAC,CAAA;AACnD,MAAA,EAAA,CAAG,CAAC,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA;AAAA,IAClB;AAAA,EACJ;AACA,EAAA,OAAO,EAAA,CAAG,OAAO,EAAA,IAAM,KAAA,CAAM,UAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AACzD;AA7NA,IAgBI,aAAA,EAeO,QAAA;AA/BX,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uEAAA,GAAA;AAgBA,IAAI,aAAA,GAAgB,SAAS,CAAA,EAAG,CAAA,EAAG;AACjC,MAAA,aAAA,GAAgB,MAAA,CAAO,cAAA,IAClB,EAAE,SAAA,EAAW,IAAG,YAAa,KAAA,IAAS,SAAUA,EAAAA,EAAGC,EAAAA,EAAG;AAAE,QAAAD,GAAE,SAAA,GAAYC,EAAAA;AAAA,MAAG,CAAA,IAC1E,SAAUD,EAAAA,EAAGC,EAAAA,EAAG;AAAE,QAAA,KAAA,IAAS,CAAA,IAAKA,EAAAA,EAAG,IAAI,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAKA,EAAAA,EAAG,CAAC,GAAGD,EAAAA,CAAE,CAAC,CAAA,GAAIC,GAAE,CAAC,CAAA;AAAA,MAAG,CAAA;AACpG,MAAA,OAAO,aAAA,CAAc,GAAG,CAAC,CAAA;AAAA,IAC3B,CAAA;AAUO,IAAI,WAAW,WAAW;AAC/B,MAAA,QAAA,GAAW,MAAA,CAAO,MAAA,IAAU,SAASC,SAAAA,CAAS,CAAA,EAAG;AAC7C,QAAA,KAAA,IAAS,CAAA,EAAG,IAAI,CAAA,EAAG,CAAA,GAAI,UAAU,MAAA,EAAQ,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AACjD,UAAA,CAAA,GAAI,UAAU,CAAC,CAAA;AACf,UAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,IAAI,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA;AAAA,QAC/E;AACA,QAAA,OAAO,CAAA;AAAA,MACX,CAAA;AACA,MAAA,OAAO,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAA,IACvC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrCA,IAAY,iBAAA,EA8FA,gBAAA;AA9FZ,IAAA,UAAA,GAAA,KAAA,CAAA;;AAAA,IAAA,CAAA,SAAYC,kBAAAA,EAAiB;AAE3B,MAAAA,kBAAAA,CAAA,KAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAGA,MAAAA,kBAAAA,CAAA,KAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,SAAA;AACA,MAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,SAAA;AAGA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AACA,MAAAA,kBAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AAGA,MAAAA,kBAAAA,CAAA,OAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;IACF,CAAA,EAlBY,iBAAA,KAAA,iBAAA,GAAiB,EAAA,CAAA,CAAA;AA8F7B,IAAA,CAAA,SAAYC,iBAAAA,EAAgB;AAC1B,MAAAA,iBAAAA,CAAA,UAAA,CAAA,GAAA,WAAA;AACA,MAAAA,iBAAAA,CAAA,gBAAA,CAAA,GAAA,gBAAA;AACA,MAAAA,iBAAAA,CAAA,SAAA,CAAA,GAAA,gBAAA;IACF,CAAA,EAJY,gBAAA,KAAA,gBAAA,GAAgB,EAAA,CAAA,CAAA;;;;;AC/F5B,IAAa,aACA,gBAAA,EACA,cAAA,EACA,qBAAA,EACA,oBAAA,EACA,yBACA,0BAAA,EACA,6BAAA;AAPb,IAAA,cAAA,GAAA,KAAA,CAAA;;AAAO,IAAM,WAAA,GAAc,GAAA;AACpB,IAAM,gBAAA,GAAmB,KAAA;AACzB,IAAM,cAAA,GAAiB,EAAA,CAAA,MAAA,CAAG,gBAAA,EAAgB,SAAA,CAAA;AAC1C,IAAM,qBAAA,GAAwB,mBAAA;AAC9B,IAAM,oBAAA,GAAuB,sCAAA;AAC7B,IAAM,uBAAA,GAA0B,wCAAA;AAChC,IAAM,0BAAA,GAA6B,kCAAA;AACnC,IAAM,6BAAA,GAAgC,oCAAA;;;;;ACTvC,IAAA,iBAAA,EAEO,aAAA,EAYA,iBAAA;;;;AAdb,IAAM,iBAAA,GAAoB,GAAA;AAEnB,IAAM,aAAA,GAAgB,SAAC,UAAA,EAAkC;AAC9D,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,iBAAA,EAAmB;AACtD,QAAA,OAAO,KAAA;;AAET,MAAA,KAAA,IAAW,OAAO,UAAA,EAAY;AAE5B,QAAA,IAAM,KAAA,GAAQ,WAAW,GAAG,CAAA;AAC5B,QAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,EAAK,KAAK,CAAA;AAAG,UAAA,OAAO,KAAA;;AAE7C,MAAA,OAAO,IAAA;AACT,IAAA,CAAA;AAEO,IAAM,iBAAA,GAAoB,SAAC,QAAA,EAAkB,KAAA,EAAU;;AAC5D,MAAA,IAAI,OAAO,QAAA,KAAa,QAAA;AAAU,QAAA,OAAO,KAAA;AACzC,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,QAAA,IAAI,OAAA,GAAU,IAAA;;AACd,UAAA,KAAA,IAA2B,OAAA,GAAA,QAAA,CAAA,KAAK,CAAA,EAAA,YAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,SAAA,CAAA,IAAA,EAAA,SAAA,GAAA,OAAA,CAAA,MAAA,EAAE;AAA7B,YAAA,IAAM,eAAY,SAAA,CAAA,KAAA;AACrB,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/B,cAAA,OAAO,KAAA;AACE,YAAA,CAAA,MAAA,IAAA,OAAO,iBAAiB,QAAA,EAAU;AAC3C,cAAA,OAAA,GAAU,OAAA,IAAW,cAAc,YAAsB,CAAA;AAChD,YAAA,CAAA,MAAA,IAAA,CAAC,CAAC,QAAA,EAAU,QAAQ,EAAE,QAAA,CAAS,OAAO,YAAY,CAAA,EAAG;AAC9D,cAAA,OAAO,KAAA;;AAET,YAAA,IAAI,CAAC,OAAA,EAAS;AACZ,cAAA,OAAO,KAAA;;;;;;;;;;;;iBAGF,KAAA,KAAU,IAAA,IAAQ,UAAU,MAAA,EAAW;AAChD,QAAA,OAAO,KAAA;AACE,MAAA,CAAA,MAAA,IAAA,OAAO,UAAU,QAAA,EAAU;AAEpC,QAAA,OAAO,cAAc,KAAK,CAAA;iBACjB,CAAC,CAAC,UAAU,QAAA,EAAU,SAAS,EAAE,QAAA,CAAS,OAAO,KAAK,CAAA,EAAG;AAClE,QAAA,OAAO,KAAA;;AAET,MAAA,OAAO,IAAA;AACT,IAAA,CAAA;;;;;ACtBA,IAAA,QAAA,EAsIYD,kBAAAA,EAuBC,yBAAA;;;;AA9Kb,IAAA,cAAA,EAAA;AACA,IAAA,qBAAA,EAAA;AAgBA,IAAA,QAAA;KAAA,WAAA;AAAA,MAAA,SAAAE,SAAAA,GAAA;AACqB,QAAA,IAAA,CAAA,YAAA,uBAAgC,GAAA,EAAG;AAC5C,QAAA,IAAA,CAAA,cAAsC,EAAA;AAmGlD,MAAA;AAjGS,MAAAA,SAAAA,CAAA,SAAA,CAAA,iBAAA,GAAP,WAAA;AACE,QAAA,OAAA,QAAA,CAAA,EAAA,EAAY,IAAA,CAAK,WAAW,CAAA;AAC9B,MAAA,CAAA;AAEO,MAAAA,SAAAA,CAAA,SAAA,CAAA,GAAA,GAAP,SAAW,UAAkB,KAAA,EAAwB;AACnD,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,GAAA,EAAK,QAAA,EAAU,KAAK,CAAA;AACpD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,OAAA,GAAP,SAAe,UAAkB,KAAA,EAAwB;AACvD,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,QAAA,EAAU,QAAA,EAAU,KAAK,CAAA;AACzD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,MAAA,GAAP,SAAc,UAAkB,KAAA,EAAwB;AACtD,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AACvD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,OAAA,GAAP,SAAe,UAAkB,KAAA,EAAwB;AACvD,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,OAAA,EAAS,QAAA,EAAU,KAAK,CAAA;AACxD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,UAAA,GAAP,SAAkB,UAAkB,KAAA,EAAwB;AAC1D,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA;AAC3D,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,SAAA,GAAP,SAAiB,UAAkB,KAAA,EAAwB;AACzD,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,SAAA,EAAW,QAAA,EAAU,KAAK,CAAA;AAC1D,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,MAAA,GAAP,SAAc,UAAkB,KAAA,EAAwB;AACtD,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AACvD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,GAAA,GAAP,SAAW,UAAkB,KAAA,EAAa;AACxC,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,GAAA,EAAK,QAAA,EAAU,KAAK,CAAA;AACpD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,KAAA,GAAP,SAAa,QAAA,EAAgB;AAC3B,QAAA,IAAA,CAAK,QAAA,CAASF,kBAAAA,CAAkB,KAAA,EAAO,QAAA,EAAU,WAAW,CAAA;AAC5D,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEO,MAAAE,SAAAA,CAAA,SAAA,CAAA,QAAA,GAAP,WAAA;AAEE,QAAA,IAAA,CAAK,cAAc,EAAA;AACnB,QAAA,IAAA,CAAK,WAAA,CAAYF,kBAAAA,CAAkB,SAAS,CAAA,GAAI,WAAA;AAEhD,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAGQ,MAAAE,UAAA,SAAA,CAAA,QAAA,GAAR,SAAiB,SAAA,EAA8B,UAAkB,KAAA,EAAwB;AACvF,QAAA,IAAI,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW,QAAA,EAAU,KAAK,CAAA,EAAG;AAE9C,UAAA,IAAI,eAAA,GAAuB,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA;AACrD,UAAA,IAAI,oBAAoB,MAAA,EAAW;AACjC,YAAA,eAAA,GAAkB,EAAA;AAElB,YAAA,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA,GAAI,eAAA;;AAIhC,UAAA,eAAA,CAAgB,QAAQ,CAAA,GAAI,KAAA;AAC5B,UAAA,IAAA,CAAK,YAAA,CAAa,IAAI,QAAQ,CAAA;AAC9B,UAAA,OAAO,IAAA;;AAGT,QAAA,OAAO,KAAA;AACT,MAAA,CAAA;AAEQ,MAAAA,UAAA,SAAA,CAAA,SAAA,GAAR,SAAkB,SAAA,EAA8B,UAAkB,KAAA,EAAwB;AACxF,QAAA,IAAI,IAAA,CAAK,WAAA,CAAYF,kBAAAA,CAAkB,SAAS,MAAM,MAAA,EAAW;AAE/D,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,EAAG;AAEnC,UAAA,OAAO,KAAA;;AAGT,QAAA,IAAI,SAAA,KAAcA,mBAAkB,GAAA,EAAK;AACvC,UAAA,OAAO,OAAO,KAAA,KAAU,QAAA;;AAG1B,QAAA,IAAI,SAAA,KAAcA,kBAAAA,CAAkB,KAAA,IAAS,SAAA,KAAcA,mBAAkB,MAAA,EAAQ;AACnF,UAAA,OAAO,iBAAA,CAAkB,UAAU,KAAK,CAAA;;AAE1C,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AACF,MAAA,OAAAE,SAAAA;IAAA,CAAA,GArGA;AAsIA,IAAA,CAAA,SAAYF,kBAAAA,EAAiB;AAE3B,MAAAA,kBAAAA,CAAA,KAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAGA,MAAAA,kBAAAA,CAAA,KAAA,CAAA,GAAA,MAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,SAAA;AACA,MAAAA,kBAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AACA,MAAAA,kBAAAA,CAAA,QAAA,CAAA,GAAA,SAAA;AAGA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AACA,MAAAA,kBAAAA,CAAA,YAAA,CAAA,GAAA,aAAA;AAGA,MAAAA,kBAAAA,CAAA,OAAA,CAAA,GAAA,QAAA;AACA,MAAAA,kBAAAA,CAAA,WAAA,CAAA,GAAA,WAAA;IACF,CAAA,EAlBYA,kBAAAA,KAAAA,kBAAAA,GAAiB,EAAA,CAAA,CAAA;AAuBtB,IAAM,yBAAA,GAA4B;MACvCA,kBAAAA,CAAkB,SAAA;MAClBA,kBAAAA,CAAkB,KAAA;MAClBA,kBAAAA,CAAkB,GAAA;MAClBA,kBAAAA,CAAkB,QAAA;MAClBA,kBAAAA,CAAkB,GAAA;MAClBA,kBAAAA,CAAkB,MAAA;MAClBA,kBAAAA,CAAkB,OAAA;MAClBA,kBAAAA,CAAkB,SAAA;MAClBA,kBAAAA,CAAkB,UAAA;MAClBA,kBAAAA,CAAkB;;;;;;ACxLpB,IAAa,eAAA,EACA,wBAAA,EACA,4BAAA,EACA,eAAA,EACA,yBACA,eAAA,EACA,sBAAA;AANb,IAAA,aAAA,GAAA,KAAA,CAAA;;AAAO,IAAM,eAAA,GAAkB,4BAAA;AACxB,IAAM,wBAAA,GAA2B,2BAAA;AACjC,IAAM,4BAAA,GAA+B,4CAAA;AACrC,IAAM,eAAA,GAAkB,oCAAA;AACxB,IAAM,uBAAA,GAA0B,uCAAA;AAChC,IAAM,eAAA,GAAkB,iBAAA;AACxB,IAAM,sBAAA,GAAyB,wBAAA;;;;;ACNtC,IACY,MAAA;AADZ,IAAA,WAAA,GAAA,KAAA,CAAA;;AACA,IAAA,CAAA,SAAYG,OAAAA,EAAM;AAEhB,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAEA,MAAAA,OAAAA,CAAA,WAAA,CAAA,GAAA,YAAA;AAEA,MAAAA,OAAAA,CAAA,iBAAA,CAAA,GAAA,mBAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAEA,MAAAA,OAAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAEA,MAAAA,OAAAA,CAAA,aAAA,CAAA,GAAA,aAAA;IACF,CAAA,EAnBY,MAAA,KAAA,MAAA,GAAM,EAAA,CAAA,CAAA;;;;;ACClB,IAEa,WAAA;AAFb,IAAA,mBAAA,GAAA,KAAA,CAAA;;;AAEO,IAAM,WAAA,GAAc,SAAC,KAAA,EAAc,IAAA,EAAU,OAAA,EAAgC;AAA1C,MAAA,IAAA,SAAA,MAAA,EAAA;AAAA,QAAA,IAAA,GAAA,CAAA;AAAQ,MAAA;AAAE,MAAA,IAAA,YAAA,MAAA,EAAA;AAAA,QAAA,OAAA,GAAkB,MAAA,CAAO,OAAA;AAAO,MAAA;AAClF,MAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,EAAO;AAC/B,IAAA,CAAA;;;;;ACNA,IAGa,cAAA;AAHb,IAAA,iBAAA,GAAA,KAAA,CAAA;;AAGO,IAAM,iBAAiB,WAAA;AAG5B,MAAA,IAAM,yBAAA,GAA4B,uBAAA;AAClC,MAAA,IAAI,OAAO,UAAA,KAAe,WAAA,IAAe,OAAO,UAAA,CAAW,yBAAyB,MAAM,WAAA,EAAa;AACrG,QAAA,OAAO,WAAW,yBAAyB,CAAA;;AAE7C,MAAA,IAAI,OAAO,eAAe,WAAA,EAAa;AACrC,QAAA,OAAO,UAAA;;AAET,MAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,QAAA,OAAO,MAAA;;AAET,MAAA,IAAI,OAAO,SAAS,WAAA,EAAa;AAC/B,QAAA,OAAO,IAAA;;AAET,MAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,QAAA,OAAO,MAAA;;AAET,MAAA,OAAO,MAAA;AACT,IAAA,CAAA;;;;;ACvBA,IAWM,YAyBA,GAAA,EAEO,IAAA;AAtCb,IAAA,SAAA,GAAA,KAAA,CAAA;;;AASA,IAAA,iBAAA,EAAA;AAEA,IAAM,UAAA,GAAa,SAAU,CAAA,EAAO;AAClC,MAAA,OAAO,CAAA;;AAGD,QAAA,CAAA,CAAA;AACE,QAAA,IAAA,CAAK,MAAA,EAAM;AACX,QAAA,EAAA;QACC,CAAA,GAAI,CAAA,EAEN,SAAS,EAAE;;;AAGZ,QAAA,CAAA,MAAA,CAAO,GAAG,CAAA;AACV,QAAA,MAAA,CAAO,IAAI,CAAA;AACX,QAAA,MAAA,CAAO,IAAI,CAAA;AACX,QAAA,MAAA,CAAO,IAAI,CAAA;AACX,QAAA,MAAA,CAAO,KAAK,CAAA,EAEX,OAAA;;AAEC,UAAA,QAAA;;AACA,UAAA;AAAI;;AAEd,IAAA,CAAA;AAEA,IAAM,GAAA,GAAgB,aAAA,CAAA,EAAA,EAAA,OAAI,KAAA,CAAM,GAAG,CAAA,CAAE,IAAA,EAAM,CAAA,EAAA,KAAA,CAAA,CAAE,GAAA,CAAI,SAAC,KAAA,EAAK;AAAK,MAAA,OAAA,MAAM,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;IAAlC,CAAmC,CAAA;AAExF,IAAM,IAAA,GAAO,SAAC,CAAA,EAAO;;AAC1B,MAAA,IAAM,cAAc,cAAA,EAAc;AAGlC,MAAA,IAAI,EAAA,CAAC,EAAA,GAAA,WAAA,KAAW,IAAA,IAAX,gBAAW,MAAA,GAAA,MAAA,GAAX,WAAA,CAAa,MAAA,MAAM,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,GAAE,eAAA,CAAA,EAAiB;AAEzC,QAAA,OAAO,WAAW,CAAC,CAAA;;AAGrB,MAAA,IAAM,IAAI,WAAA,CAAY,MAAA,CAAO,gBAAgB,IAAI,UAAA,CAAW,EAAE,CAAC,CAAA;AAE/D,MAAA,CAAA,CAAE,CAAC,CAAA,GAAK,CAAA,CAAE,CAAC,IAAI,EAAA,GAAQ,EAAA;AACvB,MAAA,CAAA,CAAE,CAAC,CAAA,GAAK,CAAA,CAAE,CAAC,IAAI,EAAA,GAAQ,GAAA;AAEvB,MAAA,OAAO,aAAA,CAAA,EAAA,EAAA,MAAA,CAAI,CAAA,CAAE,OAAA,EAAS,CAAA,EAAA,KAAA,CAAA,CAAE,GAAA,CAAI,SAACC,GAAAA,EAAY;YAAZ,EAAA,GAAA,MAAA,CAAAA,GAAAA,EAAA,CAAA,CAAA,EAAC,KAAA,GAAK,GAAA,CAAA,CAAA,EAAE,GAAA,GAAG,EAAA,CAAA,CAAA,CAAA;AAAM,QAAA,OAAC,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,EAAE,QAAA,CAAS,KAAK,CAAA,GAAI,GAAA,CAAA,OAAI,GAAA,CAAI,GAAG,CAAC,CAAA,GAAK,IAAI,GAAG,CAAA;MAAzD,CAA2D,CAAA,CAAE,KAAK,EAAE,CAAA;AACpH,IAAA,CAAA;;;;;AC3CA,IAAA,QAAA;;;;AAHA,IAAA,mBAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAEA,IAAA,QAAA;KAAA,WAAA;AAYE,MAAA,SAAAC,UAAoB,MAAA,EAAkB;AAAlB,QAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAXpB,QAAA,IAAA,CAAA,QAAkC,EAAA;AAElC,QAAA,IAAA,CAAA,QAAA,GAAW,KAAA;AAGX,QAAA,IAAA,CAAA,UAAoB,EAAA;AAMqB,MAAA;AAEnC,MAAAA,SAAAA,CAAA,SAAA,CAAA,QAAA,GAAN,SAAe,QAAgB,MAAA,EAAe;;;;;;AAC5C,gBAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAC,cAAA,EAAc;AAAK,kBAAA,OAAA,cAAA,CAAe,SAAS,MAAA,CAAO,IAAA;AAA/B,gBAAA,CAAmC,CAAA,EAAG;AAE9E,kBAAA,IAAA,CAAK,eAAe,IAAA,CAAK,mBAAA,CAAA,OAAoB,MAAA,CAAO,IAAA,EAAI,wCAAA,CAAwC,CAAA;AAChG,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAGF,gBAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAW;AAC7B,kBAAA,MAAA,CAAO,OAAO,IAAA,EAAI;AAClB,kBAAA,IAAA,CAAK,eAAe,IAAA,CAAK,8EAAA,CAAA,OACmB,MAAA,CAAO,IAAA,EAAI,oFAAA,CACkB,CAAA;;AAG3E,gBAAA,MAAA,CAAO,QAAO,EAAA,GAAA,MAAA,CAAO,UAAI,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,YAAA;AAC7B,gBAAA,OAAA,CAAA,CAAA,EAAA,CAAM,EAAA,GAAA,MAAA,CAAO,WAAK,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,GAAA,IAAA,CAAA,MAAA,EAAG,MAAA,EAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;;AAAzC,gBAAA,EAAA,CAAA,IAAA,EAAA;AACA,gBAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,MAAM,CAAA;;;;;;;;;AAGpB,MAAAA,SAAAA,CAAA,SAAA,CAAA,UAAA,GAAN,SAAiB,YAAoB,MAAA,EAAe;;;;;;;AAC5C,gBAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,SAACC,OAAAA,EAAM;AAAK,kBAAA,OAAAA,QAAO,IAAA,KAAS,UAAA;gBAAhB,CAA0B,CAAA;AAC3E,gBAAA,IAAI,UAAU,EAAA,EAAI;AAChB,kBAAA,MAAA,CAAO,eAAe,IAAA,CAAK,mBAAA,CAAA,MAAA,CAAoB,UAAA,EAAU,0CAAA,CAA0C,CAAA;AACnG,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAEI,gBAAA,MAAA,GAAS,IAAA,CAAK,QAAQ,KAAK,CAAA;AACjC,gBAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAC5B,gBAAA,OAAA,CAAA,CAAA,EAAA,CAAM,EAAA,GAAA,MAAA,CAAO,QAAA,MAAQ,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAI,CAAA;;AAAzB,gBAAA,EAAA,CAAA,IAAA,EAAA;;;;;;;;;AAGF,MAAAD,SAAAA,CAAA,SAAA,CAAA,KAAA,GAAA,SAAM,MAAA,EAAkB;AACtB,QAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,QAAA,IAAM,UAAU,IAAA,CAAK,OAAA;AACrB,QAAA,OAAA,CAAQ,GAAA,CAAI,SAAC,MAAA,EAAM;AAAA,UAAA,IAAA,EAAA;AAAK,UAAA,OAAA,CAAA,EAAA,GAAA,OAAO,QAAA,MAAQ,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA;QAAI,CAAA,CAAA;AAC3C,QAAA,IAAA,CAAK,UAAU,EAAA;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,MAAA,CAAA;AAEA,MAAAA,SAAAA,CAAA,SAAA,CAAA,IAAA,GAAA,SAAK,KAAA,EAAY;AAAjB,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,OAAO,IAAI,OAAA,CAAgB,SAAC,OAAA,EAAO;AACjC,UAAA,KAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,KAAA,EAAO,OAAO,CAAC,CAAA;AAChC,UAAA,KAAA,CAAK,cAAc,CAAC,CAAA;QACtB,CAAC,CAAA;AACH,MAAA,CAAA;AAEA,MAAAA,SAAAA,CAAA,SAAA,CAAA,aAAA,GAAA,SAAc,OAAA,EAAe;AAA7B,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAI,IAAA,CAAK,QAAA;AAAU,UAAA;AACnB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,UAAA,CAAW,WAAA;AACT,UAAA,KAAK,KAAA,CAAK,MAAM,KAAA,CAAK,KAAA,CAAM,OAAO,CAAA,CAAE,KAAK,WAAA;AACvC,YAAA,KAAA,CAAK,QAAA,GAAW,KAAA;AAChB,YAAA,IAAI,KAAA,CAAK,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AACzB,cAAA,KAAA,CAAK,cAAc,CAAC,CAAA;;UAExB,CAAC,CAAA;AACH,QAAA,CAAA,EAAG,OAAO,CAAA;AACZ,MAAA,CAAA;AAEM,MAAAA,SAAAA,CAAA,SAAA,CAAA,KAAA,GAAN,SAAY,IAAA,EAAwC;;;;;;;AAClD,gBAAA,IAAI,CAAC,IAAA,EAAM;AACT,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAGE,gBAAA,EAAA,GAAA,OAAU,IAAA,EAAI,CAAA,CAAA,EAAb,KAAA,GAAK,GAAA,CAAA,CAAA;AACJ,gBAAA,EAAA,GAAA,OAAc,IAAA,EAAI,CAAA,CAAA,EAAf,OAAA,GAAO,GAAA,CAAA,CAAA;AAGhB,gBAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,+BAAA,EAAiC,KAAK,CAAA;AAExD,gBAAA,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,MAAA,CAC1B,SAACC,OAAAA,EAAc;AAA6B,kBAAA,OAAAA,QAAO,IAAA,KAAS,QAAA;gBAAhB,CAAwB,CAAA;;;;AAGjD,gBAAA,QAAA,GAAA,QAAA,CAAA,MAAM,CAAA,EAAA,UAAA,GAAA,SAAA,IAAA,EAAA;;;;AAAhB,gBAAA,MAAA,GAAM,UAAA,CAAA,KAAA;AAEf,gBAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AAEnB,kBAAA,OAAA,CAAA,GAAA,CAAA,CAAA;;AAEQ,gBAAA,OAAA,CAAA,GAAM,MAAA,CAAO,OAAA,CAAO,SAAA,EAAA,EAAM,KAAK,CAAA,CAAG,CAAA;;AAAtC,gBAAA,CAAA,GAAI,GAAA,IAAA,EAAA;AACV,gBAAA,IAAI,MAAM,IAAA,EAAM;AACd,kBAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAClB,uDAAA,CAAA,MAAA,CAAwD,OAAO,MAAA,CAAO,IAAI,CAAA,EAAC,YAAA,EAAA,MAAA,CAAa,IAAA,CAAK,SAAA,CAC3F,KAAK,CACN,CAAE,CAAA;AAEL,kBAAA,OAAA,CAAQ,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,IAAI,CAAA;AACvC,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;AACK,gBAAA,CAAA,MAAA;AACL,kBAAA,KAAA,GAAQ,CAAA;AACR,kBAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAClB,6CAAA,CAAA,MAAA,CAA8C,OAAO,MAAA,CAAO,IAAI,CAAA,EAAC,YAAA,EAAA,MAAA,CAAa,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAKrG,gBAAA,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,CAC9B,SAACA,OAAAA,EAAc;AAAiC,kBAAA,OAAAA,OAAAA,CAAO,IAAA,KAAS,YAAA,IAAgBA,OAAAA,CAAO,IAAA,KAAS,MAAA;gBAAhD,CAAyD,CAAA;;;;AAGtF,gBAAA,YAAA,GAAA,QAAA,CAAA,UAAU,CAAA,EAAA,cAAA,GAAA,aAAA,IAAA,EAAA;;;;AAApB,gBAAA,MAAA,GAAM,cAAA,CAAA,KAAA;AAEf,gBAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AAEnB,kBAAA,OAAA,CAAA,GAAA,EAAA,CAAA;;AAEQ,gBAAA,OAAA,CAAA,GAAM,MAAA,CAAO,OAAA,CAAO,SAAA,EAAA,EAAM,KAAK,CAAA,CAAG,CAAA;;AAAtC,gBAAA,CAAA,GAAI,GAAA,IAAA,EAAA;AACV,gBAAA,IAAI,MAAM,IAAA,EAAM;AACd,kBAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAClB,2DAAA,CAAA,MAAA,CAA4D,OAAO,MAAA,CAAO,IAAI,CAAA,EAAC,YAAA,EAAA,MAAA,CAAa,IAAA,CAAK,SAAA,CAC/F,KAAK,CACN,CAAE,CAAA;AAEL,kBAAA,OAAA,CAAQ,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,IAAI,CAAA;AACvC,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;AACK,gBAAA,CAAA,MAAA;AACL,kBAAA,KAAA,GAAQ,CAAA;AACR,kBAAA,IAAA,CAAK,cAAA,CAAe,GAAA,CAClB,iDAAA,CAAA,MAAA,CAAkD,OAAO,MAAA,CAAO,IAAI,CAAA,EAAC,YAAA,EAAA,MAAA,CAAa,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAKzG,gBAAA,WAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,MAAA,CAC/B,SAACA,OAAAA,EAAc;AAAkC,kBAAA,OAAAA,QAAO,IAAA,KAAS,aAAA;gBAAhB,CAA6B,CAAA;AAIhF,gBAAA,IAAA,CAAK,cAAA,CAAe,IAAI,0DAAA,CAAA,MAAA,CAA2D,KAAK,SAAA,CAAU,KAAK,CAAC,CAAE,CAAA;AAEpG,gBAAA,mBAAA,GAAsB,WAAA,CAAY,GAAA,CAAI,SAACA,OAAAA,EAAM;AACjD,kBAAA,IAAM,UAAA,GAAU,QAAA,CAAA,EAAA,EAAQ,KAAK,CAAA;AAC7B,kBAAA,OAAOA,QAAO,OAAA,CAAQ,UAAU,CAAA,CAAE,KAAA,CAAM,SAACC,EAAAA,EAAC;AAAK,oBAAA,OAAA,WAAA,CAAY,UAAA,EAAY,CAAA,EAAG,MAAA,CAAOA,EAAC,CAAC,CAAA;kBAApC,CAAqC,CAAA;gBACtF,CAAC,CAAA;AAED,gBAAA,KAAK,QAAQ,GAAA,CAAI,mBAAmB,CAAA,CAAE,IAAA,CAAK,SAACH,GAAAA,EAAQ;AAARI,kBAAAA,IAAAA,GAAAA,GAAA,OAAAJ,GAAAA,EAAA,CAAA,CAAA,EAAC,MAAA,GAAMI,IAAA,CAAA,CAAA;AACjD,kBAAA,IAAM,aAAA,GACJ,MAAA,IAAU,WAAA,CAAY,KAAA,EAAO,KAAK,2DAA2D,CAAA;AAC/F,kBAAA,OAAA,CAAQ,aAAa,CAAA;gBACvB,CAAC,CAAA;AAED,gBAAA,OAAA;AAAA,kBAAA;;AAAA,iBAAA;;;;;AAGI,MAAAH,SAAAA,CAAA,SAAA,CAAA,KAAA,GAAN,WAAA;;;;;;;AACQ,gBAAA,KAAA,GAAQ,IAAA,CAAK,KAAA;AACnB,gBAAA,IAAA,CAAK,QAAQ,EAAA;AAEb,gBAAA,OAAA,CAAA,CAAA,EAAM,OAAA,CAAQ,IAAI,KAAA,CAAM,GAAA,CAAI,SAAC,IAAA,EAAI;AAAK,kBAAA,OAAA,KAAA,CAAK,MAAM,IAAI,CAAA;AAAf,gBAAA,CAAgB,CAAC,CAAC,CAAA;;AAAxD,gBAAA,EAAA,CAAA,IAAA,EAAA;AAEM,gBAAA,WAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,MAAA,CAC/B,SAAC,MAAA,EAAc;AAAkC,kBAAA,OAAA,OAAO,IAAA,KAAS,aAAA;gBAAhB,CAA6B,CAAA;AAG1E,gBAAA,mBAAA,GAAsB,WAAA,CAAY,GAAA,CAAI,SAAC,MAAA,EAAM;AACjD,kBAAA,OAAO,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,KAAA,EAAK;gBACrC,CAAC,CAAA;AAED,gBAAA,OAAA,CAAA,CAAA,EAAM,OAAA,CAAQ,GAAA,CAAI,mBAAmB,CAAC,CAAA;;AAAtC,gBAAA,EAAA,CAAA,IAAA,EAAA;;;;;;;;;AAGF,MAAAA,SAAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,SAAkB,QAAA,EAA2B;AAC3C,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAC,MAAA,EAAM;;AAK1B,UAAA,MAAA,CAAK,EAAA,GAAA,MAAA,CAAO,iBAAA,MAAiB,IAAA,IAAA,EAAA,KAAA,SAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,QAAQ,CAAA,CAAA;QAC1C,CAAC,CAAA;AACH,MAAA,CAAA;AAEA,MAAAA,SAAAA,CAAA,SAAA,CAAA,kBAAA,GAAA,SAAmB,SAAA,EAAiB;AAClC,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAC,MAAA,EAAM;;AAK1B,UAAA,MAAA,CAAK,EAAA,GAAA,MAAA,CAAO,kBAAA,MAAkB,IAAA,IAAA,EAAA,KAAA,SAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,SAAS,CAAA,CAAA;QAC5C,CAAC,CAAA;AACH,MAAA,CAAA;AAEA,MAAAA,SAAAA,CAAA,SAAA,CAAA,eAAA,GAAA,SAAgB,MAAA,EAAe;AAC7B,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAC,MAAA,EAAM;;AAK1B,UAAA,MAAA,CAAK,EAAA,GAAA,MAAA,CAAO,eAAA,MAAe,IAAA,IAAA,EAAA,KAAA,SAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAG,MAAM,CAAA,CAAA;QACtC,CAAC,CAAA;AACH,MAAA,CAAA;AAEA,MAAAA,SAAAA,CAAA,SAAA,CAAA,OAAA,GAAA,WAAA;AACE,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAC,MAAA,EAAM;;AAK1B,UAAA,MAAA,CAAK,EAAA,GAAA,OAAO,OAAA,MAAO,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;QACrB,CAAC,CAAA;AACH,MAAA,CAAA;AACF,MAAA,OAAAA,SAAAA;IAAA,CAAA,GAtNA;;;;;ICLa,gBAAA,EAaA,mBAAA,EAUA,0BAkBA,gBAAA,EAeA,kBAAA;;;;AA7Db,IAAA,aAAA,EAAA;AAGA,IAAA,UAAA,EAAA;AAEO,IAAM,gBAAA,GAAmB,SAC9B,UAAA,EACA,eAAA,EACA,YAAA,EAA2B;AAE3B,MAAA,IAAM,YAAuB,OAAO,UAAA,KAAe,WAAW,EAAE,UAAA,EAAY,YAAU,GAAK,UAAA;AAC3F,MAAA,OAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACK,SAAS,CAAA,EACT,YAAY,CAAA,EACX,eAAA,IAAmB,EAAE,gBAAA,EAAkB,iBAAkB,CAAA;AAEjE,IAAA,CAAA;AAEO,IAAM,mBAAA,GAAsB,SAACI,SAAAA,EAAqB,YAAA,EAA2B;AAClF,MAAA,IAAM,aAAA,GAAa,QAAA,CAAA,QAAA,CAAA,IACd,YAAY,CAAA,EAAA,EACf,UAAA,EAAY,iBAAiB,QAAA,EAC7B,eAAA,EAAiBA,SAAAA,CAAS,iBAAA,IAAmB,CAAA;AAG/C,MAAA,OAAO,aAAA;AACT,IAAA,CAAA;AAEO,IAAM,wBAAA,GAA2B,SACtC,SAAA,EACA,SAAA,EACAA,WACA,YAAA,EAA2B;;AAE3B,MAAA,IAAMC,cAAAA,GAAa,SAAA,QAAA,CAAA,IACd,YAAY,CAAA,EAAA,EACf,UAAA,EAAY,gBAAA,CAAiB,gBAC7B,gBAAA,EAAkBD,SAAAA,CAAS,mBAAiB,EAC5C,MAAA,GAAM,KAAA,EAAA,EACJ,EAAA,CAAC,SAAS,CAAA,GAAG,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA;AAIjB,MAAA,OAAOC,cAAAA;AACT,IAAA,CAAA;AAEO,IAAM,gBAAA,GAAmB,SAAC,SAAA,EAAmB,SAAA,EAA8B,YAAA,EAA2B;;AAC3G,MAAA,IAAMD,SAAAA,GAAW,IAAI,QAAA,EAAQ;AAC7B,MAAAA,SAAAA,CAAS,GAAA,CAAI,SAAA,EAAW,SAAS,CAAA;AAEjC,MAAA,IAAM,UAAA,GAAU,SAAA,QAAA,CAAA,IACX,YAAY,CAAA,EAAA,EACf,UAAA,EAAY,gBAAA,CAAiB,UAC7B,eAAA,EAAiBA,SAAAA,CAAS,mBAAiB,EAC3C,MAAA,GAAM,KAAA,EAAA,EACJ,EAAA,CAAC,SAAS,CAAA,GAAG,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA;AAGjB,MAAA,OAAO,UAAA;AACT,IAAA,CAAA;AAEO,IAAM,kBAAA,GAAqB,SAACE,QAAAA,EAAmB,YAAA,EAA2B;AAC/E,MAAA,OAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACK,YAAY,CAAA,EAAA,EACf,UAAA,EAAY,gBAAA,CAAiB,OAAA,EAC7B,gBAAA,EAAkBA,QAAAA,CAAQ,kBAAA,IAAoB,CAAA;AAElD,IAAA,CAAA;;;;;AC/DA,IAAa,aAAA;AAAb,IAAA,mBAAA,GAAA,KAAA,CAAA;;AAAO,IAAM,aAAA,GAGT,SAAI,SAAA,EAAsB;AAAK,MAAA,OAAC;QAClC,OAAA,EAAS,SAAA,IAAa,QAAQ,OAAA;;AADG,IAAA,CAAA;;;;;ACkBnC,IAAA,aAAA;;;;AArBA,IAAA,UAAA,EAAA;AAOA,IAAA,aAAA,EAAA;AAEA,IAAA,aAAA,EAAA;AACA,IAAA,aAAA,EAAA;AACA,IAAA,kBAAA,EAAA;AAOA,IAAA,mBAAA,EAAA;AACA,IAAA,mBAAA,EAAA;AAEA,IAAA,aAAA;KAAA,WAAA;AAaE,MAAA,SAAAC,eAAY,IAAA,EAAiB;AAAjB,QAAA,IAAA,SAAA,MAAA,EAAA;AAAA,UAAA,IAAA,GAAA,UAAA;AAAiB,QAAA;AAZnB,QAAA,IAAA,CAAA,YAAA,GAAe,KAAA;AAQzB,QAAA,IAAA,CAAA,OAAA,GAAU,KAAA;AACA,QAAA,IAAA,CAAA,IAAoD,EAAA;AACpD,QAAA,IAAA,CAAA,YAAqC,EAAA;AAwC/C,QAAA,IAAA,CAAA,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AArC7B,QAAA,IAAA,CAAK,QAAA,GAAW,IAAI,QAAA,CAAS,IAAI,CAAA;AACjC,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACd,MAAA;AAEgB,MAAAA,cAAAA,CAAA,SAAA,CAAA,KAAA,GAAhB,SAAsB,MAAA,EAAe;;;;;AACnC,gBAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,gBAAA,IAAA,CAAK,QAAA,CAAS,MAAM,IAAI,CAAA;AACxB,gBAAA,IAAA,CAAK,QAAA,CAAS,cAAA,GAAiB,IAAA,CAAK,MAAA,CAAO,cAAA;AAC3C,gBAAA,OAAA,CAAA,CAAA,EAAM,IAAA,CAAK,kBAAA,CAAmB,GAAG,CAAC,CAAA;;AAAlC,gBAAA,EAAA,CAAA,IAAA,EAAA;AACA,gBAAA,IAAA,CAAK,OAAA,GAAU,IAAA;;;;;;;;;AAGX,MAAAA,cAAAA,CAAA,SAAA,CAAA,kBAAA,GAAN,SAAyB,SAAA,EAA4B;;;;;;;AAC7C,gBAAA,eAAA,GAAkB,KAAK,SAAS,CAAA;AACtC,gBAAA,IAAA,CAAK,SAAS,IAAI,EAAA;;;;AACW,gBAAA,iBAAA,GAAA,QAAA,CAAA,eAAe,CAAA,EAAA,mBAAA,GAAA,kBAAA,IAAA,EAAA;;;;AAAjC,gBAAA,cAAA,GAAc,mBAAA,CAAA,KAAA;AAIjB,gBAAA,GAAA,GAAuD,cAAA,EAAc;AACvE,gBAAA,IAAA,EAAA,GAAA,IAAO,SAAA,IAAa,GAAA,CAAA,EAApB,OAAA,CAAA,GAAA,CAAA,CAAA;AACF,gBAAA,OAAA,CAAA,CAAA,EAAM,GAAA,CAAI,OAAO,CAAA;;AAAjB,gBAAA,EAAA,CAAA,IAAA,EAAA;;;AAEA,gBAAA,OAAA,CAAA,GAAM,GAAG,CAAA;;AAAT,gBAAA,EAAA,CAAA,IAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;AAIA,gBAAA,IAAA,CAAA,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA,EAAhB,OAAA,CAAA,GAAA,EAAA,CAAA;AACF,gBAAA,OAAA,CAAA,CAAA,EAAM,IAAA,CAAK,kBAAA,CAAmB,SAAS,CAAC,CAAA;;AAAxC,gBAAA,EAAA,CAAA,IAAA,EAAA;;;;;;;;;;;AAIJ,MAAAA,eAAA,SAAA,CAAA,KAAA,GAAA,SAAM,UAAA,EAAgC,iBAAuC,YAAA,EAA2B;AACtG,QAAA,IAAM,KAAA,GAAQ,gBAAA,CAAiB,UAAA,EAAY,eAAA,EAAiB,YAAY,CAAA;AACxE,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC3C,MAAA,CAAA;AAIA,MAAAA,cAAAA,CAAA,SAAA,CAAA,QAAA,GAAA,SAASH,WAAqB,YAAA,EAA2B;AACvD,QAAA,IAAM,KAAA,GAAQ,mBAAA,CAAoBA,SAAAA,EAAU,YAAY,CAAA;AACxD,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC3C,MAAA,CAAA;AAEA,MAAAG,eAAA,SAAA,CAAA,aAAA,GAAA,SAAc,SAAA,EAAmB,SAAA,EAA8BH,WAAqB,YAAA,EAA2B;AAC7G,QAAA,IAAM,KAAA,GAAQ,wBAAA,CAAyB,SAAA,EAAW,SAAA,EAAWA,WAAU,YAAY,CAAA;AACnF,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC3C,MAAA,CAAA;AAEA,MAAAG,eAAA,SAAA,CAAA,QAAA,GAAA,SAAS,SAAA,EAAmB,WAA8B,YAAA,EAA2B;AACnF,QAAA,IAAM,KAAA,GAAQ,gBAAA,CAAiB,SAAA,EAAW,SAAA,EAAW,YAAY,CAAA;AACjE,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC3C,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,OAAA,GAAA,SAAQD,UAAmB,YAAA,EAA2B;AACpD,QAAA,IAAM,KAAA,GAAQ,kBAAA,CAAmBA,QAAAA,EAAS,YAAY,CAAA;AACtD,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,KAAK,CAAC,CAAA;AAC3C,MAAA,CAAA;AAEA,MAAAC,cAAAA,CAAA,SAAA,CAAA,GAAA,GAAA,SAAI,MAAA,EAAc;AAChB,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,UAAA,IAAA,CAAK,EAAE,IAAA,CAAK,IAAA,CAAK,WAAW,IAAA,CAAK,IAAA,EAAM,MAAM,CAAC,CAAA;AAC9C,UAAA,OAAO,aAAA,EAAa;;AAEtB,QAAA,OAAO,IAAA,CAAK,WAAW,MAAM,CAAA;AAC/B,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,UAAA,GAAA,SAAW,MAAA,EAAc;AACvB,QAAA,OAAO,cAAc,IAAA,CAAK,QAAA,CAAS,SAAS,MAAA,EAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAClE,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,MAAA,GAAA,SAAO,UAAA,EAAkB;AACvB,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,UAAA,IAAA,CAAK,EAAE,IAAA,CAAK,IAAA,CAAK,cAAc,IAAA,CAAK,IAAA,EAAM,UAAU,CAAC,CAAA;AACrD,UAAA,OAAO,aAAA,EAAa;;AAEtB,QAAA,OAAO,IAAA,CAAK,cAAc,UAAU,CAAA;AACtC,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,aAAA,GAAA,SAAc,UAAA,EAAkB;AAC9B,QAAA,OAAO,cAAc,IAAA,CAAK,QAAA,CAAS,WAAW,UAAA,EAAY,IAAA,CAAK,MAAM,CAAC,CAAA;AACxE,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,oBAAA,GAAA,SAAqB,OAAc,QAAA,EAAkC;AACnE,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,UAAA,OAAO,QAAA,CAAS,WAAA,CAAY,KAAA,EAAO,CAAA,EAAG,sBAAsB,CAAC,CAAA;;AAE/D,QAAA,KAAK,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA,CAAE,KAAK,QAAQ,CAAA;AACxC,MAAA,CAAA;AAEM,MAAAA,cAAAA,CAAA,SAAA,CAAA,QAAA,GAAN,SAAe,KAAA,EAAY;;;;AACzB,YAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,cAAA,OAAA,CAAA,CAAA,EAAO,IAAI,OAAA,CAAgB,SAAC,OAAA,EAAO;AACjC,gBAAA,KAAA,CAAK,SAAA,CAAU,KAAK,KAAA,CAAK,oBAAA,CAAqB,KAAK,KAAA,EAAM,KAAA,EAAO,OAAO,CAAC,CAAA;AAC1E,cAAA,CAAC,CAAC,CAAA;;AAGJ,YAAA,OAAA,CAAA,CAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAC,CAAA;;;;AA4B5B,MAAAA,cAAAA,CAAA,SAAA,CAAA,iCAAA,GAAA,SAAkC,cAAA,EAA0C;AAC1E,QAAA,IAAM,oBAA4C,EAAA;AAElD,QAAA,IAAI,mBAAmB,MAAA,EAAW;AAChC,UAAA,OAAO,iBAAA;;AAIT,QAAA,IAAM,kBAEF,EAAA;AACJ,QAAA,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,OAAA,CAAQ,SAAC,GAAA,EAAG;AACtC,UAAA,IAAI,CAAC,MAAA,CAAO,MAAA,CAAO,iBAAiB,CAAA,CAAE,QAAA,CAAS,GAAwB,CAAA,EAAG;AAIxE,YAAA,eAAA,CAAgB,GAAG,CAAA,GAAI,cAAA,CAAe,GAAG,CAAA;;QAE7C,CAAC,CAAA;AAED,QAAA,yBAAA,CAA0B,OAAA,CAAQ,SAAC,SAAA,EAAS;AAE1C,UAAA,IAAI,CAAC,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,SAAS,SAAS,CAAA;AAAG,YAAA;AAGtD,UAAA,IAAM,YAAA,GAAuC,eAAe,SAAS,CAAA;AAErE,UAAA,QAAQ,SAAA;AACN,YAAA,KAAK,iBAAA,CAAkB,SAAA;AAGrB,cAAA,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA,CAAE,OAAA,CAAQ,SAAC,IAAA,EAAI;AAC1C,gBAAA,OAAO,kBAAkB,IAAI,CAAA;cAC/B,CAAC,CAAA;AACD,cAAA;AACF,YAAA,KAAK,iBAAA,CAAkB,KAAA;AACrB,cAAA,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,CAAE,OAAA,CAAQ,SAAC,IAAA,EAAI;AACrC,gBAAA,OAAO,kBAAkB,IAAI,CAAA;cAC/B,CAAC,CAAA;AACD,cAAA;AACF,YAAA,KAAK,iBAAA,CAAkB,GAAA;AACrB,cAAA,MAAA,CAAO,MAAA,CAAO,mBAAmB,YAAY,CAAA;AAC7C,cAAA;;QAEN,CAAC,CAAA;AAKD,QAAA,MAAA,CAAO,MAAA,CAAO,mBAAmB,eAAe,CAAA;AAEhD,QAAA,OAAO,iBAAA;AACT,MAAA,CAAA;AAEM,MAAAA,cAAAA,CAAA,SAAA,CAAA,OAAA,GAAN,SAAc,KAAA,EAAY;;;;;;;AAGtB,gBAAA,IAAI,IAAA,CAAK,OAAO,MAAA,EAAQ;AACtB,kBAAA,OAAA,CAAA,CAAA,EAAO,WAAA,CAAY,KAAA,EAAO,CAAA,EAAG,eAAe,CAAC,CAAA;;AAG/C,gBAAA,IAAI,KAAA,CAAM,UAAA,KAAe,gBAAA,CAAiB,QAAA,EAAU;AAC5C,kBAAA,cAAA,GAAiB,IAAA,CAAK,iCAAA,CAAkC,KAAA,CAAM,eAAe,CAAA;AACnF,kBAAA,IAAA,CAAK,QAAA,CAAS,iBAAA,CAAkB,EAAE,cAAA,EAAgC,CAAA;;AAGrD,gBAAA,OAAA,CAAA,CAAA,EAAM,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,KAAK,CAAC,CAAA;;AAAxC,gBAAA,MAAA,GAAS,GAAA,IAAA,EAAA;AAEf,gBAAA,MAAA,CAAO,IAAA,KAAS,GAAA,GACZ,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,IAAI,MAAA,CAAO,OAAO,CAAA,GAC7C,MAAA,CAAO,IAAA,KAAS,GAAA,GAChB,KAAK,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,GAC9C,KAAK,MAAA,CAAO,cAAA,CAAe,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAEnD,gBAAA,OAAA,CAAA,GAAO,MAAM,CAAA;;;AAEP,gBAAA,OAAA,GAAU,OAAO,GAAC,CAAA;AACxB,gBAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,KAAA,CAAM,OAAO,CAAA;AAClC,gBAAA,MAAA,GAAS,WAAA,CAAY,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA;AAE5C,gBAAA,OAAA,CAAA,GAAO,MAAM,CAAA;;;;;;;;;;AAIjB,MAAAA,cAAAA,CAAA,SAAA,CAAA,SAAA,GAAA,SAAU,MAAA,EAAe;AACvB,QAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,UAAA,IAAA,CAAK,CAAA,CAAE,KAAK,IAAA,CAAK,UAAA,CAAW,KAAK,IAAA,EAAM,OAAA,CAAQ,MAAM,CAAC,CAAC,CAAA;AACvD,UAAA;;AAEF,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACxB,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,UAAA,GAAA,SAAW,MAAA,EAAe;AACxB,QAAA,IAAI,IAAA,CAAK,MAAA,CAAO,MAAA,KAAW,MAAA,EAAQ;AACjC,UAAA,IAAA,CAAK,QAAA,CAAS,gBAAgB,MAAM,CAAA;AACpC,UAAA,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,OAAA,CAAQ,MAAM,CAAA;;AAEvC,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,KAAA,GAAA,WAAA;AACE,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,CAAA;AAC5C,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,MAAA,GAAA,SAAO,IAAA,EAAY;AACjB,QAAA,IAAM,SAAS,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,SAACN,OAAAA,EAAM;AAAK,UAAA,OAAAA,QAAO,IAAA,KAAS,IAAA;QAAhB,CAAoB,CAAA;AAC1E,QAAA,IAAI,WAAW,MAAA,EAAW;AACxB,UAAA,IAAA,CAAK,OAAO,cAAA,CAAe,KAAA,CAAM,+BAAA,CAAA,MAAA,CAAgC,IAAI,CAAE,CAAA;AACvE,UAAA,OAAO,MAAA;;AAGT,QAAA,OAAO,MAAA;AACT,MAAA,CAAA;AAEA,MAAAM,cAAAA,CAAA,SAAA,CAAA,OAAA,GAAA,SAA0B,WAAA,EAAwC;AAChE,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,MAAA,CAAO,SAAC,MAAA,EAAM;AAAK,UAAA,OAAA,MAAA,YAAkB,WAAA;QAAlB,CAA6B,CAAA;AAC/E,MAAA,CAAA;AACF,MAAA,OAAAA,cAAAA;IAAA,CAAA,GA/PA;;;;;ICVA,OAAA,EA2FY,eAAA;;;;AA1GZ,IAAA,qBAAA,EAAA;AAeA,IAAA,OAAA;KAAA,WAAA;AAWE,MAAA,SAAAC,QAAAA,GAAA;AACE,QAAA,IAAA,CAAK,SAAA,GAAY,EAAA;AACjB,QAAA,IAAA,CAAK,QAAA,GAAW,CAAA;AAChB,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACf,MAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,YAAA,GAAA,SAAa,SAAA,EAAiB;AAC5B,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,WAAA,GAAA,SAAY,QAAA,EAAgB;AAC1B,QAAA,IAAI,WAAW,CAAA,EAAG;AAChB,UAAA,IAAA,CAAK,QAAA,GAAW,QAAA;;AAElB,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,QAAA,GAAA,SAAS,KAAA,EAAa;AACpB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,cAAA,GAAA,SAAe,WAAA,EAAmB;AAChC,QAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,WAAA,GAAA,SAAY,QAAA,EAAgB;AAC1B,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,UAAA,GAAA,SAAWF,QAAAA,EAAe;AACxB,QAAA,IAAA,CAAK,OAAA,GAAUA,QAAAA;AACf,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAE,QAAAA,CAAA,SAAA,CAAA,UAAA,GAAA,SAAW,OAAA,EAAe;AACxB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,aAAA,GAAA,SAAc,UAAA,EAAkB;AAC9B,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,kBAAA,GAAA,SAAmB,UAAA,EAAgD;AACjE,QAAA,IAAI,aAAA,CAAc,UAAU,CAAA,EAAG;AAC7B,UAAA,IAAA,CAAK,UAAA,GAAa,UAAA;;AAEpB,QAAA,OAAO,IAAA;AACT,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,kBAAA,GAAA,WAAA;AACE,QAAA,IAAM,eAAA,GAA0C,KAAK,UAAA,GAAY,QAAA,CAAA,EAAA,EAAM,IAAA,CAAK,UAAU,CAAA,GAAK,EAAA;AAC3F,QAAA,eAAA,CAAgB,eAAA,CAAgB,kBAAkB,CAAA,GAAI,IAAA,CAAK,SAAA;AAC3D,QAAA,eAAA,CAAgB,eAAA,CAAgB,gBAAgB,CAAA,GAAI,IAAA,CAAK,QAAA;AACzD,QAAA,eAAA,CAAgB,eAAA,CAAgB,aAAa,CAAA,GAAI,IAAA,CAAK,KAAA;AACtD,QAAA,eAAA,CAAgB,eAAA,CAAgB,YAAY,CAAA,GAAI,IAAA,CAAK,WAAA;AACrD,QAAA,eAAA,CAAgB,eAAA,CAAgB,gBAAgB,CAAA,GAAI,IAAA,CAAK,QAAA;AACzD,QAAA,eAAA,CAAgB,eAAA,CAAgB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AAChD,QAAA,eAAA,CAAgB,eAAA,CAAgB,OAAO,CAAA,GAAI,IAAA,CAAK,OAAA;AAChD,QAAA,eAAA,CAAgB,eAAA,CAAgB,WAAW,CAAA,GAAI,IAAA,CAAK,UAAA;AACpD,QAAA,OAAO,eAAA;AACT,MAAA,CAAA;AACF,MAAA,OAAAA,QAAAA;IAAA,CAAA,GA9EA;AA2FA,IAAA,CAAA,SAAYC,gBAAAA,EAAe;AACzB,MAAAA,gBAAAA,CAAA,oBAAA,CAAA,GAAA,YAAA;AACA,MAAAA,gBAAAA,CAAA,kBAAA,CAAA,GAAA,WAAA;AACA,MAAAA,gBAAAA,CAAA,eAAA,CAAA,GAAA,QAAA;AACA,MAAAA,gBAAAA,CAAA,cAAA,CAAA,GAAA,cAAA;AACA,MAAAA,gBAAAA,CAAA,kBAAA,CAAA,GAAA,WAAA;AACA,MAAAA,gBAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AACA,MAAAA,gBAAAA,CAAA,SAAA,CAAA,GAAA,UAAA;AACA,MAAAA,gBAAAA,CAAA,aAAA,CAAA,GAAA,aAAA;IACF,CAAA,EATY,eAAA,KAAA,eAAA,GAAe,EAAA,CAAA,CAAA;;;;;AC1G3B,IAIa,KAAA;AAJb,IAAA,UAAA,GAAA,KAAA,CAAA;;AAIO,IAAM,KAAA,GAAQ,SAAI,GAAA,EAAU,IAAA,EAAY;AAC7C,MAAA,IAAM,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,CAAC,CAAA;AAClC,MAAA,OAAO,GAAA,CAAI,MAAA,CAAc,SAAC,MAAA,EAAQ,SAAS,KAAA,EAAK;AAC9C,QAAA,IAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,SAAS,CAAA;AAC/C,QAAA,IAAI,CAAC,MAAA,CAAO,UAAU,CAAA,EAAG;AACvB,UAAA,MAAA,CAAO,UAAU,IAAI,EAAA;;AAEvB,QAAA,MAAA,CAAO,UAAU,CAAA,CAAE,IAAA,CAAK,OAAO,CAAA;AAC/B,QAAA,OAAO,MAAA;AACT,MAAA,CAAA,EAAG,EAAE,CAAA;AACP,IAAA,CAAA;;;;;ACdA,IAAY,QAAA;AAAZ,IAAA,aAAA,GAAA,KAAA,CAAA;;AAAA,IAAA,CAAA,SAAYC,SAAAA,EAAQ;AAClB,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA;AACA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;IACF,CAAA,EANY,QAAA,KAAA,QAAA,GAAQ,EAAA,CAAA,CAAA;;;;;ACApB,IAEM,MAAA,EA2BN,MAAA;AA7BA,IAAA,WAAA,GAAA,KAAA,CAAA;;;AAEA,IAAM,MAAA,GAAS,mBAAA;AA2Bf,IAAA,MAAA;KAAA,WAAA;AAGE,MAAA,SAAAC,OAAAA,GAAA;AACE,QAAA,IAAA,CAAK,WAAW,QAAA,CAAS,IAAA;AAC3B,MAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,OAAA,GAAA,WAAA;AACE,QAAA,IAAA,CAAK,WAAW,QAAA,CAAS,IAAA;AAC3B,MAAA,CAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,MAAA,GAAA,SAAO,QAAA,EAAkC;AAAlC,QAAA,IAAA,aAAA,MAAA,EAAA;AAAA,UAAA,QAAA,GAAqB,QAAA,CAAS,IAAA;AAAI,QAAA;AACvC,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAClB,MAAA,CAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,GAAA,GAAA,WAAA;AAAI,QAAA,IAAA,OAAA,EAAA;AAAA,QAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,SAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAc;AAAd,UAAA,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA;;AACF,QAAA,IAAI,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,OAAA,EAAS;AACpC,UAAA;;AAEF,QAAA,OAAA,CAAQ,GAAA,CAAI,EAAA,CAAA,MAAA,CAAG,MAAA,EAAM,SAAA,CAAA,CAAA,MAAA,CAAU,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAE,CAAA;AACjD,MAAA,CAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,IAAA,GAAA,WAAA;AAAK,QAAA,IAAA,OAAA,EAAA;AAAA,QAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,SAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAc;AAAd,UAAA,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA;;AACH,QAAA,IAAI,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,IAAA,EAAM;AACjC,UAAA;;AAEF,QAAA,OAAA,CAAQ,IAAA,CAAK,EAAA,CAAA,MAAA,CAAG,MAAA,EAAM,UAAA,CAAA,CAAA,MAAA,CAAW,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAE,CAAA;AACnD,MAAA,CAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,KAAA,GAAA,WAAA;AAAM,QAAA,IAAA,OAAA,EAAA;AAAA,QAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,SAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAc;AAAd,UAAA,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA;;AACJ,QAAA,IAAI,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,KAAA,EAAO;AAClC,UAAA;;AAEF,QAAA,OAAA,CAAQ,KAAA,CAAM,EAAA,CAAA,MAAA,CAAG,MAAA,EAAM,WAAA,CAAA,CAAA,MAAA,CAAY,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAE,CAAA;AACrD,MAAA,CAAA;AAEA,MAAAA,OAAAA,CAAA,SAAA,CAAA,KAAA,GAAA,WAAA;AAAM,QAAA,IAAA,OAAA,EAAA;AAAA,QAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,SAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAc;AAAd,UAAA,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA;;AACJ,QAAA,IAAI,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,KAAA,EAAO;AAClC,UAAA;;AAGF,QAAA,OAAA,CAAQ,GAAA,CAAI,EAAA,CAAA,MAAA,CAAG,MAAA,EAAM,WAAA,CAAA,CAAA,MAAA,CAAY,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAE,CAAA;AACnD,MAAA,CAAA;AACF,MAAA,OAAAA,OAAAA;IAAA,CAAA,GA3CA;;;;;ACtBA,IAYa,gBAAA,EAab,MAAA,EAsDa,YAAA,EAOA,kBAAA,EAeb,eAAA;AArGA,IAAA,WAAA,GAAA,KAAA,CAAA;;;AAQA,IAAA,WAAA,EAAA;AACA,IAAA,aAAA,EAAA;AAGO,IAAM,mBAAmB,WAAA;AAAM,MAAA,OAAC;QACrC,eAAA,EAAiB,EAAA;QACjB,cAAA,EAAgB,GAAA;QAChB,mBAAA,EAAqB,GAAA;QACrB,YAAA,EAAc,qBAAA;AACd,QAAA,QAAA,EAAU,QAAA,CAAS,IAAA;AACnB,QAAA,cAAA,EAAgB,IAAI,MAAA,EAAM;QAC1B,OAAA,EAAS,KAAA;QACT,MAAA,EAAQ,KAAA;QACR,SAAA,EAAW,oBAAA;QACX,UAAA,EAAY,IAAA;QACZ,QAAA,EAAU;;AAX0B,IAAA,CAAA;AAatC,IAAA,MAAA;KAAA,WAAA;AA2BE,MAAA,SAAAC,QAAY,OAAA,EAAsB;;AARxB,QAAA,IAAA,CAAA,OAAA,GAAU,KAAA;AASlB,QAAA,IAAM,gBAAgB,gBAAA,EAAgB;AACtC,QAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AACtB,QAAA,IAAA,CAAK,mBAAA,GAAA,CAAsB,KAAA,OAAA,CAAQ,mBAAA,MAAmB,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,aAAA,CAAc,mBAAA;AACxE,QAAA,IAAA,CAAK,eAAA,GAAkB,OAAA,CAAQ,eAAA,IAAmB,aAAA,CAAc,eAAA;AAChE,QAAA,IAAA,CAAK,cAAA,GAAiB,OAAA,CAAQ,cAAA,IAAkB,aAAA,CAAc,cAAA;AAC9D,QAAA,IAAA,CAAK,YAAA,GAAe,OAAA,CAAQ,YAAA,IAAgB,aAAA,CAAc,YAAA;AAC1D,QAAA,IAAA,CAAK,cAAA,GAAiB,OAAA,CAAQ,cAAA,IAAkB,aAAA,CAAc,cAAA;AAC9D,QAAA,IAAA,CAAK,QAAA,GAAA,CAAW,KAAA,OAAA,CAAQ,QAAA,MAAQ,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,aAAA,CAAc,QAAA;AAClD,QAAA,IAAA,CAAK,cAAc,OAAA,CAAQ,WAAA;AAC3B,QAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA;AACpB,QAAA,IAAA,CAAK,oBAAoB,OAAA,CAAQ,iBAAA;AACjC,QAAA,IAAA,CAAK,UAAU,OAAA,CAAQ,OAAA,KAAY,MAAA,GAAY,OAAA,CAAQ,UAAU,aAAA,CAAc,OAAA;AAC/E,QAAA,IAAA,CAAK,MAAA,GAAA,CAAS,KAAA,OAAA,CAAQ,MAAA,MAAM,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,aAAA,CAAc,MAAA;AAC9C,QAAA,IAAA,CAAK,YAAY,OAAA,CAAQ,SAAA;AACzB,QAAA,IAAA,CAAK,UAAA,GAAa,OAAA,CAAQ,UAAA,IAAc,aAAA,CAAc,UAAA;AACtD,QAAA,IAAA,CAAK,kBAAkB,OAAA,CAAQ,eAAA;AAC/B,QAAA,IAAA,CAAK,oBAAoB,OAAA,CAAQ,iBAAA;AACjC,QAAA,IAAA,CAAK,QAAA,GAAA,CAAW,KAAA,OAAA,CAAQ,QAAA,MAAQ,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,aAAA,CAAc,QAAA;AAClD,QAAA,IAAA,CAAK,cAAA,CAAe,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA;AAExC,QAAA,IAAM,eAAe,kBAAA,CAAmB,OAAA,CAAQ,WAAW,OAAA,CAAQ,UAAA,EAAY,QAAQ,QAAQ,CAAA;AAC/F,QAAA,IAAA,CAAK,aAAa,YAAA,CAAa,UAAA;AAC/B,QAAA,IAAA,CAAK,YAAY,YAAA,CAAa,SAAA;AAChC,MAAA;AA/BA,MAAA,MAAA,CAAA,cAAA,CAAIA,OAAAA,CAAA,SAAA,EAAA,QAAA,EAAM;aAAV,WAAA;AACE,UAAA,OAAO,IAAA,CAAK,OAAA;AACd,QAAA,CAAA;AACA,QAAA,GAAA,EAAA,SAAW,MAAA,EAAe;AACxB,UAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACjB,QAAA,CAAA;;;;AA2BF,MAAA,OAAAA,OAAAA;IAAA,CAAA,GApDA;AAsDO,IAAM,YAAA,GAAe,SAAC,UAAA,EAA4B,QAAA,EAAiB;AACxE,MAAA,IAAI,eAAe,IAAA,EAAM;AACvB,QAAA,OAAO,WAAW,6BAAA,GAAgC,uBAAA;;AAEpD,MAAA,OAAO,WAAW,0BAAA,GAA6B,oBAAA;AACjD,IAAA,CAAA;AAEO,IAAM,kBAAA,GAAqB,SAChC,SAAA,EACA,UAAA,EACA,QAAA,EAA+C;AAF/C,MAAA,IAAA,cAAA,MAAA,EAAA;AAAA,QAAA,SAAA,GAAA,EAAA;AAAc,MAAA;AACd,MAAA,IAAA,eAAA,MAAA,EAAA;AAAA,QAAA,UAAA,GAA6B,kBAAgB,CAAG,UAAA;AAAU,MAAA;AAC1D,MAAA,IAAA,aAAA,MAAA,EAAA;AAAA,QAAA,QAAA,GAAoB,kBAAgB,CAAG,QAAA;AAAQ,MAAA;AAE/C,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,OAAO,EAAE,SAAA,EAAW,UAAA,EAAY,MAAA,EAAS;;AAE3C,MAAA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAM,IAAI,CAAA,CAAE,SAAS,UAAU,CAAA,GAAI,UAAA,GAAa,gBAAA,EAAgB,CAAG,UAAA;AACxF,MAAA,OAAO;QACL,UAAA,EAAY,WAAA;QACZ,SAAA,EAAW,YAAA,CAAa,aAAa,QAAQ;;AAEjD,IAAA,CAAA;AAEA,IAAA,eAAA;KAAA,WAAA;AAOE,MAAA,SAAAC,gBAAAA,GAAA;AACE,QAAA,IAAA,CAAK,GAAA,GAAM;UACT,OAAA,EAAS;AACP,YAAA,SAAA,EAAW;;;AAGjB,MAAA;AAEA,MAAAA,gBAAAA,CAAA,SAAA,CAAA,eAAA,GAAA,SAAwC,KAAQ,KAAA,EAA0B;AACxE,QAAA,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,SAAA,CAAU,GAAG,CAAA,GAAI,KAAA;AACpC,MAAA,CAAA;AACF,MAAA,OAAAA,gBAAAA;IAAA,CAAA,GAlBA;;;;;ACvGM,SAAU,oBAAoB,IAAA,EAAY;AAC9C,EAAA,OAAO,IAAA,IAAQ,OAAO,IAAA,GAAO,GAAA;AAC/B;AAPA,IAAA,gBAAA,GAAA,KAAA,CAAA;;;;;;ICQa,aAAA,EASA,kBAAA,EASA,sBAaA,eAAA,EAQA,YAAA;;;;AAzCb,IAAA,aAAA,EAAA;AAEO,IAAM,aAAA,GAAgB,SAAC,WAAA,EAAe;AAAf,MAAA,IAAA,gBAAA,MAAA,EAAA;AAAA,QAAA,WAAA,GAAA,CAAA;AAAe,MAAA;AAC3C,MAAA,IAAM,KAAA,GAAQ,IAAI,KAAA,EAAK,CAAG,KAAA,IAAS,EAAA;AACnC,MAAA,OAAO,KAAA,CACJ,KAAA,CAAM,IAAI,CAAA,CACV,KAAA,CAAM,IAAI,WAAW,CAAA,CACrB,GAAA,CAAI,SAAC,IAAA,EAAI;AAAK,QAAA,OAAA,KAAK,IAAA,EAAI;MAAT,CAAW,CAAA;AAC9B,IAAA,CAAA;AAGO,IAAM,kBAAA,GAAqB,SAAC,MAAA,EAAqB;AAAK,MAAA,OAAA,WAAA;AACrD,QAAA,IAAA,EAAA,GAAA,QAAA,CAAA,EAAA,EAA4C,MAAA,CAAO,MAAM,CAAA,EAAvC,MAAA,GAAM,EAAA,CAAA,cAAA,EAAE,QAAA,GAAQ,EAAA,CAAA,QAAA;AACxC,QAAA,OAAO;AACL,UAAA,MAAA;AACA,UAAA;;AAEJ,MAAA,CAAA;AAN6D,IAAA,CAAA;AAStD,IAAM,oBAAA,GAAuB,SAAC,GAAA,EAAU,IAAA,EAAY;;AACzD,MAAA,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,KAAK,CAAA;AACvC,MAAA,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;;AAC7B,QAAA,KAAA,IAAmB,KAAA,QAAA,CAAA,IAAA,CAAK,KAAA,CAAM,GAAG,CAAC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,IAAA,CAAA,EAAA,CAAA,MAAA,EAAA,GAAA,EAAA,CAAA,MAAA,EAAE;AAA/B,UAAA,IAAM,OAAI,EAAA,CAAA,KAAA;AACb,UAAA,IAAI,QAAQ,GAAA,EAAK;AACf,YAAA,GAAA,GAAM,IAAI,IAAI,CAAA;AACT,UAAA,CAAA,MAAA;AACL,YAAA;;;;;;;;;;;;AAGJ,MAAA,OAAO,GAAA;AACT,IAAA,CAAA;AAEO,IAAM,eAAA,GAAkB,SAAC,MAAA,EAAuB,KAAA,EAAoB;AAAK,MAAA,OAAA,WAAA;;AAC9E,QAAA,IAAM,MAA8B,EAAA;;AACpC,UAAA,KAAA,IAAmB,OAAA,GAAA,QAAA,CAAA,KAAK,CAAA,EAAA,YAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,SAAA,CAAA,IAAA,EAAA,SAAA,GAAA,OAAA,CAAA,MAAA,EAAE;AAArB,YAAA,IAAM,OAAI,SAAA,CAAA,KAAA;AACb,YAAA,GAAA,CAAI,IAAI,CAAA,GAAI,oBAAA,CAAqB,MAAA,EAAQ,IAAI,CAAA;;;;;;;;;;;AAE/C,QAAA,OAAO,GAAA;AACT,MAAA,CAAA;AANgF,IAAA,CAAA;AAQzE,IAAM,eACX,SACE,EAAA,EACA,MAAA,EACA,YAAA,EACA,WACA,SAAA,EAAqB;AAArB,MAAA,IAAA,cAAA,MAAA,EAAA;AAAA,QAAA,SAAA,GAAA,IAAA;AAAqB,MAAA;AAEvB,MAAA,OAAA,WAAA;AAAC,QAAA,IAAA,OAAA,EAAA;AAAA,QAAA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,SAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAU;AAAV,UAAA,IAAA,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA;;AACO,QAAA,IAAA,KAAuB,YAAA,EAAY,EAAjC,SAAM,EAAA,CAAA,MAAA,EAAE,WAAQ,EAAA,CAAA,QAAA;AAExB,QAAA,IAAK,YAAY,QAAA,GAAW,QAAA,CAAS,SAAU,CAAC,QAAA,IAAY,CAAC,MAAA,EAAQ;AACnE,UAAA,OAAO,EAAA,CAAG,KAAA,CAAM,SAAA,EAAW,IAAI,CAAA;;AAEjC,QAAA,IAAM,YAAA,GAA6B;UACjC,IAAA,EAAM,sBAAA;UACN,IAAA,EAAM,MAAA;AACN,UAAA,IAAA;AACA,UAAA,UAAA,EAAY,cAAc,CAAC,CAAA;UAC3B,IAAA,EAAM;YACJ,KAAA,EAAA,iBAAO,IAAI,IAAA,EAAI,EAAG,WAAA;;AAEpB,UAAA,MAAA,EAAQ;;AAEV,QAAA,IAAI,SAAA,IAAa,aAAa,MAAA,EAAQ;AACpC,UAAA,YAAA,CAAa,MAAA,CAAO,SAAS,SAAA,EAAS;;AAExC,QAAA,IAAM,MAAA,GAAS,EAAA,CAAG,KAAA,CAAM,SAAA,EAAW,IAAI,CAAA;AACvC,QAAA,IAAI,MAAA,IAAW,OAAe,OAAA,EAAS;AAEpC,UAAA,MAAA,CAAe,OAAA,CAAQ,KAAK,WAAA;AAC3B,YAAA,IAAI,SAAA,IAAa,aAAa,MAAA,EAAQ;AACpC,cAAA,YAAA,CAAa,MAAA,CAAO,QAAQ,SAAA,EAAS;;AAEvC,YAAA,IAAI,aAAa,IAAA,EAAM;AACrB,cAAA,YAAA,CAAa,IAAA,CAAK,GAAA,GAAA,iBAAM,IAAI,IAAA,IAAO,WAAA,EAAW;;AAEhD,YAAA,MAAA,CAAO,MAAM,IAAA,CAAK,SAAA,CAAU,YAAA,EAAc,IAAA,EAAM,CAAC,CAAC,CAAA;UACpD,CAAC,CAAA;AACI,QAAA,CAAA,MAAA;AACL,UAAA,IAAI,SAAA,IAAa,aAAa,MAAA,EAAQ;AACpC,YAAA,YAAA,CAAa,MAAA,CAAO,QAAQ,SAAA,EAAS;;AAEvC,UAAA,IAAI,aAAa,IAAA,EAAM;AACrB,YAAA,YAAA,CAAa,IAAA,CAAK,GAAA,GAAA,iBAAM,IAAI,IAAA,IAAO,WAAA,EAAW;;AAEhD,UAAA,MAAA,CAAO,MAAM,IAAA,CAAK,SAAA,CAAU,YAAA,EAAc,IAAA,EAAM,CAAC,CAAC,CAAA;;AAEpD,QAAA,OAAO,MAAA;AACT,MAAA,CAAA;AAzCA,IAAA,CAAA;;;;;ACnBF,SAAS,gBAAgB,KAAA,EAAc;AACrC,EAAA,IAAI,KAAA,YAAiB,KAAA;AAAO,IAAA,OAAO,KAAA,CAAM,OAAA;AACzC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AAEM,SAAU,sBAAsB,GAAA,EAAa;AACjD,EAAA,IAAI,kBAAA,GAAqB,EAAA;AACzB,EAAA,IAAI;AACF,IAAA,IAAI,UAAU,GAAA,EAAK;AACjB,MAAA,kBAAA,GAAqB,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,IAAA,EAAM,MAAM,CAAC,CAAA;;WAEvD,EAAA,EAAM;;AAGR,EAAA,OAAO,kBAAA;AACT;AAEA,IAAA,WAAA;;;;AAlDA,IAAA,WAAA,EAAA;AAQA,IAAA,aAAA,EAAA;AAOA,IAAA,cAAA,EAAA;AACA,IAAA,UAAA,EAAA;AACA,IAAA,mBAAA,EAAA;AACA,IAAA,WAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAIA,IAAA,gBAAA,EAAA;AACA,IAAA,UAAA,EAAA;AA0BA,IAAA,WAAA;KAAA,WAAA;AAwBE,MAAA,SAAAC,aAAY,OAAA,EAAmD;AAvB/D,QAAA,IAAA,CAAA,IAAA,GAAO,WAAA;AACP,QAAA,IAAA,CAAA,IAAA,GAAO,aAAA;AAEP,QAAA,IAAA,CAAA,YAAA,GAAe,GAAA;AACf,QAAA,IAAA,CAAA,eAAA,GAAkB,GAAA;AAClB,QAAA,IAAA,CAAA,UAAA,GAAa,EAAA;AASb,QAAA,IAAA,CAAA,UAAA,GAAmD,IAAA;AAEnD,QAAA,IAAA,CAAA,gBAAA,GAAmB,CAAA;AAGnB,QAAA,IAAA,CAAA,OAAA,GAAgD,IAAA;AAChD,QAAA,IAAA,CAAA,QAAmB,EAAA;AAIjB,QAAA,IAAA,CAAK,oBAAoB,OAAA,KAAO,IAAA,IAAP,OAAA,KAAO,MAAA,GAAA,SAAP,OAAA,CAAS,iBAAA;AACpC,MAAA;AAEM,MAAAA,YAAAA,CAAA,SAAA,CAAA,KAAA,GAAN,SAAY,MAAA,EAAe;;;;;;;;AACzB,gBAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,gBAAA,IAAA,CAAK,UAAA,GAAa,EAAA,CAAA,MAAA,CAAG,cAAA,EAAc,GAAA,CAAA,CAAA,MAAA,CAAI,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,CAAA,EAAG,EAAE,CAAC,CAAA;AAC3D,gBAAA,OAAA,CAAA,CAAA,EAAA,CAAM,EAAA,GAAA,IAAA,CAAK,OAAO,eAAA,MAAe,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,GAAA,CAAI,IAAA,CAAK,UAAU,CAAC,CAAA;;AAAhE,gBAAA,MAAA,GAAS,GAAA,IAAA,EAAA;AACf,gBAAA,IAAI,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC/B,kBAAA,KAAK,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,SAAC,KAAA,EAAY;AAAK,oBAAA,OAAA,KAAA,CAAK,QAAQ,KAAK,CAAA;kBAAlB,CAAmB,CAAC,EAAE,KAAA,EAAK;;AAG3E,gBAAA,OAAA,CAAA,CAAA,EAAO,OAAA,CAAQ,OAAA,CAAQ,MAAS,CAAC,CAAA;;;;;AAGnC,MAAAA,YAAAA,CAAA,SAAA,CAAA,OAAA,GAAA,SAAQ,KAAA,EAAY;AAApB,QAAA,IAAA,KAAA,GAAA,IAAA;AAEE,QAAA,IAAI,CAAC,MAAM,SAAA,EAAW;AACpB,UAAA,KAAA,CAAM,YAAY,IAAA,EAAI;;AAGxB,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAC,OAAA,EAAO;AACzB,UAAA,IAAM,OAAA,GAAU;AACd,YAAA,KAAA;YACA,QAAA,EAAU,CAAA;AACV,YAAA,QAAA,EAAU,SAAC,MAAA,EAAc;AAAK,cAAA,OAAA,QAAQ,MAAM,CAAA;AAAd,YAAA,CAAA;YAC9B,OAAA,EAAS;;AAEX,UAAA,KAAA,CAAK,KAAA,CAAM,KAAK,OAAO,CAAA;AACvB,UAAA,KAAA,CAAK,QAAA,CAAS,KAAA,CAAK,MAAA,CAAO,mBAAmB,CAAA;AAC7C,UAAA,KAAA,CAAK,UAAA,EAAU;QACjB,CAAC,CAAA;AACH,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,iCAAA,GAAA,SAAkC,IAAA,EAAe;AAAjD,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,SAAC,OAAA,EAAO;AACzB,UAAA,OAAA,CAAQ,QAAA,IAAY,CAAA;AACpB,UAAA,IAAI,OAAA,CAAQ,QAAA,GAAW,KAAA,CAAK,MAAA,CAAO,eAAA,EAAiB;AAClD,YAAA,OAAO,IAAA;;AAET,UAAA,KAAK,MAAK,cAAA,CAAe,CAAC,OAAO,CAAA,EAAG,KAAK,4BAA4B,CAAA;AACrE,UAAA,OAAO,KAAA;QACT,CAAC,CAAA;AACH,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,cAAA,GAAA,SAAe,IAAA,EAAe;AAA9B,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAA,CAAK,OAAA,CAAQ,SAAC,OAAA,EAAO;AACnB,UAAA,KAAA,CAAK,QAAA,CAAS,QAAQ,OAAA,KAAY,CAAA,GAAI,MAAK,MAAA,CAAO,mBAAA,GAAsB,QAAQ,OAAO,CAAA;QACzF,CAAC,CAAA;AACH,MAAA,CAAA;AAMA,MAAAA,YAAAA,CAAA,SAAA,CAAA,QAAA,GAAA,SAAS,OAAA,EAAe;AAAxB,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACvB,UAAA;;AAGF,QAAA,IAAI,KAAK,UAAA,KAAe,IAAA,IAAS,KAAK,UAAA,IAAc,OAAA,GAAU,KAAK,gBAAA,EAAmB;AACpF,UAAA,IAAI,KAAK,UAAA,EAAY;AACnB,YAAA,YAAA,CAAa,KAAK,UAAU,CAAA;;AAE9B,UAAA,IAAA,CAAK,gBAAA,GAAmB,OAAA;AACxB,UAAA,IAAA,CAAK,UAAA,GAAa,WAAW,WAAA;AAC3B,YAAA,KAAA,CAAK,KAAA,GAAQ,KAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAC,OAAA,EAAO;AAClC,cAAA,OAAA,CAAQ,OAAA,GAAU,CAAA;AAClB,cAAA,OAAO,OAAA;YACT,CAAC,CAAA;AACD,YAAA,KAAK,KAAA,CAAK,MAAM,IAAI,CAAA;AACtB,UAAA,CAAA,EAAG,OAAO,CAAA;AACV,UAAA;;AAEJ,MAAA,CAAA;AAGA,MAAAA,YAAAA,CAAA,SAAA,CAAA,aAAA,GAAA,WAAA;AACE,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AAC1B,MAAA,CAAA;AAGM,MAAAA,YAAAA,CAAA,SAAA,CAAA,KAAA,GAAN,SAAY,QAAA,EAAgB;AAAhB,QAAA,IAAA,aAAA,MAAA,EAAA;AAAA,UAAA,QAAA,GAAA,KAAA;AAAgB,QAAA;;;;;;;AAE1B,gBAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACvB,kBAAA,IAAA,CAAK,aAAA,EAAa;AAClB,kBAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,KAAA,CAAM,+BAA+B,CAAA;AAChE,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAGF,gBAAA,IAAI,KAAK,OAAA,EAAS;AAChB,kBAAA,IAAA,CAAK,aAAA,EAAa;AAClB,kBAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,KAAA,CAAM,yDAAyD,CAAA;AAC1F,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAGF,gBAAA,IAAA,CAAK,UAAU,IAAA,CAAK,UAAA;AACpB,gBAAA,IAAA,CAAK,aAAA,EAAa;AAEZ,gBAAA,IAAA,GAAkB,EAAA;AAClB,gBAAA,KAAA,GAAmB,EAAA;AACzB,gBAAA,IAAA,CAAK,KAAA,CAAM,OAAA,CAAQ,SAAC,OAAA,EAAO;AAAK,kBAAA,OAAC,OAAA,CAAQ,YAAY,CAAA,GAAI,IAAA,CAAK,KAAK,OAAO,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;gBAAhE,CAAkE,CAAA;AAE5F,gBAAA,OAAA,GAAU,KAAA,CAAM,IAAA,EAAM,IAAA,CAAK,MAAA,CAAO,cAAc,CAAA;AAItD,gBAAA,OAAA,CAAA,CAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,SAAO,SAAS,KAAA,EAAK;AAAA,kBAAA,OAAA,SAAA,CAAA,KAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA;;;;AACxC,0BAAA,OAAA,CAAA,GAAM,OAAO,CAAA;;AAAb,0BAAAf,IAAA,IAAA,EAAA;AACO,0BAAA,OAAA,CAAA,CAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,QAAQ,CAAC,CAAA;;AAAvC,0BAAA,OAAA,CAAA,CAAA,EAAOA,GAAAA,CAAA,IAAA,EAAgC,CAAA;;;;mBACtC,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAA;;AAHrB,gBAAA,EAAA,CAAA,IAAA,EAAA;AAMA,gBAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAEf,gBAAA,IAAA,CAAK,cAAA,CAAe,KAAK,KAAK,CAAA;;;;;;;;;AAG1B,MAAAe,YAAAA,CAAA,SAAA,CAAA,IAAA,GAAN,SAAW,MAAiB,QAAA,EAAe;;AAAf,QAAA,IAAA,aAAA,MAAA,EAAA;AAAA,UAAA,QAAA,GAAA,IAAA;AAAe,QAAA;;;;;;AACzC,gBAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,MAAA,EAAQ;AACvB,kBAAA,OAAA,CAAA,CAAA,EAAO,IAAA,CAAK,eAAe,IAAA,EAAM,GAAA,EAAK,uBAAuB,CAAC,CAAA;;AAG1D,gBAAA,OAAA,GAAU;AACd,kBAAA,OAAA,EAAS,KAAK,MAAA,CAAO,MAAA;kBACrB,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,SAAC,OAAA,EAAO;AAEvB,oBAAA,IAAMf,GAAAA,GAAkC,OAAA,CAAQ,KAAA,CAAA,CAAnCA,GAAAA,CAAA,KAAA,CAAA,KAAK,iBAAA,GAAiB,MAAA,CAAAA,GAAAA,EAA7B,CAAA,OAAA,CAA+B;AACrC,oBAAA,OAAO,iBAAA;kBACT,CAAC,CAAA;kBACD,OAAA,EAAS;AACP,oBAAA,aAAA,EAAe,KAAK,MAAA,CAAO;;kBAE7B,kBAAA,EAAA,iBAAoB,IAAI,IAAA,EAAI,EAAG,WAAA,EAAW;AAC1C,kBAAA,gBAAA,EAAkB,KAAK,MAAA,CAAO;;AAEhC,gBAAA,IAAA,CAAK,MAAA,CAAO,eAAA,GAAkB,IAAI,eAAA,EAAe;;;;AAGvC,gBAAA,SAAA,GAAc,kBAAA,CAAmB,IAAA,CAAK,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,OAAO,UAAA,EAAY,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,CAAC,SAAA;AACjG,gBAAA,OAAA,CAAA,GAAM,IAAA,CAAK,MAAA,CAAO,kBAAkB,IAAA,CAAK,SAAA,EAAW,OAAO,CAAC,CAAA;;AAAlE,gBAAA,GAAA,GAAM,GAAA,IAAA,EAAA;AACZ,gBAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,kBAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,CAAA,EAAG,wBAAwB,CAAA;AACrD,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAEF,gBAAA,IAAI,CAAC,QAAA,EAAU;AACb,kBAAA,IAAI,UAAU,GAAA,EAAK;AACjB,oBAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,GAAA,CAAI,UAAA,EAAY,GAAA,MAAA,CAAG,GAAA,CAAI,MAAA,EAAM,IAAA,CAAA,CAAA,MAAA,CAAK,qBAAA,CAAsB,GAAG,CAAC,CAAE,CAAA;AACnF,kBAAA,CAAA,MAAA;AACL,oBAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,GAAA,CAAI,UAAA,EAAY,IAAI,MAAM,CAAA;;AAEtD,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAEF,gBAAA,IAAA,CAAK,cAAA,CAAe,KAAK,IAAI,CAAA;;;;AAEvB,gBAAA,YAAA,GAAe,gBAAgB,GAAC,CAAA;AACtC,gBAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,KAAA,CAAM,YAAY,CAAA;AAE7C,gBAAA,CAAA,EAAA,GAAA,KAAK,iBAAA,MAAiB,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAA,CAAY,gDAAA,EAAkD;kBACpF,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,SAAC,OAAA,EAAO;AAAK,oBAAA,OAAA,QAAQ,KAAA,CAAM,UAAA;kBAAd,CAAwB,CAAA;kBACtD,OAAA,EAAS,YAAA;AACT,kBAAA,WAAA,EAAa,aAAA;AACd,iBAAA,CAAA;AAED,gBAAA,IAAA,CAAK,cAAA,CAAe,EAAE,MAAA,EAAQ,MAAA,CAAO,QAAQ,UAAA,EAAY,CAAA,IAAK,IAAI,CAAA;;;;;;;;;;;AAItE,MAAAe,YAAAA,CAAA,SAAA,CAAA,cAAA,GAAA,SAAe,KAAe,IAAA,EAAe;;AAC3C,QAAA,IAAI,CAAC,mBAAA,CAAoB,GAAA,CAAI,UAAU,CAAA,EAAG;AACxC,UAAA,CAAA,EAAA,GAAA,KAAK,iBAAA,MAAiB,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAA,CAAY,+BAAA,EAAiC;YACnE,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,SAAC,OAAA,EAAO;AAAK,cAAA,OAAA,QAAQ,KAAA,CAAM,UAAA;YAAd,CAAwB,CAAA;AACtD,YAAA,IAAA,EAAM,GAAA,CAAI,UAAA;AACV,YAAA,MAAA,EAAQ,GAAA,CAAI,MAAA;AACZ,YAAA,IAAA,EAAM,sBAAsB,GAAG,CAAA;AAC/B,YAAA,WAAA,EAAa,aAAA;AACd,WAAA,CAAA;;AAGK,QAAA,IAAA,SAAW,GAAA,CAAG,MAAA;AAEtB,QAAA,QAAQ,MAAA;AACN,UAAA,KAAK,OAAO,OAAA,EAAS;AACnB,YAAA,IAAA,CAAK,qBAAA,CAAsB,KAAK,IAAI,CAAA;AACpC,YAAA;;AAEF,UAAA,KAAK,OAAO,OAAA,EAAS;AACnB,YAAA,IAAA,CAAK,qBAAA,CAAsB,KAAK,IAAI,CAAA;AACpC,YAAA;;AAEF,UAAA,KAAK,OAAO,eAAA,EAAiB;AAC3B,YAAA,IAAA,CAAK,6BAAA,CAA8B,KAAK,IAAI,CAAA;AAC5C,YAAA;;AAEF,UAAA,KAAK,OAAO,SAAA,EAAW;AACrB,YAAA,IAAA,CAAK,uBAAA,CAAwB,KAAK,IAAI,CAAA;AACtC,YAAA;;UAEF,SAAS;AAEP,YAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,CAAA,0BAAA,CAAA,CAAA,MAAA,CAA6B,MAAA,EAAM,iBAAA,CAAA,CAAA,MAAA,CAAkB,IAAA,CAAK,MAAA,EAAM,WAAA,CAAW,CAAA;AAC3G,YAAA,IAAA,CAAK,oBAAoB,IAAI,CAAA;AAC7B,YAAA;;;AAGN,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,qBAAA,GAAA,SAAsB,KAAsB,IAAA,EAAe;AACzD,QAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,GAAA,CAAI,UAAA,EAAY,eAAe,CAAA;AAC3D,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,qBAAA,GAAA,SAAsB,KAAsB,IAAA,EAAe;AAA3D,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAI,GAAA,CAAI,KAAK,YAAA,IAAgB,GAAA,CAAI,KAAK,KAAA,CAAM,UAAA,CAAW,eAAe,CAAA,EAAG;AACvE,UAAA,IAAA,CAAK,eAAe,IAAA,EAAM,GAAA,CAAI,UAAA,EAAY,GAAA,CAAI,KAAK,KAAK,CAAA;AACxD,UAAA;;AAGF,QAAA,IAAM,SAAA,GAAY,cAAA,aAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAA,OACb,MAAA,CAAO,MAAA,CAAO,IAAI,IAAA,CAAK,uBAAuB,CAAC,CAAA,EAAA,KAAA,GAAA,MAAA,CAC/C,MAAA,CAAO,OAAO,GAAA,CAAI,IAAA,CAAK,uBAAuB,CAAC,CAAA,EAAA,KAAA,CAAA,EAAA,MAAA,CAC/C,OAAO,MAAA,CAAO,GAAA,CAAI,KAAK,0BAA0B,CAAC,GAAA,KAAA,CAAA,EAAA,OAClD,GAAA,CAAI,IAAA,CAAK,cAAc,CAAA,EAAA,KAAA,EAC1B,IAAA,EAAI;AACN,QAAA,IAAM,YAAA,GAAe,IAAI,GAAA,CAAI,SAAS,CAAA;AAEtC,QAAA,IAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,SAAC,SAAS,KAAA,EAAK;AACvC,UAAA,IAAI,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA,EAAG;AAC3B,YAAA,KAAA,CAAK,cAAA,CAAe,CAAC,OAAO,CAAA,EAAG,IAAI,UAAA,EAAY,GAAA,CAAI,KAAK,KAAK,CAAA;AAC7D,YAAA;;AAEF,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAED,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AAEpB,UAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,qBAAA,CAAsB,GAAG,CAAC,CAAA;;AAG5D,QAAA,IAAM,OAAA,GAAU,IAAA,CAAK,iCAAA,CAAkC,KAAK,CAAA;AAC5D,QAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAC7B,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,6BAAA,GAAA,SAA8B,KAA8B,IAAA,EAAe;AACzE,QAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,UAAA,IAAA,CAAK,eAAe,IAAA,EAAM,GAAA,CAAI,UAAA,EAAY,GAAA,CAAI,KAAK,KAAK,CAAA;AACxD,UAAA;;AAIF,QAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,qBAAA,CAAsB,GAAG,CAAC,CAAA;AAE1D,QAAA,IAAA,CAAK,OAAO,cAAA,IAAkB,CAAA;AAE9B,QAAA,IAAM,OAAA,GAAU,IAAA,CAAK,iCAAA,CAAkC,IAAI,CAAA;AAC3D,QAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAC7B,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,uBAAA,GAAA,SAAwB,KAAwB,IAAA,EAAe;AAA/D,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,uBAAuB,CAAA;AAChE,QAAA,IAAM,aAAA,GAAgB,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,KAAK,yBAAyB,CAAA;AACpE,QAAA,IAAM,cAAA,GAAiB,IAAI,IAAA,CAAK,eAAA;AAChC,QAAA,IAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,WAAW,CAAA;AAC1C,QAAA,IAAM,gBAAA,GAAmB,IAAI,GAAA,CAAI,aAAa,CAAA;AAC9C,QAAA,IAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,cAAc,CAAA;AAEhD,QAAA,IAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,SAAC,SAAS,KAAA,EAAK;AACvC,UAAA,IACG,QAAQ,KAAA,CAAM,OAAA,IAAW,cAAA,CAAe,GAAA,CAAI,QAAQ,KAAA,CAAM,OAAO,CAAA,IACjE,OAAA,CAAQ,MAAM,SAAA,IAAa,gBAAA,CAAiB,IAAI,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,EACxE;AACA,YAAA,KAAA,CAAK,cAAA,CAAe,CAAC,OAAO,CAAA,EAAG,IAAI,UAAA,EAAY,GAAA,CAAI,KAAK,KAAK,CAAA;AAC7D,YAAA;;AAEF,UAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AAChC,YAAA,OAAA,CAAQ,UAAU,KAAA,CAAK,eAAA;;AAEzB,UAAA,OAAO,IAAA;QACT,CAAC,CAAA;AAED,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AAEpB,UAAA,IAAA,CAAK,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,qBAAA,CAAsB,GAAG,CAAC,CAAA;;AAG5D,QAAA,IAAM,OAAA,GAAU,IAAA,CAAK,iCAAA,CAAkC,KAAK,CAAA;AAC5D,QAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAC7B,MAAA,CAAA;AAEA,MAAAA,YAAAA,CAAA,SAAA,CAAA,mBAAA,GAAA,SAAoB,IAAA,EAAe;AAAnC,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,SAAC,OAAA,EAAO;AAC7B,UAAA,OAAA,CAAQ,OAAA,GAAU,OAAA,CAAQ,QAAA,GAAW,KAAA,CAAK,YAAA;AAC1C,UAAA,OAAO,OAAA;QACT,CAAC,CAAA;AAED,QAAA,IAAM,OAAA,GAAU,IAAA,CAAK,iCAAA,CAAkC,KAAK,CAAA;AAC5D,QAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAC7B,MAAA,CAAA;AAEA,MAAAA,aAAA,SAAA,CAAA,cAAA,GAAA,SAAe,IAAA,EAAiB,MAAc,OAAA,EAAe;;AAE3D,QAAA,IAAI,CAAC,mBAAA,CAAoB,IAAI,CAAA,EAAG;AAC9B,UAAA,CAAA,EAAA,GAAA,IAAA,CAAK,iBAAA,MAAiB,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAA,CAAU,0BAAA,EAA4B,IAAA,CAAK,MAAM,CAAA;AACzE,UAAA,CAAA,EAAA,GAAA,KAAK,iBAAA,MAAiB,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAA,CAAY,0BAAA,EAA4B;YAC9D,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,SAAC,OAAA,EAAO;AAAK,cAAA,OAAA,QAAQ,KAAA,CAAM,UAAA;YAAd,CAAwB,CAAA;AACtD,YAAA,IAAA;AACA,YAAA,OAAA;AACA,YAAA,WAAA,EAAa,aAAA;AACd,WAAA,CAAA;AACI,QAAA,CAAA,MAAA;AACL,UAAA,CAAA,EAAA,GAAA,IAAA,CAAK,iBAAA,MAAiB,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAA,CAAU,uBAAA,EAAyB,IAAA,CAAK,MAAM,CAAA;;AAExE,QAAA,IAAA,CAAK,aAAa,IAAI,CAAA;AACtB,QAAA,IAAA,CAAK,OAAA,CAAQ,SAAC,OAAA,EAAO;AAAK,UAAA,OAAA,QAAQ,QAAA,CAAS,WAAA,CAAY,QAAQ,KAAA,EAAO,IAAA,EAAM,OAAO,CAAC,CAAA;QAA1D,CAA2D,CAAA;AACvF,MAAA,CAAA;AASA,MAAAA,YAAAA,CAAA,SAAA,CAAA,UAAA,GAAA,WAAA;AACE,QAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,eAAA,EAAiB;AAChC,UAAA;;AAGF,QAAA,IAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAC,OAAA,EAAO;AAAK,UAAA,OAAA,OAAA,CAAQ,KAAA;QAAR,CAAa,CAAA;AAC/D,QAAA,KAAK,KAAK,MAAA,CAAO,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,YAAY,aAAa,CAAA;AACrE,MAAA,CAAA;AAKA,MAAAA,YAAAA,CAAA,SAAA,CAAA,YAAA,GAAA,SAAa,cAAA,EAAyB;AACpC,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,CACtB,SAAC,aAAA,EAAa;AAAK,UAAA,OAAA,CAAC,cAAA,CAAe,IAAA,CAAK,SAAC,OAAA,EAAO;AAAK,YAAA,OAAA,OAAA,CAAQ,KAAA,CAAM,SAAA,KAAc,aAAA,CAAc,KAAA,CAAM,SAAA;UAAhD,CAAyD,CAAA;QAA3F,CAA4F,CAAA;AAGjH,QAAA,IAAA,CAAK,UAAA,EAAU;AACjB,MAAA,CAAA;AACF,MAAA,OAAAA,YAAAA;IAAA,CAAA,GA/WA;;;;;ACjDA,IAKA,aAAA;AALA,IAAA,SAAA,GAAA,KAAA,CAAA;;;AAGA,IAAA,gBAAA,EAAA;AAEA,IAAA,aAAA;KAAA,WAAA;AAAA,MAAA,SAAAC,cAAAA,GAAA;AAqGA,MAAA;AApGE,MAAAA,cAAAA,CAAA,SAAA,CAAA,IAAA,GAAA,SAAK,YAAoB,QAAA,EAAiB;AACxC,QAAA,OAAO,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAC7B,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,aAAA,GAAA,SAAc,YAAA,EAAiC;;AAC7C,QAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AACpC,UAAA,OAAO,IAAA;;AAGT,QAAA,IAAM,UAAA,GAAa,aAAa,IAAA,IAAQ,CAAA;AACxC,QAAA,IAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,UAAU,CAAA;AAE1C,QAAA,QAAQ,MAAA;AACN,UAAA,KAAK,MAAA,CAAO,OAAA;AACV,YAAA,OAAO;AACL,cAAA,MAAA;AACA,cAAA,UAAA;cACA,IAAA,EAAM;AACJ,gBAAA,cAAA,EAAA,CAAgB,KAAA,YAAA,CAAa,eAAA,MAAe,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,CAAA;AAChD,gBAAA,gBAAA,EAAA,CAAkB,KAAA,YAAA,CAAa,kBAAA,MAAkB,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,CAAA;AACrD,gBAAA,gBAAA,EAAA,CAAkB,KAAA,YAAA,CAAa,kBAAA,MAAkB,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI;;;AAI3D,UAAA,KAAK,MAAA,CAAO,OAAA;AACV,YAAA,OAAO;AACL,cAAA,MAAA;AACA,cAAA,UAAA;cACA,IAAA,EAAM;AACJ,gBAAA,KAAA,EAAA,CAAO,KAAA,YAAA,CAAa,KAAA,MAAK,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,EAAA;AAC7B,gBAAA,YAAA,EAAA,CAAc,KAAA,YAAA,CAAa,aAAA,MAAa,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,EAAA;AAC5C,gBAAA,uBAAA,EAAA,CAAyB,KAAA,YAAA,CAAa,0BAAA,MAA0B,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACpE,gBAAA,uBAAA,EAAA,CAAyB,KAAA,YAAA,CAAa,0BAAA,MAA0B,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACpE,gBAAA,0BAAA,EAAA,CAA4B,KAAA,YAAA,CAAa,8BAAA,MAA8B,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AAC3E,gBAAA,YAAA,EAAA,CAAc,KAAA,YAAA,CAAa,aAAA,MAAa,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,CAAA;AAC5C,gBAAA,yBAAA,EAAA,CAA2B,KAAA,YAAA,CAAa,4BAAA,MAA4B,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACxE,gBAAA,eAAA,EAAA,CAAiB,KAAA,YAAA,CAAa,gBAAA,MAAgB,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AAClD,gBAAA,cAAA,EAAA,CAAgB,KAAA,YAAA,CAAa,eAAA,MAAe,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AAChD,gBAAA,gBAAA,EAAA,CAAkB,KAAA,YAAA,CAAa,iBAAA,MAAiB,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACpD,gBAAA,eAAA,EAAA,CAAiB,KAAA,YAAA,CAAa,gBAAA,MAAgB,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI;;;AAGxD,UAAA,KAAK,MAAA,CAAO,eAAA;AACV,YAAA,OAAO;AACL,cAAA,MAAA;AACA,cAAA,UAAA;cACA,IAAA,EAAM;AACJ,gBAAA,KAAA,EAAA,CAAO,KAAA,YAAA,CAAa,KAAA,MAAK,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI;;;AAGnC,UAAA,KAAK,MAAA,CAAO,SAAA;AACV,YAAA,OAAO;AACL,cAAA,MAAA;AACA,cAAA,UAAA;cACA,IAAA,EAAM;AACJ,gBAAA,KAAA,EAAA,CAAO,KAAA,YAAA,CAAa,KAAA,MAAK,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,EAAA;AAC7B,gBAAA,YAAA,EAAA,CAAc,KAAA,YAAA,CAAa,aAAA,MAAa,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,CAAA;AAC5C,gBAAA,gBAAA,EAAA,CAAkB,KAAA,YAAA,CAAa,iBAAA,MAAiB,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACpD,gBAAA,cAAA,EAAA,CAAgB,KAAA,YAAA,CAAa,eAAA,MAAe,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AAChD,gBAAA,yBAAA,EAAA,CAA2B,KAAA,YAAA,CAAa,4BAAA,MAA4B,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACxE,gBAAA,uBAAA,EAAA,CAAyB,KAAA,YAAA,CAAa,0BAAA,MAA0B,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,EAAA;AACpE,gBAAA,eAAA,EAAA,CAAiB,KAAA,YAAA,CAAa,gBAAA,MAAgB,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI;;;AAGxD,UAAA,KAAK,MAAA,CAAO,OAAA;AACZ,UAAA;AACE,YAAA,OAAO;AACL,cAAA,MAAA;AACA,cAAA;;;AAGR,MAAA,CAAA;AAEA,MAAAA,cAAAA,CAAA,SAAA,CAAA,WAAA,GAAA,SAAY,IAAA,EAAY;AACtB,QAAA,IAAI,mBAAA,CAAoB,IAAI,CAAA,EAAG;AAC7B,UAAA,OAAO,MAAA,CAAO,OAAA;;AAGhB,QAAA,IAAI,SAAS,GAAA,EAAK;AAChB,UAAA,OAAO,MAAA,CAAO,SAAA;;AAGhB,QAAA,IAAI,SAAS,GAAA,EAAK;AAChB,UAAA,OAAO,MAAA,CAAO,eAAA;;AAGhB,QAAA,IAAI,SAAS,GAAA,EAAK;AAChB,UAAA,OAAO,MAAA,CAAO,OAAA;;AAGhB,QAAA,IAAI,IAAA,IAAQ,GAAA,IAAO,IAAA,GAAO,GAAA,EAAK;AAC7B,UAAA,OAAO,MAAA,CAAO,OAAA;;AAGhB,QAAA,IAAI,QAAQ,GAAA,EAAK;AACf,UAAA,OAAO,MAAA,CAAO,MAAA;;AAGhB,QAAA,OAAO,MAAA,CAAO,OAAA;AAChB,MAAA,CAAA;AACF,MAAA,OAAAA,cAAAA;IAAA,CAAA,GArGA;;;;;ACTA,IAGY,UAAA;AAHZ,IAAA,gBAAA,GAAA,KAAA,CAAA;;AAGA,IAAA,CAAA,SAAYC,WAAAA,EAAU;AACpB,MAAAA,WAAAA,CAAA,IAAA,CAAA,GAAA,IAAA;AACA,MAAAA,WAAAA,CAAA,IAAA,CAAA,GAAA,IAAA;AAIA,MAAAA,WAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;IACF,CAAA,EAPY,UAAA,KAAA,UAAA,GAAU,EAAA,CAAA,CAAA;;;;;ACHtB,IAAa,eAAA;AAAb,IAAA,YAAA,GAAA,KAAA,CAAA;;AAAO,IAAM,eAAA,GAAkB,IAAA;;;;;ACA/B,IAAA,QAAA,GAAA,KAAA,CAAA;;;AAIA,IAAA,aAAA,EAAA;AACA,IAAA,YAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AAEA,IAAA,WAAA,EAAA;AAUA,IAAA,mBAAA,EAAA;AACA,IAAA,UAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAcA,IAAA,SAAA,EAAA;AAKA,IAAA,aAAA,EAAA;AAGA,IAAA,UAAA,EAAA;AAUA,IAAA,gBAAA,EAAA;AACA,IAAA,YAAA,EAAA;;;;;ACrDA,IAAa,OAAA;AAAb,IAAA,YAAA,GAAA,KAAA,CAAA;;AAAO,IAAM,OAAA,GAAU,QAAA;;;;;ACGvB,IAAA,OAAA;;;;AAHA,IAAA,QAAA,EAAA;AACA,IAAA,YAAA,EAAA;AAEA,IAAA,OAAA;KAAA,WAAA;AAAA,MAAA,SAAAC,QAAAA,GAAA;AACE,QAAA,IAAA,CAAA,IAAA,GAAO,SAAA;AACP,QAAA,IAAA,CAAA,IAAA,GAAO,QAAA;AAMP,QAAA,IAAA,CAAA,OAAA,GAAU,CAAA;AACV,QAAA,IAAA,CAAA,OAAA,GAAU,oBAAA,CAAA,MAAA,CAAqB,OAAO,CAAA;AA4BxC,MAAA;AA1BE,MAAAA,QAAAA,CAAA,SAAA,CAAA,KAAA,GAAA,SAAM,MAAA,EAAkB;AACtB,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,OAAO,OAAA,CAAQ,QAAQ,MAAS,CAAA;AAClC,MAAA,CAAA;AAEA,MAAAA,QAAAA,CAAA,SAAA,CAAA,OAAA,GAAA,SAAQ,OAAA,EAAc;AAAtB,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAC,OAAA,EAAO;AACzB,UAAA,IAAM,IAAA,GAAA,iBAAO,IAAI,IAAA,EAAI,EAAG,OAAA,EAAO;AAE/B,UAAA,IAAM,eAAY,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAChB,MACA,SAAA,EAAW,IAAA,EAAI,EACf,IAAA,EAAM,MAAK,MAAA,CAAO,IAAA,EAAI,EAClB,KAAA,CAAK,OAAO,iBAAA,IAAqB;YACnC,kBAAA,EAAoB;cAClB,WAAA,EAAa,KAAA,CAAK,OAAO,iBAAA,CAAkB,UAAA;cAC3C,cAAA,EAAgB,KAAA,CAAK,OAAO,iBAAA,CAAkB;;WAEhD,CAAA,EACC,OAAO,GAAA,EACV,QAAA,EAAU,MAAK,OAAA,EAAA,EACf,OAAA,EAAS,KAAA,CAAK,OAAA,EAAO,CAAA;AAEvB,UAAA,OAAO,QAAQ,YAAY,CAAA;QAC7B,CAAC,CAAA;AACH,MAAA,CAAA;AACF,MAAA,OAAAA,QAAAA;IAAA,CAAA,GArCA;;;ACCA,IAAA,IAAA;;;;AAJA,IAAA,QAAA,EAAA;AAIA,IAAA,IAAA;AAAA,IAAA,CAAA,SAAA,MAAA,EAAA;AAA0B,MAAA,SAAA,CAAAC,OAAA,MAAA,CAAA;AAA1B,MAAA,SAAAA,KAAAA,GAAA;;AAiDA,MAAA;AAhDE,MAAAA,KAAAA,CAAA,SAAA,CAAA,IAAA,GAAA,SAAK,WAAmB,OAAA,EAAgB;AAAxC,QAAA,IAAA,KAAA,GAAA,IAAA;AACE,QAAA,IAAI,QAAA;AACJ,QAAA,IAAI,SAAA,CAAU,UAAA,CAAW,SAAS,CAAA,EAAG;AACnC,UAAA,QAAA,GAAWC,eAAA;mBACF,SAAA,CAAU,UAAA,CAAW,UAAU,CAAA,EAAG;AAC3C,UAAA,QAAA,GAAWC,gBAAA;AACN,QAAA,CAAA,MAAA;AACL,UAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;;AAGtC,QAAA,IAAM,GAAA,GAAM,IAAI,GAAA,CAAI,SAAS,CAAA;AAC7B,QAAA,IAAM,cAAA,GAAiB,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA;AAC7C,QAAA,IAAM,OAAA,GAAU;UACd,OAAA,EAAS;YACP,cAAA,EAAgB,kBAAA;YAChB,gBAAA,EAAkB,MAAA,CAAO,WAAW,cAAc;;AAEpD,UAAA,QAAA,EAAU,GAAA,CAAI,QAAA;UACd,MAAA,EAAQ,MAAA;AACR,UAAA,IAAA,EAAM,GAAA,CAAI,QAAA;AACV,UAAA,IAAA,EAAM,GAAA,CAAI,IAAA;AACV,UAAA,QAAA,EAAU,GAAA,CAAI;;AAEhB,QAAA,OAAO,IAAI,OAAA,CAAQ,SAAC,OAAA,EAAO;AACzB,UAAA,IAAM,GAAA,GAAM,QAAA,CAAS,OAAA,CAAQ,OAAA,EAAS,SAAC,GAAA,EAAG;AACxC,YAAA,GAAA,CAAI,YAAY,MAAM,CAAA;AACtB,YAAA,IAAI,eAAA,GAAkB,EAAA;AACtB,YAAA,GAAA,CAAI,EAAA,CAAG,MAAA,EAAQ,SAACC,MAAAA,EAAa;AAC3B,cAAA,eAAA,IAAmBA,MAAAA;YACrB,CAAC,CAAA;AAED,YAAA,GAAA,CAAI,EAAA,CAAG,OAAO,WAAA;AACZ,cAAA,IAAI,GAAA,CAAI,QAAA,IAAY,eAAA,CAAgB,MAAA,GAAS,CAAA,EAAG;AAC9C,gBAAA,IAAI;AAEF,kBAAA,IAAM,qBAAA,GAA6C,IAAA,CAAK,KAAA,CAAM,eAAe,CAAA;AAC7E,kBAAA,IAAM,MAAA,GAAS,KAAA,CAAK,aAAA,CAAc,qBAAqB,CAAA;AACvD,kBAAA,OAAA,CAAQ,MAAM,CAAA;yBACd,EAAA,EAAM;AACN,kBAAA,OAAA,CAAQ,MAAK,aAAA,CAAc,EAAE,MAAM,GAAA,CAAI,UAAA,EAAY,CAAC,CAAA;;;YAG1D,CAAC,CAAA;UACH,CAAC,CAAA;AACD,UAAA,GAAA,CAAI,EAAA,CAAG,SAAS,WAAA;AAAM,YAAA,OAAA,QAAQ,IAAI,CAAA;UAAZ,CAAa,CAAA;AACnC,UAAA,GAAA,CAAI,IAAI,cAAc,CAAA;QACxB,CAAC,CAAA;AACH,MAAA,CAAA;AACF,MAAA,OAAAH,KAAAA;AAAA,IAAA,CAAA,EAjD0B,aAAa,CAAA;;;;;ICDvC,UAAA,EAUa,aAAA;;;;AAbb,IAAA,QAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAEA,IAAA,UAAA;AAAA,IAAA,CAAA,SAAA,MAAA,EAAA;AAAgC,MAAA,SAAA,CAAAI,aAAA,MAAA,CAAA;AAC9B,MAAA,SAAAA,WAAAA,CAAY,QAAgB,OAAA,EAAqB;AAC/C,QAAA,OAAA,MAAA,CAAA,KAAA,IAAA,EAAA,QAAA,CAAA,QAAA,CAAA,EACE,mBAAmB,IAAI,IAAA,EAAI,EAAE,EAC1B,OAAO,CAAA,EAAA,EACV,MAAA,EAAM,CAAA,CAAA,IACN,IAAA;AACJ,MAAA;AACF,MAAA,OAAAA,WAAAA;AAAA,IAAA,CAAA,EARgC,MAAM,CAAA;AAU/B,IAAM,aAAA,GAAgB,SAAC,MAAA,EAAgB,SAAA,EAAuB;AACnE,MAAA,OAAO,IAAI,UAAA,CAAW,MAAA,EAAQ,SAAS,CAAA;AACzC,IAAA,CAAA;;;;;ACDA,IAAA,aAAA,EA8Ba,cAAA,EAwEb,mBAAA;;;;AApHA,IAAA,QAAA,EAAA;AAWA,IAAA,YAAA,EAAA;AACA,IAAAC,YAAAA,EAAAA;AAEA,IAAA,aAAA;AAAA,IAAA,CAAA,SAAA,MAAA,EAAA;AAAmC,MAAA,SAAA,CAAAC,gBAAA,MAAA,CAAA;AAAnC,MAAA,SAAAA,cAAAA,GAAA;;AA4BA,MAAA;AAvBE,MAAAA,cAAAA,CAAA,SAAA,CAAA,IAAA,GAAA,SAAK,QAAa,OAAA,EAAqB;AAAlC,QAAA,IAAA,WAAA,MAAA,EAAA;AAAA,UAAA,MAAA,GAAA,EAAA;AAAW,QAAA;AACd,QAAA,OAAO,aAAA,CAAc,IAAA,CAAK,KAAA,CAAK,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,OAAO,CAAA,EAAA,EAAE,MAAA,EAAM,CAAA,CAAG,CAAA;AACzD,MAAA,CAAA;AACgB,MAAAA,cAAAA,CAAA,SAAA,CAAA,KAAA,GAAhB,SAAsB,OAAA,EAAyC;;;;;;AAE7D,gBAAA,IAAI,KAAK,YAAA,EAAc;AACrB,kBAAA,OAAA;AAAA,oBAAA;;AAAA,mBAAA;;AAEF,gBAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AAEd,gBAAA,WAAA,GAAc,cAAc,OAAA,CAAQ,MAAA,EAAM,SAAA,EAAA,EAC3C,OAAO,CAAA,CAAA;AAGZ,gBAAA,OAAA,CAAA,GAAM,MAAA,CAAA,SAAA,CAAM,MAAK,IAAA,CAAA,IAAA,EAAC,WAAW,CAAC,CAAA;;AAA9B,gBAAA,EAAA,CAAA,IAAA,EAAA;AAEA,gBAAA,OAAA,CAAA,GAAM,IAAA,CAAK,GAAA,CAAI,IAAI,WAAA,EAAa,EAAE,OAAO,CAAA;;AAAzC,gBAAA,EAAA,CAAA,IAAA,EAAA;AACA,gBAAA,OAAA,CAAA,GAAM,IAAA,CAAK,GAAA,CAAI,IAAI,OAAA,EAAS,EAAE,OAAO,CAAA;;AAArC,gBAAA,EAAA,CAAA,IAAA,EAAA;AAEA,gBAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AAEpB,gBAAA,OAAA,CAAA,CAAA,EAAM,IAAA,CAAK,kBAAA,CAAmB,WAAW,CAAC,CAAA;;AAA1C,gBAAA,EAAA,CAAA,IAAA,EAAA;;;;;;;;;AAEJ,MAAA,OAAAA,cAAAA;AAAA,IAAA,CAAA,EA5BmC,aAAa,CAAA;AA8BzC,IAAM,iBAAiB,WAAA;AAC5B,MAAA,IAAM,MAAA,GAAS,IAAI,aAAA,EAAa;AAChC,MAAA,OAAO;AACL,QAAA,IAAA,EAAM,YAAA,CACJ,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,EACvB,MAAA,EACA,kBAAA,CAAmB,MAAM,GACzB,eAAA,CAAgB,MAAA,EAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;AAErC,QAAA,GAAA,EAAK,aACH,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,MAAM,GACtB,KAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,kBAAkB,CAAC,CAAC,CAAA;AAEhE,QAAA,MAAA,EAAQ,aACN,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAM,GACzB,QAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,kBAAkB,CAAC,CAAC,CAAA;AAEhE,QAAA,KAAA,EAAO,aACL,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,MAAM,GACxB,OAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,QAAA,EAAU,aACR,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,MAAM,GAC3B,UAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,QAAA,EAAU,aACR,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,MAAM,GAC3B,UAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,aAAA,EAAe,aACb,MAAA,CAAO,aAAA,CAAc,IAAA,CAAK,MAAM,GAChC,eAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,QAAA,EAAU,aACR,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,MAAM,GAC3B,UAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,OAAA,EAAS,aACP,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,GAC1B,SAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,KAAA,EAAO,aACL,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,MAAM,GACxB,OAAA,EACA,kBAAA,CAAmB,MAAM,CAAA,EACzB,gBAAgB,MAAA,EAAQ,CAAC,eAAA,EAAiB,uBAAuB,CAAC,CAAC,CAAA;AAErE,QAAA,SAAA,EAAW,YAAA,CACT,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA,EAC5B,WAAA,EACA,kBAAA,CAAmB,MAAM,GACzB,eAAA,CAAgB,MAAA,EAAQ,CAAC,QAAQ,CAAC,CAAC;;AAGzC,IAAA,CAAA;AAEA,IAAA,sBAAe,cAAA,EAAc;;;;;ACpH7B,IAAA,aAAA,GAAA,EAAA;;;;;;;;;;;AACA,IAAA,QAAA,EAAA;;;;;ACDA,IAAA,WAAA,GAAA,EAAA;;;;;;;;;;;;;;;;;;IAIe,GAAA,EAAK,aAAA,EAAe,UAAU,IAAA,EAAM,QAAA,EAAU,QAAQ,OAAA,EAAS,QAAA,EAAU,WAAW,KAAA,EAAO,KAAA;AAJ1G,IAAAC,SAAAA,GAAA,KAAA,CAAA;;AAEA,IAAA,gBAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AAGA,IAAA,QAAA,EAAA;;AAFe,IAAA,MACb,mBAAA,CAAM,GAAA;AADO,IAAK,gBAClB,mBAAA,CAAM,aAAA;AADO,IAAoB,WACjC,mBAAA,CAAM,QAAA;AADO,IAA8B,OAC3C,mBAAA,CAAM,IAAA;AADO,IAAoC,WACjD,mBAAA,CAAM,QAAA;AADO,IAA8C,SAC3D,mBAAA,CAAM,MAAA;AADO,IAAsD,UACnE,mBAAA,CAAM,OAAA;AADO,IAA+D,WAC5E,mBAAA,CAAM,QAAA;AADO,IAAyE,YACtF,mBAAA,CAAM,SAAA;AADO,IAAoF,QACjG,mBAAA,CAAM,KAAA;AADO,IAA2F,QACxG,mBAAA,CAAM,KAAA;;;;;AC+BD,IAAM,sBAAN,MAAqD;AAAA,EACjD,IAAA,GAAO,qBAAA;AAAA,EACP,OAAA,GAAU,OAAA;AAAA;AAAA,EAGX,eAAA,GAAuB,IAAA;AAAA,EACvB,OAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAoC,IAAA;AAAA,EAE5C,YAAY,MAAA,EAAyB;AACnC,IAAA,IAAA,CAAK,OAAA,GAAU,OAAO,OAAA,IAAW,IAAA;AACjC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAI,KAAK,OAAA,EAAS;AAEhB,MAAA,IAAA,CAAK,WAAA,GAAc,KAAK,UAAA,EAAW;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,MAAc,UAAA,GAA4B;AACxC,IAAA,IAAI;AAGF,MAAA,MAAM,YAAY,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,SAAA,EAAA,EAAA,WAAA,CAAA,CAAA;AACxB,MAAA,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AACjC,MAAA,IAAA,CAAK,eAAA,GAAkB,SAAA;AAAA,IACzB,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA;AAAA,QACN,kHAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,MAAc,iBAAA,GAAmC;AAC/C,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,MAAM,IAAA,CAAK,WAAA;AACX,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,IAAA,EAAc,UAAA,EAA6C;AAC1E,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AAEnB,IAAA,MAAM,KAAK,iBAAA,EAAkB;AAC7B,IAAA,IAAA,CAAK,iBAAiB,KAAA,CAAM;AAAA,MAC1B,UAAA,EAAY,IAAA;AAAA,MACZ,OAAA,EAAS,UAAA,EAAY,MAAA,IAAU,UAAA,EAAY,OAAA,IAAW,WAAA;AAAA,MACtD,gBAAA,EAAkB;AAAA,KACnB,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,eAAA,CACJ,UAAA,EACA,IAAA,EACA,UAAA,EACe;AACf,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AAEnB,IAAA,MAAM,KAAK,iBAAA,EAAkB;AAC7B,IAAA,IAAA,CAAK,iBAAiB,KAAA,CAAM;AAAA,MAC1B,UAAA,EAAY,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AAAA,MACjC,OAAA,EAAS,UAAA,EAAY,MAAA,IAAU,UAAA,EAAY,OAAA,IAAW,WAAA;AAAA,MACtD,gBAAA,EAAkB;AAAA,QAChB,MAAA,EAAQ,UAAA;AAAA,QACR,IAAA;AAAA,QACA,GAAG;AAAA;AACL,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAA,CACJ,aAAA,EACA,OAAA,EACA,UAAA,EACe;AACf,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AAEnB,IAAA,MAAM,KAAK,iBAAA,EAAkB;AAC7B,IAAA,IAAA,CAAK,iBAAiB,KAAA,CAAM;AAAA,MAC1B,UAAA,EAAY,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA;AAAA,MACvC,OAAA,EAAS,UAAA,EAAY,MAAA,IAAU,UAAA,EAAY,OAAA,IAAW,WAAA;AAAA,MACtD,gBAAA,EAAkB;AAAA,QAChB,SAAA,EAAW,aAAA;AAAA,QACX,OAAA;AAAA,QACA,GAAG;AAAA;AACL,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,UAAA,CAAW,IAAA,EAAc,KAAA,EAAe,UAAA,EAA6C;AACzF,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AAEnB,IAAA,MAAM,KAAK,iBAAA,EAAkB;AAC7B,IAAA,IAAA,CAAK,iBAAiB,KAAA,CAAM;AAAA,MAC1B,UAAA,EAAY,IAAA;AAAA,MACZ,OAAA,EAAS,UAAA,EAAY,MAAA,IAAU,UAAA,EAAY,OAAA,IAAW,WAAA;AAAA,MACtD,gBAAA,EAAkB;AAAA,QAChB,KAAA;AAAA,QACA,GAAG;AAAA;AACL,KACD,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,QAAA,GAA0B;AAC9B,IAAA,MAAM,KAAK,iBAAA,EAAkB;AAC7B,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,MAAM,IAAA,CAAK,gBAAgB,KAAA,EAAM;AAAA,IACnC;AAAA,EACF;AACF","file":"amplitude.cjs","sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { BaseEvent } from './base-event';\nimport { RevenueEventProperties } from '../../revenue';\n\nexport enum IdentifyOperation {\n // Base Operations to set values\n SET = '$set',\n SET_ONCE = '$setOnce',\n\n // Operations around modifying existing values\n ADD = '$add',\n APPEND = '$append',\n PREPEND = '$prepend',\n REMOVE = '$remove',\n\n // Operations around appending values *if* they aren't present\n PREINSERT = '$preInsert',\n POSTINSERT = '$postInsert',\n\n // Operations around removing properties/values\n UNSET = '$unset',\n CLEAR_ALL = '$clearAll',\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array<string | number>\n | { [key: string]: ValidPropertyType }\n | Array<{ [key: string]: ValidPropertyType }>;\n\ninterface BaseOperationConfig {\n [key: string]: ValidPropertyType;\n}\n\nexport interface IdentifyUserProperties {\n // Add operations can only take numbers\n [IdentifyOperation.ADD]?: { [key: string]: number };\n\n // This reads the keys of the passed object, but the values are not used\n [IdentifyOperation.UNSET]?: BaseOperationConfig;\n // This option does not read the key as it unsets all user properties\n [IdentifyOperation.CLEAR_ALL]?: any;\n\n // These operations can take numbers, strings, or arrays of both.\n [IdentifyOperation.SET]?: BaseOperationConfig;\n [IdentifyOperation.SET_ONCE]?: BaseOperationConfig;\n [IdentifyOperation.APPEND]?: BaseOperationConfig;\n [IdentifyOperation.PREPEND]?: BaseOperationConfig;\n [IdentifyOperation.POSTINSERT]?: BaseOperationConfig;\n [IdentifyOperation.PREINSERT]?: BaseOperationConfig;\n [IdentifyOperation.REMOVE]?: BaseOperationConfig;\n}\n\n/**\n * Represents the structure of user properties that can be sent with an Identify or GroupIdentify event.\n *\n * This type supports both:\n *\n * 1. Reserved Amplitude identify operations via `IdentifyUserProperties`:\n * These operations enable structured updates to user properties.\n *\n * Example:\n * ```ts\n * {\n * $set: { plan: 'premium', login_count: 1 },\n * $add: { login_count: 1 },\n * $unset: { plan: '-' },\n * $clearAll: '-'\n * }\n * ```\n *\n * 2. Custom user-defined properties (excluding reserved operation keys):\n * Useful for assigning static properties without using Identify operations.\n *\n * Example:\n * ```ts\n * {\n * custom_flag: true,\n * experiment_group: 'B',\n * favorite_color: 'blue'\n * }\n * ```\n *\n * This union ensures compatibility with Amplitude's identify semantics\n * while allowing flexibility to define arbitrary non-reserved properties.\n */\nexport type UserProperties =\n | IdentifyUserProperties\n | {\n [key in Exclude<string, IdentifyOperation>]: any;\n };\n\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport enum SpecialEventType {\n IDENTIFY = '$identify',\n GROUP_IDENTIFY = '$groupidentify',\n REVENUE = 'revenue_amount',\n}\n\nexport interface TrackEvent extends BaseEvent {\n event_type: Exclude<string, SpecialEventType>;\n}\n\nexport interface IdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.IDENTIFY;\n user_properties: UserProperties;\n}\n\nexport interface GroupIdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.GROUP_IDENTIFY;\n group_properties: UserProperties;\n}\n\nexport interface RevenueEvent extends BaseEvent {\n event_type: SpecialEventType.REVENUE;\n event_properties:\n | RevenueEventProperties\n | {\n [key: string]: any;\n };\n}\n\nexport type Event = TrackEvent | IdentifyEvent | GroupIdentifyEvent | RevenueEvent;\n","import { Campaign } from './campaign';\n\nexport const UNSET_VALUE = '-';\nexport const AMPLITUDE_PREFIX = 'AMP';\nexport const STORAGE_PREFIX = `${AMPLITUDE_PREFIX}_unsent`;\nexport const DEFAULT_INSTANCE_NAME = '$default_instance';\nexport const AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport const EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport const AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport const EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n\n// Campaign constants\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rdt_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rdt_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n\n// list of Network headers that are safe to capture\nexport const SAFE_HEADERS = [\n 'access-control-allow-origin',\n 'access-control-allow-credentials',\n 'access-control-expose-headers',\n 'access-control-max-age',\n 'access-control-allow-methods',\n 'access-control-allow-headers',\n 'accept-patch',\n 'accept-ranges',\n 'age',\n 'allow',\n 'alt-svc',\n 'cache-control',\n 'connection',\n 'content-disposition',\n 'content-encoding',\n 'content-language',\n 'content-length',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'date',\n 'delta-base',\n 'etag',\n 'expires',\n 'im',\n 'last-modified',\n 'link',\n 'location',\n 'permanent',\n 'p3p',\n 'pragma',\n 'proxy-authenticate',\n 'public-key-pins',\n 'retry-after',\n 'server',\n 'status',\n 'strict-transport-security',\n 'trailer',\n 'transfer-encoding',\n 'tk',\n 'upgrade',\n 'vary',\n 'via',\n 'warning',\n 'www-authenticate',\n 'x-b3-traceid',\n 'x-frame-options',\n];\n\n// list of Network headers to never capture\nexport const FORBIDDEN_HEADERS = ['authorization', 'cookie', 'set-cookie'];\n","const MAX_PROPERTY_KEYS = 1000;\n\nexport const isValidObject = (properties: { [key: string]: any }): boolean => {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (const key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = properties[key];\n if (!isValidProperties(key, value)) return false;\n }\n return true;\n};\n\nexport const isValidProperties = (property: string, value: any): boolean => {\n if (typeof property !== 'string') return false;\n if (Array.isArray(value)) {\n let isValid = true;\n for (const valueElement of value) {\n if (Array.isArray(valueElement)) {\n return false;\n } else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement as object);\n } else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n } else if (value === null || value === undefined) {\n return false;\n } else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n } else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n","import { UNSET_VALUE } from './types/constants';\nimport { isValidProperties } from './utils/valid-properties';\n\nexport interface IIdentify {\n getUserProperties(): IdentifyUserProperties;\n set(property: string, value: ValidPropertyType): IIdentify;\n setOnce(property: string, value: ValidPropertyType): IIdentify;\n append(property: string, value: ValidPropertyType): IIdentify;\n prepend(property: string, value: ValidPropertyType): IIdentify;\n postInsert(property: string, value: ValidPropertyType): IIdentify;\n preInsert(property: string, value: ValidPropertyType): IIdentify;\n remove(property: string, value: ValidPropertyType): IIdentify;\n add(property: string, value: number): IIdentify;\n unset(property: string): IIdentify;\n clearAll(): IIdentify;\n}\n\nexport class Identify implements IIdentify {\n protected readonly _propertySet: Set<string> = new Set<string>();\n protected _properties: IdentifyUserProperties = {};\n\n public getUserProperties(): IdentifyUserProperties {\n return { ...this._properties };\n }\n\n public set(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n }\n\n public setOnce(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n }\n\n public append(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n }\n\n public prepend(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n }\n\n public postInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n }\n\n public preInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n }\n\n public remove(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n }\n\n public add(property: string, value: number): Identify {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n }\n\n public unset(property: string): Identify {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n }\n\n public clearAll(): Identify {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n\n return this;\n }\n\n // Returns whether or not this set actually worked.\n private _safeSet(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let userPropertyMap: any = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n\n return false;\n }\n\n private _validate(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n }\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array<string | number>\n | { [key: string]: ValidPropertyType }\n | Array<{ [key: string]: ValidPropertyType }>;\n\ninterface BaseOperationConfig {\n [key: string]: ValidPropertyType;\n}\n\nexport interface IdentifyUserProperties {\n // Add operations can only take numbers\n [IdentifyOperation.ADD]?: { [key: string]: number };\n\n // This reads the keys of the passed object, but the values are not used\n [IdentifyOperation.UNSET]?: BaseOperationConfig;\n // This option does not read the key as it unsets all user properties\n [IdentifyOperation.CLEAR_ALL]?: any;\n\n // These operations can take numbers, strings, or arrays of both.\n [IdentifyOperation.SET]?: BaseOperationConfig;\n [IdentifyOperation.SET_ONCE]?: BaseOperationConfig;\n [IdentifyOperation.APPEND]?: BaseOperationConfig;\n [IdentifyOperation.PREPEND]?: BaseOperationConfig;\n [IdentifyOperation.POSTINSERT]?: BaseOperationConfig;\n [IdentifyOperation.PREINSERT]?: BaseOperationConfig;\n [IdentifyOperation.REMOVE]?: BaseOperationConfig;\n}\n\nexport enum IdentifyOperation {\n // Base Operations to set values\n SET = '$set',\n SET_ONCE = '$setOnce',\n\n // Operations around modifying existing values\n ADD = '$add',\n APPEND = '$append',\n PREPEND = '$prepend',\n REMOVE = '$remove',\n\n // Operations around appending values *if* they aren't present\n PREINSERT = '$preInsert',\n POSTINSERT = '$postInsert',\n\n // Operations around removing properties/values\n UNSET = '$unset',\n CLEAR_ALL = '$clearAll',\n}\n\n/**\n * Note that the order of operations should align with https://github.com/amplitude/nova/blob/7701b5986b565d4b2fb53b99a9f2175df055dea8/src/main/java/com/amplitude/ingestion/core/UserPropertyUtils.java#L210\n */\nexport const OrderedIdentifyOperations = [\n IdentifyOperation.CLEAR_ALL,\n IdentifyOperation.UNSET,\n IdentifyOperation.SET,\n IdentifyOperation.SET_ONCE,\n IdentifyOperation.ADD,\n IdentifyOperation.APPEND,\n IdentifyOperation.PREPEND,\n IdentifyOperation.PREINSERT,\n IdentifyOperation.POSTINSERT,\n IdentifyOperation.REMOVE,\n];\n","export const SUCCESS_MESSAGE = 'Event tracked successfully';\nexport const UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport const MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport const OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport const MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport const INVALID_API_KEY = 'Invalid API key';\nexport const CLIENT_NOT_INITIALIZED = 'Client not initialized';\n","/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent successfully. */\n Success = 'success',\n /** A user or device in the payload is currently rate limited and should try again later. */\n RateLimit = 'rate_limit',\n /** The sent payload was too large to be processed. */\n PayloadTooLarge = 'payload_too_large',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Timeout = 'Timeout',\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n SystemError = 'SystemError',\n}\n","import { Event } from '../types/event/event';\nimport { Result } from '../types/result';\nimport { Status } from '../types/status';\n\nexport const buildResult = (event: Event, code = 0, message: string = Status.Unknown): Result => {\n return { event, code, message };\n};\n","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\n\nexport const getGlobalScope = (): typeof globalThis | undefined => {\n // This should only be used for integrations with Amplitude that are not running in a browser environment\n // We need to specify the name of the global variable as a string to prevent it from being minified\n const ampIntegrationContextName = 'ampIntegrationContext' as keyof typeof globalThis;\n if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n return globalThis[ampIntegrationContextName] as typeof globalThis;\n }\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n","/**\n * Source: [jed's gist's comment]{@link https://gist.github.com/jed/982883?permalink_comment_id=3223002#gistcomment-3223002}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\n\nimport { getGlobalScope } from '../global-scope';\n\nconst legacyUUID = function (a?: any): string {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (\n a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))\n ) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (\n String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)\n ) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID, // random hex digits\n );\n};\n\nconst hex: string[] = [...Array(256).keys()].map((index) => index.toString(16).padStart(2, '0'));\n\nexport const UUID = (a?: any): string => {\n const globalScope = getGlobalScope();\n\n /* istanbul ignore next */\n if (!globalScope?.crypto?.getRandomValues) {\n // Fallback to legacy UUID generation if crypto is not available\n return legacyUUID(a);\n }\n\n const r = globalScope.crypto.getRandomValues(new Uint8Array(16));\n\n r[6] = (r[6] & 0x0f) | 0x40;\n r[8] = (r[8] & 0x3f) | 0x80;\n\n return [...r.entries()].map(([index, int]) => ([4, 6, 8, 10].includes(index) ? `-${hex[int]}` : hex[int])).join('');\n};\n","import { AnalyticsIdentity, BeforePlugin, DestinationPlugin, EnrichmentPlugin, Plugin } from './types/plugin';\nimport { CoreClient } from './types/client/core-client';\nimport { IConfig } from './types/config/core-config';\nimport { ILogger } from './logger';\nimport { EventCallback } from './types/event-callback';\nimport { Event } from './types/event/event';\nimport { Result } from './types/result';\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\n\nexport class Timeline {\n queue: [Event, EventCallback][] = [];\n // Flag to guarantee one schedule apply is running\n applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n plugins: Plugin[] = [];\n // loggerProvider is set by the client at _init()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n loggerProvider: ILogger;\n\n constructor(private client: CoreClient) {}\n\n async register(plugin: Plugin, config: IConfig) {\n if (this.plugins.some((existingPlugin) => existingPlugin.name === plugin.name)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n this.loggerProvider.warn(`Plugin with name ${plugin.name} already exists, skipping registration`);\n return;\n }\n\n if (plugin.name === undefined) {\n plugin.name = UUID();\n this.loggerProvider.warn(`Plugin name is undefined. \n Generating a random UUID for plugin name: ${plugin.name}. \n Set a name for the plugin to prevent it from being added multiple times.`);\n }\n\n plugin.type = plugin.type ?? 'enrichment';\n await plugin.setup?.(config, this.client);\n this.plugins.push(plugin);\n }\n\n async deregister(pluginName: string, config: IConfig) {\n const index = this.plugins.findIndex((plugin) => plugin.name === pluginName);\n if (index === -1) {\n config.loggerProvider.warn(`Plugin with name ${pluginName} does not exist, skipping deregistration`);\n return;\n }\n const plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n await plugin.teardown?.();\n }\n\n reset(client: CoreClient) {\n this.applying = false;\n const plugins = this.plugins;\n plugins.map((plugin) => plugin.teardown?.());\n this.plugins = [];\n this.client = client;\n }\n\n push(event: Event) {\n return new Promise<Result>((resolve) => {\n this.queue.push([event, resolve]);\n this.scheduleApply(0);\n });\n }\n\n scheduleApply(timeout: number) {\n if (this.applying) return;\n this.applying = true;\n setTimeout(() => {\n void this.apply(this.queue.shift()).then(() => {\n this.applying = false;\n if (this.queue.length > 0) {\n this.scheduleApply(0);\n }\n });\n }, timeout);\n }\n\n async apply(item: [Event, EventCallback] | undefined) {\n if (!item) {\n return;\n }\n\n let [event] = item;\n const [, resolve] = item;\n\n // Log initial event\n this.loggerProvider.log('Timeline.apply: Initial event', event);\n\n const before = this.plugins.filter<BeforePlugin>(\n (plugin: Plugin): plugin is BeforePlugin => plugin.type === 'before',\n );\n\n for (const plugin of before) {\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n continue;\n }\n const e = await plugin.execute({ ...event });\n if (e === null) {\n this.loggerProvider.log(\n `Timeline.apply: Event filtered out by before plugin '${String(plugin.name)}', event: ${JSON.stringify(\n event,\n )}`,\n );\n resolve({ event, code: 0, message: '' });\n return;\n } else {\n event = e;\n this.loggerProvider.log(\n `Timeline.apply: Event after before plugin '${String(plugin.name)}', event: ${JSON.stringify(event)}`,\n );\n }\n }\n\n const enrichment = this.plugins.filter<EnrichmentPlugin>(\n (plugin: Plugin): plugin is EnrichmentPlugin => plugin.type === 'enrichment' || plugin.type === undefined,\n );\n\n for (const plugin of enrichment) {\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n continue;\n }\n const e = await plugin.execute({ ...event });\n if (e === null) {\n this.loggerProvider.log(\n `Timeline.apply: Event filtered out by enrichment plugin '${String(plugin.name)}', event: ${JSON.stringify(\n event,\n )}`,\n );\n resolve({ event, code: 0, message: '' });\n return;\n } else {\n event = e;\n this.loggerProvider.log(\n `Timeline.apply: Event after enrichment plugin '${String(plugin.name)}', event: ${JSON.stringify(event)}`,\n );\n }\n }\n\n const destination = this.plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === 'destination',\n );\n\n // Log final event before sending to destinations\n this.loggerProvider.log(`Timeline.apply: Final event before destinations, event: ${JSON.stringify(event)}`);\n\n const executeDestinations = destination.map((plugin) => {\n const eventClone = { ...event };\n return plugin.execute(eventClone).catch((e) => buildResult(eventClone, 0, String(e)));\n });\n\n void Promise.all(executeDestinations).then(([result]) => {\n const resolveResult =\n result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n\n return;\n }\n\n async flush() {\n const queue = this.queue;\n this.queue = [];\n\n await Promise.all(queue.map((item) => this.apply(item)));\n\n const destination = this.plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === 'destination',\n );\n\n const executeDestinations = destination.map((plugin) => {\n return plugin.flush && plugin.flush();\n });\n\n await Promise.all(executeDestinations);\n }\n\n onIdentityChanged(identity: AnalyticsIdentity) {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onIdentityChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onIdentityChanged?.(identity);\n });\n }\n\n onSessionIdChanged(sessionId: number) {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onSessionIdChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onSessionIdChanged?.(sessionId);\n });\n }\n\n onOptOutChanged(optOut: boolean) {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onOptOutChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onOptOutChanged?.(optOut);\n });\n }\n\n onReset() {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onReset() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onReset?.();\n });\n }\n}\n","import { Identify, IIdentify } from '../identify';\nimport { IRevenue } from '../revenue';\nimport { BaseEvent, EventOptions } from '../types/event/base-event';\nimport { TrackEvent, IdentifyEvent, GroupIdentifyEvent, SpecialEventType, RevenueEvent } from '../types/event/event';\n\nexport const createTrackEvent = (\n eventInput: BaseEvent | string,\n eventProperties?: Record<string, any>,\n eventOptions?: EventOptions,\n): TrackEvent => {\n const baseEvent: BaseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return {\n ...baseEvent,\n ...eventOptions,\n ...(eventProperties && { event_properties: eventProperties }),\n };\n};\n\nexport const createIdentifyEvent = (identify: IIdentify, eventOptions?: EventOptions): IdentifyEvent => {\n const identifyEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n };\n\n return identifyEvent;\n};\n\nexport const createGroupIdentifyEvent = (\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n): GroupIdentifyEvent => {\n const groupIdentify: GroupIdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.GROUP_IDENTIFY,\n group_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n\n return groupIdentify;\n};\n\nexport const createGroupEvent = (groupType: string, groupName: string | string[], eventOptions?: EventOptions) => {\n const identify = new Identify();\n identify.set(groupType, groupName);\n\n const groupEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n return groupEvent;\n};\n\nexport const createRevenueEvent = (revenue: IRevenue, eventOptions?: EventOptions): RevenueEvent => {\n return {\n ...eventOptions,\n event_type: SpecialEventType.REVENUE,\n event_properties: revenue.getEventProperties(),\n };\n};\n","export interface AmplitudeReturn<T> {\n promise: Promise<T>;\n}\n\nexport const returnWrapper: {\n (): AmplitudeReturn<void>;\n <T>(awaitable: Promise<T>): AmplitudeReturn<T>;\n} = <T>(awaitable?: Promise<T>) => ({\n promise: awaitable || Promise.resolve(),\n});\n","import { Plugin } from './types/plugin';\nimport { IConfig } from './types/config/core-config';\nimport { BaseEvent, EventOptions } from './types/event/base-event';\nimport { Result } from './types/result';\nimport {\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n SpecialEventType,\n UserProperties,\n} from './types/event/event';\nimport { IIdentify, OrderedIdentifyOperations } from './identify';\nimport { IRevenue } from './revenue';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './types/messages';\nimport { Timeline } from './timeline';\nimport {\n createGroupEvent,\n createGroupIdentifyEvent,\n createIdentifyEvent,\n createRevenueEvent,\n createTrackEvent,\n} from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nimport { CoreClient, PluginHost } from './types/client/core-client';\nexport class AmplitudeCore implements CoreClient, PluginHost {\n protected initializing = false;\n protected name: string;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: IConfig;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n timeline: Timeline;\n isReady = false;\n protected q: Array<CallableFunction | typeof returnWrapper> = [];\n protected dispatchQ: Array<CallableFunction> = [];\n\n constructor(name = '$default') {\n this.timeline = new Timeline(this);\n this.name = name;\n }\n\n protected async _init(config: IConfig) {\n this.config = config;\n this.timeline.reset(this);\n this.timeline.loggerProvider = this.config.loggerProvider;\n await this.runQueuedFunctions('q');\n this.isReady = true;\n }\n\n async runQueuedFunctions(queueName: 'q' | 'dispatchQ') {\n const queuedFunctions = this[queueName];\n this[queueName] = [];\n for (const queuedFunction of queuedFunctions) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const val: ReturnType<typeof returnWrapper> | Promise<any> = queuedFunction();\n if (val && 'promise' in val) {\n await val.promise;\n } else {\n await val;\n }\n }\n // Rerun queued functions if the queue has accrued more while awaiting promises\n if (this[queueName].length) {\n await this.runQueuedFunctions(queueName);\n }\n }\n\n track(eventInput: BaseEvent | string, eventProperties?: Record<string, any>, eventOptions?: EventOptions) {\n const event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n logEvent = this.track.bind(this);\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n const event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n const event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n setGroup(groupType: string, groupName: string | string[], eventOptions?: EventOptions) {\n const event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n const event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n add(plugin: Plugin) {\n if (!this.isReady) {\n this.q.push(this._addPlugin.bind(this, plugin));\n return returnWrapper();\n }\n return this._addPlugin(plugin);\n }\n\n _addPlugin(plugin: Plugin) {\n return returnWrapper(this.timeline.register(plugin, this.config));\n }\n\n remove(pluginName: string) {\n if (!this.isReady) {\n this.q.push(this._removePlugin.bind(this, pluginName));\n return returnWrapper();\n }\n return this._removePlugin(pluginName);\n }\n\n _removePlugin(pluginName: string) {\n return returnWrapper(this.timeline.deregister(pluginName, this.config));\n }\n\n dispatchWithCallback(event: Event, callback: (result: Result) => void): void {\n if (!this.isReady) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n }\n\n async dispatch(event: Event): Promise<Result> {\n if (!this.isReady) {\n return new Promise<Result>((resolve) => {\n this.dispatchQ.push(this.dispatchWithCallback.bind(this, event, resolve));\n });\n }\n\n return this.process(event);\n }\n\n /**\n *\n * This method applies identify operations to user properties and\n * returns a single object representing the final user property state.\n *\n * This is a best-effort api that only supports $set, $clearAll, and $unset.\n * Other operations are not supported and are ignored.\n *\n *\n * @param userProperties The `event.userProperties` object from an Identify event.\n * @returns A key-value object user properties without operations.\n *\n * @example\n * Input:\n * {\n * $set: { plan: 'premium' },\n * custom_flag: true\n * }\n *\n * Output:\n * {\n * plan: 'premium',\n * custom_flag: true\n * }\n */\n getOperationAppliedUserProperties(userProperties: UserProperties | undefined): { [key: string]: any } {\n const updatedProperties: { [key: string]: any } = {};\n\n if (userProperties === undefined) {\n return updatedProperties;\n }\n\n // Keep non-operation keys for later merge\n const nonOpProperties: {\n [key in Exclude<string, IdentifyOperation>]: any;\n } = {};\n Object.keys(userProperties).forEach((key) => {\n if (!Object.values(IdentifyOperation).includes(key as IdentifyOperation)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n nonOpProperties[key] = userProperties[key];\n }\n });\n\n OrderedIdentifyOperations.forEach((operation) => {\n // Skip when key is an operation.\n if (!Object.keys(userProperties).includes(operation)) return;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const opProperties: IdentifyUserProperties = userProperties[operation];\n\n switch (operation) {\n case IdentifyOperation.CLEAR_ALL:\n // Due to operation order, the following line will never execute.\n /* istanbul ignore next */\n Object.keys(updatedProperties).forEach((prop) => {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.UNSET:\n Object.keys(opProperties).forEach((prop) => {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.SET:\n Object.assign(updatedProperties, opProperties);\n break;\n }\n });\n\n // Merge non-operation properties.\n // Custom properties should not be affected by operations.\n // https://github.com/amplitude/nova/blob/343f678ded83c032e83b189796b3c2be161b48f5/src/main/java/com/amplitude/userproperty/model/ModifyUserPropertiesIdent.java#L79-L83\n Object.assign(updatedProperties, nonOpProperties);\n\n return updatedProperties;\n }\n\n async process(event: Event): Promise<Result> {\n try {\n // skip event processing if opt out\n if (this.config.optOut) {\n return buildResult(event, 0, OPT_OUT_MESSAGE);\n }\n\n if (event.event_type === SpecialEventType.IDENTIFY) {\n const userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n this.timeline.onIdentityChanged({ userProperties: userProperties });\n }\n\n const result = await this.timeline.push(event);\n\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n\n return result;\n } catch (e) {\n const message = String(e);\n this.config.loggerProvider.error(message);\n const result = buildResult(event, 0, message);\n\n return result;\n }\n }\n\n setOptOut(optOut: boolean) {\n if (!this.isReady) {\n this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this._setOptOut(optOut);\n }\n\n _setOptOut(optOut: boolean) {\n if (this.config.optOut !== optOut) {\n this.timeline.onOptOutChanged(optOut);\n this.config.optOut = Boolean(optOut);\n }\n }\n\n flush() {\n return returnWrapper(this.timeline.flush());\n }\n\n plugin(name: string): Plugin | undefined {\n const plugin = this.timeline.plugins.find((plugin) => plugin.name === name);\n if (plugin === undefined) {\n this.config.loggerProvider.debug(`Cannot find plugin with name ${name}`);\n return undefined;\n }\n\n return plugin;\n }\n\n plugins<T extends Plugin>(pluginClass: { new (...args: any[]): T }): T[] {\n return this.timeline.plugins.filter((plugin) => plugin instanceof pluginClass) as T[];\n }\n}\n","import { isValidObject } from './utils/valid-properties';\n\nexport interface IRevenue {\n getEventProperties(): RevenueEventProperties;\n setProductId(productId: string): IRevenue;\n setQuantity(quantity: number): IRevenue;\n setPrice(price: number): IRevenue;\n setRevenueType(revenueType: string): IRevenue;\n setCurrency(currency: string): IRevenue;\n setEventProperties(properties: { [key: string]: any }): IRevenue;\n setRevenue(revenue: number): IRevenue;\n setReceipt(receipt: string): IRevenue;\n setReceiptSig(receiptSig: string): IRevenue;\n}\n\nexport class Revenue implements IRevenue {\n private productId: string;\n private quantity: number;\n private price: number;\n private revenueType?: string;\n private currency?: string;\n private properties?: { [key: string]: any };\n private revenue?: number;\n private receipt?: string;\n private receiptSig?: string;\n\n constructor() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n\n setProductId(productId: string) {\n this.productId = productId;\n return this;\n }\n\n setQuantity(quantity: number) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n }\n\n setPrice(price: number) {\n this.price = price;\n return this;\n }\n\n setRevenueType(revenueType: string) {\n this.revenueType = revenueType;\n return this;\n }\n\n setCurrency(currency: string) {\n this.currency = currency;\n return this;\n }\n\n setRevenue(revenue: number) {\n this.revenue = revenue;\n return this;\n }\n\n setReceipt(receipt: string) {\n this.receipt = receipt;\n return this;\n }\n\n setReceiptSig(receiptSig: string) {\n this.receiptSig = receiptSig;\n return this;\n }\n\n setEventProperties(properties: { [key: string]: ValidPropertyType }) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n }\n\n getEventProperties(): RevenueEventProperties {\n const eventProperties: RevenueEventProperties = this.properties ? { ...this.properties } : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n eventProperties[RevenueProperty.RECEIPT] = this.receipt;\n eventProperties[RevenueProperty.RECEIPT_SIG] = this.receiptSig;\n return eventProperties;\n }\n}\n\nexport interface RevenueEventProperties {\n [RevenueProperty.REVENUE_PRODUCT_ID]?: string;\n [RevenueProperty.REVENUE_QUANTITY]?: number;\n [RevenueProperty.REVENUE_PRICE]?: number;\n [RevenueProperty.REVENUE_TYPE]?: string;\n [RevenueProperty.REVENUE_CURRENCY]?: string;\n [RevenueProperty.REVENUE]?: number;\n [RevenueProperty.RECEIPT]?: string;\n [RevenueProperty.RECEIPT_SIG]?: string;\n}\n\nexport enum RevenueProperty {\n REVENUE_PRODUCT_ID = '$productId',\n REVENUE_QUANTITY = '$quantity',\n REVENUE_PRICE = '$price',\n REVENUE_TYPE = '$revenueType',\n REVENUE_CURRENCY = '$currency',\n REVENUE = '$revenue',\n RECEIPT = '$receipt',\n RECEIPT_SIG = '$receiptSig',\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array<string | number>\n | { [key: string]: ValidPropertyType }\n | Array<{ [key: string]: ValidPropertyType }>;\n","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\n\nexport const chunk = <T>(arr: T[], size: number) => {\n const chunkSize = Math.max(size, 1);\n return arr.reduce<T[][]>((chunks, element, index) => {\n const chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n","export enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Verbose = 3,\n Debug = 4,\n}\n","import { LogLevel } from './types/loglevel';\n\nconst PREFIX = 'Amplitude Logger ';\n\nexport interface ILogger {\n disable(): void;\n enable(logLevel: LogLevel): void;\n log(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n debug(...args: any[]): void;\n}\n\nexport interface LogConfig {\n logger: ILogger;\n logLevel: LogLevel;\n}\n\ntype TimeKey = 'start' | 'end';\n\nexport interface DebugContext {\n type: string;\n name: string;\n args: string[] | string;\n stacktrace?: string[] | string;\n time?: { [key in TimeKey]?: string };\n states?: { [key: string]: any };\n}\n\nexport class Logger implements ILogger {\n logLevel: LogLevel;\n\n constructor() {\n this.logLevel = LogLevel.None;\n }\n\n disable(): void {\n this.logLevel = LogLevel.None;\n }\n\n enable(logLevel: LogLevel = LogLevel.Warn): void {\n this.logLevel = logLevel;\n }\n\n log(...args: any[]): void {\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n }\n\n warn(...args: any[]): void {\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n }\n\n error(...args: any[]): void {\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n }\n\n debug(...args: any[]): void {\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(`${PREFIX}[Debug]: ${args.join(' ')}`);\n }\n}\n","import { OfflineDisabled } from './types/offline';\nimport { ServerZoneType } from './types/server-zone';\nimport { Transport } from './types/transport';\nimport { Event } from './types/event/event';\nimport { Plan } from './types/event/plan';\nimport { IngestionMetadata } from './types/event/ingestion-metadata';\nimport { Storage } from './types/storage';\nimport {\n AMPLITUDE_SERVER_URL,\n AMPLITUDE_BATCH_SERVER_URL,\n EU_AMPLITUDE_SERVER_URL,\n EU_AMPLITUDE_BATCH_SERVER_URL,\n DEFAULT_INSTANCE_NAME,\n} from './types/constants';\n\nimport { Logger, ILogger } from './logger';\nimport { LogLevel } from './types/loglevel';\nimport { ConfigOptions, IRequestMetadata, IHistogramOptions, HistogramKey, IConfig } from './types/config/core-config';\n\nexport const getDefaultConfig = () => ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: DEFAULT_INSTANCE_NAME,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n offline: false,\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US' as ServerZoneType,\n useBatch: false,\n});\nexport class Config implements IConfig {\n apiKey: string;\n flushIntervalMillis: number;\n flushMaxRetries: number;\n flushQueueSize: number;\n instanceName?: string;\n loggerProvider: ILogger;\n logLevel: LogLevel;\n minIdLength?: number;\n offline?: boolean | typeof OfflineDisabled;\n plan?: Plan;\n ingestionMetadata?: IngestionMetadata;\n serverUrl: string | undefined;\n serverZone?: ServerZoneType;\n transportProvider: Transport;\n storageProvider?: Storage<Event[]>;\n useBatch: boolean;\n requestMetadata?: RequestMetadata;\n\n protected _optOut = false;\n get optOut() {\n return this._optOut;\n }\n set optOut(optOut: boolean) {\n this._optOut = optOut;\n }\n\n constructor(options: ConfigOptions) {\n const defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = options.flushIntervalMillis ?? defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = options.logLevel ?? defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n this.optOut = options.optOut ?? defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = options.useBatch ?? defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n\n const serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n}\n\nexport const getServerUrl = (serverZone: ServerZoneType, useBatch: boolean) => {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\n\nexport const createServerConfig = (\n serverUrl = '',\n serverZone: ServerZoneType = getDefaultConfig().serverZone,\n useBatch: boolean = getDefaultConfig().useBatch,\n) => {\n if (serverUrl) {\n return { serverUrl, serverZone: undefined };\n }\n const _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n\nexport class RequestMetadata implements IRequestMetadata {\n sdk: {\n metrics: {\n histogram: HistogramOptions;\n };\n };\n\n constructor() {\n this.sdk = {\n metrics: {\n histogram: {},\n },\n };\n }\n\n recordHistogram<T extends HistogramKey>(key: T, value: HistogramOptions[T]) {\n this.sdk.metrics.histogram[key] = value;\n }\n}\n\nclass HistogramOptions implements IHistogramOptions {\n remote_config_fetch_time_IDB?: number;\n remote_config_fetch_time_API_success?: number;\n remote_config_fetch_time_API_fail?: number;\n}\n","/**\n * Checks if an HTTP status code indicates success (2xx range)\n * @param code - The HTTP status code to check\n * @returns true if the status code is in the 2xx range, false otherwise\n */\nexport function isSuccessStatusCode(code: number): boolean {\n return code >= 200 && code < 300;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { AmplitudeCore } from '../core-client';\nimport { LogConfig, DebugContext } from '../logger';\nimport { LogLevel } from '../types/loglevel';\n\nexport const getStacktrace = (ignoreDepth = 0): string[] => {\n const trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map((text) => text.trim());\n};\n\n// This hook makes sure we always get the latest logger and logLevel.\nexport const getClientLogConfig = (client: AmplitudeCore) => (): LogConfig => {\n const { loggerProvider: logger, logLevel } = { ...client.config };\n return {\n logger,\n logLevel,\n };\n};\n\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport const getValueByStringPath = (obj: any, path: string): any => {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n for (const attr of path.split('.')) {\n if (attr in obj) {\n obj = obj[attr];\n } else {\n return;\n }\n }\n return obj;\n};\n\nexport const getClientStates = (client: AmplitudeCore, paths: Array<string>) => (): { [key: string]: any } => {\n const res: { [key: string]: any } = {};\n for (const path of paths) {\n res[path] = getValueByStringPath(client, path);\n }\n return res;\n};\n\nexport const debugWrapper =\n <T extends Array<any>, R>(\n fn: (...args: T) => R,\n fnName: string,\n getLogConfig: () => LogConfig,\n getStates?: () => { [key: string]: any },\n fnContext: any = null,\n ) =>\n (...args: T): R => {\n const { logger, logLevel } = getLogConfig();\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n const debugContext: DebugContext = {\n type: 'invoke public method',\n name: fnName,\n args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n const result = fn.apply(fnContext, args);\n if (result && (result as any).promise) {\n // if result is a promise, add the callback\n (result as any).promise.then(() => {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n } else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n","import { DestinationPlugin } from '../types/plugin';\nimport { Event } from '../types/event/event';\nimport { Result } from '../types/result';\nimport { Status } from '../types/status';\nimport {\n Response,\n InvalidResponse,\n PayloadTooLargeResponse,\n RateLimitResponse,\n SuccessResponse,\n} from '../types/response';\nimport {\n INVALID_API_KEY,\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n SUCCESS_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n} from '../types/messages';\nimport { STORAGE_PREFIX } from '../types/constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\nimport { IConfig } from '../types/config/core-config';\nimport { EventCallback } from '../types/event-callback';\nimport { IDiagnosticsClient } from '../diagnostics/diagnostics-client';\nimport { isSuccessStatusCode } from '../utils/status-code';\nimport { getStacktrace } from '../utils/debug';\n\nexport interface Context {\n event: Event;\n attempts: number;\n callback: EventCallback;\n timeout: number;\n}\n\nfunction getErrorMessage(error: unknown) {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nexport function getResponseBodyString(res: Response) {\n let responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\n\nexport class Destination implements DestinationPlugin {\n name = 'amplitude';\n type = 'destination' as const;\n\n retryTimeout = 1000;\n throttleTimeout = 30000;\n storageKey = '';\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: IConfig;\n // Indicator of whether events that are scheduled (but not flushed yet).\n // When flush:\n // 1. assign `scheduleId` to `flushId`\n // 2. set `scheduleId` to null\n scheduleId: ReturnType<typeof setTimeout> | null = null;\n // Timeout in milliseconds of current schedule\n scheduledTimeout = 0;\n // Indicator of whether current flush resolves.\n // When flush resolves, set `flushId` to null\n flushId: ReturnType<typeof setTimeout> | null = null;\n queue: Context[] = [];\n diagnosticsClient: IDiagnosticsClient | undefined;\n\n constructor(context?: { diagnosticsClient: IDiagnosticsClient }) {\n this.diagnosticsClient = context?.diagnosticsClient;\n }\n\n async setup(config: IConfig): Promise<undefined> {\n this.config = config;\n\n this.storageKey = `${STORAGE_PREFIX}_${this.config.apiKey.substring(0, 10)}`;\n const unsent = await this.config.storageProvider?.get(this.storageKey);\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map((event: Event) => this.execute(event))).catch();\n }\n\n return Promise.resolve(undefined);\n }\n\n execute(event: Event): Promise<Result> {\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n\n return new Promise((resolve) => {\n const context = {\n event,\n attempts: 0,\n callback: (result: Result) => resolve(result),\n timeout: 0,\n };\n this.queue.push(context);\n this.schedule(this.config.flushIntervalMillis);\n this.saveEvents();\n });\n }\n\n removeEventsExceedFlushMaxRetries(list: Context[]) {\n return list.filter((context) => {\n context.attempts += 1;\n if (context.attempts < this.config.flushMaxRetries) {\n return true;\n }\n void this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n }\n\n scheduleEvents(list: Context[]) {\n list.forEach((context) => {\n this.schedule(context.timeout === 0 ? this.config.flushIntervalMillis : context.timeout);\n });\n }\n\n // Schedule a flush in timeout when\n // 1. No schedule\n // 2. Timeout greater than existing timeout.\n // This makes sure that when throttled, no flush when throttle timeout expires.\n schedule(timeout: number) {\n if (this.config.offline) {\n return;\n }\n\n if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n if (this.scheduleId) {\n clearTimeout(this.scheduleId);\n }\n this.scheduledTimeout = timeout;\n this.scheduleId = setTimeout(() => {\n this.queue = this.queue.map((context) => {\n context.timeout = 0;\n return context;\n });\n void this.flush(true);\n }, timeout);\n return;\n }\n }\n\n // Mark current schedule is flushed.\n resetSchedule() {\n this.scheduleId = null;\n this.scheduledTimeout = 0;\n }\n\n // Flush all events regardless of their timeout\n async flush(useRetry = false) {\n // Skip flush if offline\n if (this.config.offline) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return;\n }\n\n if (this.flushId) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n return;\n }\n\n this.flushId = this.scheduleId;\n this.resetSchedule();\n\n const list: Context[] = [];\n const later: Context[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n\n const batches = chunk(list, this.config.flushQueueSize);\n\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n await batches.reduce(async (promise, batch) => {\n await promise;\n return await this.send(batch, useRetry);\n }, Promise.resolve());\n\n // Mark current flush is done\n this.flushId = null;\n\n this.scheduleEvents(this.queue);\n }\n\n async send(list: Context[], useRetry = true) {\n if (!this.config.apiKey) {\n return this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE);\n }\n\n const payload = {\n api_key: this.config.apiKey,\n events: list.map((context) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { extra, ...eventWithoutExtra } = context.event;\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n request_metadata: this.config.requestMetadata,\n };\n this.config.requestMetadata = new RequestMetadata();\n\n try {\n const { serverUrl } = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch);\n const res = await this.config.transportProvider.send(serverUrl, payload);\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return;\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, `${res.status}: ${getResponseBodyString(res)}`);\n } else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return;\n }\n this.handleResponse(res, list);\n } catch (e) {\n const errorMessage = getErrorMessage(e);\n this.config.loggerProvider.error(errorMessage);\n\n this.diagnosticsClient?.recordEvent('analytics.events.unsuccessful.from.catch.error', {\n events: list.map((context) => context.event.event_type),\n message: errorMessage,\n stack_trace: getStacktrace(),\n });\n\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n }\n }\n\n handleResponse(res: Response, list: Context[]) {\n if (!isSuccessStatusCode(res.statusCode)) {\n this.diagnosticsClient?.recordEvent('analytics.events.unsuccessful', {\n events: list.map((context) => context.event.event_type),\n code: res.statusCode,\n status: res.status,\n body: getResponseBodyString(res),\n stack_trace: getStacktrace(),\n });\n }\n\n const { status } = res;\n\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(`{code: 0, error: \"Status '${status}' provided for ${list.length} events\"}`);\n this.handleOtherResponse(list);\n break;\n }\n }\n }\n\n handleSuccessResponse(res: SuccessResponse, list: Context[]) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n }\n\n handleInvalidResponse(res: InvalidResponse, list: Context[]) {\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n const dropIndex = [\n ...Object.values(res.body.eventsWithInvalidFields),\n ...Object.values(res.body.eventsWithMissingFields),\n ...Object.values(res.body.eventsWithInvalidIdLengths),\n ...res.body.silencedEvents,\n ].flat();\n const dropIndexSet = new Set(dropIndex);\n\n const retry = list.filter((context, index) => {\n if (dropIndexSet.has(index)) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n }\n\n handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n\n this.config.flushQueueSize /= 2;\n\n const tryable = this.removeEventsExceedFlushMaxRetries(list);\n this.scheduleEvents(tryable);\n }\n\n handleRateLimitResponse(res: RateLimitResponse, list: Context[]) {\n const dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n const dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n const throttledIndex = res.body.throttledEvents;\n const dropUserIdsSet = new Set(dropUserIds);\n const dropDeviceIdsSet = new Set(dropDeviceIds);\n const throttledIndexSet = new Set(throttledIndex);\n\n const retry = list.filter((context, index) => {\n if (\n (context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))\n ) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = this.throttleTimeout;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n }\n\n handleOtherResponse(list: Context[]) {\n const later = list.map((context) => {\n context.timeout = context.attempts * this.retryTimeout;\n return context;\n });\n\n const tryable = this.removeEventsExceedFlushMaxRetries(later);\n this.scheduleEvents(tryable);\n }\n\n fulfillRequest(list: Context[], code: number, message: string) {\n // Record diagnostics for dropped events (non-success status codes)\n if (!isSuccessStatusCode(code)) {\n this.diagnosticsClient?.increment('analytics.events.dropped', list.length);\n this.diagnosticsClient?.recordEvent('analytics.events.dropped', {\n events: list.map((context) => context.event.event_type),\n code: code,\n message: message,\n stack_trace: getStacktrace(),\n });\n } else {\n this.diagnosticsClient?.increment('analytics.events.sent', list.length);\n }\n this.removeEvents(list);\n list.forEach((context) => context.callback(buildResult(context.event, code, message)));\n }\n\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n saveEvents() {\n if (!this.config.storageProvider) {\n return;\n }\n\n const updatedEvents = this.queue.map((context) => context.event);\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n }\n\n /**\n * This is called on response comes back for a request\n */\n removeEvents(eventsToRemove: Context[]) {\n this.queue = this.queue.filter(\n (queuedContext) => !eventsToRemove.some((context) => context.event.insert_id === queuedContext.event.insert_id),\n );\n\n this.saveEvents();\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Transport } from '../types/transport';\nimport { Status } from '../types/status';\nimport { Payload } from '../types/payload';\nimport { Response } from '../types/response';\nimport { isSuccessStatusCode } from '../utils/status-code';\n\nexport class BaseTransport implements Transport {\n send(_serverUrl: string, _payload: Payload): Promise<Response | null> {\n return Promise.resolve(null);\n }\n\n buildResponse(responseJSON: Record<string, any>): Response | null {\n if (typeof responseJSON !== 'object') {\n return null;\n }\n\n const statusCode = responseJSON.code || 0;\n const status = this.buildStatus(statusCode);\n\n switch (status) {\n case Status.Success:\n return {\n status,\n statusCode,\n body: {\n eventsIngested: responseJSON.events_ingested ?? 0,\n payloadSizeBytes: responseJSON.payload_size_bytes ?? 0,\n serverUploadTime: responseJSON.server_upload_time ?? 0,\n },\n };\n\n case Status.Invalid:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n missingField: responseJSON.missing_field ?? '',\n eventsWithInvalidFields: responseJSON.events_with_invalid_fields ?? {},\n eventsWithMissingFields: responseJSON.events_with_missing_fields ?? {},\n eventsWithInvalidIdLengths: responseJSON.events_with_invalid_id_lengths ?? {},\n epsThreshold: responseJSON.eps_threshold ?? 0,\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n silencedDevices: responseJSON.silenced_devices ?? [],\n silencedEvents: responseJSON.silenced_events ?? [],\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n },\n };\n case Status.RateLimit:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n epsThreshold: responseJSON.eps_threshold ?? 0,\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledUsers: responseJSON.throttled_users ?? {},\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n exceededDailyQuotaUsers: responseJSON.exceeded_daily_quota_users ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status,\n statusCode,\n };\n }\n }\n\n buildStatus(code: number): Status {\n if (isSuccessStatusCode(code)) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n\n if (code === 408) {\n return Status.Timeout;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n","/**\n * @deprecated use ServerZoneType instead\n */\nexport enum ServerZone {\n US = 'US',\n EU = 'EU',\n /**\n * Add for session-replay-browser migration from analytics-type v1.x.\n */\n STAGING = 'STAGING',\n}\n\nexport type ServerZoneType = 'US' | 'EU';\n","export const OfflineDisabled = null;\n","export { AmplitudeCore } from './core-client';\nexport { CoreClient, PluginHost } from './types/client/core-client';\nexport { AnalyticsClient } from './types/client/analytics-client';\nexport { AmplitudeContext } from './types/amplitude-context';\nexport { Identify, IIdentify } from './identify';\nexport { Revenue, IRevenue, RevenueProperty } from './revenue';\nexport { Destination } from './plugins/destination';\nexport { IdentityEventSender } from './plugins/identity';\nexport { Config, RequestMetadata } from './config';\nexport { IConfig } from './types/config/core-config';\nexport { Logger, ILogger, LogConfig } from './logger';\nexport { getGlobalScope } from './global-scope';\nexport { getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId } from './analytics-connector';\nexport { isNewSession } from './session';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport { getLanguage } from './language';\nexport { getQueryParams } from './query-params';\n\nexport { returnWrapper, AmplitudeReturn } from './utils/return-wrapper';\nexport { debugWrapper, getClientLogConfig, getClientStates } from './utils/debug';\nexport { UUID } from './utils/uuid';\nexport { createIdentifyEvent } from './utils/event-builder';\nexport { isUrlMatchAllowlist, getDecodeURI } from './utils/url-utils';\nexport { generateHashCode, isTimestampInSample } from './utils/sampling';\n\nexport { MemoryStorage } from './storage/memory';\nexport { CookieStorage, isDomainEqual, decodeCookieValue } from './storage/cookie';\nexport { getStorageKey } from './storage/helpers';\n\nexport { BrowserStorage } from './storage/browser-storage';\n\nexport { DiagnosticsClient, IDiagnosticsClient } from './diagnostics/diagnostics-client';\nexport { registerSdkLoaderMetadata } from './diagnostics/uncaught-sdk-errors';\n\nexport { BaseTransport } from './transports/base';\nexport { FetchTransport } from './transports/fetch';\n\nexport { RemoteConfigClient, IRemoteConfigClient, RemoteConfig, Source } from './remote-config/remote-config';\n\nexport { LogLevel } from './types/loglevel';\nexport { AMPLITUDE_PREFIX, STORAGE_PREFIX } from './types/constants';\nexport { Storage, IdentityStorageType, CookieStorageConfig } from './types/storage';\nexport {\n Event,\n IdentifyOperation,\n SpecialEventType,\n IdentifyEvent,\n GroupIdentifyEvent,\n IdentifyUserProperties,\n} from './types/event/event';\nexport { EventOptions, BaseEvent } from './types/event/base-event';\nexport { IngestionMetadata } from './types/event/ingestion-metadata';\nexport { ServerZoneType, ServerZone } from './types/server-zone';\nexport { OfflineDisabled } from './types/offline';\nexport { Plan } from './types/event/plan';\nexport { TransportType, Transport, TransportOptions, TransportTypeOrOptions } from './types/transport';\nexport { Payload } from './types/payload';\nexport { Response } from './types/response';\nexport { UserSession } from './types/user-session';\nexport {\n Plugin,\n BeforePlugin,\n DestinationPlugin,\n EnrichmentPlugin,\n PluginType,\n AnalyticsIdentity,\n} from './types/plugin';\nexport { Result } from './types/result';\nexport {\n ElementInteractionsOptions,\n Messenger,\n ActionType,\n DEFAULT_CSS_SELECTOR_ALLOWLIST,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n DEFAULT_ACTION_CLICK_ALLOWLIST,\n LabeledEvent,\n Trigger,\n DataSource,\n} from './types/element-interactions';\n\nexport {\n FrustrationInteractionsOptions,\n DEFAULT_DEAD_CLICK_ALLOWLIST,\n DEFAULT_RAGE_CLICK_ALLOWLIST,\n DEFAULT_RAGE_CLICK_THRESHOLD,\n DEFAULT_RAGE_CLICK_WINDOW_MS,\n DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD,\n DEFAULT_DEAD_CLICK_WINDOW_MS,\n} from './types/frustration-interactions';\nexport { PageTrackingOptions, PageTrackingTrackOn, PageTrackingHistoryChanges } from './types/page-view-tracking';\nexport { Status } from './types/status';\n\nexport { NetworkEventCallback, networkObserver } from './network-observer';\nexport { NetworkRequestEvent, IRequestWrapper, JsonObject, JsonValue, JsonArray } from './network-request-event';\nexport { NetworkTrackingOptions, NetworkCaptureRule } from './types/network-tracking';\nexport { SAFE_HEADERS, FORBIDDEN_HEADERS } from './types/constants';\n\nexport { PageUrlEnrichmentOptions } from './types/page-url-enrichment';\n\n// Campaign\nexport { Campaign, UTMParameters, ReferrerParameters, ClickIdParameters, ICampaignParser } from './types/campaign';\nexport { EMPTY_VALUE, BASE_CAMPAIGN, MKTG } from './types/constants';\nexport { CampaignParser } from './campaign/campaign-parser';\nexport {\n getPageTitle,\n TEXT_MASK_ATTRIBUTE,\n MASKED_TEXT_VALUE,\n replaceSensitiveString,\n CC_REGEX,\n SSN_REGEX,\n EMAIL_REGEX,\n} from './plugins/helpers';\n\n// Browser\nexport {\n BrowserConfig,\n BrowserOptions,\n DefaultTrackingOptions,\n TrackingOptions,\n AutocaptureOptions,\n CookieOptions,\n AttributionOptions,\n RemoteConfigOptions,\n} from './types/config/browser-config';\nexport { BrowserClient } from './types/client/browser-client';\n\n// Node\nexport { NodeClient } from './types/client/node-client';\nexport { NodeConfig, NodeOptions } from './types/config/node-config';\n\n// React Native\nexport {\n ReactNativeConfig,\n ReactNativeTrackingOptions,\n ReactNativeOptions,\n ReactNativeAttributionOptions,\n} from './types/config/react-native-config';\nexport { ReactNativeClient } from './types/client/react-native-client';\n\nexport { Observable, asyncMap, merge, multicast, Unsubscribable } from './utils/observable';\n\nexport { InstanceProxy } from './types/proxy';\n","export const VERSION = '1.5.31';\n","import { UUID, BeforePlugin, NodeConfig, Event } from '@amplitude/analytics-core';\nimport { VERSION } from '../version';\n\nexport class Context implements BeforePlugin {\n name = 'context';\n type = 'before' as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: NodeConfig;\n eventId = 0;\n library = `amplitude-node-ts/${VERSION}`;\n\n setup(config: NodeConfig): Promise<undefined> {\n this.config = config;\n return Promise.resolve(undefined);\n }\n\n execute(context: Event): Promise<Event> {\n return new Promise((resolve) => {\n const time = new Date().getTime();\n\n const contextEvent: Event = {\n time,\n insert_id: UUID(),\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return resolve(contextEvent);\n });\n }\n}\n","import { BaseTransport, Payload, Response, Transport } from '@amplitude/analytics-core';\nimport * as http from 'http';\nimport * as https from 'https';\n\nexport class Http extends BaseTransport implements Transport {\n send(serverUrl: string, payload: Payload): Promise<Response | null> {\n let protocol: typeof http | typeof https;\n if (serverUrl.startsWith('http://')) {\n protocol = http;\n } else if (serverUrl.startsWith('https://')) {\n protocol = https;\n } else {\n throw new Error('Invalid server url');\n }\n\n const url = new URL(serverUrl);\n const requestPayload = JSON.stringify(payload);\n const options = {\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': Buffer.byteLength(requestPayload),\n },\n hostname: url.hostname,\n method: 'POST',\n path: url.pathname,\n port: url.port,\n protocol: url.protocol,\n };\n return new Promise((resolve) => {\n const req = protocol.request(options, (res) => {\n res.setEncoding('utf8');\n let responsePayload = '';\n res.on('data', (chunk: string) => {\n responsePayload += chunk;\n });\n\n res.on('end', () => {\n if (res.complete && responsePayload.length > 0) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record<string, any> = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch {\n resolve(this.buildResponse({ code: res.statusCode }));\n }\n }\n });\n });\n req.on('error', () => resolve(null));\n req.end(requestPayload);\n });\n }\n}\n","import { Config, NodeOptions, NodeConfig as INodeConfig } from '@amplitude/analytics-core';\nimport { Http } from './transports/http';\n\nexport class NodeConfig extends Config implements INodeConfig {\n constructor(apiKey: string, options?: NodeOptions) {\n super({\n transportProvider: new Http(),\n ...options,\n apiKey,\n });\n }\n}\n\nexport const useNodeConfig = (apiKey: string, overrides?: NodeOptions): INodeConfig => {\n return new NodeConfig(apiKey, overrides);\n};\n","import {\n AmplitudeCore,\n Destination,\n returnWrapper,\n debugWrapper,\n getClientLogConfig,\n getClientStates,\n NodeClient,\n NodeConfig,\n NodeOptions,\n} from '@amplitude/analytics-core';\nimport { Context } from './plugins/context';\nimport { useNodeConfig } from './config';\n\nexport class AmplitudeNode extends AmplitudeCore {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: NodeConfig;\n\n init(apiKey = '', options?: NodeOptions) {\n return returnWrapper(this._init({ ...options, apiKey }));\n }\n protected async _init(options: NodeOptions & { apiKey: string }) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n const nodeOptions = useNodeConfig(options.apiKey, {\n ...options,\n });\n\n await super._init(nodeOptions);\n\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n\n this.initializing = false;\n\n await this.runQueuedFunctions('dispatchQ');\n }\n}\n\nexport const createInstance = (): NodeClient => {\n const client = new AmplitudeNode();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nexport {\n AmplitudeReturn,\n BaseEvent,\n EventOptions,\n IConfig,\n Event,\n IdentifyEvent,\n GroupIdentifyEvent,\n IdentifyOperation,\n SpecialEventType,\n IIdentify,\n IRevenue,\n RevenueProperty,\n ILogger,\n LogLevel,\n Plugin,\n BeforePlugin,\n EnrichmentPlugin,\n DestinationPlugin,\n Result,\n ServerZoneType,\n ServerZone,\n IdentityStorageType,\n Storage,\n TransportType,\n OfflineDisabled,\n} from '@amplitude/analytics-core';\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport client from './node-client';\nexport { createInstance } from './node-client';\nexport const { add, groupIdentify, identify, init, logEvent, remove, revenue, setGroup, setOptOut, track, flush } =\n client;\nexport { Revenue, Identify } from '@amplitude/analytics-core';\n\n// Export types to maintain backward compatibility with `analytics-types`.\n// In the next major version, only export customer-facing types to reduce the public API surface.\nexport * as Types from './types';\n","/**\n * Amplitude Subscriber for autotel\n *\n * Send events to Amplitude for product events.\n *\n * @example\n * ```typescript\n * import { Events } from 'autotel/events';\n * import { AmplitudeSubscriber } from 'autotel-subscribers/amplitude';\n *\n * const events = new Events('checkout', {\n * subscribers: [\n * new AmplitudeSubscriber({\n * apiKey: process.env.AMPLITUDE_API_KEY!\n * })\n * ]\n * });\n *\n * events.trackEvent('order.completed', { userId: '123', amount: 99.99 });\n * ```\n */\n\nimport type {\n EventSubscriber,\n EventAttributes,\n FunnelStatus,\n OutcomeStatus,\n} from 'autotel/event-subscriber';\n\nexport interface AmplitudeConfig {\n /** Amplitude API key */\n apiKey: string;\n /** Enable/disable the subscriber */\n enabled?: boolean;\n}\n\nexport class AmplitudeSubscriber implements EventSubscriber {\n readonly name = 'AmplitudeSubscriber';\n readonly version = '1.0.0';\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private amplitudeModule: any = null;\n private enabled: boolean;\n private config: AmplitudeConfig;\n private initPromise: Promise<void> | null = null;\n\n constructor(config: AmplitudeConfig) {\n this.enabled = config.enabled ?? true;\n this.config = config;\n\n if (this.enabled) {\n // Start initialization immediately but don't block constructor\n this.initPromise = this.initialize();\n }\n }\n\n private async initialize(): Promise<void> {\n try {\n // Dynamic import to avoid adding @amplitude/analytics-node as a hard dependency\n // The SDK exports init(), track(), flush() as separate functions\n const amplitude = await import('@amplitude/analytics-node');\n amplitude.init(this.config.apiKey);\n this.amplitudeModule = amplitude;\n } catch (error) {\n console.error(\n 'Amplitude subscriber failed to initialize. Install @amplitude/analytics-node: pnpm add @amplitude/analytics-node',\n error,\n );\n this.enabled = false;\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n }\n\n async trackEvent(name: string, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: name,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: attributes,\n });\n }\n\n async trackFunnelStep(\n funnelName: string,\n step: FunnelStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: `${funnelName}.${step}`,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: {\n funnel: funnelName,\n step,\n ...attributes,\n },\n });\n }\n\n async trackOutcome(\n operationName: string,\n outcome: OutcomeStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: `${operationName}.${outcome}`,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: {\n operation: operationName,\n outcome,\n ...attributes,\n },\n });\n }\n\n async trackValue(name: string, value: number, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: name,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: {\n value,\n ...attributes,\n },\n });\n }\n\n /** Flush pending events before shutdown */\n async shutdown(): Promise<void> {\n await this.ensureInitialized();\n if (this.amplitudeModule) {\n await this.amplitudeModule.flush();\n }\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/event/event.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/constants.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/valid-properties.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/identify.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/messages.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/status.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/result-builder.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/global-scope.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/uuid.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/timeline.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/event-builder.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/return-wrapper.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/core-client.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/revenue.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/chunk.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/loglevel.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/logger.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/config.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/status-code.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/utils/debug.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/plugins/destination.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/transports/base.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/server-zone.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/types/offline.ts","../../../node_modules/.pnpm/@amplitude+analytics-core@2.36.0/node_modules/@amplitude/analytics-core/src/index.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/version.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/plugins/context.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/transports/http.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/config.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/node-client.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/types.ts","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.32/node_modules/@amplitude/analytics-node/src/index.ts","../src/amplitude.ts"],"names":["d","b","__assign","IdentifyOperation","SpecialEventType","Identify","Status","_a","Timeline","plugin","e","_b","identify","groupIdentify","revenue","AmplitudeCore","Revenue","RevenueProperty","LogLevel","Logger","Config","RequestMetadata","Destination","BaseTransport","ServerZone","Context","Http","http","https","chunk","NodeConfig","init_config","AmplitudeNode","init_esm"],"mappings":"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","file":"amplitude.cjs","sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { BaseEvent } from './base-event';\nimport { RevenueEventProperties } from '../../revenue';\n\nexport enum IdentifyOperation {\n // Base Operations to set values\n SET = '$set',\n SET_ONCE = '$setOnce',\n\n // Operations around modifying existing values\n ADD = '$add',\n APPEND = '$append',\n PREPEND = '$prepend',\n REMOVE = '$remove',\n\n // Operations around appending values *if* they aren't present\n PREINSERT = '$preInsert',\n POSTINSERT = '$postInsert',\n\n // Operations around removing properties/values\n UNSET = '$unset',\n CLEAR_ALL = '$clearAll',\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array<string | number>\n | { [key: string]: ValidPropertyType }\n | Array<{ [key: string]: ValidPropertyType }>;\n\ninterface BaseOperationConfig {\n [key: string]: ValidPropertyType;\n}\n\nexport interface IdentifyUserProperties {\n // Add operations can only take numbers\n [IdentifyOperation.ADD]?: { [key: string]: number };\n\n // This reads the keys of the passed object, but the values are not used\n [IdentifyOperation.UNSET]?: BaseOperationConfig;\n // This option does not read the key as it unsets all user properties\n [IdentifyOperation.CLEAR_ALL]?: any;\n\n // These operations can take numbers, strings, or arrays of both.\n [IdentifyOperation.SET]?: BaseOperationConfig;\n [IdentifyOperation.SET_ONCE]?: BaseOperationConfig;\n [IdentifyOperation.APPEND]?: BaseOperationConfig;\n [IdentifyOperation.PREPEND]?: BaseOperationConfig;\n [IdentifyOperation.POSTINSERT]?: BaseOperationConfig;\n [IdentifyOperation.PREINSERT]?: BaseOperationConfig;\n [IdentifyOperation.REMOVE]?: BaseOperationConfig;\n}\n\n/**\n * Represents the structure of user properties that can be sent with an Identify or GroupIdentify event.\n *\n * This type supports both:\n *\n * 1. Reserved Amplitude identify operations via `IdentifyUserProperties`:\n * These operations enable structured updates to user properties.\n *\n * Example:\n * ```ts\n * {\n * $set: { plan: 'premium', login_count: 1 },\n * $add: { login_count: 1 },\n * $unset: { plan: '-' },\n * $clearAll: '-'\n * }\n * ```\n *\n * 2. Custom user-defined properties (excluding reserved operation keys):\n * Useful for assigning static properties without using Identify operations.\n *\n * Example:\n * ```ts\n * {\n * custom_flag: true,\n * experiment_group: 'B',\n * favorite_color: 'blue'\n * }\n * ```\n *\n * This union ensures compatibility with Amplitude's identify semantics\n * while allowing flexibility to define arbitrary non-reserved properties.\n */\nexport type UserProperties =\n | IdentifyUserProperties\n | {\n [key in Exclude<string, IdentifyOperation>]: any;\n };\n\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport enum SpecialEventType {\n IDENTIFY = '$identify',\n GROUP_IDENTIFY = '$groupidentify',\n REVENUE = 'revenue_amount',\n}\n\nexport interface TrackEvent extends BaseEvent {\n event_type: Exclude<string, SpecialEventType>;\n}\n\nexport interface IdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.IDENTIFY;\n user_properties: UserProperties;\n}\n\nexport interface GroupIdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.GROUP_IDENTIFY;\n group_properties: UserProperties;\n}\n\nexport interface RevenueEvent extends BaseEvent {\n event_type: SpecialEventType.REVENUE;\n event_properties:\n | RevenueEventProperties\n | {\n [key: string]: any;\n };\n}\n\nexport type Event = TrackEvent | IdentifyEvent | GroupIdentifyEvent | RevenueEvent;\n","import { Campaign } from './campaign';\n\nexport const UNSET_VALUE = '-';\nexport const AMPLITUDE_PREFIX = 'AMP';\nexport const STORAGE_PREFIX = `${AMPLITUDE_PREFIX}_unsent`;\nexport const DEFAULT_INSTANCE_NAME = '$default_instance';\nexport const AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport const EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport const AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport const EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n\n// Campaign constants\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rdt_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rdt_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n\n// list of Network headers that are safe to capture\nexport const SAFE_HEADERS = [\n 'access-control-allow-origin',\n 'access-control-allow-credentials',\n 'access-control-expose-headers',\n 'access-control-max-age',\n 'access-control-allow-methods',\n 'access-control-allow-headers',\n 'accept-patch',\n 'accept-ranges',\n 'age',\n 'allow',\n 'alt-svc',\n 'cache-control',\n 'connection',\n 'content-disposition',\n 'content-encoding',\n 'content-language',\n 'content-length',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'date',\n 'delta-base',\n 'etag',\n 'expires',\n 'im',\n 'last-modified',\n 'link',\n 'location',\n 'permanent',\n 'p3p',\n 'pragma',\n 'proxy-authenticate',\n 'public-key-pins',\n 'retry-after',\n 'server',\n 'status',\n 'strict-transport-security',\n 'trailer',\n 'transfer-encoding',\n 'tk',\n 'upgrade',\n 'vary',\n 'via',\n 'warning',\n 'www-authenticate',\n 'x-b3-traceid',\n 'x-frame-options',\n];\n\n// list of Network headers to never capture\nexport const FORBIDDEN_HEADERS = ['authorization', 'cookie', 'set-cookie'];\n","const MAX_PROPERTY_KEYS = 1000;\n\nexport const isValidObject = (properties: { [key: string]: any }): boolean => {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (const key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = properties[key];\n if (!isValidProperties(key, value)) return false;\n }\n return true;\n};\n\nexport const isValidProperties = (property: string, value: any): boolean => {\n if (typeof property !== 'string') return false;\n if (Array.isArray(value)) {\n let isValid = true;\n for (const valueElement of value) {\n if (Array.isArray(valueElement)) {\n return false;\n } else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement as object);\n } else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n } else if (value === null || value === undefined) {\n return false;\n } else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n } else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n","import { UNSET_VALUE } from './types/constants';\nimport { isValidProperties } from './utils/valid-properties';\n\nexport interface IIdentify {\n getUserProperties(): IdentifyUserProperties;\n set(property: string, value: ValidPropertyType): IIdentify;\n setOnce(property: string, value: ValidPropertyType): IIdentify;\n append(property: string, value: ValidPropertyType): IIdentify;\n prepend(property: string, value: ValidPropertyType): IIdentify;\n postInsert(property: string, value: ValidPropertyType): IIdentify;\n preInsert(property: string, value: ValidPropertyType): IIdentify;\n remove(property: string, value: ValidPropertyType): IIdentify;\n add(property: string, value: number): IIdentify;\n unset(property: string): IIdentify;\n clearAll(): IIdentify;\n}\n\nexport class Identify implements IIdentify {\n protected readonly _propertySet: Set<string> = new Set<string>();\n protected _properties: IdentifyUserProperties = {};\n\n public getUserProperties(): IdentifyUserProperties {\n return { ...this._properties };\n }\n\n public set(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n }\n\n public setOnce(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n }\n\n public append(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n }\n\n public prepend(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n }\n\n public postInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n }\n\n public preInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n }\n\n public remove(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n }\n\n public add(property: string, value: number): Identify {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n }\n\n public unset(property: string): Identify {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n }\n\n public clearAll(): Identify {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n\n return this;\n }\n\n // Returns whether or not this set actually worked.\n private _safeSet(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let userPropertyMap: any = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n\n return false;\n }\n\n private _validate(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n }\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array<string | number>\n | { [key: string]: ValidPropertyType }\n | Array<{ [key: string]: ValidPropertyType }>;\n\ninterface BaseOperationConfig {\n [key: string]: ValidPropertyType;\n}\n\nexport interface IdentifyUserProperties {\n // Add operations can only take numbers\n [IdentifyOperation.ADD]?: { [key: string]: number };\n\n // This reads the keys of the passed object, but the values are not used\n [IdentifyOperation.UNSET]?: BaseOperationConfig;\n // This option does not read the key as it unsets all user properties\n [IdentifyOperation.CLEAR_ALL]?: any;\n\n // These operations can take numbers, strings, or arrays of both.\n [IdentifyOperation.SET]?: BaseOperationConfig;\n [IdentifyOperation.SET_ONCE]?: BaseOperationConfig;\n [IdentifyOperation.APPEND]?: BaseOperationConfig;\n [IdentifyOperation.PREPEND]?: BaseOperationConfig;\n [IdentifyOperation.POSTINSERT]?: BaseOperationConfig;\n [IdentifyOperation.PREINSERT]?: BaseOperationConfig;\n [IdentifyOperation.REMOVE]?: BaseOperationConfig;\n}\n\nexport enum IdentifyOperation {\n // Base Operations to set values\n SET = '$set',\n SET_ONCE = '$setOnce',\n\n // Operations around modifying existing values\n ADD = '$add',\n APPEND = '$append',\n PREPEND = '$prepend',\n REMOVE = '$remove',\n\n // Operations around appending values *if* they aren't present\n PREINSERT = '$preInsert',\n POSTINSERT = '$postInsert',\n\n // Operations around removing properties/values\n UNSET = '$unset',\n CLEAR_ALL = '$clearAll',\n}\n\n/**\n * Note that the order of operations should align with https://github.com/amplitude/nova/blob/7701b5986b565d4b2fb53b99a9f2175df055dea8/src/main/java/com/amplitude/ingestion/core/UserPropertyUtils.java#L210\n */\nexport const OrderedIdentifyOperations = [\n IdentifyOperation.CLEAR_ALL,\n IdentifyOperation.UNSET,\n IdentifyOperation.SET,\n IdentifyOperation.SET_ONCE,\n IdentifyOperation.ADD,\n IdentifyOperation.APPEND,\n IdentifyOperation.PREPEND,\n IdentifyOperation.PREINSERT,\n IdentifyOperation.POSTINSERT,\n IdentifyOperation.REMOVE,\n];\n","export const SUCCESS_MESSAGE = 'Event tracked successfully';\nexport const UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport const MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport const OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport const MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport const INVALID_API_KEY = 'Invalid API key';\nexport const CLIENT_NOT_INITIALIZED = 'Client not initialized';\n","/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent successfully. */\n Success = 'success',\n /** A user or device in the payload is currently rate limited and should try again later. */\n RateLimit = 'rate_limit',\n /** The sent payload was too large to be processed. */\n PayloadTooLarge = 'payload_too_large',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Timeout = 'Timeout',\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n SystemError = 'SystemError',\n}\n","import { Event } from '../types/event/event';\nimport { Result } from '../types/result';\nimport { Status } from '../types/status';\n\nexport const buildResult = (event: Event, code = 0, message: string = Status.Unknown): Result => {\n return { event, code, message };\n};\n","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\n\nexport const getGlobalScope = (): typeof globalThis | undefined => {\n // This should only be used for integrations with Amplitude that are not running in a browser environment\n // We need to specify the name of the global variable as a string to prevent it from being minified\n const ampIntegrationContextName = 'ampIntegrationContext' as keyof typeof globalThis;\n if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n return globalThis[ampIntegrationContextName] as typeof globalThis;\n }\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n","/**\n * Source: [jed's gist's comment]{@link https://gist.github.com/jed/982883?permalink_comment_id=3223002#gistcomment-3223002}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\n\nimport { getGlobalScope } from '../global-scope';\n\nconst legacyUUID = function (a?: any): string {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (\n a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))\n ) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (\n String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)\n ) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID, // random hex digits\n );\n};\n\nconst hex: string[] = [...Array(256).keys()].map((index) => index.toString(16).padStart(2, '0'));\n\nexport const UUID = (a?: any): string => {\n const globalScope = getGlobalScope();\n\n /* istanbul ignore next */\n if (!globalScope?.crypto?.getRandomValues) {\n // Fallback to legacy UUID generation if crypto is not available\n return legacyUUID(a);\n }\n\n const r = globalScope.crypto.getRandomValues(new Uint8Array(16));\n\n r[6] = (r[6] & 0x0f) | 0x40;\n r[8] = (r[8] & 0x3f) | 0x80;\n\n return [...r.entries()].map(([index, int]) => ([4, 6, 8, 10].includes(index) ? `-${hex[int]}` : hex[int])).join('');\n};\n","import { AnalyticsIdentity, BeforePlugin, DestinationPlugin, EnrichmentPlugin, Plugin } from './types/plugin';\nimport { CoreClient } from './types/client/core-client';\nimport { IConfig } from './types/config/core-config';\nimport { ILogger } from './logger';\nimport { EventCallback } from './types/event-callback';\nimport { Event } from './types/event/event';\nimport { Result } from './types/result';\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\n\nexport class Timeline {\n queue: [Event, EventCallback][] = [];\n // Flag to guarantee one schedule apply is running\n applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n plugins: Plugin[] = [];\n // loggerProvider is set by the client at _init()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n loggerProvider: ILogger;\n\n constructor(private client: CoreClient) {}\n\n async register(plugin: Plugin, config: IConfig) {\n if (this.plugins.some((existingPlugin) => existingPlugin.name === plugin.name)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n this.loggerProvider.warn(`Plugin with name ${plugin.name} already exists, skipping registration`);\n return;\n }\n\n if (plugin.name === undefined) {\n plugin.name = UUID();\n this.loggerProvider.warn(`Plugin name is undefined. \n Generating a random UUID for plugin name: ${plugin.name}. \n Set a name for the plugin to prevent it from being added multiple times.`);\n }\n\n plugin.type = plugin.type ?? 'enrichment';\n await plugin.setup?.(config, this.client);\n this.plugins.push(plugin);\n }\n\n async deregister(pluginName: string, config: IConfig) {\n const index = this.plugins.findIndex((plugin) => plugin.name === pluginName);\n if (index === -1) {\n config.loggerProvider.warn(`Plugin with name ${pluginName} does not exist, skipping deregistration`);\n return;\n }\n const plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n await plugin.teardown?.();\n }\n\n reset(client: CoreClient) {\n this.applying = false;\n const plugins = this.plugins;\n plugins.map((plugin) => plugin.teardown?.());\n this.plugins = [];\n this.client = client;\n }\n\n push(event: Event) {\n return new Promise<Result>((resolve) => {\n this.queue.push([event, resolve]);\n this.scheduleApply(0);\n });\n }\n\n scheduleApply(timeout: number) {\n if (this.applying) return;\n this.applying = true;\n setTimeout(() => {\n void this.apply(this.queue.shift()).then(() => {\n this.applying = false;\n if (this.queue.length > 0) {\n this.scheduleApply(0);\n }\n });\n }, timeout);\n }\n\n async apply(item: [Event, EventCallback] | undefined) {\n if (!item) {\n return;\n }\n\n let [event] = item;\n const [, resolve] = item;\n\n // Log initial event\n this.loggerProvider.log('Timeline.apply: Initial event', event);\n\n const before = this.plugins.filter<BeforePlugin>(\n (plugin: Plugin): plugin is BeforePlugin => plugin.type === 'before',\n );\n\n for (const plugin of before) {\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n continue;\n }\n const e = await plugin.execute({ ...event });\n if (e === null) {\n this.loggerProvider.log(\n `Timeline.apply: Event filtered out by before plugin '${String(plugin.name)}', event: ${JSON.stringify(\n event,\n )}`,\n );\n resolve({ event, code: 0, message: '' });\n return;\n } else {\n event = e;\n this.loggerProvider.log(\n `Timeline.apply: Event after before plugin '${String(plugin.name)}', event: ${JSON.stringify(event)}`,\n );\n }\n }\n\n const enrichment = this.plugins.filter<EnrichmentPlugin>(\n (plugin: Plugin): plugin is EnrichmentPlugin => plugin.type === 'enrichment' || plugin.type === undefined,\n );\n\n for (const plugin of enrichment) {\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n continue;\n }\n const e = await plugin.execute({ ...event });\n if (e === null) {\n this.loggerProvider.log(\n `Timeline.apply: Event filtered out by enrichment plugin '${String(plugin.name)}', event: ${JSON.stringify(\n event,\n )}`,\n );\n resolve({ event, code: 0, message: '' });\n return;\n } else {\n event = e;\n this.loggerProvider.log(\n `Timeline.apply: Event after enrichment plugin '${String(plugin.name)}', event: ${JSON.stringify(event)}`,\n );\n }\n }\n\n const destination = this.plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === 'destination',\n );\n\n // Log final event before sending to destinations\n this.loggerProvider.log(`Timeline.apply: Final event before destinations, event: ${JSON.stringify(event)}`);\n\n const executeDestinations = destination.map((plugin) => {\n const eventClone = { ...event };\n return plugin.execute(eventClone).catch((e) => buildResult(eventClone, 0, String(e)));\n });\n\n void Promise.all(executeDestinations).then(([result]) => {\n const resolveResult =\n result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n\n return;\n }\n\n async flush() {\n const queue = this.queue;\n this.queue = [];\n\n await Promise.all(queue.map((item) => this.apply(item)));\n\n const destination = this.plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === 'destination',\n );\n\n const executeDestinations = destination.map((plugin) => {\n return plugin.flush && plugin.flush();\n });\n\n await Promise.all(executeDestinations);\n }\n\n onIdentityChanged(identity: AnalyticsIdentity) {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onIdentityChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onIdentityChanged?.(identity);\n });\n }\n\n onSessionIdChanged(sessionId: number) {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onSessionIdChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onSessionIdChanged?.(sessionId);\n });\n }\n\n onOptOutChanged(optOut: boolean) {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onOptOutChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onOptOutChanged?.(optOut);\n });\n }\n\n onReset() {\n this.plugins.forEach((plugin) => {\n // Intentionally to not await plugin.onReset() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void plugin.onReset?.();\n });\n }\n}\n","import { Identify, IIdentify } from '../identify';\nimport { IRevenue } from '../revenue';\nimport { BaseEvent, EventOptions } from '../types/event/base-event';\nimport { TrackEvent, IdentifyEvent, GroupIdentifyEvent, SpecialEventType, RevenueEvent } from '../types/event/event';\n\nexport const createTrackEvent = (\n eventInput: BaseEvent | string,\n eventProperties?: Record<string, any>,\n eventOptions?: EventOptions,\n): TrackEvent => {\n const baseEvent: BaseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return {\n ...baseEvent,\n ...eventOptions,\n ...(eventProperties && { event_properties: eventProperties }),\n };\n};\n\nexport const createIdentifyEvent = (identify: IIdentify, eventOptions?: EventOptions): IdentifyEvent => {\n const identifyEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n };\n\n return identifyEvent;\n};\n\nexport const createGroupIdentifyEvent = (\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n): GroupIdentifyEvent => {\n const groupIdentify: GroupIdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.GROUP_IDENTIFY,\n group_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n\n return groupIdentify;\n};\n\nexport const createGroupEvent = (groupType: string, groupName: string | string[], eventOptions?: EventOptions) => {\n const identify = new Identify();\n identify.set(groupType, groupName);\n\n const groupEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n return groupEvent;\n};\n\nexport const createRevenueEvent = (revenue: IRevenue, eventOptions?: EventOptions): RevenueEvent => {\n return {\n ...eventOptions,\n event_type: SpecialEventType.REVENUE,\n event_properties: revenue.getEventProperties(),\n };\n};\n","export interface AmplitudeReturn<T> {\n promise: Promise<T>;\n}\n\nexport const returnWrapper: {\n (): AmplitudeReturn<void>;\n <T>(awaitable: Promise<T>): AmplitudeReturn<T>;\n} = <T>(awaitable?: Promise<T>) => ({\n promise: awaitable || Promise.resolve(),\n});\n","import { Plugin } from './types/plugin';\nimport { IConfig } from './types/config/core-config';\nimport { BaseEvent, EventOptions } from './types/event/base-event';\nimport { Result } from './types/result';\nimport {\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n SpecialEventType,\n UserProperties,\n} from './types/event/event';\nimport { IIdentify, OrderedIdentifyOperations } from './identify';\nimport { IRevenue } from './revenue';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './types/messages';\nimport { Timeline } from './timeline';\nimport {\n createGroupEvent,\n createGroupIdentifyEvent,\n createIdentifyEvent,\n createRevenueEvent,\n createTrackEvent,\n} from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nimport { CoreClient, PluginHost } from './types/client/core-client';\nexport class AmplitudeCore implements CoreClient, PluginHost {\n protected initializing = false;\n protected name: string;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: IConfig;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n timeline: Timeline;\n isReady = false;\n protected q: Array<CallableFunction | typeof returnWrapper> = [];\n protected dispatchQ: Array<CallableFunction> = [];\n\n constructor(name = '$default') {\n this.timeline = new Timeline(this);\n this.name = name;\n }\n\n protected async _init(config: IConfig) {\n this.config = config;\n this.timeline.reset(this);\n this.timeline.loggerProvider = this.config.loggerProvider;\n await this.runQueuedFunctions('q');\n this.isReady = true;\n }\n\n async runQueuedFunctions(queueName: 'q' | 'dispatchQ') {\n const queuedFunctions = this[queueName];\n this[queueName] = [];\n for (const queuedFunction of queuedFunctions) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const val: ReturnType<typeof returnWrapper> | Promise<any> = queuedFunction();\n if (val && 'promise' in val) {\n await val.promise;\n } else {\n await val;\n }\n }\n // Rerun queued functions if the queue has accrued more while awaiting promises\n if (this[queueName].length) {\n await this.runQueuedFunctions(queueName);\n }\n }\n\n track(eventInput: BaseEvent | string, eventProperties?: Record<string, any>, eventOptions?: EventOptions) {\n const event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n logEvent = this.track.bind(this);\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n const event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n const event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n setGroup(groupType: string, groupName: string | string[], eventOptions?: EventOptions) {\n const event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n const event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n add(plugin: Plugin) {\n if (!this.isReady) {\n this.q.push(this._addPlugin.bind(this, plugin));\n return returnWrapper();\n }\n return this._addPlugin(plugin);\n }\n\n _addPlugin(plugin: Plugin) {\n return returnWrapper(this.timeline.register(plugin, this.config));\n }\n\n remove(pluginName: string) {\n if (!this.isReady) {\n this.q.push(this._removePlugin.bind(this, pluginName));\n return returnWrapper();\n }\n return this._removePlugin(pluginName);\n }\n\n _removePlugin(pluginName: string) {\n return returnWrapper(this.timeline.deregister(pluginName, this.config));\n }\n\n dispatchWithCallback(event: Event, callback: (result: Result) => void): void {\n if (!this.isReady) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n }\n\n async dispatch(event: Event): Promise<Result> {\n if (!this.isReady) {\n return new Promise<Result>((resolve) => {\n this.dispatchQ.push(this.dispatchWithCallback.bind(this, event, resolve));\n });\n }\n\n return this.process(event);\n }\n\n /**\n *\n * This method applies identify operations to user properties and\n * returns a single object representing the final user property state.\n *\n * This is a best-effort api that only supports $set, $clearAll, and $unset.\n * Other operations are not supported and are ignored.\n *\n *\n * @param userProperties The `event.userProperties` object from an Identify event.\n * @returns A key-value object user properties without operations.\n *\n * @example\n * Input:\n * {\n * $set: { plan: 'premium' },\n * custom_flag: true\n * }\n *\n * Output:\n * {\n * plan: 'premium',\n * custom_flag: true\n * }\n */\n getOperationAppliedUserProperties(userProperties: UserProperties | undefined): { [key: string]: any } {\n const updatedProperties: { [key: string]: any } = {};\n\n if (userProperties === undefined) {\n return updatedProperties;\n }\n\n // Keep non-operation keys for later merge\n const nonOpProperties: {\n [key in Exclude<string, IdentifyOperation>]: any;\n } = {};\n Object.keys(userProperties).forEach((key) => {\n if (!Object.values(IdentifyOperation).includes(key as IdentifyOperation)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n nonOpProperties[key] = userProperties[key];\n }\n });\n\n OrderedIdentifyOperations.forEach((operation) => {\n // Skip when key is an operation.\n if (!Object.keys(userProperties).includes(operation)) return;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const opProperties: IdentifyUserProperties = userProperties[operation];\n\n switch (operation) {\n case IdentifyOperation.CLEAR_ALL:\n // Due to operation order, the following line will never execute.\n /* istanbul ignore next */\n Object.keys(updatedProperties).forEach((prop) => {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.UNSET:\n Object.keys(opProperties).forEach((prop) => {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.SET:\n Object.assign(updatedProperties, opProperties);\n break;\n }\n });\n\n // Merge non-operation properties.\n // Custom properties should not be affected by operations.\n // https://github.com/amplitude/nova/blob/343f678ded83c032e83b189796b3c2be161b48f5/src/main/java/com/amplitude/userproperty/model/ModifyUserPropertiesIdent.java#L79-L83\n Object.assign(updatedProperties, nonOpProperties);\n\n return updatedProperties;\n }\n\n async process(event: Event): Promise<Result> {\n try {\n // skip event processing if opt out\n if (this.config.optOut) {\n return buildResult(event, 0, OPT_OUT_MESSAGE);\n }\n\n if (event.event_type === SpecialEventType.IDENTIFY) {\n const userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n this.timeline.onIdentityChanged({ userProperties: userProperties });\n }\n\n const result = await this.timeline.push(event);\n\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n\n return result;\n } catch (e) {\n const message = String(e);\n this.config.loggerProvider.error(message);\n const result = buildResult(event, 0, message);\n\n return result;\n }\n }\n\n setOptOut(optOut: boolean) {\n if (!this.isReady) {\n this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this._setOptOut(optOut);\n }\n\n _setOptOut(optOut: boolean) {\n if (this.config.optOut !== optOut) {\n this.timeline.onOptOutChanged(optOut);\n this.config.optOut = Boolean(optOut);\n }\n }\n\n flush() {\n return returnWrapper(this.timeline.flush());\n }\n\n plugin(name: string): Plugin | undefined {\n const plugin = this.timeline.plugins.find((plugin) => plugin.name === name);\n if (plugin === undefined) {\n this.config.loggerProvider.debug(`Cannot find plugin with name ${name}`);\n return undefined;\n }\n\n return plugin;\n }\n\n plugins<T extends Plugin>(pluginClass: { new (...args: any[]): T }): T[] {\n return this.timeline.plugins.filter((plugin) => plugin instanceof pluginClass) as T[];\n }\n}\n","import { isValidObject } from './utils/valid-properties';\n\nexport interface IRevenue {\n getEventProperties(): RevenueEventProperties;\n setProductId(productId: string): IRevenue;\n setQuantity(quantity: number): IRevenue;\n setPrice(price: number): IRevenue;\n setRevenueType(revenueType: string): IRevenue;\n setCurrency(currency: string): IRevenue;\n setEventProperties(properties: { [key: string]: any }): IRevenue;\n setRevenue(revenue: number): IRevenue;\n setReceipt(receipt: string): IRevenue;\n setReceiptSig(receiptSig: string): IRevenue;\n}\n\nexport class Revenue implements IRevenue {\n private productId: string;\n private quantity: number;\n private price: number;\n private revenueType?: string;\n private currency?: string;\n private properties?: { [key: string]: any };\n private revenue?: number;\n private receipt?: string;\n private receiptSig?: string;\n\n constructor() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n\n setProductId(productId: string) {\n this.productId = productId;\n return this;\n }\n\n setQuantity(quantity: number) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n }\n\n setPrice(price: number) {\n this.price = price;\n return this;\n }\n\n setRevenueType(revenueType: string) {\n this.revenueType = revenueType;\n return this;\n }\n\n setCurrency(currency: string) {\n this.currency = currency;\n return this;\n }\n\n setRevenue(revenue: number) {\n this.revenue = revenue;\n return this;\n }\n\n setReceipt(receipt: string) {\n this.receipt = receipt;\n return this;\n }\n\n setReceiptSig(receiptSig: string) {\n this.receiptSig = receiptSig;\n return this;\n }\n\n setEventProperties(properties: { [key: string]: ValidPropertyType }) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n }\n\n getEventProperties(): RevenueEventProperties {\n const eventProperties: RevenueEventProperties = this.properties ? { ...this.properties } : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n eventProperties[RevenueProperty.RECEIPT] = this.receipt;\n eventProperties[RevenueProperty.RECEIPT_SIG] = this.receiptSig;\n return eventProperties;\n }\n}\n\nexport interface RevenueEventProperties {\n [RevenueProperty.REVENUE_PRODUCT_ID]?: string;\n [RevenueProperty.REVENUE_QUANTITY]?: number;\n [RevenueProperty.REVENUE_PRICE]?: number;\n [RevenueProperty.REVENUE_TYPE]?: string;\n [RevenueProperty.REVENUE_CURRENCY]?: string;\n [RevenueProperty.REVENUE]?: number;\n [RevenueProperty.RECEIPT]?: string;\n [RevenueProperty.RECEIPT_SIG]?: string;\n}\n\nexport enum RevenueProperty {\n REVENUE_PRODUCT_ID = '$productId',\n REVENUE_QUANTITY = '$quantity',\n REVENUE_PRICE = '$price',\n REVENUE_TYPE = '$revenueType',\n REVENUE_CURRENCY = '$currency',\n REVENUE = '$revenue',\n RECEIPT = '$receipt',\n RECEIPT_SIG = '$receiptSig',\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array<string | number>\n | { [key: string]: ValidPropertyType }\n | Array<{ [key: string]: ValidPropertyType }>;\n","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\n\nexport const chunk = <T>(arr: T[], size: number) => {\n const chunkSize = Math.max(size, 1);\n return arr.reduce<T[][]>((chunks, element, index) => {\n const chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n","export enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Verbose = 3,\n Debug = 4,\n}\n","import { LogLevel } from './types/loglevel';\n\nconst PREFIX = 'Amplitude Logger ';\n\nexport interface ILogger {\n disable(): void;\n enable(logLevel: LogLevel): void;\n log(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n debug(...args: any[]): void;\n}\n\nexport interface LogConfig {\n logger: ILogger;\n logLevel: LogLevel;\n}\n\ntype TimeKey = 'start' | 'end';\n\nexport interface DebugContext {\n type: string;\n name: string;\n args: string[] | string;\n stacktrace?: string[] | string;\n time?: { [key in TimeKey]?: string };\n states?: { [key: string]: any };\n}\n\nexport class Logger implements ILogger {\n logLevel: LogLevel;\n\n constructor() {\n this.logLevel = LogLevel.None;\n }\n\n disable(): void {\n this.logLevel = LogLevel.None;\n }\n\n enable(logLevel: LogLevel = LogLevel.Warn): void {\n this.logLevel = logLevel;\n }\n\n log(...args: any[]): void {\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n }\n\n warn(...args: any[]): void {\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n }\n\n error(...args: any[]): void {\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n }\n\n debug(...args: any[]): void {\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(`${PREFIX}[Debug]: ${args.join(' ')}`);\n }\n}\n","import { OfflineDisabled } from './types/offline';\nimport { ServerZoneType } from './types/server-zone';\nimport { Transport } from './types/transport';\nimport { Event } from './types/event/event';\nimport { Plan } from './types/event/plan';\nimport { IngestionMetadata } from './types/event/ingestion-metadata';\nimport { Storage } from './types/storage';\nimport {\n AMPLITUDE_SERVER_URL,\n AMPLITUDE_BATCH_SERVER_URL,\n EU_AMPLITUDE_SERVER_URL,\n EU_AMPLITUDE_BATCH_SERVER_URL,\n DEFAULT_INSTANCE_NAME,\n} from './types/constants';\n\nimport { Logger, ILogger } from './logger';\nimport { LogLevel } from './types/loglevel';\nimport { ConfigOptions, IRequestMetadata, IHistogramOptions, HistogramKey, IConfig } from './types/config/core-config';\n\nexport const getDefaultConfig = () => ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: DEFAULT_INSTANCE_NAME,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n offline: false,\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US' as ServerZoneType,\n useBatch: false,\n});\nexport class Config implements IConfig {\n apiKey: string;\n flushIntervalMillis: number;\n flushMaxRetries: number;\n flushQueueSize: number;\n instanceName?: string;\n loggerProvider: ILogger;\n logLevel: LogLevel;\n minIdLength?: number;\n offline?: boolean | typeof OfflineDisabled;\n plan?: Plan;\n ingestionMetadata?: IngestionMetadata;\n serverUrl: string | undefined;\n serverZone?: ServerZoneType;\n transportProvider: Transport;\n storageProvider?: Storage<Event[]>;\n useBatch: boolean;\n requestMetadata?: RequestMetadata;\n\n protected _optOut = false;\n get optOut() {\n return this._optOut;\n }\n set optOut(optOut: boolean) {\n this._optOut = optOut;\n }\n\n constructor(options: ConfigOptions) {\n const defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = options.flushIntervalMillis ?? defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = options.logLevel ?? defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n this.optOut = options.optOut ?? defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = options.useBatch ?? defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n\n const serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n}\n\nexport const getServerUrl = (serverZone: ServerZoneType, useBatch: boolean) => {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\n\nexport const createServerConfig = (\n serverUrl = '',\n serverZone: ServerZoneType = getDefaultConfig().serverZone,\n useBatch: boolean = getDefaultConfig().useBatch,\n) => {\n if (serverUrl) {\n return { serverUrl, serverZone: undefined };\n }\n const _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n\nexport class RequestMetadata implements IRequestMetadata {\n sdk: {\n metrics: {\n histogram: HistogramOptions;\n };\n };\n\n constructor() {\n this.sdk = {\n metrics: {\n histogram: {},\n },\n };\n }\n\n recordHistogram<T extends HistogramKey>(key: T, value: HistogramOptions[T]) {\n this.sdk.metrics.histogram[key] = value;\n }\n}\n\nclass HistogramOptions implements IHistogramOptions {\n remote_config_fetch_time_IDB?: number;\n remote_config_fetch_time_API_success?: number;\n remote_config_fetch_time_API_fail?: number;\n}\n","/**\n * Checks if an HTTP status code indicates success (2xx range)\n * @param code - The HTTP status code to check\n * @returns true if the status code is in the 2xx range, false otherwise\n */\nexport function isSuccessStatusCode(code: number): boolean {\n return code >= 200 && code < 300;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { AmplitudeCore } from '../core-client';\nimport { LogConfig, DebugContext } from '../logger';\nimport { LogLevel } from '../types/loglevel';\n\nexport const getStacktrace = (ignoreDepth = 0): string[] => {\n const trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map((text) => text.trim());\n};\n\n// This hook makes sure we always get the latest logger and logLevel.\nexport const getClientLogConfig = (client: AmplitudeCore) => (): LogConfig => {\n const { loggerProvider: logger, logLevel } = { ...client.config };\n return {\n logger,\n logLevel,\n };\n};\n\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport const getValueByStringPath = (obj: any, path: string): any => {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n for (const attr of path.split('.')) {\n if (attr in obj) {\n obj = obj[attr];\n } else {\n return;\n }\n }\n return obj;\n};\n\nexport const getClientStates = (client: AmplitudeCore, paths: Array<string>) => (): { [key: string]: any } => {\n const res: { [key: string]: any } = {};\n for (const path of paths) {\n res[path] = getValueByStringPath(client, path);\n }\n return res;\n};\n\nexport const debugWrapper =\n <T extends Array<any>, R>(\n fn: (...args: T) => R,\n fnName: string,\n getLogConfig: () => LogConfig,\n getStates?: () => { [key: string]: any },\n fnContext: any = null,\n ) =>\n (...args: T): R => {\n const { logger, logLevel } = getLogConfig();\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n const debugContext: DebugContext = {\n type: 'invoke public method',\n name: fnName,\n args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n const result = fn.apply(fnContext, args);\n if (result && (result as any).promise) {\n // if result is a promise, add the callback\n (result as any).promise.then(() => {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n } else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n","import { DestinationPlugin } from '../types/plugin';\nimport { Event } from '../types/event/event';\nimport { Result } from '../types/result';\nimport { Status } from '../types/status';\nimport {\n Response,\n InvalidResponse,\n PayloadTooLargeResponse,\n RateLimitResponse,\n SuccessResponse,\n} from '../types/response';\nimport {\n INVALID_API_KEY,\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n SUCCESS_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n} from '../types/messages';\nimport { STORAGE_PREFIX } from '../types/constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\nimport { IConfig } from '../types/config/core-config';\nimport { EventCallback } from '../types/event-callback';\nimport { IDiagnosticsClient } from '../diagnostics/diagnostics-client';\nimport { isSuccessStatusCode } from '../utils/status-code';\nimport { getStacktrace } from '../utils/debug';\n\nexport interface Context {\n event: Event;\n attempts: number;\n callback: EventCallback;\n timeout: number;\n}\n\nfunction getErrorMessage(error: unknown) {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nexport function getResponseBodyString(res: Response) {\n let responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\n\nexport class Destination implements DestinationPlugin {\n name = 'amplitude';\n type = 'destination' as const;\n\n retryTimeout = 1000;\n throttleTimeout = 30000;\n storageKey = '';\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: IConfig;\n // Indicator of whether events that are scheduled (but not flushed yet).\n // When flush:\n // 1. assign `scheduleId` to `flushId`\n // 2. set `scheduleId` to null\n scheduleId: ReturnType<typeof setTimeout> | null = null;\n // Timeout in milliseconds of current schedule\n scheduledTimeout = 0;\n // Indicator of whether current flush resolves.\n // When flush resolves, set `flushId` to null\n flushId: ReturnType<typeof setTimeout> | null = null;\n queue: Context[] = [];\n diagnosticsClient: IDiagnosticsClient | undefined;\n\n constructor(context?: { diagnosticsClient: IDiagnosticsClient }) {\n this.diagnosticsClient = context?.diagnosticsClient;\n }\n\n async setup(config: IConfig): Promise<undefined> {\n this.config = config;\n\n this.storageKey = `${STORAGE_PREFIX}_${this.config.apiKey.substring(0, 10)}`;\n const unsent = await this.config.storageProvider?.get(this.storageKey);\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map((event: Event) => this.execute(event))).catch();\n }\n\n return Promise.resolve(undefined);\n }\n\n execute(event: Event): Promise<Result> {\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n\n return new Promise((resolve) => {\n const context = {\n event,\n attempts: 0,\n callback: (result: Result) => resolve(result),\n timeout: 0,\n };\n this.queue.push(context);\n this.schedule(this.config.flushIntervalMillis);\n this.saveEvents();\n });\n }\n\n removeEventsExceedFlushMaxRetries(list: Context[]) {\n return list.filter((context) => {\n context.attempts += 1;\n if (context.attempts < this.config.flushMaxRetries) {\n return true;\n }\n void this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n }\n\n scheduleEvents(list: Context[]) {\n list.forEach((context) => {\n this.schedule(context.timeout === 0 ? this.config.flushIntervalMillis : context.timeout);\n });\n }\n\n // Schedule a flush in timeout when\n // 1. No schedule\n // 2. Timeout greater than existing timeout.\n // This makes sure that when throttled, no flush when throttle timeout expires.\n schedule(timeout: number) {\n if (this.config.offline) {\n return;\n }\n\n if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n if (this.scheduleId) {\n clearTimeout(this.scheduleId);\n }\n this.scheduledTimeout = timeout;\n this.scheduleId = setTimeout(() => {\n this.queue = this.queue.map((context) => {\n context.timeout = 0;\n return context;\n });\n void this.flush(true);\n }, timeout);\n return;\n }\n }\n\n // Mark current schedule is flushed.\n resetSchedule() {\n this.scheduleId = null;\n this.scheduledTimeout = 0;\n }\n\n // Flush all events regardless of their timeout\n async flush(useRetry = false) {\n // Skip flush if offline\n if (this.config.offline) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return;\n }\n\n if (this.flushId) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n return;\n }\n\n this.flushId = this.scheduleId;\n this.resetSchedule();\n\n const list: Context[] = [];\n const later: Context[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n\n const batches = chunk(list, this.config.flushQueueSize);\n\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n await batches.reduce(async (promise, batch) => {\n await promise;\n return await this.send(batch, useRetry);\n }, Promise.resolve());\n\n // Mark current flush is done\n this.flushId = null;\n\n this.scheduleEvents(this.queue);\n }\n\n async send(list: Context[], useRetry = true) {\n if (!this.config.apiKey) {\n return this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE);\n }\n\n const payload = {\n api_key: this.config.apiKey,\n events: list.map((context) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { extra, ...eventWithoutExtra } = context.event;\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n request_metadata: this.config.requestMetadata,\n };\n this.config.requestMetadata = new RequestMetadata();\n\n try {\n const { serverUrl } = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch);\n const res = await this.config.transportProvider.send(serverUrl, payload);\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return;\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, `${res.status}: ${getResponseBodyString(res)}`);\n } else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return;\n }\n this.handleResponse(res, list);\n } catch (e) {\n const errorMessage = getErrorMessage(e);\n this.config.loggerProvider.error(errorMessage);\n\n this.diagnosticsClient?.recordEvent('analytics.events.unsuccessful.from.catch.error', {\n events: list.map((context) => context.event.event_type),\n message: errorMessage,\n stack_trace: getStacktrace(),\n });\n\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n }\n }\n\n handleResponse(res: Response, list: Context[]) {\n if (!isSuccessStatusCode(res.statusCode)) {\n this.diagnosticsClient?.recordEvent('analytics.events.unsuccessful', {\n events: list.map((context) => context.event.event_type),\n code: res.statusCode,\n status: res.status,\n body: getResponseBodyString(res),\n stack_trace: getStacktrace(),\n });\n }\n\n const { status } = res;\n\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(`{code: 0, error: \"Status '${status}' provided for ${list.length} events\"}`);\n this.handleOtherResponse(list);\n break;\n }\n }\n }\n\n handleSuccessResponse(res: SuccessResponse, list: Context[]) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n }\n\n handleInvalidResponse(res: InvalidResponse, list: Context[]) {\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n const dropIndex = [\n ...Object.values(res.body.eventsWithInvalidFields),\n ...Object.values(res.body.eventsWithMissingFields),\n ...Object.values(res.body.eventsWithInvalidIdLengths),\n ...res.body.silencedEvents,\n ].flat();\n const dropIndexSet = new Set(dropIndex);\n\n const retry = list.filter((context, index) => {\n if (dropIndexSet.has(index)) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n }\n\n handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n\n this.config.flushQueueSize /= 2;\n\n const tryable = this.removeEventsExceedFlushMaxRetries(list);\n this.scheduleEvents(tryable);\n }\n\n handleRateLimitResponse(res: RateLimitResponse, list: Context[]) {\n const dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n const dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n const throttledIndex = res.body.throttledEvents;\n const dropUserIdsSet = new Set(dropUserIds);\n const dropDeviceIdsSet = new Set(dropDeviceIds);\n const throttledIndexSet = new Set(throttledIndex);\n\n const retry = list.filter((context, index) => {\n if (\n (context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))\n ) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = this.throttleTimeout;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n }\n\n handleOtherResponse(list: Context[]) {\n const later = list.map((context) => {\n context.timeout = context.attempts * this.retryTimeout;\n return context;\n });\n\n const tryable = this.removeEventsExceedFlushMaxRetries(later);\n this.scheduleEvents(tryable);\n }\n\n fulfillRequest(list: Context[], code: number, message: string) {\n // Record diagnostics for dropped events (non-success status codes)\n if (!isSuccessStatusCode(code)) {\n this.diagnosticsClient?.increment('analytics.events.dropped', list.length);\n this.diagnosticsClient?.recordEvent('analytics.events.dropped', {\n events: list.map((context) => context.event.event_type),\n code: code,\n message: message,\n stack_trace: getStacktrace(),\n });\n } else {\n this.diagnosticsClient?.increment('analytics.events.sent', list.length);\n }\n this.removeEvents(list);\n list.forEach((context) => context.callback(buildResult(context.event, code, message)));\n }\n\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n saveEvents() {\n if (!this.config.storageProvider) {\n return;\n }\n\n const updatedEvents = this.queue.map((context) => context.event);\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n }\n\n /**\n * This is called on response comes back for a request\n */\n removeEvents(eventsToRemove: Context[]) {\n this.queue = this.queue.filter(\n (queuedContext) => !eventsToRemove.some((context) => context.event.insert_id === queuedContext.event.insert_id),\n );\n\n this.saveEvents();\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Transport } from '../types/transport';\nimport { Status } from '../types/status';\nimport { Payload } from '../types/payload';\nimport { Response } from '../types/response';\nimport { isSuccessStatusCode } from '../utils/status-code';\n\nexport class BaseTransport implements Transport {\n send(_serverUrl: string, _payload: Payload): Promise<Response | null> {\n return Promise.resolve(null);\n }\n\n buildResponse(responseJSON: Record<string, any>): Response | null {\n if (typeof responseJSON !== 'object') {\n return null;\n }\n\n const statusCode = responseJSON.code || 0;\n const status = this.buildStatus(statusCode);\n\n switch (status) {\n case Status.Success:\n return {\n status,\n statusCode,\n body: {\n eventsIngested: responseJSON.events_ingested ?? 0,\n payloadSizeBytes: responseJSON.payload_size_bytes ?? 0,\n serverUploadTime: responseJSON.server_upload_time ?? 0,\n },\n };\n\n case Status.Invalid:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n missingField: responseJSON.missing_field ?? '',\n eventsWithInvalidFields: responseJSON.events_with_invalid_fields ?? {},\n eventsWithMissingFields: responseJSON.events_with_missing_fields ?? {},\n eventsWithInvalidIdLengths: responseJSON.events_with_invalid_id_lengths ?? {},\n epsThreshold: responseJSON.eps_threshold ?? 0,\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n silencedDevices: responseJSON.silenced_devices ?? [],\n silencedEvents: responseJSON.silenced_events ?? [],\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n },\n };\n case Status.RateLimit:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n epsThreshold: responseJSON.eps_threshold ?? 0,\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledUsers: responseJSON.throttled_users ?? {},\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n exceededDailyQuotaUsers: responseJSON.exceeded_daily_quota_users ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status,\n statusCode,\n };\n }\n }\n\n buildStatus(code: number): Status {\n if (isSuccessStatusCode(code)) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n\n if (code === 408) {\n return Status.Timeout;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n","/**\n * @deprecated use ServerZoneType instead\n */\nexport enum ServerZone {\n US = 'US',\n EU = 'EU',\n /**\n * Add for session-replay-browser migration from analytics-type v1.x.\n */\n STAGING = 'STAGING',\n}\n\nexport type ServerZoneType = 'US' | 'EU';\n","export const OfflineDisabled = null;\n","export { AmplitudeCore } from './core-client';\nexport { CoreClient, PluginHost } from './types/client/core-client';\nexport { AnalyticsClient } from './types/client/analytics-client';\nexport { AmplitudeContext } from './types/amplitude-context';\nexport { Identify, IIdentify } from './identify';\nexport { Revenue, IRevenue, RevenueProperty } from './revenue';\nexport { Destination } from './plugins/destination';\nexport { IdentityEventSender } from './plugins/identity';\nexport { Config, RequestMetadata } from './config';\nexport { IConfig } from './types/config/core-config';\nexport { Logger, ILogger, LogConfig } from './logger';\nexport { getGlobalScope } from './global-scope';\nexport { getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId } from './analytics-connector';\nexport { isNewSession } from './session';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport { getLanguage } from './language';\nexport { getQueryParams } from './query-params';\n\nexport { returnWrapper, AmplitudeReturn } from './utils/return-wrapper';\nexport { debugWrapper, getClientLogConfig, getClientStates } from './utils/debug';\nexport { UUID } from './utils/uuid';\nexport { createIdentifyEvent } from './utils/event-builder';\nexport { isUrlMatchAllowlist, getDecodeURI } from './utils/url-utils';\nexport { generateHashCode, isTimestampInSample } from './utils/sampling';\n\nexport { MemoryStorage } from './storage/memory';\nexport { CookieStorage, isDomainEqual, decodeCookieValue } from './storage/cookie';\nexport { getStorageKey } from './storage/helpers';\n\nexport { BrowserStorage } from './storage/browser-storage';\n\nexport { DiagnosticsClient, IDiagnosticsClient } from './diagnostics/diagnostics-client';\nexport { registerSdkLoaderMetadata } from './diagnostics/uncaught-sdk-errors';\n\nexport { BaseTransport } from './transports/base';\nexport { FetchTransport } from './transports/fetch';\n\nexport { RemoteConfigClient, IRemoteConfigClient, RemoteConfig, Source } from './remote-config/remote-config';\n\nexport { LogLevel } from './types/loglevel';\nexport { AMPLITUDE_PREFIX, STORAGE_PREFIX } from './types/constants';\nexport { Storage, IdentityStorageType, CookieStorageConfig } from './types/storage';\nexport {\n Event,\n IdentifyOperation,\n SpecialEventType,\n IdentifyEvent,\n GroupIdentifyEvent,\n IdentifyUserProperties,\n} from './types/event/event';\nexport { EventOptions, BaseEvent } from './types/event/base-event';\nexport { IngestionMetadata } from './types/event/ingestion-metadata';\nexport { ServerZoneType, ServerZone } from './types/server-zone';\nexport { OfflineDisabled } from './types/offline';\nexport { Plan } from './types/event/plan';\nexport { TransportType, Transport, TransportOptions, TransportTypeOrOptions } from './types/transport';\nexport { Payload } from './types/payload';\nexport { Response } from './types/response';\nexport { UserSession } from './types/user-session';\nexport {\n Plugin,\n BeforePlugin,\n DestinationPlugin,\n EnrichmentPlugin,\n PluginType,\n AnalyticsIdentity,\n} from './types/plugin';\nexport { Result } from './types/result';\nexport {\n ElementInteractionsOptions,\n Messenger,\n ActionType,\n DEFAULT_CSS_SELECTOR_ALLOWLIST,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n DEFAULT_ACTION_CLICK_ALLOWLIST,\n LabeledEvent,\n Trigger,\n DataSource,\n} from './types/element-interactions';\n\nexport {\n FrustrationInteractionsOptions,\n DEFAULT_DEAD_CLICK_ALLOWLIST,\n DEFAULT_RAGE_CLICK_ALLOWLIST,\n DEFAULT_RAGE_CLICK_THRESHOLD,\n DEFAULT_RAGE_CLICK_WINDOW_MS,\n DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD,\n DEFAULT_DEAD_CLICK_WINDOW_MS,\n} from './types/frustration-interactions';\nexport { PageTrackingOptions, PageTrackingTrackOn, PageTrackingHistoryChanges } from './types/page-view-tracking';\nexport { Status } from './types/status';\n\nexport { NetworkEventCallback, networkObserver } from './network-observer';\nexport { NetworkRequestEvent, IRequestWrapper, JsonObject, JsonValue, JsonArray } from './network-request-event';\nexport { NetworkTrackingOptions, NetworkCaptureRule } from './types/network-tracking';\nexport { SAFE_HEADERS, FORBIDDEN_HEADERS } from './types/constants';\n\nexport { PageUrlEnrichmentOptions } from './types/page-url-enrichment';\n\n// Campaign\nexport { Campaign, UTMParameters, ReferrerParameters, ClickIdParameters, ICampaignParser } from './types/campaign';\nexport { EMPTY_VALUE, BASE_CAMPAIGN, MKTG } from './types/constants';\nexport { CampaignParser } from './campaign/campaign-parser';\nexport {\n getPageTitle,\n TEXT_MASK_ATTRIBUTE,\n MASKED_TEXT_VALUE,\n replaceSensitiveString,\n CC_REGEX,\n SSN_REGEX,\n EMAIL_REGEX,\n} from './plugins/helpers';\n\n// Browser\nexport {\n BrowserConfig,\n BrowserOptions,\n DefaultTrackingOptions,\n TrackingOptions,\n AutocaptureOptions,\n CookieOptions,\n AttributionOptions,\n RemoteConfigOptions,\n} from './types/config/browser-config';\nexport { BrowserClient } from './types/client/browser-client';\n\n// Node\nexport { NodeClient } from './types/client/node-client';\nexport { NodeConfig, NodeOptions } from './types/config/node-config';\n\n// React Native\nexport {\n ReactNativeConfig,\n ReactNativeTrackingOptions,\n ReactNativeOptions,\n ReactNativeAttributionOptions,\n} from './types/config/react-native-config';\nexport { ReactNativeClient } from './types/client/react-native-client';\n\nexport { Observable, asyncMap, merge, multicast, Unsubscribable } from './utils/observable';\n\nexport { InstanceProxy } from './types/proxy';\n","export const VERSION = '1.5.32';\n","import { UUID, BeforePlugin, NodeConfig, Event } from '@amplitude/analytics-core';\nimport { VERSION } from '../version';\n\nexport class Context implements BeforePlugin {\n name = 'context';\n type = 'before' as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: NodeConfig;\n eventId = 0;\n library = `amplitude-node-ts/${VERSION}`;\n\n setup(config: NodeConfig): Promise<undefined> {\n this.config = config;\n return Promise.resolve(undefined);\n }\n\n execute(context: Event): Promise<Event> {\n return new Promise((resolve) => {\n const time = new Date().getTime();\n\n const contextEvent: Event = {\n time,\n insert_id: UUID(),\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return resolve(contextEvent);\n });\n }\n}\n","import { BaseTransport, Payload, Response, Transport } from '@amplitude/analytics-core';\nimport * as http from 'http';\nimport * as https from 'https';\n\nexport class Http extends BaseTransport implements Transport {\n send(serverUrl: string, payload: Payload): Promise<Response | null> {\n let protocol: typeof http | typeof https;\n if (serverUrl.startsWith('http://')) {\n protocol = http;\n } else if (serverUrl.startsWith('https://')) {\n protocol = https;\n } else {\n throw new Error('Invalid server url');\n }\n\n const url = new URL(serverUrl);\n const requestPayload = JSON.stringify(payload);\n const options = {\n headers: {\n 'Content-Type': 'application/json',\n 'Content-Length': Buffer.byteLength(requestPayload),\n },\n hostname: url.hostname,\n method: 'POST',\n path: url.pathname,\n port: url.port,\n protocol: url.protocol,\n };\n return new Promise((resolve) => {\n const req = protocol.request(options, (res) => {\n res.setEncoding('utf8');\n let responsePayload = '';\n res.on('data', (chunk: string) => {\n responsePayload += chunk;\n });\n\n res.on('end', () => {\n if (res.complete && responsePayload.length > 0) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record<string, any> = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch {\n resolve(this.buildResponse({ code: res.statusCode }));\n }\n }\n });\n });\n req.on('error', () => resolve(null));\n req.end(requestPayload);\n });\n }\n}\n","import { Config, NodeOptions, NodeConfig as INodeConfig } from '@amplitude/analytics-core';\nimport { Http } from './transports/http';\n\nexport class NodeConfig extends Config implements INodeConfig {\n constructor(apiKey: string, options?: NodeOptions) {\n super({\n transportProvider: new Http(),\n ...options,\n apiKey,\n });\n }\n}\n\nexport const useNodeConfig = (apiKey: string, overrides?: NodeOptions): INodeConfig => {\n return new NodeConfig(apiKey, overrides);\n};\n","import {\n AmplitudeCore,\n Destination,\n returnWrapper,\n debugWrapper,\n getClientLogConfig,\n getClientStates,\n NodeClient,\n NodeConfig,\n NodeOptions,\n} from '@amplitude/analytics-core';\nimport { Context } from './plugins/context';\nimport { useNodeConfig } from './config';\n\nexport class AmplitudeNode extends AmplitudeCore {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: NodeConfig;\n\n init(apiKey = '', options?: NodeOptions) {\n return returnWrapper(this._init({ ...options, apiKey }));\n }\n protected async _init(options: NodeOptions & { apiKey: string }) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n const nodeOptions = useNodeConfig(options.apiKey, {\n ...options,\n });\n\n await super._init(nodeOptions);\n\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n\n this.initializing = false;\n\n await this.runQueuedFunctions('dispatchQ');\n }\n}\n\nexport const createInstance = (): NodeClient => {\n const client = new AmplitudeNode();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nexport {\n AmplitudeReturn,\n BaseEvent,\n EventOptions,\n IConfig,\n Event,\n IdentifyEvent,\n GroupIdentifyEvent,\n IdentifyOperation,\n SpecialEventType,\n IIdentify,\n IRevenue,\n RevenueProperty,\n ILogger,\n LogLevel,\n Plugin,\n BeforePlugin,\n EnrichmentPlugin,\n DestinationPlugin,\n Result,\n ServerZoneType,\n ServerZone,\n IdentityStorageType,\n Storage,\n TransportType,\n OfflineDisabled,\n} from '@amplitude/analytics-core';\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport client from './node-client';\nexport { createInstance } from './node-client';\nexport const { add, groupIdentify, identify, init, logEvent, remove, revenue, setGroup, setOptOut, track, flush } =\n client;\nexport { Revenue, Identify } from '@amplitude/analytics-core';\n\n// Export types to maintain backward compatibility with `analytics-types`.\n// In the next major version, only export customer-facing types to reduce the public API surface.\nexport * as Types from './types';\n","/**\n * Amplitude Subscriber for autotel\n *\n * Send events to Amplitude for product events.\n *\n * @example\n * ```typescript\n * import { Events } from 'autotel/events';\n * import { AmplitudeSubscriber } from 'autotel-subscribers/amplitude';\n *\n * const events = new Events('checkout', {\n * subscribers: [\n * new AmplitudeSubscriber({\n * apiKey: process.env.AMPLITUDE_API_KEY!\n * })\n * ]\n * });\n *\n * events.trackEvent('order.completed', { userId: '123', amount: 99.99 });\n * ```\n */\n\nimport type {\n EventSubscriber,\n EventAttributes,\n FunnelStatus,\n OutcomeStatus,\n} from 'autotel/event-subscriber';\n\nexport interface AmplitudeConfig {\n /** Amplitude API key */\n apiKey: string;\n /** Enable/disable the subscriber */\n enabled?: boolean;\n}\n\nexport class AmplitudeSubscriber implements EventSubscriber {\n readonly name = 'AmplitudeSubscriber';\n readonly version = '1.0.0';\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private amplitudeModule: any = null;\n private enabled: boolean;\n private config: AmplitudeConfig;\n private initPromise: Promise<void> | null = null;\n\n constructor(config: AmplitudeConfig) {\n this.enabled = config.enabled ?? true;\n this.config = config;\n\n if (this.enabled) {\n // Start initialization immediately but don't block constructor\n this.initPromise = this.initialize();\n }\n }\n\n private async initialize(): Promise<void> {\n try {\n // Dynamic import to avoid adding @amplitude/analytics-node as a hard dependency\n // The SDK exports init(), track(), flush() as separate functions\n const amplitude = await import('@amplitude/analytics-node');\n amplitude.init(this.config.apiKey);\n this.amplitudeModule = amplitude;\n } catch (error) {\n console.error(\n 'Amplitude subscriber failed to initialize. Install @amplitude/analytics-node: pnpm add @amplitude/analytics-node',\n error,\n );\n this.enabled = false;\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n }\n\n async trackEvent(name: string, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: name,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: attributes,\n });\n }\n\n async trackFunnelStep(\n funnelName: string,\n step: FunnelStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: `${funnelName}.${step}`,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: {\n funnel: funnelName,\n step,\n ...attributes,\n },\n });\n }\n\n async trackOutcome(\n operationName: string,\n outcome: OutcomeStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: `${operationName}.${outcome}`,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: {\n operation: operationName,\n outcome,\n ...attributes,\n },\n });\n }\n\n async trackValue(name: string, value: number, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n this.amplitudeModule?.track({\n event_type: name,\n user_id: attributes?.userId || attributes?.user_id || 'anonymous',\n event_properties: {\n value,\n ...attributes,\n },\n });\n }\n\n /** Flush pending events before shutdown */\n async shutdown(): Promise<void> {\n await this.ensureInitialized();\n if (this.amplitudeModule) {\n await this.amplitudeModule.flush();\n }\n }\n}\n\n"]}
|