{"version":3,"file":"index.node.esm.mjs","mappings":";;;;;;;AAAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA,QAAQ,eAAe,EAAE,mBAAO,CAAC,GAAQ;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,6BAA6B,KAAK;;AAElC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;;;;;;;SCnEnB;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACO,MAAM,kBAAO;;;ACDoB;AACxC;AACA;AACA;AACO;AACP;AACA,WAAW;AACX;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA,oDAAoD,EAAE;AACtD,oEAAoE,EAAE;AACtE,kFAAkF,EAAE,WAAW,EAAE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,EAAE,WAAW,EAAE;AAC3F,2DAA2D,EAAE;AAC7D,gCAAgC,EAAE;AAClC;AACA;AACA,gEAAgE,EAAE;AAClE,wDAAwD,EAAE;AAC1D;AACA,wCAAwC,EAAE,6BAA6B,EAAE;AACzE,0CAA0C,EAAE,qBAAqB,EAAE;AACnE;AACA;AACP;AACA;AACA;AACO,oBAAoB,uDAAO;AAC3B;AACA;AACA;AACA;AACP;AACA;AACA;AACO,kDAAkD,EAAE,GAAG,GAAG,MAAM,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACP,gBAAgB,WAAW;AACpB;AACA;AACA,qCAAqC,GAAG;AACxC,2DAA2D,GAAG;AAC9D,iEAAiE,EAAE;AACnE,yCAAyC,GAAG;AAC5C,8CAA8C,GAAG;AACjD,yDAAyD,EAAE;AAC3D,yCAAyC,EAAE;AAC3C,8DAA8D,EAAE;AAChE;AACA;AACA;AACA,qBAAqB,GAAG,WAAW,EAAE;AACrC,sCAAsC,GAAG,WAAW,EAAE,2BAA2B,EAAE;AACnF;AACA,2BAA2B,GAAG;AAC9B,kDAAkD,GAAG,4BAA4B,GAAG;AACpF,2CAA2C,EAAE,UAAU,GAAG,qCAAqC,EAAE;AACjG,qGAAqG,EAAE;AACvG,wGAAwG,EAAE;AAC1G,wFAAwF,EAAE;AAC1F,kFAAkF,EAAE;AACpF,0EAA0E,EAAE;AAC5E;AACA;AACA;AACA;AACA,uDAAuD,EAAE;AACzD,2EAA2E,EAAE;AAC7E,+DAA+D,EAAE;AACjE,6DAA6D,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,EAAE,4EAA4E,EAAE;AAChI,gHAAgH,EAAE;AAClH;AACP,cAAc,WAAW;AACzB;AACO;AACA;AACP;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO,uDAAuD,GAAG,gBAAgB,GAAG,kBAAkB,EAAE;AACjG;AACA;AACA;AACA,iEAAiE,EAAE;AACnE;AACA;AACA;AACA,sDAAsD,EAAE;AACxD,wCAAwC,GAAG;AAC3C,kCAAkC,GAAG,+BAA+B,EAAE,mBAAmB,GAAG,kBAAkB,EAAE;AAChH,iEAAiE,EAAE;AACnE,uDAAuD,EAAE;AACzD,mEAAmE,GAAG;AACtE,wEAAwE,EAAE;AAC1E,oCAAoC,EAAE,YAAY,EAAE;AAC3D,cAAc,WAAW;AAClB,sCAAsC,EAAE,oBAAoB,EAAE;AACrE,cAAc,WAAW;AAClB,gDAAgD,EAAE,sBAAsB,GAAG,iBAAiB;AACnG,cAAc,WAAW;AAClB,4CAA4C,EAAE,mCAAmC,EAAE,SAAS,EAAE,WAAW,EAAE;AAC3G,8CAA8C,EAAE,yCAAyC,EAAE,WAAW,EAAE;AACxG,iCAAiC,EAAE,sCAAsC,EAAE;AAC3E;AACA,mCAAmC,EAAE,8BAA8B,EAAE;AACrE;AACA,0CAA0C,EAAE,eAAe,GAAG,cAAc,GAAG,4BAA4B,GAAG,IAAI,GAAG;AACrH,6CAA6C,EAAE,eAAe,GAAG,cAAc,GAAG,uCAAuC,GAAG,IAAI,GAAG;AACnI,6CAA6C,EAAE,eAAe,GAAG,cAAc,GAAG,wBAAwB,GAAG;AAC7G,uCAAuC,EAAE;AACzC;AACA;AACA,kDAAkD,EAAE,sCAAsC,EAAE,kCAAkC,EAAE;AAChI,8CAA8C,EAAE,sCAAsC,EAAE;AACxF,sCAAsC,GAAG,KAAK,GAAG;AACjD;AACA;AACA,+CAA+C,EAAE,uBAAuB,EAAE,qFAAqF,EAAE;AACjK,iCAAiC,EAAE,gBAAgB,GAAG,eAAe,EAAE;AACvE,mDAAmD,EAAE,sCAAsC,EAAE;AAC7F,4DAA4D,EAAE,gFAAgF,EAAE;AAChJ;AACA,mDAAmD,EAAE,0BAA0B,EAAE;AACjF,0CAA0C,EAAE,gBAAgB,GAAG,4EAA4E,EAAE;AAC7I;AACA,mCAAmC,EAAE,0BAA0B,EAAE;AACjE,yCAAyC,EAAE,gBAAgB,GAAG,sGAAsG;AAC3K,cAAc,WAAW;AAClB,sCAAsC,EAAE,gBAAgB,GAAG,kGAAkG;AACpK,cAAc,mBAAmB;AAC1B;AACA,gFAAgF,GAAG,cAAc,EAAE;AACnG,4FAA4F,EAAE;AAC9F,qDAAqD,EAAE,UAAU,GAAG;AACpE,wDAAwD,EAAE;AACjE,cAAc,WAAW;AAClB,gFAAgF,EAAE;AAClF;AACA,oDAAoD,GAAG;AACvD;AACA,4CAA4C,EAAE,aAAa,GAAG;AAC9D,2CAA2C,EAAE,aAAa,GAAG,0BAA0B,EAAE;AACzF,iGAAiG,EAAE,eAAe,EAAE;AAC3H,cAAc,WAAW;AAClB;AACA,sCAAsC,EAAE,GAAG,GAAG,oBAAoB,EAAE;AACpE,0BAA0B,GAAG,oBAAoB,EAAE;AACnD,uCAAuC,EAAE,gDAAgD,EAAE;AAC3F,sCAAsC,EAAE,gDAAgD,EAAE;AAC1F,wCAAwC,EAAE;AAC1C,qEAAqE,EAAE;AACvE,mEAAmE,EAAE;AACrE,oFAAoF,EAAE;AACtF;AACA,qFAAqF,GAAG;AACxF;AACA;AACA,iCAAiC,GAAG,2BAA2B,EAAE;AACjE,2BAA2B,GAAG,iBAAiB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,EAAE;AACvD,wDAAwD,EAAE;AAC1D,uDAAuD,EAAE;AACzD,mDAAmD,EAAE;AACrD,gEAAgE,EAAE;AAClE,+EAA+E,EAAE;AACjF,2BAA2B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AClTiD;AACP;AAC3C;AACA;AACA;AACA;AACA;AACO,sBAAsB,6BAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU;AAChC;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,UAAU;AAC3C;AACA;;;AC5IA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;;ACrB5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;;ACZ9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;;;AC1C7B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;;;ACjCe;AAC2B;AACnF;AACA;AACA;AACA;AACO;AACP;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA,qDAAqD,EAAE,EAAE,GAAG;AAC5D;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACA;AACO;AACP,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA,aAAa,cAAc;AAC3B,kCAAkC,EAAE,sBAAsB,0BAA0B,CAAC;AACrF;AACA,aAAa,cAAc;AAC3B,sDAAsD,EAAE,sBAAsB,0BAA0B,CAAC;AACzG;AACA,aAAa,cAAc;AAC3B,kCAAkC,EAAE,4BAA4B,0BAA0B,CAAC;AAC3F;AACA,aAAa,cAAc;AAC3B,kCAAkC,EAAE,8BAA8B,0BAA0B,CAAC;AAC7F;AACA,aAAa,cAAc;AAC3B,6EAA6E,EAAE,8BAA8B,EAAE;AAC/G;AACA,aAAa,cAAc;AAC3B,2CAA2C,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,oEAAoE,EAAE;AACtE;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,2EAA2E,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,EAAE;AAC5E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,QAAQ,KAAsB,EAAE,EAmB3B;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,qBAAqB,GAAG;AACzC,SAAS,QAAQ,iBAAiB,GAAG;AACrC,SAAS,QAAQ,oBAAoB,GAAG;AACxC,SAAS,QAAQ,iBAAiB,GAAG;AACrC,SAAS,QAAQ,oBAAoB;AACrC,SAAS,QAAQ,mBAAmB;AACpC,SAAS,QAAQ,iBAAiB;AAClC,SAAS,QAAQ,kBAAkB;AACnC,SAAS,QAAQ;AACjB,SAAS,QAAQ,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa;AAC7F,sBAAsB,QAAQ;AAC9B,cAAc,UAAU,GAAG,UAAU,KAAK,YAAY,CAAC,KAAK,UAAU,KAAK,IAAI,IAAI,QAAQ,EAAE,WAAW;AACxG;;;ACjPA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;;ACfiI;AAC7H;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,KAAK,aAAa,sBAAsB,aAAa;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,KAAK,6BAA6B,GAAG,4BAA4B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,KAAK,6BAA6B,GAAG,4BAA4B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtCqL;AAC1G;AACX;AACT;AACT;AACvC;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wYAAwY;AACxZ;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,iCAAiC;AACnG,oDAAoD;AACpD,0CAA0C,qBAAqB,4BAA4B;AAC3F;AACA,gDAAgD,YAAY;AAC5D;AACA;AACA,oCAAoC,QAAQ;AAC5C,kCAAkC,gBAAgB;AAClD;AACA;AACA,6CAA6C,YAAY;AACzD;AACA,4DAA4D,0BAA0B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAoD,EAAE,EAEzD;AACT;AACA;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EAa3B;AACT;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ,yBAAyB,kBAAW;AAC5D;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ,yBAAyB,kBAAW;AAC5D;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ,WAAW,kBAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,OAAO,OAAO,CAAC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,OAAO,OAAO,CAAC,UAAU;AAC7C;AACA;AACA;AACA;AACA;;;AC1QyD;AACX;AACI;AAC3C,8BAA8B,cAAc;AACnD;AACA;AACA;AACA,0BAA0B,YAAY;AACtC,SAAS;AACT,yDAAyD,wBAAwB;AACjF;AACA;AACA;AACA;;;ACb8C;AACI;AAC3C,gCAAgC,cAAc;AACrD;AACA;AACA;AACA,0BAA0B,YAAY;AACtC,SAAS;AACT;AACA;;;ACTO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChCO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA,CAAC,oEAAoE;;;AC/C4L;AAC9M;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iHAAiH;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,OAAO,CAAC,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,OAAO,CAAC,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,OAAO,CAAC,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC,aAAa,WAAW;AACxB,aAAa,wBAAwB,MAAM,mBAAmB;AAC9D,aAAa,UAAU;AACvB,aAAa,YAAY;AACzB,aAAa,WAAW;AACxB;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA,oBAAoB,aAAa;AACjC;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA,oBAAoB,mBAAmB;AACvC,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtMO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;;;ACRwB;AACgE;AACzF;AACgB;AACrD;AACP;AACA;AACA;AACO,yBAAyB,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC;AAClE;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC,aAAa,WAAW;AACxB,aAAa,wBAAwB,MAAM,wBAAwB;AACnE,aAAa,UAAU;AACvB;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C,yBAAyB,QAAQ,qBAAqB;AACtD,0BAA0B,oBAAoB;AAC9C,yBAAyB,mBAAmB;AAC5C,sBAAsB,gBAAgB;AACtC,6BAA6B,oBAAoB;AACjD,6BAA6B,oBAAoB;AACjD,gCAAgC,uBAAuB;AACvD;AACA;AACA,uDAAuD,iCAAiC;AACxF;AACA;AACA,4DAA4D,sCAAsC;AAClG;AACA;AACA,mDAAmD,6BAA6B;AAChF;AACA;AACA,0CAA0C,oBAAoB;AAC9D;AACA;AACA,sCAAsC,gBAAgB;AACtD;AACA;AACA;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA,wDAAwD,6BAA6B;AACrF;AACA;AACA,8CAA8C,WAAW,sBAAsB;AAC/E;AACA;AACA,uDAAuD,QAAQ,8BAA8B;AAC7F;AACA;AACA,mDAAmD,wBAAwB;AAC3E;AACA;AACA,+DAA+D,oCAAoC;AACnG;AACA;AACA,iEAAiE,sCAAsC;AACvG;AACA;AACA,oEAAoE,kCAAkC;AACtG;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA;AACA,0DAA0D,0CAA0C;AACpG;AACA;AACA,uEAAuE,aAAa,6CAA6C;AACjI;AACA;AACA,6EAA6E,wDAAwD;AACrI;AACA;AACA,0EAA0E,8CAA8C;AACxH;AACA;AACA,uDAAuD,4BAA4B;AACnF;AACA;AACA,8DAA8D,mCAAmC;AACjG;AACA;AACA;AACA;AACA;AACA,6DAA6D,kCAAkC;AAC/F;AACA;AACA,mEAAmE,+CAA+C;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB;AAC7E;AACA;AACA,uDAAuD,4BAA4B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA,wDAAwD,6BAA6B;AACrF;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA;AACA,qDAAqD,eAAe;AACpE;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;AACA,kDAAkD,wBAAwB;AAC1E;AACA;AACA,wDAAwD,8BAA8B;AACtF;AACA;AACA;AACA;AACA,mDAAmD,IAAI,SAAS,QAAQ;AACxE;AACA;AACA;AACA,mDAAmD,yBAAyB;AAC5E;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ,GAAG,kCAAkC,GAAG,QAAQ;AAC7G;AACA,aAAa;AACb;AACA;AACA,2DAA2D,iCAAiC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA,4CAA4C,kBAAkB;AAC9D;AACA;AACA,8CAA8C,oBAAoB;AAClE;AACA;AACA;AACA;AACA;AACA,4DAA4D,iCAAiC;AAC7F;AACA;AACA,8DAA8D,mCAAmC;AACjG;AACA;AACA,kEAAkE,uCAAuC;AACzG;AACA;AACA,oEAAoE,yCAAyC;AAC7G;AACA;AACA,6DAA6D,kCAAkC;AAC/F;AACA;AACA,+DAA+D,oCAAoC;AACnG;AACA;AACA,8DAA8D,mCAAmC;AACjG;AACA;AACA,8DAA8D,mCAAmC;AACjG;AACA;AACA,6DAA6D,0CAA0C;AACvG;AACA;AACA;AACA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA,iDAAiD,gBAAgB,6BAA6B;AAC9F;AACA;AACA;AACA;AACA,kDAAkD,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mCAAmC;AAC5F;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtU0C;AACnC,8BAA8B,UAAU;AAC/C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;ACRyQ;AACzN;AACO;AACE;AAClD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW,aAAa,WAAW;AACzE;AACA;AACA,YAAY,QAAQ,cAAc,sBAAsB,EAAE,sBAAsB;AAChF;AACA;AACA;AACA;AACA;AACA,kBAAkB,yDAAyD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE,oCAAoC,eAAe;AACnD,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,WAAW;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa,gBAAgB,MAAM,mBAAmB;AACtD,aAAa,mBAAmB,GAAG,QAAQ;AAC3C,aAAa,oBAAoB,GAAG,QAAQ;AAC5C,aAAa,mBAAmB,GAAG,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8BAA8B,YAAY,CAAC,EAAE,kBAAkB,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;ACrKoD;AAC7C,yBAAyB,eAAe;AAC/C;AACA;AACA;AACA;;;ACLO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;;;ACvCgB;AACC;AACrC,MAAM,qBAAa;AACnB,sBAAsB,WAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAa;AAC5B;AACA;;;AClDO;AACP;AACA;AACA;AACA,CAAC,sCAAsC;;;ACJ+F;AAC5F;AACA;AACM;AACJ;AACrC,MAAM,mBAAa;AACnB;AACA;AACA,oBAAoB,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC,gBAAgB,qBAAqB;AACrC;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAa;AAC5B;AACA;;;ACrHuD;AACb;AACE;AACrC,MAAM,oBAAa;AACnB,qBAAqB,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAa;AAC5B;AACA;;;AC/CgE;AACzD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB,MAAM,mBAAmB;AAC9D,aAAa,KAAK;AAClB;AACA,+BAA+B,wBAAwB;AACvD;AACA,aAAa;AACb;AACA;AACA;;;ACxB4L;AAChJ;AACrC,MAAM,sBAAa;AACnB,uBAAuB,WAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB,oGAAoG;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC,aAAa,qBAAqB;AAClC,aAAa,oCAAoC;AACjD,aAAa,4BAA4B;AACzC,aAAa,YAAY;AACzB,aAAa,WAAW;AACxB;AACA;AACA,oBAAoB,mBAAmB;AACvC,oBAAoB,YAAY;AAChC;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAa;AAC5B;AACA;;;ACxG0G;AAC9D;AACrC,MAAM,WAAK;AACX,MAAM,mBAAa;AACnB,oBAAoB,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAK;AACvB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,wBAAwB,MAAM,mBAAmB;AAC9D,aAAa,UAAU;AACvB,aAAa,WAAW;AACxB;AACA;AACA;AACA,2BAA2B,WAAW;AACtC,2BAA2B,wBAAwB;AACnD;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,mBAAa;AAC5B;AACA;;;AC7C+C;AACa;AACisB;AACltB;AACc;AACZ;AACG;AAC+E;AACvF;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wLAAwL;AACxM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EA0B3B;AACT;AACA;AACA,YAAY,KAAsB,EAAE,EAuB3B;AACT;AACA;AACA,0BAA0B,cAAc,GAAG,MAAM,GAAG;AACpD;AACA;AACA,yBAAyB,OAAO,yBAAyB,UAAU,qBAAqB,QAAQ,MAAM;AACtG;AACA;AACA,QAAQ,eAAe,cAAc,gBAAgB,EAAE,kBAAkB;AACzE;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA,0BAA0B,cAAc,GAAG,MAAM,GAAG;AACpD;AACA,yCAAyC,YAAY;AACrD;AACA,YAAY,QAAQ,cAAc,OAAO,CAAC,uBAAuB,oCAAoC,YAAY;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uCAAuC,gBAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,KAAK;AAC/B;AACA,gBAAgB,OAAO;AACvB,SAAS;AACT;AACA;AACA;AACA,iDAAiD,yBAAyB;AAC1E;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0BAA0B,CAAC,mBAAmB,GAAG,uBAAuB;AACxE;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,gBAAgB,EAAE,SAAS;AACtF,qBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,sBAAsB,EAAE,SAAS;AAC5F;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,mCAAmC,OAAO,2BAA2B,UAAU;AAC/E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,eAAe,cAAc,iBAAiB,EAAE,eAAe;AAC3E;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,gBAAgB;AACxE;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,gBAAgB,EAAE,iBAAiB;AACrE;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc,GAAG,MAAM,GAAG;AACxD;AACA;AACA;AACA,QAAQ,QAAQ,cAAc,OAAO,CAAC,kCAAkC,oCAAoC,uBAAuB;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB,IAAI,mBAAmB;AAC3F,YAAY,QAAQ,cAAc,OAAO,CAAC,4BAA4B;AACtE;AACA;AACA,aAAa,IAAI,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,WAAW;AAC7C,qBAAqB,uBAAuB;AAC5C,2BAA2B;AAC3B;AACA;AACA,aAAa,GAAG,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc,GAAG,MAAM,GAAG;AACxD;AACA;AACA;AACA,QAAQ,QAAQ,cAAc,OAAO,CAAC,4BAAwB,oCAAoC,aAAa;AAC/G;AACA;AACA;AACA;AACA;AACA,6CAA6C,aAAa,IAAI,mBAAmB;AACjF,YAAY,QAAQ,cAAc,OAAO,CAAC,0BAAsB;AAChE;AACA;AACA,aAAa,IAAI,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,WAAW;AAC7C,qBAAqB,aAAa;AAClC,2BAA2B;AAC3B;AACA;AACA,aAAa,GAAG,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7c2K;AAC/G;AAC2I;AAClJ;AACa;AACkB;AACpC;AACS;AAClD,gDAAgD,+BAA+B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B,aAAa,mBAAmB,GAAG,QAAQ;AAC3C,aAAa,oBAAoB,GAAG,QAAQ;AAC5C,aAAa,mBAAmB,GAAG,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY,GAAG,yBAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,gBAAgB,EAAE,YAAY;AACzF;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,eAAe,cAAc,gBAAgB,EAAE,sBAAsB,EAAE,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yBAAyB,qDAAqD;AAC9E,yGAAyG,yBAAyB;AAClI;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA,wBAAwB,0BAA0B,KAAK,0BAA0B;AACjF,8BAA8B,aAAa,4BAA4B,0BAA0B;AACjG;AACA;AACA;AACA;;;ACpG4D;AAC0R;AAC9R;AAChB;AACoB;AACZ;AACkB;AACkB;AAC7E,8CAA8C,+BAA+B;AACpF;AACA;AACA;AACA,yBAAyB,qDAAqD;AAC9E;AACA,aAAa,gBAAgB;AAC7B,aAAa,mBAAmB,GAAG,QAAQ;AAC3C,aAAa,oBAAoB,GAAG,QAAQ;AAC5C,aAAa,mBAAmB,GAAG,uBAAuB;AAC1D;AACA,kCAAkC,aAAa,4EAA4E,yBAAyB;AACpJ;AACA;AACA;AACA;AACA,oBAAoB,YAAY,GAAG,yBAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,gBAAgB,EAAE,YAAY;AACzF;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,sBAAsB,EAAE,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uCAAuC,gBAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,0BAA0B,CAAC,mBAAmB,GAAG,uBAAuB;AACxE,0BAA0B,KAAK,GAAG,UAAU;AAC5C;AACA;AACA;AACA;AACA,iDAAiD,yBAAyB;AAC1E;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,gBAAgB,EAAE,SAAS;AACtF;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,sBAAsB,EAAE,SAAS;AAC5F;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/K4D;AACgS;AAC5S;AAC0B;AACU;AAC5B;AACI;AACrD,kDAAkD,+BAA+B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAc,GAAG,MAAM,GAAG;AACpD;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C,SAAS;AACT;AACA;AACA,0BAA0B,cAAc,GAAG,MAAM,GAAG;AACpD;AACA,yBAAyB,OAAO,yBAAyB,UAAU,qBAAqB,QAAQ,MAAM;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,CAAC,mBAAmB,GAAG,uBAAuB;AACxE;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,gBAAgB,EAAE,UAAU;AACvF;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA,kCAAkC,gBAAgB,CAAC,gBAAgB;AACnE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO,yBAAyB,UAAU;AACvE;AACA;AACA;AACA,YAAY,eAAe,cAAc,gBAAgB,EAAE,sBAAsB,EAAE,UAAU;AAC7F;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,CAAC,gBAAgB;AACnE,aAAa;AACb,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,OAAO,2BAA2B,UAAU;AAC/E,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qDAAqD;AAC9E;AACA,aAAa,gBAAgB;AAC7B,aAAa,mBAAmB,GAAG,QAAQ;AAC3C,aAAa,oBAAoB,GAAG,QAAQ;AAC5C,aAAa,mBAAmB,GAAG,uBAAuB;AAC1D;AACA,kCAAkC,aAAa,4EAA4E,yBAAyB;AACpJ;AACA;AACA;AACA;AACA,oBAAoB,YAAY,GAAG,yBAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,eAAe,cAAc,gBAAgB,EAAE,gBAAgB,EAAE,YAAY;AACzF;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,eAAe,cAAc,gBAAgB,EAAE,sBAAsB,EAAE,YAAY;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,aAAa;AACb,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;ACrMyH;AAC/E;AACE;AACrC,MAAM,kBAAa;AACnB,mBAAmB,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB,gFAAgF;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,gBAAgB,WAAW;AAC3B,gBAAgB,WAAW;AAC3B;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAa;AAC5B;AACA;;;ACvJuD;AACb;AACE;AACrC,MAAM,kBAAa;AACnB,mBAAmB,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAa;AAC5B;AACA;;;AC9CA;AAC+K;AACrI;AACS;AACP;AACrC,yBAAyB,GAAG;AAC5B,MAAM,yBAAa;AACnB,0BAA0B,WAAW;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB,iIAAiI;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,gBAAgB,WAAW;AAC3B;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAa;AAC5B;AACA;;;ACxMmM;AAC7I;AACb;AACJ;AACE;AAC8D;AACb;AACJ;AACQ;AACjD;AACiB;AACtB;AACA;AACc;AAC7C;AACA,MAAM,qDAA6B;AACnC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B,+BAA+B,+BAA+B;AAC9D;AACA,iBAAiB,aAAa;AAC9B,+BAA+B,iCAAiC;AAChE;AACA;AACA,+BAA+B,mCAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,cAAc,cAAc,gBAAgB,EAAE,kBAAkB;AACxE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,OAAO,cAAc,kBAAkB,EAAE,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gBAAgB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,QAAQ,cAAc,qDAA6B,EAAE,kBAAkB;AAC/E;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,KAAK;AAC/B;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,IAAI;AAC9B;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,IAAI;AAC9B;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,MAAM;AAChC;AACA;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,iBAAiB,OAAO;AACxB,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,yBAAyB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,gBAAgB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpN4D;AACQ;AAC7D,8BAA8B,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gBAAgB;AACtD;AACA;;;ACZA;AACyC;AACC;AACnC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe,CAAC,QAAQ;AAClD;AACA;AACA,0BAA0B,eAAe,CAAC,QAAQ;AAClD;AACA;AACA,0BAA0B,eAAe,CAAC,QAAQ;AAClD;AACA;AACA,0BAA0B,eAAe,CAAC,QAAQ;AAClD;AACA;AACA,yBAAyB,eAAe,CAAC,QAAQ;AACjD;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA,qBAAqB,eAAe,CAAC,QAAQ;AAC7C;AACA;AACA,0BAA0B,eAAe,CAAC,QAAQ;AAClD;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;;;AC1C0C;AACnC,uBAAuB,UAAU;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;ACR6C;AACuB;AACrB;AACsD;AACgO;AAC5Q;AACd;AACgB;AACQ;AAC9B;AAC9B,MAAM,uCAAsB;AAC5B,MAAM,8CAA6B;AACnC,yDAAyD,GAAG,IAAI,EAAE;AAClE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAoD,EAAE,EAIzD;AACT;AACA;AACA,YAAY,KAAoD,EAAE,EAIzD;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,OAAO,CAAC,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA,sBAAsB,QAAQ,MAAM,GAAG,0BAA0B;AACjE,oBAAoB,UAAU;AAC9B,sBAAsB,aAAa;AACnC,SAAS;AACT;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA,uCAAuC,eAAe;AACtD,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,cAAc,mBAAmB,EAAE,eAAe;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kBAAkB,yDAAyD,kBAAkB;AAC9I,YAAY,cAAc,cAAc,aAAa;AACrD;AACA;AACA,gDAAgD,kBAAkB;AAClE,YAAY,cAAc,cAAc,aAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,gCAAgC,EAAE,qBAAqB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA,kDAAkD,kBAAkB;AACpE;AACA;AACA;AACA;AACA,sDAAsD,kBAAkB;AACxE;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,oBAAoB;AAC5E;AACA;AACA;AACA,oDAAoD,kBAAkB;AACtE;AACA;AACA,sDAAsD,kBAAkB;AACxE;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB,gCAAgC,kBAAkB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,mBAAmB;AAC3E;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,qBAAqB;AAC7E;AACA;AACA;AACA,YAAY,eAAe,cAAc,aAAa,EAAE,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EAG3B;AACT,iCAAiC,QAAQ;AACzC,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,0CAA0C,6BAA6B;AACvE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EAG3B;AACT,6CAA6C,eAAe;AAC5D,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxZA;AACA;AACA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtHO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8HAA8H;AAC9I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;ACnCA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;;ACzB0wB;AACjwB;AACuH;AACjH;AAC0D;AACxD;AACF;AACE;AACJ;AACd;AACA;AACI;AACF;AACoB;AACrD;AACA;AACA,8BAA8B,gBAAgB;AACrD;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,sBAAsB,EAAE,6BAA6B;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,sBAAsB,EAAE,iBAAiB;AAClF;AACA;AACA;AACA,YAAY,eAAe,cAAc,sBAAsB,EAAE,mBAAmB;AACpF;AACA;AACA,oBAAoB,eAAe,YAAY,gBAAgB,YAAY,gBAAgB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC,oBAAoB,cAAc;AAClC;AACA,QAAQ,eAAe,cAAc,sBAAsB,EAAE,wBAAwB;AACrF;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,sBAAsB,kBAAkB,EAAE,sBAAsB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC,oBAAoB,cAAc;AAClC;AACA,QAAQ,eAAe,cAAc,qBAAqB,EAAE,aAAa;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,OAAO,YAAY,GAAG,4CAA4C,gBAAgB;AACpH;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,6BAA6B,KAAK;AAClC;AACA;AACA,iBAAiB,OAAO;AACxB,6BAA6B,IAAI;AACjC;AACA;AACA,iBAAiB,OAAO;AACxB,6BAA6B,IAAI;AACjC;AACA;AACA,iBAAiB,OAAO;AACxB,6BAA6B,MAAM;AACnC;AACA;AACA,iBAAiB,OAAO;AACxB,6BAA6B,WAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,YAAY,EAAE,qCAAqC;AAC5F;AACA;AACA;AACA,YAAY,iBAAiB,cAAc,YAAY,EAAE,4BAA4B;AACrF;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,aAAa;AACjC,oBAAoB,cAAc;AAClC;AACA,QAAQ,eAAe,cAAc,YAAY,EAAE,oBAAoB;AACvE;AACA;AACA;AACA,YAAY,eAAe,cAAc,cAAc,EAAE,iCAAiC;AAC1F;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,aAAa;AACjC,oBAAoB,cAAc;AAClC;AACA,QAAQ,eAAe,cAAc,cAAc,EAAE,sBAAsB;AAC3E;AACA;AACA,0BAA0B,UAAU;AACpC;AACA,6BAA6B,WAAW;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ,QAAQ,4BAA4B,sBAAsB;AAClE;AACA,oBAAoB,aAAa;AACjC,oBAAoB,cAAc;AAClC;AACA,uCAAuC,eAAe;AACtD,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C,gBAAgB,cAAc,4BAA4B,6BAA6B;AACvF;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,4BAA4B,mBAAmB;AAC1E;AACA,wBAAwB,aAAa;AACrC,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA,YAAY,eAAe,4BAA4B,uBAAuB;AAC9E,qBAAqB;AACrB;AACA;AACA;AACA,YAAY,QAAQ,6BAA6B,sBAAsB;AACvE;AACA,wBAAwB,aAAa;AACrC,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,wBAAwB,cAAc;AACtC;AACA,YAAY,eAAe,cAAc,sBAAsB,EAAE,0BAA0B;AAC3F;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EAgB3B;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAAiF;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC,oDAAoD,aAAa;AACjE;AACA,4BAA4B,aAAa;AACzC,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA,YAAY,eAAe,cAAc,sBAAsB,EAAE,0BAA0B;AAC3F;AACA;AACA;AACA;AACA,qEAAqE,cAAc;AACnF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA,YAAY,iBAAiB,sBAAsB,oBAAoB,EAAE,uBAAuB;AAChG,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA,YAAY,iBAAiB,sBAAsB,oBAAoB,EAAE,gCAAgC;AACzG,yCAAyC,oBAAoB;AAC7D;AACA;AACA,2FAA2F,WAAW;AACtG,YAAY,iBAAiB,sBAAsB,oBAAoB,EAAE,uBAAuB;AAChG,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB,0CAA0C;AAC1D;AACA,YAAY,iBAAiB,cAAc,UAAU,EAAE,sBAAsB;AAC7E,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,WAAW;AAC/E,YAAY,iBAAiB,cAAc,UAAU,EAAE,mBAAmB;AAC1E,yCAAyC,oBAAoB;AAC7D;AACA;AACA,QAAQ,eAAe,cAAc,UAAU,EAAE,cAAc;AAC/D;AACA;AACA;AACA,QAAQ,iBAAiB,cAAc,aAAa,EAAE,gBAAgB;AACtE,+BAA+B,eAAe;AAC9C,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA,YAAY,iBAAiB,cAAc,aAAa,EAAE,gBAAgB;AAC1E;AACA,mBAAmB,cAAc;AACjC;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AC7mBmI;AAClF;AACG;AACI;AACjD,+BAA+B,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA,8BAA8B,cAAc;AAC5C,QAAQ,eAAe,cAAc,aAAa,EAAE,sBAAsB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,0BAA0B,wBAAwB,sCAAsC,WAAW,CAAC,WAAW;AACtI;AACA;;;ACjEgI;AAChF;AACI;AACI;AACjD,4BAA4B,eAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA,8BAA8B,cAAc;AAC5C,QAAQ,cAAc,cAAc,aAAa,EAAE,mBAAmB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,cAAc,0BAA0B,wBAAwB,sCAAsC,WAAW,CAAC,WAAW;AACrI;AACA;;;AC7EuF;AACrC;AACE;AAC7C,gCAAgC,eAAe;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,cAAc,OAAO,CAAC,gCAAgC;AACrE;AACA;;;ACpDA;AACO;AACP;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxCyL;AACjH;AACkB;AACtC;AACF;AACI;AACN;AACQ;AACP;AACK;AACE;AACjD,8BAA8B,6BAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAgE;AAChF,mDAAmD,UAAU;AAC7D;AACA;AACA;AACA;AACA,2BAA2B,MAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EAU3B;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,cAAc,mBAAmB,EAAE,sBAAsB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,MAAM;AACnE;AACA;AACA;AACA,gBAAgB,yIAAyI;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,cAAc,mBAAmB,EAAE,yBAAyB;AACnF,uBAAuB,QAAQ;AAC/B,wBAAwB,QAAQ;AAChC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,cAAc,mBAAmB,EAAE,eAAe;AACzE;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,MAAM;AAChC,QAAQ,eAAe,cAAc,mBAAmB,EAAE,oBAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA,+CAA+C,WAAW;AAC1D,2BAA2B,gBAAgB;AAC3C;AACA,4BAA4B,WAAW;AACvC,2BAA2B,aAAa;AACxC;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EA8B3B;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9aA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;;ACrBM;AACpC,0BAA0B,wCAAwC;AACzE,QAAQ,KAAsB,EAAE,EAuB3B;AACL;AACA;;;AC3BsD;AACF;AACF;AACA;AAC3C;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB,eAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mDAAmD,aAAa;AAChE,mBAAmB,YAAY;AAC/B;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA,mDAAmD,aAAa,0DAA0D,aAAa;AACvI,mBAAmB,YAAY;AAC/B;AACA,eAAe,YAAY;AAC3B;AACA;;;AC5F+D;AAC5B;AACqC;AACxE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,yCAAyC,MAAM;AAC/C;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB,uBAAuB,QAAQ,EAAE,kBAAkB;AACpF;AACA,uBAAuB,MAAM,GAAG,KAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU,GAAG,+BAA+B;AACjE,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;ACnJoD;AACX;AACwC;AAC7B;AACE;AACM;AACrD,8BAA8B,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,aAAa;AACrD,2CAA2C,aAAa;AACxD,2CAA2C,aAAa;AACxD,YAAY,iBAAiB,cAAc,QAAQ,EAAE,4BAA4B;AACjF;AACA,mBAAmB,MAAM;AACzB;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,gBAAgB,GAAG,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtD6J;AACpH;AACO;AACiC;AAC7B;AACR;AACgB;AACrD,+BAA+B,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA,kBAAkB,iFAAiF;AACnG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C,eAAe;AAC1D,uBAAuB,oBAAoB;AAC3C,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA,oBAAoB,OAAO,CAAC,uBAAuB;AACnD;AACA;AACA;AACA,oEAAoE,8CAA8C;AAClH;AACA;AACA;AACA,gCAAgC,aAAa,IAAI,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,cAAc,WAAW;AAC7C;AACA;AACA;AACA,aAAa,GAAG,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,eAAe,cAAc,UAAU,EAAE,yBAAyB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,eAAe,cAAc,UAAU,EAAE,wBAAwB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzRO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACdA;AACA,aAAa,6BAA6B;AAC1C;AACA;AACA,MAAM,mCAA4B,OAAO,iFAAiF;;ACJ3F;AAC/B;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB,EAAE,mBAAO,CAAC,GAAM;AACnD;AACA,gBAAgB,oBAAoB,EAAE,mBAAO,CAAC,GAAO;AACrD;AACA,oEAAoE,iBAAiB,qBAAqB,iBAAiB;AAC3H;AACA;AACA;AACA;AACO;AACP;AACA;AACA,WAAW,kDAAK;AAChB;AACA;AACA;AACA,KAAK;AACL;AACsC;AAC6B;;;ACxB3B;AACS;AACkB;AAC5D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qCAAoB;AAClC;AACA;AACA;AACA;AACA,qFAAqF,gBAAgB;AACrG;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,gBAAgB;AAC1G;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AClEsD;AAC/C,0BAA0B,gBAAgB;AACjD;AACA;AACA;AACA;;;ACL8C;AACI;AAC3C,yBAAyB,cAAc;AAC9C;AACA;AACA;AACA,0BAA0B,YAAY;AACtC,SAAS;AACT;AACA;;;ACTgD;AACoP;AAChM;AACxC;AACrD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAA4D;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,eAAe,yBAAyB,EAAE,iBAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,eAAe,yBAAyB,EAAE,iBAAiB;AAC1E;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA,YAAY,eAAe,eAAe,iBAAiB,EAAE,iBAAiB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ,eAAe,iBAAiB,EAAE,iBAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO,CAAC,iBAAiB;AAC7C;AACA,aAAa,mBAAmB,GAAG,QAAQ;AAC3C,aAAa,oBAAoB,GAAG,QAAQ;AAC5C,aAAa,mBAAmB,GAAG,uBAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,QAAQ,eAAe,WAAW,CAAC,oBAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG,iBAAiB;AACjC;AACA;AACA;AACA;;;ACzJO;AACP;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAA4D;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBgD;AACoB;AACV;AACd;AACgB;AACrD;AACP;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAA4D;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA,mBAAmB,oBAAoB;AACvC,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,OAAO,CAAC,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe,kDAAkD,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1EO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACZ6C;AACK;AACiC;AAC3B;AACJ;AACK;AACQ;AACuE;AACwI;AACnN;AACG;AACf;AACA;AACO;AACF;AACJ;AACW;AACD;AACV;AACF;AACQ;AACkB;AACP;AACR;AACkB;AAChC;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,MAAM;AAChC,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,IAA0C;AACtD;AACA;AACA;AACA;AACA,aAAa,EAKJ;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe;AACvB;AACA,QAAQ,cAAc,eAAe,kBAAkB,EAAE,kBAAkB,EAAE,WAAW;AACxF,8CAA8C,YAAY;AAC1D,2BAA2B,WAAW;AACtC;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,gCAAgC,eAAe;AAC/C;AACA,iBAAiB,YAAY;AAC7B,gCAAgC,UAAU;AAC1C;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB,YAAY;AAC7B,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,YAAY,KAAsB,EAAE,EAM3B;AACT;AACA;AACA,YAAY,KAAsB,EAAE,EAI3B;AACT;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA,YAAY,KAAsB,EAAE,EAK3B;AACT,+BAA+B,UAAU;AACzC,2EAA2E,eAAe;AAC1F,gBAAgB,8BAA8B;AAC9C;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kBAAkB;AAC3D;AACA;AACA,+BAA+B,WAAW;AAC1C,YAAY,QAAQ,cAAc,0BAA0B,EAAE,sBAAsB;AACpF;AACA;AACA,QAAQ,eAAe,cAAc,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ;AAC9F,YAAY,KAAsB,EAAE,EAO3B;AACT;AACA,QAAQ,OAAO,cAAc,OAAO,CAAC,gBAAgB,EAAE,QAAQ,UAAU,WAAW,+CAA+C,sBAAsB;AACzJ,YAAY,KAAsB,EAAE,EAI3B;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C,gCAAgC,kBAAkB;AAClD,+BAA+B,UAAU;AACzC,oCAAoC,eAAe;AACnD,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iIAAiI;AACzJ,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA,YAAY,QAAQ,uBAAuB,qBAAqB,EAAE,mBAAmB;AACrF;AACA;AACA;AACA;AACA,YAAY,UAAU,YAAY,2BAA2B,EAAE,mBAAmB;AAClF;AACA,8BAA8B,SAAS;AACvC;AACA,4BAA4B,UAAU;AACtC;AACA,SAAS;AACT,wCAAwC,mBAAmB;AAC3D,QAAQ,eAAe;AACvB,oCAAoC,eAAe;AACnD;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,4BAA4B,UAAU;AACtC;AACA,SAAS;AACT,YAAY,KAAsB,EAAE,EAS3B;AACT,4BAA4B,OAAO;AACnC;AACA;AACA,YAAY,eAAe,YAAY,mBAAmB,EAAE,qBAAqB;AACjF;AACA,6DAA6D,YAAY;AACzE;AACA;AACA;AACA;AACA;;;AC/X0B;AACO;AACP;AACU;AACD;;;ACJQ;AACA;AACsB;AACrB;AAC8E;AACnF;AACf;AACkB;AACb;AAC7B,0CAAe,QAAQ,EAAC","sources":["webpack://@flagship.io/js-sdk/external node-commonjs \"events\"","webpack://@flagship.io/js-sdk/external node-commonjs \"http\"","webpack://@flagship.io/js-sdk/external node-commonjs \"https\"","webpack://@flagship.io/js-sdk/./node_modules/node-abort-controller/index.js","webpack://@flagship.io/js-sdk/webpack/bootstrap","webpack://@flagship.io/js-sdk/webpack/runtime/define property getters","webpack://@flagship.io/js-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@flagship.io/js-sdk/./src/sdkVersion.ts","webpack://@flagship.io/js-sdk/./src/enum/FlagshipConstant.ts","webpack://@flagship.io/js-sdk/./src/visitor/Visitor.ts","webpack://@flagship.io/js-sdk/./src/enum/FSSdkStatus.ts","webpack://@flagship.io/js-sdk/./src/config/DecisionMode.ts","webpack://@flagship.io/js-sdk/./src/enum/LogLevel.ts","webpack://@flagship.io/js-sdk/./src/enum/FSFetchReasons.ts","webpack://@flagship.io/js-sdk/./src/utils/utils.ts","webpack://@flagship.io/js-sdk/./src/enum/CacheStrategy.ts","webpack://@flagship.io/js-sdk/./src/config/TrackingManagerConfig.ts","webpack://@flagship.io/js-sdk/./src/config/FlagshipConfig.ts","webpack://@flagship.io/js-sdk/./src/config/BucketingConfig.ts","webpack://@flagship.io/js-sdk/./src/config/DecisionApiConfig.ts","webpack://@flagship.io/js-sdk/./src/config/ConfigManager.ts","webpack://@flagship.io/js-sdk/./src/types.ts","webpack://@flagship.io/js-sdk/./src/hit/HitAbstract.ts","webpack://@flagship.io/js-sdk/./src/enum/BatchTriggeredBy.ts","webpack://@flagship.io/js-sdk/./src/hit/Diagnostic.ts","webpack://@flagship.io/js-sdk/./src/hit/Troubleshooting.ts","webpack://@flagship.io/js-sdk/./src/decision/DecisionManager.ts","webpack://@flagship.io/js-sdk/./src/decision/ApiManager.ts","webpack://@flagship.io/js-sdk/./src/enum/HitType.ts","webpack://@flagship.io/js-sdk/./src/hit/Segment.ts","webpack://@flagship.io/js-sdk/./src/hit/EventCategory.ts","webpack://@flagship.io/js-sdk/./src/hit/Event.ts","webpack://@flagship.io/js-sdk/./src/hit/Screen.ts","webpack://@flagship.io/js-sdk/./src/hit/ActivateBatch.ts","webpack://@flagship.io/js-sdk/./src/hit/Activate.ts","webpack://@flagship.io/js-sdk/./src/hit/Batch.ts","webpack://@flagship.io/js-sdk/./src/api/BatchingCachingStrategyAbstract.ts","webpack://@flagship.io/js-sdk/./src/api/BatchingContinuousCachingStrategy.ts","webpack://@flagship.io/js-sdk/./src/api/BatchingPeriodicCachingStrategy.ts","webpack://@flagship.io/js-sdk/./src/api/NoBatchingContinuousCachingStrategy.ts","webpack://@flagship.io/js-sdk/./src/hit/Item.ts","webpack://@flagship.io/js-sdk/./src/hit/Page.ts","webpack://@flagship.io/js-sdk/./src/hit/Transaction.ts","webpack://@flagship.io/js-sdk/./src/api/TrackingManagerAbstract.ts","webpack://@flagship.io/js-sdk/./src/api/TrackingManager.ts","webpack://@flagship.io/js-sdk/./src/utils/FlagshipLogManager.ts","webpack://@flagship.io/js-sdk/./src/hit/UsageHit.ts","webpack://@flagship.io/js-sdk/./src/visitor/StrategyAbstract.ts","webpack://@flagship.io/js-sdk/./src/enum/FlagshipContext.ts","webpack://@flagship.io/js-sdk/./src/flag/FSFlagMetadata.ts","webpack://@flagship.io/js-sdk/./src/enum/FSFetchStatus.ts","webpack://@flagship.io/js-sdk/./src/visitor/DefaultStrategy.ts","webpack://@flagship.io/js-sdk/./src/visitor/NotReadyStrategy.ts","webpack://@flagship.io/js-sdk/./src/visitor/PanicStrategy.ts","webpack://@flagship.io/js-sdk/./src/visitor/NoConsentStrategy.ts","webpack://@flagship.io/js-sdk/./src/utils/MurmurHash.ts","webpack://@flagship.io/js-sdk/./src/visitor/VisitorAbstract.ts","webpack://@flagship.io/js-sdk/./src/enum/FSFlagStatus.ts","webpack://@flagship.io/js-sdk/./src/flag/forceVariation.ts","webpack://@flagship.io/js-sdk/./src/flag/FsFlags.ts","webpack://@flagship.io/js-sdk/./src/flag/FSFlagCollection.ts","webpack://@flagship.io/js-sdk/./src/visitor/VisitorDelegate.ts","webpack://@flagship.io/js-sdk/./src/decision/BucketingManager.ts","webpack://@flagship.io/js-sdk/./src/utils/HttpError.ts","webpack://@flagship.io/js-sdk/external module \"node-fetch\"","webpack://@flagship.io/js-sdk/./src/depsNode.ts","webpack://@flagship.io/js-sdk/./src/utils/HttpClient.ts","webpack://@flagship.io/js-sdk/./src/decision/EdgeManager.ts","webpack://@flagship.io/js-sdk/./src/config/EdgeConfig.ts","webpack://@flagship.io/js-sdk/./src/main/BucketingSdkManager.ts","webpack://@flagship.io/js-sdk/./src/main/EdgeSdkManager.ts","webpack://@flagship.io/js-sdk/./src/main/ApiSdkManager.ts","webpack://@flagship.io/js-sdk/./src/emotionAI/EmotionAI.node.ts","webpack://@flagship.io/js-sdk/./src/visitor/VisitorProfileCache.node.ts","webpack://@flagship.io/js-sdk/./src/main/Flagship.ts","webpack://@flagship.io/js-sdk/./src/flag/index.ts","webpack://@flagship.io/js-sdk/./src/index.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"events\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"http\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"https\");","const { EventEmitter } = require(\"events\");\n\nclass AbortSignal {\n  constructor() {\n    this.eventEmitter = new EventEmitter();\n    this.onabort = null;\n    this.aborted = false;\n    this.reason = undefined;\n  }\n  toString() {\n    return \"[object AbortSignal]\";\n  }\n  get [Symbol.toStringTag]() {\n    return \"AbortSignal\";\n  }\n  removeEventListener(name, handler) {\n    this.eventEmitter.removeListener(name, handler);\n  }\n  addEventListener(name, handler) {\n    this.eventEmitter.on(name, handler);\n  }\n  dispatchEvent(type) {\n    const event = { type, target: this };\n    const handlerName = `on${type}`;\n\n    if (typeof this[handlerName] === \"function\") this[handlerName](event);\n\n    this.eventEmitter.emit(type, event);\n  }\n  throwIfAborted() {\n    if (this.aborted) {\n      throw this.reason;\n    }\n  }\n  static abort(reason) {\n    const controller = new AbortController();\n    controller.abort();\n    return controller.signal;\n  }\n  static timeout(time) {\n    const controller = new AbortController();\n    setTimeout(() => controller.abort(new Error(\"TimeoutError\")), time);\n    return controller.signal;\n  }\n}\nclass AbortController {\n  constructor() {\n    this.signal = new AbortSignal();\n  }\n  abort(reason) {\n    if (this.signal.aborted) return;\n\n    this.signal.aborted = true;\n\n    if (reason) this.signal.reason = reason;\n    else this.signal.reason = new Error(\"AbortError\");\n\n    this.signal.dispatchEvent(\"abort\");\n  }\n  toString() {\n    return \"[object AbortController]\";\n  }\n  get [Symbol.toStringTag]() {\n    return \"AbortController\";\n  }\n}\n\nmodule.exports = { AbortController, AbortSignal };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// Generated by genversion.\nexport const version = '5.1.7';\n","import { version } from '../sdkVersion';\n/**\n * SDK language\n */\nexport const SDK_INFO = {\n    name: 'TypeScript',\n    version\n};\n/**\n * Default request timeout in second\n */\nexport const REQUEST_TIME_OUT = 2;\nexport const FETCH_FLAG_BUFFERING_DEFAULT_TIME = 2;\nexport const DEFAULT_DEDUPLICATION_TIME = 2.5;\nexport const DEFAULT_POLLING_INTERVAL = 5;\nexport const DEFAULT_SERVER_TIME_INTERVAL = 10;\nexport const DEFAULT_SERVER_POOL_MAX_SIZE = 100;\nexport const DEFAULT_BROWSER_TIME_INTERVAL = 5;\nexport const DEFAULT_BROWSER_POOL_MAX_SIZE = 10;\nexport const BATCH_MAX_SIZE = 2500000;\nexport const ANALYTIC_HIT_ALLOCATION = 1;\nexport const MAX_COLLECTING_TIME_MS = 30000;\nexport const MAX_LAST_COLLECTING_TIME_MS = 120000;\nexport const MAX_CLICK_PATH_LENGTH = 1900;\nexport const MAX_SCORING_POLLING_TIME = 120000;\nexport const SCROLL_END_DELAY_MS = 200;\nexport const CLICK_PATH_DELAY_MS = 500;\nexport const SCORING_INTERVAL = 5000;\n/**\n * Decision api base url\n */\nexport const BASE_API_URL = 'https://decision.flagship.io/v2/';\nexport const HIT_API_URL = 'https://ariane.abtasty.com';\nexport const HIT_EVENT_URL = 'https://events.flagship.io';\nexport const TROUBLESHOOTING_HIT_URL = 'https://events.flagship.io/troubleshooting';\nexport const USAGE_HIT_URL = 'https://events.flagship.io/analytics';\nexport const BUCKETING_API_URL = 'https://cdn.flagship.io/{0}/bucketing.json';\nexport const BUCKETING_API_CONTEXT_URL = 'https://decision.flagship.io/v2/{0}/events';\nexport const THIRD_PARTY_SEGMENT_URL = 'https://api-data-connector.flagship.io/accounts/{0}/segments/{1}';\nexport const HIT_CONSENT_URL = 'https://ariane.abtasty.com';\nexport const URL_CAMPAIGNS = '/campaigns';\nexport const URL_ACTIVATE_MODIFICATION = 'activate';\nexport const QA_ASSISTANT_PROD_URL = 'https://qa-assistant.flagship.io/bundle.js';\nexport const QA_ASSISTANT_STAGING_URL = 'https://staging-qa-assistant.flagship.io/bundle.js';\nexport const QA_ASSISTANT_LOCAL_URL = 'https://local-qa-assistant.flagship.io:5000/bundle.js';\nexport const FS_QA_ASSISTANT = 'fs_qa_assistant';\nexport const FS_QA_ASSISTANT_STAGING = 'fs_qa_assistant_staging';\nexport const FS_QA_ASSISTANT_LOCAL = 'fs_qa_assistant_local';\nexport const TAG_QA_ASSISTANT = 'abtasty_qa_assistant';\nexport const TAG_QA_ASSISTANT_STAGING = 'abtasty_qa_assistant_staging';\nexport const TAG_QA_ASSISTANT_LOCAL = 'abtasty_qa_assistant_local';\nexport const TAG_QA_URL = 'qa-assistant.abtasty.com';\nexport const FS_QA_URL = 'qa-assistant.flagship.io';\nexport const EXPOSE_ALL_KEYS = 'exposeAllKeys';\nexport const SEND_CONTEXT_EVENT = 'sendContextEvent';\nexport const FS_CONSENT = 'fs_consent';\nexport const FS_IS_QA_MODE_ENABLED = 'FS_IS_QA_MODE_ENABLED';\nexport const FS_FORCED_VARIATIONS = 'FS_FORCED_VARIATIONS';\nexport const FS_QA_ASSISTANT_SCRIPT_TAG_ID = 'FS_QA_ASSISTANT_SCRIPT_TAG_ID';\nexport const EMOTION_AI_UC_URL = 'https://uc-info.flagship.io/v1/segments/clients/{0}/visitors/{1}';\nexport const CDN_ACCOUNT_SETTINGS_URL = 'https://cdn.flagship.io/{0}/accountSettings.json';\nexport const VISITOR_EAI_SCORE_KEY = '{0}_EAIScore';\nexport const EMOTION_AI_EVENT_URL = 'https://events.flagship.io/emotionsai';\nexport const SEND_EAI_EVENT = 'sendEAIEvent';\nexport const SEND_EAI_EVENT_ERROR = 'Failed to send Emotion AI event: {0}';\nexport const SEND_EAI_EVENT_SUCCESS = 'Emotion AI event sent: {0}';\nexport const FETCH_EAI_SCORE = 'fetchEAIScore';\nexport const FETCH_EAI_SCORE_ERROR = 'visitor {0}, Failed to fetch EAIScore: {1}';\nexport const FETCH_EAI_SCORE_SUCCESS = 'visitor {0}, EAIScore fetched: {1}';\nexport const EAI_SCORE_CONTEXT_KEY = 'eai::eas';\nexport const CLIENT_CACHE_KEY = 'FS_CLIENT_VISITOR';\n/**\n * SDK version\n */\nexport const SDK_VERSION = version;\nexport const VISITOR_CACHE_VERSION = 1;\nexport const HIT_CACHE_VERSION = 1;\nexport const DEFAULT_HIT_CACHE_TIME_MS = 14400000;\nexport const MAX_ACTIVATE_HIT_PER_BATCH = 100;\n/**\n * Message Info\n */\nexport const SDK_STARTED_INFO = 'Flagship SDK (version: {0}) {1} in **{2}** mode';\nexport const FLAGSHIP_SDK = 'Flagship SDK';\nexport const EMIT_READY = 'ready';\nexport const EMIT_STATUS = 'status';\nexport const NO_BATCHING_WITH_CONTINUOUS_CACHING_STRATEGY = 3;\nexport const JS_DOC_URL = 'https://docs.developers.flagship.io/docs/js-v3';\nexport const PANIC_MODE_DOC_URL = 'https://docs.developers.flagship.io/docs/glossary#panic-mode';\n/**\n * Message Error\n */\nexport const INITIALIZATION_PARAM_ERROR = `Params 'envId' and 'apiKey' must not be null or empty.\n  Learn more: ${JS_DOC_URL}#initialization`;\nexport const ERROR = 'error';\nexport const CONTEXT_NULL_ERROR = 'Context must not to be null';\nexport const CONTEXT_PARAM_ERROR = \"params {0} must be a non null String, and 'value' must be one of the following types , Number, Boolean\";\nexport const GET_MODIFICATION_CAST_ERROR = 'Modification for key {0} has a different type. Default value is returned.';\nexport const GET_MODIFICATION_MISSING_ERROR = 'No modification for key {0}. Default value is returned.';\nexport const GET_MODIFICATION_KEY_ERROR = 'Key {0} must not be null. Default value is returned.';\nexport const ACTIVATE_MODIFICATION_KEY_ERROR = 'Key {0} must not be null, no activate will be sent.';\nexport const GET_MODIFICATION_ERROR = 'No modification for key {0}.';\nexport const GET_FLAG_ERROR = 'No flag for key {0}.';\nexport const ACTIVATE_MODIFICATION_ERROR = 'No modification for key {0}, no activate will be sent.';\nexport const DECISION_MANAGER_MISSING_ERROR = 'decisionManager must not be null.';\nexport const TRACKER_MANAGER_MISSING_ERROR = 'trackerManager must not be null.';\nexport const CURL_LIBRARY_IS_NOT_LOADED = 'curl library is not loaded';\nexport const TYPE_ERROR = '{0} must be a {1}';\nexport const TYPE_INTEGER_ERROR = 'value of {0} is not an {1}, it will be truncated to {1}';\nexport const VISITOR_ID_ERROR = 'visitorId must not be null or empty';\nexport const PANIC_MODE_ERROR = '{0} deactivated while panic mode is on.';\nexport const METHOD_DEACTIVATED_CONSENT_ERROR = 'Method {0} is deactivated for visitor {1} : visitor did not consent.';\nexport const METHOD_DEACTIVATED_ERROR = 'Visitor {0}, method {1} is deactivated while SDK status is: {2}.';\nexport const METHOD_DEACTIVATED_SEND_CONSENT_ERROR = 'Send consent hit is deactivated while SDK status is: {1}.';\nexport const TROUBLESHOOTING_HIT_ADDED_IN_QUEUE = 'The TROUBLESHOOTING HIT has been added to the pool queue : {0}';\nexport const ANALYTICS_HIT_ADDED_IN_QUEUE = 'The USAGE HIT has been added to the pool queue : {0}';\nexport const ACTIVATE_ADDED_IN_QUEUE = 'The ACTIVATE has been added to the pool queue : {0}';\nexport const HIT_ADDED_IN_QUEUE = 'The HIT has been added into the pool queue : {0}';\nexport const ADD_HIT = 'ADD HIT';\nexport const ADD_TROUBLESHOOTING_HIT = 'ADD TROUBLESHOOTING HIT';\nexport const ADD_USAGE_HIT = 'ADD USAGE HIT';\nexport const ADD_ACTIVATE = 'ADD ACTIVATE';\nexport const BATCH_SENT_SUCCESS = 'Batch hit has been sent : {0}';\nexport const TROUBLESHOOTING_SENT_SUCCESS = 'Troubleshooting hit has been sent : {0}';\nexport const ANALYTICS_HIT_SENT_SUCCESS = 'Usage hit has been sent : {0}';\nexport const ACTIVATE_SENT_SUCCESS = 'Activate hit has been sent : {0}';\nexport const SEND_BATCH = 'SEND BATCH';\nexport const SEND_TROUBLESHOOTING = 'SEND TROUBLESHOOTING';\nexport const SEND_USAGE_HIT = 'SEND USAGE HIT';\nexport const SEND_ACTIVATE = 'SEND ACTIVATE';\nexport const SEND_SEGMENT_HIT = 'SEND SEGMENT HIT';\nexport const SEND_HIT = 'SEND HIT';\nexport const EVENT_SUFFIX = 'events';\nexport const FETCH_FLAGS_BUFFERING_MESSAGE = 'Visitor {0}, fetchFlags has been ignored and will continue to be ignored for the next {1}ms, this delay can be changed with `fetchFlagsBufferingTime` option in the SDK config';\nexport const VISITOR_SYNC_FLAGS_MESSAGE = 'without calling `fetchFlags` method afterwards. So, the value of the flag `{1}` might be outdated';\nexport const NEW_VISITOR_NOT_READY = `You can't create a new visitor without first calling the \"Flagship.start\" method.\nLearn more: ${JS_DOC_URL}#initialization\n`;\nexport const LOOKUP_HITS_JSON_OBJECT_ERROR = 'JSON DATA must fit the type HitCacheDTO';\nexport const ACTIVATE_BATCH_LENGTH = 5;\n// Process\nexport const PROCESS = 'process';\nexport const PROCESS_INITIALIZATION = 'INITIALIZATION';\nexport const PROCESS_UPDATE_CONTEXT = 'UPDATE CONTEXT';\nexport const PROCESS_GET_MODIFICATION = 'GET MODIFICATION';\nexport const PROCESS_GET_MODIFICATION_INFO = 'GET MODIFICATION INFO';\nexport const PROCESS_NEW_VISITOR = 'NEW VISITOR';\nexport const PROCESS_ACTIVE_MODIFICATION = 'ACTIVE MODIFICATION';\nexport const PROCESS_SYNCHRONIZED_MODIFICATION = 'SYNCHRONIZED MODIFICATION';\nexport const PROCESS_SEND_HIT = 'ADD HIT';\nexport const PROCESS_SEND_ACTIVATE = 'SEND ACTIVATE';\nexport const PROCESS_GET_CAMPAIGNS = 'GET CAMPAIGNS';\nexport const PROCESS_GET_ALL_MODIFICATION = 'GET ALL MODIFICATIONS';\nexport const PROCESS_MODIFICATIONS_FOR_CAMPAIGN = 'GET MODIFICATION FOR CAMPAIGN';\nexport const PROCESS_CACHE_HIT = 'CACHE HIT';\nexport const PROCESS_FLUSH_HIT = 'FLUSH HIT';\nexport const PROCESS_LOOKUP_HIT = 'LOOKUP HIT';\n// Api items\nexport const BATCH = 'batch';\nexport const CUSTOMER_ENV_ID_API_ITEM = 'cid';\nexport const CUSTOMER_ENV_ID_API_ACTIVATE = 'cid';\nexport const CUSTOMER_UID = 'cuid';\nexport const ANONYMOUS_ID = 'aid';\nexport const VISITOR_ID_API_ITEM = 'vid';\nexport const VARIATION_GROUP_ID_API_ITEM = 'caid';\nexport const VARIATION_GROUP_ID_API_ITEM_ACTIVATE = 'caid';\nexport const VISITOR_CONSENT = 'vc';\nexport const CAMPAIGN_ID = 'caid';\nexport const VARIATION_ID_API_ITEM = 'vaid';\nexport const DS_API_ITEM = 'ds';\nexport const T_API_ITEM = 't';\nexport const QT_API_ITEM = 'qt';\nexport const QA_MODE_API_ITEM = 'qa';\nexport const DL_API_ITEM = 'dl';\nexport const SL_ITEM = 'sl';\nexport const SDK_APP = 'APP';\nexport const TID_API_ITEM = 'tid';\nexport const TA_API_ITEM = 'ta';\nexport const TT_API_ITEM = 'tt';\nexport const TC_API_ITEM = 'tc';\nexport const TCC_API_ITEM = 'tcc';\nexport const ICN_API_ITEM = 'icn';\nexport const SM_API_ITEM = 'sm';\nexport const PM_API_ITEM = 'pm';\nexport const TR_API_ITEM = 'tr';\nexport const TS_API_ITEM = 'ts';\nexport const IN_API_ITEM = 'in';\nexport const IC_API_ITEM = 'ic';\nexport const IP_API_ITEM = 'ip';\nexport const IQ_API_ITEM = 'iq';\nexport const IV_API_ITEM = 'iv';\nexport const S_API_ITEM = 's';\nexport const EVENT_CATEGORY_API_ITEM = 'ec';\nexport const EVENT_ACTION_API_ITEM = 'ea';\nexport const EVENT_LABEL_API_ITEM = 'el';\nexport const EVENT_VALUE_API_ITEM = 'ev';\nexport const USER_IP_API_ITEM = 'uip';\nexport const SCREEN_RESOLUTION_API_ITEM = 'sr';\nexport const USER_LANGUAGE = 'ul';\nexport const SESSION_NUMBER = 'sn';\nexport const HEADER_X_API_KEY = 'x-api-key';\nexport const HEADER_X_ENV_ID = 'x-env-id';\nexport const HEADER_CONTENT_TYPE = 'Content-Type';\nexport const HEADER_X_SDK_CLIENT = 'x-sdk-client';\nexport const HEADER_X_SDK_VERSION = 'x-sdk-version';\nexport const HEADER_APPLICATION_JSON = 'application/json';\n// Log\nexport const INITIALIZATION_STARTING = 'Flagship SDK version {0} is starting in {1} mode with config {2}';\nexport const BUCKETING_POOLING_STARTED = 'Bucketing polling process has been started';\nexport const BUCKETING_POOLING_STOPPED = 'Bucketing polling process has been stopped';\nexport const PROCESS_BUCKETING = 'BUCKETING';\nexport const POLLING_EVENT_200 = 'Polling event with code status 200 : {0}';\nexport const POLLING_EVENT_300 = 'Polling event with code status 304';\nexport const POLLING_EVENT_FAILED = 'Polling event failed with error';\nexport const PROCESS_SDK_STATUS = 'SDK STATUS';\nexport const SDK_STATUS_CHANGED = 'SDK status has changed:  {0}';\nexport const SAVE_VISITOR_INSTANCE = 'Visitor {0} has been saved in SDK instance';\nexport const VISITOR_CREATED = 'Visitor {0} has been created with context {1}, isAuthenticated:{2} and hasConsented {3}';\nexport const VISITOR_PROFILE_LOADED = 'Visitor profile has been loaded {0}';\nexport const VISITOR_ID_FROM_AB_TASTY_TAG = \"The visitor ID '{0}' has been retrieved from ABTasty tag\";\nexport const VISITOR_ID_GENERATED = 'Visitor identifier is empty. A UUID {0} has been generated.';\nexport const PREDEFINED_CONTEXT_LOADED = 'Predefined Context have been loaded {0}';\nexport const CONTEXT_KEY_ERROR = `Visitor {0}, the key '{1}' must be a non null String.\nLearn more: ${JS_DOC_URL}#updating-the-visitor-context`;\nexport const CONTEXT_VALUE_ERROR = `Visitor {0}, 'value' for key '{1}[], must be one of the following types : String, Number, Boolean\nLearn more: ${JS_DOC_URL}#updating-the-visitor-context`;\nexport const PREDEFINED_CONTEXT_TYPE_ERROR = `visitor {0}, Predefined Context {0} must be of type {1}\nLearn more: ${JS_DOC_URL}#predefined-user-context-keys-`;\nexport const CONTEXT_KEY_VALUE_UPDATE = 'visitor `{0}`, context have been updated: key {1}, value {2}, Context {3}';\nexport const CONTEXT_OBJET_PARAM_UPDATE = 'visitor `{0}`, context have been updated: key/value {1}, Context {2}';\nexport const CLEAR_CONTEXT = 'visitor `{0}`, context has been cleared cleared `{1}`';\nexport const PROCESS_CLEAR_CONTEXT = 'CLEAR_CONTEXT';\nexport const CONSENT_CHANGED = 'Visitor `{0}` consent has been changed : {1}';\nexport const PROCESS_SET_CONSENT = 'SET_CONSENT';\nexport const FETCH_CAMPAIGNS_SUCCESS = 'Visitor {0}, anonymousId {1} with context {2} has just fetched campaigns {3} in {4} ms';\nexport const FETCH_CAMPAIGNS_FROM_CACHE = 'Visitor {0}, anonymousId {1} with context {2} has just fetched campaigns from cache {3} in {4} ms';\nexport const FETCH_FLAGS_FROM_CAMPAIGNS = 'Visitor {0}, anonymousId {1} with context {2} has just fetched flags {3} from Campaigns';\nexport const FETCH_FLAGS_STARTED = 'visitor `{0}` fetchFlags process is started';\nexport const FETCH_FLAGS_PANIC_MODE = 'Panic mode is enabled : all feature are disabled except fetchFlags.';\nexport const PROCESS_FETCHING_FLAGS = 'FETCH_FLAGS';\nexport const GET_FLAG_MISSING_ERROR = 'For the visitor \"{0}\", no flags were found with the key \"{1}\". Therefore, the default value \"{2}\" has been returned.';\nexport const GET_FLAG_NOT_FOUND = 'For the visitor \"{0}\", no flags were found with the key \"{1}\". Therefore, an empty flag has been returned.';\nexport const FETCH_FLAGS_MISSING = 'Visitor {0} has {1} without calling fetchFlags method, ';\nexport const FLAG_VALUE = 'FLAG_VALUE';\nexport const GET_FLAG = 'GET_FLAG';\nexport const GET_FLAG_CAST_ERROR = 'For the visitor \"{0}\", the flag with key \"{1}\" has a different type compared to the default value. Therefore, the default value \"{2}\" has been returned.';\nexport const GET_FLAG_VALUE = 'Visitor {0}, Flag for key {1} returns value {2}';\nexport const USER_EXPOSED_FLAG_ERROR = 'For the visitor \"{0}\", no flags were found with the key \"{1}\". As a result, user exposure will not be sent.';\nexport const VISITOR_EXPOSED_VALUE_NOT_CALLED = 'For the visitor `{0}`,assuming the getValue() method has not previously been invoked for the flag `{0}`. Therefore, the exposure is canceled';\nexport const FLAG_VISITOR_EXPOSED = 'FLAG_VISITOR_EXPOSED';\nexport const USER_EXPOSED_CAST_ERROR = 'For the visitor `{0}, the flag with the key `{0}` has a different type compared to the default value. Therefore, the exposure is interrupted';\nexport const GET_METADATA_CAST_ERROR = 'Visitor {0}, Flag for key {1} has a different type with default value: Empty metadata object is returned {2}';\nexport const FLAG_METADATA = 'FLAG_METADATA';\nexport const NO_FLAG_METADATA = 'Visitor {0}, No Flags found for key {1}:  Empty metadata object is returned';\nexport const METADATA_SDK_NOT_READY = `Visitor {0}, Flag for key {1} Method Flag.metadata is deactivated while SDK status is NOT_READY: Empty metadata object is returned {2}\nLearn more: ${JS_DOC_URL}#getting-flags-campaigns-metadata`;\nexport const METADATA_PANIC_MODE = `Visitor {0}, Flag for key {1} Method Flag.metadata is deactivated while SDK status is PANIC: Empty metadata object is returned {2}\nLearn more: ${PANIC_MODE_DOC_URL}`;\nexport const AUTHENTICATE = 'AUTHENTICATE';\nexport const VISITOR_AUTHENTICATE = 'The visitor is authenticated with new visitor ID {0} anonymous ID {1}';\nexport const VISITOR_ALREADY_AUTHENTICATE = 'The visitor is already authenticated with visitor ID {0}';\nexport const METHOD_DEACTIVATED_BUCKETING_ERROR = 'Visitor {0}, Method {1} is deactivated on Bucketing mode';\nexport const VISITOR_AUTHENTICATE_VISITOR_ID_ERROR = `Visitor {0}, visitorId must not be null or empty\nLearn more: ${JS_DOC_URL}#authenticate`;\nexport const VISITOR_UNAUTHENTICATE = 'The visitor is unauthenticated with visitor ID {0}';\nexport const UNAUTHENTICATE = 'UNAUTHENTICATE';\nexport const FLAGSHIP_VISITOR_NOT_AUTHENTICATE = 'Visitor {0} is not authenticated yet';\nexport const ALLOCATION = 'ALLOCATION';\nexport const BUCKETING_VARIATION_CACHE = 'Visitor {0}, Variation {1} selected from cache.';\nexport const BUCKETING_NEW_ALLOCATION = 'Visitor {0}, Variation {1} selected with allocation {2}.';\nexport const LOOKUP_VISITOR_JSON_OBJECT_ERROR = `lookupVisitor method has loaded a bad format version ({0}) for visitor {1}.\nLearn more: ${JS_DOC_URL}#managing-visitor-cache`;\nexport const PROCESS_CACHE = 'CACHE';\nexport const VISITOR_CACHE_ERROR = 'visitor {0}. {1} threw an exception {2}';\nexport const HIT_CACHE_ERROR = '{0} threw an exception {1}';\nexport const VISITOR_CACHE_LOADED = 'Visitor {0}, visitor cache has been loaded from database: {1}';\nexport const VISITOR_CACHE_SAVED = 'Visitor {0}, visitor cache has been saved into database : {0}';\nexport const VISITOR_CACHE_FLUSHED = 'Visitor {0}, visitor cache has been flushed from database.';\nexport const HIT_CACHE_LOADED = 'Hits cache has been loaded from database: {0}';\nexport const HIT_CACHE_SAVED = 'Hit cache has been saved into database : {0}';\nexport const HIT_DATA_FLUSHED = 'The following hit keys have been flushed from database : {0}';\nexport const ALL_HITS_FLUSHED = 'All hits cache has been flushed from database';\nexport const BATCH_LOOP_STARTED = 'The Batch Loop has been started with a time interval of {0} ms';\nexport const TRACKING_MANAGER = 'TRACKING_MANAGER';\nexport const BATCH_LOOP_STOPPED = 'The Batch Loop has been stopped';\nexport const TRACKING_MANAGER_ERROR = '{0} Unexpected Error occurred {1}';\nexport const HIT_SENT_SUCCESS = '{0} has been sent : {1}';\nexport const ACTIVATE_HIT = 'ACTIVATE HIT';\nexport const BATCH_HIT = 'BATCH HIT';\nexport const DIRECT_HIT = 'HIT';\nexport const GET_THIRD_PARTY_SEGMENT = 'GET_THIRD_PARTY_SEGMENT';\nexport const CONSENT_NOT_SPECIFY_WARNING = 'Consent has not been specified. By default, consent is set to false, which may result in some features being deactivated.';\nexport const ACTION_TRACKING = 'Action Tracking';\nexport const ACTION_TRACKING_HIT_RECEIVED = 'Hit received: {0}';\nexport const ACTION_TRACKING_INVALID_HIT = 'Invalid hit data: {0}';\nexport const ACTION_TRACKING_INVALID_NONCE = 'Invalid nonce: {0}';\nexport const ACTION_TRACKING_SENDING_HIT = 'Sending hit: {0}';\nexport const ACTION_TRACKING_SENDING_HIT_ERROR = 'Failed to send hit: {0}';\nexport const ACTION_TRACKING_DISPATCHED = 'action tracking hits have been dispatched {0}';\nexport const TRUSTED_QA_ORIGINS = [\n    'https://local-qa-assistant.abtasty.com:5000',\n    'https://staging-qa-assistant.abtasty.com',\n    'https://qa-assistant.abtasty.com',\n    'https://qa-assistant.flagship.io',\n    'https://local-qa-assistant.flagship.io:5000',\n    'https://staging-qa-assistant.flagship.io'\n];\n","import { EventEmitter } from '../depsNode.native';\nimport { EMIT_READY } from '../enum/index';\n/**\n * The `Visitor` class represents a unique user within your application. It aids in\n * managing the visitor's data and fetching the corresponding flags for the visitor\n * from the [Flagship platform](https://app.flagship.io/login) .\n */\nexport class Visitor extends EventEmitter {\n    visitorDelegate;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    _onReady;\n    constructor(visitorDelegate) {\n        super();\n        this.visitorDelegate = visitorDelegate;\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        this._onReady = (err) => {\n            this.emit(EMIT_READY, err);\n        };\n        this.visitorDelegate.on(EMIT_READY, this._onReady);\n        const instance = this;\n        instance.sendEaiVisitorEvent = (event) => {\n            this.visitorDelegate.sendEaiVisitorEvent(event);\n        };\n        instance.sendEaiPageView = (pageView) => {\n            this.visitorDelegate.sendEaiPageView(pageView);\n        };\n        instance.onEAICollectStatusChange = (callback) => {\n            this.visitorDelegate.onEAICollectStatusChange(callback);\n        };\n    }\n    /**\n     * @inheritdoc\n     */\n    get visitorId() {\n        return this.visitorDelegate.visitorId;\n    }\n    /**\n     * @inheritdoc\n     */\n    set visitorId(v) {\n        this.visitorDelegate.visitorId = v;\n    }\n    /**\n     * @inheritdoc\n     */\n    get anonymousId() {\n        return this.visitorDelegate.anonymousId;\n    }\n    /**\n     * @inheritdoc\n     */\n    get config() {\n        return this.visitorDelegate.config;\n    }\n    /**\n     * @inheritdoc\n     */\n    get context() {\n        return this.visitorDelegate.context;\n    }\n    /**\n     * @inheritdoc\n     */\n    get flagsStatus() {\n        return this.visitorDelegate.flagsStatus;\n    }\n    /**\n     * @inheritdoc\n     */\n    get hasConsented() {\n        return this.visitorDelegate.hasConsented;\n    }\n    /**\n     * @inheritdoc\n     */\n    setConsent(hasConsented) {\n        this.visitorDelegate.setConsent(hasConsented);\n    }\n    updateContext(context, value) {\n        this.visitorDelegate.updateContext(context, value);\n    }\n    /**\n     * @inheritdoc\n     */\n    clearContext() {\n        this.visitorDelegate.clearContext();\n    }\n    /**\n     * @inheritdoc\n     */\n    getFlag(key) {\n        return this.visitorDelegate.getFlag(key);\n    }\n    /**\n     * @inheritdoc\n     */\n    getFlags() {\n        return this.visitorDelegate.getFlags();\n    }\n    /**\n     * @inheritdoc\n     */\n    fetchFlags() {\n        return this.visitorDelegate.fetchFlags();\n    }\n    sendHit(hit) {\n        return this.visitorDelegate.sendHit(hit);\n    }\n    sendHits(hits) {\n        return this.visitorDelegate.sendHits(hits);\n    }\n    /**\n     * @inheritdoc\n     */\n    authenticate(visitorId) {\n        this.visitorDelegate.authenticate(visitorId);\n    }\n    /**\n     * @inheritdoc\n     */\n    unauthenticate() {\n        this.visitorDelegate.unauthenticate();\n    }\n    /**\n     * @inheritdoc\n     */\n    collectEAIEventsAsync(...args) {\n        let currentPage;\n        if (args.length > 0) {\n            currentPage = args[0];\n        }\n        return this.visitorDelegate.collectEAIEventsAsync(currentPage);\n    }\n    /**\n     * @inheritdoc\n     */\n    cleanup() {\n        this.visitorDelegate.cleanup();\n        this.visitorDelegate.off(EMIT_READY, this._onReady);\n    }\n}\n","/**\n * Enum representing the status of the Flagship SDK.\n */\nexport var FSSdkStatus;\n(function (FSSdkStatus) {\n    /**\n     * It is the default initial status. This status remains until the sdk has been initialized successfully.\n     */\n    FSSdkStatus[FSSdkStatus[\"SDK_NOT_INITIALIZED\"] = 0] = \"SDK_NOT_INITIALIZED\";\n    /**\n     * The SDK is currently initializing.\n     */\n    FSSdkStatus[FSSdkStatus[\"SDK_INITIALIZING\"] = 1] = \"SDK_INITIALIZING\";\n    /**\n     * Flagship SDK is ready but is running in Panic mode: All features are disabled except the one which refresh this status.\n     */\n    FSSdkStatus[FSSdkStatus[\"SDK_PANIC\"] = 2] = \"SDK_PANIC\";\n    /**\n     * The Initialization is done, and Flagship SDK is ready to use.\n     */\n    FSSdkStatus[FSSdkStatus[\"SDK_INITIALIZED\"] = 3] = \"SDK_INITIALIZED\";\n})(FSSdkStatus || (FSSdkStatus = {}));\n","export var DecisionMode;\n(function (DecisionMode) {\n    /**\n     *   /**\n     * Flagship SDK mode decision api\n     */\n    DecisionMode[\"DECISION_API\"] = \"DECISION-API\";\n    /**\n     * Flagship SDK mode bucketing\n     */\n    DecisionMode[\"BUCKETING\"] = \"BUCKETING\";\n    DecisionMode[\"BUCKETING_EDGE\"] = \"BUCKETING_EDGE\";\n})(DecisionMode || (DecisionMode = {}));\n","export var LogLevel;\n(function (LogLevel) {\n    /**\n       * NONE = 0: Logging will be disabled.\n       */\n    LogLevel[LogLevel[\"NONE\"] = 0] = \"NONE\";\n    /**\n       * EMERGENCY = 1: Only emergencies will be logged.\n       */\n    LogLevel[LogLevel[\"EMERGENCY\"] = 1] = \"EMERGENCY\";\n    /**\n       * ALERT = 2: Only alerts and above will be logged.\n       */\n    LogLevel[LogLevel[\"ALERT\"] = 2] = \"ALERT\";\n    /**\n       * CRITICAL = 3: Only critical and above will be logged.\n       */\n    LogLevel[LogLevel[\"CRITICAL\"] = 3] = \"CRITICAL\";\n    /**\n       * ERROR = 4: Only errors and above will be logged.\n       */\n    LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\n    /**\n       * WARNING = 5: Only warnings and above will be logged.\n       */\n    LogLevel[LogLevel[\"WARNING\"] = 5] = \"WARNING\";\n    /**\n       * NOTICE = 6: Only notices and above will be logged.\n       */\n    LogLevel[LogLevel[\"NOTICE\"] = 6] = \"NOTICE\";\n    /**\n       * INFO = 7: Only info logs and above will be logged.\n       */\n    LogLevel[LogLevel[\"INFO\"] = 7] = \"INFO\";\n    /**\n       * DEBUG = 8: Only debug logs and above will be logged.\n       */\n    LogLevel[LogLevel[\"DEBUG\"] = 8] = \"DEBUG\";\n    /**\n       * ALL = 9: All logs will be logged.\n       */\n    LogLevel[LogLevel[\"ALL\"] = 9] = \"ALL\";\n})(LogLevel || (LogLevel = {}));\n","/**\n * Enum representing the reasons for fetching Flags.\n */\nexport var FSFetchReasons;\n(function (FSFetchReasons) {\n    /**\n     * Indicates that a context has been updated or changed.\n     */\n    FSFetchReasons[\"UPDATE_CONTEXT\"] = \"UPDATE_CONTEXT\";\n    /**\n     * Indicates that the XPC method 'authenticate' has been called.\n     */\n    FSFetchReasons[\"AUTHENTICATE\"] = \"AUTHENTICATE\";\n    /**\n     * Indicates that the XPC method 'unauthenticate' has been called.\n     */\n    FSFetchReasons[\"UNAUTHENTICATE\"] = \"UNAUTHENTICATE\";\n    /**\n     * Indicates that fetching flags has failed.\n     */\n    FSFetchReasons[\"FLAGS_FETCHING_ERROR\"] = \"FLAGS_FETCHING_ERROR\";\n    /**\n     * Indicates that flags have been fetched from the cache.\n     */\n    FSFetchReasons[\"FLAGS_FETCHED_FROM_CACHE\"] = \"FLAGS_FETCHED_FROM_CACHE\";\n    /**\n     * Indicates that the visitor has been created.\n     */\n    FSFetchReasons[\"FLAGS_NEVER_FETCHED\"] = \"FLAGS_NEVER_FETCHED\";\n    /**\n     * Indicates that there is no specific reason for fetching flags.\n     */\n    FSFetchReasons[\"NONE\"] = \"NONE\";\n})(FSFetchReasons || (FSFetchReasons = {}));\n","import { FSFetchReasons } from '../enum/FSFetchReasons';\nimport { FLAGSHIP_SDK, LogLevel, VISITOR_SYNC_FLAGS_MESSAGE } from '../enum/index';\n/**\n * Return a formatted string\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sprintf(format, ...value) {\n    let formatted = format;\n    for (let i = 0; i < value.length; i++) {\n        const item = value[i];\n        const element = typeof item === 'string' ? item : JSON.stringify(item instanceof Map ? Array.from(item.values()) : item);\n        formatted = formatted.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), element);\n    }\n    return formatted;\n}\nexport function logErrorSprintf(config, tag, message, ...arg) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.ERROR) {\n        return;\n    }\n    const customMessage = sprintf(message, ...arg);\n    logError(config, customMessage, tag);\n}\nexport function logError(config, message, tag) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.ERROR) {\n        return;\n    }\n    if (typeof config.onLog === 'function') {\n        config.onLog(LogLevel.ERROR, tag, message);\n    }\n    if (config.logManager && typeof config.logManager.error === 'function') {\n        config.logManager.error(message, tag);\n    }\n}\nexport function logWarningSprintf(config, tag, message, ...arg) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.WARNING) {\n        return;\n    }\n    const customMessage = sprintf(message, ...arg);\n    logWarning(config, customMessage, tag);\n}\nexport function logWarning(config, message, tag) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.WARNING) {\n        return;\n    }\n    if (typeof config.onLog === 'function') {\n        config.onLog(LogLevel.WARNING, tag, message);\n    }\n    if (config.logManager && typeof config.logManager.warning === 'function') {\n        config.logManager.warning(message, tag);\n    }\n}\nexport function logInfoSprintf(config, tag, message, ...arg) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.INFO) {\n        return;\n    }\n    const customMessage = sprintf(message, ...arg);\n    logInfo(config, customMessage, tag);\n}\nexport function logInfo(config, message, tag) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.INFO) {\n        return;\n    }\n    if (typeof config.onLog === 'function') {\n        config.onLog(LogLevel.INFO, tag, message);\n    }\n    if (config.logManager && typeof config.logManager.info === 'function') {\n        config.logManager.info(message, tag);\n    }\n}\nexport function logDebugSprintf(config, tag, message, ...arg) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.DEBUG) {\n        return;\n    }\n    const customMessage = sprintf(message, ...arg);\n    logDebug(config, customMessage, tag);\n}\nexport function logDebug(config, message, tag) {\n    if (!config || !config.logLevel || config.logLevel < LogLevel.DEBUG) {\n        return;\n    }\n    if (typeof config.onLog === 'function') {\n        config.onLog(LogLevel.DEBUG, tag, message);\n    }\n    if (config.logManager && typeof config.logManager.debug === 'function') {\n        config.logManager.debug(message, tag);\n    }\n}\nexport function isBrowser() {\n    return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n}\nexport function hasSameType(flagValue, defaultValue) {\n    if (typeof flagValue !== typeof defaultValue) {\n        return false;\n    }\n    if (typeof flagValue === 'object' && typeof defaultValue === 'object' &&\n        Array.isArray(flagValue) !== Array.isArray(defaultValue)) {\n        return false;\n    }\n    return true;\n}\nexport function uuidV4() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (char) {\n        const rand = Math.random() * 16 | 0;\n        const value = char === 'x' ? rand : (rand & 0x3 | 0x8);\n        return value.toString(16);\n    });\n}\nexport function errorFormat(message, errorData) {\n    return JSON.stringify({\n        message,\n        data: errorData\n    });\n}\nexport function visitorFlagSyncStatusMessage(reason) {\n    let message = '';\n    switch (reason) {\n        case FSFetchReasons.FLAGS_NEVER_FETCHED:\n            message = `Visitor \\`{0}\\` has been created ${VISITOR_SYNC_FLAGS_MESSAGE}`;\n            break;\n        case FSFetchReasons.UPDATE_CONTEXT:\n            message = `Visitor context for visitor \\`{0}\\` has been updated ${VISITOR_SYNC_FLAGS_MESSAGE}`;\n            break;\n        case FSFetchReasons.AUTHENTICATE:\n            message = `Visitor \\`{0}\\` has been authenticated ${VISITOR_SYNC_FLAGS_MESSAGE}`;\n            break;\n        case FSFetchReasons.UNAUTHENTICATE:\n            message = `Visitor \\`{0}\\` has been unauthenticated ${VISITOR_SYNC_FLAGS_MESSAGE}`;\n            break;\n        case FSFetchReasons.FLAGS_FETCHING_ERROR:\n            message = 'There was an error while fetching flags for visitor `{0}`. So the value of the flag `{1}` may be outdated\"';\n            break;\n        case FSFetchReasons.FLAGS_FETCHED_FROM_CACHE:\n            message = 'Flags for visitor `{0}` have been fetched from cache';\n            break;\n        default:\n            break;\n    }\n    return message;\n}\nexport function valueToHex(value) {\n    const jsonString = JSON.stringify(value);\n    const hex = Array.from(jsonString, char => char.charCodeAt(0).toString(16)).join('');\n    return hex;\n}\nexport function hexToValue(hex, config) {\n    if (typeof hex !== 'string') {\n        logErrorSprintf(config, 'hexToValue', 'Invalid hex string: {0}', hex);\n        return null;\n    }\n    let jsonString = '';\n    for (let i = 0; i < hex.length; i += 2) {\n        const hexChar = hex.slice(i, i + 2);\n        const charCode = parseInt(hexChar, 16);\n        if (isNaN(charCode)) {\n            logErrorSprintf(config, 'hexToValue', 'Invalid hex character: {0}', hexChar);\n            return null;\n        }\n        jsonString += String.fromCharCode(charCode);\n    }\n    try {\n        const value = JSON.parse(jsonString);\n        return value;\n    }\n    catch (error) {\n        logErrorSprintf(config, 'hexToValue', 'Error while parsing JSON: {0}', error);\n        return null;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function deepEqual(obj1, obj2) {\n    if (obj1 === obj2)\n        return true;\n    if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 == null || obj2 == null) {\n        return false;\n    }\n    const keys1 = Object.keys(obj1);\n    const keys2 = Object.keys(obj2);\n    if (keys1.length !== keys2.length)\n        return false;\n    for (const key of keys1) {\n        if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function onDomReady(callback) {\n    if (__fsWebpackIsBrowser__) {\n        if (!isBrowser()) {\n            return false;\n        }\n        const isDomReady = document.readyState === 'interactive' || document.readyState === 'complete';\n        if (typeof callback !== 'function') {\n            return isDomReady;\n        }\n        if (isDomReady) {\n            callback();\n        }\n        else {\n            const domContentLoadedHandler = () => {\n                document.removeEventListener('DOMContentLoaded', domContentLoadedHandler);\n                callback();\n            };\n            document.addEventListener('DOMContentLoaded', domContentLoadedHandler);\n        }\n        return isDomReady;\n    }\n    return false;\n}\nexport function formatLogOutput(level, message, tag) {\n    const now = new Date();\n    const formatTwoDigits = (value) => {\n        return value.toString().padStart(2, '0');\n    };\n    const formatMilliseconds = (value) => {\n        return value.toString().padStart(3, '0');\n    };\n    const colorCodes = {\n        [LogLevel.EMERGENCY]: '\\x1b[1;37;41m',\n        [LogLevel.ALERT]: '\\x1b[1;37;45m',\n        [LogLevel.CRITICAL]: '\\x1b[1;37;41m',\n        [LogLevel.ERROR]: '\\x1b[1;37;41m',\n        [LogLevel.WARNING]: '\\x1b[33;1m',\n        [LogLevel.NOTICE]: '\\x1b[36;1m',\n        [LogLevel.INFO]: '\\x1b[32;1m',\n        [LogLevel.DEBUG]: '\\x1b[90;1m',\n        [LogLevel.NONE]: '',\n        [LogLevel.ALL]: '\\x1b[90;1m'\n    };\n    const resetColor = '\\x1b[0m';\n    const colorCode = colorCodes[level] || '';\n    const year = now.getFullYear();\n    const month = formatTwoDigits(now.getMonth() + 1);\n    const day = formatTwoDigits(now.getDate());\n    const hours = formatTwoDigits(now.getHours());\n    const minutes = formatTwoDigits(now.getMinutes());\n    const seconds = formatTwoDigits(now.getSeconds());\n    const milliseconds = formatMilliseconds(now.getMilliseconds());\n    const timestamp = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n    const levelName = LogLevel[level].padEnd(2);\n    return `${colorCode}[${timestamp}] [${FLAGSHIP_SDK}] [${levelName}] [${tag}] ${message}${resetColor}`;\n}\n","/**\n * Define the strategy that will be used for hit caching\n */\nexport var CacheStrategy;\n(function (CacheStrategy) {\n    /**\n     * When a hit is emitted, it will be first cached in database using IHitCacheImplementation and added into the pool, then after batching and sending, it will also be flushed from database using IHitCacheImplementation.\n     *\n     * Note: the SDK has a default cache implementation for browser using localStorage\n     */\n    CacheStrategy[CacheStrategy[\"CONTINUOUS_CACHING\"] = 0] = \"CONTINUOUS_CACHING\";\n    /**\n     * When a hit is emitted, it will be added into the pool, then after batching and sending, all database hits will be flushed, then the entire pool will be cached using IHitCacheImplementation for both actions.\n     */\n    CacheStrategy[CacheStrategy[\"PERIODIC_CACHING\"] = 1] = \"PERIODIC_CACHING\";\n})(CacheStrategy || (CacheStrategy = {}));\n","import { CacheStrategy, DEFAULT_SERVER_TIME_INTERVAL, DEFAULT_BROWSER_TIME_INTERVAL, DEFAULT_BROWSER_POOL_MAX_SIZE, DEFAULT_SERVER_POOL_MAX_SIZE } from '../enum/index';\nimport { isBrowser } from '../utils/utils';\nexport class TrackingManagerConfig {\n    _batchIntervals;\n    _poolMaxSize;\n    _batchStrategy;\n    constructor(param) {\n        this.batchIntervals = param?.batchIntervals;\n        this.poolMaxSize = param?.poolMaxSize;\n        this._batchStrategy = this.getCacheStrategy(param?.cacheStrategy);\n    }\n    getCacheStrategy(cacheStrategy) {\n        if (typeof cacheStrategy === 'number') {\n            return cacheStrategy;\n        }\n        return (isBrowser() ? CacheStrategy.CONTINUOUS_CACHING : CacheStrategy.PERIODIC_CACHING);\n    }\n    get batchIntervals() {\n        return this._batchIntervals;\n    }\n    set batchIntervals(v) {\n        if (typeof v !== 'number' || v < 0 || v > 10800) {\n            v = isBrowser() ? DEFAULT_BROWSER_TIME_INTERVAL : DEFAULT_SERVER_TIME_INTERVAL;\n        }\n        this._batchIntervals = v;\n    }\n    get poolMaxSize() {\n        return this._poolMaxSize;\n    }\n    set poolMaxSize(v) {\n        if (typeof v !== 'number' || v < 5) {\n            v = isBrowser() ? DEFAULT_BROWSER_POOL_MAX_SIZE : DEFAULT_SERVER_POOL_MAX_SIZE;\n        }\n        this._poolMaxSize = v;\n    }\n    get cacheStrategy() {\n        return this._batchStrategy;\n    }\n}\n","import { BASE_API_URL, DEFAULT_DEDUPLICATION_TIME, FS_IS_QA_MODE_ENABLED, FETCH_FLAG_BUFFERING_DEFAULT_TIME, LogLevel, REQUEST_TIME_OUT, SDK_INFO, TYPE_ERROR } from '../enum/index';\nimport { errorFormat, isBrowser, logError, sprintf } from '../utils/utils';\nimport { TrackingManagerConfig } from './TrackingManagerConfig';\nimport { version as SDK_VERSION } from '../sdkVersion';\nimport { DecisionMode } from './DecisionMode';\nexport const statusChangeError = 'statusChangedCallback must be a function';\nexport class FlagshipConfig {\n    _envId;\n    _apiKey;\n    _decisionMode;\n    _timeout;\n    _logLevel;\n    _onSdkStatusChanged;\n    _logManager;\n    _fetchNow;\n    _pollingInterval;\n    _onBucketingUpdated;\n    _reuseVisitorIds;\n    _initialBucketing;\n    _decisionApiUrl;\n    _hitDeduplicationTime;\n    _visitorCacheImplementation;\n    _hitCacheImplementation;\n    _disableCache;\n    _trackingManagerConfig;\n    _onVisitorExposed;\n    _fetchThirdPartyData;\n    _nextFetchConfig;\n    _fetchFlagsBufferingTime;\n    _disableDeveloperUsageTracking;\n    _onLog;\n    _isQAModeEnabled;\n    _batchActivateHits = false;\n    get batchActivateHits() {\n        return this._batchActivateHits;\n    }\n    set batchActivateHits(v) {\n        this._batchActivateHits = v;\n    }\n    get isQAModeEnabled() {\n        return this._isQAModeEnabled;\n    }\n    set isQAModeEnabled(v) {\n        this._isQAModeEnabled = v;\n    }\n    _enableAnalytics;\n    get disableDeveloperUsageTracking() {\n        return this._disableDeveloperUsageTracking;\n    }\n    set disableDeveloperUsageTracking(v) {\n        this._disableDeveloperUsageTracking = v;\n    }\n    get fetchFlagsBufferingTime() {\n        return this._fetchFlagsBufferingTime;\n    }\n    set fetchFlagsBufferingTime(v) {\n        this._fetchFlagsBufferingTime = v;\n    }\n    get nextFetchConfig() {\n        return this._nextFetchConfig;\n    }\n    set nextFetchConfig(v) {\n        this._nextFetchConfig = v;\n    }\n    get fetchThirdPartyData() {\n        return this._fetchThirdPartyData;\n    }\n    set fetchThirdPartyData(v) {\n        this._fetchThirdPartyData = v;\n    }\n    get trackingManagerConfig() {\n        return this._trackingManagerConfig;\n    }\n    get onLog() {\n        return this._onLog;\n    }\n    set onLog(v) {\n        this._onLog = v;\n    }\n    get onVisitorExposed() {\n        return this._onVisitorExposed;\n    }\n    constructor(param) {\n        const { envId, apiKey, timeout, logLevel, logManager, onSdkStatusChanged, fetchNow, decisionMode, reuseVisitorIds, initialBucketing, decisionApiUrl, hitDeduplicationTime, visitorCacheImplementation, hitCacheImplementation, disableCache, language, sdkVersion, trackingManagerConfig, onLog, onVisitorExposed, nextFetchConfig, fetchFlagsBufferingTime, disableDeveloperUsageTracking, batchActivateHits } = param;\n        this.initQaMode();\n        this.initSDKInfo(language, sdkVersion);\n        if (logManager) {\n            this.logManager = logManager;\n        }\n        this._batchActivateHits = batchActivateHits;\n        this.fetchFlagsBufferingTime = fetchFlagsBufferingTime ?? FETCH_FLAG_BUFFERING_DEFAULT_TIME;\n        this.nextFetchConfig = nextFetchConfig || { revalidate: 20 };\n        this._trackingManagerConfig = new TrackingManagerConfig(trackingManagerConfig || {});\n        this.onLog = onLog;\n        this.decisionApiUrl = decisionApiUrl || BASE_API_URL;\n        this._envId = envId;\n        this._apiKey = apiKey;\n        this.logLevel = logLevel ?? LogLevel.INFO;\n        this.timeout = timeout || REQUEST_TIME_OUT;\n        this.setFetchNow(fetchNow);\n        this.reuseVisitorIds = typeof reuseVisitorIds === 'undefined' || reuseVisitorIds;\n        this._decisionMode = decisionMode || DecisionMode.DECISION_API;\n        this._initialBucketing = initialBucketing;\n        this.hitDeduplicationTime = hitDeduplicationTime ?? DEFAULT_DEDUPLICATION_TIME;\n        this.disableCache = !!disableCache;\n        this.disableDeveloperUsageTracking = disableDeveloperUsageTracking || false;\n        if (visitorCacheImplementation) {\n            this.visitorCacheImplementation = visitorCacheImplementation;\n        }\n        if (hitCacheImplementation) {\n            this.hitCacheImplementation = hitCacheImplementation;\n        }\n        this.onSdkStatusChanged = onSdkStatusChanged;\n        this._onVisitorExposed = onVisitorExposed;\n    }\n    setFetchNow(fetchNow) {\n        if (__fsWebpackIsBrowser__ || __fsWebpackIsReactNative__) {\n            this.fetchNow = typeof fetchNow === 'undefined' ? true : fetchNow;\n        }\n        else {\n            this.fetchNow = typeof fetchNow === 'undefined' ? false : fetchNow;\n        }\n    }\n    initQaMode() {\n        if (__fsWebpackIsBrowser__) {\n            if (!isBrowser()) {\n                return;\n            }\n            try {\n                const isQAModeEnabled = sessionStorage.getItem(FS_IS_QA_MODE_ENABLED);\n                this.isQAModeEnabled = isQAModeEnabled ? JSON.parse(isQAModeEnabled) : undefined;\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            }\n            catch (error) {\n                logError(this, errorFormat(error.message || error), 'initQaMode');\n                this.isQAModeEnabled = false;\n            }\n        }\n    }\n    initSDKInfo(language, sdkVersion) {\n        switch (language) {\n            case 1:\n                SDK_INFO.name = 'ReactJS';\n                SDK_INFO.version = sdkVersion ?? SDK_VERSION;\n                break;\n            case 2:\n                SDK_INFO.name = 'React-Native';\n                SDK_INFO.version = sdkVersion ?? SDK_VERSION;\n                break;\n            default:\n                SDK_INFO.name = (typeof window !== 'undefined' && 'Deno' in window) ? 'Deno' : 'TypeScript';\n                SDK_INFO.version = SDK_VERSION;\n                break;\n        }\n    }\n    get initialBucketing() {\n        return this._initialBucketing;\n    }\n    set initialBucketing(v) {\n        this._initialBucketing = v;\n    }\n    get reuseVisitorIds() {\n        return this._reuseVisitorIds;\n    }\n    set reuseVisitorIds(v) {\n        this._reuseVisitorIds = v;\n    }\n    get onBucketingUpdated() {\n        return this._onBucketingUpdated;\n    }\n    set onBucketingUpdated(v) {\n        this._onBucketingUpdated = v;\n    }\n    set envId(value) {\n        this._envId = value;\n    }\n    get envId() {\n        return this._envId;\n    }\n    set apiKey(value) {\n        this._apiKey = value;\n    }\n    get apiKey() {\n        return this._apiKey;\n    }\n    get decisionMode() {\n        return this._decisionMode;\n    }\n    get timeout() {\n        return this._timeout;\n    }\n    set timeout(value) {\n        this._timeout = value;\n    }\n    get logLevel() {\n        return this._logLevel;\n    }\n    set logLevel(value) {\n        this._logLevel = value;\n    }\n    get fetchNow() {\n        return this._fetchNow;\n    }\n    set fetchNow(v) {\n        this._fetchNow = v;\n    }\n    get pollingInterval() {\n        return this._pollingInterval;\n    }\n    set pollingInterval(v) {\n        this._pollingInterval = v;\n    }\n    get hitDeduplicationTime() {\n        return this._hitDeduplicationTime;\n    }\n    set hitDeduplicationTime(v) {\n        if (typeof v !== 'number') {\n            logError(this, sprintf(TYPE_ERROR, 'hitDeduplicationTime', 'number'), 'hitDeduplicationTime');\n            return;\n        }\n        this._hitDeduplicationTime = v;\n    }\n    get visitorCacheImplementation() {\n        return this._visitorCacheImplementation;\n    }\n    set visitorCacheImplementation(v) {\n        this._visitorCacheImplementation = v;\n    }\n    get hitCacheImplementation() {\n        return this._hitCacheImplementation;\n    }\n    set hitCacheImplementation(v) {\n        this._hitCacheImplementation = v;\n    }\n    get disableCache() {\n        return this._disableCache;\n    }\n    set disableCache(v) {\n        this._disableCache = v;\n    }\n    get onSdkStatusChanged() {\n        return this._onSdkStatusChanged;\n    }\n    set onSdkStatusChanged(fn) {\n        if (fn && typeof fn !== 'function') {\n            logError(this, statusChangeError, 'onSdkStatusChanged');\n            return;\n        }\n        this._onSdkStatusChanged = fn;\n    }\n    get logManager() {\n        return this._logManager;\n    }\n    set logManager(value) {\n        this._logManager = value;\n    }\n    get decisionApiUrl() {\n        return this._decisionApiUrl;\n    }\n    set decisionApiUrl(v) {\n        if (typeof v !== 'string') {\n            logError(this, sprintf(TYPE_ERROR, 'decisionApiUrl', 'string'), 'decisionApiUrl');\n            return;\n        }\n        this._decisionApiUrl = v;\n    }\n}\n","import { DEFAULT_POLLING_INTERVAL } from '../enum/index';\nimport { DecisionMode } from './DecisionMode';\nimport { FlagshipConfig } from './FlagshipConfig';\nexport class BucketingConfig extends FlagshipConfig {\n    constructor(param) {\n        super({\n            ...param,\n            decisionMode: DecisionMode.BUCKETING\n        });\n        this.pollingInterval = param?.pollingInterval ?? DEFAULT_POLLING_INTERVAL;\n        this.onBucketingUpdated = param?.onBucketingUpdated;\n        this.fetchThirdPartyData = param?.fetchThirdPartyData;\n    }\n}\n","import { DecisionMode } from './DecisionMode';\nimport { FlagshipConfig } from './FlagshipConfig';\nexport class DecisionApiConfig extends FlagshipConfig {\n    constructor(param) {\n        super({\n            ...param,\n            decisionMode: DecisionMode.DECISION_API\n        });\n    }\n}\n","export class ConfigManager {\n    _config;\n    _decisionManager;\n    _trackingManager;\n    _sharedActionTracking;\n    constructor(config, decisionManager, trackingManager, sharedActionTracking) {\n        this._config = config;\n        this._decisionManager = decisionManager;\n        this._trackingManager = trackingManager;\n        this._sharedActionTracking = sharedActionTracking;\n    }\n    get config() {\n        return this._config;\n    }\n    set config(value) {\n        this._config = value;\n    }\n    get decisionManager() {\n        return this._decisionManager;\n    }\n    set decisionManager(value) {\n        this._decisionManager = value;\n    }\n    get trackingManager() {\n        return this._trackingManager;\n    }\n    set trackingManager(value) {\n        this._trackingManager = value;\n    }\n    get sharedActionTracking() {\n        return this._sharedActionTracking;\n    }\n}\n","export var TroubleshootingLabel;\n(function (TroubleshootingLabel) {\n    TroubleshootingLabel[\"VISITOR_SEND_HIT\"] = \"VISITOR_SEND_HIT\";\n    TroubleshootingLabel[\"VISITOR_FETCH_CAMPAIGNS_ERROR\"] = \"VISITOR_FETCH_CAMPAIGNS_ERROR\";\n    TroubleshootingLabel[\"VISITOR_FETCH_CAMPAIGNS\"] = \"VISITOR_FETCH_CAMPAIGNS\";\n    TroubleshootingLabel[\"VISITOR_AUTHENTICATE\"] = \"VISITOR_AUTHENTICATE\";\n    TroubleshootingLabel[\"VISITOR_UNAUTHENTICATE\"] = \"VISITOR_UNAUTHENTICATE\";\n    TroubleshootingLabel[\"VISITOR_EXPOSED_FLAG_NOT_FOUND\"] = \"VISITOR_EXPOSED_FLAG_NOT_FOUND\";\n    TroubleshootingLabel[\"FLAG_VALUE_NOT_CALLED\"] = \"FLAG_VALUE_NOT_CALLED\";\n    TroubleshootingLabel[\"GET_FLAG_VALUE_FLAG_NOT_FOUND\"] = \"GET_FLAG_VALUE_FLAG_NOT_FOUND\";\n    TroubleshootingLabel[\"GET_FLAG_METADATA_TYPE_WARNING\"] = \"GET_FLAG_METADATA_TYPE_WARNING\";\n    TroubleshootingLabel[\"GET_FLAG_VALUE_TYPE_WARNING\"] = \"GET_FLAG_VALUE_TYPE_WARNING\";\n    TroubleshootingLabel[\"VISITOR_EXPOSED_TYPE_WARNING\"] = \"VISITOR_EXPOSED_TYPE_WARNING\";\n    TroubleshootingLabel[\"VISITOR_SEND_ACTIVATE\"] = \"VISITOR_SEND_ACTIVATE\";\n    TroubleshootingLabel[\"GET_CAMPAIGNS_ROUTE_RESPONSE_ERROR\"] = \"GET_CAMPAIGNS_ROUTE_RESPONSE_ERROR\";\n    TroubleshootingLabel[\"GET_CAMPAIGNS_ROUTE_RESPONSE\"] = \"GET_CAMPAIGNS_ROUTE_RESPONSE\";\n    TroubleshootingLabel[\"SDK_BUCKETING_FILE\"] = \"SDK_BUCKETING_FILE\";\n    TroubleshootingLabel[\"SEND_ACTIVATE_HIT_ROUTE_ERROR\"] = \"SEND_ACTIVATE_HIT_ROUTE_ERROR\";\n    TroubleshootingLabel[\"SEND_BATCH_HIT_ROUTE_RESPONSE_ERROR\"] = \"SEND_BATCH_HIT_ROUTE_RESPONSE_ERROR\";\n    TroubleshootingLabel[\"SEND_HIT_ROUTE_ERROR\"] = \"SEND_HIT_ROUTE_ERROR\";\n    TroubleshootingLabel[\"SDK_BUCKETING_FILE_ERROR\"] = \"SDK_BUCKETING_FILE_ERROR\";\n    TroubleshootingLabel[\"SDK_CONFIG\"] = \"SDK_CONFIG\";\n    TroubleshootingLabel[\"ACCOUNT_SETTINGS\"] = \"ACCOUNT_SETTINGS\";\n    TroubleshootingLabel[\"ACCOUNT_SETTINGS_ERROR\"] = \"ACCOUNT_SETTINGS_ERROR\";\n    TroubleshootingLabel[\"EMOTION_AI_SCORE\"] = \"EMOTION_EAI_SCORE\";\n    TroubleshootingLabel[\"EMOTION_AI_SCORE_FROM_LOCAL_CACHE\"] = \"EMOTION_AI_SCORE_FROM_LOCAL_CACHE\";\n    TroubleshootingLabel[\"EMOTION_AI_SCORE_ERROR\"] = \"EMOTION_EAI_SCORE_ERROR\";\n    TroubleshootingLabel[\"EMOTION_AI_VISITOR_EVENT\"] = \"EMOTION_AI_VISITOR_EVENT\";\n    TroubleshootingLabel[\"EMOTION_AI_VISITOR_EVENT_ERROR\"] = \"EMOTION_AI_VISITOR_EVENT_ERROR\";\n    TroubleshootingLabel[\"EMOTION_AI_PAGE_VIEW\"] = \"EMOTION_AI_PAGE_VIEW\";\n    TroubleshootingLabel[\"EMOTION_AI_PAGE_VIEW_ERROR\"] = \"EMOTION_AI_PAGE_VIEW_ERROR\";\n    TroubleshootingLabel[\"EMOTION_AI_START_COLLECTING\"] = \"EMOTION_AI_START_COLLECTING\";\n    TroubleshootingLabel[\"EMOTION_AI_STOP_COLLECTING\"] = \"EMOTION_AI_STOP_COLLECTING\";\n    TroubleshootingLabel[\"EMOTION_AI_START_SCORING\"] = \"EMOTION_AI_START_SCORING\";\n    TroubleshootingLabel[\"EMOTION_AI_SCORING_FAILED\"] = \"EMOTION_AI_SCORING_FAILED\";\n    TroubleshootingLabel[\"EMOTION_AI_SCORING_SUCCESS\"] = \"EMOTION_AI_SCORING_SUCCESS\";\n})(TroubleshootingLabel || (TroubleshootingLabel = {}));\nexport var VisitorCacheStatus;\n(function (VisitorCacheStatus) {\n    VisitorCacheStatus[\"NONE\"] = \"NONE\";\n    VisitorCacheStatus[\"ANONYMOUS_ID_CACHE\"] = \"ANONYMOUS_ID_CACHE\";\n    VisitorCacheStatus[\"VISITOR_ID_CACHE\"] = \"VISITOR_ID_CACHE\";\n    VisitorCacheStatus[\"VISITOR_ID_CACHE_WITH_ANONYMOUS_ID_CACHE\"] = \"VISITOR_ID_CACHE_WITH_ANONYMOUS_ID_CACHE\";\n})(VisitorCacheStatus || (VisitorCacheStatus = {}));\nexport var ABTastyWebSDKPostMessageType;\n(function (ABTastyWebSDKPostMessageType) {\n    ABTastyWebSDKPostMessageType[\"AB_TASTY_WEB_SDK_INITIALIZED\"] = \"AB_TASTY_WEB_SDK_INITIALIZED\";\n})(ABTastyWebSDKPostMessageType || (ABTastyWebSDKPostMessageType = {}));\n","import { CUSTOMER_ENV_ID_API_ITEM, DS_API_ITEM, T_API_ITEM, TYPE_ERROR, VISITOR_ID_API_ITEM, CUSTOMER_UID, USER_IP_API_ITEM, SCREEN_RESOLUTION_API_ITEM, SESSION_NUMBER, USER_LANGUAGE, QT_API_ITEM, SDK_APP, QA_MODE_API_ITEM } from '../enum/FlagshipConstant';\nimport { logError, sprintf } from '../utils/utils';\nexport class HitAbstract {\n    _visitorId;\n    _config;\n    _type;\n    _ds;\n    _anonymousId;\n    _userIp;\n    _screenResolution;\n    _locale;\n    _sessionNumber;\n    _key;\n    _createdAt;\n    _qaMode;\n    _isActionTrackingHit;\n    get isActionTrackingHit() {\n        return this._isActionTrackingHit;\n    }\n    set isActionTrackingHit(v) {\n        this._isActionTrackingHit = v;\n    }\n    get key() {\n        return this._key;\n    }\n    set key(v) {\n        this._key = v;\n    }\n    get sessionNumber() {\n        return this._sessionNumber;\n    }\n    set sessionNumber(v) {\n        this._sessionNumber = v;\n    }\n    get locale() {\n        return this._locale;\n    }\n    set locale(v) {\n        this._locale = v;\n    }\n    get screenResolution() {\n        return this._screenResolution;\n    }\n    set screenResolution(v) {\n        this._screenResolution = v;\n    }\n    get userIp() {\n        return this._userIp;\n    }\n    set userIp(v) {\n        this._userIp = v;\n    }\n    get anonymousId() {\n        return this._anonymousId;\n    }\n    set anonymousId(v) {\n        this._anonymousId = v;\n    }\n    get visitorId() {\n        return this._visitorId;\n    }\n    set visitorId(v) {\n        this._visitorId = v;\n    }\n    get ds() {\n        return this._ds;\n    }\n    set ds(v) {\n        this._ds = v;\n    }\n    get type() {\n        return this._type;\n    }\n    get config() {\n        return this._config;\n    }\n    set config(v) {\n        this._config = v;\n    }\n    get createdAt() {\n        return this._createdAt;\n    }\n    set createdAt(v) {\n        this._createdAt = v;\n    }\n    get qaMode() {\n        return this._qaMode;\n    }\n    set qaMode(v) {\n        this._qaMode = v;\n    }\n    constructor(hit) {\n        const { type, userIp, screenResolution, locale, sessionNumber, visitorId, anonymousId, ds, qaMode, isActionTrackingHit } = hit;\n        this._type = type;\n        if (userIp) {\n            this.userIp = userIp;\n        }\n        if (screenResolution) {\n            this.screenResolution = screenResolution;\n        }\n        if (locale) {\n            this.locale = locale;\n        }\n        if (sessionNumber) {\n            this.sessionNumber = sessionNumber;\n        }\n        this.visitorId = visitorId;\n        this._anonymousId = anonymousId || null;\n        this.createdAt = Date.now();\n        this.ds = ds || SDK_APP;\n        this.qaMode = qaMode;\n        this.isActionTrackingHit = isActionTrackingHit;\n    }\n    /**\n     * Return true if value is a string and not empty, otherwise return false\n     * @param value\n     * @param itemName\n     * @returns\n     */\n    isNotEmptyString(value, itemName) {\n        if (!value || typeof value !== 'string') {\n            logError(this.config, sprintf(TYPE_ERROR, itemName, 'string'), itemName);\n            return false;\n        }\n        return true;\n    }\n    isNumeric(value, itemName) {\n        if (!value || typeof value !== 'number') {\n            logError(this.config, sprintf(TYPE_ERROR, itemName, 'number'), itemName);\n            return false;\n        }\n        return true;\n    }\n    isInteger(value, itemName) {\n        if (!Number.isInteger(value)) {\n            logError(this.config, sprintf(TYPE_ERROR, itemName, 'integer'), itemName);\n            return false;\n        }\n        return true;\n    }\n    /**\n     * Return an object with Api parameters as keys\n     */\n    toApiKeys() {\n        const apiKeys = {\n            [VISITOR_ID_API_ITEM]: this.visitorId,\n            [DS_API_ITEM]: this.ds,\n            [CUSTOMER_ENV_ID_API_ITEM]: `${this.config?.envId}`,\n            [T_API_ITEM]: this.type,\n            [CUSTOMER_UID]: null,\n            [QT_API_ITEM]: Date.now() - this._createdAt\n        };\n        if (this.qaMode) {\n            apiKeys[QA_MODE_API_ITEM] = true;\n        }\n        if (this.userIp) {\n            apiKeys[USER_IP_API_ITEM] = this.userIp;\n        }\n        if (this.screenResolution) {\n            apiKeys[SCREEN_RESOLUTION_API_ITEM] = this.screenResolution;\n        }\n        if (this.locale) {\n            apiKeys[USER_LANGUAGE] = this.locale;\n        }\n        if (this.sessionNumber) {\n            apiKeys[SESSION_NUMBER] = this.sessionNumber;\n        }\n        if (this.visitorId && this.anonymousId) {\n            apiKeys[VISITOR_ID_API_ITEM] = this.anonymousId;\n            apiKeys[CUSTOMER_UID] = this.visitorId;\n        }\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            key: this.key,\n            visitorId: this.visitorId,\n            ds: this.ds,\n            type: this.type,\n            userIp: this.userIp,\n            screenResolution: this.screenResolution,\n            locale: this.locale,\n            sessionNumber: this.sessionNumber,\n            anonymousId: this.anonymousId,\n            createdAt: this.createdAt,\n            qaMode: this.qaMode\n        };\n    }\n    /**\n     * Return true if all required attributes are given, otherwise return false\n     */\n    isReady(_checkParent = true) {\n        return !!(this.visitorId &&\n            this.ds &&\n            this.config &&\n            this.config.envId &&\n            this.type);\n    }\n}\n","export var BatchTriggeredBy;\n(function (BatchTriggeredBy) {\n    BatchTriggeredBy[BatchTriggeredBy[\"Timer\"] = 0] = \"Timer\";\n    BatchTriggeredBy[BatchTriggeredBy[\"BatchLength\"] = 1] = \"BatchLength\";\n    BatchTriggeredBy[BatchTriggeredBy[\"Flush\"] = 2] = \"Flush\";\n    BatchTriggeredBy[BatchTriggeredBy[\"ActivateLength\"] = 3] = \"ActivateLength\";\n    BatchTriggeredBy[BatchTriggeredBy[\"DirectHit\"] = 4] = \"DirectHit\";\n    BatchTriggeredBy[BatchTriggeredBy[\"DirectActivate\"] = 5] = \"DirectActivate\";\n})(BatchTriggeredBy || (BatchTriggeredBy = {}));\n","import { CacheStrategy, FSSdkStatus, LogLevel } from '../enum/index';\nimport { CUSTOMER_ENV_ID_API_ITEM, DS_API_ITEM, SDK_APP, SDK_INFO, T_API_ITEM, VISITOR_ID_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitAbstract } from './HitAbstract';\nimport { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nexport const ERROR_MESSAGE = 'event category and event action are required';\n/**\n * Represents a diagnostic hit.\n */\nexport class Diagnostic extends HitAbstract {\n    data;\n    _traffic;\n    get traffic() {\n        return this._traffic;\n    }\n    set traffic(v) {\n        this._traffic = v;\n    }\n    constructor(param) {\n        super({\n            type: param.type,\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId\n        });\n        this.data = {\n            ...param,\n            version: param.version || '1',\n            stackType: param.stackType || 'SDK',\n            stackName: param.stackName || SDK_INFO.name,\n            stackVersion: param.stackVersion || SDK_INFO.version,\n            label: param.label,\n            logLevel: param.logLevel,\n            timestamp: param.timestamp || new Date(Date.now()).toISOString(),\n            timeZone: this.getTimezone(),\n            ds: SDK_APP,\n            envId: param.envId || param.config.envId\n        };\n        this._traffic = param.traffic;\n        this.config = param.config;\n    }\n    /**\n     * Gets the timezone of the user.\n     * @returns The timezone as a string. If the timezone cannot be determined, it returns the offset from UTC in hours.\n     */\n    getTimezone() {\n        const timezone = typeof Intl === 'object' ? Intl.DateTimeFormat()?.resolvedOptions()?.timeZone : undefined;\n        return timezone || `${new Date().getTimezoneOffset() / 60}`;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\n    toApiKeys() {\n        const apiKeys = {\n            [VISITOR_ID_API_ITEM]: this.visitorId,\n            [DS_API_ITEM]: this.data.ds,\n            [CUSTOMER_ENV_ID_API_ITEM]: `${this.data.config?.envId}`,\n            [T_API_ITEM]: this.type,\n            cv: {}\n        };\n        const customVariable = {\n            version: `${this.data.version}`,\n            logLevel: `${LogLevel[this.data.logLevel]}`,\n            timestamp: `${this.data.timestamp}`,\n            timeZone: `${this.data.timeZone}`,\n            label: `${this.data.label}`,\n            'stack.type': `${this.data.stackType}`,\n            'stack.name': `${this.data.stackName}`,\n            'stack.version': `${this.data.stackVersion}`\n        };\n        if (this.data.lastBucketingTimestamp !== undefined) {\n            customVariable.lastBucketingTimestamp = `${this.data.lastBucketingTimestamp}`;\n        }\n        if (this.data.lastInitializationTimestamp !== undefined) {\n            customVariable.lastInitializationTimestamp = `${this.data.lastInitializationTimestamp}`;\n        }\n        if (this.data.flagshipInstanceId !== undefined) {\n            customVariable.flagshipInstanceId = `${this.data.flagshipInstanceId}`;\n        }\n        if (this.data.accountId) {\n            customVariable.accountId = `${this.data.accountId}`;\n        }\n        if (this.data.envId) {\n            customVariable.envId = `${this.data.envId}`;\n        }\n        if (this.data.sdkBucketingFile !== undefined) {\n            customVariable.sdkBucketingFile = JSON.stringify(this.data.sdkBucketingFile);\n        }\n        if (this.data.stackOriginName !== undefined) {\n            customVariable['stack.origin.name'] = `${this.data.stackOriginName}`;\n        }\n        if (this.data.stackOriginVersion !== undefined) {\n            customVariable['stack.origin.version'] = `${this.data.stackOriginVersion}`;\n        }\n        if (this.data.sdkStatus !== undefined) {\n            customVariable['sdk.status'] = `${FSSdkStatus[this.data.sdkStatus]}`;\n        }\n        if (this.data.sdkConfigLogLevel !== undefined) {\n            customVariable['sdk.config.logLevel'] = `${LogLevel[this.data.sdkConfigLogLevel]}`;\n        }\n        if (this.data.sdkConfigMode !== undefined) {\n            customVariable['sdk.config.mode'] = `${this.data.sdkConfigMode}`;\n        }\n        if (this.data.sdkConfigCustomLogManager !== undefined) {\n            customVariable['sdk.config.customLogManager'] = `${this.data.sdkConfigCustomLogManager}`;\n        }\n        if (this.data.sdkConfigCustomCacheManager !== undefined) {\n            customVariable['sdk.config.customCacheManager'] = `${this.data.sdkConfigCustomCacheManager}`;\n        }\n        if (this.data.sdkConfigStatusListener !== undefined) {\n            customVariable['sdk.config.custom.StatusListener'] = `${this.data.sdkConfigStatusListener}`;\n        }\n        if (this.data.sdkConfigTimeout !== undefined) {\n            customVariable['sdk.config.timeout'] = `${this.data.sdkConfigTimeout * 1000}`;\n        }\n        if (this.data.sdkConfigPollingInterval !== undefined) {\n            customVariable['sdk.config.pollingTime'] = `${this.data.sdkConfigPollingInterval * 1000}`;\n        }\n        if (this.data.sdkConfigTrackingManagerStrategy !== undefined) {\n            customVariable['sdk.config.trackingManager.strategy'] = `${CacheStrategy[this.data.sdkConfigTrackingManagerStrategy]}`;\n        }\n        if (this.data.sdkConfigTrackingManagerBatchIntervals !== undefined) {\n            customVariable['sdk.config.trackingManager.batchIntervals'] = `${this.data.sdkConfigTrackingManagerBatchIntervals * 1000}`;\n        }\n        if (this.data.sdkConfigTrackingManagerPoolMaxSize !== undefined) {\n            customVariable['sdk.config.trackingManager.poolMaxSize'] = `${this.data.sdkConfigTrackingManagerPoolMaxSize}`;\n        }\n        if (this.data.sdkConfigFetchNow !== undefined) {\n            customVariable['sdk.config.fetchNow'] = `${this.data.sdkConfigFetchNow}`;\n        }\n        if (this.data.sdkConfigReuseVisitorIds !== undefined) {\n            customVariable['sdk.config.reuseVisitorIds'] = `${this.data.sdkConfigReuseVisitorIds}`;\n        }\n        if (this.data.sdkConfigInitialBucketing !== undefined) {\n            customVariable['sdk.config.initialBucketing'] = JSON.stringify(this.data.sdkConfigInitialBucketing);\n        }\n        if (this.data.sdkConfigDecisionApiUrl !== undefined) {\n            customVariable['sdk.config.decisionApiUrl'] = `${this.data.sdkConfigDecisionApiUrl}`;\n        }\n        if (this.data.sdkConfigHitDeduplicationTime !== undefined) {\n            customVariable['sdk.config.hitDeduplicationTime'] = `${this.data.sdkConfigHitDeduplicationTime * 1000}`;\n        }\n        if (this.data.sdkConfigUsingCustomHitCache !== undefined) {\n            customVariable['sdk.config.usingCustomHitCache'] = JSON.stringify(this.data.sdkConfigUsingCustomHitCache);\n        }\n        if (this.data.sdkConfigUsingCustomVisitorCache !== undefined) {\n            customVariable['sdk.config.usingCustomVisitorCache'] = JSON.stringify(this.data.sdkConfigUsingCustomVisitorCache);\n        }\n        if (this.data.sdkConfigUsingOnVisitorExposed !== undefined) {\n            customVariable['sdk.config.usingOnVisitorExposed'] = JSON.stringify(this.data.sdkConfigUsingOnVisitorExposed);\n        }\n        if (this.data.sdkConfigFetchThirdPartyData !== undefined) {\n            customVariable['sdk.config.fetchThirdPartyData'] = JSON.stringify(this.data.sdkConfigFetchThirdPartyData);\n        }\n        if (this.data.sdkConfigFetchFlagsBufferingTime !== undefined) {\n            customVariable['sdk.config.fetchFlagsBufferingTime'] = JSON.stringify(this.data.sdkConfigFetchFlagsBufferingTime * 1000);\n        }\n        if (this.data.sdkConfigNextFetchConfig !== undefined) {\n            customVariable['sdk.config.nextFetchConfig'] = JSON.stringify(this.data.sdkConfigNextFetchConfig);\n        }\n        if (this.data.sdkConfigDisableDeveloperUsageTracking !== undefined) {\n            customVariable['sdk.config.disableDeveloperUsageTracking'] = JSON.stringify(this.data.sdkConfigDisableDeveloperUsageTracking);\n        }\n        if (this.data.sdkConfigDisableCache !== undefined) {\n            customVariable['sdk.config.disableCache'] = JSON.stringify(this.data.sdkConfigDisableCache);\n        }\n        if (this.data.httpRequestUrl !== undefined) {\n            customVariable['http.request.url'] = `${this.data.httpRequestUrl}`;\n        }\n        if (this.data.httpRequestMethod !== undefined) {\n            customVariable['http.request.method'] = `${this.data.httpRequestMethod}`;\n        }\n        if (this.data.httpRequestHeaders !== undefined) {\n            customVariable['http.request.headers'] = JSON.stringify(this.data.httpRequestHeaders);\n        }\n        if (this.data.httpRequestBody !== undefined) {\n            customVariable['http.request.body'] = JSON.stringify(this.data.httpRequestBody);\n        }\n        if (this.data.httpResponseUrl !== undefined) {\n            customVariable['http.response.url'] = `${this.data.httpResponseUrl}`;\n        }\n        if (this.data.httpResponseMethod !== undefined) {\n            customVariable['http.response.method'] = `${this.data.httpResponseMethod}`;\n        }\n        if (this.data.httpResponseHeaders !== undefined) {\n            customVariable['http.response.headers'] = JSON.stringify(this.data.httpResponseHeaders);\n        }\n        if (this.data.httpResponseCode !== undefined) {\n            customVariable['http.response.code'] = `${this.data.httpResponseCode}`;\n        }\n        if (this.data.httpResponseBody !== undefined) {\n            customVariable['http.response.body'] = JSON.stringify(this.data.httpResponseBody);\n        }\n        if (this.data.httpResponseTime !== undefined) {\n            customVariable['http.response.time'] = `${this.data.httpResponseTime}`;\n        }\n        if (this.visitorId !== undefined) {\n            customVariable['visitor.visitorId'] = `${this.visitorId}`;\n        }\n        if (this.anonymousId !== undefined) {\n            customVariable['visitor.anonymousId'] = `${this.anonymousId}`;\n        }\n        if (this.data.visitorSessionId !== undefined) {\n            customVariable['visitor.sessionId'] = `${this.data.visitorSessionId}`;\n        }\n        if (this.data.visitorStatus !== undefined) {\n            customVariable['visitor.status'] = `${this.data.visitorStatus}`;\n        }\n        if (this.data.visitorInstanceType !== undefined) {\n            customVariable['visitor.instanceType'] = `${this.data.visitorInstanceType}`;\n        }\n        if (this.data.visitorContext !== undefined) {\n            for (const key in this.data.visitorContext) {\n                const element = this.data.visitorContext[key];\n                customVariable[`visitor.context.[${key}]`] = `${element}`;\n            }\n        }\n        if (this.data.visitorConsent !== undefined) {\n            customVariable['visitor.consent'] = `${this.data.visitorConsent}`;\n        }\n        if (this.data.visitorAssignmentHistory !== undefined) {\n            for (const key in this.data.visitorAssignmentHistory) {\n                const element = this.data.visitorAssignmentHistory[key];\n                customVariable[`visitor.assignments.[${key}]`] = element;\n            }\n        }\n        if (this.data.visitorFlags !== undefined) {\n            this.data.visitorFlags.forEach((item, flagKey) => {\n                for (const itemKey in item) {\n                    const itemValue = item[itemKey];\n                    const hasMetadataKey = itemKey === 'value' || itemKey === 'key';\n                    const value = typeof itemValue === 'string' ? itemValue : JSON.stringify(itemValue);\n                    customVariable[`visitor.flags.[${flagKey}]${hasMetadataKey ? '' : '.metadata'}.${itemKey}`] = value;\n                }\n            });\n        }\n        if (this.data.visitorIsAuthenticated !== undefined) {\n            customVariable['visitor.isAuthenticated'] = `${this.data.visitorIsAuthenticated}`;\n        }\n        if (this.data.visitorInitialCampaigns !== undefined) {\n            customVariable['visitor.initialCampaigns'] = JSON.stringify(this.data.visitorInitialCampaigns);\n        }\n        if (this.data.visitorInitialFlagsData !== undefined) {\n            customVariable['visitor.initialFlagsData'] = JSON.stringify(Array.isArray(this.data.visitorInitialFlagsData) ? this.data.visitorInitialFlagsData : Array.from(this.data.visitorInitialFlagsData));\n        }\n        if (this.data.visitorCampaigns !== undefined) {\n            customVariable['visitor.campaigns'] = JSON.stringify(this.data.visitorCampaigns);\n        }\n        if (this.data.visitorCampaignFromCache !== undefined) {\n            customVariable['visitor.campaignFromCache'] = JSON.stringify(this.data.visitorCampaignFromCache);\n        }\n        if (this.data.contextKey !== undefined) {\n            customVariable.contextKey = `${this.data.contextKey}`;\n        }\n        if (this.data.contextValue !== undefined) {\n            customVariable.contextValue = `${this.data.contextValue}`;\n        }\n        if (this.data.flagKey !== undefined) {\n            customVariable['flag.key'] = `${this.data.flagKey}`;\n        }\n        if (this.data.flagValue !== undefined) {\n            customVariable['flag.value'] = `${this.data.flagValue}`;\n        }\n        if (this.data.flagDefault !== undefined) {\n            customVariable['flag.default'] = JSON.stringify(this.data.flagDefault);\n        }\n        if (this.data.flagMetadataCampaignId !== undefined) {\n            customVariable['flag.metadata.campaignId'] = `${this.data.flagMetadataCampaignId}`;\n        }\n        if (this.data.flagMetadataCampaignName !== undefined) {\n            customVariable['flag.metadata.campaignName'] = `${this.data.flagMetadataCampaignName}`;\n        }\n        if (this.data.flagMetadataVariationGroupId !== undefined) {\n            customVariable['flag.metadata.variationGroupId'] = `${this.data.flagMetadataVariationGroupId}`;\n        }\n        if (this.data.flagMetadataVariationGroupName !== undefined) {\n            customVariable['flag.metadata.variationGroupName'] = `${this.data.flagMetadataVariationGroupName}`;\n        }\n        if (this.data.flagMetadataVariationId !== undefined) {\n            customVariable['flag.metadata.variationId'] = `${this.data.flagMetadataVariationId}`;\n        }\n        if (this.data.flagMetadataVariationName !== undefined) {\n            customVariable['flag.metadata.variationName'] = `${this.data.flagMetadataVariationName}`;\n        }\n        if (this.data.flagMetadataCampaignSlug !== undefined) {\n            customVariable['flag.metadata.campaignSlug'] = `${this.data.flagMetadataCampaignSlug}`;\n        }\n        if (this.data.flagMetadataCampaignType !== undefined) {\n            customVariable['flag.metadata.campaignType'] = `${this.data.flagMetadataCampaignType}`;\n        }\n        if (this.data.flagMetadataCampaignIsReference !== undefined) {\n            customVariable['flag.metadata.isReference'] = `${this.data.flagMetadataCampaignIsReference}`;\n        }\n        if (this.data.hitContent !== undefined) {\n            for (const key in this.data.hitContent) {\n                const element = this.data.hitContent[key];\n                customVariable[`hit.${key}`] = typeof element === 'string' ? element : JSON.stringify(element);\n            }\n        }\n        if (this.data.batchTriggeredBy !== undefined) {\n            customVariable.batchTriggeredBy = `${BatchTriggeredBy[this.data.batchTriggeredBy]}`;\n        }\n        if (this.data.accountSettings !== undefined) {\n            for (const key in this.data.accountSettings) {\n                const element = this.data.accountSettings[key];\n                customVariable[`accountSettings.${key}`] = typeof element === 'string' ? element : JSON.stringify(element);\n            }\n        }\n        if (this.data.eAIScore !== undefined) {\n            customVariable['eAIScore.eai.eas'] = this.data.eAIScore.eai.eas;\n        }\n        if (this.data.isEAIScoreFromLocalCache !== undefined) {\n            customVariable.isEAIScoreFromLocalCache = `${this.data.isEAIScoreFromLocalCache}`;\n        }\n        if (this.data.eAIDataTimestamp !== undefined) {\n            customVariable.eAIDataTimestamp = `${this.data.eAIDataTimestamp}`;\n        }\n        apiKeys.cv = customVariable;\n        return apiKeys;\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()));\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { Diagnostic } from './Diagnostic';\nexport class Troubleshooting extends Diagnostic {\n    constructor(param) {\n        super({\n            ...param,\n            type: 'TROUBLESHOOTING'\n        });\n    }\n}\n","import { BASE_API_URL, EXPOSE_ALL_KEYS, FETCH_FLAGS_PANIC_MODE, FSSdkStatus, HEADER_APPLICATION_JSON, HEADER_CONTENT_TYPE, HEADER_X_API_KEY, HEADER_X_SDK_CLIENT, HEADER_X_SDK_VERSION, LogLevel, PROCESS_FETCHING_FLAGS, SDK_INFO, URL_CAMPAIGNS } from '../enum/index';\nimport { TroubleshootingLabel } from '../types';\nimport { errorFormat, logDebug } from '../utils/utils';\nimport { Troubleshooting } from '../hit/Troubleshooting';\nexport class DecisionManager {\n    _config;\n    _panic = false;\n    _httpClient;\n    _statusChangedCallback;\n    _troubleshooting;\n    _lastBucketingTimestamp;\n    _trackingManager;\n    _flagshipInstanceId;\n    get trackingManager() {\n        return this._trackingManager;\n    }\n    set trackingManager(v) {\n        this._trackingManager = v;\n    }\n    get flagshipInstanceId() {\n        return this._flagshipInstanceId;\n    }\n    set flagshipInstanceId(v) {\n        this._flagshipInstanceId = v;\n    }\n    get lastBucketingTimestamp() {\n        return this._lastBucketingTimestamp;\n    }\n    get troubleshooting() {\n        return this._troubleshooting;\n    }\n    set troubleshooting(v) {\n        this._troubleshooting = v;\n    }\n    get config() {\n        return this._config;\n    }\n    set panic(v) {\n        this.updateFlagshipStatus(v ? FSSdkStatus.SDK_PANIC : FSSdkStatus.SDK_INITIALIZED);\n        this._panic = v;\n        if (v) {\n            logDebug(this.config, FETCH_FLAGS_PANIC_MODE, PROCESS_FETCHING_FLAGS);\n        }\n    }\n    statusChangedCallback(v) {\n        this._statusChangedCallback = v;\n    }\n    constructor({ httpClient, config, trackingManager, flagshipInstanceId }) {\n        this._config = config;\n        this._httpClient = httpClient;\n        this._trackingManager = trackingManager;\n        this._flagshipInstanceId = flagshipInstanceId || '';\n    }\n    updateFlagshipStatus(v) {\n        if (typeof this._statusChangedCallback === 'function' && this._statusChangedCallback) {\n            this._statusChangedCallback(v);\n        }\n    }\n    getModifications(campaigns) {\n        const modifications = new Map();\n        campaigns.forEach((campaign) => {\n            const object = campaign.variation.modifications.value;\n            for (const key in object) {\n                const value = object[key];\n                modifications.set(key, {\n                    key,\n                    campaignId: campaign.id,\n                    campaignName: campaign.name || '',\n                    variationGroupId: campaign.variationGroupId,\n                    variationGroupName: campaign.variationGroupName || '',\n                    variationId: campaign.variation.id,\n                    variationName: campaign.variation.name || '',\n                    isReference: !!campaign.variation.reference,\n                    campaignType: campaign.type,\n                    slug: campaign.slug,\n                    value\n                });\n            }\n        });\n        return modifications;\n    }\n    isPanic() {\n        return this._panic;\n    }\n    handleTroubleshootingError(params) {\n        const { error, visitor, requestBody, headers, url, now } = params;\n        const troubleshooting = new Troubleshooting({\n            label: TroubleshootingLabel.GET_CAMPAIGNS_ROUTE_RESPONSE_ERROR,\n            logLevel: LogLevel.ERROR,\n            visitorId: visitor.visitorId,\n            flagshipInstanceId: this.flagshipInstanceId,\n            anonymousId: visitor.anonymousId,\n            visitorSessionId: visitor.instanceId,\n            traffic: 100,\n            config: this.config,\n            visitorContext: visitor.context,\n            httpRequestBody: requestBody,\n            httpRequestHeaders: headers,\n            httpRequestMethod: 'POST',\n            httpRequestUrl: url,\n            httpResponseBody: error?.message,\n            httpResponseHeaders: error?.headers,\n            httpResponseCode: error?.statusCode,\n            httpResponseTime: Date.now() - now\n        });\n        this.trackingManager?.addTroubleshootingHit(troubleshooting);\n        const errorMessage = errorFormat(error.message || error, {\n            url,\n            headers,\n            body: requestBody,\n            duration: Date.now() - now\n        });\n        throw new Error(errorMessage);\n    }\n    async getDecisionApiCampaignsAsync(visitor) {\n        const headers = {\n            [HEADER_X_API_KEY]: `${this.config.apiKey}`,\n            [HEADER_X_SDK_CLIENT]: SDK_INFO.name,\n            [HEADER_X_SDK_VERSION]: SDK_INFO.version,\n            [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON\n        };\n        const requestBody = {\n            visitorId: visitor.visitorId,\n            anonymousId: visitor.anonymousId,\n            trigger_hit: false,\n            context: visitor.context,\n            visitor_consent: visitor.hasConsented\n        };\n        const url = `${this.config.decisionApiUrl || BASE_API_URL}${this.config.envId}${URL_CAMPAIGNS}?${EXPOSE_ALL_KEYS}=true&extras[]=accountSettings`;\n        const now = Date.now();\n        try {\n            const response = await this._httpClient.postAsync(url, {\n                headers,\n                timeout: this.config.timeout,\n                body: requestBody,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            this.panic = !!response?.body?.panic;\n            let campaigns = null;\n            if (response?.body?.campaigns) {\n                campaigns = response.body.campaigns;\n            }\n            const troubleshooting = response?.body?.extras?.accountSettings?.troubleshooting;\n            if (troubleshooting) {\n                this.troubleshooting = {\n                    startDate: new Date(troubleshooting.startDate),\n                    endDate: new Date(troubleshooting.endDate),\n                    timezone: troubleshooting.timezone,\n                    traffic: troubleshooting.traffic\n                };\n            }\n            return campaigns;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            this.handleTroubleshootingError({\n                error,\n                visitor,\n                requestBody,\n                headers,\n                url,\n                now\n            });\n        }\n    }\n}\n","import { DecisionManager } from './DecisionManager';\nexport class ApiManager extends DecisionManager {\n    async getCampaignsAsync(visitor) {\n        return this.getDecisionApiCampaignsAsync(visitor);\n    }\n}\n","export var HitType;\n(function (HitType) {\n    /**\n     * User has seen a URL\n     *\n     */\n    HitType[\"PAGE_VIEW\"] = \"PAGEVIEW\";\n    /**\n     * User has seen a URL\n     *\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    HitType[\"PAGE\"] = \"PAGEVIEW\";\n    /**\n     * User has seen a screen.\n     *\n     */\n    HitType[\"SCREEN_VIEW\"] = \"SCREENVIEW\";\n    /**\n     * User has seen a screen.\n     *\n     */\n    // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n    HitType[\"SCREEN\"] = \"SCREENVIEW\";\n    /**\n     * User has made a transaction.\n     *\n     */\n    HitType[\"TRANSACTION\"] = \"TRANSACTION\";\n    /**\n     * Item bought in a transaction.\n     *\n     */\n    HitType[\"ITEM\"] = \"ITEM\";\n    /**\n     * User has made a specific action.\n     *\n     */\n    HitType[\"EVENT\"] = \"EVENT\";\n})(HitType || (HitType = {}));\n","import { S_API_ITEM } from '../enum/index';\nimport { HitAbstract } from './HitAbstract';\nexport const ERROR_MESSAGE = 'data property is required';\nexport class Segment extends HitAbstract {\n    _context;\n    get context() {\n        return this._context;\n    }\n    set context(v) {\n        this._context = v;\n    }\n    constructor(param) {\n        super({\n            type: 'SEGMENT',\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId,\n            qaMode: param.qaMode,\n            isActionTrackingHit: param.isActionTrackingHit\n        });\n        this.context = param.context;\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) && this.context && Object.keys(this.context).length > 0);\n    }\n    toApiKeys() {\n        const apiKeys = super.toApiKeys();\n        if (!this.context || Object.keys(this.context).length === 0) {\n            apiKeys[S_API_ITEM] = {};\n            return apiKeys;\n        }\n        const apiContext = Object.entries(this.context).reduce((acc, [key, value]) => {\n            acc[key] = String(value);\n            return acc;\n        }, {});\n        apiKeys[S_API_ITEM] = apiContext;\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            context: this.context\n        };\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","export var EventCategory;\n(function (EventCategory) {\n    EventCategory[\"ACTION_TRACKING\"] = \"Action Tracking\";\n    EventCategory[\"USER_ENGAGEMENT\"] = \"User Engagement\";\n})(EventCategory || (EventCategory = {}));\n","import { EVENT_ACTION_API_ITEM, EVENT_CATEGORY_API_ITEM, EVENT_LABEL_API_ITEM, EVENT_VALUE_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitType } from '../enum/HitType';\nimport { logError } from '../utils/utils';\nimport { EventCategory } from './EventCategory';\nimport { HitAbstract } from './HitAbstract';\nexport const ERROR_MESSAGE = 'event category and event action are required';\nexport const CATEGORY_ERROR = 'The category value must be either EventCategory::ACTION_TRACKING or EventCategory::ACTION_TRACKING';\nexport const VALUE_FIELD_ERROR = 'value must be an integer and be >= 0';\nexport class Event extends HitAbstract {\n    _category;\n    _action;\n    _label;\n    _value;\n    get category() {\n        return this._category;\n    }\n    /**\n     * Specify Action Tracking or User Engagement.\n     */\n    set category(v) {\n        if (!(Object.values(EventCategory).includes(v))) {\n            logError(this.config, CATEGORY_ERROR, 'category');\n            return;\n        }\n        this._category = v;\n    }\n    get action() {\n        return this._action;\n    }\n    /**\n     * Specify Event name that will also serve as the KPI\n     * that you will have inside your reporting\n     */\n    set action(v) {\n        if (!this.isNotEmptyString(v, 'action')) {\n            return;\n        }\n        this._action = v;\n    }\n    get label() {\n        return this._label;\n    }\n    /**\n     * Specify additional description of event.\n     */\n    set label(v) {\n        if (!this.isNotEmptyString(v, 'label')) {\n            return;\n        }\n        this._label = v;\n    }\n    get value() {\n        return this._value;\n    }\n    /**\n     * Specify the monetary value associated with an event\n     * (e.g. you earn 10 to 100 euros depending on the quality of lead generated).\n     *\n     * <br/> NOTE: this value must be non-negative.\n     */\n    set value(v) {\n        if (!Number.isInteger(v) || v < 0) {\n            logError(this.config, VALUE_FIELD_ERROR, 'value');\n            return;\n        }\n        this._value = v;\n    }\n    constructor(param) {\n        super({\n            type: HitType.EVENT,\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId,\n            qaMode: param.qaMode,\n            isActionTrackingHit: param.isActionTrackingHit\n        });\n        const { category, action, label, value } = param;\n        this.category = category;\n        this.action = action;\n        if (label) {\n            this.label = label;\n        }\n        if (value) {\n            this.value = value;\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    toApiKeys() {\n        const apiKeys = super.toApiKeys();\n        apiKeys[EVENT_CATEGORY_API_ITEM] = this.category;\n        apiKeys[EVENT_ACTION_API_ITEM] = this.action;\n        if (this.label) {\n            apiKeys[EVENT_LABEL_API_ITEM] = this.label;\n        }\n        if (this.value) {\n            apiKeys[EVENT_VALUE_API_ITEM] = this.value;\n        }\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            category: this.category,\n            action: this.action,\n            label: this.label,\n            value: this.value\n        };\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) && this.category && this.action);\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { DL_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitType } from '../enum/HitType';\nimport { HitAbstract } from './HitAbstract';\nexport const ERROR_MESSAGE = 'Screen name is required';\nexport class Screen extends HitAbstract {\n    _documentLocation;\n    get documentLocation() {\n        return this._documentLocation;\n    }\n    set documentLocation(v) {\n        if (!this.isNotEmptyString(v, 'documentLocation')) {\n            return;\n        }\n        this._documentLocation = v;\n    }\n    constructor(param) {\n        super({\n            type: HitType.SCREEN_VIEW,\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId,\n            qaMode: param.qaMode,\n            isActionTrackingHit: param.isActionTrackingHit\n        });\n        this.documentLocation = param.documentLocation;\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) && this.documentLocation);\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    toApiKeys() {\n        const apiKeys = super.toApiKeys();\n        apiKeys[DL_API_ITEM] = this.documentLocation;\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            documentLocation: this.documentLocation\n        };\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { BATCH, CUSTOMER_ENV_ID_API_ITEM } from '../enum/index';\nexport class ActivateBatch {\n    _hits;\n    _config;\n    get hits() {\n        return this._hits;\n    }\n    get config() {\n        return this._config;\n    }\n    constructor(hits, config) {\n        this._config = config;\n        this._hits = hits;\n    }\n    toApiKeys() {\n        return {\n            [CUSTOMER_ENV_ID_API_ITEM]: `${this.config?.envId}`,\n            [BATCH]: this.hits.map(x => {\n                const apiKeys = x.toApiKeys();\n                delete apiKeys[CUSTOMER_ENV_ID_API_ITEM];\n                return apiKeys;\n            })\n        };\n    }\n}\n","import { ANONYMOUS_ID, CUSTOMER_ENV_ID_API_ACTIVATE, QA_MODE_API_ITEM, QT_API_ITEM, VARIATION_GROUP_ID_API_ITEM_ACTIVATE, VARIATION_ID_API_ITEM, VISITOR_ID_API_ITEM } from '../enum/index';\nimport { HitAbstract } from './HitAbstract';\nexport const ERROR_MESSAGE = 'variationGroupId and variationId are required';\nexport class Activate extends HitAbstract {\n    _variationGroupId;\n    _variationId;\n    _flagKey;\n    _flagValue;\n    _flagDefaultValue;\n    _flagMetadata;\n    _visitorContext;\n    constructor(param) {\n        super({\n            type: 'ACTIVATE',\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId,\n            qaMode: param.qaMode\n        });\n        const { variationGroupId, variationId, flagKey, flagValue, flagDefaultValue, flagMetadata, visitorContext } = param;\n        this.variationGroupId = variationGroupId;\n        this.variationId = variationId;\n        this.flagKey = flagKey;\n        this.flagValue = flagValue;\n        this.flagDefaultValue = flagDefaultValue;\n        this.flagMetadata = flagMetadata;\n        this.visitorContext = visitorContext;\n    }\n    get variationGroupId() {\n        return this._variationGroupId;\n    }\n    set variationGroupId(v) {\n        this._variationGroupId = v;\n    }\n    get variationId() {\n        return this._variationId;\n    }\n    set variationId(v) {\n        this._variationId = v;\n    }\n    get flagKey() {\n        return this._flagKey;\n    }\n    set flagKey(v) {\n        this._flagKey = v;\n    }\n    get flagValue() {\n        return this._flagValue;\n    }\n    set flagValue(v) {\n        this._flagValue = v;\n    }\n    get flagDefaultValue() {\n        return this._flagDefaultValue;\n    }\n    set flagDefaultValue(v) {\n        this._flagDefaultValue = v;\n    }\n    get flagMetadata() {\n        return this._flagMetadata;\n    }\n    set flagMetadata(v) {\n        this._flagMetadata = v;\n    }\n    get visitorContext() {\n        return this._visitorContext;\n    }\n    set visitorContext(v) {\n        this._visitorContext = v;\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) && this.variationGroupId && this.variationId);\n    }\n    toApiKeys() {\n        const apiKeys = {\n            [VISITOR_ID_API_ITEM]: this.anonymousId || this.visitorId,\n            [VARIATION_ID_API_ITEM]: this.variationId,\n            [VARIATION_GROUP_ID_API_ITEM_ACTIVATE]: this.variationGroupId,\n            [CUSTOMER_ENV_ID_API_ACTIVATE]: this.config.envId,\n            [ANONYMOUS_ID]: null,\n            [QT_API_ITEM]: Date.now() - this.createdAt\n        };\n        if (this.visitorId && this.anonymousId) {\n            apiKeys[VISITOR_ID_API_ITEM] = this.visitorId;\n            apiKeys[ANONYMOUS_ID] = this.anonymousId;\n        }\n        if (this.qaMode) {\n            apiKeys[QA_MODE_API_ITEM] = this.qaMode;\n        }\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            variationGroupId: this.variationGroupId,\n            variationId: this.variationId\n        };\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { CUSTOMER_ENV_ID_API_ITEM, DS_API_ITEM, QT_API_ITEM, T_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitAbstract } from './HitAbstract';\nexport const BATCH = 'BATCH';\nexport const ERROR_MESSAGE = 'Please check required fields';\nexport class Batch extends HitAbstract {\n    _hits;\n    get hits() {\n        return this._hits;\n    }\n    set hits(v) {\n        this._hits = v;\n    }\n    constructor(params) {\n        super({\n            ...params,\n            visitorId: '',\n            anonymousId: '',\n            type: BATCH\n        });\n        this.hits = params.hits;\n    }\n    isReady() {\n        return !!(super.isReady() &&\n            this.hits &&\n            this.hits.length > 0 &&\n            this.hits.every(hit => hit.isReady(false)));\n    }\n    toApiKeys() {\n        const apiKeys = {\n            [DS_API_ITEM]: this.ds,\n            [CUSTOMER_ENV_ID_API_ITEM]: `${this.config?.envId}`,\n            [T_API_ITEM]: this.type,\n            [QT_API_ITEM]: Date.now() - this.createdAt\n        };\n        apiKeys.h = this.hits.map(hit => {\n            const hitKeys = hit.toApiKeys();\n            delete hitKeys[DS_API_ITEM];\n            delete hitKeys[CUSTOMER_ENV_ID_API_ITEM];\n            return hitKeys;\n        });\n        return apiKeys;\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { DecisionMode } from '../config/index';\nimport { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nimport { ACTIVATE_ADDED_IN_QUEUE, ADD_ACTIVATE, BATCH_MAX_SIZE, DEFAULT_HIT_CACHE_TIME_MS, FS_CONSENT, HEADER_APPLICATION_JSON, HEADER_CONTENT_TYPE, HitType, HIT_ADDED_IN_QUEUE, HIT_CACHE_VERSION, HIT_DATA_FLUSHED, HIT_EVENT_URL, LogLevel, PROCESS_CACHE_HIT, PROCESS_FLUSH_HIT, SDK_APP, SDK_INFO, SEND_BATCH, TROUBLESHOOTING_HIT_URL, TROUBLESHOOTING_HIT_ADDED_IN_QUEUE, ADD_TROUBLESHOOTING_HIT, TROUBLESHOOTING_SENT_SUCCESS, SEND_TROUBLESHOOTING, ALL_HITS_FLUSHED, HIT_CACHE_ERROR, HIT_CACHE_SAVED, PROCESS_CACHE, TRACKING_MANAGER, HIT_SENT_SUCCESS, BATCH_HIT, TRACKING_MANAGER_ERROR, USAGE_HIT_URL, ANALYTICS_HIT_SENT_SUCCESS as USAGE_HIT_SENT_SUCCESS, SEND_USAGE_HIT, ANALYTICS_HIT_ADDED_IN_QUEUE as USAGE_HIT_ADDED_IN_QUEUE, ADD_USAGE_HIT } from '../enum/index';\nimport { Activate } from '../hit/Activate';\nimport { Troubleshooting } from '../hit/Troubleshooting';\nimport { EventCategory } from '../hit/index';\nimport { TroubleshootingLabel } from '../types';\nimport { errorFormat, isBrowser, logDebug, logDebugSprintf, logError, logErrorSprintf, sprintf, uuidV4 } from '../utils/utils';\nimport { Batch } from '../hit/Batch.ts';\nexport class BatchingCachingStrategyAbstract {\n    _config;\n    _hitsPoolQueue;\n    _activatePoolQueue;\n    _httpClient;\n    _troubleshootingQueue;\n    _usageHitQueue;\n    _flagshipInstanceId;\n    _isUsageHitQueueSending;\n    _isTroubleshootingQueueSending;\n    _HitsToFsQa;\n    _sendFsHitToQATimeoutId;\n    _troubleshootingData;\n    _initTroubleshootingHit;\n    _hasInitTroubleshootingHitSent;\n    _sharedActionTracking;\n    get flagshipInstanceId() {\n        return this._flagshipInstanceId;\n    }\n    get troubleshootingData() {\n        return this._troubleshootingData;\n    }\n    set troubleshootingData(v) {\n        this._troubleshootingData = v;\n    }\n    get config() {\n        return this._config;\n    }\n    get initTroubleshootingHit() {\n        return this._initTroubleshootingHit;\n    }\n    set initTroubleshootingHit(v) {\n        this._initTroubleshootingHit = v;\n    }\n    constructor(param) {\n        const { config, hitsPoolQueue, httpClient, activatePoolQueue, troubleshootingQueue, flagshipInstanceId, analyticHitQueue, initTroubleshootingHit: initTroubleshootingHi, sharedActionTracking } = param;\n        this._HitsToFsQa = [];\n        this._hasInitTroubleshootingHitSent = false;\n        this._config = config;\n        this._hitsPoolQueue = hitsPoolQueue;\n        this._httpClient = httpClient;\n        this._activatePoolQueue = activatePoolQueue;\n        this._troubleshootingQueue = troubleshootingQueue;\n        this._flagshipInstanceId = flagshipInstanceId;\n        this._usageHitQueue = analyticHitQueue;\n        this._isUsageHitQueueSending = false;\n        this._isTroubleshootingQueueSending = false;\n        this._initTroubleshootingHit = initTroubleshootingHi;\n        this._sharedActionTracking = sharedActionTracking;\n    }\n    dispatchHitsToTag(hits) {\n        if (__fsWebpackIsBrowser__) {\n            if (!isBrowser()) {\n                return;\n            }\n            const actionTrackingHits = [];\n            for (const hit of hits) {\n                if (hit.type === HitType.EVENT &&\n                    hit.category === EventCategory.ACTION_TRACKING &&\n                    !hit.isActionTrackingHit) {\n                    const eventHit = hit;\n                    actionTrackingHits.push({\n                        visitorId: eventHit.visitorId,\n                        createdAt: eventHit.createdAt,\n                        anonymousId: eventHit.anonymousId,\n                        data: {\n                            ec: eventHit.category,\n                            ea: eventHit.action,\n                            el: eventHit.label,\n                            ev: eventHit.value\n                        }\n                    });\n                }\n            }\n            if (actionTrackingHits.length) {\n                this._sharedActionTracking?.dispatchEventHits(actionTrackingHits);\n            }\n        }\n    }\n    sendHitsToFsQa(hits) {\n        if (__fsWebpackIsBrowser__) {\n            if (!isBrowser() || !this.config.isQAModeEnabled) {\n                return;\n            }\n            import('../qaAssistant/messages/index.ts').then((message) => {\n                this._HitsToFsQa.push(...hits);\n                const BATCH_SIZE = 10;\n                const DELAY = 3000;\n                if (this._HitsToFsQa.length >= BATCH_SIZE) {\n                    message.sendFsHitToQA(this._HitsToFsQa.map(item => item.toApiKeys()));\n                    this._HitsToFsQa = [];\n                }\n                if (this._sendFsHitToQATimeoutId) {\n                    clearTimeout(this._sendFsHitToQATimeoutId);\n                }\n                if (!this._HitsToFsQa.length) {\n                    return;\n                }\n                this._sendFsHitToQATimeoutId = setTimeout(() => {\n                    message.sendFsHitToQA(this._HitsToFsQa.map(item => item.toApiKeys()));\n                    this._HitsToFsQa = [];\n                }, DELAY);\n            });\n        }\n    }\n    async addHit(hit) {\n        const hitKey = `${hit.visitorId}:${uuidV4()}`;\n        hit.key = hitKey;\n        await this.addHitInPoolQueue(hit);\n        if (hit.type === HitType.EVENT && hit.action === FS_CONSENT && hit.label === `${SDK_INFO.name}:false`) {\n            await this.notConsent(hit.visitorId);\n        }\n        logDebugSprintf(this.config, TRACKING_MANAGER, HIT_ADDED_IN_QUEUE, hit.toApiKeys());\n        if (this.config.trackingManagerConfig?.poolMaxSize &&\n            this._hitsPoolQueue.size >= this.config.trackingManagerConfig.poolMaxSize &&\n            this.config.decisionMode !== DecisionMode.BUCKETING_EDGE) {\n            this.sendBatch();\n        }\n    }\n    async activateFlag(paramHit) {\n        const hit = new Activate(paramHit);\n        hit.config = this.config;\n        const hitKey = `${hit.visitorId}:${uuidV4()}`;\n        hit.key = hitKey;\n        if (this.config.decisionMode === DecisionMode.BUCKETING_EDGE || this.config.batchActivateHits) {\n            await this.activateFlagEdgeMode(hit);\n            logDebug(this.config, sprintf(ACTIVATE_ADDED_IN_QUEUE, JSON.stringify(hit.toApiKeys())), ADD_ACTIVATE);\n            return;\n        }\n        let activateHitsPool = [];\n        if (this._activatePoolQueue.size) {\n            activateHitsPool = Array.from(this._activatePoolQueue.values());\n        }\n        this._activatePoolQueue.clear();\n        await this.sendActivate({\n            activateHitsPool,\n            currentActivate: hit,\n            batchTriggeredBy: BatchTriggeredBy.ActivateLength\n        });\n    }\n    async activateFlagEdgeMode(hit) {\n        this._activatePoolQueue.set(hit.key, hit);\n        await this.cacheHit(new Map([[hit.key, hit]]));\n    }\n    onVisitorExposed(activate) {\n        const onVisitorExposed = this.config.onVisitorExposed;\n        if (typeof onVisitorExposed !== 'function') {\n            return;\n        }\n        const fromFlag = {\n            key: activate.flagKey,\n            value: activate.flagValue,\n            defaultValue: activate.flagDefaultValue,\n            metadata: activate.flagMetadata\n        };\n        const exposedVisitor = {\n            id: activate.visitorId,\n            anonymousId: activate.anonymousId,\n            context: activate.visitorContext\n        };\n        onVisitorExposed({\n            exposedVisitor,\n            fromFlag\n        });\n    }\n    async sendBatch(batchTriggeredBy = BatchTriggeredBy.BatchLength) {\n        if (this._activatePoolQueue.size) {\n            const activateHits = Array.from(this._activatePoolQueue.values());\n            this._activatePoolQueue.clear();\n            await this.sendActivate({\n                activateHitsPool: activateHits,\n                batchTriggeredBy\n            });\n        }\n        const batch = new Batch({\n            hits: [],\n            ds: SDK_APP\n        });\n        batch.config = this.config;\n        const hitKeysToRemove = [];\n        for (const [key, item] of this._hitsPoolQueue) {\n            if ((Date.now() - item.createdAt) >= DEFAULT_HIT_CACHE_TIME_MS) {\n                hitKeysToRemove.push(key);\n                continue;\n            }\n            const batchSize = JSON.stringify(batch).length;\n            if (batchSize > BATCH_MAX_SIZE) {\n                break;\n            }\n            batch.hits.push(item);\n            hitKeysToRemove.push(key);\n        }\n        hitKeysToRemove.forEach(key => {\n            this._hitsPoolQueue.delete(key);\n        });\n        if (!batch.hits.length) {\n            return;\n        }\n        const headers = { [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON };\n        const requestBody = batch.toApiKeys();\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(HIT_EVENT_URL, {\n                headers,\n                body: requestBody,\n                timeout: this.config.timeout,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            logDebugSprintf(this.config, TRACKING_MANAGER, HIT_SENT_SUCCESS, BATCH_HIT, {\n                url: HIT_EVENT_URL,\n                body: requestBody,\n                headers,\n                nextFetchConfig: this.config.nextFetchConfig,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            await this.flushHits(hitKeysToRemove);\n            this.sendHitsToFsQa(batch.hits);\n            this.dispatchHitsToTag(batch.hits);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            batch.hits.forEach((hit) => {\n                this._hitsPoolQueue.set(hit.key, hit);\n            });\n            logErrorSprintf(this.config, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, BATCH_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: HIT_EVENT_URL,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const monitoringHttpResponse = new Troubleshooting({\n                label: TroubleshootingLabel.SEND_BATCH_HIT_ROUTE_RESPONSE_ERROR,\n                logLevel: LogLevel.ERROR,\n                visitorId: `${this._flagshipInstanceId}`,\n                flagshipInstanceId: this._flagshipInstanceId,\n                traffic: 0,\n                config: this.config,\n                httpRequestBody: batch.hits,\n                httpRequestHeaders: headers,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseMethod: 'POST',\n                httpResponseUrl: HIT_EVENT_URL,\n                httpResponseCode: error?.statusCode,\n                httpResponseTime: Date.now() - now,\n                batchTriggeredBy\n            });\n            this.sendTroubleshootingHit(monitoringHttpResponse);\n        }\n    }\n    async notConsent(visitorId) {\n        const hitKeys = Array.from(this._hitsPoolQueue).filter(([, item]) => {\n            return (item?.type !== HitType.EVENT || item?.action !== FS_CONSENT) && (item.visitorId === visitorId || item.anonymousId === visitorId);\n        });\n        const activateKeys = Array.from(this._activatePoolQueue).filter(([, item]) => {\n            return item.visitorId === visitorId || item.anonymousId === visitorId;\n        });\n        const keysToFlush = [];\n        hitKeys.forEach(([key]) => {\n            this._hitsPoolQueue.delete(key);\n            keysToFlush.push(key);\n        });\n        activateKeys.forEach(([key]) => {\n            this._activatePoolQueue.delete(key);\n            keysToFlush.push(key);\n        });\n        if (!keysToFlush.length) {\n            return;\n        }\n        await this.flushHits(keysToFlush);\n    }\n    async cacheHit(hits) {\n        try {\n            const hitCacheImplementation = this.config.hitCacheImplementation;\n            if (this.config.disableCache || !hitCacheImplementation || typeof hitCacheImplementation.cacheHit !== 'function') {\n                return;\n            }\n            const data = {};\n            hits.forEach((item, key) => {\n                const hitData = {\n                    version: HIT_CACHE_VERSION,\n                    data: {\n                        visitorId: item.visitorId,\n                        anonymousId: item.anonymousId,\n                        type: item.type,\n                        content: item.toObject(),\n                        time: Date.now()\n                    }\n                };\n                data[key] = hitData;\n            });\n            await hitCacheImplementation.cacheHit(data);\n            logDebugSprintf(this.config, PROCESS_CACHE_HIT, HIT_CACHE_SAVED, data);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, HIT_CACHE_ERROR, 'cacheHit', error.message || error);\n        }\n    }\n    async flushHits(hitKeys) {\n        try {\n            const hitCacheImplementation = this.config.hitCacheImplementation;\n            if (this.config.disableCache || !hitCacheImplementation || typeof hitCacheImplementation.flushHits !== 'function') {\n                return;\n            }\n            await hitCacheImplementation.flushHits(hitKeys);\n            logDebugSprintf(this.config, PROCESS_CACHE, HIT_DATA_FLUSHED, hitKeys);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, HIT_CACHE_ERROR, 'flushHits', error.message || error);\n        }\n    }\n    async flushAllHits() {\n        try {\n            const hitCacheImplementation = this.config.hitCacheImplementation;\n            if (this.config.disableCache || !hitCacheImplementation || typeof hitCacheImplementation.flushAllHits !== 'function') {\n                return;\n            }\n            await hitCacheImplementation.flushAllHits();\n            logDebug(this.config, ALL_HITS_FLUSHED, PROCESS_FLUSH_HIT);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, HIT_CACHE_ERROR, 'flushAllHits', error.message || error);\n        }\n    }\n    // #region Troubleshooting\n    isTroubleshootingActivated() {\n        if (!this.troubleshootingData) {\n            return false;\n        }\n        const now = new Date();\n        const isStarted = now >= this.troubleshootingData.startDate;\n        if (!isStarted) {\n            return false;\n        }\n        const isFinished = now > this.troubleshootingData.endDate;\n        if (isFinished) {\n            this._hasInitTroubleshootingHitSent = false;\n            return false;\n        }\n        return true;\n    }\n    async addTroubleshootingHit(hit) {\n        if (!hit.key) {\n            const hitKey = `${hit.visitorId}:${uuidV4()}`;\n            hit.key = hitKey;\n        }\n        this._troubleshootingQueue.set(hit.key, hit);\n        logDebug(this.config, sprintf(TROUBLESHOOTING_HIT_ADDED_IN_QUEUE, JSON.stringify(hit.toApiKeys())), ADD_TROUBLESHOOTING_HIT);\n    }\n    async sendTroubleshootingHit(hit) {\n        if (!this.isTroubleshootingActivated() || hit.traffic === undefined || this.troubleshootingData.traffic < hit.traffic) {\n            return;\n        }\n        const requestBody = hit.toApiKeys();\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(TROUBLESHOOTING_HIT_URL, { body: requestBody });\n            logDebug(this.config, sprintf(TROUBLESHOOTING_SENT_SUCCESS, JSON.stringify({\n                ...requestBody,\n                duration: Date.now() - now\n            })), SEND_TROUBLESHOOTING);\n            if (hit.key) {\n                this._troubleshootingQueue.delete(hit.key);\n                await this.flushHits([hit.key]);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            if (this.isTroubleshootingActivated()) {\n                await this.addTroubleshootingHit(hit);\n            }\n            logError(this.config, errorFormat(error.message || error, {\n                url: TROUBLESHOOTING_HIT_URL,\n                headers: {},\n                body: requestBody,\n                duration: Date.now() - now\n            }), SEND_BATCH);\n        }\n    }\n    async sendInitTroubleshootingHit() {\n        if (!this.isTroubleshootingActivated() || !this._initTroubleshootingHit || this._hasInitTroubleshootingHitSent) {\n            return;\n        }\n        await this.sendTroubleshootingHit(this._initTroubleshootingHit);\n        this._hasInitTroubleshootingHitSent = true;\n    }\n    async sendTroubleshootingQueue() {\n        await this.sendInitTroubleshootingHit();\n        if (!this.isTroubleshootingActivated() || this._isTroubleshootingQueueSending || this._troubleshootingQueue.size === 0) {\n            return;\n        }\n        this._isTroubleshootingQueueSending = true;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        for (const [_, item] of Array.from(this._troubleshootingQueue)) {\n            await this.sendTroubleshootingHit(item);\n        }\n        this._isTroubleshootingQueueSending = false;\n    }\n    // #endregion\n    // #region Analytic hit\n    async addUsageHit(hit) {\n        if (!hit.key) {\n            const hitKey = `${hit.visitorId}:${uuidV4()}`;\n            hit.key = hitKey;\n        }\n        this._usageHitQueue.set(hit.key, hit);\n        logDebug(this.config, sprintf(USAGE_HIT_ADDED_IN_QUEUE, JSON.stringify(hit.toApiKeys())), ADD_USAGE_HIT);\n    }\n    async sendUsageHit(hit) {\n        const requestBody = hit.toApiKeys();\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(USAGE_HIT_URL, { body: requestBody });\n            logDebug(this.config, sprintf(USAGE_HIT_SENT_SUCCESS, JSON.stringify({\n                ...requestBody,\n                duration: Date.now() - now\n            })), SEND_USAGE_HIT);\n            if (hit.key) {\n                this._usageHitQueue.delete(hit.key);\n                await this.flushHits([hit.key]);\n            }\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            await this.addUsageHit(hit);\n            logError(this.config, errorFormat(error.message || error, {\n                url: USAGE_HIT_URL,\n                headers: {},\n                body: requestBody,\n                duration: Date.now() - now\n            }), SEND_BATCH);\n        }\n    }\n    async sendUsageHitQueue() {\n        if (this._isUsageHitQueueSending || this._usageHitQueue.size === 0) {\n            return;\n        }\n        this._isUsageHitQueueSending = true;\n        for (const [, item] of Array.from(this._usageHitQueue)) {\n            await this.sendUsageHit(item);\n        }\n        this._isUsageHitQueueSending = false;\n    }\n}\n","import { ACTIVATE_HIT, DEFAULT_HIT_CACHE_TIME_MS, HIT_SENT_SUCCESS, MAX_ACTIVATE_HIT_PER_BATCH, TRACKING_MANAGER, TRACKING_MANAGER_ERROR } from '../enum/FlagshipConstant';\nimport { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nimport { BASE_API_URL, HEADER_APPLICATION_JSON, HEADER_CONTENT_TYPE, HEADER_X_API_KEY, HEADER_X_SDK_CLIENT, HEADER_X_SDK_VERSION, LogLevel, SDK_INFO, URL_ACTIVATE_MODIFICATION } from '../enum/index';\nimport { ActivateBatch } from '../hit/ActivateBatch';\nimport { logDebugSprintf, logErrorSprintf } from '../utils/utils';\nimport { BatchingCachingStrategyAbstract } from './BatchingCachingStrategyAbstract';\nimport { TroubleshootingLabel } from '../types';\nimport { Troubleshooting } from '../hit/Troubleshooting';\nexport class BatchingContinuousCachingStrategy extends BatchingCachingStrategyAbstract {\n    async addHitInPoolQueue(hit) {\n        this._hitsPoolQueue.set(hit.key, hit);\n        await this.cacheHit(new Map([[hit.key, hit]]));\n    }\n    async sendActivateHitBatch(activateBatch, batchTriggeredBy, currentActivate) {\n        const headers = {\n            [HEADER_X_API_KEY]: this.config.apiKey,\n            [HEADER_X_SDK_CLIENT]: SDK_INFO.name,\n            [HEADER_X_SDK_VERSION]: SDK_INFO.version,\n            [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON\n        };\n        if (currentActivate) {\n            activateBatch.hits.push(currentActivate);\n        }\n        const requestBody = activateBatch.toApiKeys();\n        const url = BASE_API_URL + URL_ACTIVATE_MODIFICATION;\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(url, {\n                headers,\n                body: requestBody,\n                timeout: this.config.timeout,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            logDebugSprintf(this.config, TRACKING_MANAGER, HIT_SENT_SUCCESS, ACTIVATE_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const hitKeysToRemove = activateBatch.hits.filter(item => item.key !== currentActivate?.key).map(item => item.key);\n            activateBatch.hits.forEach(item => {\n                this.onVisitorExposed(item);\n            });\n            if (hitKeysToRemove.length) {\n                await this.flushHits(hitKeysToRemove);\n            }\n            this.sendHitsToFsQa(activateBatch.hits);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            activateBatch.hits.forEach(item => {\n                this._activatePoolQueue.set(item.key, item);\n            });\n            if (currentActivate) {\n                await this.cacheHit(new Map([[currentActivate.key, currentActivate]]));\n            }\n            logErrorSprintf(this.config, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, ACTIVATE_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const monitoringHttpResponse = new Troubleshooting({\n                label: TroubleshootingLabel.SEND_ACTIVATE_HIT_ROUTE_ERROR,\n                logLevel: LogLevel.ERROR,\n                visitorId: `${this._flagshipInstanceId}`,\n                traffic: 0,\n                config: this.config,\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                httpResponseTime: Date.now() - now,\n                batchTriggeredBy\n            });\n            this.sendTroubleshootingHit(monitoringHttpResponse);\n        }\n    }\n    async sendActivate({ activateHitsPool, currentActivate, batchTriggeredBy }) {\n        const filteredItems = Array.from(activateHitsPool.filter(item => (Date.now() - item.createdAt) < DEFAULT_HIT_CACHE_TIME_MS));\n        if (!filteredItems.length && currentActivate) {\n            const batch = new ActivateBatch([], this.config);\n            await this.sendActivateHitBatch(batch, batchTriggeredBy, currentActivate);\n            return;\n        }\n        for (let i = 0; i < filteredItems.length; i += MAX_ACTIVATE_HIT_PER_BATCH) {\n            const batch = new ActivateBatch(filteredItems.slice(i, i + MAX_ACTIVATE_HIT_PER_BATCH), this.config);\n            this.sendActivateHitBatch(batch, batchTriggeredBy, i === 0 ? currentActivate : undefined);\n        }\n    }\n}\n","import { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nimport { BASE_API_URL, BATCH_MAX_SIZE, DEFAULT_HIT_CACHE_TIME_MS, HEADER_APPLICATION_JSON, HEADER_CONTENT_TYPE, HEADER_X_API_KEY, HEADER_X_SDK_CLIENT, HEADER_X_SDK_VERSION, HIT_EVENT_URL, HIT_SENT_SUCCESS, LogLevel, SDK_INFO, URL_ACTIVATE_MODIFICATION, BATCH_HIT, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, ACTIVATE_HIT } from '../enum/index';\nimport { ActivateBatch } from '../hit/ActivateBatch.ts';\nimport { Batch } from '../hit/Batch.ts';\nimport { Troubleshooting } from '../hit/Troubleshooting.ts';\nimport { TroubleshootingLabel } from '../types';\nimport { logDebugSprintf, logErrorSprintf } from '../utils/utils';\nimport { BatchingCachingStrategyAbstract } from './BatchingCachingStrategyAbstract';\nexport class BatchingPeriodicCachingStrategy extends BatchingCachingStrategyAbstract {\n    async addHitInPoolQueue(hit) {\n        this._hitsPoolQueue.set(hit.key, hit);\n    }\n    async sendActivate({ activateHitsPool, currentActivate, batchTriggeredBy }) {\n        const headers = {\n            [HEADER_X_API_KEY]: this.config.apiKey,\n            [HEADER_X_SDK_CLIENT]: SDK_INFO.name,\n            [HEADER_X_SDK_VERSION]: SDK_INFO.version,\n            [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON\n        };\n        const activateBatch = new ActivateBatch(Array.from(activateHitsPool.filter(item => (Date.now() - item.createdAt) < DEFAULT_HIT_CACHE_TIME_MS)), this.config);\n        if (currentActivate) {\n            activateBatch.hits.push(currentActivate);\n        }\n        const requestBody = activateBatch.toApiKeys();\n        const url = BASE_API_URL + URL_ACTIVATE_MODIFICATION;\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(url, {\n                headers,\n                body: requestBody,\n                timeout: this.config.timeout,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            logDebugSprintf(this.config, TRACKING_MANAGER, HIT_SENT_SUCCESS, ACTIVATE_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            activateBatch.hits.forEach(item => {\n                this.onVisitorExposed(item);\n            });\n            this.sendHitsToFsQa(activateBatch.hits);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            activateBatch.hits.forEach(item => {\n                this._activatePoolQueue.set(item.key, item);\n            });\n            logErrorSprintf(this.config, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, ACTIVATE_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const monitoringHttpResponse = new Troubleshooting({\n                label: TroubleshootingLabel.SEND_ACTIVATE_HIT_ROUTE_ERROR,\n                logLevel: LogLevel.ERROR,\n                visitorId: `${this._flagshipInstanceId}`,\n                traffic: 0,\n                config: this.config,\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                httpResponseTime: Date.now() - now,\n                batchTriggeredBy\n            });\n            this.sendTroubleshootingHit(monitoringHttpResponse);\n        }\n    }\n    async sendBatch(batchTriggeredBy = BatchTriggeredBy.BatchLength) {\n        let hasActivateHit = false;\n        if (this._activatePoolQueue.size) {\n            const activateHits = Array.from(this._activatePoolQueue.values());\n            this._activatePoolQueue.clear();\n            await this.sendActivate({\n                activateHitsPool: activateHits,\n                batchTriggeredBy\n            });\n            hasActivateHit = true;\n        }\n        const headers = { [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON };\n        const batch = new Batch({ hits: [] });\n        batch.config = this.config;\n        let batchSize = 0;\n        const hitKeysToRemove = [];\n        for (const [key, item] of this._hitsPoolQueue) {\n            if ((Date.now() - item.createdAt) >= DEFAULT_HIT_CACHE_TIME_MS) {\n                hitKeysToRemove.push(key);\n                continue;\n            }\n            batchSize = JSON.stringify(batch).length;\n            if (batchSize > BATCH_MAX_SIZE) {\n                break;\n            }\n            batch.hits.push(item);\n            hitKeysToRemove.push(key);\n        }\n        hitKeysToRemove.forEach(key => {\n            this._hitsPoolQueue.delete(key);\n        });\n        if (!batch.hits.length) {\n            if (hasActivateHit) {\n                await this.cacheHit(this._activatePoolQueue);\n            }\n            return;\n        }\n        const requestBody = batch.toApiKeys();\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(HIT_EVENT_URL, {\n                headers,\n                body: requestBody,\n                timeout: this.config.timeout,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            logDebugSprintf(this.config, TRACKING_MANAGER, HIT_SENT_SUCCESS, BATCH_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: HIT_EVENT_URL,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            this.sendHitsToFsQa(batch.hits);\n            this.dispatchHitsToTag(batch.hits);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            batch.hits.forEach((hit) => {\n                this._hitsPoolQueue.set(hit.key, hit);\n            });\n            logErrorSprintf(this.config, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, BATCH_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: HIT_EVENT_URL,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const monitoringHttpResponse = new Troubleshooting({\n                label: TroubleshootingLabel.SEND_BATCH_HIT_ROUTE_RESPONSE_ERROR,\n                logLevel: LogLevel.ERROR,\n                visitorId: `${this._flagshipInstanceId}`,\n                traffic: 0,\n                config: this.config,\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseMethod: 'POST',\n                httpResponseUrl: HIT_EVENT_URL,\n                httpResponseCode: error?.statusCode,\n                httpResponseTime: Date.now() - now\n            });\n            this.addTroubleshootingHit(monitoringHttpResponse);\n        }\n        const mergedQueue = new Map([...this._hitsPoolQueue, ...this._activatePoolQueue]);\n        await this.flushAllHits();\n        await this.cacheHit(mergedQueue);\n    }\n}\n","import { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nimport { HEADER_CONTENT_TYPE, HEADER_APPLICATION_JSON, HIT_EVENT_URL, HitType, HIT_SENT_SUCCESS, FS_CONSENT, SDK_INFO, BASE_API_URL, HEADER_X_API_KEY, HEADER_X_SDK_CLIENT, HEADER_X_SDK_VERSION, URL_ACTIVATE_MODIFICATION, LogLevel, ACTIVATE_HIT, DIRECT_HIT, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, DEFAULT_HIT_CACHE_TIME_MS } from '../enum/index';\nimport { TroubleshootingLabel } from '../types';\nimport { logDebugSprintf, logErrorSprintf, uuidV4 } from '../utils/utils';\nimport { BatchingCachingStrategyAbstract } from './BatchingCachingStrategyAbstract';\nimport { ActivateBatch } from '../hit/ActivateBatch.ts';\nimport { Troubleshooting } from '../hit/Troubleshooting.ts';\nexport class NoBatchingContinuousCachingStrategy extends BatchingCachingStrategyAbstract {\n    cacheHitKeys;\n    constructor(param) {\n        super(param);\n        this.cacheHitKeys = {};\n    }\n    async activateFlag(hit) {\n        const hitKey = `${hit.visitorId}:${uuidV4()}`;\n        hit.key = hitKey;\n        await this.sendActivate({\n            activateHitsPool: [],\n            currentActivate: hit,\n            batchTriggeredBy: BatchTriggeredBy.ActivateLength\n        });\n    }\n    async addHit(hit) {\n        const hitKey = `${hit.visitorId}:${uuidV4()}`;\n        hit.key = hitKey;\n        if (hit.type === HitType.EVENT && hit.action === FS_CONSENT && hit.label === `${SDK_INFO.name}:false`) {\n            await this.notConsent(hit.visitorId);\n        }\n        await this.sendHit(hit);\n    }\n    addHitInPoolQueue(_hit) {\n        return Promise.resolve();\n    }\n    async sendHit(hit) {\n        const headers = { [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON };\n        const requestBody = hit.toApiKeys();\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(HIT_EVENT_URL, {\n                headers,\n                body: requestBody,\n                timeout: this.config.timeout,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            logDebugSprintf(this.config, TRACKING_MANAGER, HIT_SENT_SUCCESS, DIRECT_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: HIT_EVENT_URL,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[BatchTriggeredBy.DirectHit]\n            });\n            this.sendHitsToFsQa([hit]);\n            this.dispatchHitsToTag([hit]);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            if (hit.type !== HitType.EVENT || hit.action !== FS_CONSENT) {\n                this.cacheHitKeys[hit.key] = hit.visitorId;\n            }\n            await this.cacheHit(new Map().set(hit.key, hit));\n            logErrorSprintf(this.config, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, DIRECT_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: HIT_EVENT_URL,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[BatchTriggeredBy.DirectHit]\n            });\n            const monitoringHttpResponse = new Troubleshooting({\n                label: TroubleshootingLabel.SEND_HIT_ROUTE_ERROR,\n                logLevel: LogLevel.ERROR,\n                visitorId: `${this._flagshipInstanceId}`,\n                traffic: 0,\n                config: this.config,\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: HIT_EVENT_URL,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                httpResponseTime: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy.DirectHit\n            });\n            this.sendTroubleshootingHit(monitoringHttpResponse);\n        }\n    }\n    async notConsent(visitorId) {\n        const cacheHitKeysEntries = Object.entries(this.cacheHitKeys).filter(([_, value]) => value === visitorId);\n        const keys = [];\n        for (const [key] of cacheHitKeysEntries) {\n            keys.push(key);\n        }\n        const hitsKeys = Array.from(this._hitsPoolQueue).filter(([_, item]) => {\n            return (item?.type !== HitType.EVENT || item?.action !== FS_CONSENT) && (item.visitorId === visitorId || item.anonymousId === visitorId);\n        });\n        const activateKeys = Array.from(this._activatePoolQueue).filter(([_, item]) => {\n            return item.visitorId === visitorId || item.anonymousId === visitorId;\n        });\n        const keysToFlush = [];\n        hitsKeys.forEach(([key]) => {\n            this._hitsPoolQueue.delete(key);\n            keysToFlush.push(key);\n        });\n        activateKeys.forEach(([key]) => {\n            this._activatePoolQueue.delete(key);\n            keysToFlush.push(key);\n        });\n        const mergedKeys = [...keys, ...keysToFlush];\n        if (!mergedKeys.length) {\n            return;\n        }\n        await this.flushHits(mergedKeys);\n        this.cacheHitKeys = {};\n    }\n    async sendActivate({ activateHitsPool, currentActivate, batchTriggeredBy }) {\n        const headers = {\n            [HEADER_X_API_KEY]: this.config.apiKey,\n            [HEADER_X_SDK_CLIENT]: SDK_INFO.name,\n            [HEADER_X_SDK_VERSION]: SDK_INFO.version,\n            [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON\n        };\n        const activateBatch = new ActivateBatch(Array.from(activateHitsPool.filter(item => (Date.now() - item.createdAt) < DEFAULT_HIT_CACHE_TIME_MS)), this.config);\n        if (currentActivate) {\n            activateBatch.hits.push(currentActivate);\n        }\n        const requestBody = activateBatch.toApiKeys();\n        const url = BASE_API_URL + URL_ACTIVATE_MODIFICATION;\n        const now = Date.now();\n        try {\n            await this._httpClient.postAsync(url, {\n                headers,\n                body: requestBody,\n                timeout: this.config.timeout,\n                nextFetchConfig: this.config.nextFetchConfig\n            });\n            logDebugSprintf(this.config, TRACKING_MANAGER, HIT_SENT_SUCCESS, ACTIVATE_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const hitKeysToRemove = activateHitsPool.map(item => item.key);\n            activateBatch.hits.forEach(item => {\n                this.onVisitorExposed(item);\n            });\n            if (hitKeysToRemove.length) {\n                await this.flushHits(hitKeysToRemove);\n            }\n            this.sendHitsToFsQa(activateBatch.hits);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            activateBatch.hits.forEach((item) => {\n                this.cacheHitKeys[item.key] = item.visitorId;\n            });\n            if (currentActivate) {\n                await this.cacheHit(new Map([[currentActivate.key, currentActivate]]));\n            }\n            logErrorSprintf(this.config, TRACKING_MANAGER, TRACKING_MANAGER_ERROR, ACTIVATE_HIT, {\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseCode: error?.statusCode,\n                duration: Date.now() - now,\n                batchTriggeredBy: BatchTriggeredBy[batchTriggeredBy]\n            });\n            const monitoringHttpResponse = new Troubleshooting({\n                label: TroubleshootingLabel.SEND_ACTIVATE_HIT_ROUTE_ERROR,\n                logLevel: LogLevel.ERROR,\n                visitorId: `${this._flagshipInstanceId}`,\n                traffic: 0,\n                config: this.config,\n                httpRequestBody: requestBody,\n                httpRequestHeaders: headers,\n                httpRequestMethod: 'POST',\n                httpRequestUrl: url,\n                httpResponseBody: error?.message,\n                httpResponseHeaders: error?.headers,\n                httpResponseMethod: 'POST',\n                httpResponseUrl: url,\n                httpResponseCode: error?.statusCode,\n                httpResponseTime: Date.now() - now,\n                batchTriggeredBy\n            });\n            this.sendTroubleshootingHit(monitoringHttpResponse);\n        }\n    }\n}\n","import { IC_API_ITEM, IN_API_ITEM, IP_API_ITEM, IQ_API_ITEM, IV_API_ITEM, TID_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitType } from '../enum/HitType';\nimport { HitAbstract } from './HitAbstract';\nexport const ERROR_MESSAGE = 'Transaction Id, Item name and item code are required';\nexport class Item extends HitAbstract {\n    _transactionId;\n    _productName;\n    _productSku;\n    _itemPrice;\n    _itemQuantity;\n    _itemCategory;\n    get transactionId() {\n        return this._transactionId;\n    }\n    /**\n     * Specify transaction unique identifier.\n     */\n    set transactionId(v) {\n        if (!this.isNotEmptyString(v, 'transactionId')) {\n            return;\n        }\n        this._transactionId = v;\n    }\n    get productName() {\n        return this._productName;\n    }\n    /**\n     * Specify name of the item product.\n     */\n    set productName(v) {\n        if (!this.isNotEmptyString(v, 'productName')) {\n            return;\n        }\n        this._productName = v;\n    }\n    get productSku() {\n        return this._productSku;\n    }\n    /**\n     * Specify the SKU or item code.\n     */\n    set productSku(v) {\n        if (!this.isNotEmptyString(v, 'productSku')) {\n            return;\n        }\n        this._productSku = v;\n    }\n    get itemPrice() {\n        return this._itemPrice;\n    }\n    /**\n     * Specify the price for a single item\n     */\n    set itemPrice(v) {\n        if (!this.isNumeric(v, 'itemPrice')) {\n            return;\n        }\n        this._itemPrice = v;\n    }\n    get itemQuantity() {\n        return this._itemQuantity;\n    }\n    /**\n     * Specify the number of items purchased.\n     */\n    set itemQuantity(v) {\n        if (!this.isInteger(v, 'itemQuantity')) {\n            return;\n        }\n        this._itemQuantity = Math.trunc(v);\n    }\n    get itemCategory() {\n        return this._itemCategory;\n    }\n    /**\n     * Specify the category that the item belongs to\n     */\n    set itemCategory(v) {\n        if (!this.isNotEmptyString(v, 'itemCategory')) {\n            return;\n        }\n        this._itemCategory = v;\n    }\n    /**\n     *Item constructor.\n     * @param transactionId : Transaction unique identifier.\n     * @param productName : Name of the item product.\n     * @param productSku : The SKU or item code.\n     */\n    constructor(param) {\n        super({\n            type: HitType.ITEM,\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId,\n            qaMode: param.qaMode,\n            isActionTrackingHit: param.isActionTrackingHit\n        });\n        const { transactionId, productName, productSku, itemCategory, itemPrice, itemQuantity } = param;\n        this.transactionId = transactionId;\n        this.productName = productName;\n        this.productSku = productSku;\n        if (itemCategory) {\n            this.itemCategory = itemCategory;\n        }\n        if (itemPrice) {\n            this.itemPrice = itemPrice;\n        }\n        if (itemQuantity) {\n            this.itemQuantity = itemQuantity;\n        }\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) &&\n            this.transactionId &&\n            this.productName &&\n            this.productSku);\n    }\n    toApiKeys() {\n        const apiKeys = super.toApiKeys();\n        apiKeys[TID_API_ITEM] = this.transactionId;\n        apiKeys[IN_API_ITEM] = this.productName;\n        apiKeys[IC_API_ITEM] = this.productSku;\n        if (this.itemPrice) {\n            apiKeys[IP_API_ITEM] = this.itemPrice;\n        }\n        if (this.itemQuantity) {\n            apiKeys[IQ_API_ITEM] = this.itemQuantity;\n        }\n        if (this.itemCategory) {\n            apiKeys[IV_API_ITEM] = this.itemCategory;\n        }\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            transactionId: this.transactionId,\n            productName: this.productName,\n            productSku: this.productSku,\n            itemPrice: this.itemPrice,\n            itemQuantity: this.itemQuantity,\n            itemCategory: this.itemCategory\n        };\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { DL_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitType } from '../enum/HitType';\nimport { HitAbstract } from './HitAbstract';\nexport const ERROR_MESSAGE = 'documentLocation url is required';\nexport class Page extends HitAbstract {\n    _documentLocation;\n    get documentLocation() {\n        return this._documentLocation;\n    }\n    set documentLocation(v) {\n        if (!this.isNotEmptyString(v, 'documentLocation')) {\n            return;\n        }\n        this._documentLocation = v;\n    }\n    constructor(page) {\n        super({\n            type: HitType.PAGE_VIEW,\n            userIp: page.userIp,\n            screenResolution: page.screenResolution,\n            locale: page.locale,\n            sessionNumber: page.sessionNumber,\n            visitorId: page.visitorId,\n            anonymousId: page.anonymousId,\n            qaMode: page.qaMode,\n            isActionTrackingHit: page.isActionTrackingHit\n        });\n        this.documentLocation = page.documentLocation;\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) && this.documentLocation);\n    }\n    toApiKeys() {\n        const apiKeys = super.toApiKeys();\n        apiKeys[DL_API_ITEM] = this.documentLocation;\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            documentLocation: this.documentLocation\n        };\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ICN_API_ITEM, PM_API_ITEM, SM_API_ITEM, TA_API_ITEM, TC_API_ITEM, TCC_API_ITEM, TID_API_ITEM, TR_API_ITEM, TS_API_ITEM, TT_API_ITEM } from '../enum/FlagshipConstant';\nimport { HitType } from '../enum/HitType';\nimport { logError, sprintf } from '../utils/utils';\nimport { HitAbstract } from './HitAbstract';\nexport const CURRENCY_ERROR = '{0} must be a string and have exactly 3 letters';\nexport const ERROR_MESSAGE = 'Transaction Id and Transaction affiliation are required';\nexport class Transaction extends HitAbstract {\n    _transactionId;\n    _affiliation;\n    _taxes;\n    _currency;\n    _couponCode;\n    _itemCount;\n    _shippingMethod;\n    _paymentMethod;\n    _totalRevenue;\n    _shippingCosts;\n    get transactionId() {\n        return this._transactionId;\n    }\n    set transactionId(v) {\n        if (!this.isNotEmptyString(v, 'transactionId')) {\n            return;\n        }\n        this._transactionId = v;\n    }\n    get affiliation() {\n        return this._affiliation;\n    }\n    set affiliation(v) {\n        if (!this.isNotEmptyString(v, 'affiliation')) {\n            return;\n        }\n        this._affiliation = v;\n    }\n    get taxes() {\n        return this._taxes;\n    }\n    set taxes(v) {\n        if (!this.isNumeric(v, 'taxes')) {\n            return;\n        }\n        this._taxes = v;\n    }\n    get currency() {\n        return this._currency;\n    }\n    set currency(v) {\n        if (!v || typeof v !== 'string' || v.length !== 3) {\n            logError(this.config, sprintf(CURRENCY_ERROR, 'currency'), 'currency');\n            return;\n        }\n        this._currency = v;\n    }\n    get couponCode() {\n        return this._couponCode;\n    }\n    set couponCode(v) {\n        if (!this.isNotEmptyString(v, 'couponCode')) {\n            return;\n        }\n        this._couponCode = v;\n    }\n    get itemCount() {\n        return this._itemCount;\n    }\n    set itemCount(v) {\n        if (!this.isInteger(v, 'itemCount')) {\n            return;\n        }\n        this._itemCount = Math.trunc(v);\n    }\n    get shippingMethod() {\n        return this._shippingMethod;\n    }\n    set shippingMethod(v) {\n        if (!this.isNotEmptyString(v, 'shippingMethod')) {\n            return;\n        }\n        this._shippingMethod = v;\n    }\n    get paymentMethod() {\n        return this._paymentMethod;\n    }\n    set paymentMethod(v) {\n        if (!this.isNotEmptyString(v, 'paymentMethod')) {\n            return;\n        }\n        this._paymentMethod = v;\n    }\n    get totalRevenue() {\n        return this._totalRevenue;\n    }\n    set totalRevenue(v) {\n        if (!this.isNumeric(v, 'totalRevenue')) {\n            return;\n        }\n        this._totalRevenue = v;\n    }\n    get shippingCosts() {\n        return this._shippingCosts;\n    }\n    set shippingCosts(v) {\n        if (!this.isNumeric(v, 'shippingCosts')) {\n            return;\n        }\n        this._shippingCosts = v;\n    }\n    constructor(param) {\n        super({\n            type: HitType.TRANSACTION,\n            userIp: param.userIp,\n            screenResolution: param.screenResolution,\n            locale: param.locale,\n            sessionNumber: param.sessionNumber,\n            visitorId: param.visitorId,\n            anonymousId: param.anonymousId,\n            qaMode: param.qaMode,\n            isActionTrackingHit: param.isActionTrackingHit\n        });\n        const { transactionId, affiliation, taxes, currency, couponCode, itemCount, shippingMethod, paymentMethod, totalRevenue, shippingCosts } = param;\n        this.transactionId = transactionId;\n        this.affiliation = affiliation;\n        if (taxes) {\n            this.taxes = taxes;\n        }\n        if (currency) {\n            this.currency = currency;\n        }\n        if (couponCode) {\n            this.couponCode = couponCode;\n        }\n        if (itemCount) {\n            this.itemCount = itemCount;\n        }\n        if (shippingMethod) {\n            this.shippingMethod = shippingMethod;\n        }\n        if (paymentMethod) {\n            this.paymentMethod = paymentMethod;\n        }\n        if (totalRevenue) {\n            this.totalRevenue = totalRevenue;\n        }\n        if (shippingCosts) {\n            this.shippingCosts = shippingCosts;\n        }\n    }\n    isReady(checkParent = true) {\n        return !!((!checkParent || super.isReady()) && this.transactionId && this.affiliation);\n    }\n    toApiKeys() {\n        const apiKeys = super.toApiKeys();\n        apiKeys[TID_API_ITEM] = this.transactionId;\n        apiKeys[TA_API_ITEM] = this.affiliation;\n        if (this.taxes) {\n            apiKeys[TT_API_ITEM] = this.taxes;\n        }\n        if (this.currency) {\n            apiKeys[TC_API_ITEM] = this.currency;\n        }\n        if (this.couponCode) {\n            apiKeys[TCC_API_ITEM] = this.couponCode;\n        }\n        if (this.itemCount) {\n            apiKeys[ICN_API_ITEM] = this.itemCount;\n        }\n        if (this.shippingMethod) {\n            apiKeys[SM_API_ITEM] = this.shippingMethod;\n        }\n        if (this.paymentMethod) {\n            apiKeys[PM_API_ITEM] = this.paymentMethod;\n        }\n        if (this.totalRevenue) {\n            apiKeys[TR_API_ITEM] = this.totalRevenue;\n        }\n        if (this.shippingCosts) {\n            apiKeys[TS_API_ITEM] = this.shippingCosts;\n        }\n        return apiKeys;\n    }\n    toObject() {\n        return {\n            ...super.toObject(),\n            transactionId: this.transactionId,\n            affiliation: this.affiliation,\n            taxes: this.taxes,\n            currency: this.currency,\n            couponCode: this.couponCode,\n            itemCount: this.itemCount,\n            shippingMethod: this.shippingMethod,\n            paymentMethod: this.paymentMethod,\n            totalRevenue: this.totalRevenue,\n            shippingCosts: this.shippingCosts\n        };\n    }\n    getErrorMessage() {\n        return ERROR_MESSAGE;\n    }\n}\n","import { BATCH_LOOP_STARTED, BATCH_LOOP_STOPPED, DEFAULT_HIT_CACHE_TIME_MS, HitType, HIT_CACHE_ERROR, HIT_CACHE_LOADED, PROCESS_CACHE, PROCESS_LOOKUP_HIT, TRACKING_MANAGER } from '../enum/index';\nimport { CacheStrategy } from '../enum/CacheStrategy';\nimport { Segment } from '../hit/Segment';\nimport { Event } from '../hit/Event';\nimport { Screen } from '../hit/Screen';\nimport { logDebugSprintf, logError, logErrorSprintf, logInfo, logInfoSprintf } from '../utils/utils';\nimport { BatchingContinuousCachingStrategy } from './BatchingContinuousCachingStrategy';\nimport { BatchingPeriodicCachingStrategy } from './BatchingPeriodicCachingStrategy';\nimport { NoBatchingContinuousCachingStrategy } from './NoBatchingContinuousCachingStrategy';\nimport { Activate } from '../hit/Activate';\nimport { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nimport { Item } from '../hit/Item.ts';\nimport { Page } from '../hit/Page.ts';\nimport { Transaction } from '../hit/Transaction.ts';\nexport const LOOKUP_HITS_JSON_ERROR = 'JSON DATA must be an array of object';\nexport const LOOKUP_HITS_JSON_OBJECT_ERROR = 'JSON DATA must fit the type HitCacheDTO';\nexport class TrackingManagerAbstract {\n    _httpClient;\n    _config;\n    _hitsPoolQueue;\n    _activatePoolQueue;\n    _troubleshootingQueue;\n    _analyticHitQueue;\n    strategy;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    _intervalID;\n    _isPooling = false;\n    _flagshipInstanceId;\n    _initTroubleshootingHit;\n    _sharedActionTracking;\n    get initTroubleshootingHit() {\n        return this._initTroubleshootingHit;\n    }\n    set initTroubleshootingHit(v) {\n        this._initTroubleshootingHit = v;\n        this.strategy.initTroubleshootingHit = v;\n    }\n    get flagshipInstanceId() {\n        return this._flagshipInstanceId;\n    }\n    get troubleshootingData() {\n        return this.strategy.troubleshootingData;\n    }\n    set troubleshootingData(v) {\n        this.strategy.troubleshootingData = v;\n    }\n    constructor(httpClient, config, flagshipInstanceId, sharedActionTracking) {\n        this._flagshipInstanceId = flagshipInstanceId;\n        this._hitsPoolQueue = new Map();\n        this._activatePoolQueue = new Map();\n        this._troubleshootingQueue = new Map();\n        this._analyticHitQueue = new Map();\n        this._httpClient = httpClient;\n        this._config = config;\n        this._sharedActionTracking = sharedActionTracking;\n        this.strategy = this.initStrategy();\n        this.lookupHits();\n    }\n    initStrategy() {\n        let strategy;\n        const argument = {\n            config: this.config,\n            httpClient: this.httpClient,\n            hitsPoolQueue: this._hitsPoolQueue,\n            activatePoolQueue: this._activatePoolQueue,\n            troubleshootingQueue: this._troubleshootingQueue,\n            analyticHitQueue: this._analyticHitQueue,\n            flagshipInstanceId: this.flagshipInstanceId,\n            initTroubleshootingHit: this.initTroubleshootingHit,\n            sharedActionTracking: this._sharedActionTracking\n        };\n        switch (this.config.trackingManagerConfig?.cacheStrategy) {\n            case CacheStrategy.PERIODIC_CACHING:\n                strategy = new BatchingPeriodicCachingStrategy(argument);\n                break;\n            case CacheStrategy.CONTINUOUS_CACHING:\n                strategy = new BatchingContinuousCachingStrategy(argument);\n                break;\n            default:\n                strategy = new NoBatchingContinuousCachingStrategy(argument);\n                break;\n        }\n        return strategy;\n    }\n    get httpClient() {\n        return this._httpClient;\n    }\n    get config() {\n        return this._config;\n    }\n    async sendTroubleshootingHit(hit) {\n        await this.strategy.sendTroubleshootingHit(hit);\n    }\n    startBatchingLoop() {\n        const batchIntervals = this.config.trackingManagerConfig?.batchIntervals;\n        if (batchIntervals === 0) {\n            return;\n        }\n        const timeInterval = batchIntervals * 1000;\n        logInfoSprintf(this.config, TRACKING_MANAGER, BATCH_LOOP_STARTED, timeInterval);\n        this._intervalID = setInterval(() => {\n            this.batchingLoop();\n        }, timeInterval);\n    }\n    stopBatchingLoop() {\n        clearInterval(this._intervalID);\n        this._isPooling = false;\n        logInfo(this.config, BATCH_LOOP_STOPPED, TRACKING_MANAGER);\n    }\n    async batchingLoop() {\n        if (this._isPooling) {\n            return;\n        }\n        this._isPooling = true;\n        await this.strategy.sendBatch(BatchTriggeredBy.Timer);\n        await this.strategy.sendTroubleshootingQueue();\n        await this.strategy.sendUsageHitQueue();\n        this._isPooling = false;\n    }\n    checkLookupHitData(item) {\n        if (item?.version === 1 && item?.data?.type && item?.data?.content) {\n            return true;\n        }\n        logError(this.config, LOOKUP_HITS_JSON_OBJECT_ERROR, PROCESS_LOOKUP_HIT);\n        return false;\n    }\n    async extractHitData(key, item) {\n        let hit;\n        switch (item.data.type) {\n            case HitType.EVENT: {\n                hit = new Event(item.data.content);\n                break;\n            }\n            case HitType.ITEM: {\n                hit = new Item(item.data.content);\n                break;\n            }\n            case HitType.PAGE: {\n                hit = new Page(item.data.content);\n                break;\n            }\n            case HitType.SCREEN: {\n                hit = new Screen(item.data.content);\n                break;\n            }\n            case 'SEGMENT': {\n                hit = new Segment(item.data.content);\n                break;\n            }\n            case HitType.TRANSACTION: {\n                hit = new Transaction(item.data.content);\n                break;\n            }\n            default:\n        }\n        return hit;\n    }\n    async processCachedHits(hitsCache) {\n        const checkHitTime = (time) => (((Date.now() - time)) <= DEFAULT_HIT_CACHE_TIME_MS);\n        const wrongHitKeys = [];\n        const entries = Object.entries(hitsCache);\n        for (const [key, item] of entries) {\n            if (!this.checkLookupHitData(item) || !checkHitTime(item.data.time)) {\n                wrongHitKeys.push(key);\n                continue;\n            }\n            if (item.data.type === 'ACTIVATE') {\n                const hit = new Activate(item.data.content);\n                hit.key = key;\n                hit.createdAt = item.data.content.createdAt;\n                hit.config = this.config;\n                this._activatePoolQueue.set(key, hit);\n                continue;\n            }\n            const hit = await this.extractHitData(key, item);\n            if (!hit) {\n                wrongHitKeys.push(key);\n                continue;\n            }\n            hit.key = key;\n            hit.createdAt = item.data.content.createdAt;\n            hit.config = this.config;\n            this._hitsPoolQueue.set(key, hit);\n        }\n        if (wrongHitKeys.length) {\n            await this.strategy.flushHits(wrongHitKeys);\n        }\n    }\n    async lookupHits() {\n        try {\n            const hitCacheImplementation = this.config.hitCacheImplementation;\n            if (this.config.disableCache || !hitCacheImplementation || typeof hitCacheImplementation.lookupHits !== 'function') {\n                return;\n            }\n            const hitsCache = await hitCacheImplementation.lookupHits();\n            logDebugSprintf(this.config, PROCESS_CACHE, HIT_CACHE_LOADED, hitsCache);\n            if (!hitsCache || !Object.keys(hitsCache).length) {\n                return;\n            }\n            await this.processCachedHits(hitsCache);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, HIT_CACHE_ERROR, 'lookupHits', error.message || error);\n        }\n    }\n    async sendUsageHit(hit) {\n        await this.strategy.sendUsageHit(hit);\n    }\n    async addTroubleshootingHit(hit) {\n        await this.strategy.addTroubleshootingHit(hit);\n    }\n}\n","import { BatchTriggeredBy } from '../enum/BatchTriggeredBy';\nimport { TrackingManagerAbstract } from './TrackingManagerAbstract';\nexport class TrackingManager extends TrackingManagerAbstract {\n    async activateFlag(hit) {\n        await this.strategy.activateFlag(hit);\n    }\n    async addHit(hit) {\n        await this.strategy.addHit(hit);\n    }\n    async sendBatch() {\n        await this.strategy.sendBatch(BatchTriggeredBy.Flush);\n    }\n}\n","/* eslint-disable no-console */\nimport { LogLevel } from '../enum/index';\nimport { formatLogOutput } from './utils';\nexport class FlagshipLogManager {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    consoleError;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    consoleWarn;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    consoleDebug;\n    constructor() {\n        this.consoleError = console.error ?? console.log;\n        this.consoleWarn = console.warn ?? console.log;\n        this.consoleDebug = console.debug ?? console.log;\n    }\n    emergency(message, tag) {\n        this.consoleError(formatLogOutput(LogLevel.EMERGENCY, message, tag));\n    }\n    alert(message, tag) {\n        this.consoleError(formatLogOutput(LogLevel.ALERT, message, tag));\n    }\n    critical(message, tag) {\n        this.consoleError(formatLogOutput(LogLevel.CRITICAL, message, tag));\n    }\n    error(message, tag) {\n        this.consoleError(formatLogOutput(LogLevel.ERROR, message, tag));\n    }\n    warning(message, tag) {\n        this.consoleWarn(formatLogOutput(LogLevel.WARNING, message, tag));\n    }\n    notice(message, tag) {\n        this.log(LogLevel.NOTICE, message, tag);\n    }\n    info(message, tag) {\n        console.info(formatLogOutput(LogLevel.INFO, message, tag));\n    }\n    debug(message, tag) {\n        this.consoleDebug(formatLogOutput(LogLevel.DEBUG, message, tag));\n    }\n    log(level, message, tag) {\n        console.log(formatLogOutput(level, message, tag));\n    }\n}\n","import { Diagnostic } from './Diagnostic';\nexport class UsageHit extends Diagnostic {\n    constructor(param) {\n        super({\n            ...param,\n            type: 'USAGE'\n        });\n    }\n}\n","import { EventCategory } from '../hit/index';\nimport { TroubleshootingLabel, VisitorCacheStatus } from '../types';\nimport { DecisionMode } from '../config/index';\nimport { logDebugSprintf, logError, logErrorSprintf, logInfoSprintf, sprintf } from '../utils/utils';\nimport { VISITOR_CACHE_ERROR, CONSENT_CHANGED, FS_CONSENT, LOOKUP_VISITOR_JSON_OBJECT_ERROR, PROCESS_CACHE, PROCESS_SET_CONSENT, SDK_APP, SDK_INFO, TRACKER_MANAGER_MISSING_ERROR, VISITOR_CACHE_VERSION, VISITOR_CACHE_FLUSHED, VISITOR_CACHE_LOADED, VISITOR_CACHE_SAVED, LogLevel, ANALYTIC_HIT_ALLOCATION } from '../enum/index';\nimport { Troubleshooting } from '../hit/Troubleshooting';\nimport { UsageHit } from '../hit/UsageHit';\nimport { DefaultHitCache } from '../cache/DefaultHitCache';\nimport { DefaultVisitorCache } from '../cache/DefaultVisitorCache';\nimport { Event } from '../hit/Event';\nexport const LOOKUP_HITS_JSON_ERROR = 'JSON DATA must be an array of object';\nexport const LOOKUP_HITS_JSON_OBJECT_ERROR = 'JSON DATA must fit the type HitCacheDTO';\nexport const VISITOR_ID_MISMATCH_ERROR = 'Visitor ID mismatch: {0} vs {1}';\nexport class StrategyAbstract {\n    visitor;\n    get configManager() {\n        return this.visitor.configManager;\n    }\n    get trackingManager() {\n        return this.configManager.trackingManager;\n    }\n    get decisionManager() {\n        return this.configManager.decisionManager;\n    }\n    get config() {\n        return this.visitor.config;\n    }\n    _murmurHash;\n    constructor(param) {\n        const { visitor, murmurHash } = param;\n        this.visitor = visitor;\n        this._murmurHash = murmurHash;\n    }\n    collectEAIEventsAsync(currentPage) {\n        return this.visitor.emotionAi.collectEAIEventsAsync(currentPage);\n    }\n    reportEaiVisitorEvent(event) {\n        if (__fsWebpackIsBrowser__ || __fsWebpackIsReactNative__) {\n            import('../emotionAI/hit/VisitorEvent.ts').then(({ VisitorEvent }) => {\n                this.visitor.emotionAi.reportVisitorEvent(new VisitorEvent(event));\n            });\n        }\n    }\n    reportEaiPageView(pageView) {\n        if (__fsWebpackIsBrowser__ || __fsWebpackIsReactNative__) {\n            import('../emotionAI/hit/PageView.ts').then(({ PageView }) => {\n                this.visitor.emotionAi.reportPageView(new PageView(pageView));\n            });\n        }\n    }\n    onEAICollectStatusChange(callback) {\n        this.visitor.emotionAi.onEAICollectStatusChange(callback);\n    }\n    cleanup() {\n        this.visitor.emotionAi.cleanup();\n    }\n    updateCampaigns(campaigns) {\n        try {\n            this.visitor.campaigns = campaigns;\n            this.visitor.flagsData = this.decisionManager.getModifications(campaigns);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logError(this.config, error.message || error, 'updateCampaigns');\n        }\n    }\n    hasTrackingManager(process) {\n        const check = this.trackingManager;\n        if (!check) {\n            logError(this.config, sprintf(TRACKER_MANAGER_MISSING_ERROR), process);\n        }\n        return !!check;\n    }\n    setConsent(hasConsented) {\n        const method = 'setConsent';\n        this.visitor.hasConsented = hasConsented;\n        if (!hasConsented) {\n            this.flushVisitor();\n        }\n        if (!this.hasTrackingManager(method)) {\n            return;\n        }\n        const consentHit = new Event({\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            label: `${SDK_INFO.name}:${this.visitor.hasConsented}`,\n            action: FS_CONSENT,\n            category: EventCategory.USER_ENGAGEMENT\n        });\n        consentHit.qaMode = this.config.isQAModeEnabled;\n        consentHit.ds = SDK_APP;\n        consentHit.config = this.config;\n        this.trackingManager.addHit(consentHit);\n        const hitTroubleshooting = new Troubleshooting({\n            label: TroubleshootingLabel.VISITOR_SEND_HIT,\n            logLevel: LogLevel.INFO,\n            traffic: this.visitor.traffic || 0,\n            visitorId: this.visitor.visitorId,\n            visitorSessionId: this.visitor.instanceId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            anonymousId: this.visitor.anonymousId,\n            config: this.config,\n            hitContent: consentHit.toApiKeys()\n        });\n        if (this.decisionManager.troubleshooting) {\n            this.trackingManager.sendTroubleshootingHit(hitTroubleshooting);\n            return;\n        }\n        this.visitor.consentHitTroubleshooting = hitTroubleshooting;\n        logDebugSprintf(this.config, PROCESS_SET_CONSENT, CONSENT_CHANGED, this.visitor.visitorId, hasConsented);\n    }\n    checKLookupVisitorDataV1(item) {\n        if (!item || !item.data || !item.data.visitorId) {\n            return false;\n        }\n        const campaigns = item.data.campaigns;\n        if (!campaigns) {\n            return true;\n        }\n        if (!Array.isArray(campaigns)) {\n            return false;\n        }\n        if ((this.visitor.visitorCacheStatus === VisitorCacheStatus.VISITOR_ID_CACHE || this.visitor.visitorCacheStatus === VisitorCacheStatus.VISITOR_ID_CACHE_WITH_ANONYMOUS_ID_CACHE) && item.data.visitorId !== this.visitor.visitorId) {\n            logInfoSprintf(this.config, PROCESS_CACHE, VISITOR_ID_MISMATCH_ERROR, item.data.visitorId, this.visitor.visitorId);\n            return false;\n        }\n        if (this.visitor.visitorCacheStatus === VisitorCacheStatus.ANONYMOUS_ID_CACHE && item.data.visitorId !== this.visitor.anonymousId) {\n            logInfoSprintf(this.config, PROCESS_CACHE, VISITOR_ID_MISMATCH_ERROR, item.data.visitorId, this.visitor.anonymousId);\n            return false;\n        }\n        return campaigns.every(x => x.campaignId && x.type && x.variationGroupId && x.variationId);\n    }\n    checKLookupVisitorData(item) {\n        if (item.version === 1) {\n            return this.checKLookupVisitorDataV1(item);\n        }\n        return false;\n    }\n    async tryLookupCache(id) {\n        const visitorCacheInstance = this.config.visitorCacheImplementation;\n        if (!visitorCacheInstance || typeof visitorCacheInstance.lookupVisitor !== 'function') {\n            return null;\n        }\n        return await visitorCacheInstance.lookupVisitor(id);\n    }\n    processValidCache(visitorCache) {\n        if (!this.checKLookupVisitorData(visitorCache)) {\n            logErrorSprintf(this.config, PROCESS_CACHE, LOOKUP_VISITOR_JSON_OBJECT_ERROR, VISITOR_CACHE_VERSION, this.visitor.visitorId);\n            return false;\n        }\n        this.visitor.visitorCache = visitorCache;\n        return true;\n    }\n    async lookupVisitor() {\n        try {\n            if (this.config.disableCache || this.visitor.visitorCache) {\n                return;\n            }\n            this.visitor.visitorCacheStatus = VisitorCacheStatus.NONE;\n            let visitorCache = await this.tryLookupCache(this.visitor.visitorId);\n            if (visitorCache) {\n                this.visitor.visitorCacheStatus = VisitorCacheStatus.VISITOR_ID_CACHE;\n            }\n            else if (this.visitor.anonymousId) {\n                visitorCache = await this.tryLookupCache(this.visitor.anonymousId);\n                if (visitorCache) {\n                    this.visitor.visitorCacheStatus = VisitorCacheStatus.ANONYMOUS_ID_CACHE;\n                }\n            }\n            logDebugSprintf(this.config, PROCESS_CACHE, VISITOR_CACHE_LOADED, this.visitor.visitorId, visitorCache);\n            if (!visitorCache || !this.processValidCache(visitorCache)) {\n                return;\n            }\n            if (this.visitor.visitorCacheStatus === VisitorCacheStatus.VISITOR_ID_CACHE && this.visitor.anonymousId) {\n                const anonymousVisitorCache = await this.tryLookupCache(this.visitor.anonymousId);\n                if (anonymousVisitorCache) {\n                    this.visitor.visitorCacheStatus = VisitorCacheStatus.VISITOR_ID_CACHE_WITH_ANONYMOUS_ID_CACHE;\n                }\n            }\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, VISITOR_CACHE_ERROR, this.visitor.visitorId, 'lookupVisitor', error.message || error);\n        }\n    }\n    createVisitorCacheDTO(eAIScore, isEAIDataCollected) {\n        const assignmentsHistory = {};\n        const visitorCacheDTO = {\n            version: VISITOR_CACHE_VERSION,\n            data: {\n                visitorId: this.visitor.visitorId,\n                anonymousId: this.visitor.anonymousId,\n                consent: this.visitor.hasConsented,\n                context: this.visitor.context,\n                eAIScore: this.visitor.visitorCache?.data?.eAIScore || eAIScore,\n                isEAIDataCollected: this.visitor.visitorCache?.data?.isEAIDataCollected || isEAIDataCollected,\n                campaigns: this.visitor.campaigns.map(campaign => {\n                    assignmentsHistory[campaign.variationGroupId] = campaign.variation.id;\n                    return {\n                        campaignId: campaign.id,\n                        slug: campaign.slug,\n                        variationGroupId: campaign.variationGroupId,\n                        variationId: campaign.variation.id,\n                        isReference: campaign.variation.reference,\n                        type: campaign.variation.modifications.type,\n                        activated: false,\n                        flags: campaign.variation.modifications.value\n                    };\n                })\n            }\n        };\n        visitorCacheDTO.data.assignmentsHistory = {\n            ...this.visitor.visitorCache?.data?.assignmentsHistory,\n            ...assignmentsHistory\n        };\n        return visitorCacheDTO;\n    }\n    async cacheAnonymousVisitor(visitorCacheInstance, visitorCacheDTO) {\n        const visitorCacheStatus = this.visitor.visitorCacheStatus;\n        if (this.visitor.anonymousId && (visitorCacheStatus === VisitorCacheStatus.NONE || visitorCacheStatus === VisitorCacheStatus.VISITOR_ID_CACHE)) {\n            const anonymousVisitorCacheDTO = {\n                ...visitorCacheDTO,\n                data: {\n                    ...visitorCacheDTO.data,\n                    visitorId: this.visitor.anonymousId,\n                    anonymousId: null\n                }\n            };\n            await visitorCacheInstance.cacheVisitor(this.visitor.anonymousId, anonymousVisitorCacheDTO);\n        }\n    }\n    async cacheVisitor(eAIScore, isEAIDataCollected) {\n        try {\n            const visitorCacheInstance = this.config.visitorCacheImplementation;\n            if (this.config.disableCache || !visitorCacheInstance || typeof visitorCacheInstance.cacheVisitor !== 'function') {\n                return;\n            }\n            const visitorCacheDTO = this.createVisitorCacheDTO(eAIScore, isEAIDataCollected);\n            await visitorCacheInstance.cacheVisitor(this.visitor.visitorId, visitorCacheDTO);\n            await this.cacheAnonymousVisitor(visitorCacheInstance, visitorCacheDTO);\n            logDebugSprintf(this.config, PROCESS_CACHE, VISITOR_CACHE_SAVED, this.visitor.visitorId, visitorCacheDTO);\n            this.visitor.visitorCache = visitorCacheDTO;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, VISITOR_CACHE_ERROR, this.visitor.visitorId, 'cacheVisitor', error.message || error);\n        }\n    }\n    async flushVisitor() {\n        try {\n            const visitorCacheInstance = this.config.visitorCacheImplementation;\n            if (this.config.disableCache || !visitorCacheInstance || typeof visitorCacheInstance.flushVisitor !== 'function') {\n                return;\n            }\n            await visitorCacheInstance.flushVisitor(this.visitor.visitorId);\n            logDebugSprintf(this.config, PROCESS_CACHE, VISITOR_CACHE_FLUSHED, this.visitor.visitorId);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this.config, PROCESS_CACHE, VISITOR_CACHE_ERROR, this.visitor.visitorId, 'flushVisitor', error.message || error);\n        }\n    }\n    addInTrackingManager(hit) {\n        return this.trackingManager.addHit(hit);\n    }\n    async sendTroubleshootingHit(hit) {\n        await this.trackingManager.sendTroubleshootingHit(hit);\n    }\n    async sendUsageHit(hit) {\n        if (this.config.disableDeveloperUsageTracking) {\n            return;\n        }\n        const traffic = this.visitor.analyticTraffic;\n        if (traffic > ANALYTIC_HIT_ALLOCATION) {\n            return;\n        }\n        return this.trackingManager.sendUsageHit(hit);\n    }\n    getCurrentDateTime() {\n        return new Date();\n    }\n    getSdkConfigDecisionMode() {\n        return this.config.decisionMode === DecisionMode.DECISION_API ? 'DECISION_API' : this.config.decisionMode;\n    }\n    async sendSdkConfigAnalyticHit() {\n        if (this.config.disableDeveloperUsageTracking) {\n            return;\n        }\n        const hitCacheImplementation = this.config.hitCacheImplementation;\n        const visitorCacheImplementation = this.config.visitorCacheImplementation;\n        let sdkConfigUsingCustomHitCache = false;\n        let sdkConfigUsingCustomVisitorCache = false;\n        if (__fsWebpackIsBrowser__) {\n            sdkConfigUsingCustomHitCache = !!hitCacheImplementation && !(hitCacheImplementation instanceof DefaultHitCache);\n            sdkConfigUsingCustomVisitorCache = !!visitorCacheImplementation && !(visitorCacheImplementation instanceof DefaultVisitorCache);\n        }\n        const analyticData = new UsageHit({\n            label: TroubleshootingLabel.SDK_CONFIG,\n            logLevel: LogLevel.INFO,\n            visitorId: this.visitor.sdkInitialData?.instanceId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            config: this.config,\n            sdkStatus: this.visitor.getSdkStatus(),\n            lastBucketingTimestamp: this.configManager.decisionManager.lastBucketingTimestamp,\n            lastInitializationTimestamp: this.visitor.sdkInitialData?.lastInitializationTimestamp,\n            sdkConfigMode: this.getSdkConfigDecisionMode(),\n            sdkConfigLogLevel: this.config.logLevel,\n            sdkConfigTimeout: this.config.timeout,\n            sdkConfigPollingInterval: this.config.pollingInterval,\n            sdkConfigTrackingManagerStrategy: this.config.trackingManagerConfig?.cacheStrategy,\n            sdkConfigTrackingManagerBatchIntervals: this.config.trackingManagerConfig?.batchIntervals,\n            sdkConfigTrackingManagerPoolMaxSize: this.config.trackingManagerConfig?.poolMaxSize,\n            sdkConfigFetchNow: this.config.fetchNow,\n            sdkConfigReuseVisitorIds: this.config.reuseVisitorIds,\n            sdkConfigInitialBucketing: this.config.initialBucketing,\n            sdkConfigDecisionApiUrl: this.config.decisionApiUrl,\n            sdkConfigHitDeduplicationTime: this.config.hitDeduplicationTime,\n            sdkConfigUsingOnVisitorExposed: !!this.config.onVisitorExposed,\n            sdkConfigUsingCustomHitCache: !!sdkConfigUsingCustomHitCache,\n            sdkConfigUsingCustomVisitorCache: !!sdkConfigUsingCustomVisitorCache,\n            sdkConfigFetchThirdPartyData: this.config.fetchThirdPartyData,\n            sdkConfigFetchFlagsBufferingTime: this.config.fetchFlagsBufferingTime,\n            sdkConfigDisableDeveloperUsageTracking: this.config.disableDeveloperUsageTracking,\n            sdkConfigNextFetchConfig: this.config.nextFetchConfig,\n            sdkConfigDisableCache: this.config.disableCache\n        });\n        this.sendUsageHit(analyticData);\n    }\n    async sendFetchFlagsTroubleshooting({ isFromCache, campaigns, now }) {\n        const assignmentHistory = {};\n        this.visitor.flagsData.forEach(item => {\n            assignmentHistory[item.variationGroupId] = item.variationId;\n        });\n        const uniqueId = this.visitor.visitorId + this.decisionManager.troubleshooting?.endDate.toUTCString();\n        const hash = this._murmurHash.murmurHash3Int32(uniqueId);\n        const traffic = hash % 100;\n        this.visitor.traffic = traffic;\n        const hitCacheImplementation = this.config.hitCacheImplementation;\n        const visitorCacheImplementation = this.config.visitorCacheImplementation;\n        let sdkConfigUsingCustomHitCache = false;\n        let sdkConfigUsingCustomVisitorCache = false;\n        if (__fsWebpackIsBrowser__) {\n            sdkConfigUsingCustomHitCache = !!hitCacheImplementation && !(hitCacheImplementation instanceof DefaultHitCache);\n            sdkConfigUsingCustomVisitorCache = !!visitorCacheImplementation && !(visitorCacheImplementation instanceof DefaultVisitorCache);\n        }\n        const fetchFlagTroubleshooting = new Troubleshooting({\n            label: TroubleshootingLabel.VISITOR_FETCH_CAMPAIGNS,\n            logLevel: LogLevel.INFO,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            visitorSessionId: this.visitor.instanceId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            traffic,\n            config: this.config,\n            sdkStatus: this.visitor.getSdkStatus(),\n            visitorContext: this.visitor.context,\n            visitorCampaigns: campaigns,\n            visitorCampaignFromCache: isFromCache ? campaigns : undefined,\n            visitorConsent: this.visitor.hasConsented,\n            visitorIsAuthenticated: !!this.visitor.anonymousId,\n            visitorFlags: this.visitor.flagsData,\n            visitorAssignmentHistory: assignmentHistory,\n            visitorInitialCampaigns: this.visitor.sdkInitialData?.initialCampaigns,\n            visitorInitialFlagsData: this.visitor.sdkInitialData?.initialFlagsData,\n            lastBucketingTimestamp: this.configManager.decisionManager.lastBucketingTimestamp,\n            lastInitializationTimestamp: this.visitor.sdkInitialData?.lastInitializationTimestamp,\n            httpResponseTime: Date.now() - now,\n            sdkConfigLogLevel: this.config.logLevel,\n            sdkConfigMode: this.getSdkConfigDecisionMode(),\n            sdkConfigTimeout: this.config.timeout,\n            sdkConfigPollingInterval: this.config.pollingInterval,\n            sdkConfigTrackingManagerStrategy: this.config.trackingManagerConfig?.cacheStrategy,\n            sdkConfigTrackingManagerBatchIntervals: this.config.trackingManagerConfig?.batchIntervals,\n            sdkConfigTrackingManagerPoolMaxSize: this.config.trackingManagerConfig?.poolMaxSize,\n            sdkConfigFetchNow: this.config.fetchNow,\n            sdkConfigReuseVisitorIds: this.config.reuseVisitorIds,\n            sdkConfigInitialBucketing: this.config.initialBucketing,\n            sdkConfigDecisionApiUrl: this.config.decisionApiUrl,\n            sdkConfigHitDeduplicationTime: this.config.hitDeduplicationTime,\n            sdkConfigUsingOnVisitorExposed: !!this.config.onVisitorExposed,\n            sdkConfigUsingCustomHitCache: !!sdkConfigUsingCustomHitCache,\n            sdkConfigUsingCustomVisitorCache: !!sdkConfigUsingCustomVisitorCache,\n            sdkConfigFetchThirdPartyData: this.config.fetchThirdPartyData,\n            sdkConfigFetchFlagsBufferingTime: this.config.fetchFlagsBufferingTime,\n            sdkConfigDisableDeveloperUsageTracking: this.config.disableDeveloperUsageTracking,\n            sdkConfigNextFetchConfig: this.config.nextFetchConfig,\n            sdkConfigDisableCache: this.config.disableCache\n        });\n        await this.sendTroubleshootingHit(fetchFlagTroubleshooting);\n    }\n    sendConsentHitTroubleshooting() {\n        const consentHitTroubleshooting = this.visitor.consentHitTroubleshooting;\n        if (!consentHitTroubleshooting) {\n            return;\n        }\n        consentHitTroubleshooting.traffic = this.visitor.traffic;\n        this.trackingManager.sendTroubleshootingHit(consentHitTroubleshooting);\n        this.visitor.consentHitTroubleshooting = undefined;\n    }\n    sendSegmentHitTroubleshooting() {\n        const segmentHitTroubleshooting = this.visitor.segmentHitTroubleshooting;\n        if (!segmentHitTroubleshooting) {\n            return;\n        }\n        segmentHitTroubleshooting.traffic = this.visitor.traffic;\n        this.trackingManager.sendTroubleshootingHit(segmentHitTroubleshooting);\n        this.visitor.segmentHitTroubleshooting = undefined;\n    }\n}\n","/**\n     * Current device locale\n     */\nexport const DEVICE_LOCALE = 'sdk_deviceLanguage';\n/**\n  * Current device type  tablet, pc, server, iot, other\n\n  */\nexport const DEVICE_TYPE = 'sdk_deviceType';\n/**\n  * Current device model\n  */\nexport const DEVICE_MODEL = 'sdk_deviceModel';\n/**\n  * Current visitor city\n\n  */\nexport const LOCATION_CITY = 'sdk_city';\n/**\n  * Current visitor region\n\n  */\nexport const LOCATION_REGION = 'sdk_region';\n/**\n  * Current visitor country\n\n  */\nexport const LOCATION_COUNTRY = 'sdk_country';\n/**\n  * Current visitor latitude\n\n  */\nexport const LOCATION_LAT = 'sdk_lat';\n/**\n  * Current visitor longitude\n\n  */\nexport const LOCATION_LONG = 'sdk_long';\n/**\n  * Device public ip\n\n  */\nexport const IP = 'sdk_ip';\n/**\n  * OS name\n\n  */\nexport const OS_NAME = 'sdk_osName';\n/**\n  * OS version name\n\n  */\nexport const OS_VERSION_NAME = 'sdk_osVersionName';\n/**\n  * OS version code\n\n  */\nexport const OS_VERSION_CODE = 'sdk_osVersionCode';\n/**\n  * Carrier operator\n  */\nexport const CARRIER_NAME = 'sdk_carrierName';\n/**\n  * Internet connection type : 4G, 5G, Fiber\n\n  */\nexport const INTERNET_CONNECTION = 'sdk_internetConnection';\n/**\n  * Customer app version name\n\n  */\nexport const APP_VERSION_NAME = 'sdk_versionName';\n/**\n  * Customer app version code\n\n  */\nexport const APP_VERSION_CODE = 'sdk_versionCode';\n/**\n  * Current customer app interface name\n\n  */\nexport const INTERFACE_NAME = 'sdk_interfaceName';\n/**\n  * Flagship SDK client name\n\n  */\nexport const FLAGSHIP_CLIENT = 'fs_client';\n/**\n  * Flagship SDK version name\n\n  */\nexport const FLAGSHIP_VERSION = 'fs_version';\n/**\n  * Current visitor id\n\n  */\nexport const FLAGSHIP_VISITOR = 'fs_users';\nexport const FLAGSHIP_CONTEXT = {\n    [DEVICE_LOCALE]: 'string',\n    [DEVICE_TYPE]: 'string',\n    [DEVICE_MODEL]: 'string',\n    [LOCATION_CITY]: 'string',\n    [LOCATION_REGION]: 'string',\n    [LOCATION_COUNTRY]: 'string',\n    [LOCATION_LAT]: 'number',\n    [LOCATION_LONG]: 'number',\n    [IP]: 'string',\n    [OS_NAME]: 'string',\n    [OS_VERSION_NAME]: 'string',\n    [OS_VERSION_CODE]: 'string',\n    [CARRIER_NAME]: 'string',\n    [INTERNET_CONNECTION]: 'string',\n    [APP_VERSION_NAME]: 'string',\n    [APP_VERSION_CODE]: 'string',\n    [INTERFACE_NAME]: 'string',\n    [FLAGSHIP_CLIENT]: 'string',\n    [FLAGSHIP_VERSION]: 'string',\n    [FLAGSHIP_VISITOR]: 'string'\n};\n","export class FSFlagMetadata {\n    campaignId;\n    campaignName;\n    variationGroupId;\n    variationGroupName;\n    variationId;\n    variationName;\n    isReference;\n    campaignType;\n    slug;\n    constructor(flagMetadata) {\n        const { campaignId, variationGroupId, variationId, isReference, campaignType, slug, variationGroupName, variationName, campaignName } = flagMetadata;\n        this.campaignId = campaignId;\n        this.variationGroupId = variationGroupId;\n        this.variationId = variationId;\n        this.isReference = isReference;\n        this.campaignType = campaignType;\n        this.campaignName = campaignName;\n        this.variationGroupName = variationGroupName;\n        this.variationName = variationName;\n        this.slug = slug;\n    }\n    static Empty() {\n        return new FSFlagMetadata({\n            campaignId: '',\n            campaignName: '',\n            campaignType: '',\n            variationId: '',\n            variationName: '',\n            variationGroupId: '',\n            variationGroupName: '',\n            isReference: false,\n            slug: null\n        });\n    }\n}\n","/**\n * Represents the status of the flags in the Flagship SDK.\n */\nexport var FSFetchStatus;\n(function (FSFetchStatus) {\n    /**\n     * The flags have been successfully fetched from the API or re-evaluated in bucketing mode.\n     */\n    FSFetchStatus[\"FETCHED\"] = \"FETCHED\";\n    /**\n     * The flags are currently being fetched from the API or re-evaluated in bucketing mode.\n     */\n    FSFetchStatus[\"FETCHING\"] = \"FETCHING\";\n    /**\n     * The flags need to be re-fetched due to a change in context, or because the flags were loaded from cache or XPC.\n     */\n    FSFetchStatus[\"FETCH_REQUIRED\"] = \"FETCH_REQUIRED\";\n    /**\n     * The SDK is in PANIC mode: All features are disabled except for the one to fetch flags.\n     */\n    FSFetchStatus[\"PANIC\"] = \"PANIC\";\n    /**\n     * The flags have been initialized from initial data provided during visitor creation .\n     */\n    FSFetchStatus[\"INITIAL_DATA\"] = \"INITIAL_DATA\";\n})(FSFetchStatus || (FSFetchStatus = {}));\n","import { AUTHENTICATE, CLEAR_CONTEXT, CONTEXT_KEY_ERROR, CONTEXT_KEY_VALUE_UPDATE, CONTEXT_NULL_ERROR, CONTEXT_VALUE_ERROR, EMIT_READY, FETCH_CAMPAIGNS_FROM_CACHE, FETCH_CAMPAIGNS_SUCCESS, FETCH_FLAGS_BUFFERING_MESSAGE, FETCH_FLAGS_FROM_CAMPAIGNS, FETCH_FLAGS_STARTED, FLAGSHIP_VISITOR_NOT_AUTHENTICATE, FLAG_METADATA, FLAG_VISITOR_EXPOSED, FLAG_VALUE, GET_FLAG_CAST_ERROR, GET_FLAG_MISSING_ERROR, GET_FLAG_VALUE, HitType, LogLevel, NO_FLAG_METADATA, PREDEFINED_CONTEXT_TYPE_ERROR, PROCESS_CLEAR_CONTEXT, PROCESS_FETCHING_FLAGS, PROCESS_SEND_HIT, PROCESS_UPDATE_CONTEXT, SDK_APP, UNAUTHENTICATE, USER_EXPOSED_CAST_ERROR, USER_EXPOSED_FLAG_ERROR, VISITOR_AUTHENTICATE, VISITOR_AUTHENTICATE_VISITOR_ID_ERROR, VISITOR_EXPOSED_VALUE_NOT_CALLED, VISITOR_UNAUTHENTICATE, VISITOR_ALREADY_AUTHENTICATE } from '../enum/index';\nimport { TroubleshootingLabel } from '../types';\nimport { deepEqual, errorFormat, hasSameType, logDebug, logDebugSprintf, logError, logErrorSprintf, logInfoSprintf, logWarningSprintf, sprintf } from '../utils/utils';\nimport { StrategyAbstract } from './StrategyAbstract';\nimport { FLAGSHIP_CLIENT, FLAGSHIP_CONTEXT, FLAGSHIP_VERSION, FLAGSHIP_VISITOR } from '../enum/FlagshipContext';\nimport { FSFlagMetadata } from '../flag/FSFlagMetadata';\nimport { FSFetchStatus } from '../enum/FSFetchStatus';\nimport { FSFetchReasons } from '../enum/FSFetchReasons';\nimport { Transaction } from '../hit/Transaction.ts';\nimport { Item } from '../hit/Item.ts';\nimport { Page } from '../hit/Page.ts';\nimport { Screen } from '../hit/Screen.ts';\nimport { Event } from '../hit/Event.ts';\nimport { Troubleshooting } from '../hit/Troubleshooting.ts';\nexport const TYPE_HIT_REQUIRED_ERROR = 'property type is required and must ';\nexport const HIT_NULL_ERROR = 'Hit must not be null';\nexport class DefaultStrategy extends StrategyAbstract {\n    checkPredefinedContext(key, value) {\n        const type = FLAGSHIP_CONTEXT[key];\n        if (!type) {\n            return null;\n        }\n        let check = false;\n        if (type === 'string') {\n            check = typeof value === 'string';\n        }\n        else if (type === 'number') {\n            check = typeof value === 'number';\n        }\n        if (!check) {\n            logErrorSprintf(this.config, PROCESS_UPDATE_CONTEXT, PREDEFINED_CONTEXT_TYPE_ERROR, this.visitor.visitorId, key, type);\n        }\n        return check;\n    }\n    updateContextKeyValue(key, value) {\n        const valueType = typeof value;\n        if (typeof key !== 'string' || key === '') {\n            logErrorSprintf(this.config, PROCESS_UPDATE_CONTEXT, CONTEXT_KEY_ERROR, this.visitor.visitorId, key);\n            return;\n        }\n        if (valueType !== 'string' && valueType !== 'number' && valueType !== 'boolean') {\n            logErrorSprintf(this.config, PROCESS_UPDATE_CONTEXT, CONTEXT_VALUE_ERROR, this.visitor.visitorId, key);\n            return;\n        }\n        if (key === FLAGSHIP_CLIENT || key === FLAGSHIP_VERSION || key === FLAGSHIP_VISITOR) {\n            return;\n        }\n        const predefinedContext = this.checkPredefinedContext(key, value);\n        if (typeof predefinedContext === 'boolean' && !predefinedContext) {\n            return;\n        }\n        this.visitor.context[key] = value;\n    }\n    checkAndUpdateContext(oldContext, newContext, value) {\n        if (deepEqual(oldContext, newContext)) {\n            return;\n        }\n        this.visitor.hasContextBeenUpdated = true;\n        this.visitor.flagsStatus = {\n            status: FSFetchStatus.FETCH_REQUIRED,\n            reason: FSFetchReasons.UPDATE_CONTEXT\n        };\n        logDebugSprintf(this.config, PROCESS_UPDATE_CONTEXT, CONTEXT_KEY_VALUE_UPDATE, this.visitor.visitorId, newContext, value, this.visitor.context);\n    }\n    updateContext(context, value) {\n        const oldContext = { ...this.visitor.context };\n        if (typeof context === 'string') {\n            this.updateContextKeyValue(context, value);\n            const newContext = this.visitor.context;\n            this.checkAndUpdateContext(oldContext, newContext, value);\n            return;\n        }\n        if (!context) {\n            logError(this.visitor.config, CONTEXT_NULL_ERROR, PROCESS_UPDATE_CONTEXT);\n            return;\n        }\n        for (const key in context) {\n            const value = context[key];\n            this.updateContextKeyValue(key, value);\n        }\n        const newContext = this.visitor.context;\n        this.checkAndUpdateContext(oldContext, newContext, context);\n    }\n    clearContext() {\n        const oldContext = { ...this.visitor.context };\n        this.visitor.context = {};\n        this.visitor.loadPredefinedContext();\n        const newContext = this.visitor.context;\n        if (deepEqual(oldContext, newContext)) {\n            return;\n        }\n        this.visitor.hasContextBeenUpdated = true;\n        this.visitor.flagsStatus = {\n            status: FSFetchStatus.FETCH_REQUIRED,\n            reason: FSFetchReasons.UPDATE_CONTEXT\n        };\n        logDebugSprintf(this.config, PROCESS_CLEAR_CONTEXT, CLEAR_CONTEXT, this.visitor.visitorId, this.visitor.context);\n    }\n    isDeDuplicated(key, deDuplicationTime) {\n        if (deDuplicationTime === 0) {\n            return false;\n        }\n        const deDuplicationCache = this.visitor.deDuplicationCache[key];\n        if (deDuplicationCache && (Date.now() - deDuplicationCache) <= (deDuplicationTime * 1000)) {\n            return true;\n        }\n        this.visitor.deDuplicationCache[key] = Date.now();\n        this.visitor.clearDeDuplicationCache(deDuplicationTime);\n        return false;\n    }\n    async sendActivate(flagDto, defaultValue) {\n        const activateHit = {\n            variationGroupId: flagDto.variationGroupId,\n            variationId: flagDto.variationId,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            flagKey: flagDto.key,\n            flagValue: flagDto.value,\n            flagDefaultValue: defaultValue,\n            visitorContext: this.visitor.context,\n            flagMetadata: {\n                campaignName: flagDto.campaignName,\n                campaignId: flagDto.campaignId,\n                campaignType: flagDto.campaignType,\n                variationGroupId: flagDto.variationGroupId,\n                variationGroupName: flagDto.variationGroupName,\n                variationId: flagDto.variationId,\n                variationName: flagDto.variationName,\n                slug: flagDto.slug,\n                isReference: flagDto.isReference\n            },\n            qaMode: this.config.isQAModeEnabled\n        };\n        if (this.isDeDuplicated(JSON.stringify(activateHit), this.config.hitDeduplicationTime)) {\n            const logData = {\n                visitorId: this.visitor.visitorId,\n                anonymousId: this.visitor.anonymousId,\n                flag: flagDto,\n                delay: 0\n            };\n            logDebug(this.config, sprintf('Activate {0} is deduplicated', JSON.stringify(logData)), PROCESS_SEND_HIT);\n            return;\n        }\n        await this.trackingManager.activateFlag(activateHit);\n        const activateTroubleshooting = new Troubleshooting({\n            label: TroubleshootingLabel.VISITOR_SEND_ACTIVATE,\n            logLevel: LogLevel.INFO,\n            traffic: this.visitor.traffic,\n            visitorId: activateHit.visitorId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            visitorSessionId: this.visitor.instanceId,\n            anonymousId: activateHit.anonymousId,\n            config: this.config,\n            hitContent: activateHit\n        });\n        this.sendTroubleshootingHit(activateTroubleshooting);\n    }\n    async sendHit(hit) {\n        if (!this.hasTrackingManager(PROCESS_SEND_HIT)) {\n            return;\n        }\n        await this.prepareAndSendHit(hit);\n    }\n    async sendHits(hits) {\n        if (!this.hasTrackingManager(PROCESS_SEND_HIT)) {\n            return;\n        }\n        for (const hit of hits) {\n            await this.prepareAndSendHit(hit);\n        }\n    }\n    async getHit(hit) {\n        let newHit = null;\n        switch (hit.type.toUpperCase()) {\n            case HitType.EVENT: {\n                newHit = new Event(hit);\n                break;\n            }\n            case HitType.ITEM: {\n                newHit = new Item(hit);\n                break;\n            }\n            case HitType.PAGE_VIEW: {\n                newHit = new Page(hit);\n                break;\n            }\n            case HitType.SCREEN_VIEW: {\n                newHit = new Screen(hit);\n                break;\n            }\n            case HitType.TRANSACTION: {\n                newHit = new Transaction(hit);\n                break;\n            }\n        }\n        return newHit;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    isHitAbstract(hit) {\n        return hit &&\n            typeof hit.toApiKeys === 'function' &&\n            typeof hit.isReady === 'function' &&\n            typeof hit.getErrorMessage === 'function' &&\n            typeof hit.toObject === 'function';\n    }\n    async prepareAndSendHit(hit, functionName = PROCESS_SEND_HIT) {\n        let hitInstance;\n        if (!hit?.type) {\n            logError(this.config, HIT_NULL_ERROR, functionName);\n            return;\n        }\n        if (this.isHitAbstract(hit)) {\n            hitInstance = hit;\n        }\n        else {\n            const hitFromInt = await this.getHit(hit);\n            if (!hitFromInt) {\n                logError(this.config, TYPE_HIT_REQUIRED_ERROR, functionName);\n                return;\n            }\n            hitInstance = hitFromInt;\n        }\n        hitInstance.visitorId = this.visitor.visitorId;\n        hitInstance.ds = SDK_APP;\n        hitInstance.config = this.config;\n        hitInstance.anonymousId = this.visitor.anonymousId;\n        hitInstance.qaMode = this.config.isQAModeEnabled;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { createdAt, ...hitInstanceItem } = hitInstance.toObject();\n        if (this.isDeDuplicated(JSON.stringify(hitInstanceItem), this.config.hitDeduplicationTime)) {\n            return;\n        }\n        if (!hitInstance.isReady()) {\n            logError(this.config, hitInstance.getErrorMessage(), functionName);\n            return;\n        }\n        try {\n            await this.trackingManager.addHit(hitInstance);\n            if (hitInstance.type === 'SEGMENT') {\n                return;\n            }\n            const sendHitTroubleshooting = new Troubleshooting({\n                label: TroubleshootingLabel.VISITOR_SEND_HIT,\n                logLevel: LogLevel.INFO,\n                traffic: this.visitor.traffic,\n                visitorId: hitInstance.visitorId,\n                flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n                visitorSessionId: this.visitor.instanceId,\n                anonymousId: hitInstance.anonymousId,\n                config: this.config,\n                hitContent: hitInstance.toApiKeys()\n            });\n            this.sendTroubleshootingHit(sendHitTroubleshooting);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logError(this.config, error.message || error, functionName);\n        }\n    }\n    authenticate(visitorId) {\n        if (!visitorId) {\n            logErrorSprintf(this.config, AUTHENTICATE, VISITOR_AUTHENTICATE_VISITOR_ID_ERROR, this.visitor.visitorId);\n            return;\n        }\n        if (this.visitor.anonymousId) {\n            logWarningSprintf(this.config, AUTHENTICATE, VISITOR_ALREADY_AUTHENTICATE, this.visitor.visitorId, this.visitor.anonymousId);\n            return;\n        }\n        this.visitor.anonymousId = this.visitor.visitorId;\n        this.visitor.visitorId = visitorId;\n        const monitoring = new Troubleshooting({\n            label: TroubleshootingLabel.VISITOR_AUTHENTICATE,\n            logLevel: LogLevel.INFO,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            visitorContext: this.visitor.context,\n            traffic: this.visitor.traffic,\n            config: this.config\n        });\n        this.sendTroubleshootingHit(monitoring);\n        this.visitor.flagsStatus = {\n            status: FSFetchStatus.FETCH_REQUIRED,\n            reason: FSFetchReasons.AUTHENTICATE\n        };\n        logDebugSprintf(this.config, AUTHENTICATE, VISITOR_AUTHENTICATE, this.visitor.visitorId, this.visitor.anonymousId);\n    }\n    unauthenticate() {\n        if (!this.visitor.anonymousId) {\n            logErrorSprintf(this.config, UNAUTHENTICATE, FLAGSHIP_VISITOR_NOT_AUTHENTICATE, this.visitor.visitorId);\n            return;\n        }\n        this.visitor.visitorId = this.visitor.anonymousId;\n        this.visitor.anonymousId = null;\n        const monitoring = new Troubleshooting({\n            label: TroubleshootingLabel.VISITOR_UNAUTHENTICATE,\n            logLevel: LogLevel.INFO,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            visitorContext: this.visitor.context,\n            traffic: this.visitor.traffic,\n            config: this.config\n        });\n        this.sendTroubleshootingHit(monitoring);\n        this.visitor.flagsStatus = {\n            status: FSFetchStatus.FETCH_REQUIRED,\n            reason: FSFetchReasons.UNAUTHENTICATE\n        };\n        logDebugSprintf(this.config, UNAUTHENTICATE, VISITOR_UNAUTHENTICATE, this.visitor.visitorId);\n    }\n    handleFetchFlagsError(error, now, campaigns) {\n        this.visitor.emit(EMIT_READY, error);\n        const message = error instanceof Error ? error.message : error;\n        const errorMessage = errorFormat(message, {\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            context: this.visitor.context,\n            statusReason: this.visitor.flagsStatus.reason,\n            duration: Date.now() - now\n        });\n        logError(this.config, errorMessage, PROCESS_FETCHING_FLAGS);\n        this.visitor.flagsStatus = {\n            status: FSFetchStatus.FETCH_REQUIRED,\n            reason: FSFetchReasons.FLAGS_FETCHING_ERROR\n        };\n        const troubleshootingHit = new Troubleshooting({\n            label: TroubleshootingLabel.VISITOR_FETCH_CAMPAIGNS_ERROR,\n            logLevel: LogLevel.INFO,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            visitorSessionId: this.visitor.instanceId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            traffic: this.visitor.traffic,\n            config: this.config,\n            visitorContext: this.visitor.context,\n            sdkStatus: this.visitor.getSdkStatus(),\n            visitorCampaigns: campaigns,\n            visitorConsent: this.visitor.hasConsented,\n            visitorIsAuthenticated: !!this.visitor.anonymousId,\n            visitorFlags: this.visitor.flagsData,\n            visitorInitialCampaigns: this.visitor.sdkInitialData?.initialCampaigns,\n            visitorInitialFlagsData: this.visitor.sdkInitialData?.initialFlagsData,\n            lastBucketingTimestamp: this.configManager.decisionManager.lastBucketingTimestamp,\n            lastInitializationTimestamp: this.visitor.sdkInitialData?.lastInitializationTimestamp,\n            httpResponseTime: Date.now() - now,\n            sdkConfigMode: this.getSdkConfigDecisionMode(),\n            sdkConfigTimeout: this.config.timeout,\n            sdkConfigPollingInterval: this.config.pollingInterval,\n            sdkConfigTrackingManagerStrategy: this.config.trackingManagerConfig?.cacheStrategy,\n            sdkConfigTrackingManagerBatchIntervals: this.config.trackingManagerConfig?.batchIntervals,\n            sdkConfigTrackingManagerPoolMaxSize: this.config.trackingManagerConfig?.poolMaxSize,\n            sdkConfigFetchNow: this.config.fetchNow,\n            sdkConfigReuseVisitorIds: this.config.reuseVisitorIds,\n            sdkConfigInitialBucketing: this.config.initialBucketing,\n            sdkConfigDecisionApiUrl: this.config.decisionApiUrl,\n            sdkConfigHitDeduplicationTime: this.config.hitDeduplicationTime\n        });\n        this.trackingManager.addTroubleshootingHit(troubleshootingHit);\n    }\n    async getCampaigns(now) {\n        let campaigns = null;\n        const functionName = PROCESS_FETCHING_FLAGS;\n        try {\n            const time = Date.now() - this.visitor.lastFetchFlagsTimestamp;\n            const fetchStatus = this.visitor.flagsStatus.status;\n            if (fetchStatus === FSFetchStatus.FETCHING && this.visitor.getCampaignsPromise) {\n                campaigns = await this.visitor.getCampaignsPromise;\n                return {\n                    campaigns,\n                    isFetching: true\n                };\n            }\n            const fetchFlagBufferingTime = (this.config.fetchFlagsBufferingTime * 1000);\n            if (fetchStatus === FSFetchStatus.FETCHED && time < fetchFlagBufferingTime) {\n                logInfoSprintf(this.config, functionName, FETCH_FLAGS_BUFFERING_MESSAGE, this.visitor.visitorId, fetchFlagBufferingTime - time);\n                return {\n                    campaigns,\n                    isBuffered: true\n                };\n            }\n            logDebugSprintf(this.config, functionName, FETCH_FLAGS_STARTED, this.visitor.visitorId);\n            this.visitor.flagsStatus = {\n                status: FSFetchStatus.FETCHING,\n                reason: FSFetchReasons.NONE\n            };\n            await this.lookupVisitor();\n            await this.visitor.emotionAi.fetchEAIScore();\n            this.visitor.getCampaignsPromise = this.decisionManager.getCampaignsAsync(this.visitor);\n            campaigns = await this.visitor.getCampaignsPromise;\n            this.visitor.lastFetchFlagsTimestamp = Date.now();\n            if (this.decisionManager.isPanic()) {\n                this.visitor.flagsStatus = {\n                    status: FSFetchStatus.PANIC,\n                    reason: FSFetchReasons.NONE\n                };\n            }\n            this.configManager.trackingManager.troubleshootingData = this.decisionManager.troubleshooting;\n            logDebugSprintf(this.config, functionName, FETCH_CAMPAIGNS_SUCCESS, this.visitor.visitorId, this.visitor.anonymousId, this.visitor.context, campaigns, (Date.now() - now));\n            return { campaigns };\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logError(this.config, error.message, PROCESS_FETCHING_FLAGS);\n            this.visitor.flagsStatus = {\n                status: FSFetchStatus.FETCH_REQUIRED,\n                reason: FSFetchReasons.FLAGS_FETCHING_ERROR\n            };\n            return {\n                error: error,\n                campaigns\n            };\n        }\n    }\n    fetchCampaignsFromCache(visitor) {\n        if (!Array.isArray(visitor?.visitorCache?.data.campaigns)) {\n            return null;\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return visitor.visitorCache.data.campaigns.map((campaign) => {\n            return {\n                id: campaign.campaignId,\n                variationGroupId: campaign.variationGroupId,\n                slug: campaign.slug,\n                variation: {\n                    id: campaign.variationId,\n                    reference: !!campaign.isReference,\n                    modifications: {\n                        type: campaign.type,\n                        value: campaign.flags\n                    }\n                }\n            };\n        });\n    }\n    handleNoCampaigns(now) {\n        const campaigns = this.fetchCampaignsFromCache(this.visitor);\n        if (campaigns) {\n            this.visitor.flagsStatus = {\n                status: FSFetchStatus.FETCH_REQUIRED,\n                reason: FSFetchReasons.FLAGS_FETCHED_FROM_CACHE\n            };\n            logDebugSprintf(this.config, PROCESS_FETCHING_FLAGS, FETCH_CAMPAIGNS_FROM_CACHE, this.visitor.visitorId, this.visitor.anonymousId, this.visitor.context, campaigns, Date.now() - now);\n        }\n        return campaigns;\n    }\n    sendVisitorAllocatedVariations() {\n        if (__fsWebpackIsBrowser__) {\n            const visitorAllocatedVariations = {};\n            this.visitor.flagsData.forEach((item) => {\n                visitorAllocatedVariations[item.campaignId] = {\n                    variationId: item.variationId,\n                    variationGroupId: item.variationGroupId,\n                    campaignId: item.campaignId\n                };\n            });\n            this.visitor.visitorVariationState.visitorVariations = visitorAllocatedVariations;\n            if (!this.config.isQAModeEnabled) {\n                return;\n            }\n            import(/* webpackMode: \"lazy\" */ '../qaAssistant/messages/index.ts').then((message) => {\n                message.sendVisitorAllocatedVariations(this.visitor.visitorVariationState);\n            });\n        }\n    }\n    extractFlags(campaigns) {\n        const flags = new Map();\n        campaigns.forEach((campaign) => {\n            const object = campaign.variation.modifications.value;\n            for (const key in object) {\n                const value = object[key];\n                flags.set(key, {\n                    key,\n                    campaignId: campaign.id,\n                    campaignName: campaign.name || '',\n                    variationGroupId: campaign.variationGroupId,\n                    variationGroupName: campaign.variationGroupName || '',\n                    variationId: campaign.variation.id,\n                    variationName: campaign.variation.name || '',\n                    isReference: !!campaign.variation.reference,\n                    campaignType: campaign.type,\n                    slug: campaign.slug,\n                    value\n                });\n            }\n        });\n        return flags;\n    }\n    async fetchFlags() {\n        const now = Date.now();\n        let campaigns = null;\n        const { campaigns: fetchedCampaigns, error: fetchCampaignError, isFetching, isBuffered } = await this.getCampaigns(now);\n        if (isFetching || isBuffered) {\n            return;\n        }\n        campaigns = fetchedCampaigns;\n        try {\n            if (!campaigns) {\n                campaigns = this.handleNoCampaigns(now);\n            }\n            campaigns = campaigns || [];\n            this.visitor.campaigns = campaigns;\n            this.visitor.flagsData = this.extractFlags(this.visitor.campaigns);\n            this.cacheVisitor();\n            this.visitor.emit(EMIT_READY, fetchCampaignError);\n            if (this.visitor.flagsStatus.status === FSFetchStatus.FETCHING) {\n                this.visitor.flagsStatus = {\n                    status: FSFetchStatus.FETCHED,\n                    reason: FSFetchReasons.NONE\n                };\n            }\n            this.sendVisitorAllocatedVariations();\n            logDebugSprintf(this.config, PROCESS_FETCHING_FLAGS, FETCH_FLAGS_FROM_CAMPAIGNS, this.visitor.visitorId, this.visitor.anonymousId, this.visitor.context, this.visitor.flagsData);\n            if (this.decisionManager.troubleshooting) {\n                this.sendFetchFlagsTroubleshooting({\n                    campaigns,\n                    now,\n                    isFromCache: this.visitor.flagsStatus.reason === FSFetchReasons.FLAGS_FETCHED_FROM_CACHE\n                });\n                this.sendConsentHitTroubleshooting();\n                this.sendSegmentHitTroubleshooting();\n            }\n            this.sendSdkConfigAnalyticHit();\n        }\n        catch (error) {\n            this.handleFetchFlagsError(error, now, campaigns);\n        }\n    }\n    async visitorExposed(param) {\n        const { key, flag, defaultValue, hasGetValueBeenCalled } = param;\n        if (!flag) {\n            logWarningSprintf(this.visitor.config, FLAG_VISITOR_EXPOSED, USER_EXPOSED_FLAG_ERROR, this.visitor.visitorId, key);\n            this.sendFlagTroubleshooting(TroubleshootingLabel.VISITOR_EXPOSED_FLAG_NOT_FOUND, key, defaultValue);\n            return;\n        }\n        if (!hasGetValueBeenCalled) {\n            logWarningSprintf(this.visitor.config, FLAG_VISITOR_EXPOSED, VISITOR_EXPOSED_VALUE_NOT_CALLED, this.visitor.visitorId, key);\n            this.sendFlagTroubleshooting(TroubleshootingLabel.FLAG_VALUE_NOT_CALLED, key, defaultValue, true);\n            return;\n        }\n        if (defaultValue !== null && defaultValue !== undefined && flag.value !== null && !hasSameType(flag.value, defaultValue)) {\n            logWarningSprintf(this.visitor.config, FLAG_VISITOR_EXPOSED, USER_EXPOSED_CAST_ERROR, this.visitor.visitorId, key);\n            this.sendFlagTroubleshooting(TroubleshootingLabel.VISITOR_EXPOSED_TYPE_WARNING, key, defaultValue);\n            return;\n        }\n        await this.sendActivate(flag, defaultValue);\n    }\n    sendFlagTroubleshooting(label, key, defaultValue, visitorExposed) {\n        const troubleshooting = new Troubleshooting({\n            label,\n            logLevel: LogLevel.WARNING,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            visitorSessionId: this.visitor.instanceId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            traffic: this.visitor.traffic,\n            config: this.config,\n            visitorContext: this.visitor.context,\n            flagKey: key,\n            flagDefault: defaultValue,\n            visitorExposed\n        });\n        this.sendTroubleshootingHit(troubleshooting);\n    }\n    getFlagValue(param) {\n        const { key, defaultValue, flag, visitorExposed } = param;\n        if (!flag) {\n            logWarningSprintf(this.config, FLAG_VALUE, GET_FLAG_MISSING_ERROR, this.visitor.visitorId, key, defaultValue);\n            this.sendFlagTroubleshooting(TroubleshootingLabel.GET_FLAG_VALUE_FLAG_NOT_FOUND, key, defaultValue, visitorExposed);\n            return defaultValue;\n        }\n        if (visitorExposed) {\n            this.sendActivate(flag, defaultValue);\n        }\n        if (flag.value === null) {\n            return defaultValue;\n        }\n        if (defaultValue !== null && defaultValue !== undefined && !hasSameType(flag.value, defaultValue)) {\n            logWarningSprintf(this.config, FLAG_VALUE, GET_FLAG_CAST_ERROR, this.visitor.visitorId, key, defaultValue);\n            this.sendFlagTroubleshooting(TroubleshootingLabel.GET_FLAG_VALUE_TYPE_WARNING, key, defaultValue, visitorExposed);\n            return defaultValue;\n        }\n        logDebugSprintf(this.config, FLAG_VALUE, GET_FLAG_VALUE, this.visitor.visitorId, key, flag.value);\n        return flag.value;\n    }\n    SendFlagMetadataTroubleshooting(key) {\n        logWarningSprintf(this.config, FLAG_METADATA, NO_FLAG_METADATA, this.visitor.visitorId, key);\n        const monitoring = new Troubleshooting({\n            label: TroubleshootingLabel.GET_FLAG_METADATA_TYPE_WARNING,\n            logLevel: LogLevel.WARNING,\n            visitorId: this.visitor.visitorId,\n            anonymousId: this.visitor.anonymousId,\n            visitorSessionId: this.visitor.instanceId,\n            flagshipInstanceId: this.visitor.sdkInitialData?.instanceId,\n            traffic: this.visitor.traffic,\n            config: this.config,\n            visitorContext: this.visitor.context,\n            flagKey: key\n        });\n        this.sendTroubleshootingHit(monitoring);\n    }\n    getFlagMetadata(param) {\n        const { key, flag } = param;\n        if (!flag) {\n            logWarningSprintf(this.config, FLAG_METADATA, NO_FLAG_METADATA, this.visitor.visitorId, key);\n            this.SendFlagMetadataTroubleshooting(key);\n            return FSFlagMetadata.Empty();\n        }\n        const metadata = new FSFlagMetadata({\n            campaignId: flag.campaignId,\n            campaignName: flag.campaignName,\n            variationGroupId: flag.variationGroupId,\n            variationGroupName: flag.variationGroupName,\n            variationId: flag.variationId,\n            variationName: flag.variationName,\n            isReference: !!flag.isReference,\n            campaignType: flag.campaignType,\n            slug: flag.slug\n        });\n        return metadata;\n    }\n}\n","import { FSSdkStatus, FLAG_VISITOR_EXPOSED, METHOD_DEACTIVATED_ERROR, FLAG_METADATA, METADATA_SDK_NOT_READY } from '../enum/index';\nimport { logErrorSprintf } from '../utils/utils';\nimport { DefaultStrategy } from './DefaultStrategy';\nimport { FSFlagMetadata } from '../flag/FSFlagMetadata';\nexport class NotReadyStrategy extends DefaultStrategy {\n    async lookupHits() {\n        //\n    }\n    async lookupVisitor() {\n        //\n    }\n    async cacheVisitor() {\n        //\n    }\n    async collectEAIEventsAsync() {\n        this.log('collectEAIData');\n    }\n    onEAICollectStatusChange() {\n        //\n    }\n    reportEaiPageView() {\n        //\n    }\n    reportEaiVisitorEvent() {\n        //\n    }\n    sendVisitorAllocatedVariations() {\n        //\n    }\n    async sendHit(_hit) {\n        this.log('sendHit');\n    }\n    async sendHits(_hits) {\n        this.log('sendHits');\n    }\n    async fetchFlags() {\n        this.log('fetchFlags');\n    }\n    getFlagValue(param) {\n        this.log('Flag.value');\n        return param.defaultValue;\n    }\n    async visitorExposed() {\n        this.log(FLAG_VISITOR_EXPOSED);\n    }\n    getFlagMetadata(param) {\n        const emptyMetaData = FSFlagMetadata.Empty();\n        logErrorSprintf(this.config, FLAG_METADATA, METADATA_SDK_NOT_READY, this.visitor.visitorId, param.key, emptyMetaData);\n        return emptyMetaData;\n    }\n    async sendActivate(_flagDto, _defaultValue) {\n        //\n    }\n    async sendTroubleshootingHit() {\n        //\n    }\n    async sendSdkConfigAnalyticHit() {\n        //\n    }\n    async addInTrackingManager() {\n        //\n    }\n    log(methodName) {\n        logErrorSprintf(this.config, methodName, METHOD_DEACTIVATED_ERROR, this.visitor.visitorId, methodName, FSSdkStatus[FSSdkStatus.SDK_NOT_INITIALIZED]);\n    }\n}\n","import { FSSdkStatus, FLAG_VISITOR_EXPOSED, METHOD_DEACTIVATED_ERROR, FLAG_METADATA, METADATA_PANIC_MODE } from '../enum/index';\nimport { logInfoSprintf } from '../utils/utils';\nimport { DefaultStrategy } from './DefaultStrategy';\nimport { FSFlagMetadata } from '../flag/FSFlagMetadata';\nexport class PanicStrategy extends DefaultStrategy {\n    setConsent(hasConsented) {\n        this.visitor.hasConsented = hasConsented;\n    }\n    updateContext() {\n        this.log('updateContext');\n    }\n    clearContext() {\n        this.log('clearContext');\n    }\n    async lookupHits() {\n        //\n    }\n    async lookupVisitor() {\n        //\n    }\n    async cacheVisitor() {\n        //\n    }\n    async cacheHit() {\n        //\n    }\n    fetchCampaignsFromCache() {\n        return [];\n    }\n    sendVisitorAllocatedVariations() {\n        //\n    }\n    async sendHit(_hit) {\n        this.log('sendHit');\n    }\n    async sendHits(_hits) {\n        this.log('sendHits');\n    }\n    getFlagValue(param) {\n        this.log('Flag.value');\n        return param.defaultValue;\n    }\n    async visitorExposed() {\n        this.log(FLAG_VISITOR_EXPOSED);\n    }\n    getFlagMetadata(param) {\n        const emptyMetaData = FSFlagMetadata.Empty();\n        logInfoSprintf(this.config, FLAG_METADATA, METADATA_PANIC_MODE, this.visitor.visitorId, param.key, emptyMetaData);\n        return emptyMetaData;\n    }\n    async sendTroubleshootingHit() {\n        //\n    }\n    async sendSdkConfigAnalyticHit() {\n        //\n    }\n    async sendActivate(_flagDto, _defaultValue) {\n        //\n    }\n    async collectEAIEventsAsync() {\n        this.log('collectEAIData');\n    }\n    reportEaiPageView() {\n        //\n    }\n    reportEaiVisitorEvent() {\n        //\n    }\n    onEAICollectStatusChange() {\n        //\n    }\n    async addInTrackingManager() {\n        //\n    }\n    log(methodName) {\n        logInfoSprintf(this.config, methodName, METHOD_DEACTIVATED_ERROR, this.visitor.visitorId, methodName, FSSdkStatus[FSSdkStatus.SDK_PANIC]);\n    }\n}\n","import { FLAG_VISITOR_EXPOSED, METHOD_DEACTIVATED_CONSENT_ERROR } from '../enum/index';\nimport { logInfo, sprintf } from '../utils/utils';\nimport { DefaultStrategy } from './DefaultStrategy';\nexport class NoConsentStrategy extends DefaultStrategy {\n    async lookupHits() {\n        //\n    }\n    async lookupVisitor() {\n        //\n    }\n    async cacheVisitor() {\n        //\n    }\n    async cacheHit() {\n        //\n    }\n    async collectEAIEventsAsync() {\n        this.log('collectEAIData');\n    }\n    reportEaiPageView() {\n        //\n    }\n    reportEaiVisitorEvent() {\n        //\n    }\n    onEAICollectStatusChange() {\n        //\n    }\n    fetchCampaignsFromCache() {\n        return [];\n    }\n    async sendHit(_hit) {\n        this.log('sendHit');\n    }\n    async sendHits(_hits) {\n        this.log('sendHits');\n    }\n    async sendActivate(_flagDto, _defaultValue) {\n        //\n    }\n    async visitorExposed() {\n        this.log(FLAG_VISITOR_EXPOSED);\n    }\n    async sendTroubleshootingHit() {\n        //\n    }\n    async addInTrackingManager() {\n        //\n    }\n    log(methodName) {\n        logInfo(this.config, sprintf(METHOD_DEACTIVATED_CONSENT_ERROR, methodName, this.visitor.visitorId), methodName);\n    }\n}\n","/* eslint-disable no-fallthrough */\nexport class MurmurHash {\n    murmurHash3Int32(key, seed = 0) {\n        let h1, h1b, k1, i;\n        const remainder = key.length & 3; // key.length % 4\n        const bytes = key.length - remainder;\n        h1 = seed;\n        const c1 = 0xcc9e2d51;\n        const c2 = 0x1b873593;\n        i = 0;\n        while (i < bytes) {\n            k1 = (key.charCodeAt(i) & 0xff) | ((key.charCodeAt(++i) & 0xff) << 8) | ((key.charCodeAt(++i) & 0xff) << 16) | ((key.charCodeAt(++i) & 0xff) << 24);\n            ++i;\n            k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n            k1 = (k1 << 15) | (k1 >>> 17);\n            k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n            h1 ^= k1;\n            h1 = (h1 << 13) | (h1 >>> 19);\n            h1b = (((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16)) & 0xffffffff;\n            h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n        }\n        k1 = 0;\n        switch (remainder) {\n            case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n            case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n            case 1:\n                k1 ^= (key.charCodeAt(i) & 0xff);\n                k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n                k1 = (k1 << 15) | (k1 >>> 17);\n                k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n                h1 ^= k1;\n        }\n        h1 ^= key.length;\n        h1 ^= h1 >>> 16;\n        h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n        h1 ^= h1 >>> 13;\n        h1 = (((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16)) & 0xffffffff;\n        h1 ^= h1 >>> 16;\n        return h1 >>> 0;\n    }\n}\n","import { PREDEFINED_CONTEXT_LOADED, PROCESS_NEW_VISITOR, VISITOR_CREATED, VISITOR_ID_FROM_AB_TASTY_TAG, VISITOR_ID_GENERATED, VISITOR_PROFILE_LOADED } from './../enum/FlagshipConstant';\nimport { FSSdkStatus, SDK_INFO, VISITOR_ID_ERROR } from '../enum/index';\nimport { hexToValue, isBrowser, logDebugSprintf, logError, uuidV4 } from '../utils/utils';\nimport { DefaultStrategy } from './DefaultStrategy';\nimport { EventEmitter } from '../depsNode.native';\nimport { NotReadyStrategy } from './NotReadyStrategy';\nimport { PanicStrategy } from './PanicStrategy';\nimport { NoConsentStrategy } from './NoConsentStrategy';\nimport { MurmurHash } from '../utils/MurmurHash';\nimport { FSFetchStatus } from '../enum/FSFetchStatus';\nimport { FSFetchReasons } from '../enum/FSFetchReasons';\nexport class VisitorAbstract extends EventEmitter {\n    _visitorId;\n    _context;\n    _flags;\n    _configManager;\n    _campaigns;\n    _hasConsented;\n    _anonymousId;\n    deDuplicationCache;\n    _isCleaningDeDuplicationCache;\n    visitorCache;\n    _exposedVariations;\n    _sendExposedVariationTimeoutId;\n    _instanceId;\n    _traffic;\n    _sdkInitialData;\n    _consentHitTroubleshooting;\n    _segmentHitTroubleshooting;\n    _fetchStatus;\n    _onFetchFlagsStatusChanged;\n    _getCampaignsPromise;\n    _hasContextBeenUpdated;\n    _emotionAi;\n    _analyticTraffic;\n    _murmurHash;\n    _visitorProfileCache;\n    _isClientSuppliedID;\n    _visitorVariationState;\n    get visitorVariationState() {\n        return this._visitorVariationState;\n    }\n    get isClientSuppliedID() {\n        return this._isClientSuppliedID;\n    }\n    get hasContextBeenUpdated() {\n        return this._hasContextBeenUpdated;\n    }\n    set hasContextBeenUpdated(v) {\n        this._hasContextBeenUpdated = v;\n    }\n    get getCampaignsPromise() {\n        return this._getCampaignsPromise;\n    }\n    set getCampaignsPromise(v) {\n        this._getCampaignsPromise = v;\n    }\n    get onFetchFlagsStatusChanged() {\n        return this._onFetchFlagsStatusChanged;\n    }\n    set onFetchFlagsStatusChanged(v) {\n        this._onFetchFlagsStatusChanged = v;\n    }\n    get flagsStatus() {\n        return this._fetchStatus;\n    }\n    set flagsStatus(v) {\n        this._fetchStatus = v;\n        if (this.onFetchFlagsStatusChanged) {\n            this.onFetchFlagsStatusChanged(v);\n        }\n    }\n    get segmentHitTroubleshooting() {\n        return this._segmentHitTroubleshooting;\n    }\n    set segmentHitTroubleshooting(v) {\n        this._segmentHitTroubleshooting = v;\n    }\n    get consentHitTroubleshooting() {\n        return this._consentHitTroubleshooting;\n    }\n    set consentHitTroubleshooting(v) {\n        this._consentHitTroubleshooting = v;\n    }\n    get sdkInitialData() {\n        return this._sdkInitialData;\n    }\n    static SdkStatus;\n    getSdkStatus() {\n        return VisitorAbstract.SdkStatus;\n    }\n    lastFetchFlagsTimestamp = 0;\n    _visitorCacheStatus;\n    get visitorCacheStatus() {\n        return this._visitorCacheStatus;\n    }\n    set visitorCacheStatus(v) {\n        this._visitorCacheStatus = v;\n    }\n    get emotionAi() {\n        return this._emotionAi;\n    }\n    get analyticTraffic() {\n        return this._analyticTraffic;\n    }\n    initBaseProperties(param) {\n        const { configManager, emotionAi, monitoringData, visitorProfileCache } = param;\n        this._murmurHash = param.murmurHash || new MurmurHash();\n        this._emotionAi = emotionAi;\n        this._hasContextBeenUpdated = true;\n        this._exposedVariations = {};\n        this._sdkInitialData = monitoringData;\n        this._instanceId = uuidV4();\n        this._isCleaningDeDuplicationCache = false;\n        this.deDuplicationCache = {};\n        this._context = {};\n        this._configManager = configManager;\n        this.campaigns = [];\n        this._visitorProfileCache = visitorProfileCache;\n    }\n    /**\n     * Attempts to retrieve a visitor ID from the ABTasty tag in browser environments\n     * @returns The ABTasty visitor ID if available, otherwise undefined\n     */\n    getVisitorIdFromTag() {\n        if (__fsWebpackIsBrowser__) {\n            const isClientSuppliedID = window.ABTasty?.api?.internal?._isByoidConfigured?.();\n            if (isClientSuppliedID) {\n                return undefined;\n            }\n            const visitorId = window.ABTasty?.api?.v1?.getValue('visitorId');\n            if (visitorId) {\n                logDebugSprintf(this.config, PROCESS_NEW_VISITOR, VISITOR_ID_FROM_AB_TASTY_TAG, visitorId);\n            }\n            return visitorId;\n        }\n        return undefined;\n    }\n    hasVisitorProfileClientSuppliedId(visitorProfileCache) {\n        return visitorProfileCache.isClientSuppliedId === undefined ? true : visitorProfileCache.isClientSuppliedId;\n    }\n    initVisitorId(visitorId, isAuthenticated, hasConsented) {\n        const shouldUseCache = this.config.reuseVisitorIds && hasConsented === true;\n        const visitorCache = shouldUseCache ? this._visitorProfileCache?.loadVisitorProfile() : null;\n        if (visitorCache) {\n            logDebugSprintf(this.config, PROCESS_NEW_VISITOR, VISITOR_PROFILE_LOADED, visitorCache);\n        }\n        this._isClientSuppliedID = false;\n        if (visitorId) {\n            this.visitorId = visitorId;\n            this._isClientSuppliedID = true;\n        }\n        else if (!isAuthenticated && visitorCache?.anonymousId) {\n            this.visitorId = visitorCache.anonymousId;\n            this._isClientSuppliedID = this.hasVisitorProfileClientSuppliedId(visitorCache);\n        }\n        else if (visitorCache?.visitorId) {\n            this.visitorId = visitorCache.visitorId;\n            this._isClientSuppliedID = this.hasVisitorProfileClientSuppliedId(visitorCache);\n        }\n        else {\n            this.visitorId = this.getVisitorIdFromTag() || this.generateVisitorId();\n        }\n        this._anonymousId = null;\n        if (isAuthenticated) {\n            this._anonymousId = visitorCache?.anonymousId || uuidV4();\n        }\n    }\n    constructor(param) {\n        const { visitorId, context, isAuthenticated, hasConsented, initialFlagsData, initialCampaigns, onFlagsStatusChanged: onFetchFlagsStatusChanged } = param;\n        super();\n        this._visitorVariationState = param.visitorVariationState || {};\n        this.initBaseProperties(param);\n        this.initVisitorId(visitorId, isAuthenticated, hasConsented);\n        this.initAnalyticTraffic();\n        this.setConsent(hasConsented || false);\n        this.updateContext(context);\n        this.loadPredefinedContext();\n        logDebugSprintf(this.config, PROCESS_NEW_VISITOR, PREDEFINED_CONTEXT_LOADED, {\n            fs_client: SDK_INFO.name,\n            fs_version: SDK_INFO.version,\n            fs_users: this.visitorId\n        });\n        this.updateCache();\n        const strategy = this.getStrategy();\n        this.setInitialFlags(initialFlagsData, strategy);\n        this.setInitializeCampaigns(initialCampaigns, !!initialFlagsData, strategy);\n        this.onFetchFlagsStatusChanged = onFetchFlagsStatusChanged;\n        this.updateFlagsStatus();\n        this._emotionAi.init(this);\n        logDebugSprintf(this.config, PROCESS_NEW_VISITOR, VISITOR_CREATED, this.visitorId, this.context, !!isAuthenticated, !!this.hasConsented);\n    }\n    updateFlagsStatus() {\n        if (this._flags.size > 0) {\n            this.flagsStatus = {\n                status: FSFetchStatus.INITIAL_DATA,\n                reason: FSFetchReasons.NONE\n            };\n            return;\n        }\n        this.flagsStatus = {\n            status: FSFetchStatus.FETCH_REQUIRED,\n            reason: FSFetchReasons.FLAGS_NEVER_FETCHED\n        };\n    }\n    updateCache() {\n        const visitorProfile = this.hasConsented ? {\n            visitorId: this.visitorId,\n            anonymousId: this.anonymousId,\n            isClientSuppliedId: this.isClientSuppliedID\n        } : undefined;\n        this._visitorProfileCache?.saveVisitorProfile(visitorProfile);\n    }\n    get traffic() {\n        return this._traffic;\n    }\n    set traffic(v) {\n        this._traffic = v;\n    }\n    get instanceId() {\n        return this._instanceId;\n    }\n    getCurrentDateTime() {\n        return new Date();\n    }\n    initAnalyticTraffic() {\n        const uniqueId = this.visitorId + this.getCurrentDateTime().toDateString();\n        const hash = this._murmurHash.murmurHash3Int32(uniqueId);\n        this._analyticTraffic = hash % 1000;\n    }\n    generateVisitorId() {\n        const visitorId = uuidV4();\n        logDebugSprintf(this.config, PROCESS_NEW_VISITOR, VISITOR_ID_GENERATED, visitorId);\n        return visitorId;\n    }\n    clearDeDuplicationCache(deDuplicationTime) {\n        if (this._isCleaningDeDuplicationCache) {\n            return;\n        }\n        this._isCleaningDeDuplicationCache = true;\n        const entries = Object.entries(this.deDuplicationCache);\n        for (const [key, value] of entries) {\n            if ((Date.now() - value) > (deDuplicationTime * 1000)) {\n                delete this.deDuplicationCache[key];\n            }\n        }\n        this._isCleaningDeDuplicationCache = false;\n    }\n    setInitialFlags(flags, strategy) {\n        this._flags = new Map();\n        if (!Array.isArray(flags)) {\n            return;\n        }\n        flags.forEach((item) => {\n            this._flags.set(item.key, {\n                key: item.key,\n                campaignId: item.campaignId,\n                campaignName: item.campaignName,\n                variationGroupId: item.variationGroupId,\n                variationGroupName: item.variationGroupName,\n                variationId: item.variationId,\n                variationName: item.variationName,\n                isReference: item.isReference,\n                value: hexToValue(item.hex, this.config)?.v,\n                slug: item.slug,\n                campaignType: item.campaignType\n            });\n        });\n        strategy?.sendVisitorAllocatedVariations();\n    }\n    setInitializeCampaigns(campaigns, hasInitialFlags, strategy) {\n        if (campaigns && Array.isArray(campaigns) && !hasInitialFlags) {\n            strategy?.updateCampaigns(campaigns);\n            strategy?.sendVisitorAllocatedVariations();\n        }\n    }\n    loadPredefinedContext() {\n        this.context.fs_client = SDK_INFO.name;\n        this.context.fs_version = SDK_INFO.version;\n        this.context.fs_users = this.visitorId;\n    }\n    get visitorId() {\n        return this._visitorId;\n    }\n    set visitorId(v) {\n        if (!v || typeof v !== 'string') {\n            logError(this.config, VISITOR_ID_ERROR, 'VISITOR ID');\n            return;\n        }\n        this._visitorId = v;\n        this.loadPredefinedContext();\n        this.visitorCache = undefined;\n    }\n    get hasConsented() {\n        return this._hasConsented;\n    }\n    set hasConsented(v) {\n        this._hasConsented = v;\n    }\n    setConsent(hasConsented) {\n        this.hasConsented = hasConsented;\n        this.getStrategy().setConsent(hasConsented);\n    }\n    get context() {\n        return this._context;\n    }\n    set context(v) {\n        this._context = {};\n        this.updateContext(v);\n    }\n    get flagsData() {\n        return this._flags;\n    }\n    set flagsData(v) {\n        this._flags = v;\n    }\n    get configManager() {\n        return this._configManager;\n    }\n    get config() {\n        return this.configManager.config;\n    }\n    get campaigns() {\n        return this._campaigns;\n    }\n    set campaigns(v) {\n        this._campaigns = v;\n    }\n    get anonymousId() {\n        return this._anonymousId;\n    }\n    set anonymousId(v) {\n        this._anonymousId = v;\n    }\n    getStrategy() {\n        let strategy;\n        const params = {\n            visitor: this,\n            murmurHash: new MurmurHash()\n        };\n        const status = this.getSdkStatus();\n        if (status === undefined || status === FSSdkStatus.SDK_NOT_INITIALIZED) {\n            strategy = new NotReadyStrategy(params);\n        }\n        else if (status === FSSdkStatus.SDK_PANIC) {\n            strategy = new PanicStrategy(params);\n        }\n        else if (!this.hasConsented) {\n            strategy = new NoConsentStrategy(params);\n        }\n        else {\n            strategy = new DefaultStrategy(params);\n        }\n        return strategy;\n    }\n    async sendExposedVariation(flag) {\n        if (__fsWebpackIsBrowser__) {\n            if (!flag || !isBrowser()) {\n                return;\n            }\n            this._exposedVariations[flag.campaignId] = {\n                campaignId: flag.campaignId,\n                variationGroupId: flag.variationGroupId,\n                variationId: flag.variationId\n            };\n            this._visitorVariationState.exposedVariations = this._exposedVariations;\n            if (!this.config.isQAModeEnabled) {\n                return;\n            }\n            const BATCH_SIZE = 10;\n            const DELAY = 100;\n            const message = await import('../qaAssistant/messages/index.ts');\n            if (Object.keys(this._exposedVariations).length >= BATCH_SIZE) {\n                message.sendVisitorExposedVariations(this._visitorVariationState);\n                this._exposedVariations = {};\n            }\n            if (this._sendExposedVariationTimeoutId) {\n                clearTimeout(this._sendExposedVariationTimeoutId);\n            }\n            if (Object.keys(this._exposedVariations).length === 0) {\n                return;\n            }\n            this._sendExposedVariationTimeoutId = setTimeout(() => {\n                message.sendVisitorExposedVariations(this._visitorVariationState);\n                this._exposedVariations = {};\n            }, DELAY);\n        }\n    }\n    collectEAIEventsAsync(currentPage) {\n        return this.getStrategy().collectEAIEventsAsync(currentPage);\n    }\n    sendEaiVisitorEvent(event) {\n        this.getStrategy().reportEaiVisitorEvent(event);\n    }\n    sendEaiPageView(pageView) {\n        this.getStrategy().reportEaiPageView(pageView);\n    }\n    onEAICollectStatusChange(callback) {\n        this.getStrategy().onEAICollectStatusChange(callback);\n    }\n    cleanup() {\n        this.getStrategy().cleanup();\n    }\n    async getCachedEAIScore() {\n        if (!this.visitorCache) {\n            await this.getStrategy().lookupVisitor();\n        }\n        return this.visitorCache?.data?.eAIScore;\n    }\n    async isEAIDataCollected() {\n        if (!this.visitorCache) {\n            await this.getStrategy().lookupVisitor();\n        }\n        return this.visitorCache?.data?.isEAIDataCollected || false;\n    }\n    async setCachedEAIScore(eAIScore) {\n        this.getStrategy().cacheVisitor(eAIScore);\n    }\n    async setIsEAIDataCollected(isEAIDataCollected) {\n        this.getStrategy().cacheVisitor(undefined, isEAIDataCollected);\n    }\n    sendTroubleshooting(hit) {\n        return this.getStrategy().sendTroubleshootingHit(hit);\n    }\n    sendUsageHit(hit) {\n        return this.getStrategy().sendUsageHit(hit);\n    }\n    addInTrackingManager(hit) {\n        return this.getStrategy().addInTrackingManager(hit);\n    }\n}\n","/**\n * Represents the status of the flags in the Flagship SDK.\n */\nexport var FSFlagStatus;\n(function (FSFlagStatus) {\n    /**\n     * The flags have been successfully fetched from the API or re-evaluated in bucketing mode.\n     */\n    FSFlagStatus[\"FETCHED\"] = \"FETCHED\";\n    /**\n     * The flags need to be re-fetched due to a change in context, or because the flags were loaded from cache or XPC.\n     */\n    FSFlagStatus[\"FETCH_REQUIRED\"] = \"FETCH_REQUIRED\";\n    /**\n     * The flag was not found or do not exist.\n     */\n    FSFlagStatus[\"NOT_FOUND\"] = \"NOT_FOUND\";\n    /**\n     * The SDK is in PANIC mode: All features are disabled except for the one to fetch flags.\n     */\n    FSFlagStatus[\"PANIC\"] = \"PANIC\";\n})(FSFlagStatus || (FSFlagStatus = {}));\n","import { isBrowser } from '../utils/utils';\nexport function forceVariation({ flagDTO, config, visitorVariationState }) {\n    if (__fsWebpackIsBrowser__) {\n        if (!config.isQAModeEnabled || !isBrowser() || !flagDTO || !visitorVariationState.forcedVariations) {\n            return undefined;\n        }\n        const forcedVariation = visitorVariationState.forcedVariations[flagDTO.campaignId];\n        if (!forcedVariation) {\n            return undefined;\n        }\n        const { campaignId, campaignName, variationGroupId, variationGroupName, campaignType, CampaignSlug, variation } = forcedVariation;\n        const value = variation.modifications.value[flagDTO.key];\n        return {\n            key: flagDTO.key,\n            campaignId,\n            campaignName,\n            variationGroupId,\n            variationGroupName: variationGroupName,\n            variationId: variation.id,\n            variationName: variation.name,\n            isReference: !!variation.reference,\n            campaignType,\n            slug: CampaignSlug,\n            value\n        };\n    }\n    return undefined;\n}\n","import { FSFetchStatus } from '../enum/FSFetchStatus';\nimport { FSFlagStatus } from '../enum/FSFlagStatus';\nimport { FSFlagMetadata } from './FSFlagMetadata';\nimport { forceVariation } from './forceVariation';\nexport class FSFlag {\n    _visitor;\n    _key;\n    _defaultValue;\n    hasGetValueBeenCalled = false;\n    constructor(param) {\n        const { key, visitor } = param;\n        this._key = key;\n        this._visitor = visitor;\n    }\n    exists() {\n        if (!this._visitor) {\n            return false;\n        }\n        const flagDTO = this._visitor?.flagsData.get(this._key);\n        const forcedFlagDTO = forceVariation({\n            flagDTO,\n            config: this._visitor.config,\n            visitorVariationState: this._visitor.visitorVariationState\n        });\n        const flag = forcedFlagDTO || flagDTO;\n        return !!(flag?.campaignId && flag?.variationId && flag?.variationGroupId);\n    }\n    get metadata() {\n        if (!this._visitor) {\n            return FSFlagMetadata.Empty();\n        }\n        const flagDTO = this._visitor.flagsData.get(this._key);\n        const forcedFlagDTO = forceVariation({\n            flagDTO,\n            config: this._visitor.config,\n            visitorVariationState: this._visitor.visitorVariationState\n        });\n        return this._visitor.getFlagMetadata({\n            key: this._key,\n            flag: forcedFlagDTO || flagDTO\n        });\n    }\n    async visitorExposed() {\n        if (!this._visitor) {\n            return;\n        }\n        const flagDTO = this._visitor.flagsData.get(this._key);\n        const forcedFlagDTO = forceVariation({\n            flagDTO,\n            config: this._visitor.config,\n            visitorVariationState: this._visitor.visitorVariationState\n        });\n        return this._visitor.visitorExposed({\n            key: this._key,\n            flag: forcedFlagDTO || flagDTO,\n            defaultValue: this._defaultValue,\n            hasGetValueBeenCalled: this.hasGetValueBeenCalled\n        });\n    }\n    getValue(defaultValue, visitorExposed = true) {\n        this._defaultValue = defaultValue;\n        this.hasGetValueBeenCalled = true;\n        if (!this._visitor) {\n            return defaultValue;\n        }\n        const flagDTO = this._visitor.flagsData.get(this._key);\n        const forcedFlagDTO = forceVariation({\n            flagDTO,\n            config: this._visitor.config,\n            visitorVariationState: this._visitor.visitorVariationState\n        });\n        const flag = forcedFlagDTO || flagDTO;\n        this._visitor.sendExposedVariation(flag);\n        return this._visitor.getFlagValue({\n            key: this._key,\n            defaultValue,\n            flag,\n            visitorExposed\n        });\n    }\n    get status() {\n        if (this._visitor?.flagsStatus?.status === FSFetchStatus.PANIC) {\n            return FSFlagStatus.PANIC;\n        }\n        if (!this.exists()) {\n            return FSFlagStatus.NOT_FOUND;\n        }\n        if (this._visitor?.flagsStatus?.status === FSFetchStatus.FETCH_REQUIRED || this._visitor?.flagsStatus?.status === FSFetchStatus.FETCHING) {\n            return FSFlagStatus.FETCH_REQUIRED;\n        }\n        return FSFlagStatus.FETCHED;\n    }\n}\n","import { logWarningSprintf, valueToHex } from '../utils/utils';\nimport { FSFlag } from './FsFlags';\nimport { GET_FLAG, GET_FLAG_NOT_FOUND } from '../enum/FlagshipConstant';\n/**\n * Represents a collection of flags.\n */\nexport class FSFlagCollection {\n    _visitor;\n    _keys = new Set();\n    _flags;\n    /**\n       * Creates a new instance of FSFlagCollection.\n       * @param param - The parameter object.\n       * @param param.visitor - The visitor delegate.\n       * @param param.flags - The initial flags.\n       */\n    constructor(param) {\n        const { visitor, flags } = param;\n        this._visitor = visitor;\n        this._flags = flags || new Map();\n        if (this._flags.size === 0) {\n            this._keys = new Set(visitor?.flagsData.keys());\n            this._keys.forEach((key) => {\n                this._flags.set(key, new FSFlag({\n                    key,\n                    visitor\n                }));\n            });\n        }\n        else {\n            this._keys = new Set(this._flags.keys());\n        }\n    }\n    /**\n     * @inheritdoc\n     */\n    get size() {\n        return this._keys.size;\n    }\n    /**\n     * @inheritdoc\n     */\n    get(key) {\n        const flag = this._flags.get(key);\n        if (!flag) {\n            if (this._visitor?.config) {\n                logWarningSprintf(this._visitor.config, GET_FLAG, GET_FLAG_NOT_FOUND, this._visitor.visitorId, key);\n            }\n            return new FSFlag({ key });\n        }\n        return flag;\n    }\n    /**\n     * @inheritdoc\n     */\n    has(key) {\n        return this._keys.has(key);\n    }\n    /**\n     * @inheritdoc\n     */\n    keys() {\n        return this._keys;\n    }\n    /**\n     * @inheritdoc\n     */\n    [Symbol.iterator]() {\n        let index = 0;\n        const keysArray = Array.from(this._keys);\n        return {\n            next: () => {\n                if (index < keysArray.length) {\n                    const key = keysArray[index++];\n                    return {\n                        value: [key, this._flags.get(key)],\n                        done: false\n                    };\n                }\n                else {\n                    return {\n                        value: null,\n                        done: true\n                    };\n                }\n            }\n        };\n    }\n    /**\n     * @inheritdoc\n     */\n    filter(predicate) {\n        const flags = new Map();\n        this._flags.forEach((flag, key) => {\n            if (predicate(flag, key, this)) {\n                flags.set(key, flag);\n            }\n        });\n        return new FSFlagCollection({\n            visitor: this._visitor,\n            flags\n        });\n    }\n    /**\n     * @inheritdoc\n     */\n    async exposeAll() {\n        await Promise.all(Array.from(this._flags.values(), (flag) => flag.visitorExposed()));\n    }\n    /**\n     * @inheritdoc\n     */\n    getMetadata() {\n        const metadata = new Map();\n        this._flags.forEach((flag, key) => {\n            metadata.set(key, flag.metadata);\n        });\n        return metadata;\n    }\n    /**\n     * @inheritdoc\n     */\n    toJSON() {\n        const serializedData = [];\n        this._flags.forEach((flag, key) => {\n            const metadata = flag.metadata;\n            serializedData.push({\n                key,\n                campaignId: metadata.campaignId,\n                campaignName: metadata.campaignName,\n                variationGroupId: metadata.variationGroupId,\n                variationGroupName: metadata.variationGroupName,\n                variationId: metadata.variationId,\n                variationName: metadata.variationName,\n                isReference: metadata.isReference,\n                campaignType: metadata.campaignType,\n                slug: metadata.slug,\n                hex: valueToHex({ v: flag.getValue(null, false) })\n            });\n        });\n        return serializedData;\n    }\n    forEach(callbackfn) {\n        this._flags.forEach((flag, key) => {\n            callbackfn(flag, key, this);\n        });\n    }\n}\n","import { VisitorAbstract } from './VisitorAbstract';\nimport { FSFlag } from '../flag/FsFlags';\nimport { logWarningSprintf, visitorFlagSyncStatusMessage } from '../utils/utils';\nimport { GET_FLAG } from '../enum/FlagshipConstant';\nimport { FSFetchStatus } from '../enum/FSFetchStatus';\nimport { FSFlagCollection } from '../flag/FSFlagCollection';\nexport class VisitorDelegate extends VisitorAbstract {\n    updateContext(context, value) {\n        this.getStrategy().updateContext(context, value);\n        this.loadPredefinedContext();\n    }\n    clearContext() {\n        this.getStrategy().clearContext();\n    }\n    getFlag(key) {\n        if (this.flagsStatus.status !== FSFetchStatus.FETCHED\n            && this.flagsStatus.status !== FSFetchStatus.FETCHING\n            && this.flagsStatus.status !== FSFetchStatus.INITIAL_DATA) {\n            logWarningSprintf(this.config, GET_FLAG, visitorFlagSyncStatusMessage(this.flagsStatus.reason), this.visitorId, key);\n        }\n        return new FSFlag({\n            key,\n            visitor: this\n        });\n    }\n    getFlags() {\n        return new FSFlagCollection({ visitor: this });\n    }\n    sendHit(hit) {\n        return this.getStrategy().sendHit(hit);\n    }\n    sendHits(hits) {\n        return this.getStrategy().sendHits(hits);\n    }\n    authenticate(visitorId) {\n        this.getStrategy().authenticate(visitorId);\n        this.updateCache();\n    }\n    unauthenticate() {\n        this.getStrategy().unauthenticate();\n        this.updateCache();\n    }\n    async fetchFlags() {\n        await this.getStrategy().fetchFlags();\n    }\n    visitorExposed(param) {\n        return this.getStrategy().visitorExposed(param);\n    }\n    getFlagValue(param) {\n        return this.getStrategy().getFlagValue(param);\n    }\n    getFlagMetadata(param) {\n        return this.getStrategy().getFlagMetadata(param);\n    }\n}\n","import { ALLOCATION, BUCKETING_NEW_ALLOCATION, BUCKETING_VARIATION_CACHE, GET_THIRD_PARTY_SEGMENT, THIRD_PARTY_SEGMENT_URL } from '../enum/FlagshipConstant';\nimport { LogLevel } from '../enum/index';\nimport { TroubleshootingLabel } from '../types';\nimport { errorFormat, logDebugSprintf, logError, sprintf } from '../utils/utils';\nimport { DecisionManager } from './DecisionManager';\nimport { Segment } from '../hit/Segment.ts';\nimport { Troubleshooting } from '../hit/Troubleshooting.ts';\nexport class BucketingManager extends DecisionManager {\n    _murmurHash;\n    _sdkManager;\n    get _bucketingContent() {\n        return this._sdkManager.getBucketingContent();\n    }\n    constructor({ httpClient, config, murmurHash, sdkManager, trackingManager, flagshipInstanceId }) {\n        super({\n            httpClient,\n            config,\n            trackingManager,\n            flagshipInstanceId\n        });\n        this._murmurHash = murmurHash;\n        this._sdkManager = sdkManager;\n    }\n    async sendContext(visitor) {\n        try {\n            if (Object.keys(visitor.context).length <= 3 || !visitor.hasConsented || !visitor.hasContextBeenUpdated) {\n                return;\n            }\n            visitor.hasContextBeenUpdated = false;\n            const SegmentHit = new Segment({\n                context: visitor.context,\n                visitorId: visitor.visitorId,\n                anonymousId: visitor.anonymousId\n            });\n            await visitor.sendHit(SegmentHit);\n            const hitTroubleshooting = new Troubleshooting({\n                label: TroubleshootingLabel.VISITOR_SEND_HIT,\n                logLevel: LogLevel.INFO,\n                traffic: visitor.traffic || 0,\n                visitorId: visitor.visitorId,\n                visitorSessionId: visitor.instanceId,\n                flagshipInstanceId: visitor.sdkInitialData?.instanceId,\n                anonymousId: visitor.anonymousId,\n                config: this.config,\n                hitContent: SegmentHit.toApiKeys()\n            });\n            visitor.segmentHitTroubleshooting = hitTroubleshooting;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logError(this.config, error.message || error, 'sendContext');\n        }\n    }\n    async getThirdPartySegment(visitorId) {\n        const url = sprintf(THIRD_PARTY_SEGMENT_URL, this.config.envId, visitorId);\n        const now = Date.now();\n        const contexts = {};\n        try {\n            const response = await this._httpClient.getAsync(url, { nextFetchConfig: this.config.nextFetchConfig });\n            const content = response.body;\n            if (Array.isArray(content)) {\n                for (const item of content) {\n                    contexts[`${item.partner}::${item.segment}`] = item.value;\n                }\n            }\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logError(this.config, errorFormat(error.message || error, {\n                url,\n                nextFetchConfig: this.config.nextFetchConfig,\n                duration: Date.now() - now\n            }), GET_THIRD_PARTY_SEGMENT);\n        }\n        return contexts;\n    }\n    async getCampaignsAsync(visitor) {\n        if (!this._bucketingContent) {\n            return null;\n        }\n        const troubleshooting = this._bucketingContent?.accountSettings?.troubleshooting;\n        this.troubleshooting = undefined;\n        if (troubleshooting) {\n            this.troubleshooting = {\n                startDate: new Date(troubleshooting.startDate),\n                endDate: new Date(troubleshooting.endDate),\n                timezone: troubleshooting.timezone,\n                traffic: troubleshooting.traffic\n            };\n        }\n        if (this._bucketingContent.panic) {\n            this.panic = true;\n            return [];\n        }\n        this.panic = false;\n        if (!this._bucketingContent.campaigns) {\n            return null;\n        }\n        if (this.config.fetchThirdPartyData) {\n            const thirdPartySegments = await this.getThirdPartySegment(visitor.visitorId);\n            visitor.updateContext(thirdPartySegments);\n        }\n        await this.sendContext(visitor);\n        const visitorCampaigns = [];\n        this._bucketingContent.campaigns.forEach(campaign => {\n            const currentCampaigns = this.getVisitorCampaigns(campaign.variationGroups, campaign.id, campaign.type, visitor);\n            if (currentCampaigns) {\n                currentCampaigns.slug = campaign.slug ?? null;\n                currentCampaigns.name = campaign.name;\n                visitorCampaigns.push(currentCampaigns);\n            }\n        });\n        return visitorCampaigns;\n    }\n    getVisitorCampaigns(variationGroups, campaignId, campaignType, visitor) {\n        for (const variationGroup of variationGroups) {\n            const check = this.isMatchTargeting(variationGroup, visitor);\n            if (check) {\n                const variation = this.getVariation(variationGroup, visitor);\n                if (!variation) {\n                    return null;\n                }\n                return {\n                    id: campaignId,\n                    variation,\n                    variationGroupId: variationGroup.id,\n                    variationGroupName: variationGroup.name,\n                    type: campaignType\n                };\n            }\n        }\n        return null;\n    }\n    getVariation(variationGroup, visitor) {\n        const hash = this._murmurHash.murmurHash3Int32(variationGroup.id + visitor.visitorId);\n        const hashAllocation = hash % 100;\n        let totalAllocation = 0;\n        for (const variation of variationGroup.variations) {\n            const assignmentsHistory = visitor.visitorCache?.data?.assignmentsHistory;\n            const cacheVariationId = assignmentsHistory ? assignmentsHistory[variationGroup.id] : null;\n            if (cacheVariationId) {\n                const newVariation = variationGroup.variations.find(x => x.id === cacheVariationId);\n                if (!newVariation) {\n                    continue;\n                }\n                logDebugSprintf(this.config, ALLOCATION, BUCKETING_VARIATION_CACHE, visitor.visitorId, newVariation.id);\n                return {\n                    id: newVariation.id,\n                    name: newVariation.name,\n                    modifications: newVariation.modifications,\n                    reference: newVariation.reference\n                };\n            }\n            if (variation.allocation === undefined || variation.allocation === 0) {\n                continue;\n            }\n            totalAllocation += variation.allocation;\n            if (hashAllocation < totalAllocation) {\n                logDebugSprintf(this.config, ALLOCATION, BUCKETING_NEW_ALLOCATION, visitor.visitorId, variation.id, totalAllocation);\n                return {\n                    id: variation.id,\n                    modifications: variation.modifications,\n                    reference: variation.reference,\n                    name: variation.name\n                };\n            }\n        }\n        return null;\n    }\n    isMatchTargeting(variationGroup, visitor) {\n        if (!variationGroup || !variationGroup.targeting || !variationGroup.targeting.targetingGroups) {\n            return false;\n        }\n        return variationGroup.targeting.targetingGroups.some(targetingGroup => this.checkAndTargeting(targetingGroup.targetings, visitor));\n    }\n    isANDListOperator(operator) {\n        return ['NOT_EQUALS', 'NOT_CONTAINS'].includes(operator);\n    }\n    checkAndTargeting(targetings, visitor) {\n        let contextValue;\n        let check = false;\n        for (const { key, value, operator } of targetings) {\n            if (operator === 'EXISTS') {\n                if (key in visitor.context) {\n                    check = true;\n                    continue;\n                }\n                check = false;\n                break;\n            }\n            if (operator === 'NOT_EXISTS') {\n                if (key in visitor.context) {\n                    check = false;\n                    break;\n                }\n                check = true;\n                continue;\n            }\n            if (key === 'fs_all_users') {\n                check = true;\n                continue;\n            }\n            if (key === 'fs_users') {\n                contextValue = visitor.visitorId;\n            }\n            else {\n                if (!(key in visitor.context)) {\n                    check = false;\n                    break;\n                }\n                contextValue = visitor.context[key];\n            }\n            check = this.testOperator(operator, contextValue, value);\n            if (!check) {\n                break;\n            }\n        }\n        return check;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    testListOperatorLoop(operator, contextValue, value, initialCheck) {\n        let check = initialCheck;\n        for (const v of value) {\n            check = this.testOperator(operator, contextValue, v);\n            if (check !== initialCheck) {\n                break;\n            }\n        }\n        return check;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    testListOperator(operator, contextValue, value) {\n        const andOperator = this.isANDListOperator(operator);\n        if (andOperator) {\n            return this.testListOperatorLoop(operator, contextValue, value, true);\n        }\n        return this.testListOperatorLoop(operator, contextValue, value, false);\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    testOperator(operator, contextValue, value) {\n        let check;\n        if (Array.isArray(value)) {\n            return this.testListOperator(operator, contextValue, value);\n        }\n        switch (operator) {\n            case 'EQUALS':\n                check = contextValue === value;\n                break;\n            case 'NOT_EQUALS':\n                check = contextValue !== value;\n                break;\n            case 'CONTAINS':\n                check = contextValue.toString().includes(value.toString());\n                break;\n            case 'NOT_CONTAINS':\n                check = !contextValue.toString().includes(value.toString());\n                break;\n            case 'GREATER_THAN':\n                check = contextValue > value;\n                break;\n            case 'LOWER_THAN':\n                check = contextValue < value;\n                break;\n            case 'GREATER_THAN_OR_EQUALS':\n                check = contextValue >= value;\n                break;\n            case 'LOWER_THAN_OR_EQUALS':\n                check = contextValue <= value;\n                break;\n            case 'STARTS_WITH':\n                check = contextValue.toString().startsWith(value.toString());\n                break;\n            case 'ENDS_WITH':\n                check = contextValue.toString().endsWith(value.toString());\n                break;\n            default:\n                check = false;\n                break;\n        }\n        return check;\n    }\n}\n","export class HttpError extends Error {\n    _statusCode;\n    _headers;\n    get headers() {\n        return this._headers;\n    }\n    get statusCode() {\n        return this._statusCode;\n    }\n    constructor(statusCode, message, headers) {\n        super(message);\n        this._statusCode = statusCode;\n        this._headers = headers;\n    }\n}\n","var x = (y) => {\n\tvar x = {}; __webpack_require__.d(x, y); return x\n} \nvar y = (x) => (() => (x))\nconst __WEBPACK_NAMESPACE_OBJECT__ = x({ [\"default\"]: () => (__WEBPACK_EXTERNAL_MODULE_node_fetch_e2fb16d6__[\"default\"]) });","import fetch from 'node-fetch';\nfunction getHttpAgent() {\n    const globalOption = {};\n    if (typeof window === 'undefined') {\n        // eslint-disable-next-line @typescript-eslint/no-require-imports\n        const { Agent: HttpAgent } = require('http');\n        // eslint-disable-next-line @typescript-eslint/no-require-imports\n        const { Agent: HttpAgents } = require('https');\n        globalOption.agent = (parsedURL) => {\n            return parsedURL.protocol === 'http:' ? new HttpAgent({ keepAlive: true }) : new HttpAgents({ keepAlive: true });\n        };\n    }\n    return globalOption;\n}\nexport const myFetch = async (input, init) => {\n    const globalOption = getHttpAgent();\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return fetch(input, {\n        ...globalOption,\n        ...init\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    });\n};\nexport { EventEmitter } from 'events';\nexport { LocalAbortController } from './LocalAbortController.node';\n","import { HttpError } from './HttpError';\nimport { REQUEST_TIME_OUT } from '../enum/index';\nimport { myFetch, LocalAbortController } from '../depsNode.native';\nexport class HttpClient {\n    async getResponse(response) {\n        const applicationType = response.headers.get('Content-Type');\n        const checkJson = applicationType?.includes('application/json');\n        let body;\n        const headers = {};\n        response.headers.forEach((value, key) => {\n            headers[key] = value;\n        });\n        if (checkJson && response.ok && response.status !== 204) {\n            body = await response.json();\n        }\n        if (response.status >= 400) {\n            const bodyString = await response.text();\n            throw new HttpError(response.status, bodyString || response.statusText, headers);\n        }\n        return {\n            status: response.status,\n            body,\n            headers\n        };\n    }\n    getAbortController() {\n        const AbortCtrl = typeof globalThis.AbortController !== 'undefined'\n            ? globalThis.AbortController\n            : LocalAbortController;\n        return new AbortCtrl;\n    }\n    async getAsync(url, options) {\n        const c = this.getAbortController();\n        const id = setTimeout(() => c.abort(), (options?.timeout ? options.timeout : REQUEST_TIME_OUT) * 1000);\n        try {\n            const response = await myFetch(url, {\n                method: 'GET',\n                headers: options?.headers,\n                signal: c.signal,\n                keepalive: true,\n                next: options?.nextFetchConfig\n            });\n            return this.getResponse(response);\n        }\n        finally {\n            clearTimeout(id);\n        }\n    }\n    async postAsync(url, options) {\n        const c = this.getAbortController();\n        const id = setTimeout(() => c.abort(), options.timeout ? options.timeout * 1000 : REQUEST_TIME_OUT * 1000);\n        try {\n            const response = await myFetch(url, {\n                method: 'POST',\n                headers: options.headers,\n                body: JSON.stringify(options.body),\n                signal: c.signal,\n                keepalive: true,\n                next: options?.nextFetchConfig\n            });\n            return this.getResponse(response);\n        }\n        finally {\n            clearTimeout(id);\n        }\n    }\n}\n","import { BucketingManager } from './BucketingManager';\nexport class EdgeManager extends BucketingManager {\n    getCampaignsAsync(visitor) {\n        return super.getCampaignsAsync(visitor);\n    }\n}\n","import { DecisionMode } from './DecisionMode';\nimport { FlagshipConfig } from './FlagshipConfig';\nexport class EdgeConfig extends FlagshipConfig {\n    constructor(param) {\n        super({\n            ...param,\n            decisionMode: DecisionMode.BUCKETING_EDGE\n        });\n    }\n}\n","import { TroubleshootingLabel } from '../types';\nimport { BUCKETING_API_URL, BUCKETING_POOLING_STARTED, BUCKETING_POOLING_STOPPED, HEADER_APPLICATION_JSON, HEADER_CONTENT_TYPE, HEADER_X_SDK_CLIENT, HEADER_X_SDK_VERSION, LogLevel, POLLING_EVENT_200, POLLING_EVENT_300, POLLING_EVENT_FAILED, PROCESS_BUCKETING, SDK_INFO } from '../enum/index';\nimport { errorFormat, logDebug, logDebugSprintf, logError, logInfo, sprintf } from '../utils/utils';\nimport { Troubleshooting } from '../hit/Troubleshooting.ts';\nexport class BucketingSdkManager {\n    _httpClient;\n    _config;\n    _trackingManager;\n    _intervalID;\n    _lastModified;\n    _isPooling;\n    _EAIConfig;\n    _bucketingContent;\n    _lastBucketingTimestamp;\n    _flagshipInstanceId;\n    constructor({ httpClient, sdkConfig, trackingManager, flagshipInstanceId }) {\n        this._httpClient = httpClient;\n        this._config = sdkConfig;\n        this._trackingManager = trackingManager;\n        this._bucketingContent = sdkConfig.initialBucketing;\n        this._flagshipInstanceId = flagshipInstanceId;\n        this._lastModified = '';\n    }\n    resetSdk() {\n        if (this._intervalID) {\n            clearInterval(this._intervalID);\n        }\n        this._isPooling = false;\n        this._intervalID = undefined;\n        this._lastModified = '';\n        this._bucketingContent = undefined;\n        this._EAIConfig = undefined;\n        logInfo(this._config, BUCKETING_POOLING_STOPPED, PROCESS_BUCKETING);\n    }\n    getBucketingContent() {\n        return this._bucketingContent;\n    }\n    async initSdk() {\n        const timeout = this._config.pollingInterval * 1000;\n        await this.fetchBucketingFile();\n        if (timeout === 0) {\n            return;\n        }\n        logInfo(this._config, BUCKETING_POOLING_STARTED, PROCESS_BUCKETING);\n        this._intervalID = setInterval(() => {\n            this.fetchBucketingFile();\n        }, timeout);\n    }\n    getEAIConfig() {\n        return this._EAIConfig;\n    }\n    sendTroubleshooting(headers, url, response, now) {\n        const troubleshootingHit = new Troubleshooting({\n            visitorId: this._flagshipInstanceId,\n            flagshipInstanceId: this._flagshipInstanceId,\n            label: TroubleshootingLabel.SDK_BUCKETING_FILE,\n            traffic: 0,\n            logLevel: LogLevel.INFO,\n            config: this._config,\n            httpRequestHeaders: headers,\n            httpRequestMethod: 'POST',\n            httpRequestUrl: url,\n            httpResponseBody: response?.body,\n            httpResponseHeaders: response?.headers,\n            httpResponseCode: response?.status,\n            httpResponseTime: Date.now() - now\n        });\n        this._trackingManager.initTroubleshootingHit = troubleshootingHit;\n    }\n    sendErrorTroubleshooting(headers, url, error, now) {\n        const troubleshootingHit = new Troubleshooting({\n            visitorId: this._flagshipInstanceId,\n            flagshipInstanceId: this._flagshipInstanceId,\n            label: TroubleshootingLabel.SDK_BUCKETING_FILE_ERROR,\n            traffic: 0,\n            logLevel: LogLevel.INFO,\n            config: this._config,\n            httpRequestHeaders: headers,\n            httpRequestMethod: 'POST',\n            httpRequestUrl: url,\n            httpResponseBody: error?.message,\n            httpResponseHeaders: error?.headers,\n            httpResponseCode: error?.statusCode,\n            httpResponseTime: Date.now() - now\n        });\n        this._trackingManager.initTroubleshootingHit = troubleshootingHit;\n    }\n    handlePollingResponse(params) {\n        const { response } = params;\n        if (response.status === 200) {\n            logDebugSprintf(this._config, PROCESS_BUCKETING, POLLING_EVENT_200, response.body);\n            this._bucketingContent = response.body;\n            this._lastBucketingTimestamp = new Date().toISOString();\n            this._EAIConfig = {\n                eaiCollectEnabled: !!this._bucketingContent?.accountSettings?.eaiActivationEnabled,\n                eaiActivationEnabled: !!this._bucketingContent?.accountSettings?.eaiCollectEnabled\n            };\n            this.sendTroubleshooting(params.headers, params.url, response, params.now);\n        }\n        else if (response.status === 304) {\n            logDebug(this._config, POLLING_EVENT_300, PROCESS_BUCKETING);\n        }\n        const lastModified = response?.headers?.['last-modified'];\n        if (lastModified) {\n            if (this._lastModified !== lastModified && this._config.onBucketingUpdated) {\n                this._config.onBucketingUpdated(new Date(lastModified));\n            }\n            this._lastModified = lastModified;\n        }\n        this._isPooling = false;\n    }\n    async fetchBucketingFile() {\n        if (this._isPooling) {\n            return;\n        }\n        this._isPooling = true;\n        const url = sprintf(BUCKETING_API_URL, this._config.envId);\n        const headers = {\n            [HEADER_X_SDK_CLIENT]: SDK_INFO.name,\n            [HEADER_X_SDK_VERSION]: SDK_INFO.version,\n            [HEADER_CONTENT_TYPE]: HEADER_APPLICATION_JSON\n        };\n        const now = Date.now();\n        try {\n            if (this._lastModified) {\n                headers['if-modified-since'] = this._lastModified;\n            }\n            const response = await this._httpClient.getAsync(url, {\n                headers,\n                timeout: this._config.timeout,\n                nextFetchConfig: this._config.nextFetchConfig\n            });\n            this.handlePollingResponse({\n                response,\n                headers,\n                url,\n                now\n            });\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            this._isPooling = false;\n            logError(this._config, errorFormat(POLLING_EVENT_FAILED, {\n                url,\n                headers,\n                error,\n                nextFetchConfig: this._config.nextFetchConfig,\n                method: 'GET',\n                duration: Date.now() - now\n            }), PROCESS_BUCKETING);\n            this.sendErrorTroubleshooting(headers, url, error, now);\n        }\n    }\n}\n","export class EdgeSdkManager {\n    _httpClient;\n    _config;\n    _trackingManager;\n    _bucketingContent;\n    _flagshipInstanceId;\n    constructor({ httpClient, sdkConfig, trackingManager, flagshipInstanceId }) {\n        this._httpClient = httpClient;\n        this._config = sdkConfig;\n        this._trackingManager = trackingManager;\n        this._bucketingContent = sdkConfig.initialBucketing;\n        this._flagshipInstanceId = flagshipInstanceId;\n    }\n    resetSdk() {\n        //\n    }\n    getBucketingContent() {\n        return this._bucketingContent;\n    }\n    async initSdk() {\n        //\n    }\n    getEAIConfig() {\n        return undefined;\n    }\n}\n","import { TroubleshootingLabel } from '../types';\nimport { CDN_ACCOUNT_SETTINGS_URL } from '../enum/FlagshipConstant';\nimport { logErrorSprintf, sprintf } from '../utils/utils';\nimport { LogLevel } from '../enum/LogLevel';\nimport { Troubleshooting } from '../hit/Troubleshooting.ts';\nexport class ApiSdkManager {\n    _httpClient;\n    _config;\n    _trackingManager;\n    _EAIConfig;\n    _flagshipInstanceId;\n    constructor({ httpClient, sdkConfig, trackingManager, flagshipInstanceId }) {\n        this._httpClient = httpClient;\n        this._config = sdkConfig;\n        this._trackingManager = trackingManager;\n        this._flagshipInstanceId = flagshipInstanceId;\n    }\n    resetSdk() {\n        this._EAIConfig = undefined;\n    }\n    getBucketingContent() {\n        return undefined;\n    }\n    sendTroubleshooting(accountSettings, url, response, now) {\n        const troubleshooting = new Troubleshooting({\n            flagshipInstanceId: this._flagshipInstanceId,\n            label: TroubleshootingLabel.ACCOUNT_SETTINGS,\n            logLevel: LogLevel.DEBUG,\n            visitorId: this._flagshipInstanceId,\n            config: this._config,\n            accountSettings,\n            traffic: 0,\n            httpRequestMethod: 'POST',\n            httpRequestUrl: url,\n            httpResponseHeaders: response?.headers,\n            httpResponseCode: response?.status,\n            httpResponseTime: Date.now() - now\n        });\n        this._trackingManager.initTroubleshootingHit = troubleshooting;\n    }\n    sendErrorTroubleshooting(url, error, now) {\n        const troubleshootingHit = new Troubleshooting({\n            visitorId: this._flagshipInstanceId,\n            flagshipInstanceId: this._flagshipInstanceId,\n            label: TroubleshootingLabel.ACCOUNT_SETTINGS_ERROR,\n            traffic: 0,\n            logLevel: LogLevel.ERROR,\n            config: this._config,\n            httpRequestMethod: 'POST',\n            httpRequestUrl: url,\n            httpResponseBody: error?.message,\n            httpResponseHeaders: error?.headers,\n            httpResponseCode: error?.status,\n            httpResponseTime: Date.now() - now\n        });\n        this._trackingManager.initTroubleshootingHit = troubleshootingHit;\n    }\n    async initSdk() {\n        const now = Date.now();\n        const url = sprintf(CDN_ACCOUNT_SETTINGS_URL, this._config.envId);\n        try {\n            const response = await this._httpClient.getAsync(url);\n            this._EAIConfig = response.body.accountSettings;\n            this.sendTroubleshooting(response.body.accountSettings, url, response, now);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        }\n        catch (error) {\n            logErrorSprintf(this._config, 'Error while fetching EAI config: {0}', error?.message || error);\n            this.sendErrorTroubleshooting(url, error, now);\n        }\n    }\n    getEAIConfig() {\n        return this._EAIConfig;\n    }\n}\n","export class EmotionAI {\n    constructor(_params) {\n        //\n    }\n    init() {\n        //\n    }\n    async reportPageView() {\n        //\n    }\n    onEAICollectStatusChange() {\n        //\n    }\n    async startCollectingEAIData() {\n        //\n    }\n    async reportVisitorEvent() {\n        //\n    }\n    cleanup() {\n        //\n    }\n    removeListeners() {\n        //\n    }\n    async fetchEAIScore() {\n        return undefined;\n    }\n    async collectEAIEventsAsync() {\n        //\n    }\n}\n","export class VisitorProfileCache {\n    _sdkConfig;\n    constructor(sdkConfig) {\n        this._sdkConfig = sdkConfig;\n    }\n    saveVisitorProfile() {\n        //\n    }\n    loadVisitorProfile() {\n        //\n        return null;\n    }\n}\n","import { Visitor } from '../visitor/Visitor';\nimport { FSSdkStatus } from '../enum/FSSdkStatus';\nimport { DecisionMode, BucketingConfig, DecisionApiConfig } from '../config/index';\nimport { ConfigManager } from '../config/ConfigManager';\nimport { ApiManager } from '../decision/ApiManager';\nimport { TrackingManager } from '../api/TrackingManager';\nimport { FlagshipLogManager } from '../utils/FlagshipLogManager';\nimport { isBrowser, logDebugSprintf, logError, logInfo, logInfoSprintf, logWarning, onDomReady, sprintf, uuidV4 } from '../utils/utils';\nimport { INITIALIZATION_PARAM_ERROR, INITIALIZATION_STARTING, NEW_VISITOR_NOT_READY, PROCESS_INITIALIZATION, PROCESS_NEW_VISITOR, SDK_INFO, SDK_STARTED_INFO, PROCESS_SDK_STATUS, SDK_STATUS_CHANGED, SAVE_VISITOR_INSTANCE, CONSENT_NOT_SPECIFY_WARNING } from '../enum/index';\nimport { VisitorDelegate } from '../visitor/VisitorDelegate';\nimport { BucketingManager } from '../decision/BucketingManager';\nimport { MurmurHash } from '../utils/MurmurHash';\nimport { HttpClient } from '../utils/HttpClient';\nimport { ABTastyWebSDKPostMessageType } from '../types';\nimport { EdgeManager } from '../decision/EdgeManager';\nimport { EdgeConfig } from '../config/EdgeConfig';\nimport { VisitorAbstract } from '../visitor/VisitorAbstract';\nimport { BucketingSdkManager } from './BucketingSdkManager';\nimport { EdgeSdkManager } from './EdgeSdkManager';\nimport { ApiSdkManager } from './ApiSdkManager';\nimport { EmotionAI } from '../emotionAI/EmotionAI.node';\nimport { VisitorProfileCache } from '../visitor/VisitorProfileCache.node';\nimport { DefaultVisitorCache } from '../cache/DefaultVisitorCache';\nimport { DefaultHitCache } from '../cache/DefaultHitCache';\nimport { SharedActionTracking } from '../sharedFeature/SharedActionTracking';\nimport { SdkApi } from '../sdkApi/v1/SdkApi';\n/**\n * The `Flagship` class represents the SDK. It facilitates the initialization process and creation of new visitors.\n */\nexport class Flagship {\n    static _instance;\n    _configManager;\n    _config;\n    _status;\n    _visitorInstance;\n    instanceId;\n    lastInitializationTimestamp;\n    _sdkManager;\n    static visitorProfile;\n    static onSaveVisitorProfile;\n    _sdkApi;\n    _visitorVariationState;\n    set configManager(value) {\n        this._configManager = value;\n    }\n    get configManager() {\n        return this._configManager;\n    }\n    constructor() {\n        this.instanceId = uuidV4();\n        this._status = FSSdkStatus.SDK_NOT_INITIALIZED;\n        const extendedFlagship = Flagship;\n        extendedFlagship.setVisitorProfile = function (value) {\n            Flagship.visitorProfile = value;\n        };\n        extendedFlagship.getVisitorProfile = function () {\n            return Flagship.visitorProfile;\n        };\n        extendedFlagship.setOnSaveVisitorProfile = function (value) {\n            Flagship.onSaveVisitorProfile = value;\n        };\n        extendedFlagship.getOnSaveVisitorProfile = function () {\n            return Flagship.onSaveVisitorProfile;\n        };\n        this._visitorVariationState = {};\n    }\n    static getInstance() {\n        if (__fsWebpackIsNode__ || __fsWebpackIsDeno__) {\n            const globalScope = globalThis;\n            globalScope.__flagship_instance__ = globalScope.__flagship_instance__ || new this();\n            return globalScope.__flagship_instance__;\n        }\n        else {\n            if (!this._instance) {\n                this._instance = new this();\n            }\n            return this._instance;\n        }\n    }\n    setStatus(status) {\n        if (this._status === status) {\n            return;\n        }\n        this._status = status;\n        VisitorAbstract.SdkStatus = status;\n        const statusChanged = this.getConfig()?.onSdkStatusChanged;\n        logInfoSprintf(this._config, PROCESS_SDK_STATUS, SDK_STATUS_CHANGED, FSSdkStatus[status]);\n        if (this.getConfig().decisionMode !== DecisionMode.BUCKETING_EDGE) {\n            if (status === FSSdkStatus.SDK_INITIALIZED) {\n                this.configManager?.trackingManager?.startBatchingLoop();\n            }\n            if (status === FSSdkStatus.SDK_NOT_INITIALIZED) {\n                this.configManager?.trackingManager?.stopBatchingLoop();\n            }\n        }\n        if (statusChanged) {\n            statusChanged(status);\n        }\n    }\n    /**\n     * Return current status of Flagship SDK.\n     */\n    static getStatus() {\n        return this.getInstance()._status;\n    }\n    /**\n     * Return current status of Flagship SDK.\n     */\n    getStatus() {\n        return this._status;\n    }\n    /**\n     * Return the current config set by the customer and used by the SDK.\n     */\n    static getConfig() {\n        return this.getInstance()._config;\n    }\n    /**\n     * Return the current config set by the customer and used by the SDK.\n     */\n    getConfig() {\n        return this._config;\n    }\n    /**\n     * Return the last visitor created if isNewInstance key is false. Return undefined otherwise.\n     */\n    getVisitor() {\n        return this._visitorInstance;\n    }\n    /**\n     * Return the last visitor created if isNewInstance key is false. Return undefined otherwise.\n     */\n    static getVisitor() {\n        return this.getInstance().getVisitor();\n    }\n    buildConfig(config) {\n        let newConfig;\n        switch (config?.decisionMode) {\n            case DecisionMode.BUCKETING:\n                newConfig = new BucketingConfig(config);\n                break;\n            case DecisionMode.BUCKETING_EDGE:\n                newConfig = new EdgeConfig(config);\n                break;\n            default:\n                newConfig = new DecisionApiConfig(config);\n                break;\n        }\n        return newConfig;\n    }\n    createManagers(httpClient, sdkConfig, trackingManager) {\n        let sdkManager;\n        switch (sdkConfig.decisionMode) {\n            case DecisionMode.BUCKETING:\n                sdkManager = new BucketingSdkManager({\n                    httpClient,\n                    sdkConfig,\n                    trackingManager,\n                    flagshipInstanceId: this.instanceId\n                });\n                return {\n                    sdkManager,\n                    decisionManager: new BucketingManager({\n                        httpClient,\n                        config: sdkConfig,\n                        murmurHash: new MurmurHash(),\n                        sdkManager,\n                        trackingManager,\n                        flagshipInstanceId: this.instanceId\n                    })\n                };\n            case DecisionMode.BUCKETING_EDGE:\n                sdkManager = new EdgeSdkManager({\n                    httpClient,\n                    sdkConfig,\n                    trackingManager,\n                    flagshipInstanceId: this.instanceId\n                });\n                return {\n                    sdkManager,\n                    decisionManager: new EdgeManager({\n                        httpClient,\n                        config: sdkConfig,\n                        murmurHash: new MurmurHash(),\n                        sdkManager,\n                        trackingManager,\n                        flagshipInstanceId: this.instanceId\n                    })\n                };\n            default:\n                sdkManager = new ApiSdkManager({\n                    httpClient,\n                    sdkConfig,\n                    trackingManager,\n                    flagshipInstanceId: this.instanceId\n                });\n                return {\n                    sdkManager,\n                    decisionManager: new ApiManager({\n                        trackingManager,\n                        httpClient,\n                        config: sdkConfig,\n                        flagshipInstanceId: this.instanceId\n                    })\n                };\n        }\n    }\n    buildSdkApi(sharedActionTracking, sdkConfig) {\n        if (__fsWebpackIsBrowser__) {\n            this._sdkApi = new SdkApi({ sharedActionTracking });\n            window.ABTastyWebSdk = {\n                envId: sdkConfig.envId,\n                internal: this._sdkApi.getApiV1()\n            };\n        }\n    }\n    sendInitializedPostMessage() {\n        if (__fsWebpackIsBrowser__) {\n            onDomReady(() => {\n                window.postMessage({ action: ABTastyWebSDKPostMessageType.AB_TASTY_WEB_SDK_INITIALIZED }, '*');\n            });\n        }\n    }\n    async initializeSdk(sdkConfig) {\n        this.setStatus(FSSdkStatus.SDK_INITIALIZING);\n        this._sdkManager?.resetSdk();\n        let sharedActionTracking = this.configManager?.sharedActionTracking;\n        if (__fsWebpackIsBrowser__) {\n            if (!sharedActionTracking && isBrowser()) {\n                sharedActionTracking = new SharedActionTracking({ sdkConfig });\n                this.buildSdkApi(sharedActionTracking, sdkConfig);\n            }\n        }\n        const httpClient = new HttpClient();\n        const trackingManager = this.configManager?.trackingManager || new TrackingManager(httpClient, sdkConfig, this.instanceId, sharedActionTracking);\n        const { sdkManager, decisionManager } = this.createManagers(httpClient, sdkConfig, trackingManager);\n        this._sdkManager = sdkManager;\n        decisionManager.statusChangedCallback(this.setStatus.bind(this));\n        decisionManager.flagshipInstanceId = this.instanceId;\n        this.configManager = new ConfigManager(sdkConfig, decisionManager, trackingManager, sharedActionTracking);\n        await this._sdkManager?.initSdk();\n        this.setStatus(FSSdkStatus.SDK_INITIALIZED);\n    }\n    /**\n     * Start the flagship SDK, with a custom configuration implementation\n     * @param {string} envId : Environment id provided by Flagship.\n     * @param {string} apiKey : Secure api key provided by Flagship.\n     * @param {IFlagshipConfig} config : (optional) SDK configuration.\n     */\n    static async start(envId, apiKey, config) {\n        const flagship = this.getInstance();\n        const localConfig = flagship.buildConfig(config);\n        localConfig.envId = envId;\n        localConfig.apiKey = apiKey;\n        flagship._config = localConfig;\n        // check custom logger\n        if (!localConfig.onLog && !localConfig.logManager) {\n            localConfig.logManager = new FlagshipLogManager();\n        }\n        if (!envId || !apiKey) {\n            flagship.setStatus(FSSdkStatus.SDK_NOT_INITIALIZED);\n            logError(localConfig, INITIALIZATION_PARAM_ERROR, PROCESS_INITIALIZATION);\n            return flagship;\n        }\n        logDebugSprintf(localConfig, PROCESS_INITIALIZATION, INITIALIZATION_STARTING, SDK_INFO.version, localConfig.decisionMode, localConfig);\n        if (__fsWebpackIsBrowser__) {\n            if (!localConfig.hitCacheImplementation && isBrowser()) {\n                localConfig.hitCacheImplementation = new DefaultHitCache();\n            }\n            if (!localConfig.visitorCacheImplementation && isBrowser()) {\n                localConfig.visitorCacheImplementation = new DefaultVisitorCache();\n            }\n        }\n        await flagship.initializeSdk(localConfig);\n        logInfo(localConfig, sprintf(SDK_STARTED_INFO, SDK_INFO.version, FSSdkStatus[flagship._status], localConfig.decisionMode), PROCESS_INITIALIZATION);\n        if (__fsWebpackIsBrowser__) {\n            import('../qaAssistant/index.ts').then((qaAssistant) => {\n                qaAssistant.launchQaAssistant(localConfig, flagship._visitorVariationState);\n            });\n        }\n        flagship.lastInitializationTimestamp = new Date().toISOString();\n        flagship.sendInitializedPostMessage();\n        return flagship;\n    }\n    /**\n     * When called, it will batch and send all hits that are in the pool before the application is closed\n     */\n    async close() {\n        await Flagship.close();\n    }\n    /**\n     * When called, it will batch and send all hits that are in the pool before the application is closed\n     */\n    static async close() {\n        await this._instance?.configManager?.trackingManager?.sendBatch();\n    }\n    /**\n     * Creates a new Visitor instance.\n     *\n     * @param params - The parameters for creating the new Visitor.\n     * @returns A new Visitor instance.\n     */\n    newVisitor(params) {\n        return Flagship.newVisitor(params);\n    }\n    initializeConfigManager() {\n        const config = new DecisionApiConfig();\n        config.logManager = new FlagshipLogManager();\n        const httpClient = new HttpClient();\n        const trackingManager = new TrackingManager(httpClient, config);\n        const decisionManager = new ApiManager({\n            httpClient,\n            config,\n            trackingManager\n        });\n        this._config = config;\n        this.configManager = new ConfigManager(config, decisionManager, trackingManager);\n    }\n    /**\n     * Creates a new Visitor instance.\n     *\n     * @param params - The parameters for creating the new Visitor.\n     * @returns A new Visitor instance.\n     */\n    static newVisitor({ visitorId, context, isAuthenticated, hasConsented, initialCampaigns, initialFlagsData, shouldSaveInstance, onFlagsStatusChanged }) {\n        const saveInstance = shouldSaveInstance ?? isBrowser();\n        const flagship = this.getInstance();\n        if (!flagship.configManager) {\n            flagship.initializeConfigManager();\n            logError(flagship.getConfig(), NEW_VISITOR_NOT_READY, PROCESS_NEW_VISITOR);\n        }\n        const sdkConfig = flagship.getConfig();\n        const configManager = flagship.configManager;\n        if (hasConsented === undefined) {\n            logWarning(sdkConfig, CONSENT_NOT_SPECIFY_WARNING, PROCESS_NEW_VISITOR);\n        }\n        const emotionAi = new EmotionAI({\n            sdkConfig,\n            httpClient: new HttpClient(),\n            eAIConfig: flagship._sdkManager?.getEAIConfig()\n        });\n        const visitorProfileCache = new VisitorProfileCache(sdkConfig);\n        VisitorAbstract.SdkStatus = flagship.getStatus();\n        const visitorDelegate = new VisitorDelegate({\n            visitorId,\n            context: context || {},\n            isAuthenticated: isAuthenticated ?? false,\n            hasConsented: hasConsented ?? false,\n            configManager,\n            initialCampaigns,\n            initialFlagsData,\n            onFlagsStatusChanged,\n            emotionAi,\n            visitorProfileCache,\n            monitoringData: {\n                instanceId: this.getInstance().instanceId,\n                lastInitializationTimestamp: this.getInstance().lastInitializationTimestamp,\n                initialCampaigns,\n                initialFlagsData\n            },\n            murmurHash: new MurmurHash(),\n            visitorVariationState: flagship._visitorVariationState\n        });\n        if (__fsWebpackIsBrowser__) {\n            onDomReady(() => {\n                if (isBrowser()) {\n                    flagship._sdkApi?.setVisitor(visitorDelegate);\n                    if (configManager.sharedActionTracking) {\n                        configManager.sharedActionTracking.initialize(visitorDelegate);\n                    }\n                }\n            });\n        }\n        const visitor = new Visitor(visitorDelegate);\n        this.getInstance()._visitorInstance = saveInstance ? visitor : undefined;\n        if (saveInstance) {\n            logDebugSprintf(sdkConfig, PROCESS_NEW_VISITOR, SAVE_VISITOR_INSTANCE, visitor.visitorId);\n        }\n        if (sdkConfig.fetchNow && sdkConfig.decisionMode !== DecisionMode.BUCKETING_EDGE) {\n            visitor.fetchFlags();\n        }\n        return visitor;\n    }\n}\n","export * from './FsFlags';\nexport * from './FSFlagMetadata';\nexport * from './IFSFlag';\nexport * from './IFSFlagCollection';\nexport * from './FSFlagCollection';\n","import { Flagship } from './main/Flagship';\nexport { Flagship } from './main/Flagship';\nexport { DecisionApiConfig, DecisionMode } from './config/index';\nexport { EventCategory } from './hit/index';\nexport { FSSdkStatus, LogLevel, HitType, CacheStrategy, FSFetchReasons, FSFetchStatus, FSFlagStatus } from './enum/index';\nexport * from './enum/FlagshipContext';\nexport * from './types';\nexport { Visitor } from './visitor/index';\nexport * from './flag/index';\nexport default Flagship;\n"],"names":[],"sourceRoot":""}