@walkeros/web-destination-optimizely 4.6.0 → 4.7.0-next-1790187973605

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var Destination=(()=>{var e=Object.create,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,n=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,o=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)(function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),a=(e,t)=>function(){return t||(0,e[i(e)[0]])((t={exports:{}}).exports,t),t.exports},l=(e,r)=>{for(var i in r)t(e,i,{get:r[i],enumerable:!0})},u=(e,n,o,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let l of i(n))s.call(e,l)||l===o||t(e,l,{get:()=>n[l],enumerable:!(a=r(n,l))||a.enumerable});return e},c=(r,i,s)=>(s=null!=r?e(n(r)):{},u(!i&&r&&r.__esModule?s:t(s,"default",{value:r,enumerable:!0}),r)),d=a({"../../../../node_modules/json-schema/lib/validate.js"(e,t){var r,i;r=e,i=function(){var e=r;e.Integer={type:"integer"};var t={String:String,Boolean:Boolean,Number:Number,Object:Object,Array:Array,Date:Date};function r(e,t){return r(e,t,{changing:!1})}e.validate=r,e.checkPropertyChange=function(e,t,i){return r(e,t,{changing:i||"property"})};var r=e._validate=function(e,r,i){i||(i={});var n=i.changing;function s(e){return e.type||t[e.name]==e&&e.name.toLowerCase()}var o=[];function a(e,t,r,l){var u;function c(e){o.push({property:r,message:e})}if(r+=r?"number"==typeof l?"["+l+"]":void 0===l?"":"."+l:l,("object"!=typeof t||t instanceof Array)&&(r||"function"!=typeof t)&&(!t||!s(t)))return"function"==typeof t?e instanceof t||c("is not an instance of the class/constructor "+t.name):t&&c("Invalid schema/property definition "+t),null;function d(e,t){if(e){if(!("string"!=typeof e||"any"==e||("null"==e?null===t:typeof t==e)||t instanceof Array&&"array"==e||t instanceof Date&&"date"==e||"integer"==e&&t%1==0))return[{property:r,message:t+" - "+typeof t+" value found, but a "+e+" is required"}];if(e instanceof Array){for(var i=[],n=0;n<e.length&&(i=d(e[n],t)).length;n++);if(i.length)return i}else if("object"==typeof e){var s=o;o=[],a(t,e,r);var l=o;return o=s,l}}return[]}if(n&&t.readonly&&c("is a readonly field, it can not be changed"),t.extends&&a(e,t.extends,r,l),void 0===e)t.required&&c("is missing and it is required");else if(o=o.concat(d(s(t),e)),t.disallow&&!d(t.disallow,e).length&&c(" disallowed value was matched"),null!==e){if(e instanceof Array){if(t.items){var h=t.items instanceof Array,g=t.items;for(l=0,u=e.length;l<u;l+=1)h&&(g=t.items[l]),i.coerce&&(e[l]=i.coerce(e[l],g)),o.concat(a(e[l],g,r,l))}t.minItems&&e.length<t.minItems&&c("There must be a minimum of "+t.minItems+" in the array"),t.maxItems&&e.length>t.maxItems&&c("There must be a maximum of "+t.maxItems+" in the array")}else(t.properties||t.additionalProperties)&&o.concat(function(e,t,r,s){if("object"==typeof t)for(var l in("object"!=typeof e||e instanceof Array)&&o.push({property:r,message:"an object is required"}),t)if(t.hasOwnProperty(l)&&"__proto__"!=l&&"constructor"!=l){var u=e.hasOwnProperty(l)?e[l]:void 0;if(void 0===u&&i.existingOnly)continue;var c=t[l];void 0===u&&c.default&&(u=e[l]=c.default),i.coerce&&l in e&&(u=e[l]=i.coerce(u,c)),a(u,c,r,l)}for(l in e){if(e.hasOwnProperty(l)&&("_"!=l.charAt(0)||"_"!=l.charAt(1))&&t&&!t[l]&&!1===s){if(i.filter){delete e[l];continue}o.push({property:r,message:"The property "+l+" is not defined in the schema and the schema does not allow additional properties"})}var d=t&&t[l]&&t[l].requires;d&&!(d in e)&&o.push({property:r,message:"the presence of the property "+l+" requires that "+d+" also be present"}),u=e[l],!s||t&&"object"==typeof t&&l in t||(i.coerce&&(u=e[l]=i.coerce(u,s)),a(u,s,r,l)),!n&&u&&u.$schema&&(o=o.concat(a(u,u.$schema,r,l)))}return o}(e,t.properties,r,t.additionalProperties));if(t.pattern&&"string"==typeof e&&!e.match(t.pattern)&&c("does not match the regex pattern "+t.pattern),t.maxLength&&"string"==typeof e&&e.length>t.maxLength&&c("may only be "+t.maxLength+" characters long"),t.minLength&&"string"==typeof e&&e.length<t.minLength&&c("must be at least "+t.minLength+" characters long"),void 0!==t.minimum&&typeof e==typeof t.minimum&&t.minimum>e&&c("must have a minimum value of "+t.minimum),void 0!==t.maximum&&typeof e==typeof t.maximum&&t.maximum<e&&c("must have a maximum value of "+t.maximum),t.enum){var p,f=t.enum;u=f.length;for(var v=0;v<u;v++)if(f[v]===e){p=1;break}p||c("does not have a value in the enumeration "+f.join(", "))}"number"==typeof t.maxDecimal&&e.toString().match(new RegExp("\\.[0-9]{"+(t.maxDecimal+1)+",}"))&&c("may only have "+t.maxDecimal+" digits of decimal places")}return null}return r&&a(e,r,"",n||""),!n&&e&&e.$schema&&a(e,e.$schema,"",""),{valid:!o.length,errors:o}};return e.mustBeValid=function(e){if(!e.valid)throw new TypeError(e.errors.map(function(e){return"for property "+e.property+": "+e.message}).join(", \n"))},e},"function"==typeof define&&define.amd?define([],function(){return i()}):"object"==typeof t&&t.exports?t.exports=i():r.jsonSchema=i()}}),h=a({"../../../../node_modules/murmurhash/murmurhash.js"(e,t){!function(){const e=this,r=e=>(new TextEncoder).encode(e);function i(e,t){let i,n,s,o,a,l,u,c;for("string"==typeof e&&(e=r(e)),i=3&e.length,n=e.length-i,s=t,a=3432918353,l=461845907,c=0;c<n;)u=255&e[c]|(255&e[++c])<<8|(255&e[++c])<<16|(255&e[++c])<<24,++c,u=(65535&u)*a+(((u>>>16)*a&65535)<<16)&4294967295,u=u<<15|u>>>17,u=(65535&u)*l+(((u>>>16)*l&65535)<<16)&4294967295,s^=u,s=s<<13|s>>>19,o=5*(65535&s)+((5*(s>>>16)&65535)<<16)&4294967295,s=27492+(65535&o)+(((o>>>16)+58964&65535)<<16);switch(u=0,i){case 3:u^=(255&e[c+2])<<16;case 2:u^=(255&e[c+1])<<8;case 1:u^=255&e[c],u=(65535&u)*a+(((u>>>16)*a&65535)<<16)&4294967295,u=u<<15|u>>>17,u=(65535&u)*l+(((u>>>16)*l&65535)<<16)&4294967295,s^=u}return s^=e.length,s^=s>>>16,s=2246822507*(65535&s)+((2246822507*(s>>>16)&65535)<<16)&4294967295,s^=s>>>13,s=3266489909*(65535&s)+((3266489909*(s>>>16)&65535)<<16)&4294967295,s^=s>>>16,s>>>0}const n=i;if(n.v2=function(e,t){"string"==typeof e&&(e=r(e));let i,n=e.length,s=t^n,o=0;for(;n>=4;)i=255&e[o]|(255&e[++o])<<8|(255&e[++o])<<16|(255&e[++o])<<24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),i^=i>>>24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),s=1540483477*(65535&s)+((1540483477*(s>>>16)&65535)<<16)^i,n-=4,++o;switch(n){case 3:s^=(255&e[o+2])<<16;case 2:s^=(255&e[o+1])<<8;case 1:s^=255&e[o],s=1540483477*(65535&s)+((1540483477*(s>>>16)&65535)<<16)}return s^=s>>>13,s=1540483477*(65535&s)+((1540483477*(s>>>16)&65535)<<16),s^=s>>>15,s>>>0},n.v3=i,void 0!==t)t.exports=n;else{const t=e.murmur;n.noConflict=function(){return e.murmur=t,n},e.murmur=n}}()}}),g=a({"../../../../node_modules/mimic-response/index.js"(e,t){var r=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];t.exports=(e,t)=>{if(t._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");const i=new Set(Object.keys(e).concat(r)),n={};for(const r of i)r in t||(n[r]={get(){const t=e[r];return"function"==typeof t?t.bind(e):t},set(t){e[r]=t},enumerable:!0,configurable:!1});return Object.defineProperties(t,n),e.once("aborted",()=>{t.destroy(),t.emit("aborted")}),e.once("close",()=>{e.complete&&t.readable?t.once("end",()=>{t.emit("close")}):t.emit("close")}),t}}}),p=a({"../../../../node_modules/decompress-response/index.js"(e,t){var{Transform:r,PassThrough:i}=o("stream"),n=o("zlib"),s=g();t.exports=e=>{const t=(e.headers["content-encoding"]||"").toLowerCase();if(delete e.headers["content-encoding"],!["gzip","deflate","br"].includes(t))return e;const o="br"===t;if(o&&"function"!=typeof n.createBrotliDecompress)return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let a=!0;const l=new r({transform(e,t,r){a=!1,r(null,e)},flush(e){e()}}),u=new i({autoDestroy:!1,destroy(t,r){e.destroy(),r(t)}}),c=o?n.createBrotliDecompress():n.createUnzip();return c.once("error",t=>{!a||e.readable?u.destroy(t):u.end()}),s(e,u),e.pipe(l).pipe(c).pipe(u),u}}}),f={};l(f,{DestinationOptimizely:()=>dn,default:()=>pn,destinationOptimizely:()=>gn});var v=Object.defineProperty,m=(e,t)=>{for(var r in t)v(e,r,{get:t[r],enumerable:!0})};function y(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}m({},{stepId:()=>y});function b(e,t){const r=e.destinations[t];if(!r)throw new Error(`Destination not found: ${t}`);return r}m({},{getDestination:()=>b});m({},{Level:()=>I});var E,I=((E=I||{})[E.ERROR=0]="ERROR",E[E.WARN=1]="WARN",E[E.INFO=2]="INFO",E[E.DEBUG=3]="DEBUG",E);function S(e,t){const r=e.transformers[t];if(!r)throw new Error(`Transformer not found: ${t}`);return r}m({},{getTransformer:()=>S});function x(e,t){const r=e.sources[t];if(!r)throw new Error(`Source not found: ${t}`);return r}m({},{getSource:()=>x});function w(e,t){const r=e.stores[t];if(!r)throw new Error(`Store not found: ${t}`);return r}async function O(e,t){return await e.get(t)}function k(e){return Array.isArray(e)}function M(e){return void 0!==e}function R(e){return"number"==typeof e&&!Number.isNaN(e)}function C(e){return"object"==typeof e&&null!==e&&!k(e)&&"[object Object]"===Object.prototype.toString.call(e)}function P(e){return"string"==typeof e}function A(e,t="",r){const i=t.split(".");let n=e;for(let e=0;e<i.length;e++){const t=i[e];if("*"===t&&k(n)){const t=i.slice(e+1).join("."),s=[];for(const e of n){const i=A(e,t,r);s.push(i)}return s}if(n=C(n)||k(n)?n[t]:void 0,void 0===n)break}return M(n)?n:r}function j(e){return function(e){return"boolean"==typeof e}(e)||P(e)||R(e)||!M(e)||k(e)&&e.every(j)||C(e)&&Object.values(e).every(j)}function D(e){return j(e)?e:void 0}function T(e,t,r){return async function(...i){try{return await e(...i)}catch(e){if(!t)return;return await t(e)}finally{await(null==r?void 0:r())}}}m({},{getStore:()=>w,getStoreValue:()=>O});var F=class e extends Error{constructor(t,r){super(t,r),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function _(e,t={},r={}){var i,n;if(!M(e))return;const s=C(e)&&e.consent||r.consent||(null==(i=r.collector)?void 0:i.consent),o=null!=(n=r.event)?n:C(e)?e:{};if(!r.collector)throw new Error("getMappingValue: context.collector is required");const a={event:o,mapping:t,collector:r.collector,logger:r.collector.logger,consent:s},l=k(t)?t:[t];for(const t of l){const i=await T(N,e=>{if(e instanceof F)throw e;r.collector&&r.collector.status.failed++,a.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...a,mapping:t});if(M(i))return i}}async function N(e,t,r){return(k(t)?t:[t]).reduce(async(t,i)=>{const n=await t;if(n)return n;const s=P(i)?{key:i}:i;if(!Object.keys(s).length)return;const{condition:o,consent:a,fn:l,key:u,loop:c,map:d,set:h,validate:g,value:p}=s,f={...r,mapping:i};if(o&&!await T(o,e=>{if(e instanceof F)throw e;return f.logger.error("mapping condition failed",{event:f.event,error:e}),!1})(e,f))return;if(a&&!function(e,t={},r={}){const i={...t,...r},n={};let s=!e||0===Object.keys(e).length;return Object.keys(i).forEach(t=>{i[t]&&(n[t]=!0,e&&e[t]&&(s=!0))}),!!s&&n}(a,f.consent))return p;let v=M(p)?p:e;if(l&&(v=await T(l,e=>{if(e instanceof F)throw e;f.logger.error("mapping fn failed",{event:f.event,error:e})})(e,f)),u&&(v=A(e,u,p)),c){const[t,r]=c,i="this"===t?[e]:await _(e,t,f);k(i)&&(v=(await Promise.all(i.map(e=>_(e,r,f)))).filter(M))}else d?v=await Object.entries(d).reduce(async(t,[r,i])=>{const n=await t,s=await _(e,i,f);return M(s)&&(n[r]=s),n},Promise.resolve({})):h&&(v=await Promise.all(h.map(t=>N(e,t,f))));g&&!await T(g,e=>{if(e instanceof F)throw e;return f.logger.error("mapping validate failed",{event:f.event,error:e}),!1})(v,f)&&(v=void 0);const m=D(v);return M(m)?m:D(p)},Promise.resolve(void 0))}var U={};l(U,{DEBUG:()=>ze,DECISION_NOTIFICATION_TYPES:()=>Yt,DECISION_SOURCES:()=>ne,ERROR:()=>Je,INFO:()=>He,LogLevel:()=>H,NOTIFICATION_TYPES:()=>Xt,OptimizelyDecideOption:()=>Qt,WARN:()=>$e,__platforms:()=>cn,clientEngine:()=>un,createBatchEventProcessor:()=>nn,createErrorNotifier:()=>Xe,createForwardingEventProcessor:()=>rn,createInstance:()=>an,createLogger:()=>We,createOdpManager:()=>sn,createPollingProjectConfigManager:()=>tn,createStaticProjectConfigManager:()=>jt,createVuidManager:()=>on,eventDispatcher:()=>en,getSendBeaconEventDispatcher:()=>ln});var V=[];for(let e=0;e<256;++e)V.push((e+256).toString(16).slice(1));var K=c(o("crypto")),L=new Uint8Array(256),q=L.length;function B(){return q>L.length-16&&(K.default.randomFillSync(L),q=0),L.slice(q,q+=16)}var z={randomUUID:c(o("crypto")).default.randomUUID};var H,$=function(e,t,r){if(z.randomUUID&&!t&&!e)return z.randomUUID();const i=(e=e||{}).random||(e.rng||B)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return(V[e[t+0]]+V[e[t+1]]+V[e[t+2]]+V[e[t+3]]+"-"+V[e[t+4]]+V[e[t+5]]+"-"+V[e[t+6]]+V[e[t+7]]+"-"+V[e[t+8]]+V[e[t+9]]+"-"+V[e[t+10]]+V[e[t+11]]+V[e[t+12]]+V[e[t+13]]+V[e[t+14]]+V[e[t+15]]).toLowerCase()}(i)},J=c(d(),1),G=c(h(),1),W=c(o("http"),1),Q=c(o("https"),1),Y=c(o("url"),1),X=c(p(),1),Z="$opt_bot_filtering",ee="$opt_bucketing_id",te="javascript-sdk",re="node-sdk",ie="6.4.0",ne={FEATURE_TEST:"feature-test",ROLLOUT:"rollout",EXPERIMENT:"experiment",HOLDOUT:"holdout"},se="experiment",oe="boolean",ae="double",le="integer",ue="string",ce="json",de="Optimizely SDK not configured properly yet.",he=Math.pow(2,53);function ge(e){return"number"==typeof e&&Math.abs(e)<=he}function pe(e,t){if(!e)return{};const r={};return fe(e,t,r),r}function fe(e,t,r){e&&e.forEach(e=>{r[e[t]]=e})}function ve(e){return Object.keys(e).map(t=>e[t])}function me(e){return Object.keys(e).map(t=>[t,e[t]])}function ye(e,t){let r;for(const i of e)if(t(i)){r=i;break}return r}function be(e,...t){let r=0;return e.replace(/%s/g,function(){const e=t[r++],i=typeof e;return"function"===i?e():"string"===i?e:String(e)})}function Ee(e,t){return e.length===t.length&&e.every((e,r)=>e===t[r])}var Ie={checkArrayEquality:Ee,currentTimestamp:function(){return Math.round((new Date).getTime())},isSafeInteger:ge,keyBy:pe,uuid:function(){return $()},isNumber:function(e){return"number"==typeof e},getTimestamp:function(){return(new Date).getTime()},groupBy:function(e,t){const r={};return e.forEach(e=>{const i=t(e);r[i]=r[i]||[],r[i].push(e)}),ve(r)},objectValues:ve,objectEntries:me,find:ye,sprintf:be},Se=class e extends Error{constructor(t,...r){super(),this.resolved=!1,this.name="OptimizelyError",this.baseMessage=t,this.params=r,Object.setPrototypeOf(this,e.prototype)}setMessage(e){this.resolved||(this.message=be(e.resolve(this.baseMessage),...this.params),this.resolved=!0)}};!function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(H||(H={}));var xe={[H.Debug]:"DEBUG",[H.Info]:"INFO",[H.Warn]:"WARN",[H.Error]:"ERROR"},we={[H.Debug]:"debug",[H.Info]:"info",[H.Warn]:"warn",[H.Error]:"error"},Oe=class{constructor(e){this.prefix=e||"[OPTIMIZELY]"}log(e,t){const r=`${this.prefix} - ${xe[e]} ${this.getTime()} ${t}`;this.consoleLog(e,r)}getTime(){return(new Date).toISOString()}consoleLog(e,t){(console[we[e]]||console.log).call(console,t)}},ke=class e{constructor(e){this.prefix="",this.logHandler=e.logHandler,this.infoResolver=e.infoMsgResolver,this.errorResolver=e.errorMsgResolver,this.level=e.level,e.name&&this.setName(e.name)}child(t){return new e({logHandler:this.logHandler,infoMsgResolver:this.infoResolver,errorMsgResolver:this.errorResolver,level:this.level,name:t})}setName(e){this.name=e,this.prefix=`${e}: `}info(e,...t){this.log(H.Info,e,t)}debug(e,...t){this.log(H.Debug,e,t)}warn(e,...t){this.log(H.Warn,e,t)}error(e,...t){this.log(H.Error,e,t)}handleLog(e,t,r){const i=r.length>0?`${this.prefix}${be(t,...r)}`:`${this.prefix}${t}`;this.logHandler.log(e,i)}log(e,t,r){if(e<this.level)return;if(t instanceof Error)return t instanceof Se&&t.setMessage(this.errorResolver),void this.handleLog(e,t.message,[]);let i=this.errorResolver;if(e<H.Warn){if(!this.infoResolver)return;i=this.infoResolver}const n=i.resolve(t);this.handleLog(e,n,r)}},Me="30",Re=["Adding Authorization header with Bearer Token",'Audience "%s" evaluated to %s.',"CMAB cache attributes mismatch for user %s and rule %s, fetching new decision.","Cache hit for user %s and rule %s.","Cache miss for user %s and rule %s.",'Starting to evaluate audience "%s" with conditions: %s.','Failed to parse revenue value "%s" from event tags.','Failed to parse event value "%s" from event tags.',"Feature %s is enabled for user %s.","Feature %s is not enabled for user %s.",'Feature "%s" is not enabled for user %s. Returning the default variable value "%s".',"Ignoring CMAB cache for user %s and rule %s.","Invalidating CMAB cache for user %s and rule %s.","Invalid client engine passed: %s. Defaulting to node-sdk.","Provided decide options is not an array. Using default decide options.","Provided default decide options is not an array.","Experiment key %s is not in datafile. It is either invalid, paused, or archived.","Making datafile request to url %s with headers: %s",'Audience condition %s evaluated to UNKNOWN because no value was passed for user attribute "%s".',"Not activating user %s for experiment %s.",'Parsed event value "%s" from event tags.','Parsed revenue value "%s" from event tags.',"Resetting CMAB cache for user %s and rule %s.","Response status code: %s","Saved last modified header value from response: %s",'Saved user profile for user "%s".',"User %s was previously bucketed into variation with ID %s for experiment %s, but no matching variation was found.",'Experiment %s is not in "Running" state. Not activating user.',"Skipping JSON schema validation.","Tracking event %s for user %s.",'Audience condition %s evaluated to UNKNOWN because a null value was passed for user attribute "%s".',"Updated Optimizely config to revision %s (project id %s)","User %s is not in the forced variation map.","No experiment %s mapped to user %s in the forced variation map.","Set variation %s for experiment %s and user %s in the forced variation map.",'User "%s" is not in any variation or rollout rule. Returning default value for variable "%s" of feature flag "%s".','Got variable value "%s" for variable "%s" of feature flag "%s"','BucketingId is valid: "%s"',"Datafile is valid.","Valid user profile service provided.",'Variable "%s" is not used in variation "%s". Returning default value.',"Variation mapped to experiment %s has been removed for user %s."],Ce="12",Pe="27",Ae="35",je="53",De="57",Te="59",Fe="61",_e=["BucketingID attribute is not a string. Defaulted to userId","CMAB decision fetch failed with status: %s","Error evaluating audience condition of type %s: %s","Datafile fetch request failed with status: %s","Error fetching datafile: %s","Event action invalid.","Event data invalid.","Event key %s is not in datafile.","Event store is full. Not saving event with id %d.","Experiment key %s is not in datafile.","Failed to dispatch events, status: %s","failed to send odp events","Feature key %s is not in datafile.","Provided attributes are in an invalid format.","Unable to generate hash for bucketing ID %s: %s","Invalid CMAB fetch response","Provided Optimizely config is in an invalid format.","Datafile is invalid - property %s: %s","Datafile is invalid because it is malformed.","This version of the JavaScript SDK does not support the given datafile version: %s","Provided event tags are in an invalid format.","Experiment ID %s is not in datafile.","Experiment key %s is not in datafile. It is either invalid, paused, or archived.","Group ID %s is not in datafile.","Provided %s is in an invalid format.","JSON object is not valid.","Provided user ID is in an invalid format.","Provided user profile service instance is in an invalid format: %s.","Provided variation key is in an invalid format.","Integration key missing from datafile. All integrations should include a key.","Notification listener for (%s) threw exception: %s","Not tracking user %s.","No datafile specified. Cannot start optimizely.","No event processor is provided","No JSON object to validate against schema.","No project config available. Failing %s.","No status code in response","No variation key %s defined in datafile for experiment %s.","ODP config is not available.","ODP events should have at least one key-value pair in identifiers.","ODP event send failed.","ODP event manager stopped before it could start","ODP Manager is missing. %s failed.","ODP is not integrated","Only POST requests are supported",'Audience condition %s evaluated to UNKNOWN because the number value for user attribute "%s" is not in the range [-2^53, +2^53].',"Promise value is not allowed in sync operation","Request error","Request timeout","Retry cancelled","sendBeacon failed","%s not running",'unable to bind optimizely.close() to page unload event: "%s"',"Unable to cast value %s to type %s, returning null.","Unable to get VUID - VuidManager is not available","Unable to parse & skipped header item","Provided attribute: %s has an undefined value.","Audience condition %s evaluated to UNKNOWN because the condition value is not supported.","Attribute %s unexpectedly has reserved prefix %s; using attribute ID instead of reserved attribute name.",'Audience condition %s evaluated to UNKNOWN because a value of type "%s" was passed for user attribute "%s".',"Audience condition %s has an unknown condition type. You may need to upgrade to a newer release of the Optimizely SDK.","Audience condition %s uses an unknown match type. You may need to upgrade to a newer release of the Optimizely SDK.","Unrecognized attribute %s provided. Pruning before sending event to Optimizely.","Unrecognized decide option %s provided.","Unsupported protocol: %s","User %s is not in the forced variation map. Cannot remove their forced variation.",'Error while looking up user profile for user ID "%s": %s.','Error while saving user profile for user ID "%s": %s.','Variable with key "%s" associated with feature with key "%s" is not in datafile.','Requested variable type "%s", but variable is of type "%s". Use correct API to retrieve value. Returning None.',"Variation ID %s is not in the datafile."],Ne={resolve(e){const t=parseInt(e);return Re[t]||e}},Ue={resolve(e){const t=parseInt(e);return _e[t]||e}},Ve={level:H.Debug,infoResolver:Ne,errorResolver:Ue},Ke={level:H.Info,infoResolver:Ne,errorResolver:Ue},Le={level:H.Warn,errorResolver:Ue},qe={level:H.Error,errorResolver:Ue},Be=Symbol(),ze={[Be]:Ve},He={[Be]:Ke},$e={[Be]:Le},Je={[Be]:qe},Ge=Symbol(),We=e=>{const{level:t,infoResolver:r,errorResolver:i}=(e=>{if(!e||"object"!=typeof e||!e[Be])throw new Error("Invalid level preset");return e[Be]})(e.level);return e.logHandler&&(e=>{if("object"!=typeof e||"function"!=typeof e.log)throw new Error("Invalid log handler")})(e.logHandler),{[Ge]:new ke({name:"Optimizely",level:t,infoMsgResolver:r,errorMsgResolver:i,logHandler:e.logHandler||new Oe})}},Qe=class e{constructor(e,t,r){this.errorHandler=e,this.messageResolver=t,this.name=r||""}notify(e){e instanceof Se&&e.setMessage(this.messageResolver),this.errorHandler.handleError(e)}child(t){return new e(this.errorHandler,this.messageResolver,t)}},Ye=Symbol(),Xe=e=>((e=>{if(!e||"object"!=typeof e||"function"!=typeof e.handleError)throw new Error("Invalid error handler")})(e),{[Ye]:new Qe(e,Ue)}),Ze=["and","or","not"];function et(e,t){if(Array.isArray(e)){let r=e[0],i=e.slice(1);switch("string"==typeof r&&-1===Ze.indexOf(r)&&(r="or",i=e),r){case"and":return function(e,t){let r=!1;if(Array.isArray(e)){for(let i=0;i<e.length;i++){const n=et(e[i],t);if(!1===n)return!1;null===n&&(r=!0)}return!r||null}return null}(i,t);case"not":return function(e,t){if(Array.isArray(e)&&e.length>0){const r=et(e[0],t);return null===r?null:!r}return null}(i,t);default:return function(e,t){let r=!1;if(Array.isArray(e)){for(let i=0;i<e.length;i++){const n=et(e[i],t);if(!0===n)return!0;null===n&&(r=!0)}return!!r&&null}return null}(i,t)}}return t(e)}var tt=class e{constructor(t,r,i){var n,s;this.sdkKey=null!==(n=t.sdkKey)&&void 0!==n?n:"",this.environmentKey=null!==(s=t.environmentKey)&&void 0!==s?s:"",this.attributes=t.attributes,this.audiences=e.getAudiences(t),this.events=t.events,this.revision=t.revision;const o=(t.featureFlags||[]).reduce((e,t)=>(e[t.id]=t.variables,e),{}),a=e.getVariableIdMap(t),{experimentsMapById:l,experimentsMapByKey:u}=e.getExperimentsMap(t,o,a,i);this.experimentsMap=u,this.featuresMap=e.getFeaturesMap(t,o,l,a),this.datafile=r}getDatafile(){return this.datafile}static getAudiences(e){const t=[],r=[];return(e.typedAudiences||[]).forEach(e=>{t.push({id:e.id,conditions:JSON.stringify(e.conditions),name:e.name}),r.push(e.id)}),(e.audiences||[]).forEach(e=>{-1===r.indexOf(e.id)&&"$opt_dummy_audience"!=e.id&&t.push({id:e.id,conditions:JSON.stringify(e.conditions),name:e.name})}),t}static getSerializedAudiences(t,r){let i="";if(t){let n="";t.forEach(t=>{let s="";if(t instanceof Array)s=e.getSerializedAudiences(t,r),s=`(${s})`;else if(Ze.indexOf(t)>-1)n=t.toUpperCase();else{const e=r[t]?r[t].name:t;i||"NOT"===n?(n=""===n?"OR":n,i=""===i?`${n} "${r[t].name}"`:i.concat(` ${n} "${e}"`)):i=`"${e}"`}""!==s&&(""!==i||"NOT"===n?(n=""===n?"OR":n,i=""===i?`${n} ${s}`:i.concat(` ${n} ${s}`)):i=i.concat(s))})}return i}static getExperimentAudiences(t,r){return t.audienceConditions?e.getSerializedAudiences(t.audienceConditions,r.audiencesById):""}static mergeFeatureVariables(e,t,r,i,n){const s=(e[r]||[]).reduce((e,t)=>(e[t.key]={id:t.id,key:t.key,type:t.type,value:t.defaultValue},e),{});return(i||[]).forEach(e=>{const r=t[e.id],i={id:e.id,key:r.key,type:r.type,value:n?e.value:r.defaultValue};s[r.key]=i}),s}static getVariationsMap(t,r,i,n){let s={};return s=t.reduce((t,s)=>{const o=e.mergeFeatureVariables(r,i,n,s.variables,s.featureEnabled);return t[s.key]={id:s.id,key:s.key,featureEnabled:s.featureEnabled,variablesMap:o},t},{}),s}static getVariableIdMap(e){let t={};return t=(e.featureFlags||[]).reduce((e,t)=>(t.variables.forEach(t=>{e[t.id]=t}),e),{}),t}static getDeliveryRules(t,r,i,n,s){return n.map(n=>({id:n.id,key:n.key,audiences:e.getExperimentAudiences(n,t),variationsMap:e.getVariationsMap(n.variations,r,s,i)}))}static getRolloutExperimentIds(e){const t=[];return(e||[]).forEach(e=>{e.experiments.forEach(e=>{t.push(e.id)})}),t}static getExperimentsMap(t,r,i,n){const s=this.getRolloutExperimentIds(t.rollouts),o={},a={};return(t.experiments||[]).forEach(l=>{if(-1!==s.indexOf(l.id))return;const u=t.experimentFeatureMap[l.id];let c="";u&&u.length>0&&(c=u[0]);const d=e.getVariationsMap(l.variations,r,i,c.toString()),h={id:l.id,key:l.key,audiences:e.getExperimentAudiences(l,t),variationsMap:d};o[l.id]=h,a[l.key]&&n&&n.warn(`Duplicate experiment keys found in datafile: ${l.key}`),a[l.key]=h}),{experimentsMapById:o,experimentsMapByKey:a}}static getExperimentsKeyMap(e){const t={};for(const r in e){const i=e[r];t[i.key]=i}return t}static getFeaturesMap(t,r,i,n){const s={};return t.featureFlags.forEach(o=>{const a={},l=[];o.experimentIds.forEach(e=>{const t=i[e];t&&(a[t.key]=t),l.push(i[e])});const u=(o.variables||[]).reduce((e,t)=>(e[t.key]={id:t.id,key:t.key,type:t.type,value:t.defaultValue},e),{});let c=[];const d=t.rolloutIdMap[o.rolloutId];d&&(c=e.getDeliveryRules(t,r,o.id,d.experiments,n)),s[o.key]={id:o.id,key:o.key,experimentRules:l,deliveryRules:c,experimentsMap:a,variablesMap:u}}),s}},rt=["2","3","4"],it=class{constructor(e,t,r,i){this.apiKey=e,this.apiHost=t,this.pixelUrl=r,this.segmentsToCheck=i}equals(e){return this.apiHost===e.apiHost&&this.apiKey===e.apiKey&&this.pixelUrl===e.pixelUrl&&Ee(this.segmentsToCheck,e.segmentsToCheck)}},nt="Running",st="$opt_",ot=function(e,t){if(!t.rolloutId)return null;const r=e.rolloutIdMap[t.rolloutId];if(!r||!r.experiments||0===r.experiments.length)return null;const i=r.experiments[r.experiments.length-1];return i.variations&&0!==i.variations.length?i.variations[0]:null},at=e=>{e.holdouts=e.holdouts||[],e.holdoutIdMap=pe(e.holdouts,"id"),e.globalHoldouts=[],e.includedHoldouts={},e.excludedHoldouts={},e.flagHoldoutsMap={};const t=pe(e.featureFlags,"id");e.holdouts.forEach(r=>{r.includedFlags||(r.includedFlags=[]),r.excludedFlags||(r.excludedFlags=[]),r.variationKeyMap=pe(r.variations,"key"),fe(r.variations,"id",e.variationIdMap),0===r.includedFlags.length?(e.globalHoldouts.push(r),r.excludedFlags.forEach(i=>{const n=t[i];if(n){const t=n.key;e.excludedHoldouts[t]||(e.excludedHoldouts[t]=[]),e.excludedHoldouts[t].push(r)}})):r.includedFlags.forEach(i=>{const n=t[i];if(n){const t=n.key;e.includedHoldouts[t]||(e.includedHoldouts[t]=[]),e.includedHoldouts[t].push(r)}})})},lt=function(e){return e.conditions?ut(e.conditions):[]},ut=e=>{const t=[];return["and","or","not"].includes(e)?[]:(Array.isArray(e)?e.forEach(e=>t.push(...ut(e))):"qualified"===e.match&&t.push(e.value),t)},ct=function(e,t){const r=e.experimentKeyMap[t];if(!r)throw new Se("22",t);return r.status},dt=function(e,t){if(e.experimentKeyMap.hasOwnProperty(t)){const r=e.experimentKeyMap[t];if(r)return r}throw new Se("9",t)},ht=function(e,t,r){if(!e)return null;return ye(e.flagVariationsMap[t],e=>e.key===r)||null},gt=function(e,t,r){if(e.featureKeyMap.hasOwnProperty(t)){const r=e.featureKeyMap[t];if(r)return r}return null==r||r.error(Ce,t),null},pt=function(e){return!!e.sendFlagDecisions},ft=()=>{};function vt(){let e=ft,t=ft;const r=new Promise((r,i)=>{e=r,t=i});return{promise:r,resolve:e,reject:t,then:r.then.bind(r)}}var mt,yt="%s failed to start, reason: %s",bt="%s stopped before running";!function(e){e[e.New=0]="New",e[e.Starting=1]="Starting",e[e.Running=2]="Running",e[e.Stopping=3]="Stopping",e[e.Terminated=4]="Terminated",e[e.Failed=5]="Failed"}(mt||(mt={}));var Et=class{constructor(e=[]){this.disposable=!1,this.state=mt.New,this.startPromise=vt(),this.stopPromise=vt(),this.startupLogs=e,this.startPromise.promise.catch(()=>{}),this.stopPromise.promise.catch(()=>{})}makeDisposable(){this.disposable=!0}setLogger(e){this.logger=e}printStartupLogs(){if(this.logger)for(const{level:e,message:t,params:r}of this.startupLogs){const i=we[e];this.logger[i].call(this.logger,t,...r)}}onRunning(){return this.startPromise.promise}onTerminated(){return this.stopPromise.promise}getState(){return this.state}isStarting(){return this.state===mt.Starting}isRunning(){return this.state===mt.Running}isNew(){return this.state===mt.New}isDone(){return[mt.Stopping,mt.Terminated,mt.Failed].includes(this.state)}start(){this.printStartupLogs()}},It=class{constructor(){this.id=0,this.listeners={}}on(e,t){var r;this.listeners[e]||(this.listeners[e]=new Map);const i=this.id++;return null===(r=this.listeners[e])||void 0===r||r.set(i,t),()=>{var t;null===(t=this.listeners[e])||void 0===t||t.delete(i)}}emit(e,t){const r=this.listeners[e];r&&r.forEach(e=>{e(t)})}removeListeners(e){var t;null===(t=this.listeners[e])||void 0===t||t.clear()}removeAllListeners(){this.listeners={}}},St=class extends Et{constructor(e){super(),this.eventEmitter=new It,this.jsonSchemaValidator=e.jsonSchemaValidator,this.datafile=e.datafile,this.datafileManager=e.datafileManager,e.logger&&this.setLogger(e.logger)}setLogger(e){var t;this.logger=e,this.logger.setName("ProjectConfigManager"),null===(t=this.datafileManager)||void 0===t||t.setLogger(e.child())}start(){var e,t,r;this.isNew()&&(this.state=mt.Starting,this.datafile||this.datafileManager?(this.datafile&&this.handleNewDatafile(this.datafile,!0),null===(e=this.datafileManager)||void 0===e||e.start(),null===(t=this.datafileManager)||void 0===t||t.onUpdate(this.handleNewDatafile.bind(this)),null===(r=this.datafileManager)||void 0===r||r.onRunning().catch(e=>{this.handleDatafileManagerError(e)})):this.handleInitError(new Error("sdkKey or datafile must be provided")))}makeDisposable(){var e;super.makeDisposable(),null===(e=this.datafileManager)||void 0===e||e.makeDisposable()}handleInitError(e){var t,r;null===(t=this.logger)||void 0===t||t.error(e),this.state=mt.Failed,null===(r=this.datafileManager)||void 0===r||r.stop(),this.startPromise.reject(e),this.stopPromise.reject(e)}handleDatafileManagerError(e){var t;null===(t=this.logger)||void 0===t||t.error(yt,"DatafileManager",e.message),this.isStarting()&&this.handleInitError(new Error(be(yt,"DatafileManager",e.message)))}handleNewDatafile(e,t=!1){var r,i;if(!this.isDone())try{const t=function(e){var t,r;const i=function(e){if(!e)throw new Se("32");if("string"==typeof e)try{e=JSON.parse(e)}catch(e){throw new Se("18")}if("object"!=typeof e||Array.isArray(e)||null===e)throw new Se("18");if(-1===rt.indexOf(e.version))throw new Se("19",e.version);return e}(e.datafile);e.jsonSchemaValidator?(e.jsonSchemaValidator(i),null===(t=e.logger)||void 0===t||t.info("38")):null===(r=e.logger)||void 0===r||r.info("28");const n=[i];return"string"==typeof e.datafile&&n.push(e.datafile),function(e,t=null){const r=function(e){var t,r;const i=Object.assign({},e);return i.audiences=(e.audiences||[]).map(e=>Object.assign({},e)),i.experiments=(e.experiments||[]).map(e=>Object.assign({},e)),i.featureFlags=(e.featureFlags||[]).map(e=>Object.assign({},e)),i.groups=(e.groups||[]).map(e=>{const t=Object.assign({},e);return t.experiments=(e.experiments||[]).map(e=>Object.assign({},e)),t}),i.rollouts=(e.rollouts||[]).map(e=>{const t=Object.assign({},e);return t.experiments=(e.experiments||[]).map(e=>Object.assign({},e)),t}),i.environmentKey=null!==(t=e.environmentKey)&&void 0!==t?t:"",i.sdkKey=null!==(r=e.sdkKey)&&void 0!==r?r:"",i}(e);let i;r.region||(r.region="US"),r.__datafileStr=null===t?JSON.stringify(e):t,(r.audiences||[]).forEach(e=>{e.conditions=JSON.parse(e.conditions)}),r.audiencesById={},fe(r.audiences,"id",r.audiencesById),fe(r.typedAudiences,"id",r.audiencesById),r.attributes=r.attributes||[],r.attributeKeyMap={},r.attributeIdMap={},r.attributes.forEach(e=>{r.attributeKeyMap[e.key]=e,r.attributeIdMap[e.id]=e}),r.eventKeyMap=pe(r.events,"key"),r.groupIdMap=pe(r.groups,"id"),Object.keys(r.groupIdMap||{}).forEach(e=>{i=r.groupIdMap[e].experiments,(i||[]).forEach(t=>{t.groupId=e,r.experiments.push(t)})}),r.rolloutIdMap=pe(r.rollouts||[],"id"),ve(r.rolloutIdMap||{}).forEach(e=>{(e.experiments||[]).forEach(e=>{e.isRollout=!0,r.experiments.push(e),e.variationKeyMap=pe(e.variations,"key")})});const n=new Set;Object.keys(r.audiencesById).map(e=>lt(r.audiencesById[e])).forEach(e=>{e.forEach(e=>{n.add(e)})});const s=Array.from(n);let o=!1,a="",l="",u="";return r.integrations&&(r.integrationKeyMap=pe(r.integrations,"key"),r.integrations.forEach(e=>{if(!("key"in e))throw new Se("29");"odp"===e.key&&(o=!0,l=l||e.publicKey||"",a=a||e.host||"",u=u||e.pixelUrl||"")})),r.odpIntegrationConfig=o?{integrated:!0,odpConfig:new it(l,a,u,s)}:{integrated:!1},r.experimentKeyMap=pe(r.experiments,"key"),r.experimentIdMap=pe(r.experiments,"id"),r.variationIdMap={},r.variationVariableUsageMap={},(r.experiments||[]).forEach(e=>{e.variationKeyMap=pe(e.variations,"key"),fe(e.variations,"id",r.variationIdMap),ve(e.variationKeyMap||{}).forEach(e=>{e.variables&&(r.variationVariableUsageMap[e.id]=pe(e.variables,"id"))})}),r.experimentFeatureMap={},r.featureKeyMap=pe(r.featureFlags||[],"key"),ve(r.featureKeyMap||{}).forEach(e=>{e.variables.forEach(e=>{e.type===ue&&e.subType===ce&&(e.type=ce,delete e.subType)}),e.variableKeyMap=pe(e.variables,"key"),(e.experimentIds||[]).forEach(t=>{r.experimentFeatureMap[t]?r.experimentFeatureMap[t].push(e.id):r.experimentFeatureMap[t]=[e.id]})}),(r.featureFlags||[]).forEach(e=>{const t=ot(r,e);t&&(e.experimentIds||[]).forEach(e=>{const i=r.experimentIdMap[e];i&&"fr"===i.type&&(i.variations.push(t),i.trafficAllocation.push({entityId:t.id,endOfRange:1e4}),i.variationKeyMap[t.key]=t)})}),r.flagRulesMap={},(r.featureFlags||[]).forEach(e=>{const t=[];e.experimentIds.forEach(e=>{const i=r.experimentIdMap[e];i&&t.push(i)});const i=r.rolloutIdMap[e.rolloutId];i&&t.push(...i.experiments),r.flagRulesMap[e.key]=t}),r.flagVariationsMap={},me(r.flagRulesMap||{}).forEach(([e,t])=>{const i=[];t.forEach(e=>{e.variations.forEach(e=>{ye(i,t=>t.id===e.id)||i.push(e)})}),r.flagVariationsMap[e]=i}),at(r),r}(...n)}({datafile:e,jsonSchemaValidator:this.jsonSchemaValidator,logger:this.logger});this.isStarting()&&(this.state=mt.Running,this.startPromise.resolve()),(null===(r=this.projectConfig)||void 0===r?void 0:r.revision)!==t.revision&&(this.projectConfig=t,this.optimizelyConfig=void 0,this.eventEmitter.emit("update",t))}catch(e){null===(i=this.logger)||void 0===i||i.error(e),(this.isStarting()&&!this.datafileManager||this.isStarting()&&!t)&&this.handleInitError(new Error("got invalid datafile"))}}getConfig(){return this.projectConfig}getOptimizelyConfig(){var e,t,r;return!this.optimizelyConfig&&this.projectConfig&&(this.optimizelyConfig=(e=this.projectConfig,t=this.projectConfig.__datafileStr,r=this.logger,new tt(e,t,r))),this.optimizelyConfig}onUpdate(e){return this.eventEmitter.on("update",e)}stop(){if(!this.isDone()){if((this.isNew()||this.isStarting())&&this.startPromise.reject(new Error(be(bt,"ProjectConfigManager"))),this.state=mt.Stopping,this.eventEmitter.removeAllListeners(),!this.datafileManager)return this.state=mt.Terminated,void this.stopPromise.resolve();this.datafileManager.stop(),this.datafileManager.onTerminated().then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}).catch(e=>{this.state=mt.Failed,this.stopPromise.reject(e)})}}};function xt(e,t,r,i){return new(r||(r=Promise))(function(n,s){function o(e){try{l(i.next(e))}catch(e){s(e)}}function a(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}l((i=i.apply(e,t||[])).next())})}var wt=e=>e>=200&&e<400,Ot=class extends Et{constructor(e){super(e.startupLogs);const{autoUpdate:t=!1,sdkKey:r,datafileAccessToken:i,customHeaders:n,urlTemplate:s,cache:o,initRetry:a,repeater:l,requestHandler:u,logger:c}=e;this.cache=o,this.cacheKey="opt-datafile-"+r,this.sdkKey=r,this.datafileAccessToken=i,this.customHeaders=n,this.requestHandler=u,this.emitter=new It,this.autoUpdate=t,this.initRetryRemaining=a,this.repeater=l,c&&this.setLogger(c);const d=s||(i?"https://config.optimizely.com/datafiles/auth/%s.json":"https://cdn.optimizely.com/datafiles/%s.json");this.datafileUrl=be(d,this.sdkKey)}setLogger(e){this.logger=e,this.logger.setName("PollingDatafileManager")}onUpdate(e){return this.emitter.on("update",e)}get(){return this.currentDatafile}start(){this.isNew()&&(super.start(),this.state=mt.Starting,this.setDatafileFromCacheIfAvailable(),this.repeater.setTask(this.syncDatafile.bind(this)),this.repeater.start(!0))}makeDisposable(){var e;super.makeDisposable(),this.initRetryRemaining=Math.min(null!==(e=this.initRetryRemaining)&&void 0!==e?e:5,5)}stop(){var e;this.isDone()||((this.isNew()||this.isStarting())&&this.startPromise.reject(new Error(be(bt,"PollingDatafileManager"))),this.state=mt.Terminated,this.repeater.stop(),null===(e=this.currentRequest)||void 0===e||e.abort(),this.emitter.removeAllListeners(),this.stopPromise.resolve())}handleInitFailure(){this.state=mt.Failed,this.repeater.stop();const e=new Error("Failed to fetch datafile");this.startPromise.reject(e),this.stopPromise.reject(e)}handleError(e){var t,r;this.isDone()||(e instanceof Error?null===(t=this.logger)||void 0===t||t.error("4",e.message,e):null===(r=this.logger)||void 0===r||r.error("3",e),this.isStarting()&&void 0!==this.initRetryRemaining&&(0===this.initRetryRemaining?this.handleInitFailure():this.initRetryRemaining--))}onRequestRejected(e){return xt(this,void 0,void 0,function*(){return this.handleError(e),Promise.reject(e)})}onRequestResolved(e){return xt(this,void 0,void 0,function*(){if(this.isDone())return;if(this.saveLastModified(e.headers),!wt(e.statusCode))return this.handleError(e.statusCode),Promise.reject(new Error);const t=this.getDatafileFromResponse(e);t&&(this.handleDatafile(t),this.autoUpdate&&!this.disposable||this.repeater.stop())})}makeDatafileRequest(){var e,t;const r=Object.assign({},this.customHeaders);return this.lastResponseLastModified&&(r["if-modified-since"]=this.lastResponseLastModified),this.datafileAccessToken&&(null===(e=this.logger)||void 0===e||e.debug("0"),r.Authorization=`Bearer ${this.datafileAccessToken}`),null===(t=this.logger)||void 0===t||t.debug("17",this.datafileUrl,()=>JSON.stringify(r)),this.requestHandler.makeRequest(this.datafileUrl,r,"GET")}syncDatafile(){return xt(this,void 0,void 0,function*(){return this.currentRequest=this.makeDatafileRequest(),this.currentRequest.responsePromise.then(this.onRequestResolved.bind(this),this.onRequestRejected.bind(this)).finally(()=>this.currentRequest=void 0)})}handleDatafile(e){var t;this.isDone()||(this.currentDatafile=e,null===(t=this.cache)||void 0===t||t.set(this.cacheKey,e),this.isStarting()&&(this.startPromise.resolve(),this.state=mt.Running),this.emitter.emit("update",e))}getDatafileFromResponse(e){var t;if(null===(t=this.logger)||void 0===t||t.debug("23",e.statusCode),304!==e.statusCode)return e.body}saveLastModified(e){var t;const r=e["last-modified"]||e["Last-Modified"];void 0!==r&&(this.lastResponseLastModified=r,null===(t=this.logger)||void 0===t||t.debug("24",this.lastResponseLastModified))}setDatafileFromCacheIfAvailable(){return xt(this,void 0,void 0,function*(){if(this.cache)try{const e=yield this.cache.get(this.cacheKey);e&&this.isStarting()&&this.handleDatafile(e)}catch(e){}})}},kt=class{constructor(e,t,r){this.base=e,this.max=t,this.maxJitter=r,this.maxJitter>this.base/2&&(this.maxJitter=this.base/2),this.maxJitter=r,this.current=e}backoff(){const e=this.current+this.maxJitter*Math.random();return this.current=Math.min(2*this.current,this.max),e}reset(){this.current=this.base}},Mt=class{constructor(e){this.value=e}backoff(){return this.value}reset(){}},Rt=class{constructor(e,t){this.failureCount=0,this.running=!1,this.interval=e,this.backoffController=t}isRunning(){return this.running}handleSuccess(){var e;this.failureCount=0,null===(e=this.backoffController)||void 0===e||e.reset(),this.setTimer(this.interval)}handleFailure(){var e,t;this.failureCount++;const r=null!==(t=null===(e=this.backoffController)||void 0===e?void 0:e.backoff())&&void 0!==t?t:this.interval;this.setTimer(r)}setTimer(e){this.running&&(this.timeoutId=setTimeout(this.executeTask.bind(this),e))}executeTask(){this.task&&this.task(this.failureCount).then(this.handleSuccess.bind(this),this.handleFailure.bind(this))}start(e){var t;this.running=!0,e?(t=this.executeTask.bind(this),"function"==typeof queueMicrotask?queueMicrotask(t):Promise.resolve().then(t)):this.setTimer(this.interval)}stop(){this.running=!1,clearInterval(this.timeoutId)}reset(){var e;this.failureCount=0,null===(e=this.backoffController)||void 0===e||e.reset(),this.stop()}setTask(e){this.task=e}},Ct=e=>{const t=[];if(!e||"object"!=typeof e)throw new Error("Invalid store");for(const r of["set","get","remove","getKeys"])"function"!=typeof e[r]&&t.push("Invalid store method %s".replace("%s",r));if(t.length>0)throw new Error(t.join(", "))},Pt="Invalid config manager",At=Symbol(),jt=e=>({[At]:new St(e)}),Dt=e=>{var t;e.cache&&Ct(e.cache);const r=null!==(t=e.updateInterval)&&void 0!==t?t:3e5,i=new kt(1e3,r,500),n=new Rt(r,i),s=[];r<3e4&&s.push({level:H.Warn,message:"Polling intervals below 30 seconds are not recommended.",params:[]});const o={sdkKey:e.sdkKey,autoUpdate:e.autoUpdate,urlTemplate:e.urlTemplate,datafileAccessToken:e.datafileAccessToken,customHeaders:e.customHeaders,requestHandler:e.requestHandler,cache:e.cache,repeater:n,startupLogs:s},a=new Ot(o);return new St({datafile:e.datafile,datafileManager:a,jsonSchemaValidator:e.jsonSchemaValidator})},Tt=class{constructor(){this.operation="sync"}},Ft=class{constructor(){this.operation="async"}},_t=(e,t)=>e instanceof Tt?e.getBatched(t):t.map(t=>e.get(t)),Nt=(e,t)=>e instanceof Ft?e.getBatched(t):Promise.all(t.map(t=>e.get(t))),Ut=class extends Tt{constructor(e,t,r,i){super(),this.operation="sync",this.store=e,this.prefix=t,this.transformGet=r,this.transformSet=i}addPrefix(e){return`${this.prefix}${e}`}removePrefix(e){return e.substring(this.prefix.length)}set(e,t){return this.store.set(this.addPrefix(e),this.transformSet(t))}get(e){const t=this.store.get(this.addPrefix(e));return t?this.transformGet(t):void 0}remove(e){return this.store.remove(this.addPrefix(e))}getInternalKeys(){return this.store.getKeys().filter(e=>e.startsWith(this.prefix))}getKeys(){return this.getInternalKeys().map(e=>this.removePrefix(e))}getBatched(e){return _t(this.store,e.map(e=>this.addPrefix(e))).map(e=>e?this.transformGet(e):void 0)}},Vt=class{constructor(e,t,r,i){this.operation="async",this.cache=e,this.prefix=t,this.transformGet=r,this.transformSet=i}addPrefix(e){return`${this.prefix}${e}`}removePrefix(e){return e.substring(this.prefix.length)}set(e,t){return this.cache.set(this.addPrefix(e),this.transformSet(t))}get(e){return xt(this,void 0,void 0,function*(){const t=yield this.cache.get(this.addPrefix(e));return t?this.transformGet(t):void 0})}remove(e){return this.cache.remove(this.addPrefix(e))}getInternalKeys(){return xt(this,void 0,void 0,function*(){return this.cache.getKeys().then(e=>e.filter(e=>e.startsWith(this.prefix)))})}getKeys(){return xt(this,void 0,void 0,function*(){return this.getInternalKeys().then(e=>e.map(e=>this.removePrefix(e)))})}getBatched(e){return xt(this,void 0,void 0,function*(){return(yield Nt(this.cache,e.map(e=>this.addPrefix(e)))).map(e=>e?this.transformGet(e):void 0)})}},Kt={US:"https://logx.optimizely.com/v1/events",EU:"https://eu.logx.optimizely.com/v1/events"};function Lt(e){const t=[],r=e[0];return e.forEach(e=>{if("conversion"===e.type||"impression"===e.type){const r=function(e){const t={snapshots:[],visitor_id:e.user.id,attributes:[]};return e.user.attributes.forEach(e=>{t.attributes.push({entity_id:e.entityId,key:e.key,type:"custom",value:e.value})}),"boolean"==typeof e.context.botFiltering&&t.attributes.push({entity_id:Z,key:Z,type:"custom",value:e.context.botFiltering}),t}(e);"impression"===e.type?r.snapshots.push(function(e){var t,r;const{layer:i,experiment:n,variation:s,ruleKey:o,flagKey:a,ruleType:l,enabled:u,cmabUuid:c}=e,d=i?i.id:null;return{decisions:[{campaign_id:d,experiment_id:null!==(t=null==n?void 0:n.id)&&void 0!==t?t:"",variation_id:null!==(r=null==s?void 0:s.id)&&void 0!==r?r:"",metadata:{flag_key:a,rule_key:o,rule_type:l,variation_key:s?s.key:"",enabled:u,cmab_uuid:c}}],events:[{entity_id:d,timestamp:e.timestamp,key:"campaign_activated",uuid:e.uuid}]}}(e)):"conversion"===e.type&&r.snapshots.push(function(e){const t=Object.assign({},e.tags);delete t.revenue,delete t.value;const r={entity_id:e.event.id,key:e.event.key,timestamp:e.timestamp,uuid:e.uuid};return e.tags&&(r.tags=e.tags),null!=e.value&&(r.value=e.value),null!=e.revenue&&(r.revenue=e.revenue),{events:[r]}}(e)),t.push(r)}}),{client_name:r.context.clientName,client_version:r.context.clientVersion,account_id:r.context.accountId,project_id:r.context.projectId,revision:r.context.revision,anonymize_ip:r.context.anonymizeIP,enrich_decisions:!0,visitors:t}}function qt(e){var t;const r=(null===(t=e[0])||void 0===t?void 0:t.context.region)||"US";return{url:Kt[r]||Kt.US,httpVerb:"POST",params:Lt(e)}}var Bt=(e,t,r,i,n)=>{e().then(e=>{t.resolve(e)}).catch(s=>{var o;if(0===n)return void t.reject(s);if(r.cancelled)return void t.reject(new Se("49"));const a=null!==(o=null==i?void 0:i.backoff())&&void 0!==o?o:0;setTimeout(()=>{Bt(e,t,r,i,n=void 0===n?void 0:n-1)},a)})},zt=(e,t,r)=>{const i=vt(),n={cancelled:!1};return Bt(e,i,n,t,r),{cancelRetry:()=>{n.cancelled=!0},result:i.promise}},Ht=class{constructor(){this.idSuffixOffset=0}getId(){const e=1e4+this.idSuffixOffset;return this.idSuffixOffset=(this.idSuffixOffset+1)%1e4,`${Date.now()}${e}`}};function $t(e){var t,r;return null!==(r=null===(t=e.experiment)||void 0===t?void 0:t.key)&&void 0!==r?r:""}function Jt(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.key)&&void 0!==r?r:""}function Gt(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.featureEnabled)&&void 0!==r&&r}var Wt,Qt,Yt={AB_TEST:"ab-test",FEATURE:"feature",FEATURE_TEST:"feature-test",FEATURE_VARIABLE:"feature-variable",ALL_FEATURE_VARIABLES:"all-feature-variables",FLAG:"flag"},Xt={ACTIVATE:"ACTIVATE",DECISION:"DECISION",LOG_EVENT:"LOG_EVENT",OPTIMIZELY_CONFIG_UPDATE:"OPTIMIZELY_CONFIG_UPDATE",TRACK:"TRACK"};!function(e){e.BOOLEAN="boolean",e.DOUBLE="double",e.INTEGER="integer",e.STRING="string",e.JSON="json"}(Wt||(Wt={})),function(e){e.DISABLE_DECISION_EVENT="DISABLE_DECISION_EVENT",e.ENABLED_FLAGS_ONLY="ENABLED_FLAGS_ONLY",e.IGNORE_USER_PROFILE_SERVICE="IGNORE_USER_PROFILE_SERVICE",e.INCLUDE_REASONS="INCLUDE_REASONS",e.EXCLUDE_VARIABLES="EXCLUDE_VARIABLES",e.IGNORE_CMAB_CACHE="IGNORE_CMAB_CACHE",e.RESET_CMAB_CACHE="RESET_CMAB_CACHE",e.INVALIDATE_USER_CMAB_CACHE="INVALIDATE_USER_CMAB_CACHE"}(Qt||(Qt={}));var Zt,er,tr=(e,t)=>{const r=e.context,i=t.context;return(r.region||"US")===(i.region||"US")&&r.accountId===i.accountId&&r.projectId===i.projectId&&r.clientName===i.clientName&&r.clientVersion===i.clientVersion&&r.revision===i.revision&&r.anonymizeIP===i.anonymizeIP&&r.botFiltering===i.botFiltering},rr=({configObj:e,userId:t,userAttributes:r,clientEngine:i,clientVersion:n,type:s})=>({type:s,timestamp:Ie.currentTimestamp(),uuid:Ie.uuid(),context:{region:e.region,accountId:e.accountId,projectId:e.projectId,revision:e.revision,clientName:i,clientVersion:n,anonymizeIP:e.anonymizeIP||!1,botFiltering:e.botFiltering},user:{id:t,attributes:ir(e,r)}}),ir=(e,t,r)=>{if(!t)return[];const i=[];return Object.keys(t).forEach(function(n){const s=t[n];if("object"!=typeof s&&void 0!==s&&(o=s,"string"==typeof n&&("string"==typeof o||"boolean"==typeof o||Ie.isNumber(o)&&Ie.isSafeInteger(o)))){const t=function(e,t,r){const i=e.attributeKeyMap[t],n=0===t.indexOf(st);return i?(n&&(null==r||r.warn("58",t,st)),i.id):n?t:(null==r||r.warn("62",t),null)}(e,n,r);t&&i.push({entityId:t,key:n,value:s})}var o}),i},nr=class extends Et{constructor(e){var t;super(e.startupLogs),this.eventQueue=[],this.idGenerator=new Ht,this.runningTask=new Map,this.dispatchingEvents=new Map,this.eventEmitter=new It,this.eventDispatcher=e.eventDispatcher,this.closingEventDispatcher=e.closingEventDispatcher,this.batchSize=e.batchSize,this.eventStore=e.eventStore,this.retryConfig=e.retryConfig,this.dispatchRepeater=e.dispatchRepeater,this.dispatchRepeater.setTask(()=>this.flush()),this.failedEventRepeater=e.failedEventRepeater,null===(t=this.failedEventRepeater)||void 0===t||t.setTask(()=>this.retryFailedEvents()),e.logger&&this.setLogger(e.logger)}setLogger(e){this.logger=e,this.logger.setName("BatchEventProcessor")}onDispatch(e){return this.eventEmitter.on("dispatch",e)}retryFailedEvents(){return xt(this,void 0,void 0,function*(){if(!this.eventStore)return;const e=(yield this.eventStore.getKeys()).filter(e=>!this.dispatchingEvents.has(e)&&!this.eventQueue.find(t=>t.id===e)),t=yield"sync"===this.eventStore.operation?_t(this.eventStore,e):Nt(this.eventStore,e),r=[];if(t.forEach(e=>{e&&r.push(e)}),0==r.length)return;r.sort((e,t)=>e.id<t.id?-1:1);const i=[];let n=[];r.forEach(e=>{(n.length===this.batchSize||n.length>0&&!tr(n[0].event,e.event))&&(i.push({request:qt(n.map(e=>e.event)),events:n}),n=[]),n.push(e)}),n.length>0&&i.push({request:qt(n.map(e=>e.event)),events:n}),i.forEach(e=>{this.dispatchBatch(e,!1)})})}createNewBatch(){if(0==this.eventQueue.length)return;const e=[],t=[];return this.eventQueue.forEach(r=>{e.push(r.event),t.push(r)}),this.eventQueue=[],{request:qt(e),events:t}}executeDispatch(e,t=!1){return xt(this,void 0,void 0,function*(){return(t&&this.closingEventDispatcher?this.closingEventDispatcher:this.eventDispatcher).dispatchEvent(e).then(e=>e.statusCode&&!wt(e.statusCode)?Promise.reject(new Se("10",e.statusCode)):Promise.resolve(e))})}dispatchBatch(e,t){const{request:r,events:i}=e;i.forEach(e=>{this.dispatchingEvents.set(e.id,e)});const n=this.retryConfig?zt(()=>this.executeDispatch(r,t),this.retryConfig.backoffProvider(),this.retryConfig.maxRetries):{result:this.executeDispatch(r,t),cancelRetry:()=>{}};this.eventEmitter.emit("dispatch",r);const s=this.idGenerator.getId();this.runningTask.set(s,n),n.result.then(e=>(i.forEach(e=>{var t;null===(t=this.eventStore)||void 0===t||t.remove(e.id)}),Promise.resolve())).catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error(e)}).finally(()=>{this.runningTask.delete(s),i.forEach(e=>this.dispatchingEvents.delete(e.id))})}flush(e=!1){return xt(this,void 0,void 0,function*(){const t=this.createNewBatch();t&&(this.dispatchRepeater.reset(),this.dispatchBatch(t,e))})}process(e){var t;return xt(this,void 0,void 0,function*(){if(!this.isRunning())return Promise.reject(new Se("51","BatchEventProcessor"));const r={id:this.idGenerator.getId(),event:e};yield Promise.resolve(null===(t=this.eventStore)||void 0===t?void 0:t.set(r.id,r)).catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error(e)}),this.eventQueue.length>0&&!tr(this.eventQueue[0].event,e)&&this.flush(),this.eventQueue.push(r),this.eventQueue.length==this.batchSize?this.flush():this.dispatchRepeater.isRunning()||this.dispatchRepeater.start()})}start(){var e;this.isNew()&&(super.start(),this.state=mt.Running,this.disposable||null===(e=this.failedEventRepeater)||void 0===e||e.start(),this.retryFailedEvents(),this.startPromise.resolve())}makeDisposable(){var e,t,r;super.makeDisposable(),this.batchSize=1,this.retryConfig={maxRetries:Math.min(null!==(t=null===(e=this.retryConfig)||void 0===e?void 0:e.maxRetries)&&void 0!==t?t:5,5),backoffProvider:(null===(r=this.retryConfig)||void 0===r?void 0:r.backoffProvider)||(()=>new kt(200,1e3,500))}}flushImmediately(){return this.isRunning()?this.flush(!0):Promise.resolve()}stop(){var e;this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(be(bt,"BatchEventProcessor"))),this.state=mt.Stopping,this.dispatchRepeater.stop(),null===(e=this.failedEventRepeater)||void 0===e||e.stop(),this.flush(!0),this.runningTask.forEach(e=>e.cancelRetry()),Promise.allSettled(Array.from(this.runningTask.values()).map(e=>e.result)).then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}))}},sr=class{constructor(){this.waitPromise=Promise.resolve()}run(e){const t=this.waitPromise.then(e);return this.waitPromise=t.catch(()=>{}),t}},or="optly_event:",ar=class extends Et{constructor(e){super(),this.dispatcher=e,this.eventEmitter=new It}process(e){const t=qt([e]),r=this.dispatcher.dispatchEvent(t);return this.eventEmitter.emit("dispatch",t),r}start(){this.isNew()&&(this.state=mt.Running,this.startPromise.resolve())}stop(){this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(be(bt,"ForwardingEventProcessor"))),this.state=mt.Terminated,this.stopPromise.resolve())}onDispatch(e){return this.eventEmitter.on("dispatch",e)}flushImmediately(){return Promise.resolve()}},lr=Symbol(),ur=e=>{if(!e||"object"!=typeof e||"function"!=typeof e.dispatchEvent)throw new Error("Invalid event dispatcher")},cr=e=>({[lr]:e}),dr=class{constructor(e,t){this.operation="sync",this.data=new Map,this.maxSize=e,this.ttl=t}lookup(e){const t=this.data.get(e);if(t&&(this.data.delete(e),!(t.expiresAt&&t.expiresAt<=Date.now())))return this.data.set(e,t),t.value}save(e,t){if(this.data.delete(e),this.data.size===this.maxSize){const e=this.data.keys().next().value;this.data.delete(e)}this.data.set(e,{value:t,expiresAt:this.ttl?Date.now()+this.ttl:void 0})}remove(e){this.data.delete(e)}reset(){this.data.clear()}getKeys(){return Array.from(this.data.keys())}},hr=class{constructor(e,t,r){this.requestHandler=e,this.requestGenerator=t,r&&this.setLogger(r)}setLogger(e){this.logger=e,this.logger.setName("OdpEventApiManager")}sendEvents(e,t){return xt(this,void 0,void 0,function*(){if(0===t.length)return{};const{method:r,endpoint:i,headers:n,data:s}=this.requestGenerator(e,t);return this.requestHandler.makeRequest(i,n,r,s).responsePromise})}},gr=(e,t)=>{const{apiHost:r,apiKey:i}=e;return{method:"POST",endpoint:`${r}/v3/events`,headers:{"Content-Type":"application/json","x-api-key":i},data:JSON.stringify(t,(e,t)=>t instanceof Map?Object.fromEntries(t):t)}};!function(e){e.VUID="vuid",e.FS_USER_ID="fs_user_id",e.FS_USER_ID_ALIAS="fs-user-id"}(Zt||(Zt={})),function(e){e.IDENTIFIED="identified",e.INITIALIZED="client_initialized"}(er||(er={}));var pr,fr="fullstack",vr=class extends Et{constructor(e){super(e.startUpLogs),this.queue=[],this.apiManager=e.apiManager,this.batchSize=e.batchSize,this.retryConfig=e.retryConfig,this.repeater=e.repeater,this.repeater.setTask(()=>this.flush())}setLogger(e){this.logger=e,this.logger.setName("OdpEventManager"),this.apiManager.setLogger(e.child())}executeDispatch(e,t){return xt(this,void 0,void 0,function*(){const r=yield this.apiManager.sendEvents(e,t);return r.statusCode&&!wt(r.statusCode)?Promise.reject(new Se("10",r.statusCode)):yield Promise.resolve(r)})}flush(){return xt(this,void 0,void 0,function*(){if(!this.odpIntegrationConfig||!this.odpIntegrationConfig.integrated)return;const e=this.odpIntegrationConfig.odpConfig,t=this.queue;return this.queue=[],this.repeater.reset(),zt(()=>this.executeDispatch(e,t),this.retryConfig.backoffProvider(),this.retryConfig.maxRetries).result.catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error("11",e)})})}start(){this.isNew()&&(super.start(),this.odpIntegrationConfig?this.goToRunningState():this.state=mt.Starting)}makeDisposable(){super.makeDisposable(),this.retryConfig.maxRetries=Math.min(this.retryConfig.maxRetries,5),this.batchSize=1}updateConfig(e){if(!this.isDone())if(this.isNew())this.odpIntegrationConfig=e;else{if(this.isStarting())return this.odpIntegrationConfig=e,void this.goToRunningState();this.flush(),this.odpIntegrationConfig=e}}goToRunningState(){this.state=mt.Running,this.startPromise.resolve()}flushImmediately(){return this.isRunning()?this.flush():Promise.resolve()}stop(){this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(be(bt,"OdpEventManager"))),this.flush(),this.state=mt.Terminated,this.stopPromise.resolve())}sendEvent(e){var t,r,i,n,s,o;this.isRunning()?(null===(r=this.odpIntegrationConfig)||void 0===r?void 0:r.integrated)?0!==e.identifiers.size?this.isDataValid(e.data)?e.action?(""===e.type&&(e.type=fr),Array.from(e.identifiers.entries()).forEach(([t,r])=>{Zt.FS_USER_ID_ALIAS!==t.toLowerCase()&&Zt.FS_USER_ID!==t.toLowerCase()||(e.identifiers.delete(t),e.identifiers.set(Zt.FS_USER_ID,r))}),this.processEvent(e)):null===(o=this.logger)||void 0===o||o.error("5"):null===(s=this.logger)||void 0===s||s.error("6"):null===(n=this.logger)||void 0===n||n.error("39"):null===(i=this.logger)||void 0===i||i.error("43"):null===(t=this.logger)||void 0===t||t.error("51","OdpEventManager")}isDataValid(e){const t=["string","number","boolean"];return Array.from(e.values()).reduce((e,r)=>e&&(null===r||t.includes(typeof r)),!0)}processEvent(e){this.queue.push(e),this.queue.length===this.batchSize?this.flush():this.repeater.isRunning()||this.repeater.start()}},mr=class{constructor(e,t,r,i){this.type=e,this.action=t,this.identifiers=null!=r?r:new Map,this.data=null!=i?i:new Map}},yr=e=>e.startsWith("vuid_")&&e.length>5,br=class extends Et{constructor(e){if(super(),this.clientEngine=te,this.clientVersion=ie,this.segmentManager=e.segmentManager,this.eventManager=e.eventManager,this.configPromise=vt(),e.userAgentParser){const{os:t,device:r}=e.userAgentParser.parseUserAgentInfo(),i={os:t.name,os_version:t.version,device_type:r.type,model:r.model};this.userAgentData=new Map(Object.entries(i).filter(([e,t])=>null!=t&&null!=t))}e.logger&&this.setLogger(e.logger)}setLogger(e){this.logger=e,this.logger.setName("OdpManager"),this.eventManager.setLogger(e.child()),this.segmentManager.setLogger(e.child())}setClientInfo(e,t){this.clientEngine=e,this.clientVersion=t}start(){if(!this.isNew())return;this.state=mt.Starting,this.eventManager.start();const e=[this.configPromise,this.eventManager.onRunning()];Promise.all(e).then(()=>{this.handleStartSuccess()}).catch(e=>{this.handleStartFailure(e)})}makeDisposable(){super.makeDisposable(),this.eventManager.makeDisposable()}handleStartSuccess(){this.isDone()||(this.state=mt.Running,this.startPromise.resolve())}handleStartFailure(e){this.isDone()||(this.state=mt.Failed,this.startPromise.reject(e),this.stopPromise.reject(e))}flushImmediately(){return this.isRunning()?this.eventManager.flushImmediately():Promise.resolve()}stop(){this.isDone()||(this.isRunning()||this.startPromise.reject(new Error(be(bt,"OdpManager"))),this.state=mt.Stopping,this.eventManager.stop(),this.eventManager.onTerminated().then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}).catch(e=>{this.state=mt.Failed,this.stopPromise.reject(e)}))}updateConfig(e){return!(this.odpIntegrationConfig&&(t=this.odpIntegrationConfig,r=e,!(t.integrated!==r.integrated||t.integrated&&r.integrated&&!t.odpConfig.equals(r.odpConfig)))||this.isDone()||(this.odpIntegrationConfig=e,this.configPromise.resolve(),this.segmentManager.updateConfig(e),this.eventManager.updateConfig(e),0));var t,r}fetchQualifiedSegments(e,t=[]){return xt(this,void 0,void 0,function*(){return yr(e)?this.segmentManager.fetchQualifiedSegments(Zt.VUID,e,t):this.segmentManager.fetchQualifiedSegments(Zt.FS_USER_ID,e,t)})}identifyUser(e,t){const r=new Map;let i=e,n=t;!t&&yr(e)&&(n=e,i=void 0),n&&r.set(Zt.VUID,n),i&&r.set(Zt.FS_USER_ID,i);const s=new mr(fr,er.IDENTIFIED,r);this.sendEvent(s)}sendEvent(e){!e.identifiers.has(Zt.VUID)&&this.vuid&&e.identifiers.set(Zt.VUID,this.vuid),e.data=this.augmentCommonData(e.data),this.eventManager.sendEvent(e)}augmentCommonData(e){const t=new Map(this.userAgentData);return t.set("idempotence_id",$()),t.set("data_source_type","sdk"),t.set("data_source",this.clientEngine),t.set("data_source_version",this.clientVersion),e.forEach((e,r)=>t.set(r,e)),t}setVuid(e){this.vuid=e,this.onRunning().then(()=>{var e;if(null===(e=this.odpIntegrationConfig)||void 0===e?void 0:e.integrated){const e=new mr(fr,er.INITIALIZED);this.sendEvent(e)}})}},Er={$schema:"http://json-schema.org/draft-04/schema#",title:"Project Config JSON Schema",type:"object",properties:{projectId:{type:"string",required:!0},accountId:{type:"string",required:!0},groups:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},policy:{type:"string",required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},experiments:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0},status:{type:"string",required:!0},layerId:{type:"string",required:!0},variations:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},audienceIds:{type:"array",items:{type:"string"},required:!0},forcedVariations:{type:"object",required:!0}}},required:!0}}},required:!0},experiments:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0},status:{type:"string",required:!0},layerId:{type:"string",required:!0},variations:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},audienceIds:{type:"array",items:{type:"string"},required:!0},forcedVariations:{type:"object",required:!0},cmab:{type:"object",required:!1,properties:{attributes:{type:"array",items:{type:"string"},required:!0}}}}},required:!0},events:{type:"array",items:{type:"object",properties:{key:{type:"string",required:!0},experimentIds:{type:"array",items:{type:"string",required:!0}},id:{type:"string",required:!0}}},required:!0},audiences:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},name:{type:"string",required:!0},conditions:{type:"string",required:!0}}},required:!0},attributes:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},version:{type:"string",required:!0},revision:{type:"string",required:!0},integrations:{type:"array",items:{type:"object",properties:{key:{type:"string",required:!0},host:{type:"string"},publicKey:{type:"string"},pixelUrl:{type:"string"}}}}}},Ir={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://example.com/example.json",title:"ODP Response Schema",type:"object",required:["data"],properties:{data:{title:"The data Schema",type:"object",required:["customer"],properties:{customer:{title:"The customer Schema",type:"object",required:[],properties:{audiences:{title:"The audiences Schema",type:"object",required:["edges"],properties:{edges:{title:"The edges Schema",type:"array",items:{title:"A Schema",type:"object",required:["node"],properties:{node:{title:"The node Schema",type:"object",required:["name","state"],properties:{name:{title:"The name Schema",type:"string",examples:["has_email","has_email_opted_in"]},state:{title:"The state Schema",type:"string",examples:["qualified"]}},examples:[]}},examples:[]},examples:[]}},examples:[]}},examples:[]}},examples:[]},errors:{title:"The errors Schema",type:"array",default:[],items:{title:"A Schema",type:"object",required:["message","locations","extensions"],properties:{message:{title:"The message Schema",type:"string",examples:["Exception while fetching data (/customer) : java.lang.RuntimeException: could not resolve _fs_user_id = asdsdaddddd"]},locations:{title:"The locations Schema",type:"array",items:{title:"A Schema",type:"object",required:["line","column"],properties:{line:{title:"The line Schema",type:"integer",examples:[2]},column:{title:"The column Schema",type:"integer",examples:[3]}},examples:[]},examples:[]},path:{title:"The path Schema",type:"array",items:{title:"A Schema",type:"string",examples:["customer"]},examples:[]},extensions:{title:"The extensions Schema",type:"object",required:["classification"],properties:{classification:{title:"The classification Schema",type:"string",examples:["InvalidIdentifierException"]}},examples:[]}},examples:[]},examples:[]}},examples:[]},Sr=[],xr="Audience segments fetch failed",wr=class{constructor(e,t){this.toGraphQLJson=(e,t,r)=>['{"query" : "query {customer',`(${e} : \\"${t}\\") `,"{audiences","(subset: [",...(null==r?void 0:r.map((e,t)=>`\\"${e}\\"${t<r.length-1?",":""}`))||"",']) {edges {node {name state}}}}}"}'].join(""),this.requestHandler=e,t&&this.setLogger(t)}setLogger(e){this.logger=e,this.logger.setName("OdpSegmentApiManager")}fetchSegments(e,t,r,i,n){var s,o,a,l,u,c,d,h,g;return xt(this,void 0,void 0,function*(){if(0===(null==n?void 0:n.length))return Sr;const p=`${t}/v3/graphql`,f=this.toGraphQLJson(r,i,n),v=yield this.querySegments(e,p,f);if(!v)return null===(s=this.logger)||void 0===s||s.error(`${xr} (network error)`),null;const m=this.parseSegmentsResponseJson(v);if(!m)return null===(o=this.logger)||void 0===o||o.error(`${xr} (decode error)`),null;if((null===(a=m.errors)||void 0===a?void 0:a.length)>0){const{code:e,classification:t}=m.errors[0].extensions;return"INVALID_IDENTIFIER_EXCEPTION"==e?null===(l=this.logger)||void 0===l||l.error(`${xr} (invalid identifier)`):null===(u=this.logger)||void 0===u||u.error(`${xr} (${t})`),null}const y=null===(h=null===(d=null===(c=null==m?void 0:m.data)||void 0===c?void 0:c.customer)||void 0===d?void 0:d.audiences)||void 0===h?void 0:h.edges;return y?y.filter(e=>"qualified"==e.node.state).map(e=>e.node.name):(null===(g=this.logger)||void 0===g||g.error(`${xr} (decode error)`),null)})}querySegments(e,t,r){return xt(this,void 0,void 0,function*(){const i=t,n={"Content-Type":"application/json","x-api-key":e};try{const e=this.requestHandler.makeRequest(i,n,"POST",r),{statusCode:t,body:s}=yield e.responsePromise;return t>=200&&t<300?s:null}catch(e){return null}})}parseSegmentsResponseJson(e){let t={};try{t=JSON.parse(e)}catch(e){return null}return function(e,t=Er,r=!0){if("object"!=typeof e||null===e)throw new Se("34");const i=(0,J.validate)(e,t);if(i.valid)return!0;if(!r)return!1;if(Array.isArray(i.errors))throw new Se("17",i.errors[0].property,i.errors[0].message);throw new Se("25")}(t,Ir,!1)?t:null}};!function(e){e.IGNORE_CACHE="IGNORE_CACHE",e.RESET_CACHE="RESET_CACHE"}(pr||(pr={}));var Or=class{constructor(e,t,r){this.segmentsCache=e,this.odpSegmentApiManager=t,r&&this.setLogger(r)}setLogger(e){this.logger=e,this.logger.setName("OdpSegmentManager"),this.odpSegmentApiManager.setLogger(e.child())}fetchQualifiedSegments(e,t,r){var i,n;return xt(this,void 0,void 0,function*(){if(!this.odpIntegrationConfig)return null===(i=this.logger)||void 0===i||i.warn("38"),null;if(!this.odpIntegrationConfig.integrated)return null===(n=this.logger)||void 0===n||n.warn("43"),null;const s=this.odpIntegrationConfig.odpConfig,o=s.segmentsToCheck;if(!o||o.length<=0)return[];const a=this.makeCacheKey(e,t),l=null==r?void 0:r.includes(pr.IGNORE_CACHE);if((null==r?void 0:r.includes(pr.RESET_CACHE))&&this.segmentsCache.reset(),!l){const e=yield this.segmentsCache.lookup(a);if(e)return e}const u=yield this.odpSegmentApiManager.fetchSegments(s.apiKey,s.apiHost,e,t,o);return u&&!l&&this.segmentsCache.save(a,u),u})}makeCacheKey(e,t){return`${e}-$-${t}`}updateConfig(e){this.odpIntegrationConfig=e,this.segmentsCache.reset()}},kr=Symbol(),Mr=e=>{const t=(e=>{return e.segmentsCache&&(e=>{const t=[];if(!e||"object"!=typeof e)throw new Error("Invalid cache");for(const r of["save","lookup","reset"])"function"!=typeof e[r]&&t.push("Invalid cache method %s".replace("%s",r));if(t.length>0)throw new Error(t.join(", "))})(e.segmentsCache),new Or(e.segmentsCache||(t=e.segmentsCacheSize,r=e.segmentsCacheTimeout,new dr(t||1e4,r||6e5)),new wr(e.segmentRequestHandler));var t,r})(e),r=new vr({apiManager:new hr((i=e).eventRequestHandler,i.eventRequestGenerator),batchSize:i.eventBatchSize||100,repeater:new Rt(i.eventFlushInterval||1e4),retryConfig:{maxRetries:i.eventMaxRetries||2,backoffProvider:()=>new kt(i.eventMinBackoff||200,i.eventMaxBackoff||1e3,50)}});var i;return new br({segmentManager:t,eventManager:r,userAgentParser:e.userAgentParser})},Rr=Symbol(),Cr=class{constructor(e,t){this.logger=e,this.errorNotifier=t}report(e,...t){if("string"==typeof e)return e=new Se(e,...t),void this.report(e);this.errorNotifier&&this.errorNotifier.notify(e),this.logger&&this.logger.error(e)}setLogger(e){this.logger=e}setErrorNotifier(e){this.errorNotifier=e}},Pr=class{constructor(e){this.removerId=1,this.eventEmitter=new It,this.removers=new Map,this.errorReporter=new Cr(e.logger,e.errorNotifier)}addNotificationListener(e,t){if(!(ve(Xt).indexOf(e)>-1))return-1;const r=this.removerId++,i=this.eventEmitter.on(e,this.wrapWithErrorReporting(e,t));return this.removers.set(r,i),r}wrapWithErrorReporting(e,t){return r=>{try{t(r)}catch(t){const r=t instanceof Error?t.message:String(t);this.errorReporter.report("30",e,r)}}}removeNotificationListener(e){const t=this.removers.get(e);return!!t&&(t(),!0)}clearAllNotificationListeners(){this.eventEmitter.removeAllListeners()}clearNotificationListeners(e){this.eventEmitter.removeListeners(e)}sendNotifications(e,t){this.eventEmitter.emit(e,t)}};function Ar(e,t,r){return{variationKey:null,enabled:!1,variables:{},ruleKey:null,flagKey:e,userContext:t,reasons:r}}var jr="$opt_null_rule_key",Dr=class e{constructor({optimizely:e,userId:t,attributes:r}){this._qualifiedSegments=null,this.optimizely=e,this.userId=t,this.attributes=Object.assign({},r),this.forcedDecisionsMap={}}setAttribute(e,t){this.attributes[e]=t}getUserId(){return this.userId}getAttributes(){return Object.assign({},this.attributes)}getOptimizely(){return this.optimizely}get qualifiedSegments(){return this._qualifiedSegments}set qualifiedSegments(e){this._qualifiedSegments=e}decide(e,t=[]){return this.optimizely.decide(this.cloneUserContext(),e,t)}decideAsync(e,t){return this.optimizely.decideAsync(this.cloneUserContext(),e,t)}decideForKeys(e,t=[]){return this.optimizely.decideForKeys(this.cloneUserContext(),e,t)}decideForKeysAsync(e,t){return this.optimizely.decideForKeysAsync(this.cloneUserContext(),e,t)}decideAll(e=[]){return this.optimizely.decideAll(this.cloneUserContext(),e)}decideAllAsync(e=[]){return this.optimizely.decideAllAsync(this.cloneUserContext(),e)}trackEvent(e,t){this.optimizely.track(e,this.userId,this.attributes,t)}setForcedDecision(e,t){var r;const i=e.flagKey,n=null!==(r=e.ruleKey)&&void 0!==r?r:jr,s={variationKey:t.variationKey};return this.forcedDecisionsMap[i]||(this.forcedDecisionsMap[i]={}),this.forcedDecisionsMap[i][n]=s,!0}getForcedDecision(e){return this.findForcedDecision(e)}removeForcedDecision(e){var t;const r=null!==(t=e.ruleKey)&&void 0!==t?t:jr,i=e.flagKey;let n=!1;return this.forcedDecisionsMap.hasOwnProperty(i)&&(this.forcedDecisionsMap[i].hasOwnProperty(r)&&(delete this.forcedDecisionsMap[i][r],n=!0),0===Object.keys(this.forcedDecisionsMap[i]).length&&delete this.forcedDecisionsMap[i]),n}removeAllForcedDecisions(){return this.forcedDecisionsMap={},!0}findForcedDecision(e){var t;let r;const i=null!==(t=e.ruleKey)&&void 0!==t?t:jr,n=e.flagKey;if(this.forcedDecisionsMap.hasOwnProperty(e.flagKey)){const e=this.forcedDecisionsMap[n];if(e.hasOwnProperty(i))return r=e[i].variationKey,{variationKey:r}}return null}cloneUserContext(){const t=new e({optimizely:this.getOptimizely(),userId:this.getUserId(),attributes:this.getAttributes()});return Object.keys(this.forcedDecisionsMap).length>0&&(t.forcedDecisionsMap=Object.assign({},this.forcedDecisionsMap)),t._qualifiedSegments=this._qualifiedSegments,t}fetchQualifiedSegments(e){return xt(this,void 0,void 0,function*(){const t=yield this.optimizely.fetchQualifiedSegments(this.userId,e);return this.qualifiedSegments=t,null!==t})}isQualifiedFor(e){return!!this._qualifiedSegments&&this._qualifiedSegments.indexOf(e)>-1}},Tr=Math.pow(2,32),Fr=function(e){try{const t=G.default.v3(e,1)/Tr;return Math.floor(1e4*t)}catch(t){throw new Se("14",e,t.message)}},_r="User %s is not in any experiment of group %s.",Nr="User %s is not in experiment %s of group %s.",Ur="User %s is in experiment %s of group %s.",Vr="Assigned bucket %s to user with bucketing ID %s.",Kr="Bucketed into an invalid variation ID. Returning null.",Lr=function(e){var t,r,i,n,s;const o=[],a=e.experimentIdMap[e.experimentId],l=null==a?void 0:a.groupId;if(l){const n=e.groupIdMap[l];if(!n)throw new Se("23",l);if("random"===n.policy){const s=qr(n,e.bucketingId,e.userId,e.logger);if(null===s)return null===(t=e.logger)||void 0===t||t.info(_r,e.userId,l),o.push([_r,e.userId,l]),{result:null,reasons:o};if(s!==e.experimentId)return null===(r=e.logger)||void 0===r||r.info(Nr,e.userId,e.experimentKey,l),o.push([Nr,e.userId,e.experimentKey,l]),{result:null,reasons:o};null===(i=e.logger)||void 0===i||i.info(Ur,e.userId,e.experimentKey,l),o.push([Ur,e.userId,e.experimentKey,l])}}const u=`${e.bucketingId}${e.experimentId}`,c=Fr(u);null===(n=e.logger)||void 0===n||n.debug(Vr,c,e.userId),o.push([Vr,c,e.userId]);const d=Br(c,e.trafficAllocationConfig);return e.validateEntity&&null!==d&&!e.variationIdMap[d]?(d&&(null===(s=e.logger)||void 0===s||s.warn(Kr),o.push([Kr])),{result:null,reasons:o}):{result:d,reasons:o}},qr=function(e,t,r,i){const n=`${t}${e.id}`,s=Fr(n);null==i||i.debug(Vr,s,r);const o=e.trafficAllocation;return Br(s,o)},Br=function(e,t){for(let r=0;r<t.length;r++)if(e<t[r].endOfRange)return t[r].entityId;return null};function zr(e){return/^\d+$/.test(e)}function Hr(e){const t=e.indexOf("-"),r=e.indexOf("+");return!(t<0)&&(r<0||t<r)}function $r(e){const t=e.indexOf("-"),r=e.indexOf("+");return!(r<0)&&(t<0||r<t)}function Jr(e,t){let r=e,i="";if(/\s/.test(e))return null==t||t.warn(Fe,e),null;if(Hr(e)?(r=e.substring(0,e.indexOf("-")),i=e.substring(e.indexOf("-")+1)):$r(e)&&(r=e.substring(0,e.indexOf("+")),i=e.substring(e.indexOf("+")+1)),"string"!=typeof r||"string"!=typeof i)return null;const n=r.split(".").length-1;if(n>2)return null==t||t.warn(Fe,e),null;const s=r.split(".");if(s.length!=n+1)return null==t||t.warn(Fe,e),null;for(const r of s)if(!zr(r))return null==t||t.warn(Fe,e),null;return i&&s.push(i),s}var Gr="exact",Wr="exists",Qr="semver_eq",Yr="semver_ge",Xr="semver_gt",Zr="semver_le",ei="semver_lt",ti="substring",ri=[Gr,Wr,"gt","ge","lt","le",ti,Qr,ei,Zr,Xr,Yr],ii={};ii[Gr]=oi,ii[Wr]=function(e,t,r){return null!=t.getAttributes()[e.name]},ii.gt=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i>n:null},ii.ge=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i>=n:null},ii.lt=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i<n:null},ii.le=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i<=n:null},ii[ti]=function(e,t,r){const i=t.getAttributes(),n=e.name,s=i[e.name],o=typeof s,a=e.value;return"string"!=typeof a?(null==r||r.warn(De,JSON.stringify(e)),null):null===s?(null==r||r.debug(Me,JSON.stringify(e),n),null):"string"!=typeof s?(null==r||r.warn(Te,JSON.stringify(e),o,n),null):-1!==s.indexOf(a)},ii[Qr]=function(e,t,r){const i=li(e,t,r);return null===i?null:0===i},ii[Xr]=function(e,t,r){const i=li(e,t,r);return null===i?null:i>0},ii[Yr]=function(e,t,r){const i=li(e,t,r);return null===i?null:i>=0},ii[ei]=function(e,t,r){const i=li(e,t,r);return null===i?null:i<0},ii[Zr]=function(e,t,r){const i=li(e,t,r);return null===i?null:i<=0};var ni=e=>({evaluate:(t,r)=>function(e,t,r){const i=t.getAttributes(),n=e.match;if(void 0!==n&&-1===ri.indexOf(n))return null==r||r.warn(Fe,JSON.stringify(e)),null;const s=e.name;if(!i.hasOwnProperty(s)&&n!=Wr)return null==r||r.debug("18",JSON.stringify(e),s),null;let o;return o=n&&ii[n]||oi,o(e,t,r)}(t,r,e)});function si(e){return"string"==typeof e||"boolean"==typeof e||Ie.isNumber(e)}function oi(e,t,r){const i=t.getAttributes(),n=e.value,s=typeof n,o=e.name,a=i[o],l=typeof a;return!si(n)||Ie.isNumber(n)&&!Ie.isSafeInteger(n)?(null==r||r.warn(De,JSON.stringify(e)),null):null===a?(null==r||r.debug(Me,JSON.stringify(e),o),null):si(a)&&s===l?Ie.isNumber(a)&&!Ie.isSafeInteger(a)?(null==r||r.warn("45",JSON.stringify(e),o),null):n===a:(null==r||r.warn(Te,JSON.stringify(e),l,o),null)}function ai(e,t,r){const i=t.getAttributes(),n=e.name,s=i[n],o=typeof s,a=e.value;return null!==a&&Ie.isSafeInteger(a)?null===s?(null==r||r.debug(Me,JSON.stringify(e),n),!1):Ie.isNumber(s)?!!Ie.isSafeInteger(s)||(null==r||r.warn("45",JSON.stringify(e),n),!1):(null==r||r.warn(Te,JSON.stringify(e),o,n),!1):(null==r||r.warn(De,JSON.stringify(e)),!1)}function li(e,t,r){const i=t.getAttributes(),n=e.name,s=i[n],o=typeof s,a=e.value;return"string"!=typeof a?(null==r||r.warn(De,JSON.stringify(e)),null):null===s?(null==r||r.debug(Me,JSON.stringify(e),n),null):"string"!=typeof s?(null==r||r.warn(Te,JSON.stringify(e),o,n),null):function(e,t,r){const i=Jr(t,r),n=Jr(e,r);if(!i||!n)return null;const s=i.length;for(let r=0;r<n.length;r++){if(s<=r)return Hr(e)||$r(e)?1:-1;if(zr(i[r])){const e=parseInt(i[r]),t=parseInt(n[r]);if(e>t)return 1;if(e<t)return-1}else{if(i[r]<n[r])return Hr(e)&&!Hr(t)?1:-1;if(i[r]>n[r])return!Hr(e)&&Hr(t)?-1:1}}return Hr(t)&&!Hr(e)?-1:0}(a,s,r)}var ui="qualified",ci=[ui],di={};di[ui]=gi;var hi=e=>({evaluate:(t,r)=>function(e,t,r){const i=e.match;if(void 0!==i&&-1===ci.indexOf(i))return null==r||r.warn(Fe,JSON.stringify(e)),null;let n;return n=i&&di[i]||gi,n(e,t)}(t,r,e)});function gi(e,t){return t.isQualifiedFor(e.value)}var pi=class{constructor(e,t){this.logger=t,this.typeToEvaluatorMap=Object.assign(Object.assign({},e),{custom_attribute:ni(this.logger),third_party_dimension:hi(this.logger)})}evaluate(e,t,r){return!e||0===e.length||!!et(e,e=>{var i,n;const s=t[e];if(s){null===(i=this.logger)||void 0===i||i.debug("5",e,JSON.stringify(s.conditions));const t=et(s.conditions,this.evaluateConditionWithUserAttributes.bind(this,r)),o=null===t?"UNKNOWN":t.toString().toUpperCase();return null===(n=this.logger)||void 0===n||n.debug("1",e,o),t}return null})}evaluateConditionWithUserAttributes(e,t){var r,i;const n=this.typeToEvaluatorMap[t.type];if(!n)return null===(r=this.logger)||void 0===r||r.warn("60",JSON.stringify(t)),null;try{return n.evaluate(t,e)}catch(e){null===(i=this.logger)||void 0===i||i.error("2",t.type,e.message)}return null}};function fi(e){return"string"==typeof e&&""!==e}var vi=class e{constructor(e,t){this.op=e,this.val=t}get(){return this.val}then(t){if("sync"===this.op){const r=t(this.val);return e.of(this.op,r.get())}return e.of(this.op,this.val.then(t))}static of(t,r){if("sync"===t){if((i=r)&&"function"==typeof i.then)throw new Se("Promise value is not allowed in sync operation");return new e(t,r)}var i;return new e(t,Promise.resolve(r))}};vi.all=(e,t)=>{if("sync"===e){const r=t.map(e=>e.get());return vi.of(e,r)}const r=t.map(e=>e.get());return vi.of(e,Promise.all(r))};var mi="Experiment %s is not running.",yi='Returning previously activated variation "%s" of experiment "%s" for user "%s" from user profile.',bi="User %s does not meet conditions to be in experiment %s.",Ei="User %s is in no variation of experiment %s.",Ii="User %s is in variation %s of experiment %s.",Si="User %s is forced in variation %s.",xi="Variation key %s is not in datafile. Not activating user %s.",wi='Evaluating audiences for %s "%s": %s.',Oi="Audiences for %s %s collectively evaluated to %s.",ki="User %s is in rollout of feature %s.",Mi="User %s is not in rollout of feature %s.",Ri="Feature %s is not attached to any experiments.",Ci="User %s does not meet conditions for targeting rule %s.",Pi="User %s not bucketed into targeting rule %s due to traffic allocation. Trying everyone rule.",Ai="User %s bucketed into targeting rule %s.",ji="There is no rollout of feature %s.",Di="Invalid rollout ID %s attached to feature %s",Ti="Rollout of feature %s has no experiments",Fi="Experiment key %s is improperly formatted.",_i="Variation %s is mapped to experiment %s and user %s in the forced variation map.",Ni="User %s meets conditions for targeting rule %s.",Ui="Variation (%s) is mapped to flag (%s), rule (%s) and user (%s) in the forced decision map.",Vi="Variation (%s) is mapped to flag (%s) and user (%s) in the forced decision map.",Ki="Invalid variation is mapped to flag (%s), rule (%s) and user (%s) in the forced decision map.",Li="Invalid variation is mapped to flag (%s) and user (%s) in the forced decision map.",qi="Failed to fetch CMAB data for experiment %s.",Bi="Holdout %s is not running.",zi="User %s meets conditions for holdout %s.",Hi="User %s does not meet conditions for holdout %s.",$i="User %s is in variation %s of holdout %s.",Ji="User %s is in no holdout variation.",Gi=class{constructor(e){var t,r,i;this.logger=e.logger,null===(t=this.logger)||void 0===t||t.setName("DecisionService"),this.audienceEvaluator=(r=e.UNSTABLE_conditionEvaluators,i=this.logger,new pi(r,i)),this.forcedVariationMap={},this.userProfileService=e.userProfileService,this.userProfileServiceAsync=e.userProfileServiceAsync,this.cmabService=e.cmabService}isCmab(e){return!!e.cmab}resolveVariation(e,t,r,i,n,s){var o,a,l;const u=i.getUserId(),c=r.key;if(ct(t,c)!==nt)return null===(o=this.logger)||void 0===o||o.info(mi,c),vi.of(e,{result:{},reasons:[[mi,c]]});const d=[],h=this.getForcedVariation(t,c,u);d.push(...h.reasons);const g=h.result;if(g)return vi.of(e,{result:{variationKey:g},reasons:d});const p=this.getWhitelistedVariation(r,u);d.push(...p.reasons);let f=p.result;if(f)return vi.of(e,{result:{variationKey:f.key},reasons:d});if(s&&(f=this.getStoredVariation(t,r,u,s.userProfile),f))return null===(a=this.logger)||void 0===a||a.info(yi,f.key,c,u),d.push([yi,f.key,c,u]),vi.of(e,{result:{variationKey:f.key},reasons:d});const v=this.checkIfUserIsInAudience(t,r,se,i,"");return d.push(...v.reasons),v.result?(this.isCmab(r)?this.getDecisionForCmabExperiment(e,t,r,i,n):this.getDecisionFromBucketer(e,t,r,i)).then(i=>{var n,o;if(d.push(...i.reasons),i.error)return vi.of(e,{error:!0,result:{},reasons:d});const a=i.result.variationId;return f=a?t.variationIdMap[a]:null,f?(null===(o=this.logger)||void 0===o||o.info(Ii,u,f.key,c),d.push([Ii,u,f.key,c]),s&&!this.isCmab(r)&&this.updateUserProfile(r,f,s),vi.of(e,{result:{variationKey:f.key,cmabUuid:i.result.cmabUuid},reasons:d})):(null===(n=this.logger)||void 0===n||n.debug(Ei,u,c),d.push([Ei,u,c]),vi.of(e,{result:{},reasons:d}))}):(null===(l=this.logger)||void 0===l||l.info(bi,u,c),d.push([bi,u,c]),vi.of(e,{result:{},reasons:d}))}getDecisionForCmabExperiment(e,t,r,i,n){if("sync"===e)return vi.of(e,{error:!1,result:{},reasons:[["CMAB is not supported in sync mode."]]});const s=i.getUserId(),o=i.getAttributes(),a=this.getBucketingId(s,o),l=this.buildBucketerParams(t,r,a,s),u=Lr(l);if("$"!==u.result)return vi.of(e,{error:!1,result:{},reasons:u.reasons});const c=this.cmabService.getDecision(t,i,r.id,n).then(e=>({error:!1,result:e,reasons:[]})).catch(e=>{var t;return null===(t=this.logger)||void 0===t||t.error(qi,r.key),{error:!0,result:{},reasons:[[qi,r.key]]}});return vi.of(e,c)}getDecisionFromBucketer(e,t,r,i){const n=i.getUserId(),s=i.getAttributes(),o=this.getBucketingId(n,s),a=this.buildBucketerParams(t,r,o,n),l=Lr(a);return vi.of(e,{result:{variationId:l.result||void 0},reasons:l.reasons})}getVariation(e,t,r,i={}){const n=i[Qt.IGNORE_USER_PROFILE_SERVICE]?void 0:{isProfileUpdated:!1,userProfile:this.resolveExperimentBucketMap("sync",r.getUserId(),r.getAttributes()).get()},s=this.resolveVariation("sync",e,t,r,i,n).get();return n&&this.saveUserProfile("sync",r.getUserId(),n),{result:s.result.variationKey||null,reasons:s.reasons}}resolveExperimentBucketMap(e,t,r={}){const i=r.$opt_experiment_bucket_map||{};return this.getUserProfile(e,t).then(t=>{const r=(null==t?void 0:t.experiment_bucket_map)||{};return vi.of(e,Object.assign(Object.assign({},r),i))})}getWhitelistedVariation(e,t){var r,i;const n=[];if(e.forcedVariations&&e.forcedVariations.hasOwnProperty(t)){const s=e.forcedVariations[t];return e.variationKeyMap.hasOwnProperty(s)?(null===(r=this.logger)||void 0===r||r.info(Si,t,s),n.push([Si,t,s]),{result:e.variationKeyMap[s],reasons:n}):(null===(i=this.logger)||void 0===i||i.error(xi,s,t),n.push([xi,s,t]),{result:null,reasons:n})}return{result:null,reasons:n}}checkIfUserIsInAudience(e,t,r,i,n){var s,o;const a=[],l=t.audienceConditions||t.audienceIds,u=e.audiencesById;null===(s=this.logger)||void 0===s||s.debug(wi,r,n||t.key,JSON.stringify(l)),a.push([wi,r,n||t.key,JSON.stringify(l)]);const c=this.audienceEvaluator.evaluate(l,u,i);return null===(o=this.logger)||void 0===o||o.info(Oi,r,n||t.key,c.toString().toUpperCase()),a.push([Oi,r,n||t.key,c.toString().toUpperCase()]),{result:c,reasons:a}}buildBucketerParams(e,t,r,i){let n=!0,s=t.trafficAllocation;return"cmab"in t&&t.cmab&&(s=[{entityId:"$",endOfRange:t.cmab.trafficAllocation}],n=!1),{bucketingId:r,experimentId:t.id,experimentKey:t.key,experimentIdMap:e.experimentIdMap,experimentKeyMap:e.experimentKeyMap,groupIdMap:e.groupIdMap,logger:this.logger,trafficAllocationConfig:s,userId:i,variationIdMap:e.variationIdMap,validateEntity:n}}getVariationForHoldout(e,t,r){var i,n,s,o,a;const l=r.getUserId(),u=[];if("Running"!==t.status){const e=[Bi,t.key];return u.push(e),null===(i=this.logger)||void 0===i||i.info(Bi,t.key),{result:{experiment:null,variation:null,decisionSource:ne.HOLDOUT},reasons:u}}const c=this.checkIfUserIsInAudience(e,t,se,r);if(u.push(...c.reasons),!c.result){const e=[Hi,l,t.key];return u.push(e),null===(n=this.logger)||void 0===n||n.info(Hi,l,t.key),{result:{experiment:null,variation:null,decisionSource:ne.HOLDOUT},reasons:u}}const d=[zi,l,t.key];u.push(d),null===(s=this.logger)||void 0===s||s.info(zi,l,t.key);const h=r.getAttributes(),g=this.getBucketingId(l,h),p=this.buildBucketerParams(e,t,g,l),f=Lr(p);if(u.push(...f.reasons),f.result){const r=e.variationIdMap[f.result];if(r){const e=[$i,l,t.key,r.key];return u.push(e),null===(o=this.logger)||void 0===o||o.info($i,l,t.key,r.key),{result:{experiment:t,variation:r,decisionSource:ne.HOLDOUT},reasons:u}}}const v=[Ji,l];return u.push(v),null===(a=this.logger)||void 0===a||a.info(Ji,l),{result:{experiment:null,variation:null,decisionSource:ne.HOLDOUT},reasons:u}}getStoredVariation(e,t,r,i){var n;if(null==i?void 0:i.hasOwnProperty(t.id)){const s=i[t.id],o=s.variation_id;if(e.variationIdMap.hasOwnProperty(o))return e.variationIdMap[s.variation_id];null===(n=this.logger)||void 0===n||n.info("26",r,o,t.key)}return null}getUserProfile(e,t){var r;const i={user_id:t,experiment_bucket_map:{}};if(this.userProfileService){try{return vi.of(e,this.userProfileService.lookup(t))}catch(e){null===(r=this.logger)||void 0===r||r.error("66",t,e.message)}return vi.of(e,i)}return this.userProfileServiceAsync&&"async"===e?vi.of(e,this.userProfileServiceAsync.lookup(t).catch(e=>{var r;return null===(r=this.logger)||void 0===r||r.error("66",t,e.message),i})):vi.of(e,i)}updateUserProfile(e,t,r){r.userProfile&&(r.userProfile[e.id]={variation_id:t.id},r.isProfileUpdated=!0)}saveUserProfile(e,t,r){var i,n;const{userProfile:s,isProfileUpdated:o}=r;if(!s||!o)return vi.of(e,void 0);if("sync"===e&&!this.userProfileService)return vi.of(e,void 0);if(this.userProfileService){try{this.userProfileService.save({user_id:t,experiment_bucket_map:s}),null===(i=this.logger)||void 0===i||i.info("25",t)}catch(e){null===(n=this.logger)||void 0===n||n.error("67",t,e.message)}return vi.of(e,void 0)}return this.userProfileServiceAsync?vi.of(e,this.userProfileServiceAsync.save({user_id:t,experiment_bucket_map:s}).catch(e=>{var r;null===(r=this.logger)||void 0===r||r.error("67",t,e.message)})):vi.of(e,void 0)}getVariationsForFeatureList(e,t,r,i={}){return this.resolveVariationsForFeatureList("sync",e,t,r,i).get()}resolveVariationsForFeatureList(e,t,r,i,n){const s=i.getUserId(),o=i.getAttributes();return(n[Qt.IGNORE_USER_PROFILE_SERVICE]?vi.of(e,void 0):this.resolveExperimentBucketMap(e,s,o).then(t=>vi.of(e,{isProfileUpdated:!1,userProfile:t}))).then(o=>{const a=r.map(r=>this.resolveVariationForFlag(e,t,r,i,n,o)),l=vi.all(e,a);return l.then(()=>(o&&this.saveUserProfile(e,s,o),l))})}resolveVariationForFlag(e,t,r,i,n,s){const o=[],a=this.findValidatedForcedDecision(t,i,r.key);if(o.push(...a.reasons),a.result)return vi.of(e,{result:{variation:a.result,experiment:null,decisionSource:ne.FEATURE_TEST},reasons:o});const l=((e,t)=>{if(e.flagHoldoutsMap[t])return e.flagHoldoutsMap[t];const r=[...e.globalHoldouts.filter(r=>!(e.excludedHoldouts[t]||[]).includes(r)),...e.includedHoldouts[t]||[]];return e.flagHoldoutsMap[t]=r,r})(t,r.key);for(const r of l){const n=this.getVariationForHoldout(t,r,i);if(o.push(...n.reasons),n.result.variation)return vi.of(e,{result:n.result,reasons:o})}return this.getVariationForFeatureExperiment(e,t,r,i,n,s).then(n=>{var s,a;if(n.error||null!==n.result.variation)return vi.of(e,Object.assign(Object.assign({},n),{reasons:[...o,...n.reasons]}));o.push(...n.reasons);const l=this.getVariationForRollout(t,r,i);o.push(...l.reasons);const u=l.result,c=i.getUserId();return u.variation?(null===(s=this.logger)||void 0===s||s.debug(ki,c,r.key),o.push([ki,c,r.key])):(null===(a=this.logger)||void 0===a||a.debug(Mi,c,r.key),o.push([Mi,c,r.key])),vi.of(e,{result:u,reasons:o})})}getVariationForFeature(e,t,r,i={}){return this.resolveVariationsForFeatureList("sync",e,[t],r,i).get()[0]}getVariationForFeatureExperiment(e,t,r,i,n,s){var o;return 0===r.experimentIds.length?(null===(o=this.logger)||void 0===o||o.debug(Ri,r.key),vi.of(e,{result:{experiment:null,variation:null,decisionSource:ne.FEATURE_TEST},reasons:[[Ri,r.key]]})):this.traverseFeatureExperimentList(e,t,r,0,i,[],n,s)}traverseFeatureExperimentList(e,t,r,i,n,s,o,a){const l=r.experimentIds;if(i>=l.length)return vi.of(e,{result:{experiment:null,variation:null,decisionSource:ne.FEATURE_TEST},reasons:s});const u=function(e,t,r){if(e.experimentIdMap.hasOwnProperty(t)){const r=e.experimentIdMap[t];if(r)return r}return null==r||r.error("21",t),null}(t,l[i],this.logger);return u?this.getVariationFromExperimentRule(e,t,r.key,u,n,o,a).then(l=>{if(s.push(...l.reasons),l.error)return vi.of(e,{error:!0,result:{experiment:u,variation:null,decisionSource:ne.FEATURE_TEST},reasons:s});if(!l.result.variationKey)return this.traverseFeatureExperimentList(e,t,r,i+1,n,s,o,a);const c=l.result.variationKey;let d=u.variationKeyMap[c];return d||(d=ht(t,r.key,c)),vi.of(e,{result:{cmabUuid:l.result.cmabUuid,experiment:u,variation:d,decisionSource:ne.FEATURE_TEST},reasons:s})}):this.traverseFeatureExperimentList(e,t,r,i+1,n,s,o,a)}getVariationForRollout(e,t,r){var i,n,s;const o=[];let a;if(!t.rolloutId)return null===(i=this.logger)||void 0===i||i.debug(ji,t.key),o.push([ji,t.key]),a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o};const l=e.rolloutIdMap[t.rolloutId];if(!l)return null===(n=this.logger)||void 0===n||n.error(Di,t.rolloutId,t.key),o.push([Di,t.rolloutId,t.key]),a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o};const u=l.experiments;if(0===u.length)return null===(s=this.logger)||void 0===s||s.error(Ti,t.rolloutId),o.push([Ti,t.rolloutId]),a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o};let c,d,h,g,p=0;for(;p<u.length;){if(c=this.getVariationFromDeliveryRule(e,t.key,u,p,r),o.push(...c.reasons),h=c.result,d=c.skipToEveryoneElse,h)return g=e.experimentIdMap[u[p].id],a={experiment:g,variation:h,decisionSource:ne.ROLLOUT},{result:a,reasons:o};p=d?u.length-1:p+1}return a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o}}getBucketingId(e,t){var r,i;let n=e;return null!=t&&"object"==typeof t&&t.hasOwnProperty(ee)&&("string"==typeof t[ee]?(n=String(t[ee]),null===(r=this.logger)||void 0===r||r.debug("37",n)):null===(i=this.logger)||void 0===i||i.warn("0")),n}findValidatedForcedDecision(e,t,r,i){var n,s,o,a;const l=[],u=t.getForcedDecision({flagKey:r,ruleKey:i});let c,d=null;const h=t.getUserId();return e&&u&&(c=u.variationKey,d=ht(e,r,c),d?i?(null===(n=this.logger)||void 0===n||n.info(Ui,c,r,i,h),l.push([Ui,c,r,i,h])):(null===(s=this.logger)||void 0===s||s.info(Vi,c,r,h),l.push([Vi,c,r,h])):i?(null===(o=this.logger)||void 0===o||o.info(Ki,r,i,h),l.push([Ki,r,i,h])):(null===(a=this.logger)||void 0===a||a.info(Li,r,h),l.push([Li,r,h]))),{result:d,reasons:l}}removeForcedVariation(e,t,r){var i;if(!e)throw new Se("26");if(!this.forcedVariationMap.hasOwnProperty(e))throw new Se("65",e);delete this.forcedVariationMap[e][t],null===(i=this.logger)||void 0===i||i.debug("41",r,e)}setInForcedVariationMap(e,t,r){var i;this.forcedVariationMap.hasOwnProperty(e)||(this.forcedVariationMap[e]={}),this.forcedVariationMap[e][t]=r,null===(i=this.logger)||void 0===i||i.debug("34",r,t,e)}getForcedVariation(e,t,r){var i,n,s,o,a,l;const u=[],c=this.forcedVariationMap[r];if(!c)return null===(i=this.logger)||void 0===i||i.debug("32",r),{result:null,reasons:u};let d;try{const r=dt(e,t);if(!r.hasOwnProperty("id"))return null===(n=this.logger)||void 0===n||n.error(Fi,t),u.push([Fi,t]),{result:null,reasons:u};d=r.id}catch(p){return null===(s=this.logger)||void 0===s||s.error(p),u.push(p.message),{result:null,reasons:u}}const h=c[d];if(!h)return null===(o=this.logger)||void 0===o||o.debug("33",t,r),{result:null,reasons:u};const g=(f=h,(p=e).variationIdMap.hasOwnProperty(f)?p.variationIdMap[f].key:null);var p,f;return g?(null===(a=this.logger)||void 0===a||a.debug(_i,g,t,r),u.push([_i,g,t,r])):null===(l=this.logger)||void 0===l||l.debug("33",t,r),{result:g,reasons:u}}setForcedVariation(e,t,r,i){var n,s,o,a,l,u;if(null!=i&&!fi(i))return null===(n=this.logger)||void 0===n||n.error("28"),!1;let c;try{const r=dt(e,t);if(!r.hasOwnProperty("id"))return null===(s=this.logger)||void 0===s||s.error(Fi,t),!1;c=r.id}catch(e){return null===(o=this.logger)||void 0===o||o.error(e),!1}if(null==i)try{return this.removeForcedVariation(r,c,t),!0}catch(e){return null===(a=this.logger)||void 0===a||a.error(e),!1}const d=function(e,t,r){const i=e.experimentKeyMap[t];return i.variationKeyMap.hasOwnProperty(r)?i.variationKeyMap[r].id:null}(e,t,i);if(!d)return null===(l=this.logger)||void 0===l||l.error("37",i,t),!1;try{return this.setInForcedVariationMap(r,c,d),!0}catch(e){return null===(u=this.logger)||void 0===u||u.error(e),!1}}getVariationFromExperimentRule(e,t,r,i,n,s,o){const a=[],l=this.findValidatedForcedDecision(t,n,r,i.key);a.push(...l.reasons);const u=l.result;return u?vi.of(e,{result:{variationKey:u.key},reasons:a}):this.resolveVariation(e,t,i,n,s,o).then(t=>(a.push(...t.reasons),vi.of(e,{error:t.error,result:t.result,reasons:a})))}getVariationFromDeliveryRule(e,t,r,i,n){var s,o,a,l;const u=[];let c=!1;const d=r[i],h=this.findValidatedForcedDecision(e,n,t,d.key);u.push(...h.reasons);const g=h.result;if(g)return{result:g,reasons:u,skipToEveryoneElse:c};const p=n.getUserId(),f=n.getAttributes(),v=this.getBucketingId(p,f),m=i===r.length-1,y=m?"Everyone Else":i+1;let b,E,I,S=null;const x=this.checkIfUserIsInAudience(e,d,"rule",n,y);var w,O;return u.push(...x.reasons),x.result?(null===(s=this.logger)||void 0===s||s.debug(Ni,p,y),u.push([Ni,p,y]),E=this.buildBucketerParams(e,d,v,p),I=Lr(E),u.push(...I.reasons),b=I.result,b&&(O=b,S=(w=e).variationIdMap.hasOwnProperty(O)?w.variationIdMap[O]:null),S?(null===(o=this.logger)||void 0===o||o.debug(Ai,p,y),u.push([Ai,p,y])):m||(null===(a=this.logger)||void 0===a||a.debug(Pi,p,y),u.push([Pi,p,y]),c=!0)):(null===(l=this.logger)||void 0===l||l.debug(Ci,p,y),u.push([Ci,p,y])),{result:S,reasons:u,skipToEveryoneElse:c}}},Wi=class extends Et{constructor(e){var t,r,i,n,s,o,a,l,u,c,d;super(),this.cleanupTasks=new Map,this.nextCleanupTaskId=0;let h=e.clientEngine;h||(null===(t=e.logger)||void 0===t||t.info("13",h),h=re),this.clientEngine=h,this.clientVersion=e.clientVersion||ie,this.errorNotifier=e.errorNotifier,this.logger=e.logger,this.projectConfigManager=e.projectConfigManager,this.errorReporter=new Cr(this.logger,this.errorNotifier),this.odpManager=e.odpManager,this.vuidManager=e.vuidManager,this.eventProcessor=e.eventProcessor,e.disposable&&(this.projectConfigManager.makeDisposable(),null===(r=this.eventProcessor)||void 0===r||r.makeDisposable(),null===(i=this.odpManager)||void 0===i||i.makeDisposable()),this.logger&&(this.projectConfigManager.setLogger(this.logger.child()),null===(n=this.eventProcessor)||void 0===n||n.setLogger(this.logger.child()),null===(s=this.odpManager)||void 0===s||s.setLogger(this.logger.child()));let g=null!==(o=e.defaultDecideOptions)&&void 0!==o?o:[];Array.isArray(g)||(null===(a=this.logger)||void 0===a||a.debug("15"),g=[]);const p={};let f;if(g.forEach(e=>{var t;Qt[e]?p[e]=!0:null===(t=this.logger)||void 0===t||t.warn("63",e)}),this.defaultDecideOptions=p,this.projectConfigManager=e.projectConfigManager,this.projectConfigManager.onUpdate(e=>{var t;null===(t=this.logger)||void 0===t||t.info("31",e.revision,e.projectId),this.notificationCenter.sendNotifications(Xt.OPTIMIZELY_CONFIG_UPDATE,void 0),this.updateOdpSettings()}),this.eventProcessor=e.eventProcessor,null===(l=this.eventProcessor)||void 0===l||l.onDispatch(e=>{this.notificationCenter.sendNotifications(Xt.LOG_EVENT,e)}),this.odpManager=e.odpManager,e.userProfileService)try{(function(e){if("object"==typeof e&&null!==e){if("function"!=typeof e.lookup)throw new Se(Pe,"Missing function 'lookup'");if("function"!=typeof e.save)throw new Se(Pe,"Missing function 'save'");return!0}throw new Se(Pe,"Not an object")})(e.userProfileService)&&(f=e.userProfileService,null===(u=this.logger)||void 0===u||u.info("39"))}catch(m){null===(c=this.logger)||void 0===c||c.warn(m)}var v,m;this.decisionService=(v={userProfileService:f,userProfileServiceAsync:e.userProfileServiceAsync||void 0,cmabService:e.cmabService,logger:null===(d=this.logger)||void 0===d?void 0:d.child(),UNSTABLE_conditionEvaluators:e.UNSTABLE_conditionEvaluators},new Gi(v)),this.notificationCenter=(m={logger:this.logger,errorNotifier:this.errorNotifier},new Pr(m)),this.start()}start(){var e,t;this.isNew()&&(super.start(),this.state=mt.Starting,this.projectConfigManager.start(),null===(e=this.eventProcessor)||void 0===e||e.start(),null===(t=this.odpManager)||void 0===t||t.start(),Promise.all([this.projectConfigManager.onRunning(),this.eventProcessor?this.eventProcessor.onRunning():Promise.resolve(),this.odpManager?this.odpManager.onRunning():Promise.resolve(),this.vuidManager?this.vuidManager.initialize():Promise.resolve()]).then(()=>{var e,t;this.state=mt.Running,this.startPromise.resolve();const r=null===(e=this.vuidManager)||void 0===e?void 0:e.getVuid();r&&(null===(t=this.odpManager)||void 0===t||t.setVuid(r))}).catch(e=>{this.state=mt.Failed,this.errorReporter.report(e),this.startPromise.reject(e)}))}getProjectConfig(){return this.projectConfigManager.getConfig()||null}activate(e,t,r){var i,n,s;try{const o=this.getProjectConfig();if(!o)return this.errorReporter.report(Ae,"activate"),null;if(!this.validateInputs({experiment_key:e,user_id:t},r))return this.notActivatingExperiment(e,t);try{const n=this.getVariation(e,t,r);if(null===n)return this.notActivatingExperiment(e,t);if(ct(s=o,e)!==nt)return null===(i=this.logger)||void 0===i||i.debug("27",e),n;const a=dt(o,e),l={experiment:a,variation:a.variationKeyMap[n],decisionSource:ne.EXPERIMENT};return this.sendImpressionEvent(l,"",t,!0,r),n}catch(r){return null===(n=this.logger)||void 0===n||n.info("19",t,e),this.errorReporter.report(r),null}}catch(s){return this.errorReporter.report(s),null}}sendImpressionEvent(e,t,r,i,n){var s;if(!this.eventProcessor)return void(null===(s=this.logger)||void 0===s||s.error("33"));const o=this.getProjectConfig();if(!o)return;const a=function({configObj:e,decisionObj:t,userId:r,flagKey:i,enabled:n,userAttributes:s,clientEngine:o,clientVersion:a}){const l=t.decisionSource,u=$t(t),c=null!==(v=null===(f=t.experiment)||void 0===f?void 0:f.id)&&void 0!==v?v:null,d=Jt(t),h=function(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.id)&&void 0!==r?r:null}(t),g=t.cmabUuid,p=null!==c?l===ne.HOLDOUT?"":function(e,t){const r=e.experimentIdMap[t];if(!r)throw new Se("21",t);return r.layerId}(e,c):null;var f,v;return Object.assign(Object.assign({},rr({configObj:e,userId:r,userAttributes:s,clientEngine:o,clientVersion:a,type:"impression"})),{layer:{id:p},experiment:{id:c,key:u},variation:{id:h,key:d},ruleKey:u,flagKey:i,ruleType:l,enabled:n,cmabUuid:g})}({decisionObj:e,flagKey:t,enabled:i,userId:r,userAttributes:n,clientEngine:this.clientEngine,clientVersion:this.clientVersion,configObj:o});this.eventProcessor.process(a);const l=qt([a]),u={experiment:null,holdout:null,userId:r,attributes:n,variation:e.variation,logEvent:l};var c;e.experiment&&(void 0!==(c=e.experiment).status&&Array.isArray(c.includedFlags)&&Array.isArray(c.excludedFlags)?u.holdout=e.experiment:u.experiment=e.experiment),this.notificationCenter.sendNotifications(Xt.ACTIVATE,u)}track(e,t,r,i){var n,s,o,a,l,u,c;try{if(!this.eventProcessor)return void(null===(n=this.logger)||void 0===n||n.error("33"));const l=this.getProjectConfig();if(!l)return void this.errorReporter.report(Ae,"track");if(!this.validateInputs({user_id:t,event_key:e},r,i))return;if(c=e,!(u=l).eventKeyMap.hasOwnProperty(c))return null===(s=this.logger)||void 0===s||s.warn("7",e),void(null===(o=this.logger)||void 0===o||o.warn("31",t));const d=function({configObj:e,userId:t,userAttributes:r,clientEngine:i,clientVersion:n,eventKey:s,eventTags:o},a){const l=function(e,t){const r=e.eventKeyMap[t];return r?r.id:null}(e,s),u=o?function(e,t){const r=e.revenue;if(null==r)return null;const i="string"==typeof r?parseInt(r):Math.trunc(r);return isFinite(i)?(null==t||t.info("21",i),i):(null==t||t.info("6",r),null)}(o,a):null,c=o?function(e,t){const r=e.value;if(null==r)return null;const i="string"==typeof r?parseFloat(r):r;return isFinite(i)?(null==t||t.info("20",i),i):(null==t||t.info("7",r),null)}(o,a):null;return Object.assign(Object.assign({},rr({configObj:e,userId:t,userAttributes:r,clientEngine:i,clientVersion:n,type:"conversion"})),{event:{id:l,key:s},revenue:u,value:c,tags:o})}({eventKey:e,eventTags:i=this.filterEmptyValues(i),userId:t,userAttributes:r,clientEngine:this.clientEngine,clientVersion:this.clientVersion,configObj:l},this.logger);null===(a=this.logger)||void 0===a||a.info("29",e,t),this.eventProcessor.process(d);const h=qt([d]);this.notificationCenter.sendNotifications(Xt.TRACK,{eventKey:e,userId:t,attributes:r,eventTags:i,logEvent:h})}catch(u){this.errorReporter.report(u),null===(l=this.logger)||void 0===l||l.error("31",t)}}getVariation(e,t,r){var i,n,s;try{const o=this.getProjectConfig();if(!o)return this.errorReporter.report(Ae,"getVariation"),null;try{if(!this.validateInputs({experiment_key:e,user_id:t},r))return null;const a=o.experimentKeyMap[e];if(!a||a.isRollout)return null===(i=this.logger)||void 0===i||i.debug("16",e),null;const l=this.decisionService.getVariation(o,a,this.createInternalUserContext(t,r)).result,u=(n=o,s=a.id,n.experimentFeatureMap.hasOwnProperty(s)?Yt.FEATURE_TEST:Yt.AB_TEST);return this.notificationCenter.sendNotifications(Xt.DECISION,{type:u,userId:t,attributes:r||{},decisionInfo:{experimentKey:e,variationKey:l}}),l}catch(e){return this.errorReporter.report(e),null}}catch(e){return this.errorReporter.report(e),null}}setForcedVariation(e,t,r){if(!this.validateInputs({experiment_key:e,user_id:t}))return!1;const i=this.getProjectConfig();if(!i)return!1;try{return this.decisionService.setForcedVariation(i,e,t,r)}catch(e){return this.errorReporter.report(e),!1}}getForcedVariation(e,t){if(!this.validateInputs({experiment_key:e,user_id:t}))return null;const r=this.getProjectConfig();if(!r)return null;try{return this.decisionService.getForcedVariation(r,e,t).result}catch(e){return this.errorReporter.report(e),null}}validateInputs(e,t,r){try{if(e.hasOwnProperty("user_id")){const t=e.user_id;if("string"!=typeof t||null===t||"undefined"===t)throw new Se("24","user_id");delete e.user_id}return Object.keys(e).forEach(t=>{if(!fi(e[t]))throw new Se("24",t)}),t&&function(e){if("object"!=typeof e||Array.isArray(e)||null===e)throw new Se("13");Object.keys(e).forEach(function(t){if(void 0===e[t])throw new Se("56",t)})}(t),r&&function(e){if("object"!=typeof e||Array.isArray(e)||null===e)throw new Se("20")}(r),!0}catch(e){return this.errorReporter.report(e),!1}}notActivatingExperiment(e,t){var r;return null===(r=this.logger)||void 0===r||r.info("19",t,e),null}filterEmptyValues(e){for(const t in e){const r=t;!e.hasOwnProperty(r)||null!==e[r]&&void 0!==e[r]||delete e[r]}return e}isFeatureEnabled(e,t,r){var i,n;try{const s=this.getProjectConfig();if(!s)return this.errorReporter.report(Ae,"isFeatureEnabled"),!1;if(!this.validateInputs({feature_key:e,user_id:t},r))return!1;const o=gt(s,e,this.logger);if(!o)return!1;let a={};const l=this.createInternalUserContext(t,r),u=this.decisionService.getVariationForFeature(s,o,l).result,c=u.decisionSource,d=$t(u),h=Jt(u);let g=Gt(u);c!==ne.FEATURE_TEST&&c!==ne.HOLDOUT||(a={experimentKey:d,variationKey:h}),(c===ne.FEATURE_TEST||c===ne.HOLDOUT||c===ne.ROLLOUT&&pt(s))&&this.sendImpressionEvent(u,o.key,t,g,r),!0===g?null===(i=this.logger)||void 0===i||i.info("8",e,t):(null===(n=this.logger)||void 0===n||n.info("9",e,t),g=!1);const p={featureKey:e,featureEnabled:g,source:u.decisionSource,sourceInfo:a};return this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.FEATURE,userId:t,attributes:r||{},decisionInfo:p}),g}catch(e){return this.errorReporter.report(e),!1}}getEnabledFeatures(e,t){try{const r=[],i=this.getProjectConfig();return i?this.validateInputs({user_id:e})?(ve(i.featureKeyMap).forEach(i=>{this.isFeatureEnabled(i.key,e,t)&&r.push(i.key)}),r):r:(this.errorReporter.report(Ae,"getEnabledFeatures"),r)}catch(e){return this.errorReporter.report(e),[]}}getFeatureVariable(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,null,r,i):(this.errorReporter.report(Ae,"getFeatureVariable"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableForType(e,t,r,i,n){var s;if(!this.validateInputs({feature_key:e,variable_key:t,user_id:i},n))return null;const o=this.getProjectConfig();if(!o)return null;const a=gt(o,e,this.logger);if(!a)return null;const l=function(e,t,r,i){const n=e.featureKeyMap[t];if(!n)return null==i||i.error(Ce,t),null;return n.variableKeyMap[r]||(null==i||i.error("68",r,t),null)}(o,e,t,this.logger);if(!l)return null;if(r&&l.type!==r)return null===(s=this.logger)||void 0===s||s.warn("69",r,l.type),null;const u=this.createInternalUserContext(i,n),c=this.decisionService.getVariationForFeature(o,a,u).result,d=Gt(c),h=this.getFeatureVariableValueFromVariation(e,d,c.variation,l,i);let g={};return c.decisionSource===ne.FEATURE_TEST&&null!==c.experiment&&null!==c.variation&&(g={experimentKey:c.experiment.key,variationKey:c.variation.key}),this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.FEATURE_VARIABLE,userId:i,attributes:n||{},decisionInfo:{featureKey:e,featureEnabled:d,source:c.decisionSource,variableKey:t,variableValue:h,variableType:l.type,sourceInfo:g}}),h}getFeatureVariableValueFromVariation(e,t,r,i,n){var s,o,a,l;const u=this.getProjectConfig();if(!u)return null;let c=i.defaultValue;if(null!==r){const l=function(e,t,r,i){if(!t||!r)return null;if(!e.variationVariableUsageMap.hasOwnProperty(r.id))return null==i||i.error("70",r.id),null;const n=e.variationVariableUsageMap[r.id][t.id];return n?n.value:null}(u,i,r,this.logger);null!==l?t?(c=l,null===(s=this.logger)||void 0===s||s.info("36",c,i.key,e)):null===(o=this.logger)||void 0===o||o.info("10",e,n,c):null===(a=this.logger)||void 0===a||a.info("40",i.key,r.key)}else null===(l=this.logger)||void 0===l||l.info("35",n,i.key,e);return function(e,t,r){let i;switch(t){case oe:"true"!==e&&"false"!==e?(null==r||r.error(je,e,t),i=null):i="true"===e;break;case le:i=parseInt(e,10),isNaN(i)&&(null==r||r.error(je,e,t),i=null);break;case ae:i=parseFloat(e),isNaN(i)&&(null==r||r.error(je,e,t),i=null);break;case ce:try{i=JSON.parse(e)}catch(n){null==r||r.error(je,e,t),i=null}break;default:i=e}return i}(c,i.type,this.logger)}getFeatureVariableBoolean(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,oe,r,i):(this.errorReporter.report(Ae,"getFeatureVariableBoolean"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableDouble(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,ae,r,i):(this.errorReporter.report(Ae,"getFeatureVariableDouble"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableInteger(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,le,r,i):(this.errorReporter.report(Ae,"getFeatureVariableInteger"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableString(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,ue,r,i):(this.errorReporter.report(Ae,"getFeatureVariableString"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableJSON(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,ce,r,i):(this.errorReporter.report(Ae,"getFeatureVariableJSON"),null)}catch(e){return this.errorReporter.report(e),null}}getAllFeatureVariables(e,t,r){try{const i=this.getProjectConfig();if(!i)return this.errorReporter.report(Ae,"getAllFeatureVariables"),null;if(!this.validateInputs({feature_key:e,user_id:t},r))return null;const n=gt(i,e,this.logger);if(!n)return null;const s=this.createInternalUserContext(t,r),o=this.decisionService.getVariationForFeature(i,n,s).result,a=Gt(o),l={};n.variables.forEach(r=>{l[r.key]=this.getFeatureVariableValueFromVariation(e,a,o.variation,r,t)});let u={};return o.decisionSource===ne.FEATURE_TEST&&null!==o.experiment&&null!==o.variation&&(u={experimentKey:o.experiment.key,variationKey:o.variation.key}),this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.ALL_FEATURE_VARIABLES,userId:t,attributes:r||{},decisionInfo:{featureKey:e,featureEnabled:a,source:o.decisionSource,variableValues:l,sourceInfo:u}}),l}catch(e){return this.errorReporter.report(e),null}}getOptimizelyConfig(){try{return this.getProjectConfig()&&this.projectConfigManager.getOptimizelyConfig()||null}catch(e){return this.errorReporter.report(e),null}}flushImmediately(){const e=[];return this.isRunning()?(this.eventProcessor&&e.push(this.eventProcessor.flushImmediately()),this.odpManager&&e.push(this.odpManager.flushImmediately()),Promise.all(e)):Promise.resolve()}close(){return this.stop(),this.onTerminated()}stop(){var e,t;this.isDone()||(this.isRunning()||this.startPromise.reject(new Error(be(bt,"Client"))),this.state=mt.Stopping,this.projectConfigManager.stop(),null===(e=this.eventProcessor)||void 0===e||e.stop(),null===(t=this.odpManager)||void 0===t||t.stop(),this.notificationCenter.clearAllNotificationListeners(),this.cleanupTasks.forEach(e=>e()),Promise.all([this.projectConfigManager.onTerminated(),this.eventProcessor?this.eventProcessor.onTerminated():Promise.resolve(),this.odpManager?this.odpManager.onTerminated():Promise.resolve()]).then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}).catch(e=>{this.errorReporter.report(e),this.state=mt.Failed,this.stopPromise.reject(e)}))}onReady(e){let t;"object"==typeof e&&null!==e&&void 0!==e.timeout&&(t=e.timeout),ge(t)||(t=3e4);const r=vt(),i=this.nextCleanupTaskId++,n=setTimeout(()=>{this.cleanupTasks.delete(i),r.reject(new Error(be("onReady timeout expired after %s ms",t)))},t);return this.cleanupTasks.set(i,()=>{clearTimeout(n),r.reject(new Error("Instance closed"))}),Promise.race([this.onRunning().then(()=>{clearTimeout(n),this.cleanupTasks.delete(i)}),r])}createUserContext(e,t){var r;const i=null!=e?e:null===(r=this.vuidManager)||void 0===r?void 0:r.getVuid();if(void 0===i||!this.validateInputs({user_id:i}))throw new Error("Invalid identifier");if(!this.validateInputs({},t))throw new Error("Invalid attributes");const n=new Dr({optimizely:this,userId:i,attributes:t});return this.onRunning().then(()=>{this.odpManager&&this.isOdpIntegrated()&&this.odpManager.identifyUser(i)}).catch(()=>{}),n}createInternalUserContext(e,t){return new Dr({optimizely:this,userId:e,attributes:t})}decide(e,t,r=[]){return this.getProjectConfig()?this.decideForKeys(e,[t],r,!0)[t]:(this.errorReporter.report(Ae,"decide"),Ar(t,e,[de]))}decideAsync(e,t,r=[]){return xt(this,void 0,void 0,function*(){return this.getProjectConfig()?(yield this.decideForKeysAsync(e,[t],r,!0))[t]:(this.errorReporter.report(Ae,"decide"),Ar(t,e,[de]))})}getAllDecideOptions(e){var t;const r=Object.assign({},this.defaultDecideOptions);return Array.isArray(e)?e.forEach(e=>{var t;Qt[e]?r[e]=!0:null===(t=this.logger)||void 0===t||t.warn("63",e)}):null===(t=this.logger)||void 0===t||t.debug("14"),r}generateDecision(e,t,r,i,n,s){var o,a,l,u,c,d,h,g,p,f;const v=e.getUserId(),m=e.getAttributes(),y=s.featureKeyMap[t],b=r.decisionSource,E=null!==(a=null===(o=r.experiment)||void 0===o?void 0:o.key)&&void 0!==a?a:null,I=null!==(u=null===(l=r.experiment)||void 0===l?void 0:l.id)&&void 0!==u?u:null,S=null!==(d=null===(c=r.variation)||void 0===c?void 0:c.key)&&void 0!==d?d:null,x=null!==(g=null===(h=r.variation)||void 0===h?void 0:h.id)&&void 0!==g?g:null,w=Gt(r),O={};let k=!1;w?null===(p=this.logger)||void 0===p||p.info("8",t,v):null===(f=this.logger)||void 0===f||f.info("9",t,v),n[Qt.EXCLUDE_VARIABLES]||y.variables.forEach(e=>{O[e.key]=this.getFeatureVariableValueFromVariation(t,w,r.variation,e,v)}),!n[Qt.DISABLE_DECISION_EVENT]&&(b===ne.FEATURE_TEST||b===ne.HOLDOUT||b===ne.ROLLOUT&&pt(s))&&(this.sendImpressionEvent(r,t,v,w,m),k=!0);let M=[];n[Qt.INCLUDE_REASONS]&&(M=i.map(e=>be(e[0],...e.slice(1))));const R={flagKey:t,enabled:w,variationKey:S,ruleKey:E,variables:O,reasons:M,decisionEventDispatched:k,experimentId:I,variationId:x};return this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.FLAG,userId:v,attributes:m,decisionInfo:R}),{variationKey:S,enabled:w,variables:O,ruleKey:E,flagKey:t,userContext:e,reasons:M}}decideForKeys(e,t,r=[],i){return this.getDecisionForKeys("sync",e,t,r,i).get()}decideForKeysAsync(e,t,r=[],i){return this.getDecisionForKeys("async",e,t,r,i).get()}getDecisionForKeys(e,t,r,i=[],n){var s;const o={},a={},l={},u=this.getProjectConfig();if(!u)return this.errorReporter.report(Ae,"decideForKeys"),vi.of(e,o);if(0===r.length)return vi.of(e,o);const c=this.getAllDecideOptions(i);n&&delete c[Qt.ENABLED_FLAGS_ONLY];const d=[];for(const e of r){const r=u.featureKeyMap[e];r?d.push(r):(null===(s=this.logger)||void 0===s||s.error(Ce,e),o[e]=Ar(e,t,[be('No flag was found for key "%s".',e)]))}return this.decisionService.resolveVariationsForFeatureList(e,u,d,t,c).then(r=>{for(let e=0;e<d.length;e++){const i=d[e].key,n=r[e];n.error?o[i]=Ar(i,t,n.reasons.map(e=>be(e[0],...e.slice(1)))):(a[i]=n.result,l[i]=n.reasons)}for(const e of d){const r=e.key;if(o[r])continue;const i=this.generateDecision(t,r,a[r],l[r],c,u);c[Qt.ENABLED_FLAGS_ONLY]&&!i.enabled||(o[r]=i)}return vi.of(e,o)})}decideAll(e,t=[]){const r=this.getProjectConfig();if(!r)return this.errorReporter.report(Ae,"decideAll"),{};const i=Object.keys(r.featureKeyMap);return this.decideForKeys(e,i,t)}decideAllAsync(e,t=[]){return xt(this,void 0,void 0,function*(){const r=this.getProjectConfig();if(!r)return this.errorReporter.report(Ae,"decideAll"),{};const i=Object.keys(r.featureKeyMap);return this.decideForKeysAsync(e,i,t)})}updateOdpSettings(){const e=this.getProjectConfig();e&&this.odpManager&&this.odpManager.updateConfig(e.odpIntegrationConfig)}sendOdpEvent(e,t,r,i){var n,s;if(this.odpManager)try{const n=new mr(t||"",e,r,i);this.odpManager.sendEvent(n)}catch(e){null===(s=this.logger)||void 0===s||s.error("40",e)}else null===(n=this.logger)||void 0===n||n.error("42","sendOdpEvent")}isOdpIntegrated(){var e,t,r;return null!==(r=null===(t=null===(e=this.getProjectConfig())||void 0===e?void 0:e.odpIntegrationConfig)||void 0===t?void 0:t.integrated)&&void 0!==r&&r}fetchQualifiedSegments(e,t){var r;return xt(this,void 0,void 0,function*(){return this.odpManager?yield this.odpManager.fetchQualifiedSegments(e,t):(null===(r=this.logger)||void 0===r||r.error("42","fetchQualifiedSegments"),null)})}getVuid(){var e;if(this.vuidManager)return this.vuidManager.getVuid();null===(e=this.logger)||void 0===e||e.error("54")}},Qi=class{constructor(e){this.predictionEndpointTemplate="https://prediction.cmab.optimizely.com/predict/%s",this.requestHandler=e.requestHandler,this.retryConfig=e.retryConfig,e.predictionEndpointTemplate&&(this.predictionEndpointTemplate=e.predictionEndpointTemplate)}fetchDecision(e,t,r,i){var n,s;return xt(this,void 0,void 0,function*(){const o=be(this.predictionEndpointTemplate,e),a=Object.keys(r).map(e=>({id:e,value:r[e],type:"custom_attribute"})),l={instances:[{visitorId:t,experimentId:e,attributes:a,cmabUUID:i}]};return yield this.retryConfig?zt(()=>this.doFetch(o,JSON.stringify(l)),null===(s=(n=this.retryConfig).backoffProvider)||void 0===s?void 0:s.call(n),this.retryConfig.maxRetries).result:this.doFetch(o,JSON.stringify(l))})}doFetch(e,t){return xt(this,void 0,void 0,function*(){const r=yield this.requestHandler.makeRequest(e,{"Content-Type":"application/json"},"POST",t).responsePromise;if(!wt(r.statusCode))return Promise.reject(new Se("CMAB decision fetch failed with status: %s",r.statusCode));const i=JSON.parse(r.body);return this.validateResponse(i)?String(i.predictions[0].variation_id):Promise.reject(new Se("Invalid CMAB fetch response"))})}validateResponse(e){return e.predictions&&e.predictions.length>0&&e.predictions[0].variation_id}},Yi=class{constructor(e){var t;this.serializers=Array.from({length:1e3},()=>new sr),this.cmabCache=e.cmabCache,this.cmabClient=e.cmabClient,this.logger=e.logger,null===(t=this.logger)||void 0===t||t.setName("CmabService")}getSerializerIndex(e,t){const r=this.getCacheKey(e,t),i=G.default.v3(r);return Math.abs(i)%1e3}getDecision(e,t,r,i){return xt(this,void 0,void 0,function*(){const n=this.getSerializerIndex(t.getUserId(),r);return this.serializers[n].run(()=>this.getDecisionInternal(e,t,r,i))})}getDecisionInternal(e,t,r,i){var n,s,o,a,l,u;return xt(this,void 0,void 0,function*(){const c=t.getUserId(),d=this.filterAttributes(e,t,r);if(i[Qt.IGNORE_CMAB_CACHE])return null===(n=this.logger)||void 0===n||n.debug("11",c,r),this.fetchDecision(r,c,d);i[Qt.RESET_CMAB_CACHE]&&(null===(s=this.logger)||void 0===s||s.debug("22",c,r),this.cmabCache.reset());const h=this.getCacheKey(c,r);i[Qt.INVALIDATE_USER_CMAB_CACHE]&&(null===(o=this.logger)||void 0===o||o.debug("12",c,r),this.cmabCache.remove(h));const g=yield this.cmabCache.lookup(h),p=JSON.stringify(d,Object.keys(d).sort()),f=String(G.default.v3(p));if(g){if(g.attributesHash===f)return null===(a=this.logger)||void 0===a||a.debug("3",c,r),{variationId:g.variationId,cmabUuid:g.cmabUuid};null===(l=this.logger)||void 0===l||l.debug("2",c,r),this.cmabCache.remove(h)}else null===(u=this.logger)||void 0===u||u.debug("4",c,r);const v=yield this.fetchDecision(r,c,d);return this.cmabCache.save(h,{attributesHash:f,variationId:v.variationId,cmabUuid:v.cmabUuid}),v})}fetchDecision(e,t,r){return xt(this,void 0,void 0,function*(){const i=$();return{variationId:yield this.cmabClient.fetchDecision(e,t,r,i),cmabUuid:i}})}filterAttributes(e,t,r){const i={},n=t.getAttributes(),s=e.experimentIdMap[r];return s&&s.cmab?(s.cmab.attributeIds.forEach(t=>{const r=e.attributeIdMap[t];n.hasOwnProperty(r.key)&&(i[r.key]=n[r.key])}),i):i}getCacheKey(e,t){return`${e.length}-${e}-${t}`}},Xi=e=>{var t,r;const{clientEngine:i,clientVersion:n,jsonSchemaValidator:s,userProfileService:o,userProfileServiceAsync:a,defaultDecideOptions:l,disposable:u,requestHandler:c}=e,d=(e=>{if(!e||"object"!=typeof e)throw new Error(Pt);if(!e[At])throw new Error(Pt);return e[At]})(e.projectConfigManager),h=(e=>{if(e&&"object"==typeof e)return e[lr]})(e.eventProcessor),g=(e=>{if(e&&"object"==typeof e)return e[kr]})(e.odpManager),p=(e=>{if(e&&"object"==typeof e)return e[Rr]})(e.vuidManager),f=(e=>{if(e&&"object"==typeof e)return e[Ye]})(e.errorNotifier),v=(e=>{if(e&&"object"==typeof e)return e[Ge]})(e.logger),m=new Qi({requestHandler:c,retryConfig:{maxRetries:1,backoffProvider:()=>new Mt(100)},predictionEndpointTemplate:null===(t=e.cmab)||void 0===t?void 0:t.predictionEndpointTemplate}),y=(null===(r=e.cmab)||void 0===r?void 0:r.cache)?((e,t)=>{const r=(e,t)=>{if(void 0!==e)return t(e)},i={lookup:i=>"sync"===e.operation?r(e.lookup(i),t):e.lookup(i).then(e=>r(e,t)),save:(t,r)=>e.save(t,(e=>JSON.stringify(e))(r))};return Object.setPrototypeOf(i,e),i})(e.cmab.cache,e=>JSON.parse(e)):(()=>{var t,r;const i=(null===(t=e.cmab)||void 0===t?void 0:t.cacheSize)||1e4,n=(null===(r=e.cmab)||void 0===r?void 0:r.cacheTtl)||18e5;return new dr(i,n)})(),b={cmabService:new Yi({cmabClient:m,cmabCache:y,logger:null==v?void 0:v.child()}),clientEngine:i||te,clientVersion:n||ie,jsonSchemaValidator:s,userProfileService:o,userProfileServiceAsync:a,defaultDecideOptions:l,disposable:u,logger:v,errorNotifier:f,projectConfigManager:d,eventProcessor:h,odpManager:g,vuidManager:p,UNSTABLE_conditionEvaluators:e.UNSTABLE_conditionEvaluators};return new Wi(b)},Zi=class{constructor(e={}){var t;this.logger=e.logger,this.timeout=null!==(t=e.timeout)&&void 0!==t?t:6e4}makeRequest(e,t,r,i){const n=Y.default.parse(e);if("https:"!==n.protocol&&"http:"!==n.protocol)return{responsePromise:Promise.reject(new Se("64",n.protocol)),abort:()=>{}};const s=("https:"===n.protocol?Q.default:W.default).request(Object.assign(Object.assign({},this.getRequestOptionsFromUrl(n)),{method:r,headers:Object.assign(Object.assign({},t),{"accept-encoding":"gzip,deflate","content-length":String((null==i?void 0:i.length)||0)}),timeout:this.timeout})),o=this.getAbortableRequestFromRequest(s);return i&&s.write(i),s.end(),o}getRequestOptionsFromUrl(e){return{hostname:e.hostname,path:e.path,port:e.port,protocol:e.protocol}}createHeadersFromNodeIncomingMessage(e){const t={};return Object.keys(e.headers).forEach(r=>{const i=e.headers[r];"string"==typeof i?t[r]=i:void 0===i||i.length>0&&(t[r]=i[0])}),t}getAbortableRequestFromRequest(e){let t=!1;return{abort:()=>{t=!0,e.destroy()},responsePromise:new Promise((r,i)=>{e.on("timeout",()=>{t=!0,e.destroy(),i(new Se("48"))}),e.on("error",e=>{e instanceof Error?i(e):i("string"==typeof e?new Error(e):new Se("47"))}),e.once("response",e=>{if(t)return;const n=(0,X.default)(e);n.setEncoding("utf8");let s="";n.on("data",e=>{t||(s+=e)}),n.on("end",()=>{t||(e.statusCode?r({statusCode:e.statusCode,body:s,headers:this.createHeadersFromNodeIncomingMessage(e)}):i(new Se("36")))})})})}}},en=new class{constructor(e){this.requestHandler=e}dispatchEvent(e){return xt(this,void 0,void 0,function*(){if("POST"!==e.httpVerb)return Promise.reject(new Se("44"));const t=JSON.stringify(e.params);return this.requestHandler.makeRequest(e.url,{"content-type":"application/json"},"POST",t).responsePromise})}}(new Zi),tn=e=>{const t={autoUpdate:!0,requestHandler:new Zi};return r=Object.assign(Object.assign({},t),e),{[At]:Dt(r)};var r},rn=(e=en)=>{return cr((ur(t=e),new ar(t)));var t},nn=(e={})=>{var t;const r=e.eventStore?"async"===(i=e.eventStore).operation?new Vt(i,or,JSON.parse,JSON.stringify):new Ut(i,or,JSON.parse,JSON.stringify):void 0;var i;return((e,t=nr)=>cr(((e,t=nr)=>{const{eventDispatcher:r,closingEventDispatcher:i,retryOptions:n,eventStore:s}=e;ur(r),i&&ur(i),s&&Ct(s);const o=n?{maxRetries:n.maxRetries,backoffProvider:()=>{var e,t;const r=null!==(e=null==n?void 0:n.minBackoff)&&void 0!==e?e:200,i=null!==(t=null==n?void 0:n.maxBackoff)&&void 0!==t?t:1e3;return new kt(r,i,50)}}:void 0,a=[],{defaultFlushInterval:l,defaultBatchSize:u}=e;let c=l;void 0===e.flushInterval||e.flushInterval<=0?a.push({level:H.Warn,message:"Invalid flushInterval %s, defaulting to %s",params:[e.flushInterval,l]}):c=e.flushInterval;let d=u;return void 0===e.batchSize||e.batchSize<=0?a.push({level:H.Warn,message:"Invalid batchSize %s, defaulting to %s",params:[e.batchSize,u]}):d=e.batchSize,new t({eventDispatcher:r,closingEventDispatcher:i,dispatchRepeater:new Rt(c),failedEventRepeater:e.failedEventRetryInterval?new Rt(e.failedEventRetryInterval):void 0,retryConfig:o,batchSize:d,eventStore:s,startupLogs:a})})(e,t)))({eventDispatcher:e.eventDispatcher||en,closingEventDispatcher:e.closingEventDispatcher,flushInterval:e.flushInterval,batchSize:e.batchSize,defaultFlushInterval:3e4,defaultBatchSize:10,retryOptions:{maxRetries:null!==(t=e.maxRetries)&&void 0!==t?t:2},failedEventRetryInterval:r?2e4:void 0,eventStore:r})},sn=(e={})=>{const t=new Zi({timeout:e.segmentsApiTimeout||1e4}),r=new Zi({timeout:e.eventApiTimeout||1e4});return i=Object.assign(Object.assign({},e),{segmentRequestHandler:t,eventRequestHandler:r,eventBatchSize:e.eventBatchSize||10,eventFlushInterval:e.eventFlushInterval||1e3,eventRequestGenerator:gr}),{[kr]:Mr(i)};var i},on=(e={})=>({[Rr]:void 0}),an=function(e){const t=Object.assign(Object.assign({},e),{clientEngine:e.clientEngine||re,requestHandler:new Zi});return Xi(t)},ln=function(){},un=re,cn=["node"],dn={};var hn,gn={type:"optimizely",config:{},async init({config:e,env:t}){var r,i,n,s;const o=e.settings;if(!(null==o?void 0:o.sdkKey))return!1;const a=function(e){return(null==e?void 0:e.optimizely)?e.optimizely:U}(t),l={projectConfigManager:a.createPollingProjectConfigManager({sdkKey:o.sdkKey,autoUpdate:null==(r=o.autoUpdate)||r,updateInterval:null!=(i=o.updateInterval)?i:6e4}),eventProcessor:a.createBatchEventProcessor({batchSize:null!=(n=o.batchSize)?n:10,flushInterval:null!=(s=o.flushInterval)?s:1e3})},u=a.createInstance(l);await u.onReady();const c={client:u};return{...e,settings:{...o,_state:c}}},async push(e,{config:t,rule:r,env:i,collector:n}){const s=t.settings||{},o=s._state||{},a=(null==r?void 0:r.settings)||{};if(!o.client)return;const l=s.userId;let u,c;if(void 0!==l){const t=await _(e,l,{collector:n});P(t)&&(u=t)}if(!u)return;if(void 0!==s.attributes){const t=await _(e,s.attributes,{collector:n});C(t)&&(c=t)}if(u!==o.lastUserId||!o.userContext){const e=o.client.createUserContext(u,c);if(!e)return;o.userContext=e,o.lastUserId=u}const d=o.userContext;if(d){if(void 0!==a.attributes){const t=await _(e,a.attributes,{collector:n});if(C(t))for(const[e,r]of Object.entries(t))d.setAttribute(e,r)}if(!0!==(null==r?void 0:r.silent)){const t=P(null==r?void 0:r.name)?r.name:e.name,i={};if(void 0!==a.eventTags){const t=await _(e,a.eventTags,{collector:n});C(t)&&Object.assign(i,t)}if(void 0!==a.revenue){const t=await _(e,a.revenue,{collector:n});R(t)&&(i.revenue=t)}if(void 0!==a.value){const t=await _(e,a.value,{collector:n});R(t)&&(i.value=t)}d.trackEvent(t,i)}s._state=o}},on(e,t){var r,i,n;if("consent"!==e||!t.data)return;const s=null==(r=t.config)?void 0:r.consent;if(!s||0===Object.keys(s).length)return;const o=t.data,a=Object.keys(s).every(e=>!0===o[e]),l=null==(n=null==(i=t.config)?void 0:i.settings)?void 0:n._state;!a&&(null==l?void 0:l.client)&&(l.client.close(),l.client=void 0,l.userContext=void 0)},destroy({config:e}){const t=((null==e?void 0:e.settings)||{})._state;(null==t?void 0:t.client)&&(t.client.close(),t.client=void 0,t.userContext=void 0)}},pn=gn;return hn=f,u(t({},"__esModule",{value:!0}),hn)})();
1
+ "use strict";var Destination=(()=>{var e=Object.create,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,n=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,o=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)(function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')}),a=(e,t)=>function(){return t||(0,e[i(e)[0]])((t={exports:{}}).exports,t),t.exports},l=(e,r)=>{for(var i in r)t(e,i,{get:r[i],enumerable:!0})},u=(e,n,o,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let l of i(n))s.call(e,l)||l===o||t(e,l,{get:()=>n[l],enumerable:!(a=r(n,l))||a.enumerable});return e},c=(r,i,s)=>(s=null!=r?e(n(r)):{},u(!i&&r&&r.__esModule?s:t(s,"default",{value:r,enumerable:!0}),r)),d=a({"../../../../node_modules/json-schema/lib/validate.js"(e,t){var r,i;r=e,i=function(){var e=r;e.Integer={type:"integer"};var t={String:String,Boolean:Boolean,Number:Number,Object:Object,Array:Array,Date:Date};function r(e,t){return r(e,t,{changing:!1})}e.validate=r,e.checkPropertyChange=function(e,t,i){return r(e,t,{changing:i||"property"})};var r=e._validate=function(e,r,i){i||(i={});var n=i.changing;function s(e){return e.type||t[e.name]==e&&e.name.toLowerCase()}var o=[];function a(e,t,r,l){var u;function c(e){o.push({property:r,message:e})}if(r+=r?"number"==typeof l?"["+l+"]":void 0===l?"":"."+l:l,("object"!=typeof t||t instanceof Array)&&(r||"function"!=typeof t)&&(!t||!s(t)))return"function"==typeof t?e instanceof t||c("is not an instance of the class/constructor "+t.name):t&&c("Invalid schema/property definition "+t),null;function d(e,t){if(e){if(!("string"!=typeof e||"any"==e||("null"==e?null===t:typeof t==e)||t instanceof Array&&"array"==e||t instanceof Date&&"date"==e||"integer"==e&&t%1==0))return[{property:r,message:t+" - "+typeof t+" value found, but a "+e+" is required"}];if(e instanceof Array){for(var i=[],n=0;n<e.length&&(i=d(e[n],t)).length;n++);if(i.length)return i}else if("object"==typeof e){var s=o;o=[],a(t,e,r);var l=o;return o=s,l}}return[]}if(n&&t.readonly&&c("is a readonly field, it can not be changed"),t.extends&&a(e,t.extends,r,l),void 0===e)t.required&&c("is missing and it is required");else if(o=o.concat(d(s(t),e)),t.disallow&&!d(t.disallow,e).length&&c(" disallowed value was matched"),null!==e){if(e instanceof Array){if(t.items){var h=t.items instanceof Array,g=t.items;for(l=0,u=e.length;l<u;l+=1)h&&(g=t.items[l]),i.coerce&&(e[l]=i.coerce(e[l],g)),o.concat(a(e[l],g,r,l))}t.minItems&&e.length<t.minItems&&c("There must be a minimum of "+t.minItems+" in the array"),t.maxItems&&e.length>t.maxItems&&c("There must be a maximum of "+t.maxItems+" in the array")}else(t.properties||t.additionalProperties)&&o.concat(function(e,t,r,s){if("object"==typeof t)for(var l in("object"!=typeof e||e instanceof Array)&&o.push({property:r,message:"an object is required"}),t)if(t.hasOwnProperty(l)&&"__proto__"!=l&&"constructor"!=l){var u=e.hasOwnProperty(l)?e[l]:void 0;if(void 0===u&&i.existingOnly)continue;var c=t[l];void 0===u&&c.default&&(u=e[l]=c.default),i.coerce&&l in e&&(u=e[l]=i.coerce(u,c)),a(u,c,r,l)}for(l in e){if(e.hasOwnProperty(l)&&("_"!=l.charAt(0)||"_"!=l.charAt(1))&&t&&!t[l]&&!1===s){if(i.filter){delete e[l];continue}o.push({property:r,message:"The property "+l+" is not defined in the schema and the schema does not allow additional properties"})}var d=t&&t[l]&&t[l].requires;d&&!(d in e)&&o.push({property:r,message:"the presence of the property "+l+" requires that "+d+" also be present"}),u=e[l],!s||t&&"object"==typeof t&&l in t||(i.coerce&&(u=e[l]=i.coerce(u,s)),a(u,s,r,l)),!n&&u&&u.$schema&&(o=o.concat(a(u,u.$schema,r,l)))}return o}(e,t.properties,r,t.additionalProperties));if(t.pattern&&"string"==typeof e&&!e.match(t.pattern)&&c("does not match the regex pattern "+t.pattern),t.maxLength&&"string"==typeof e&&e.length>t.maxLength&&c("may only be "+t.maxLength+" characters long"),t.minLength&&"string"==typeof e&&e.length<t.minLength&&c("must be at least "+t.minLength+" characters long"),void 0!==t.minimum&&typeof e==typeof t.minimum&&t.minimum>e&&c("must have a minimum value of "+t.minimum),void 0!==t.maximum&&typeof e==typeof t.maximum&&t.maximum<e&&c("must have a maximum value of "+t.maximum),t.enum){var p,f=t.enum;u=f.length;for(var v=0;v<u;v++)if(f[v]===e){p=1;break}p||c("does not have a value in the enumeration "+f.join(", "))}"number"==typeof t.maxDecimal&&e.toString().match(new RegExp("\\.[0-9]{"+(t.maxDecimal+1)+",}"))&&c("may only have "+t.maxDecimal+" digits of decimal places")}return null}return r&&a(e,r,"",n||""),!n&&e&&e.$schema&&a(e,e.$schema,"",""),{valid:!o.length,errors:o}};return e.mustBeValid=function(e){if(!e.valid)throw new TypeError(e.errors.map(function(e){return"for property "+e.property+": "+e.message}).join(", \n"))},e},"function"==typeof define&&define.amd?define([],function(){return i()}):"object"==typeof t&&t.exports?t.exports=i():r.jsonSchema=i()}}),h=a({"../../../../node_modules/murmurhash/murmurhash.js"(e,t){!function(){const e=this,r=e=>(new TextEncoder).encode(e);function i(e,t){let i,n,s,o,a,l,u,c;for("string"==typeof e&&(e=r(e)),i=3&e.length,n=e.length-i,s=t,a=3432918353,l=461845907,c=0;c<n;)u=255&e[c]|(255&e[++c])<<8|(255&e[++c])<<16|(255&e[++c])<<24,++c,u=(65535&u)*a+(((u>>>16)*a&65535)<<16)&4294967295,u=u<<15|u>>>17,u=(65535&u)*l+(((u>>>16)*l&65535)<<16)&4294967295,s^=u,s=s<<13|s>>>19,o=5*(65535&s)+((5*(s>>>16)&65535)<<16)&4294967295,s=27492+(65535&o)+(((o>>>16)+58964&65535)<<16);switch(u=0,i){case 3:u^=(255&e[c+2])<<16;case 2:u^=(255&e[c+1])<<8;case 1:u^=255&e[c],u=(65535&u)*a+(((u>>>16)*a&65535)<<16)&4294967295,u=u<<15|u>>>17,u=(65535&u)*l+(((u>>>16)*l&65535)<<16)&4294967295,s^=u}return s^=e.length,s^=s>>>16,s=2246822507*(65535&s)+((2246822507*(s>>>16)&65535)<<16)&4294967295,s^=s>>>13,s=3266489909*(65535&s)+((3266489909*(s>>>16)&65535)<<16)&4294967295,s^=s>>>16,s>>>0}const n=i;if(n.v2=function(e,t){"string"==typeof e&&(e=r(e));let i,n=e.length,s=t^n,o=0;for(;n>=4;)i=255&e[o]|(255&e[++o])<<8|(255&e[++o])<<16|(255&e[++o])<<24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),i^=i>>>24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),s=1540483477*(65535&s)+((1540483477*(s>>>16)&65535)<<16)^i,n-=4,++o;switch(n){case 3:s^=(255&e[o+2])<<16;case 2:s^=(255&e[o+1])<<8;case 1:s^=255&e[o],s=1540483477*(65535&s)+((1540483477*(s>>>16)&65535)<<16)}return s^=s>>>13,s=1540483477*(65535&s)+((1540483477*(s>>>16)&65535)<<16),s^=s>>>15,s>>>0},n.v3=i,void 0!==t)t.exports=n;else{const t=e.murmur;n.noConflict=function(){return e.murmur=t,n},e.murmur=n}}()}}),g=a({"../../../../node_modules/mimic-response/index.js"(e,t){var r=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];t.exports=(e,t)=>{if(t._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");const i=new Set(Object.keys(e).concat(r)),n={};for(const r of i)r in t||(n[r]={get(){const t=e[r];return"function"==typeof t?t.bind(e):t},set(t){e[r]=t},enumerable:!0,configurable:!1});return Object.defineProperties(t,n),e.once("aborted",()=>{t.destroy(),t.emit("aborted")}),e.once("close",()=>{e.complete&&t.readable?t.once("end",()=>{t.emit("close")}):t.emit("close")}),t}}}),p=a({"../../../../node_modules/decompress-response/index.js"(e,t){var{Transform:r,PassThrough:i}=o("stream"),n=o("zlib"),s=g();t.exports=e=>{const t=(e.headers["content-encoding"]||"").toLowerCase();if(delete e.headers["content-encoding"],!["gzip","deflate","br"].includes(t))return e;const o="br"===t;if(o&&"function"!=typeof n.createBrotliDecompress)return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let a=!0;const l=new r({transform(e,t,r){a=!1,r(null,e)},flush(e){e()}}),u=new i({autoDestroy:!1,destroy(t,r){e.destroy(),r(t)}}),c=o?n.createBrotliDecompress():n.createUnzip();return c.once("error",t=>{!a||e.readable?u.destroy(t):u.end()}),s(e,u),e.pipe(l).pipe(c).pipe(u),u}}}),f={};l(f,{DestinationOptimizely:()=>dn,default:()=>pn,destinationOptimizely:()=>gn});var v=Object.defineProperty,m=(e,t)=>{for(var r in t)v(e,r,{get:t[r],enumerable:!0})};function y(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}m({},{stepId:()=>y});function b(e,t){const r=e.destinations[t];if(!r)throw new Error(`Destination not found: ${t}`);return r}m({},{getDestination:()=>b});m({},{Level:()=>I});var E,I=((E=I||{})[E.ERROR=0]="ERROR",E[E.WARN=1]="WARN",E[E.INFO=2]="INFO",E[E.DEBUG=3]="DEBUG",E);function S(e,t){const r=e.transformers[t];if(!r)throw new Error(`Transformer not found: ${t}`);return r}m({},{getTransformer:()=>S});function x(e,t){const r=e.sources[t];if(!r)throw new Error(`Source not found: ${t}`);return r}m({},{getSource:()=>x});function w(e,t){const r=e.stores[t];if(!r)throw new Error(`Store not found: ${t}`);return r}async function O(e,t){return await e.get(t)}function k(e){return Array.isArray(e)}function M(e){return void 0!==e}function R(e){return"number"==typeof e&&!Number.isNaN(e)}function C(e){return"object"==typeof e&&null!==e&&!k(e)&&"[object Object]"===Object.prototype.toString.call(e)}function P(e){return"string"==typeof e}function A(e,t="",r){const i=t.split(".");let n=e;for(let e=0;e<i.length;e++){const t=i[e];if("*"===t&&k(n)){const t=i.slice(e+1).join("."),s=[];for(const e of n){const i=A(e,t,r);s.push(i)}return s}if(n=C(n)||k(n)?n[t]:void 0,void 0===n)break}return M(n)?n:r}function j(e){return function(e){return"boolean"==typeof e}(e)||P(e)||R(e)||!M(e)||k(e)&&e.every(j)||C(e)&&Object.values(e).every(j)}function D(e){return j(e)?e:void 0}function T(e,t,r){return async function(...i){try{return await e(...i)}catch(e){if(!t)return;return await t(e)}finally{await(null==r?void 0:r())}}}m({},{getStore:()=>w,getStoreValue:()=>O});var F=class e extends Error{constructor(t,r){super(t,r),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function _(e,t={},r={}){var i,n;if(!M(e))return;const s=C(e)&&e.consent||r.consent||(null==(i=r.collector)?void 0:i.consent),o=null!=(n=r.event)?n:C(e)?e:{};if(!r.collector)throw new Error("getMappingValue: context.collector is required");const a={event:o,mapping:t,collector:r.collector,logger:r.collector.logger,consent:s},l=k(t)?t:[t];for(const t of l){const i=await T(N,e=>{if(e instanceof F)throw e;r.collector&&r.collector.status.failed++,a.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...a,mapping:t});if(M(i))return i}}async function N(e,t,r){return(k(t)?t:[t]).reduce(async(t,i)=>{const n=await t;if(n)return n;const s=P(i)?{key:i}:i;if(!Object.keys(s).length)return;const{condition:o,consent:a,fn:l,key:u,loop:c,map:d,set:h,validate:g,value:p}=s,f={...r,mapping:i};if(o&&!await T(o,e=>{if(e instanceof F)throw e;return f.logger.error("mapping condition failed",{event:f.event,error:e}),!1})(e,f))return;if(a&&!function(e,t={},r={}){const i={...t,...r},n={};let s=!e||0===Object.keys(e).length;return Object.keys(i).forEach(t=>{i[t]&&(n[t]=!0,e&&e[t]&&(s=!0))}),!!s&&n}(a,f.consent))return p;let v=M(p)?p:e;if(c){const[t,r]=c,i="this"===t?[e]:await _(e,t,f);v=k(i)?(await Promise.all(i.map(e=>_(e,r,f)))).filter(M):void 0}else d?v=await Object.entries(d).reduce(async(t,[r,i])=>{const n=await t,s=await _(e,i,f);return M(s)&&(n[r]=s),n},Promise.resolve({})):h?v=await Promise.all(h.map(t=>N(e,t,f))):u?v=A(e,u,p):l&&(v=await T(l,e=>{if(e instanceof F)throw e;f.logger.error("mapping fn failed",{event:f.event,error:e})})(e,f));g&&!await T(g,e=>{if(e instanceof F)throw e;return f.logger.error("mapping validate failed",{event:f.event,error:e}),!1})(v,f)&&(v=void 0);const m=D(v);return M(m)?m:D(p)},Promise.resolve(void 0))}var U={};l(U,{DEBUG:()=>ze,DECISION_NOTIFICATION_TYPES:()=>Yt,DECISION_SOURCES:()=>ne,ERROR:()=>Je,INFO:()=>He,LogLevel:()=>H,NOTIFICATION_TYPES:()=>Xt,OptimizelyDecideOption:()=>Qt,WARN:()=>$e,__platforms:()=>cn,clientEngine:()=>un,createBatchEventProcessor:()=>nn,createErrorNotifier:()=>Xe,createForwardingEventProcessor:()=>rn,createInstance:()=>an,createLogger:()=>We,createOdpManager:()=>sn,createPollingProjectConfigManager:()=>tn,createStaticProjectConfigManager:()=>jt,createVuidManager:()=>on,eventDispatcher:()=>en,getSendBeaconEventDispatcher:()=>ln});var V=[];for(let e=0;e<256;++e)V.push((e+256).toString(16).slice(1));var K=c(o("crypto")),L=new Uint8Array(256),q=L.length;function B(){return q>L.length-16&&(K.default.randomFillSync(L),q=0),L.slice(q,q+=16)}var z={randomUUID:c(o("crypto")).default.randomUUID};var H,$=function(e,t,r){if(z.randomUUID&&!t&&!e)return z.randomUUID();const i=(e=e||{}).random||(e.rng||B)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return(V[e[t+0]]+V[e[t+1]]+V[e[t+2]]+V[e[t+3]]+"-"+V[e[t+4]]+V[e[t+5]]+"-"+V[e[t+6]]+V[e[t+7]]+"-"+V[e[t+8]]+V[e[t+9]]+"-"+V[e[t+10]]+V[e[t+11]]+V[e[t+12]]+V[e[t+13]]+V[e[t+14]]+V[e[t+15]]).toLowerCase()}(i)},J=c(d(),1),G=c(h(),1),W=c(o("http"),1),Q=c(o("https"),1),Y=c(o("url"),1),X=c(p(),1),Z="$opt_bot_filtering",ee="$opt_bucketing_id",te="javascript-sdk",re="node-sdk",ie="6.4.0",ne={FEATURE_TEST:"feature-test",ROLLOUT:"rollout",EXPERIMENT:"experiment",HOLDOUT:"holdout"},se="experiment",oe="boolean",ae="double",le="integer",ue="string",ce="json",de="Optimizely SDK not configured properly yet.",he=Math.pow(2,53);function ge(e){return"number"==typeof e&&Math.abs(e)<=he}function pe(e,t){if(!e)return{};const r={};return fe(e,t,r),r}function fe(e,t,r){e&&e.forEach(e=>{r[e[t]]=e})}function ve(e){return Object.keys(e).map(t=>e[t])}function me(e){return Object.keys(e).map(t=>[t,e[t]])}function ye(e,t){let r;for(const i of e)if(t(i)){r=i;break}return r}function be(e,...t){let r=0;return e.replace(/%s/g,function(){const e=t[r++],i=typeof e;return"function"===i?e():"string"===i?e:String(e)})}function Ee(e,t){return e.length===t.length&&e.every((e,r)=>e===t[r])}var Ie={checkArrayEquality:Ee,currentTimestamp:function(){return Math.round((new Date).getTime())},isSafeInteger:ge,keyBy:pe,uuid:function(){return $()},isNumber:function(e){return"number"==typeof e},getTimestamp:function(){return(new Date).getTime()},groupBy:function(e,t){const r={};return e.forEach(e=>{const i=t(e);r[i]=r[i]||[],r[i].push(e)}),ve(r)},objectValues:ve,objectEntries:me,find:ye,sprintf:be},Se=class e extends Error{constructor(t,...r){super(),this.resolved=!1,this.name="OptimizelyError",this.baseMessage=t,this.params=r,Object.setPrototypeOf(this,e.prototype)}setMessage(e){this.resolved||(this.message=be(e.resolve(this.baseMessage),...this.params),this.resolved=!0)}};!function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(H||(H={}));var xe={[H.Debug]:"DEBUG",[H.Info]:"INFO",[H.Warn]:"WARN",[H.Error]:"ERROR"},we={[H.Debug]:"debug",[H.Info]:"info",[H.Warn]:"warn",[H.Error]:"error"},Oe=class{constructor(e){this.prefix=e||"[OPTIMIZELY]"}log(e,t){const r=`${this.prefix} - ${xe[e]} ${this.getTime()} ${t}`;this.consoleLog(e,r)}getTime(){return(new Date).toISOString()}consoleLog(e,t){(console[we[e]]||console.log).call(console,t)}},ke=class e{constructor(e){this.prefix="",this.logHandler=e.logHandler,this.infoResolver=e.infoMsgResolver,this.errorResolver=e.errorMsgResolver,this.level=e.level,e.name&&this.setName(e.name)}child(t){return new e({logHandler:this.logHandler,infoMsgResolver:this.infoResolver,errorMsgResolver:this.errorResolver,level:this.level,name:t})}setName(e){this.name=e,this.prefix=`${e}: `}info(e,...t){this.log(H.Info,e,t)}debug(e,...t){this.log(H.Debug,e,t)}warn(e,...t){this.log(H.Warn,e,t)}error(e,...t){this.log(H.Error,e,t)}handleLog(e,t,r){const i=r.length>0?`${this.prefix}${be(t,...r)}`:`${this.prefix}${t}`;this.logHandler.log(e,i)}log(e,t,r){if(e<this.level)return;if(t instanceof Error)return t instanceof Se&&t.setMessage(this.errorResolver),void this.handleLog(e,t.message,[]);let i=this.errorResolver;if(e<H.Warn){if(!this.infoResolver)return;i=this.infoResolver}const n=i.resolve(t);this.handleLog(e,n,r)}},Me="30",Re=["Adding Authorization header with Bearer Token",'Audience "%s" evaluated to %s.',"CMAB cache attributes mismatch for user %s and rule %s, fetching new decision.","Cache hit for user %s and rule %s.","Cache miss for user %s and rule %s.",'Starting to evaluate audience "%s" with conditions: %s.','Failed to parse revenue value "%s" from event tags.','Failed to parse event value "%s" from event tags.',"Feature %s is enabled for user %s.","Feature %s is not enabled for user %s.",'Feature "%s" is not enabled for user %s. Returning the default variable value "%s".',"Ignoring CMAB cache for user %s and rule %s.","Invalidating CMAB cache for user %s and rule %s.","Invalid client engine passed: %s. Defaulting to node-sdk.","Provided decide options is not an array. Using default decide options.","Provided default decide options is not an array.","Experiment key %s is not in datafile. It is either invalid, paused, or archived.","Making datafile request to url %s with headers: %s",'Audience condition %s evaluated to UNKNOWN because no value was passed for user attribute "%s".',"Not activating user %s for experiment %s.",'Parsed event value "%s" from event tags.','Parsed revenue value "%s" from event tags.',"Resetting CMAB cache for user %s and rule %s.","Response status code: %s","Saved last modified header value from response: %s",'Saved user profile for user "%s".',"User %s was previously bucketed into variation with ID %s for experiment %s, but no matching variation was found.",'Experiment %s is not in "Running" state. Not activating user.',"Skipping JSON schema validation.","Tracking event %s for user %s.",'Audience condition %s evaluated to UNKNOWN because a null value was passed for user attribute "%s".',"Updated Optimizely config to revision %s (project id %s)","User %s is not in the forced variation map.","No experiment %s mapped to user %s in the forced variation map.","Set variation %s for experiment %s and user %s in the forced variation map.",'User "%s" is not in any variation or rollout rule. Returning default value for variable "%s" of feature flag "%s".','Got variable value "%s" for variable "%s" of feature flag "%s"','BucketingId is valid: "%s"',"Datafile is valid.","Valid user profile service provided.",'Variable "%s" is not used in variation "%s". Returning default value.',"Variation mapped to experiment %s has been removed for user %s."],Ce="12",Pe="27",Ae="35",je="53",De="57",Te="59",Fe="61",_e=["BucketingID attribute is not a string. Defaulted to userId","CMAB decision fetch failed with status: %s","Error evaluating audience condition of type %s: %s","Datafile fetch request failed with status: %s","Error fetching datafile: %s","Event action invalid.","Event data invalid.","Event key %s is not in datafile.","Event store is full. Not saving event with id %d.","Experiment key %s is not in datafile.","Failed to dispatch events, status: %s","failed to send odp events","Feature key %s is not in datafile.","Provided attributes are in an invalid format.","Unable to generate hash for bucketing ID %s: %s","Invalid CMAB fetch response","Provided Optimizely config is in an invalid format.","Datafile is invalid - property %s: %s","Datafile is invalid because it is malformed.","This version of the JavaScript SDK does not support the given datafile version: %s","Provided event tags are in an invalid format.","Experiment ID %s is not in datafile.","Experiment key %s is not in datafile. It is either invalid, paused, or archived.","Group ID %s is not in datafile.","Provided %s is in an invalid format.","JSON object is not valid.","Provided user ID is in an invalid format.","Provided user profile service instance is in an invalid format: %s.","Provided variation key is in an invalid format.","Integration key missing from datafile. All integrations should include a key.","Notification listener for (%s) threw exception: %s","Not tracking user %s.","No datafile specified. Cannot start optimizely.","No event processor is provided","No JSON object to validate against schema.","No project config available. Failing %s.","No status code in response","No variation key %s defined in datafile for experiment %s.","ODP config is not available.","ODP events should have at least one key-value pair in identifiers.","ODP event send failed.","ODP event manager stopped before it could start","ODP Manager is missing. %s failed.","ODP is not integrated","Only POST requests are supported",'Audience condition %s evaluated to UNKNOWN because the number value for user attribute "%s" is not in the range [-2^53, +2^53].',"Promise value is not allowed in sync operation","Request error","Request timeout","Retry cancelled","sendBeacon failed","%s not running",'unable to bind optimizely.close() to page unload event: "%s"',"Unable to cast value %s to type %s, returning null.","Unable to get VUID - VuidManager is not available","Unable to parse & skipped header item","Provided attribute: %s has an undefined value.","Audience condition %s evaluated to UNKNOWN because the condition value is not supported.","Attribute %s unexpectedly has reserved prefix %s; using attribute ID instead of reserved attribute name.",'Audience condition %s evaluated to UNKNOWN because a value of type "%s" was passed for user attribute "%s".',"Audience condition %s has an unknown condition type. You may need to upgrade to a newer release of the Optimizely SDK.","Audience condition %s uses an unknown match type. You may need to upgrade to a newer release of the Optimizely SDK.","Unrecognized attribute %s provided. Pruning before sending event to Optimizely.","Unrecognized decide option %s provided.","Unsupported protocol: %s","User %s is not in the forced variation map. Cannot remove their forced variation.",'Error while looking up user profile for user ID "%s": %s.','Error while saving user profile for user ID "%s": %s.','Variable with key "%s" associated with feature with key "%s" is not in datafile.','Requested variable type "%s", but variable is of type "%s". Use correct API to retrieve value. Returning None.',"Variation ID %s is not in the datafile."],Ne={resolve(e){const t=parseInt(e);return Re[t]||e}},Ue={resolve(e){const t=parseInt(e);return _e[t]||e}},Ve={level:H.Debug,infoResolver:Ne,errorResolver:Ue},Ke={level:H.Info,infoResolver:Ne,errorResolver:Ue},Le={level:H.Warn,errorResolver:Ue},qe={level:H.Error,errorResolver:Ue},Be=Symbol(),ze={[Be]:Ve},He={[Be]:Ke},$e={[Be]:Le},Je={[Be]:qe},Ge=Symbol(),We=e=>{const{level:t,infoResolver:r,errorResolver:i}=(e=>{if(!e||"object"!=typeof e||!e[Be])throw new Error("Invalid level preset");return e[Be]})(e.level);return e.logHandler&&(e=>{if("object"!=typeof e||"function"!=typeof e.log)throw new Error("Invalid log handler")})(e.logHandler),{[Ge]:new ke({name:"Optimizely",level:t,infoMsgResolver:r,errorMsgResolver:i,logHandler:e.logHandler||new Oe})}},Qe=class e{constructor(e,t,r){this.errorHandler=e,this.messageResolver=t,this.name=r||""}notify(e){e instanceof Se&&e.setMessage(this.messageResolver),this.errorHandler.handleError(e)}child(t){return new e(this.errorHandler,this.messageResolver,t)}},Ye=Symbol(),Xe=e=>((e=>{if(!e||"object"!=typeof e||"function"!=typeof e.handleError)throw new Error("Invalid error handler")})(e),{[Ye]:new Qe(e,Ue)}),Ze=["and","or","not"];function et(e,t){if(Array.isArray(e)){let r=e[0],i=e.slice(1);switch("string"==typeof r&&-1===Ze.indexOf(r)&&(r="or",i=e),r){case"and":return function(e,t){let r=!1;if(Array.isArray(e)){for(let i=0;i<e.length;i++){const n=et(e[i],t);if(!1===n)return!1;null===n&&(r=!0)}return!r||null}return null}(i,t);case"not":return function(e,t){if(Array.isArray(e)&&e.length>0){const r=et(e[0],t);return null===r?null:!r}return null}(i,t);default:return function(e,t){let r=!1;if(Array.isArray(e)){for(let i=0;i<e.length;i++){const n=et(e[i],t);if(!0===n)return!0;null===n&&(r=!0)}return!!r&&null}return null}(i,t)}}return t(e)}var tt=class e{constructor(t,r,i){var n,s;this.sdkKey=null!==(n=t.sdkKey)&&void 0!==n?n:"",this.environmentKey=null!==(s=t.environmentKey)&&void 0!==s?s:"",this.attributes=t.attributes,this.audiences=e.getAudiences(t),this.events=t.events,this.revision=t.revision;const o=(t.featureFlags||[]).reduce((e,t)=>(e[t.id]=t.variables,e),{}),a=e.getVariableIdMap(t),{experimentsMapById:l,experimentsMapByKey:u}=e.getExperimentsMap(t,o,a,i);this.experimentsMap=u,this.featuresMap=e.getFeaturesMap(t,o,l,a),this.datafile=r}getDatafile(){return this.datafile}static getAudiences(e){const t=[],r=[];return(e.typedAudiences||[]).forEach(e=>{t.push({id:e.id,conditions:JSON.stringify(e.conditions),name:e.name}),r.push(e.id)}),(e.audiences||[]).forEach(e=>{-1===r.indexOf(e.id)&&"$opt_dummy_audience"!=e.id&&t.push({id:e.id,conditions:JSON.stringify(e.conditions),name:e.name})}),t}static getSerializedAudiences(t,r){let i="";if(t){let n="";t.forEach(t=>{let s="";if(t instanceof Array)s=e.getSerializedAudiences(t,r),s=`(${s})`;else if(Ze.indexOf(t)>-1)n=t.toUpperCase();else{const e=r[t]?r[t].name:t;i||"NOT"===n?(n=""===n?"OR":n,i=""===i?`${n} "${r[t].name}"`:i.concat(` ${n} "${e}"`)):i=`"${e}"`}""!==s&&(""!==i||"NOT"===n?(n=""===n?"OR":n,i=""===i?`${n} ${s}`:i.concat(` ${n} ${s}`)):i=i.concat(s))})}return i}static getExperimentAudiences(t,r){return t.audienceConditions?e.getSerializedAudiences(t.audienceConditions,r.audiencesById):""}static mergeFeatureVariables(e,t,r,i,n){const s=(e[r]||[]).reduce((e,t)=>(e[t.key]={id:t.id,key:t.key,type:t.type,value:t.defaultValue},e),{});return(i||[]).forEach(e=>{const r=t[e.id],i={id:e.id,key:r.key,type:r.type,value:n?e.value:r.defaultValue};s[r.key]=i}),s}static getVariationsMap(t,r,i,n){let s={};return s=t.reduce((t,s)=>{const o=e.mergeFeatureVariables(r,i,n,s.variables,s.featureEnabled);return t[s.key]={id:s.id,key:s.key,featureEnabled:s.featureEnabled,variablesMap:o},t},{}),s}static getVariableIdMap(e){let t={};return t=(e.featureFlags||[]).reduce((e,t)=>(t.variables.forEach(t=>{e[t.id]=t}),e),{}),t}static getDeliveryRules(t,r,i,n,s){return n.map(n=>({id:n.id,key:n.key,audiences:e.getExperimentAudiences(n,t),variationsMap:e.getVariationsMap(n.variations,r,s,i)}))}static getRolloutExperimentIds(e){const t=[];return(e||[]).forEach(e=>{e.experiments.forEach(e=>{t.push(e.id)})}),t}static getExperimentsMap(t,r,i,n){const s=this.getRolloutExperimentIds(t.rollouts),o={},a={};return(t.experiments||[]).forEach(l=>{if(-1!==s.indexOf(l.id))return;const u=t.experimentFeatureMap[l.id];let c="";u&&u.length>0&&(c=u[0]);const d=e.getVariationsMap(l.variations,r,i,c.toString()),h={id:l.id,key:l.key,audiences:e.getExperimentAudiences(l,t),variationsMap:d};o[l.id]=h,a[l.key]&&n&&n.warn(`Duplicate experiment keys found in datafile: ${l.key}`),a[l.key]=h}),{experimentsMapById:o,experimentsMapByKey:a}}static getExperimentsKeyMap(e){const t={};for(const r in e){const i=e[r];t[i.key]=i}return t}static getFeaturesMap(t,r,i,n){const s={};return t.featureFlags.forEach(o=>{const a={},l=[];o.experimentIds.forEach(e=>{const t=i[e];t&&(a[t.key]=t),l.push(i[e])});const u=(o.variables||[]).reduce((e,t)=>(e[t.key]={id:t.id,key:t.key,type:t.type,value:t.defaultValue},e),{});let c=[];const d=t.rolloutIdMap[o.rolloutId];d&&(c=e.getDeliveryRules(t,r,o.id,d.experiments,n)),s[o.key]={id:o.id,key:o.key,experimentRules:l,deliveryRules:c,experimentsMap:a,variablesMap:u}}),s}},rt=["2","3","4"],it=class{constructor(e,t,r,i){this.apiKey=e,this.apiHost=t,this.pixelUrl=r,this.segmentsToCheck=i}equals(e){return this.apiHost===e.apiHost&&this.apiKey===e.apiKey&&this.pixelUrl===e.pixelUrl&&Ee(this.segmentsToCheck,e.segmentsToCheck)}},nt="Running",st="$opt_",ot=function(e,t){if(!t.rolloutId)return null;const r=e.rolloutIdMap[t.rolloutId];if(!r||!r.experiments||0===r.experiments.length)return null;const i=r.experiments[r.experiments.length-1];return i.variations&&0!==i.variations.length?i.variations[0]:null},at=e=>{e.holdouts=e.holdouts||[],e.holdoutIdMap=pe(e.holdouts,"id"),e.globalHoldouts=[],e.includedHoldouts={},e.excludedHoldouts={},e.flagHoldoutsMap={};const t=pe(e.featureFlags,"id");e.holdouts.forEach(r=>{r.includedFlags||(r.includedFlags=[]),r.excludedFlags||(r.excludedFlags=[]),r.variationKeyMap=pe(r.variations,"key"),fe(r.variations,"id",e.variationIdMap),0===r.includedFlags.length?(e.globalHoldouts.push(r),r.excludedFlags.forEach(i=>{const n=t[i];if(n){const t=n.key;e.excludedHoldouts[t]||(e.excludedHoldouts[t]=[]),e.excludedHoldouts[t].push(r)}})):r.includedFlags.forEach(i=>{const n=t[i];if(n){const t=n.key;e.includedHoldouts[t]||(e.includedHoldouts[t]=[]),e.includedHoldouts[t].push(r)}})})},lt=function(e){return e.conditions?ut(e.conditions):[]},ut=e=>{const t=[];return["and","or","not"].includes(e)?[]:(Array.isArray(e)?e.forEach(e=>t.push(...ut(e))):"qualified"===e.match&&t.push(e.value),t)},ct=function(e,t){const r=e.experimentKeyMap[t];if(!r)throw new Se("22",t);return r.status},dt=function(e,t){if(e.experimentKeyMap.hasOwnProperty(t)){const r=e.experimentKeyMap[t];if(r)return r}throw new Se("9",t)},ht=function(e,t,r){if(!e)return null;return ye(e.flagVariationsMap[t],e=>e.key===r)||null},gt=function(e,t,r){if(e.featureKeyMap.hasOwnProperty(t)){const r=e.featureKeyMap[t];if(r)return r}return null==r||r.error(Ce,t),null},pt=function(e){return!!e.sendFlagDecisions},ft=()=>{};function vt(){let e=ft,t=ft;const r=new Promise((r,i)=>{e=r,t=i});return{promise:r,resolve:e,reject:t,then:r.then.bind(r)}}var mt,yt="%s failed to start, reason: %s",bt="%s stopped before running";!function(e){e[e.New=0]="New",e[e.Starting=1]="Starting",e[e.Running=2]="Running",e[e.Stopping=3]="Stopping",e[e.Terminated=4]="Terminated",e[e.Failed=5]="Failed"}(mt||(mt={}));var Et=class{constructor(e=[]){this.disposable=!1,this.state=mt.New,this.startPromise=vt(),this.stopPromise=vt(),this.startupLogs=e,this.startPromise.promise.catch(()=>{}),this.stopPromise.promise.catch(()=>{})}makeDisposable(){this.disposable=!0}setLogger(e){this.logger=e}printStartupLogs(){if(this.logger)for(const{level:e,message:t,params:r}of this.startupLogs){const i=we[e];this.logger[i].call(this.logger,t,...r)}}onRunning(){return this.startPromise.promise}onTerminated(){return this.stopPromise.promise}getState(){return this.state}isStarting(){return this.state===mt.Starting}isRunning(){return this.state===mt.Running}isNew(){return this.state===mt.New}isDone(){return[mt.Stopping,mt.Terminated,mt.Failed].includes(this.state)}start(){this.printStartupLogs()}},It=class{constructor(){this.id=0,this.listeners={}}on(e,t){var r;this.listeners[e]||(this.listeners[e]=new Map);const i=this.id++;return null===(r=this.listeners[e])||void 0===r||r.set(i,t),()=>{var t;null===(t=this.listeners[e])||void 0===t||t.delete(i)}}emit(e,t){const r=this.listeners[e];r&&r.forEach(e=>{e(t)})}removeListeners(e){var t;null===(t=this.listeners[e])||void 0===t||t.clear()}removeAllListeners(){this.listeners={}}},St=class extends Et{constructor(e){super(),this.eventEmitter=new It,this.jsonSchemaValidator=e.jsonSchemaValidator,this.datafile=e.datafile,this.datafileManager=e.datafileManager,e.logger&&this.setLogger(e.logger)}setLogger(e){var t;this.logger=e,this.logger.setName("ProjectConfigManager"),null===(t=this.datafileManager)||void 0===t||t.setLogger(e.child())}start(){var e,t,r;this.isNew()&&(this.state=mt.Starting,this.datafile||this.datafileManager?(this.datafile&&this.handleNewDatafile(this.datafile,!0),null===(e=this.datafileManager)||void 0===e||e.start(),null===(t=this.datafileManager)||void 0===t||t.onUpdate(this.handleNewDatafile.bind(this)),null===(r=this.datafileManager)||void 0===r||r.onRunning().catch(e=>{this.handleDatafileManagerError(e)})):this.handleInitError(new Error("sdkKey or datafile must be provided")))}makeDisposable(){var e;super.makeDisposable(),null===(e=this.datafileManager)||void 0===e||e.makeDisposable()}handleInitError(e){var t,r;null===(t=this.logger)||void 0===t||t.error(e),this.state=mt.Failed,null===(r=this.datafileManager)||void 0===r||r.stop(),this.startPromise.reject(e),this.stopPromise.reject(e)}handleDatafileManagerError(e){var t;null===(t=this.logger)||void 0===t||t.error(yt,"DatafileManager",e.message),this.isStarting()&&this.handleInitError(new Error(be(yt,"DatafileManager",e.message)))}handleNewDatafile(e,t=!1){var r,i;if(!this.isDone())try{const t=function(e){var t,r;const i=function(e){if(!e)throw new Se("32");if("string"==typeof e)try{e=JSON.parse(e)}catch(e){throw new Se("18")}if("object"!=typeof e||Array.isArray(e)||null===e)throw new Se("18");if(-1===rt.indexOf(e.version))throw new Se("19",e.version);return e}(e.datafile);e.jsonSchemaValidator?(e.jsonSchemaValidator(i),null===(t=e.logger)||void 0===t||t.info("38")):null===(r=e.logger)||void 0===r||r.info("28");const n=[i];return"string"==typeof e.datafile&&n.push(e.datafile),function(e,t=null){const r=function(e){var t,r;const i=Object.assign({},e);return i.audiences=(e.audiences||[]).map(e=>Object.assign({},e)),i.experiments=(e.experiments||[]).map(e=>Object.assign({},e)),i.featureFlags=(e.featureFlags||[]).map(e=>Object.assign({},e)),i.groups=(e.groups||[]).map(e=>{const t=Object.assign({},e);return t.experiments=(e.experiments||[]).map(e=>Object.assign({},e)),t}),i.rollouts=(e.rollouts||[]).map(e=>{const t=Object.assign({},e);return t.experiments=(e.experiments||[]).map(e=>Object.assign({},e)),t}),i.environmentKey=null!==(t=e.environmentKey)&&void 0!==t?t:"",i.sdkKey=null!==(r=e.sdkKey)&&void 0!==r?r:"",i}(e);let i;r.region||(r.region="US"),r.__datafileStr=null===t?JSON.stringify(e):t,(r.audiences||[]).forEach(e=>{e.conditions=JSON.parse(e.conditions)}),r.audiencesById={},fe(r.audiences,"id",r.audiencesById),fe(r.typedAudiences,"id",r.audiencesById),r.attributes=r.attributes||[],r.attributeKeyMap={},r.attributeIdMap={},r.attributes.forEach(e=>{r.attributeKeyMap[e.key]=e,r.attributeIdMap[e.id]=e}),r.eventKeyMap=pe(r.events,"key"),r.groupIdMap=pe(r.groups,"id"),Object.keys(r.groupIdMap||{}).forEach(e=>{i=r.groupIdMap[e].experiments,(i||[]).forEach(t=>{t.groupId=e,r.experiments.push(t)})}),r.rolloutIdMap=pe(r.rollouts||[],"id"),ve(r.rolloutIdMap||{}).forEach(e=>{(e.experiments||[]).forEach(e=>{e.isRollout=!0,r.experiments.push(e),e.variationKeyMap=pe(e.variations,"key")})});const n=new Set;Object.keys(r.audiencesById).map(e=>lt(r.audiencesById[e])).forEach(e=>{e.forEach(e=>{n.add(e)})});const s=Array.from(n);let o=!1,a="",l="",u="";return r.integrations&&(r.integrationKeyMap=pe(r.integrations,"key"),r.integrations.forEach(e=>{if(!("key"in e))throw new Se("29");"odp"===e.key&&(o=!0,l=l||e.publicKey||"",a=a||e.host||"",u=u||e.pixelUrl||"")})),r.odpIntegrationConfig=o?{integrated:!0,odpConfig:new it(l,a,u,s)}:{integrated:!1},r.experimentKeyMap=pe(r.experiments,"key"),r.experimentIdMap=pe(r.experiments,"id"),r.variationIdMap={},r.variationVariableUsageMap={},(r.experiments||[]).forEach(e=>{e.variationKeyMap=pe(e.variations,"key"),fe(e.variations,"id",r.variationIdMap),ve(e.variationKeyMap||{}).forEach(e=>{e.variables&&(r.variationVariableUsageMap[e.id]=pe(e.variables,"id"))})}),r.experimentFeatureMap={},r.featureKeyMap=pe(r.featureFlags||[],"key"),ve(r.featureKeyMap||{}).forEach(e=>{e.variables.forEach(e=>{e.type===ue&&e.subType===ce&&(e.type=ce,delete e.subType)}),e.variableKeyMap=pe(e.variables,"key"),(e.experimentIds||[]).forEach(t=>{r.experimentFeatureMap[t]?r.experimentFeatureMap[t].push(e.id):r.experimentFeatureMap[t]=[e.id]})}),(r.featureFlags||[]).forEach(e=>{const t=ot(r,e);t&&(e.experimentIds||[]).forEach(e=>{const i=r.experimentIdMap[e];i&&"fr"===i.type&&(i.variations.push(t),i.trafficAllocation.push({entityId:t.id,endOfRange:1e4}),i.variationKeyMap[t.key]=t)})}),r.flagRulesMap={},(r.featureFlags||[]).forEach(e=>{const t=[];e.experimentIds.forEach(e=>{const i=r.experimentIdMap[e];i&&t.push(i)});const i=r.rolloutIdMap[e.rolloutId];i&&t.push(...i.experiments),r.flagRulesMap[e.key]=t}),r.flagVariationsMap={},me(r.flagRulesMap||{}).forEach(([e,t])=>{const i=[];t.forEach(e=>{e.variations.forEach(e=>{ye(i,t=>t.id===e.id)||i.push(e)})}),r.flagVariationsMap[e]=i}),at(r),r}(...n)}({datafile:e,jsonSchemaValidator:this.jsonSchemaValidator,logger:this.logger});this.isStarting()&&(this.state=mt.Running,this.startPromise.resolve()),(null===(r=this.projectConfig)||void 0===r?void 0:r.revision)!==t.revision&&(this.projectConfig=t,this.optimizelyConfig=void 0,this.eventEmitter.emit("update",t))}catch(e){null===(i=this.logger)||void 0===i||i.error(e),(this.isStarting()&&!this.datafileManager||this.isStarting()&&!t)&&this.handleInitError(new Error("got invalid datafile"))}}getConfig(){return this.projectConfig}getOptimizelyConfig(){var e,t,r;return!this.optimizelyConfig&&this.projectConfig&&(this.optimizelyConfig=(e=this.projectConfig,t=this.projectConfig.__datafileStr,r=this.logger,new tt(e,t,r))),this.optimizelyConfig}onUpdate(e){return this.eventEmitter.on("update",e)}stop(){if(!this.isDone()){if((this.isNew()||this.isStarting())&&this.startPromise.reject(new Error(be(bt,"ProjectConfigManager"))),this.state=mt.Stopping,this.eventEmitter.removeAllListeners(),!this.datafileManager)return this.state=mt.Terminated,void this.stopPromise.resolve();this.datafileManager.stop(),this.datafileManager.onTerminated().then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}).catch(e=>{this.state=mt.Failed,this.stopPromise.reject(e)})}}};function xt(e,t,r,i){return new(r||(r=Promise))(function(n,s){function o(e){try{l(i.next(e))}catch(e){s(e)}}function a(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}l((i=i.apply(e,t||[])).next())})}var wt=e=>e>=200&&e<400,Ot=class extends Et{constructor(e){super(e.startupLogs);const{autoUpdate:t=!1,sdkKey:r,datafileAccessToken:i,customHeaders:n,urlTemplate:s,cache:o,initRetry:a,repeater:l,requestHandler:u,logger:c}=e;this.cache=o,this.cacheKey="opt-datafile-"+r,this.sdkKey=r,this.datafileAccessToken=i,this.customHeaders=n,this.requestHandler=u,this.emitter=new It,this.autoUpdate=t,this.initRetryRemaining=a,this.repeater=l,c&&this.setLogger(c);const d=s||(i?"https://config.optimizely.com/datafiles/auth/%s.json":"https://cdn.optimizely.com/datafiles/%s.json");this.datafileUrl=be(d,this.sdkKey)}setLogger(e){this.logger=e,this.logger.setName("PollingDatafileManager")}onUpdate(e){return this.emitter.on("update",e)}get(){return this.currentDatafile}start(){this.isNew()&&(super.start(),this.state=mt.Starting,this.setDatafileFromCacheIfAvailable(),this.repeater.setTask(this.syncDatafile.bind(this)),this.repeater.start(!0))}makeDisposable(){var e;super.makeDisposable(),this.initRetryRemaining=Math.min(null!==(e=this.initRetryRemaining)&&void 0!==e?e:5,5)}stop(){var e;this.isDone()||((this.isNew()||this.isStarting())&&this.startPromise.reject(new Error(be(bt,"PollingDatafileManager"))),this.state=mt.Terminated,this.repeater.stop(),null===(e=this.currentRequest)||void 0===e||e.abort(),this.emitter.removeAllListeners(),this.stopPromise.resolve())}handleInitFailure(){this.state=mt.Failed,this.repeater.stop();const e=new Error("Failed to fetch datafile");this.startPromise.reject(e),this.stopPromise.reject(e)}handleError(e){var t,r;this.isDone()||(e instanceof Error?null===(t=this.logger)||void 0===t||t.error("4",e.message,e):null===(r=this.logger)||void 0===r||r.error("3",e),this.isStarting()&&void 0!==this.initRetryRemaining&&(0===this.initRetryRemaining?this.handleInitFailure():this.initRetryRemaining--))}onRequestRejected(e){return xt(this,void 0,void 0,function*(){return this.handleError(e),Promise.reject(e)})}onRequestResolved(e){return xt(this,void 0,void 0,function*(){if(this.isDone())return;if(this.saveLastModified(e.headers),!wt(e.statusCode))return this.handleError(e.statusCode),Promise.reject(new Error);const t=this.getDatafileFromResponse(e);t&&(this.handleDatafile(t),this.autoUpdate&&!this.disposable||this.repeater.stop())})}makeDatafileRequest(){var e,t;const r=Object.assign({},this.customHeaders);return this.lastResponseLastModified&&(r["if-modified-since"]=this.lastResponseLastModified),this.datafileAccessToken&&(null===(e=this.logger)||void 0===e||e.debug("0"),r.Authorization=`Bearer ${this.datafileAccessToken}`),null===(t=this.logger)||void 0===t||t.debug("17",this.datafileUrl,()=>JSON.stringify(r)),this.requestHandler.makeRequest(this.datafileUrl,r,"GET")}syncDatafile(){return xt(this,void 0,void 0,function*(){return this.currentRequest=this.makeDatafileRequest(),this.currentRequest.responsePromise.then(this.onRequestResolved.bind(this),this.onRequestRejected.bind(this)).finally(()=>this.currentRequest=void 0)})}handleDatafile(e){var t;this.isDone()||(this.currentDatafile=e,null===(t=this.cache)||void 0===t||t.set(this.cacheKey,e),this.isStarting()&&(this.startPromise.resolve(),this.state=mt.Running),this.emitter.emit("update",e))}getDatafileFromResponse(e){var t;if(null===(t=this.logger)||void 0===t||t.debug("23",e.statusCode),304!==e.statusCode)return e.body}saveLastModified(e){var t;const r=e["last-modified"]||e["Last-Modified"];void 0!==r&&(this.lastResponseLastModified=r,null===(t=this.logger)||void 0===t||t.debug("24",this.lastResponseLastModified))}setDatafileFromCacheIfAvailable(){return xt(this,void 0,void 0,function*(){if(this.cache)try{const e=yield this.cache.get(this.cacheKey);e&&this.isStarting()&&this.handleDatafile(e)}catch(e){}})}},kt=class{constructor(e,t,r){this.base=e,this.max=t,this.maxJitter=r,this.maxJitter>this.base/2&&(this.maxJitter=this.base/2),this.maxJitter=r,this.current=e}backoff(){const e=this.current+this.maxJitter*Math.random();return this.current=Math.min(2*this.current,this.max),e}reset(){this.current=this.base}},Mt=class{constructor(e){this.value=e}backoff(){return this.value}reset(){}},Rt=class{constructor(e,t){this.failureCount=0,this.running=!1,this.interval=e,this.backoffController=t}isRunning(){return this.running}handleSuccess(){var e;this.failureCount=0,null===(e=this.backoffController)||void 0===e||e.reset(),this.setTimer(this.interval)}handleFailure(){var e,t;this.failureCount++;const r=null!==(t=null===(e=this.backoffController)||void 0===e?void 0:e.backoff())&&void 0!==t?t:this.interval;this.setTimer(r)}setTimer(e){this.running&&(this.timeoutId=setTimeout(this.executeTask.bind(this),e))}executeTask(){this.task&&this.task(this.failureCount).then(this.handleSuccess.bind(this),this.handleFailure.bind(this))}start(e){var t;this.running=!0,e?(t=this.executeTask.bind(this),"function"==typeof queueMicrotask?queueMicrotask(t):Promise.resolve().then(t)):this.setTimer(this.interval)}stop(){this.running=!1,clearInterval(this.timeoutId)}reset(){var e;this.failureCount=0,null===(e=this.backoffController)||void 0===e||e.reset(),this.stop()}setTask(e){this.task=e}},Ct=e=>{const t=[];if(!e||"object"!=typeof e)throw new Error("Invalid store");for(const r of["set","get","remove","getKeys"])"function"!=typeof e[r]&&t.push("Invalid store method %s".replace("%s",r));if(t.length>0)throw new Error(t.join(", "))},Pt="Invalid config manager",At=Symbol(),jt=e=>({[At]:new St(e)}),Dt=e=>{var t;e.cache&&Ct(e.cache);const r=null!==(t=e.updateInterval)&&void 0!==t?t:3e5,i=new kt(1e3,r,500),n=new Rt(r,i),s=[];r<3e4&&s.push({level:H.Warn,message:"Polling intervals below 30 seconds are not recommended.",params:[]});const o={sdkKey:e.sdkKey,autoUpdate:e.autoUpdate,urlTemplate:e.urlTemplate,datafileAccessToken:e.datafileAccessToken,customHeaders:e.customHeaders,requestHandler:e.requestHandler,cache:e.cache,repeater:n,startupLogs:s},a=new Ot(o);return new St({datafile:e.datafile,datafileManager:a,jsonSchemaValidator:e.jsonSchemaValidator})},Tt=class{constructor(){this.operation="sync"}},Ft=class{constructor(){this.operation="async"}},_t=(e,t)=>e instanceof Tt?e.getBatched(t):t.map(t=>e.get(t)),Nt=(e,t)=>e instanceof Ft?e.getBatched(t):Promise.all(t.map(t=>e.get(t))),Ut=class extends Tt{constructor(e,t,r,i){super(),this.operation="sync",this.store=e,this.prefix=t,this.transformGet=r,this.transformSet=i}addPrefix(e){return`${this.prefix}${e}`}removePrefix(e){return e.substring(this.prefix.length)}set(e,t){return this.store.set(this.addPrefix(e),this.transformSet(t))}get(e){const t=this.store.get(this.addPrefix(e));return t?this.transformGet(t):void 0}remove(e){return this.store.remove(this.addPrefix(e))}getInternalKeys(){return this.store.getKeys().filter(e=>e.startsWith(this.prefix))}getKeys(){return this.getInternalKeys().map(e=>this.removePrefix(e))}getBatched(e){return _t(this.store,e.map(e=>this.addPrefix(e))).map(e=>e?this.transformGet(e):void 0)}},Vt=class{constructor(e,t,r,i){this.operation="async",this.cache=e,this.prefix=t,this.transformGet=r,this.transformSet=i}addPrefix(e){return`${this.prefix}${e}`}removePrefix(e){return e.substring(this.prefix.length)}set(e,t){return this.cache.set(this.addPrefix(e),this.transformSet(t))}get(e){return xt(this,void 0,void 0,function*(){const t=yield this.cache.get(this.addPrefix(e));return t?this.transformGet(t):void 0})}remove(e){return this.cache.remove(this.addPrefix(e))}getInternalKeys(){return xt(this,void 0,void 0,function*(){return this.cache.getKeys().then(e=>e.filter(e=>e.startsWith(this.prefix)))})}getKeys(){return xt(this,void 0,void 0,function*(){return this.getInternalKeys().then(e=>e.map(e=>this.removePrefix(e)))})}getBatched(e){return xt(this,void 0,void 0,function*(){return(yield Nt(this.cache,e.map(e=>this.addPrefix(e)))).map(e=>e?this.transformGet(e):void 0)})}},Kt={US:"https://logx.optimizely.com/v1/events",EU:"https://eu.logx.optimizely.com/v1/events"};function Lt(e){const t=[],r=e[0];return e.forEach(e=>{if("conversion"===e.type||"impression"===e.type){const r=function(e){const t={snapshots:[],visitor_id:e.user.id,attributes:[]};return e.user.attributes.forEach(e=>{t.attributes.push({entity_id:e.entityId,key:e.key,type:"custom",value:e.value})}),"boolean"==typeof e.context.botFiltering&&t.attributes.push({entity_id:Z,key:Z,type:"custom",value:e.context.botFiltering}),t}(e);"impression"===e.type?r.snapshots.push(function(e){var t,r;const{layer:i,experiment:n,variation:s,ruleKey:o,flagKey:a,ruleType:l,enabled:u,cmabUuid:c}=e,d=i?i.id:null;return{decisions:[{campaign_id:d,experiment_id:null!==(t=null==n?void 0:n.id)&&void 0!==t?t:"",variation_id:null!==(r=null==s?void 0:s.id)&&void 0!==r?r:"",metadata:{flag_key:a,rule_key:o,rule_type:l,variation_key:s?s.key:"",enabled:u,cmab_uuid:c}}],events:[{entity_id:d,timestamp:e.timestamp,key:"campaign_activated",uuid:e.uuid}]}}(e)):"conversion"===e.type&&r.snapshots.push(function(e){const t=Object.assign({},e.tags);delete t.revenue,delete t.value;const r={entity_id:e.event.id,key:e.event.key,timestamp:e.timestamp,uuid:e.uuid};return e.tags&&(r.tags=e.tags),null!=e.value&&(r.value=e.value),null!=e.revenue&&(r.revenue=e.revenue),{events:[r]}}(e)),t.push(r)}}),{client_name:r.context.clientName,client_version:r.context.clientVersion,account_id:r.context.accountId,project_id:r.context.projectId,revision:r.context.revision,anonymize_ip:r.context.anonymizeIP,enrich_decisions:!0,visitors:t}}function qt(e){var t;const r=(null===(t=e[0])||void 0===t?void 0:t.context.region)||"US";return{url:Kt[r]||Kt.US,httpVerb:"POST",params:Lt(e)}}var Bt=(e,t,r,i,n)=>{e().then(e=>{t.resolve(e)}).catch(s=>{var o;if(0===n)return void t.reject(s);if(r.cancelled)return void t.reject(new Se("49"));const a=null!==(o=null==i?void 0:i.backoff())&&void 0!==o?o:0;setTimeout(()=>{Bt(e,t,r,i,n=void 0===n?void 0:n-1)},a)})},zt=(e,t,r)=>{const i=vt(),n={cancelled:!1};return Bt(e,i,n,t,r),{cancelRetry:()=>{n.cancelled=!0},result:i.promise}},Ht=class{constructor(){this.idSuffixOffset=0}getId(){const e=1e4+this.idSuffixOffset;return this.idSuffixOffset=(this.idSuffixOffset+1)%1e4,`${Date.now()}${e}`}};function $t(e){var t,r;return null!==(r=null===(t=e.experiment)||void 0===t?void 0:t.key)&&void 0!==r?r:""}function Jt(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.key)&&void 0!==r?r:""}function Gt(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.featureEnabled)&&void 0!==r&&r}var Wt,Qt,Yt={AB_TEST:"ab-test",FEATURE:"feature",FEATURE_TEST:"feature-test",FEATURE_VARIABLE:"feature-variable",ALL_FEATURE_VARIABLES:"all-feature-variables",FLAG:"flag"},Xt={ACTIVATE:"ACTIVATE",DECISION:"DECISION",LOG_EVENT:"LOG_EVENT",OPTIMIZELY_CONFIG_UPDATE:"OPTIMIZELY_CONFIG_UPDATE",TRACK:"TRACK"};!function(e){e.BOOLEAN="boolean",e.DOUBLE="double",e.INTEGER="integer",e.STRING="string",e.JSON="json"}(Wt||(Wt={})),function(e){e.DISABLE_DECISION_EVENT="DISABLE_DECISION_EVENT",e.ENABLED_FLAGS_ONLY="ENABLED_FLAGS_ONLY",e.IGNORE_USER_PROFILE_SERVICE="IGNORE_USER_PROFILE_SERVICE",e.INCLUDE_REASONS="INCLUDE_REASONS",e.EXCLUDE_VARIABLES="EXCLUDE_VARIABLES",e.IGNORE_CMAB_CACHE="IGNORE_CMAB_CACHE",e.RESET_CMAB_CACHE="RESET_CMAB_CACHE",e.INVALIDATE_USER_CMAB_CACHE="INVALIDATE_USER_CMAB_CACHE"}(Qt||(Qt={}));var Zt,er,tr=(e,t)=>{const r=e.context,i=t.context;return(r.region||"US")===(i.region||"US")&&r.accountId===i.accountId&&r.projectId===i.projectId&&r.clientName===i.clientName&&r.clientVersion===i.clientVersion&&r.revision===i.revision&&r.anonymizeIP===i.anonymizeIP&&r.botFiltering===i.botFiltering},rr=({configObj:e,userId:t,userAttributes:r,clientEngine:i,clientVersion:n,type:s})=>({type:s,timestamp:Ie.currentTimestamp(),uuid:Ie.uuid(),context:{region:e.region,accountId:e.accountId,projectId:e.projectId,revision:e.revision,clientName:i,clientVersion:n,anonymizeIP:e.anonymizeIP||!1,botFiltering:e.botFiltering},user:{id:t,attributes:ir(e,r)}}),ir=(e,t,r)=>{if(!t)return[];const i=[];return Object.keys(t).forEach(function(n){const s=t[n];if("object"!=typeof s&&void 0!==s&&(o=s,"string"==typeof n&&("string"==typeof o||"boolean"==typeof o||Ie.isNumber(o)&&Ie.isSafeInteger(o)))){const t=function(e,t,r){const i=e.attributeKeyMap[t],n=0===t.indexOf(st);return i?(n&&(null==r||r.warn("58",t,st)),i.id):n?t:(null==r||r.warn("62",t),null)}(e,n,r);t&&i.push({entityId:t,key:n,value:s})}var o}),i},nr=class extends Et{constructor(e){var t;super(e.startupLogs),this.eventQueue=[],this.idGenerator=new Ht,this.runningTask=new Map,this.dispatchingEvents=new Map,this.eventEmitter=new It,this.eventDispatcher=e.eventDispatcher,this.closingEventDispatcher=e.closingEventDispatcher,this.batchSize=e.batchSize,this.eventStore=e.eventStore,this.retryConfig=e.retryConfig,this.dispatchRepeater=e.dispatchRepeater,this.dispatchRepeater.setTask(()=>this.flush()),this.failedEventRepeater=e.failedEventRepeater,null===(t=this.failedEventRepeater)||void 0===t||t.setTask(()=>this.retryFailedEvents()),e.logger&&this.setLogger(e.logger)}setLogger(e){this.logger=e,this.logger.setName("BatchEventProcessor")}onDispatch(e){return this.eventEmitter.on("dispatch",e)}retryFailedEvents(){return xt(this,void 0,void 0,function*(){if(!this.eventStore)return;const e=(yield this.eventStore.getKeys()).filter(e=>!this.dispatchingEvents.has(e)&&!this.eventQueue.find(t=>t.id===e)),t=yield"sync"===this.eventStore.operation?_t(this.eventStore,e):Nt(this.eventStore,e),r=[];if(t.forEach(e=>{e&&r.push(e)}),0==r.length)return;r.sort((e,t)=>e.id<t.id?-1:1);const i=[];let n=[];r.forEach(e=>{(n.length===this.batchSize||n.length>0&&!tr(n[0].event,e.event))&&(i.push({request:qt(n.map(e=>e.event)),events:n}),n=[]),n.push(e)}),n.length>0&&i.push({request:qt(n.map(e=>e.event)),events:n}),i.forEach(e=>{this.dispatchBatch(e,!1)})})}createNewBatch(){if(0==this.eventQueue.length)return;const e=[],t=[];return this.eventQueue.forEach(r=>{e.push(r.event),t.push(r)}),this.eventQueue=[],{request:qt(e),events:t}}executeDispatch(e,t=!1){return xt(this,void 0,void 0,function*(){return(t&&this.closingEventDispatcher?this.closingEventDispatcher:this.eventDispatcher).dispatchEvent(e).then(e=>e.statusCode&&!wt(e.statusCode)?Promise.reject(new Se("10",e.statusCode)):Promise.resolve(e))})}dispatchBatch(e,t){const{request:r,events:i}=e;i.forEach(e=>{this.dispatchingEvents.set(e.id,e)});const n=this.retryConfig?zt(()=>this.executeDispatch(r,t),this.retryConfig.backoffProvider(),this.retryConfig.maxRetries):{result:this.executeDispatch(r,t),cancelRetry:()=>{}};this.eventEmitter.emit("dispatch",r);const s=this.idGenerator.getId();this.runningTask.set(s,n),n.result.then(e=>(i.forEach(e=>{var t;null===(t=this.eventStore)||void 0===t||t.remove(e.id)}),Promise.resolve())).catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error(e)}).finally(()=>{this.runningTask.delete(s),i.forEach(e=>this.dispatchingEvents.delete(e.id))})}flush(e=!1){return xt(this,void 0,void 0,function*(){const t=this.createNewBatch();t&&(this.dispatchRepeater.reset(),this.dispatchBatch(t,e))})}process(e){var t;return xt(this,void 0,void 0,function*(){if(!this.isRunning())return Promise.reject(new Se("51","BatchEventProcessor"));const r={id:this.idGenerator.getId(),event:e};yield Promise.resolve(null===(t=this.eventStore)||void 0===t?void 0:t.set(r.id,r)).catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error(e)}),this.eventQueue.length>0&&!tr(this.eventQueue[0].event,e)&&this.flush(),this.eventQueue.push(r),this.eventQueue.length==this.batchSize?this.flush():this.dispatchRepeater.isRunning()||this.dispatchRepeater.start()})}start(){var e;this.isNew()&&(super.start(),this.state=mt.Running,this.disposable||null===(e=this.failedEventRepeater)||void 0===e||e.start(),this.retryFailedEvents(),this.startPromise.resolve())}makeDisposable(){var e,t,r;super.makeDisposable(),this.batchSize=1,this.retryConfig={maxRetries:Math.min(null!==(t=null===(e=this.retryConfig)||void 0===e?void 0:e.maxRetries)&&void 0!==t?t:5,5),backoffProvider:(null===(r=this.retryConfig)||void 0===r?void 0:r.backoffProvider)||(()=>new kt(200,1e3,500))}}flushImmediately(){return this.isRunning()?this.flush(!0):Promise.resolve()}stop(){var e;this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(be(bt,"BatchEventProcessor"))),this.state=mt.Stopping,this.dispatchRepeater.stop(),null===(e=this.failedEventRepeater)||void 0===e||e.stop(),this.flush(!0),this.runningTask.forEach(e=>e.cancelRetry()),Promise.allSettled(Array.from(this.runningTask.values()).map(e=>e.result)).then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}))}},sr=class{constructor(){this.waitPromise=Promise.resolve()}run(e){const t=this.waitPromise.then(e);return this.waitPromise=t.catch(()=>{}),t}},or="optly_event:",ar=class extends Et{constructor(e){super(),this.dispatcher=e,this.eventEmitter=new It}process(e){const t=qt([e]),r=this.dispatcher.dispatchEvent(t);return this.eventEmitter.emit("dispatch",t),r}start(){this.isNew()&&(this.state=mt.Running,this.startPromise.resolve())}stop(){this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(be(bt,"ForwardingEventProcessor"))),this.state=mt.Terminated,this.stopPromise.resolve())}onDispatch(e){return this.eventEmitter.on("dispatch",e)}flushImmediately(){return Promise.resolve()}},lr=Symbol(),ur=e=>{if(!e||"object"!=typeof e||"function"!=typeof e.dispatchEvent)throw new Error("Invalid event dispatcher")},cr=e=>({[lr]:e}),dr=class{constructor(e,t){this.operation="sync",this.data=new Map,this.maxSize=e,this.ttl=t}lookup(e){const t=this.data.get(e);if(t&&(this.data.delete(e),!(t.expiresAt&&t.expiresAt<=Date.now())))return this.data.set(e,t),t.value}save(e,t){if(this.data.delete(e),this.data.size===this.maxSize){const e=this.data.keys().next().value;this.data.delete(e)}this.data.set(e,{value:t,expiresAt:this.ttl?Date.now()+this.ttl:void 0})}remove(e){this.data.delete(e)}reset(){this.data.clear()}getKeys(){return Array.from(this.data.keys())}},hr=class{constructor(e,t,r){this.requestHandler=e,this.requestGenerator=t,r&&this.setLogger(r)}setLogger(e){this.logger=e,this.logger.setName("OdpEventApiManager")}sendEvents(e,t){return xt(this,void 0,void 0,function*(){if(0===t.length)return{};const{method:r,endpoint:i,headers:n,data:s}=this.requestGenerator(e,t);return this.requestHandler.makeRequest(i,n,r,s).responsePromise})}},gr=(e,t)=>{const{apiHost:r,apiKey:i}=e;return{method:"POST",endpoint:`${r}/v3/events`,headers:{"Content-Type":"application/json","x-api-key":i},data:JSON.stringify(t,(e,t)=>t instanceof Map?Object.fromEntries(t):t)}};!function(e){e.VUID="vuid",e.FS_USER_ID="fs_user_id",e.FS_USER_ID_ALIAS="fs-user-id"}(Zt||(Zt={})),function(e){e.IDENTIFIED="identified",e.INITIALIZED="client_initialized"}(er||(er={}));var pr,fr="fullstack",vr=class extends Et{constructor(e){super(e.startUpLogs),this.queue=[],this.apiManager=e.apiManager,this.batchSize=e.batchSize,this.retryConfig=e.retryConfig,this.repeater=e.repeater,this.repeater.setTask(()=>this.flush())}setLogger(e){this.logger=e,this.logger.setName("OdpEventManager"),this.apiManager.setLogger(e.child())}executeDispatch(e,t){return xt(this,void 0,void 0,function*(){const r=yield this.apiManager.sendEvents(e,t);return r.statusCode&&!wt(r.statusCode)?Promise.reject(new Se("10",r.statusCode)):yield Promise.resolve(r)})}flush(){return xt(this,void 0,void 0,function*(){if(!this.odpIntegrationConfig||!this.odpIntegrationConfig.integrated)return;const e=this.odpIntegrationConfig.odpConfig,t=this.queue;return this.queue=[],this.repeater.reset(),zt(()=>this.executeDispatch(e,t),this.retryConfig.backoffProvider(),this.retryConfig.maxRetries).result.catch(e=>{var t;null===(t=this.logger)||void 0===t||t.error("11",e)})})}start(){this.isNew()&&(super.start(),this.odpIntegrationConfig?this.goToRunningState():this.state=mt.Starting)}makeDisposable(){super.makeDisposable(),this.retryConfig.maxRetries=Math.min(this.retryConfig.maxRetries,5),this.batchSize=1}updateConfig(e){if(!this.isDone())if(this.isNew())this.odpIntegrationConfig=e;else{if(this.isStarting())return this.odpIntegrationConfig=e,void this.goToRunningState();this.flush(),this.odpIntegrationConfig=e}}goToRunningState(){this.state=mt.Running,this.startPromise.resolve()}flushImmediately(){return this.isRunning()?this.flush():Promise.resolve()}stop(){this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(be(bt,"OdpEventManager"))),this.flush(),this.state=mt.Terminated,this.stopPromise.resolve())}sendEvent(e){var t,r,i,n,s,o;this.isRunning()?(null===(r=this.odpIntegrationConfig)||void 0===r?void 0:r.integrated)?0!==e.identifiers.size?this.isDataValid(e.data)?e.action?(""===e.type&&(e.type=fr),Array.from(e.identifiers.entries()).forEach(([t,r])=>{Zt.FS_USER_ID_ALIAS!==t.toLowerCase()&&Zt.FS_USER_ID!==t.toLowerCase()||(e.identifiers.delete(t),e.identifiers.set(Zt.FS_USER_ID,r))}),this.processEvent(e)):null===(o=this.logger)||void 0===o||o.error("5"):null===(s=this.logger)||void 0===s||s.error("6"):null===(n=this.logger)||void 0===n||n.error("39"):null===(i=this.logger)||void 0===i||i.error("43"):null===(t=this.logger)||void 0===t||t.error("51","OdpEventManager")}isDataValid(e){const t=["string","number","boolean"];return Array.from(e.values()).reduce((e,r)=>e&&(null===r||t.includes(typeof r)),!0)}processEvent(e){this.queue.push(e),this.queue.length===this.batchSize?this.flush():this.repeater.isRunning()||this.repeater.start()}},mr=class{constructor(e,t,r,i){this.type=e,this.action=t,this.identifiers=null!=r?r:new Map,this.data=null!=i?i:new Map}},yr=e=>e.startsWith("vuid_")&&e.length>5,br=class extends Et{constructor(e){if(super(),this.clientEngine=te,this.clientVersion=ie,this.segmentManager=e.segmentManager,this.eventManager=e.eventManager,this.configPromise=vt(),e.userAgentParser){const{os:t,device:r}=e.userAgentParser.parseUserAgentInfo(),i={os:t.name,os_version:t.version,device_type:r.type,model:r.model};this.userAgentData=new Map(Object.entries(i).filter(([e,t])=>null!=t&&null!=t))}e.logger&&this.setLogger(e.logger)}setLogger(e){this.logger=e,this.logger.setName("OdpManager"),this.eventManager.setLogger(e.child()),this.segmentManager.setLogger(e.child())}setClientInfo(e,t){this.clientEngine=e,this.clientVersion=t}start(){if(!this.isNew())return;this.state=mt.Starting,this.eventManager.start();const e=[this.configPromise,this.eventManager.onRunning()];Promise.all(e).then(()=>{this.handleStartSuccess()}).catch(e=>{this.handleStartFailure(e)})}makeDisposable(){super.makeDisposable(),this.eventManager.makeDisposable()}handleStartSuccess(){this.isDone()||(this.state=mt.Running,this.startPromise.resolve())}handleStartFailure(e){this.isDone()||(this.state=mt.Failed,this.startPromise.reject(e),this.stopPromise.reject(e))}flushImmediately(){return this.isRunning()?this.eventManager.flushImmediately():Promise.resolve()}stop(){this.isDone()||(this.isRunning()||this.startPromise.reject(new Error(be(bt,"OdpManager"))),this.state=mt.Stopping,this.eventManager.stop(),this.eventManager.onTerminated().then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}).catch(e=>{this.state=mt.Failed,this.stopPromise.reject(e)}))}updateConfig(e){return!(this.odpIntegrationConfig&&(t=this.odpIntegrationConfig,r=e,!(t.integrated!==r.integrated||t.integrated&&r.integrated&&!t.odpConfig.equals(r.odpConfig)))||this.isDone()||(this.odpIntegrationConfig=e,this.configPromise.resolve(),this.segmentManager.updateConfig(e),this.eventManager.updateConfig(e),0));var t,r}fetchQualifiedSegments(e,t=[]){return xt(this,void 0,void 0,function*(){return yr(e)?this.segmentManager.fetchQualifiedSegments(Zt.VUID,e,t):this.segmentManager.fetchQualifiedSegments(Zt.FS_USER_ID,e,t)})}identifyUser(e,t){const r=new Map;let i=e,n=t;!t&&yr(e)&&(n=e,i=void 0),n&&r.set(Zt.VUID,n),i&&r.set(Zt.FS_USER_ID,i);const s=new mr(fr,er.IDENTIFIED,r);this.sendEvent(s)}sendEvent(e){!e.identifiers.has(Zt.VUID)&&this.vuid&&e.identifiers.set(Zt.VUID,this.vuid),e.data=this.augmentCommonData(e.data),this.eventManager.sendEvent(e)}augmentCommonData(e){const t=new Map(this.userAgentData);return t.set("idempotence_id",$()),t.set("data_source_type","sdk"),t.set("data_source",this.clientEngine),t.set("data_source_version",this.clientVersion),e.forEach((e,r)=>t.set(r,e)),t}setVuid(e){this.vuid=e,this.onRunning().then(()=>{var e;if(null===(e=this.odpIntegrationConfig)||void 0===e?void 0:e.integrated){const e=new mr(fr,er.INITIALIZED);this.sendEvent(e)}})}},Er={$schema:"http://json-schema.org/draft-04/schema#",title:"Project Config JSON Schema",type:"object",properties:{projectId:{type:"string",required:!0},accountId:{type:"string",required:!0},groups:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},policy:{type:"string",required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},experiments:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0},status:{type:"string",required:!0},layerId:{type:"string",required:!0},variations:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},audienceIds:{type:"array",items:{type:"string"},required:!0},forcedVariations:{type:"object",required:!0}}},required:!0}}},required:!0},experiments:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0},status:{type:"string",required:!0},layerId:{type:"string",required:!0},variations:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},audienceIds:{type:"array",items:{type:"string"},required:!0},forcedVariations:{type:"object",required:!0},cmab:{type:"object",required:!1,properties:{attributes:{type:"array",items:{type:"string"},required:!0}}}}},required:!0},events:{type:"array",items:{type:"object",properties:{key:{type:"string",required:!0},experimentIds:{type:"array",items:{type:"string",required:!0}},id:{type:"string",required:!0}}},required:!0},audiences:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},name:{type:"string",required:!0},conditions:{type:"string",required:!0}}},required:!0},attributes:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},version:{type:"string",required:!0},revision:{type:"string",required:!0},integrations:{type:"array",items:{type:"object",properties:{key:{type:"string",required:!0},host:{type:"string"},publicKey:{type:"string"},pixelUrl:{type:"string"}}}}}},Ir={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://example.com/example.json",title:"ODP Response Schema",type:"object",required:["data"],properties:{data:{title:"The data Schema",type:"object",required:["customer"],properties:{customer:{title:"The customer Schema",type:"object",required:[],properties:{audiences:{title:"The audiences Schema",type:"object",required:["edges"],properties:{edges:{title:"The edges Schema",type:"array",items:{title:"A Schema",type:"object",required:["node"],properties:{node:{title:"The node Schema",type:"object",required:["name","state"],properties:{name:{title:"The name Schema",type:"string",examples:["has_email","has_email_opted_in"]},state:{title:"The state Schema",type:"string",examples:["qualified"]}},examples:[]}},examples:[]},examples:[]}},examples:[]}},examples:[]}},examples:[]},errors:{title:"The errors Schema",type:"array",default:[],items:{title:"A Schema",type:"object",required:["message","locations","extensions"],properties:{message:{title:"The message Schema",type:"string",examples:["Exception while fetching data (/customer) : java.lang.RuntimeException: could not resolve _fs_user_id = asdsdaddddd"]},locations:{title:"The locations Schema",type:"array",items:{title:"A Schema",type:"object",required:["line","column"],properties:{line:{title:"The line Schema",type:"integer",examples:[2]},column:{title:"The column Schema",type:"integer",examples:[3]}},examples:[]},examples:[]},path:{title:"The path Schema",type:"array",items:{title:"A Schema",type:"string",examples:["customer"]},examples:[]},extensions:{title:"The extensions Schema",type:"object",required:["classification"],properties:{classification:{title:"The classification Schema",type:"string",examples:["InvalidIdentifierException"]}},examples:[]}},examples:[]},examples:[]}},examples:[]},Sr=[],xr="Audience segments fetch failed",wr=class{constructor(e,t){this.toGraphQLJson=(e,t,r)=>['{"query" : "query {customer',`(${e} : \\"${t}\\") `,"{audiences","(subset: [",...(null==r?void 0:r.map((e,t)=>`\\"${e}\\"${t<r.length-1?",":""}`))||"",']) {edges {node {name state}}}}}"}'].join(""),this.requestHandler=e,t&&this.setLogger(t)}setLogger(e){this.logger=e,this.logger.setName("OdpSegmentApiManager")}fetchSegments(e,t,r,i,n){var s,o,a,l,u,c,d,h,g;return xt(this,void 0,void 0,function*(){if(0===(null==n?void 0:n.length))return Sr;const p=`${t}/v3/graphql`,f=this.toGraphQLJson(r,i,n),v=yield this.querySegments(e,p,f);if(!v)return null===(s=this.logger)||void 0===s||s.error(`${xr} (network error)`),null;const m=this.parseSegmentsResponseJson(v);if(!m)return null===(o=this.logger)||void 0===o||o.error(`${xr} (decode error)`),null;if((null===(a=m.errors)||void 0===a?void 0:a.length)>0){const{code:e,classification:t}=m.errors[0].extensions;return"INVALID_IDENTIFIER_EXCEPTION"==e?null===(l=this.logger)||void 0===l||l.error(`${xr} (invalid identifier)`):null===(u=this.logger)||void 0===u||u.error(`${xr} (${t})`),null}const y=null===(h=null===(d=null===(c=null==m?void 0:m.data)||void 0===c?void 0:c.customer)||void 0===d?void 0:d.audiences)||void 0===h?void 0:h.edges;return y?y.filter(e=>"qualified"==e.node.state).map(e=>e.node.name):(null===(g=this.logger)||void 0===g||g.error(`${xr} (decode error)`),null)})}querySegments(e,t,r){return xt(this,void 0,void 0,function*(){const i=t,n={"Content-Type":"application/json","x-api-key":e};try{const e=this.requestHandler.makeRequest(i,n,"POST",r),{statusCode:t,body:s}=yield e.responsePromise;return t>=200&&t<300?s:null}catch(e){return null}})}parseSegmentsResponseJson(e){let t={};try{t=JSON.parse(e)}catch(e){return null}return function(e,t=Er,r=!0){if("object"!=typeof e||null===e)throw new Se("34");const i=(0,J.validate)(e,t);if(i.valid)return!0;if(!r)return!1;if(Array.isArray(i.errors))throw new Se("17",i.errors[0].property,i.errors[0].message);throw new Se("25")}(t,Ir,!1)?t:null}};!function(e){e.IGNORE_CACHE="IGNORE_CACHE",e.RESET_CACHE="RESET_CACHE"}(pr||(pr={}));var Or=class{constructor(e,t,r){this.segmentsCache=e,this.odpSegmentApiManager=t,r&&this.setLogger(r)}setLogger(e){this.logger=e,this.logger.setName("OdpSegmentManager"),this.odpSegmentApiManager.setLogger(e.child())}fetchQualifiedSegments(e,t,r){var i,n;return xt(this,void 0,void 0,function*(){if(!this.odpIntegrationConfig)return null===(i=this.logger)||void 0===i||i.warn("38"),null;if(!this.odpIntegrationConfig.integrated)return null===(n=this.logger)||void 0===n||n.warn("43"),null;const s=this.odpIntegrationConfig.odpConfig,o=s.segmentsToCheck;if(!o||o.length<=0)return[];const a=this.makeCacheKey(e,t),l=null==r?void 0:r.includes(pr.IGNORE_CACHE);if((null==r?void 0:r.includes(pr.RESET_CACHE))&&this.segmentsCache.reset(),!l){const e=yield this.segmentsCache.lookup(a);if(e)return e}const u=yield this.odpSegmentApiManager.fetchSegments(s.apiKey,s.apiHost,e,t,o);return u&&!l&&this.segmentsCache.save(a,u),u})}makeCacheKey(e,t){return`${e}-$-${t}`}updateConfig(e){this.odpIntegrationConfig=e,this.segmentsCache.reset()}},kr=Symbol(),Mr=e=>{const t=(e=>{return e.segmentsCache&&(e=>{const t=[];if(!e||"object"!=typeof e)throw new Error("Invalid cache");for(const r of["save","lookup","reset"])"function"!=typeof e[r]&&t.push("Invalid cache method %s".replace("%s",r));if(t.length>0)throw new Error(t.join(", "))})(e.segmentsCache),new Or(e.segmentsCache||(t=e.segmentsCacheSize,r=e.segmentsCacheTimeout,new dr(t||1e4,r||6e5)),new wr(e.segmentRequestHandler));var t,r})(e),r=new vr({apiManager:new hr((i=e).eventRequestHandler,i.eventRequestGenerator),batchSize:i.eventBatchSize||100,repeater:new Rt(i.eventFlushInterval||1e4),retryConfig:{maxRetries:i.eventMaxRetries||2,backoffProvider:()=>new kt(i.eventMinBackoff||200,i.eventMaxBackoff||1e3,50)}});var i;return new br({segmentManager:t,eventManager:r,userAgentParser:e.userAgentParser})},Rr=Symbol(),Cr=class{constructor(e,t){this.logger=e,this.errorNotifier=t}report(e,...t){if("string"==typeof e)return e=new Se(e,...t),void this.report(e);this.errorNotifier&&this.errorNotifier.notify(e),this.logger&&this.logger.error(e)}setLogger(e){this.logger=e}setErrorNotifier(e){this.errorNotifier=e}},Pr=class{constructor(e){this.removerId=1,this.eventEmitter=new It,this.removers=new Map,this.errorReporter=new Cr(e.logger,e.errorNotifier)}addNotificationListener(e,t){if(!(ve(Xt).indexOf(e)>-1))return-1;const r=this.removerId++,i=this.eventEmitter.on(e,this.wrapWithErrorReporting(e,t));return this.removers.set(r,i),r}wrapWithErrorReporting(e,t){return r=>{try{t(r)}catch(t){const r=t instanceof Error?t.message:String(t);this.errorReporter.report("30",e,r)}}}removeNotificationListener(e){const t=this.removers.get(e);return!!t&&(t(),!0)}clearAllNotificationListeners(){this.eventEmitter.removeAllListeners()}clearNotificationListeners(e){this.eventEmitter.removeListeners(e)}sendNotifications(e,t){this.eventEmitter.emit(e,t)}};function Ar(e,t,r){return{variationKey:null,enabled:!1,variables:{},ruleKey:null,flagKey:e,userContext:t,reasons:r}}var jr="$opt_null_rule_key",Dr=class e{constructor({optimizely:e,userId:t,attributes:r}){this._qualifiedSegments=null,this.optimizely=e,this.userId=t,this.attributes=Object.assign({},r),this.forcedDecisionsMap={}}setAttribute(e,t){this.attributes[e]=t}getUserId(){return this.userId}getAttributes(){return Object.assign({},this.attributes)}getOptimizely(){return this.optimizely}get qualifiedSegments(){return this._qualifiedSegments}set qualifiedSegments(e){this._qualifiedSegments=e}decide(e,t=[]){return this.optimizely.decide(this.cloneUserContext(),e,t)}decideAsync(e,t){return this.optimizely.decideAsync(this.cloneUserContext(),e,t)}decideForKeys(e,t=[]){return this.optimizely.decideForKeys(this.cloneUserContext(),e,t)}decideForKeysAsync(e,t){return this.optimizely.decideForKeysAsync(this.cloneUserContext(),e,t)}decideAll(e=[]){return this.optimizely.decideAll(this.cloneUserContext(),e)}decideAllAsync(e=[]){return this.optimizely.decideAllAsync(this.cloneUserContext(),e)}trackEvent(e,t){this.optimizely.track(e,this.userId,this.attributes,t)}setForcedDecision(e,t){var r;const i=e.flagKey,n=null!==(r=e.ruleKey)&&void 0!==r?r:jr,s={variationKey:t.variationKey};return this.forcedDecisionsMap[i]||(this.forcedDecisionsMap[i]={}),this.forcedDecisionsMap[i][n]=s,!0}getForcedDecision(e){return this.findForcedDecision(e)}removeForcedDecision(e){var t;const r=null!==(t=e.ruleKey)&&void 0!==t?t:jr,i=e.flagKey;let n=!1;return this.forcedDecisionsMap.hasOwnProperty(i)&&(this.forcedDecisionsMap[i].hasOwnProperty(r)&&(delete this.forcedDecisionsMap[i][r],n=!0),0===Object.keys(this.forcedDecisionsMap[i]).length&&delete this.forcedDecisionsMap[i]),n}removeAllForcedDecisions(){return this.forcedDecisionsMap={},!0}findForcedDecision(e){var t;let r;const i=null!==(t=e.ruleKey)&&void 0!==t?t:jr,n=e.flagKey;if(this.forcedDecisionsMap.hasOwnProperty(e.flagKey)){const e=this.forcedDecisionsMap[n];if(e.hasOwnProperty(i))return r=e[i].variationKey,{variationKey:r}}return null}cloneUserContext(){const t=new e({optimizely:this.getOptimizely(),userId:this.getUserId(),attributes:this.getAttributes()});return Object.keys(this.forcedDecisionsMap).length>0&&(t.forcedDecisionsMap=Object.assign({},this.forcedDecisionsMap)),t._qualifiedSegments=this._qualifiedSegments,t}fetchQualifiedSegments(e){return xt(this,void 0,void 0,function*(){const t=yield this.optimizely.fetchQualifiedSegments(this.userId,e);return this.qualifiedSegments=t,null!==t})}isQualifiedFor(e){return!!this._qualifiedSegments&&this._qualifiedSegments.indexOf(e)>-1}},Tr=Math.pow(2,32),Fr=function(e){try{const t=G.default.v3(e,1)/Tr;return Math.floor(1e4*t)}catch(t){throw new Se("14",e,t.message)}},_r="User %s is not in any experiment of group %s.",Nr="User %s is not in experiment %s of group %s.",Ur="User %s is in experiment %s of group %s.",Vr="Assigned bucket %s to user with bucketing ID %s.",Kr="Bucketed into an invalid variation ID. Returning null.",Lr=function(e){var t,r,i,n,s;const o=[],a=e.experimentIdMap[e.experimentId],l=null==a?void 0:a.groupId;if(l){const n=e.groupIdMap[l];if(!n)throw new Se("23",l);if("random"===n.policy){const s=qr(n,e.bucketingId,e.userId,e.logger);if(null===s)return null===(t=e.logger)||void 0===t||t.info(_r,e.userId,l),o.push([_r,e.userId,l]),{result:null,reasons:o};if(s!==e.experimentId)return null===(r=e.logger)||void 0===r||r.info(Nr,e.userId,e.experimentKey,l),o.push([Nr,e.userId,e.experimentKey,l]),{result:null,reasons:o};null===(i=e.logger)||void 0===i||i.info(Ur,e.userId,e.experimentKey,l),o.push([Ur,e.userId,e.experimentKey,l])}}const u=`${e.bucketingId}${e.experimentId}`,c=Fr(u);null===(n=e.logger)||void 0===n||n.debug(Vr,c,e.userId),o.push([Vr,c,e.userId]);const d=Br(c,e.trafficAllocationConfig);return e.validateEntity&&null!==d&&!e.variationIdMap[d]?(d&&(null===(s=e.logger)||void 0===s||s.warn(Kr),o.push([Kr])),{result:null,reasons:o}):{result:d,reasons:o}},qr=function(e,t,r,i){const n=`${t}${e.id}`,s=Fr(n);null==i||i.debug(Vr,s,r);const o=e.trafficAllocation;return Br(s,o)},Br=function(e,t){for(let r=0;r<t.length;r++)if(e<t[r].endOfRange)return t[r].entityId;return null};function zr(e){return/^\d+$/.test(e)}function Hr(e){const t=e.indexOf("-"),r=e.indexOf("+");return!(t<0)&&(r<0||t<r)}function $r(e){const t=e.indexOf("-"),r=e.indexOf("+");return!(r<0)&&(t<0||r<t)}function Jr(e,t){let r=e,i="";if(/\s/.test(e))return null==t||t.warn(Fe,e),null;if(Hr(e)?(r=e.substring(0,e.indexOf("-")),i=e.substring(e.indexOf("-")+1)):$r(e)&&(r=e.substring(0,e.indexOf("+")),i=e.substring(e.indexOf("+")+1)),"string"!=typeof r||"string"!=typeof i)return null;const n=r.split(".").length-1;if(n>2)return null==t||t.warn(Fe,e),null;const s=r.split(".");if(s.length!=n+1)return null==t||t.warn(Fe,e),null;for(const r of s)if(!zr(r))return null==t||t.warn(Fe,e),null;return i&&s.push(i),s}var Gr="exact",Wr="exists",Qr="semver_eq",Yr="semver_ge",Xr="semver_gt",Zr="semver_le",ei="semver_lt",ti="substring",ri=[Gr,Wr,"gt","ge","lt","le",ti,Qr,ei,Zr,Xr,Yr],ii={};ii[Gr]=oi,ii[Wr]=function(e,t,r){return null!=t.getAttributes()[e.name]},ii.gt=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i>n:null},ii.ge=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i>=n:null},ii.lt=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i<n:null},ii.le=function(e,t,r){const i=t.getAttributes()[e.name],n=e.value;return ai(e,t,r)&&null!==n?i<=n:null},ii[ti]=function(e,t,r){const i=t.getAttributes(),n=e.name,s=i[e.name],o=typeof s,a=e.value;return"string"!=typeof a?(null==r||r.warn(De,JSON.stringify(e)),null):null===s?(null==r||r.debug(Me,JSON.stringify(e),n),null):"string"!=typeof s?(null==r||r.warn(Te,JSON.stringify(e),o,n),null):-1!==s.indexOf(a)},ii[Qr]=function(e,t,r){const i=li(e,t,r);return null===i?null:0===i},ii[Xr]=function(e,t,r){const i=li(e,t,r);return null===i?null:i>0},ii[Yr]=function(e,t,r){const i=li(e,t,r);return null===i?null:i>=0},ii[ei]=function(e,t,r){const i=li(e,t,r);return null===i?null:i<0},ii[Zr]=function(e,t,r){const i=li(e,t,r);return null===i?null:i<=0};var ni=e=>({evaluate:(t,r)=>function(e,t,r){const i=t.getAttributes(),n=e.match;if(void 0!==n&&-1===ri.indexOf(n))return null==r||r.warn(Fe,JSON.stringify(e)),null;const s=e.name;if(!i.hasOwnProperty(s)&&n!=Wr)return null==r||r.debug("18",JSON.stringify(e),s),null;let o;return o=n&&ii[n]||oi,o(e,t,r)}(t,r,e)});function si(e){return"string"==typeof e||"boolean"==typeof e||Ie.isNumber(e)}function oi(e,t,r){const i=t.getAttributes(),n=e.value,s=typeof n,o=e.name,a=i[o],l=typeof a;return!si(n)||Ie.isNumber(n)&&!Ie.isSafeInteger(n)?(null==r||r.warn(De,JSON.stringify(e)),null):null===a?(null==r||r.debug(Me,JSON.stringify(e),o),null):si(a)&&s===l?Ie.isNumber(a)&&!Ie.isSafeInteger(a)?(null==r||r.warn("45",JSON.stringify(e),o),null):n===a:(null==r||r.warn(Te,JSON.stringify(e),l,o),null)}function ai(e,t,r){const i=t.getAttributes(),n=e.name,s=i[n],o=typeof s,a=e.value;return null!==a&&Ie.isSafeInteger(a)?null===s?(null==r||r.debug(Me,JSON.stringify(e),n),!1):Ie.isNumber(s)?!!Ie.isSafeInteger(s)||(null==r||r.warn("45",JSON.stringify(e),n),!1):(null==r||r.warn(Te,JSON.stringify(e),o,n),!1):(null==r||r.warn(De,JSON.stringify(e)),!1)}function li(e,t,r){const i=t.getAttributes(),n=e.name,s=i[n],o=typeof s,a=e.value;return"string"!=typeof a?(null==r||r.warn(De,JSON.stringify(e)),null):null===s?(null==r||r.debug(Me,JSON.stringify(e),n),null):"string"!=typeof s?(null==r||r.warn(Te,JSON.stringify(e),o,n),null):function(e,t,r){const i=Jr(t,r),n=Jr(e,r);if(!i||!n)return null;const s=i.length;for(let r=0;r<n.length;r++){if(s<=r)return Hr(e)||$r(e)?1:-1;if(zr(i[r])){const e=parseInt(i[r]),t=parseInt(n[r]);if(e>t)return 1;if(e<t)return-1}else{if(i[r]<n[r])return Hr(e)&&!Hr(t)?1:-1;if(i[r]>n[r])return!Hr(e)&&Hr(t)?-1:1}}return Hr(t)&&!Hr(e)?-1:0}(a,s,r)}var ui="qualified",ci=[ui],di={};di[ui]=gi;var hi=e=>({evaluate:(t,r)=>function(e,t,r){const i=e.match;if(void 0!==i&&-1===ci.indexOf(i))return null==r||r.warn(Fe,JSON.stringify(e)),null;let n;return n=i&&di[i]||gi,n(e,t)}(t,r,e)});function gi(e,t){return t.isQualifiedFor(e.value)}var pi=class{constructor(e,t){this.logger=t,this.typeToEvaluatorMap=Object.assign(Object.assign({},e),{custom_attribute:ni(this.logger),third_party_dimension:hi(this.logger)})}evaluate(e,t,r){return!e||0===e.length||!!et(e,e=>{var i,n;const s=t[e];if(s){null===(i=this.logger)||void 0===i||i.debug("5",e,JSON.stringify(s.conditions));const t=et(s.conditions,this.evaluateConditionWithUserAttributes.bind(this,r)),o=null===t?"UNKNOWN":t.toString().toUpperCase();return null===(n=this.logger)||void 0===n||n.debug("1",e,o),t}return null})}evaluateConditionWithUserAttributes(e,t){var r,i;const n=this.typeToEvaluatorMap[t.type];if(!n)return null===(r=this.logger)||void 0===r||r.warn("60",JSON.stringify(t)),null;try{return n.evaluate(t,e)}catch(e){null===(i=this.logger)||void 0===i||i.error("2",t.type,e.message)}return null}};function fi(e){return"string"==typeof e&&""!==e}var vi=class e{constructor(e,t){this.op=e,this.val=t}get(){return this.val}then(t){if("sync"===this.op){const r=t(this.val);return e.of(this.op,r.get())}return e.of(this.op,this.val.then(t))}static of(t,r){if("sync"===t){if((i=r)&&"function"==typeof i.then)throw new Se("Promise value is not allowed in sync operation");return new e(t,r)}var i;return new e(t,Promise.resolve(r))}};vi.all=(e,t)=>{if("sync"===e){const r=t.map(e=>e.get());return vi.of(e,r)}const r=t.map(e=>e.get());return vi.of(e,Promise.all(r))};var mi="Experiment %s is not running.",yi='Returning previously activated variation "%s" of experiment "%s" for user "%s" from user profile.',bi="User %s does not meet conditions to be in experiment %s.",Ei="User %s is in no variation of experiment %s.",Ii="User %s is in variation %s of experiment %s.",Si="User %s is forced in variation %s.",xi="Variation key %s is not in datafile. Not activating user %s.",wi='Evaluating audiences for %s "%s": %s.',Oi="Audiences for %s %s collectively evaluated to %s.",ki="User %s is in rollout of feature %s.",Mi="User %s is not in rollout of feature %s.",Ri="Feature %s is not attached to any experiments.",Ci="User %s does not meet conditions for targeting rule %s.",Pi="User %s not bucketed into targeting rule %s due to traffic allocation. Trying everyone rule.",Ai="User %s bucketed into targeting rule %s.",ji="There is no rollout of feature %s.",Di="Invalid rollout ID %s attached to feature %s",Ti="Rollout of feature %s has no experiments",Fi="Experiment key %s is improperly formatted.",_i="Variation %s is mapped to experiment %s and user %s in the forced variation map.",Ni="User %s meets conditions for targeting rule %s.",Ui="Variation (%s) is mapped to flag (%s), rule (%s) and user (%s) in the forced decision map.",Vi="Variation (%s) is mapped to flag (%s) and user (%s) in the forced decision map.",Ki="Invalid variation is mapped to flag (%s), rule (%s) and user (%s) in the forced decision map.",Li="Invalid variation is mapped to flag (%s) and user (%s) in the forced decision map.",qi="Failed to fetch CMAB data for experiment %s.",Bi="Holdout %s is not running.",zi="User %s meets conditions for holdout %s.",Hi="User %s does not meet conditions for holdout %s.",$i="User %s is in variation %s of holdout %s.",Ji="User %s is in no holdout variation.",Gi=class{constructor(e){var t,r,i;this.logger=e.logger,null===(t=this.logger)||void 0===t||t.setName("DecisionService"),this.audienceEvaluator=(r=e.UNSTABLE_conditionEvaluators,i=this.logger,new pi(r,i)),this.forcedVariationMap={},this.userProfileService=e.userProfileService,this.userProfileServiceAsync=e.userProfileServiceAsync,this.cmabService=e.cmabService}isCmab(e){return!!e.cmab}resolveVariation(e,t,r,i,n,s){var o,a,l;const u=i.getUserId(),c=r.key;if(ct(t,c)!==nt)return null===(o=this.logger)||void 0===o||o.info(mi,c),vi.of(e,{result:{},reasons:[[mi,c]]});const d=[],h=this.getForcedVariation(t,c,u);d.push(...h.reasons);const g=h.result;if(g)return vi.of(e,{result:{variationKey:g},reasons:d});const p=this.getWhitelistedVariation(r,u);d.push(...p.reasons);let f=p.result;if(f)return vi.of(e,{result:{variationKey:f.key},reasons:d});if(s&&(f=this.getStoredVariation(t,r,u,s.userProfile),f))return null===(a=this.logger)||void 0===a||a.info(yi,f.key,c,u),d.push([yi,f.key,c,u]),vi.of(e,{result:{variationKey:f.key},reasons:d});const v=this.checkIfUserIsInAudience(t,r,se,i,"");return d.push(...v.reasons),v.result?(this.isCmab(r)?this.getDecisionForCmabExperiment(e,t,r,i,n):this.getDecisionFromBucketer(e,t,r,i)).then(i=>{var n,o;if(d.push(...i.reasons),i.error)return vi.of(e,{error:!0,result:{},reasons:d});const a=i.result.variationId;return f=a?t.variationIdMap[a]:null,f?(null===(o=this.logger)||void 0===o||o.info(Ii,u,f.key,c),d.push([Ii,u,f.key,c]),s&&!this.isCmab(r)&&this.updateUserProfile(r,f,s),vi.of(e,{result:{variationKey:f.key,cmabUuid:i.result.cmabUuid},reasons:d})):(null===(n=this.logger)||void 0===n||n.debug(Ei,u,c),d.push([Ei,u,c]),vi.of(e,{result:{},reasons:d}))}):(null===(l=this.logger)||void 0===l||l.info(bi,u,c),d.push([bi,u,c]),vi.of(e,{result:{},reasons:d}))}getDecisionForCmabExperiment(e,t,r,i,n){if("sync"===e)return vi.of(e,{error:!1,result:{},reasons:[["CMAB is not supported in sync mode."]]});const s=i.getUserId(),o=i.getAttributes(),a=this.getBucketingId(s,o),l=this.buildBucketerParams(t,r,a,s),u=Lr(l);if("$"!==u.result)return vi.of(e,{error:!1,result:{},reasons:u.reasons});const c=this.cmabService.getDecision(t,i,r.id,n).then(e=>({error:!1,result:e,reasons:[]})).catch(e=>{var t;return null===(t=this.logger)||void 0===t||t.error(qi,r.key),{error:!0,result:{},reasons:[[qi,r.key]]}});return vi.of(e,c)}getDecisionFromBucketer(e,t,r,i){const n=i.getUserId(),s=i.getAttributes(),o=this.getBucketingId(n,s),a=this.buildBucketerParams(t,r,o,n),l=Lr(a);return vi.of(e,{result:{variationId:l.result||void 0},reasons:l.reasons})}getVariation(e,t,r,i={}){const n=i[Qt.IGNORE_USER_PROFILE_SERVICE]?void 0:{isProfileUpdated:!1,userProfile:this.resolveExperimentBucketMap("sync",r.getUserId(),r.getAttributes()).get()},s=this.resolveVariation("sync",e,t,r,i,n).get();return n&&this.saveUserProfile("sync",r.getUserId(),n),{result:s.result.variationKey||null,reasons:s.reasons}}resolveExperimentBucketMap(e,t,r={}){const i=r.$opt_experiment_bucket_map||{};return this.getUserProfile(e,t).then(t=>{const r=(null==t?void 0:t.experiment_bucket_map)||{};return vi.of(e,Object.assign(Object.assign({},r),i))})}getWhitelistedVariation(e,t){var r,i;const n=[];if(e.forcedVariations&&e.forcedVariations.hasOwnProperty(t)){const s=e.forcedVariations[t];return e.variationKeyMap.hasOwnProperty(s)?(null===(r=this.logger)||void 0===r||r.info(Si,t,s),n.push([Si,t,s]),{result:e.variationKeyMap[s],reasons:n}):(null===(i=this.logger)||void 0===i||i.error(xi,s,t),n.push([xi,s,t]),{result:null,reasons:n})}return{result:null,reasons:n}}checkIfUserIsInAudience(e,t,r,i,n){var s,o;const a=[],l=t.audienceConditions||t.audienceIds,u=e.audiencesById;null===(s=this.logger)||void 0===s||s.debug(wi,r,n||t.key,JSON.stringify(l)),a.push([wi,r,n||t.key,JSON.stringify(l)]);const c=this.audienceEvaluator.evaluate(l,u,i);return null===(o=this.logger)||void 0===o||o.info(Oi,r,n||t.key,c.toString().toUpperCase()),a.push([Oi,r,n||t.key,c.toString().toUpperCase()]),{result:c,reasons:a}}buildBucketerParams(e,t,r,i){let n=!0,s=t.trafficAllocation;return"cmab"in t&&t.cmab&&(s=[{entityId:"$",endOfRange:t.cmab.trafficAllocation}],n=!1),{bucketingId:r,experimentId:t.id,experimentKey:t.key,experimentIdMap:e.experimentIdMap,experimentKeyMap:e.experimentKeyMap,groupIdMap:e.groupIdMap,logger:this.logger,trafficAllocationConfig:s,userId:i,variationIdMap:e.variationIdMap,validateEntity:n}}getVariationForHoldout(e,t,r){var i,n,s,o,a;const l=r.getUserId(),u=[];if("Running"!==t.status){const e=[Bi,t.key];return u.push(e),null===(i=this.logger)||void 0===i||i.info(Bi,t.key),{result:{experiment:null,variation:null,decisionSource:ne.HOLDOUT},reasons:u}}const c=this.checkIfUserIsInAudience(e,t,se,r);if(u.push(...c.reasons),!c.result){const e=[Hi,l,t.key];return u.push(e),null===(n=this.logger)||void 0===n||n.info(Hi,l,t.key),{result:{experiment:null,variation:null,decisionSource:ne.HOLDOUT},reasons:u}}const d=[zi,l,t.key];u.push(d),null===(s=this.logger)||void 0===s||s.info(zi,l,t.key);const h=r.getAttributes(),g=this.getBucketingId(l,h),p=this.buildBucketerParams(e,t,g,l),f=Lr(p);if(u.push(...f.reasons),f.result){const r=e.variationIdMap[f.result];if(r){const e=[$i,l,t.key,r.key];return u.push(e),null===(o=this.logger)||void 0===o||o.info($i,l,t.key,r.key),{result:{experiment:t,variation:r,decisionSource:ne.HOLDOUT},reasons:u}}}const v=[Ji,l];return u.push(v),null===(a=this.logger)||void 0===a||a.info(Ji,l),{result:{experiment:null,variation:null,decisionSource:ne.HOLDOUT},reasons:u}}getStoredVariation(e,t,r,i){var n;if(null==i?void 0:i.hasOwnProperty(t.id)){const s=i[t.id],o=s.variation_id;if(e.variationIdMap.hasOwnProperty(o))return e.variationIdMap[s.variation_id];null===(n=this.logger)||void 0===n||n.info("26",r,o,t.key)}return null}getUserProfile(e,t){var r;const i={user_id:t,experiment_bucket_map:{}};if(this.userProfileService){try{return vi.of(e,this.userProfileService.lookup(t))}catch(e){null===(r=this.logger)||void 0===r||r.error("66",t,e.message)}return vi.of(e,i)}return this.userProfileServiceAsync&&"async"===e?vi.of(e,this.userProfileServiceAsync.lookup(t).catch(e=>{var r;return null===(r=this.logger)||void 0===r||r.error("66",t,e.message),i})):vi.of(e,i)}updateUserProfile(e,t,r){r.userProfile&&(r.userProfile[e.id]={variation_id:t.id},r.isProfileUpdated=!0)}saveUserProfile(e,t,r){var i,n;const{userProfile:s,isProfileUpdated:o}=r;if(!s||!o)return vi.of(e,void 0);if("sync"===e&&!this.userProfileService)return vi.of(e,void 0);if(this.userProfileService){try{this.userProfileService.save({user_id:t,experiment_bucket_map:s}),null===(i=this.logger)||void 0===i||i.info("25",t)}catch(e){null===(n=this.logger)||void 0===n||n.error("67",t,e.message)}return vi.of(e,void 0)}return this.userProfileServiceAsync?vi.of(e,this.userProfileServiceAsync.save({user_id:t,experiment_bucket_map:s}).catch(e=>{var r;null===(r=this.logger)||void 0===r||r.error("67",t,e.message)})):vi.of(e,void 0)}getVariationsForFeatureList(e,t,r,i={}){return this.resolveVariationsForFeatureList("sync",e,t,r,i).get()}resolveVariationsForFeatureList(e,t,r,i,n){const s=i.getUserId(),o=i.getAttributes();return(n[Qt.IGNORE_USER_PROFILE_SERVICE]?vi.of(e,void 0):this.resolveExperimentBucketMap(e,s,o).then(t=>vi.of(e,{isProfileUpdated:!1,userProfile:t}))).then(o=>{const a=r.map(r=>this.resolveVariationForFlag(e,t,r,i,n,o)),l=vi.all(e,a);return l.then(()=>(o&&this.saveUserProfile(e,s,o),l))})}resolveVariationForFlag(e,t,r,i,n,s){const o=[],a=this.findValidatedForcedDecision(t,i,r.key);if(o.push(...a.reasons),a.result)return vi.of(e,{result:{variation:a.result,experiment:null,decisionSource:ne.FEATURE_TEST},reasons:o});const l=((e,t)=>{if(e.flagHoldoutsMap[t])return e.flagHoldoutsMap[t];const r=[...e.globalHoldouts.filter(r=>!(e.excludedHoldouts[t]||[]).includes(r)),...e.includedHoldouts[t]||[]];return e.flagHoldoutsMap[t]=r,r})(t,r.key);for(const r of l){const n=this.getVariationForHoldout(t,r,i);if(o.push(...n.reasons),n.result.variation)return vi.of(e,{result:n.result,reasons:o})}return this.getVariationForFeatureExperiment(e,t,r,i,n,s).then(n=>{var s,a;if(n.error||null!==n.result.variation)return vi.of(e,Object.assign(Object.assign({},n),{reasons:[...o,...n.reasons]}));o.push(...n.reasons);const l=this.getVariationForRollout(t,r,i);o.push(...l.reasons);const u=l.result,c=i.getUserId();return u.variation?(null===(s=this.logger)||void 0===s||s.debug(ki,c,r.key),o.push([ki,c,r.key])):(null===(a=this.logger)||void 0===a||a.debug(Mi,c,r.key),o.push([Mi,c,r.key])),vi.of(e,{result:u,reasons:o})})}getVariationForFeature(e,t,r,i={}){return this.resolveVariationsForFeatureList("sync",e,[t],r,i).get()[0]}getVariationForFeatureExperiment(e,t,r,i,n,s){var o;return 0===r.experimentIds.length?(null===(o=this.logger)||void 0===o||o.debug(Ri,r.key),vi.of(e,{result:{experiment:null,variation:null,decisionSource:ne.FEATURE_TEST},reasons:[[Ri,r.key]]})):this.traverseFeatureExperimentList(e,t,r,0,i,[],n,s)}traverseFeatureExperimentList(e,t,r,i,n,s,o,a){const l=r.experimentIds;if(i>=l.length)return vi.of(e,{result:{experiment:null,variation:null,decisionSource:ne.FEATURE_TEST},reasons:s});const u=function(e,t,r){if(e.experimentIdMap.hasOwnProperty(t)){const r=e.experimentIdMap[t];if(r)return r}return null==r||r.error("21",t),null}(t,l[i],this.logger);return u?this.getVariationFromExperimentRule(e,t,r.key,u,n,o,a).then(l=>{if(s.push(...l.reasons),l.error)return vi.of(e,{error:!0,result:{experiment:u,variation:null,decisionSource:ne.FEATURE_TEST},reasons:s});if(!l.result.variationKey)return this.traverseFeatureExperimentList(e,t,r,i+1,n,s,o,a);const c=l.result.variationKey;let d=u.variationKeyMap[c];return d||(d=ht(t,r.key,c)),vi.of(e,{result:{cmabUuid:l.result.cmabUuid,experiment:u,variation:d,decisionSource:ne.FEATURE_TEST},reasons:s})}):this.traverseFeatureExperimentList(e,t,r,i+1,n,s,o,a)}getVariationForRollout(e,t,r){var i,n,s;const o=[];let a;if(!t.rolloutId)return null===(i=this.logger)||void 0===i||i.debug(ji,t.key),o.push([ji,t.key]),a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o};const l=e.rolloutIdMap[t.rolloutId];if(!l)return null===(n=this.logger)||void 0===n||n.error(Di,t.rolloutId,t.key),o.push([Di,t.rolloutId,t.key]),a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o};const u=l.experiments;if(0===u.length)return null===(s=this.logger)||void 0===s||s.error(Ti,t.rolloutId),o.push([Ti,t.rolloutId]),a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o};let c,d,h,g,p=0;for(;p<u.length;){if(c=this.getVariationFromDeliveryRule(e,t.key,u,p,r),o.push(...c.reasons),h=c.result,d=c.skipToEveryoneElse,h)return g=e.experimentIdMap[u[p].id],a={experiment:g,variation:h,decisionSource:ne.ROLLOUT},{result:a,reasons:o};p=d?u.length-1:p+1}return a={experiment:null,variation:null,decisionSource:ne.ROLLOUT},{result:a,reasons:o}}getBucketingId(e,t){var r,i;let n=e;return null!=t&&"object"==typeof t&&t.hasOwnProperty(ee)&&("string"==typeof t[ee]?(n=String(t[ee]),null===(r=this.logger)||void 0===r||r.debug("37",n)):null===(i=this.logger)||void 0===i||i.warn("0")),n}findValidatedForcedDecision(e,t,r,i){var n,s,o,a;const l=[],u=t.getForcedDecision({flagKey:r,ruleKey:i});let c,d=null;const h=t.getUserId();return e&&u&&(c=u.variationKey,d=ht(e,r,c),d?i?(null===(n=this.logger)||void 0===n||n.info(Ui,c,r,i,h),l.push([Ui,c,r,i,h])):(null===(s=this.logger)||void 0===s||s.info(Vi,c,r,h),l.push([Vi,c,r,h])):i?(null===(o=this.logger)||void 0===o||o.info(Ki,r,i,h),l.push([Ki,r,i,h])):(null===(a=this.logger)||void 0===a||a.info(Li,r,h),l.push([Li,r,h]))),{result:d,reasons:l}}removeForcedVariation(e,t,r){var i;if(!e)throw new Se("26");if(!this.forcedVariationMap.hasOwnProperty(e))throw new Se("65",e);delete this.forcedVariationMap[e][t],null===(i=this.logger)||void 0===i||i.debug("41",r,e)}setInForcedVariationMap(e,t,r){var i;this.forcedVariationMap.hasOwnProperty(e)||(this.forcedVariationMap[e]={}),this.forcedVariationMap[e][t]=r,null===(i=this.logger)||void 0===i||i.debug("34",r,t,e)}getForcedVariation(e,t,r){var i,n,s,o,a,l;const u=[],c=this.forcedVariationMap[r];if(!c)return null===(i=this.logger)||void 0===i||i.debug("32",r),{result:null,reasons:u};let d;try{const r=dt(e,t);if(!r.hasOwnProperty("id"))return null===(n=this.logger)||void 0===n||n.error(Fi,t),u.push([Fi,t]),{result:null,reasons:u};d=r.id}catch(p){return null===(s=this.logger)||void 0===s||s.error(p),u.push(p.message),{result:null,reasons:u}}const h=c[d];if(!h)return null===(o=this.logger)||void 0===o||o.debug("33",t,r),{result:null,reasons:u};const g=(f=h,(p=e).variationIdMap.hasOwnProperty(f)?p.variationIdMap[f].key:null);var p,f;return g?(null===(a=this.logger)||void 0===a||a.debug(_i,g,t,r),u.push([_i,g,t,r])):null===(l=this.logger)||void 0===l||l.debug("33",t,r),{result:g,reasons:u}}setForcedVariation(e,t,r,i){var n,s,o,a,l,u;if(null!=i&&!fi(i))return null===(n=this.logger)||void 0===n||n.error("28"),!1;let c;try{const r=dt(e,t);if(!r.hasOwnProperty("id"))return null===(s=this.logger)||void 0===s||s.error(Fi,t),!1;c=r.id}catch(e){return null===(o=this.logger)||void 0===o||o.error(e),!1}if(null==i)try{return this.removeForcedVariation(r,c,t),!0}catch(e){return null===(a=this.logger)||void 0===a||a.error(e),!1}const d=function(e,t,r){const i=e.experimentKeyMap[t];return i.variationKeyMap.hasOwnProperty(r)?i.variationKeyMap[r].id:null}(e,t,i);if(!d)return null===(l=this.logger)||void 0===l||l.error("37",i,t),!1;try{return this.setInForcedVariationMap(r,c,d),!0}catch(e){return null===(u=this.logger)||void 0===u||u.error(e),!1}}getVariationFromExperimentRule(e,t,r,i,n,s,o){const a=[],l=this.findValidatedForcedDecision(t,n,r,i.key);a.push(...l.reasons);const u=l.result;return u?vi.of(e,{result:{variationKey:u.key},reasons:a}):this.resolveVariation(e,t,i,n,s,o).then(t=>(a.push(...t.reasons),vi.of(e,{error:t.error,result:t.result,reasons:a})))}getVariationFromDeliveryRule(e,t,r,i,n){var s,o,a,l;const u=[];let c=!1;const d=r[i],h=this.findValidatedForcedDecision(e,n,t,d.key);u.push(...h.reasons);const g=h.result;if(g)return{result:g,reasons:u,skipToEveryoneElse:c};const p=n.getUserId(),f=n.getAttributes(),v=this.getBucketingId(p,f),m=i===r.length-1,y=m?"Everyone Else":i+1;let b,E,I,S=null;const x=this.checkIfUserIsInAudience(e,d,"rule",n,y);var w,O;return u.push(...x.reasons),x.result?(null===(s=this.logger)||void 0===s||s.debug(Ni,p,y),u.push([Ni,p,y]),E=this.buildBucketerParams(e,d,v,p),I=Lr(E),u.push(...I.reasons),b=I.result,b&&(O=b,S=(w=e).variationIdMap.hasOwnProperty(O)?w.variationIdMap[O]:null),S?(null===(o=this.logger)||void 0===o||o.debug(Ai,p,y),u.push([Ai,p,y])):m||(null===(a=this.logger)||void 0===a||a.debug(Pi,p,y),u.push([Pi,p,y]),c=!0)):(null===(l=this.logger)||void 0===l||l.debug(Ci,p,y),u.push([Ci,p,y])),{result:S,reasons:u,skipToEveryoneElse:c}}},Wi=class extends Et{constructor(e){var t,r,i,n,s,o,a,l,u,c,d;super(),this.cleanupTasks=new Map,this.nextCleanupTaskId=0;let h=e.clientEngine;h||(null===(t=e.logger)||void 0===t||t.info("13",h),h=re),this.clientEngine=h,this.clientVersion=e.clientVersion||ie,this.errorNotifier=e.errorNotifier,this.logger=e.logger,this.projectConfigManager=e.projectConfigManager,this.errorReporter=new Cr(this.logger,this.errorNotifier),this.odpManager=e.odpManager,this.vuidManager=e.vuidManager,this.eventProcessor=e.eventProcessor,e.disposable&&(this.projectConfigManager.makeDisposable(),null===(r=this.eventProcessor)||void 0===r||r.makeDisposable(),null===(i=this.odpManager)||void 0===i||i.makeDisposable()),this.logger&&(this.projectConfigManager.setLogger(this.logger.child()),null===(n=this.eventProcessor)||void 0===n||n.setLogger(this.logger.child()),null===(s=this.odpManager)||void 0===s||s.setLogger(this.logger.child()));let g=null!==(o=e.defaultDecideOptions)&&void 0!==o?o:[];Array.isArray(g)||(null===(a=this.logger)||void 0===a||a.debug("15"),g=[]);const p={};let f;if(g.forEach(e=>{var t;Qt[e]?p[e]=!0:null===(t=this.logger)||void 0===t||t.warn("63",e)}),this.defaultDecideOptions=p,this.projectConfigManager=e.projectConfigManager,this.projectConfigManager.onUpdate(e=>{var t;null===(t=this.logger)||void 0===t||t.info("31",e.revision,e.projectId),this.notificationCenter.sendNotifications(Xt.OPTIMIZELY_CONFIG_UPDATE,void 0),this.updateOdpSettings()}),this.eventProcessor=e.eventProcessor,null===(l=this.eventProcessor)||void 0===l||l.onDispatch(e=>{this.notificationCenter.sendNotifications(Xt.LOG_EVENT,e)}),this.odpManager=e.odpManager,e.userProfileService)try{(function(e){if("object"==typeof e&&null!==e){if("function"!=typeof e.lookup)throw new Se(Pe,"Missing function 'lookup'");if("function"!=typeof e.save)throw new Se(Pe,"Missing function 'save'");return!0}throw new Se(Pe,"Not an object")})(e.userProfileService)&&(f=e.userProfileService,null===(u=this.logger)||void 0===u||u.info("39"))}catch(m){null===(c=this.logger)||void 0===c||c.warn(m)}var v,m;this.decisionService=(v={userProfileService:f,userProfileServiceAsync:e.userProfileServiceAsync||void 0,cmabService:e.cmabService,logger:null===(d=this.logger)||void 0===d?void 0:d.child(),UNSTABLE_conditionEvaluators:e.UNSTABLE_conditionEvaluators},new Gi(v)),this.notificationCenter=(m={logger:this.logger,errorNotifier:this.errorNotifier},new Pr(m)),this.start()}start(){var e,t;this.isNew()&&(super.start(),this.state=mt.Starting,this.projectConfigManager.start(),null===(e=this.eventProcessor)||void 0===e||e.start(),null===(t=this.odpManager)||void 0===t||t.start(),Promise.all([this.projectConfigManager.onRunning(),this.eventProcessor?this.eventProcessor.onRunning():Promise.resolve(),this.odpManager?this.odpManager.onRunning():Promise.resolve(),this.vuidManager?this.vuidManager.initialize():Promise.resolve()]).then(()=>{var e,t;this.state=mt.Running,this.startPromise.resolve();const r=null===(e=this.vuidManager)||void 0===e?void 0:e.getVuid();r&&(null===(t=this.odpManager)||void 0===t||t.setVuid(r))}).catch(e=>{this.state=mt.Failed,this.errorReporter.report(e),this.startPromise.reject(e)}))}getProjectConfig(){return this.projectConfigManager.getConfig()||null}activate(e,t,r){var i,n,s;try{const o=this.getProjectConfig();if(!o)return this.errorReporter.report(Ae,"activate"),null;if(!this.validateInputs({experiment_key:e,user_id:t},r))return this.notActivatingExperiment(e,t);try{const n=this.getVariation(e,t,r);if(null===n)return this.notActivatingExperiment(e,t);if(ct(s=o,e)!==nt)return null===(i=this.logger)||void 0===i||i.debug("27",e),n;const a=dt(o,e),l={experiment:a,variation:a.variationKeyMap[n],decisionSource:ne.EXPERIMENT};return this.sendImpressionEvent(l,"",t,!0,r),n}catch(r){return null===(n=this.logger)||void 0===n||n.info("19",t,e),this.errorReporter.report(r),null}}catch(s){return this.errorReporter.report(s),null}}sendImpressionEvent(e,t,r,i,n){var s;if(!this.eventProcessor)return void(null===(s=this.logger)||void 0===s||s.error("33"));const o=this.getProjectConfig();if(!o)return;const a=function({configObj:e,decisionObj:t,userId:r,flagKey:i,enabled:n,userAttributes:s,clientEngine:o,clientVersion:a}){const l=t.decisionSource,u=$t(t),c=null!==(v=null===(f=t.experiment)||void 0===f?void 0:f.id)&&void 0!==v?v:null,d=Jt(t),h=function(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.id)&&void 0!==r?r:null}(t),g=t.cmabUuid,p=null!==c?l===ne.HOLDOUT?"":function(e,t){const r=e.experimentIdMap[t];if(!r)throw new Se("21",t);return r.layerId}(e,c):null;var f,v;return Object.assign(Object.assign({},rr({configObj:e,userId:r,userAttributes:s,clientEngine:o,clientVersion:a,type:"impression"})),{layer:{id:p},experiment:{id:c,key:u},variation:{id:h,key:d},ruleKey:u,flagKey:i,ruleType:l,enabled:n,cmabUuid:g})}({decisionObj:e,flagKey:t,enabled:i,userId:r,userAttributes:n,clientEngine:this.clientEngine,clientVersion:this.clientVersion,configObj:o});this.eventProcessor.process(a);const l=qt([a]),u={experiment:null,holdout:null,userId:r,attributes:n,variation:e.variation,logEvent:l};var c;e.experiment&&(void 0!==(c=e.experiment).status&&Array.isArray(c.includedFlags)&&Array.isArray(c.excludedFlags)?u.holdout=e.experiment:u.experiment=e.experiment),this.notificationCenter.sendNotifications(Xt.ACTIVATE,u)}track(e,t,r,i){var n,s,o,a,l,u,c;try{if(!this.eventProcessor)return void(null===(n=this.logger)||void 0===n||n.error("33"));const l=this.getProjectConfig();if(!l)return void this.errorReporter.report(Ae,"track");if(!this.validateInputs({user_id:t,event_key:e},r,i))return;if(c=e,!(u=l).eventKeyMap.hasOwnProperty(c))return null===(s=this.logger)||void 0===s||s.warn("7",e),void(null===(o=this.logger)||void 0===o||o.warn("31",t));const d=function({configObj:e,userId:t,userAttributes:r,clientEngine:i,clientVersion:n,eventKey:s,eventTags:o},a){const l=function(e,t){const r=e.eventKeyMap[t];return r?r.id:null}(e,s),u=o?function(e,t){const r=e.revenue;if(null==r)return null;const i="string"==typeof r?parseInt(r):Math.trunc(r);return isFinite(i)?(null==t||t.info("21",i),i):(null==t||t.info("6",r),null)}(o,a):null,c=o?function(e,t){const r=e.value;if(null==r)return null;const i="string"==typeof r?parseFloat(r):r;return isFinite(i)?(null==t||t.info("20",i),i):(null==t||t.info("7",r),null)}(o,a):null;return Object.assign(Object.assign({},rr({configObj:e,userId:t,userAttributes:r,clientEngine:i,clientVersion:n,type:"conversion"})),{event:{id:l,key:s},revenue:u,value:c,tags:o})}({eventKey:e,eventTags:i=this.filterEmptyValues(i),userId:t,userAttributes:r,clientEngine:this.clientEngine,clientVersion:this.clientVersion,configObj:l},this.logger);null===(a=this.logger)||void 0===a||a.info("29",e,t),this.eventProcessor.process(d);const h=qt([d]);this.notificationCenter.sendNotifications(Xt.TRACK,{eventKey:e,userId:t,attributes:r,eventTags:i,logEvent:h})}catch(u){this.errorReporter.report(u),null===(l=this.logger)||void 0===l||l.error("31",t)}}getVariation(e,t,r){var i,n,s;try{const o=this.getProjectConfig();if(!o)return this.errorReporter.report(Ae,"getVariation"),null;try{if(!this.validateInputs({experiment_key:e,user_id:t},r))return null;const a=o.experimentKeyMap[e];if(!a||a.isRollout)return null===(i=this.logger)||void 0===i||i.debug("16",e),null;const l=this.decisionService.getVariation(o,a,this.createInternalUserContext(t,r)).result,u=(n=o,s=a.id,n.experimentFeatureMap.hasOwnProperty(s)?Yt.FEATURE_TEST:Yt.AB_TEST);return this.notificationCenter.sendNotifications(Xt.DECISION,{type:u,userId:t,attributes:r||{},decisionInfo:{experimentKey:e,variationKey:l}}),l}catch(e){return this.errorReporter.report(e),null}}catch(e){return this.errorReporter.report(e),null}}setForcedVariation(e,t,r){if(!this.validateInputs({experiment_key:e,user_id:t}))return!1;const i=this.getProjectConfig();if(!i)return!1;try{return this.decisionService.setForcedVariation(i,e,t,r)}catch(e){return this.errorReporter.report(e),!1}}getForcedVariation(e,t){if(!this.validateInputs({experiment_key:e,user_id:t}))return null;const r=this.getProjectConfig();if(!r)return null;try{return this.decisionService.getForcedVariation(r,e,t).result}catch(e){return this.errorReporter.report(e),null}}validateInputs(e,t,r){try{if(e.hasOwnProperty("user_id")){const t=e.user_id;if("string"!=typeof t||null===t||"undefined"===t)throw new Se("24","user_id");delete e.user_id}return Object.keys(e).forEach(t=>{if(!fi(e[t]))throw new Se("24",t)}),t&&function(e){if("object"!=typeof e||Array.isArray(e)||null===e)throw new Se("13");Object.keys(e).forEach(function(t){if(void 0===e[t])throw new Se("56",t)})}(t),r&&function(e){if("object"!=typeof e||Array.isArray(e)||null===e)throw new Se("20")}(r),!0}catch(e){return this.errorReporter.report(e),!1}}notActivatingExperiment(e,t){var r;return null===(r=this.logger)||void 0===r||r.info("19",t,e),null}filterEmptyValues(e){for(const t in e){const r=t;!e.hasOwnProperty(r)||null!==e[r]&&void 0!==e[r]||delete e[r]}return e}isFeatureEnabled(e,t,r){var i,n;try{const s=this.getProjectConfig();if(!s)return this.errorReporter.report(Ae,"isFeatureEnabled"),!1;if(!this.validateInputs({feature_key:e,user_id:t},r))return!1;const o=gt(s,e,this.logger);if(!o)return!1;let a={};const l=this.createInternalUserContext(t,r),u=this.decisionService.getVariationForFeature(s,o,l).result,c=u.decisionSource,d=$t(u),h=Jt(u);let g=Gt(u);c!==ne.FEATURE_TEST&&c!==ne.HOLDOUT||(a={experimentKey:d,variationKey:h}),(c===ne.FEATURE_TEST||c===ne.HOLDOUT||c===ne.ROLLOUT&&pt(s))&&this.sendImpressionEvent(u,o.key,t,g,r),!0===g?null===(i=this.logger)||void 0===i||i.info("8",e,t):(null===(n=this.logger)||void 0===n||n.info("9",e,t),g=!1);const p={featureKey:e,featureEnabled:g,source:u.decisionSource,sourceInfo:a};return this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.FEATURE,userId:t,attributes:r||{},decisionInfo:p}),g}catch(e){return this.errorReporter.report(e),!1}}getEnabledFeatures(e,t){try{const r=[],i=this.getProjectConfig();return i?this.validateInputs({user_id:e})?(ve(i.featureKeyMap).forEach(i=>{this.isFeatureEnabled(i.key,e,t)&&r.push(i.key)}),r):r:(this.errorReporter.report(Ae,"getEnabledFeatures"),r)}catch(e){return this.errorReporter.report(e),[]}}getFeatureVariable(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,null,r,i):(this.errorReporter.report(Ae,"getFeatureVariable"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableForType(e,t,r,i,n){var s;if(!this.validateInputs({feature_key:e,variable_key:t,user_id:i},n))return null;const o=this.getProjectConfig();if(!o)return null;const a=gt(o,e,this.logger);if(!a)return null;const l=function(e,t,r,i){const n=e.featureKeyMap[t];if(!n)return null==i||i.error(Ce,t),null;return n.variableKeyMap[r]||(null==i||i.error("68",r,t),null)}(o,e,t,this.logger);if(!l)return null;if(r&&l.type!==r)return null===(s=this.logger)||void 0===s||s.warn("69",r,l.type),null;const u=this.createInternalUserContext(i,n),c=this.decisionService.getVariationForFeature(o,a,u).result,d=Gt(c),h=this.getFeatureVariableValueFromVariation(e,d,c.variation,l,i);let g={};return c.decisionSource===ne.FEATURE_TEST&&null!==c.experiment&&null!==c.variation&&(g={experimentKey:c.experiment.key,variationKey:c.variation.key}),this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.FEATURE_VARIABLE,userId:i,attributes:n||{},decisionInfo:{featureKey:e,featureEnabled:d,source:c.decisionSource,variableKey:t,variableValue:h,variableType:l.type,sourceInfo:g}}),h}getFeatureVariableValueFromVariation(e,t,r,i,n){var s,o,a,l;const u=this.getProjectConfig();if(!u)return null;let c=i.defaultValue;if(null!==r){const l=function(e,t,r,i){if(!t||!r)return null;if(!e.variationVariableUsageMap.hasOwnProperty(r.id))return null==i||i.error("70",r.id),null;const n=e.variationVariableUsageMap[r.id][t.id];return n?n.value:null}(u,i,r,this.logger);null!==l?t?(c=l,null===(s=this.logger)||void 0===s||s.info("36",c,i.key,e)):null===(o=this.logger)||void 0===o||o.info("10",e,n,c):null===(a=this.logger)||void 0===a||a.info("40",i.key,r.key)}else null===(l=this.logger)||void 0===l||l.info("35",n,i.key,e);return function(e,t,r){let i;switch(t){case oe:"true"!==e&&"false"!==e?(null==r||r.error(je,e,t),i=null):i="true"===e;break;case le:i=parseInt(e,10),isNaN(i)&&(null==r||r.error(je,e,t),i=null);break;case ae:i=parseFloat(e),isNaN(i)&&(null==r||r.error(je,e,t),i=null);break;case ce:try{i=JSON.parse(e)}catch(n){null==r||r.error(je,e,t),i=null}break;default:i=e}return i}(c,i.type,this.logger)}getFeatureVariableBoolean(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,oe,r,i):(this.errorReporter.report(Ae,"getFeatureVariableBoolean"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableDouble(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,ae,r,i):(this.errorReporter.report(Ae,"getFeatureVariableDouble"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableInteger(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,le,r,i):(this.errorReporter.report(Ae,"getFeatureVariableInteger"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableString(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,ue,r,i):(this.errorReporter.report(Ae,"getFeatureVariableString"),null)}catch(e){return this.errorReporter.report(e),null}}getFeatureVariableJSON(e,t,r,i){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,ce,r,i):(this.errorReporter.report(Ae,"getFeatureVariableJSON"),null)}catch(e){return this.errorReporter.report(e),null}}getAllFeatureVariables(e,t,r){try{const i=this.getProjectConfig();if(!i)return this.errorReporter.report(Ae,"getAllFeatureVariables"),null;if(!this.validateInputs({feature_key:e,user_id:t},r))return null;const n=gt(i,e,this.logger);if(!n)return null;const s=this.createInternalUserContext(t,r),o=this.decisionService.getVariationForFeature(i,n,s).result,a=Gt(o),l={};n.variables.forEach(r=>{l[r.key]=this.getFeatureVariableValueFromVariation(e,a,o.variation,r,t)});let u={};return o.decisionSource===ne.FEATURE_TEST&&null!==o.experiment&&null!==o.variation&&(u={experimentKey:o.experiment.key,variationKey:o.variation.key}),this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.ALL_FEATURE_VARIABLES,userId:t,attributes:r||{},decisionInfo:{featureKey:e,featureEnabled:a,source:o.decisionSource,variableValues:l,sourceInfo:u}}),l}catch(e){return this.errorReporter.report(e),null}}getOptimizelyConfig(){try{return this.getProjectConfig()&&this.projectConfigManager.getOptimizelyConfig()||null}catch(e){return this.errorReporter.report(e),null}}flushImmediately(){const e=[];return this.isRunning()?(this.eventProcessor&&e.push(this.eventProcessor.flushImmediately()),this.odpManager&&e.push(this.odpManager.flushImmediately()),Promise.all(e)):Promise.resolve()}close(){return this.stop(),this.onTerminated()}stop(){var e,t;this.isDone()||(this.isRunning()||this.startPromise.reject(new Error(be(bt,"Client"))),this.state=mt.Stopping,this.projectConfigManager.stop(),null===(e=this.eventProcessor)||void 0===e||e.stop(),null===(t=this.odpManager)||void 0===t||t.stop(),this.notificationCenter.clearAllNotificationListeners(),this.cleanupTasks.forEach(e=>e()),Promise.all([this.projectConfigManager.onTerminated(),this.eventProcessor?this.eventProcessor.onTerminated():Promise.resolve(),this.odpManager?this.odpManager.onTerminated():Promise.resolve()]).then(()=>{this.state=mt.Terminated,this.stopPromise.resolve()}).catch(e=>{this.errorReporter.report(e),this.state=mt.Failed,this.stopPromise.reject(e)}))}onReady(e){let t;"object"==typeof e&&null!==e&&void 0!==e.timeout&&(t=e.timeout),ge(t)||(t=3e4);const r=vt(),i=this.nextCleanupTaskId++,n=setTimeout(()=>{this.cleanupTasks.delete(i),r.reject(new Error(be("onReady timeout expired after %s ms",t)))},t);return this.cleanupTasks.set(i,()=>{clearTimeout(n),r.reject(new Error("Instance closed"))}),Promise.race([this.onRunning().then(()=>{clearTimeout(n),this.cleanupTasks.delete(i)}),r])}createUserContext(e,t){var r;const i=null!=e?e:null===(r=this.vuidManager)||void 0===r?void 0:r.getVuid();if(void 0===i||!this.validateInputs({user_id:i}))throw new Error("Invalid identifier");if(!this.validateInputs({},t))throw new Error("Invalid attributes");const n=new Dr({optimizely:this,userId:i,attributes:t});return this.onRunning().then(()=>{this.odpManager&&this.isOdpIntegrated()&&this.odpManager.identifyUser(i)}).catch(()=>{}),n}createInternalUserContext(e,t){return new Dr({optimizely:this,userId:e,attributes:t})}decide(e,t,r=[]){return this.getProjectConfig()?this.decideForKeys(e,[t],r,!0)[t]:(this.errorReporter.report(Ae,"decide"),Ar(t,e,[de]))}decideAsync(e,t,r=[]){return xt(this,void 0,void 0,function*(){return this.getProjectConfig()?(yield this.decideForKeysAsync(e,[t],r,!0))[t]:(this.errorReporter.report(Ae,"decide"),Ar(t,e,[de]))})}getAllDecideOptions(e){var t;const r=Object.assign({},this.defaultDecideOptions);return Array.isArray(e)?e.forEach(e=>{var t;Qt[e]?r[e]=!0:null===(t=this.logger)||void 0===t||t.warn("63",e)}):null===(t=this.logger)||void 0===t||t.debug("14"),r}generateDecision(e,t,r,i,n,s){var o,a,l,u,c,d,h,g,p,f;const v=e.getUserId(),m=e.getAttributes(),y=s.featureKeyMap[t],b=r.decisionSource,E=null!==(a=null===(o=r.experiment)||void 0===o?void 0:o.key)&&void 0!==a?a:null,I=null!==(u=null===(l=r.experiment)||void 0===l?void 0:l.id)&&void 0!==u?u:null,S=null!==(d=null===(c=r.variation)||void 0===c?void 0:c.key)&&void 0!==d?d:null,x=null!==(g=null===(h=r.variation)||void 0===h?void 0:h.id)&&void 0!==g?g:null,w=Gt(r),O={};let k=!1;w?null===(p=this.logger)||void 0===p||p.info("8",t,v):null===(f=this.logger)||void 0===f||f.info("9",t,v),n[Qt.EXCLUDE_VARIABLES]||y.variables.forEach(e=>{O[e.key]=this.getFeatureVariableValueFromVariation(t,w,r.variation,e,v)}),!n[Qt.DISABLE_DECISION_EVENT]&&(b===ne.FEATURE_TEST||b===ne.HOLDOUT||b===ne.ROLLOUT&&pt(s))&&(this.sendImpressionEvent(r,t,v,w,m),k=!0);let M=[];n[Qt.INCLUDE_REASONS]&&(M=i.map(e=>be(e[0],...e.slice(1))));const R={flagKey:t,enabled:w,variationKey:S,ruleKey:E,variables:O,reasons:M,decisionEventDispatched:k,experimentId:I,variationId:x};return this.notificationCenter.sendNotifications(Xt.DECISION,{type:Yt.FLAG,userId:v,attributes:m,decisionInfo:R}),{variationKey:S,enabled:w,variables:O,ruleKey:E,flagKey:t,userContext:e,reasons:M}}decideForKeys(e,t,r=[],i){return this.getDecisionForKeys("sync",e,t,r,i).get()}decideForKeysAsync(e,t,r=[],i){return this.getDecisionForKeys("async",e,t,r,i).get()}getDecisionForKeys(e,t,r,i=[],n){var s;const o={},a={},l={},u=this.getProjectConfig();if(!u)return this.errorReporter.report(Ae,"decideForKeys"),vi.of(e,o);if(0===r.length)return vi.of(e,o);const c=this.getAllDecideOptions(i);n&&delete c[Qt.ENABLED_FLAGS_ONLY];const d=[];for(const e of r){const r=u.featureKeyMap[e];r?d.push(r):(null===(s=this.logger)||void 0===s||s.error(Ce,e),o[e]=Ar(e,t,[be('No flag was found for key "%s".',e)]))}return this.decisionService.resolveVariationsForFeatureList(e,u,d,t,c).then(r=>{for(let e=0;e<d.length;e++){const i=d[e].key,n=r[e];n.error?o[i]=Ar(i,t,n.reasons.map(e=>be(e[0],...e.slice(1)))):(a[i]=n.result,l[i]=n.reasons)}for(const e of d){const r=e.key;if(o[r])continue;const i=this.generateDecision(t,r,a[r],l[r],c,u);c[Qt.ENABLED_FLAGS_ONLY]&&!i.enabled||(o[r]=i)}return vi.of(e,o)})}decideAll(e,t=[]){const r=this.getProjectConfig();if(!r)return this.errorReporter.report(Ae,"decideAll"),{};const i=Object.keys(r.featureKeyMap);return this.decideForKeys(e,i,t)}decideAllAsync(e,t=[]){return xt(this,void 0,void 0,function*(){const r=this.getProjectConfig();if(!r)return this.errorReporter.report(Ae,"decideAll"),{};const i=Object.keys(r.featureKeyMap);return this.decideForKeysAsync(e,i,t)})}updateOdpSettings(){const e=this.getProjectConfig();e&&this.odpManager&&this.odpManager.updateConfig(e.odpIntegrationConfig)}sendOdpEvent(e,t,r,i){var n,s;if(this.odpManager)try{const n=new mr(t||"",e,r,i);this.odpManager.sendEvent(n)}catch(e){null===(s=this.logger)||void 0===s||s.error("40",e)}else null===(n=this.logger)||void 0===n||n.error("42","sendOdpEvent")}isOdpIntegrated(){var e,t,r;return null!==(r=null===(t=null===(e=this.getProjectConfig())||void 0===e?void 0:e.odpIntegrationConfig)||void 0===t?void 0:t.integrated)&&void 0!==r&&r}fetchQualifiedSegments(e,t){var r;return xt(this,void 0,void 0,function*(){return this.odpManager?yield this.odpManager.fetchQualifiedSegments(e,t):(null===(r=this.logger)||void 0===r||r.error("42","fetchQualifiedSegments"),null)})}getVuid(){var e;if(this.vuidManager)return this.vuidManager.getVuid();null===(e=this.logger)||void 0===e||e.error("54")}},Qi=class{constructor(e){this.predictionEndpointTemplate="https://prediction.cmab.optimizely.com/predict/%s",this.requestHandler=e.requestHandler,this.retryConfig=e.retryConfig,e.predictionEndpointTemplate&&(this.predictionEndpointTemplate=e.predictionEndpointTemplate)}fetchDecision(e,t,r,i){var n,s;return xt(this,void 0,void 0,function*(){const o=be(this.predictionEndpointTemplate,e),a=Object.keys(r).map(e=>({id:e,value:r[e],type:"custom_attribute"})),l={instances:[{visitorId:t,experimentId:e,attributes:a,cmabUUID:i}]};return yield this.retryConfig?zt(()=>this.doFetch(o,JSON.stringify(l)),null===(s=(n=this.retryConfig).backoffProvider)||void 0===s?void 0:s.call(n),this.retryConfig.maxRetries).result:this.doFetch(o,JSON.stringify(l))})}doFetch(e,t){return xt(this,void 0,void 0,function*(){const r=yield this.requestHandler.makeRequest(e,{"Content-Type":"application/json"},"POST",t).responsePromise;if(!wt(r.statusCode))return Promise.reject(new Se("CMAB decision fetch failed with status: %s",r.statusCode));const i=JSON.parse(r.body);return this.validateResponse(i)?String(i.predictions[0].variation_id):Promise.reject(new Se("Invalid CMAB fetch response"))})}validateResponse(e){return e.predictions&&e.predictions.length>0&&e.predictions[0].variation_id}},Yi=class{constructor(e){var t;this.serializers=Array.from({length:1e3},()=>new sr),this.cmabCache=e.cmabCache,this.cmabClient=e.cmabClient,this.logger=e.logger,null===(t=this.logger)||void 0===t||t.setName("CmabService")}getSerializerIndex(e,t){const r=this.getCacheKey(e,t),i=G.default.v3(r);return Math.abs(i)%1e3}getDecision(e,t,r,i){return xt(this,void 0,void 0,function*(){const n=this.getSerializerIndex(t.getUserId(),r);return this.serializers[n].run(()=>this.getDecisionInternal(e,t,r,i))})}getDecisionInternal(e,t,r,i){var n,s,o,a,l,u;return xt(this,void 0,void 0,function*(){const c=t.getUserId(),d=this.filterAttributes(e,t,r);if(i[Qt.IGNORE_CMAB_CACHE])return null===(n=this.logger)||void 0===n||n.debug("11",c,r),this.fetchDecision(r,c,d);i[Qt.RESET_CMAB_CACHE]&&(null===(s=this.logger)||void 0===s||s.debug("22",c,r),this.cmabCache.reset());const h=this.getCacheKey(c,r);i[Qt.INVALIDATE_USER_CMAB_CACHE]&&(null===(o=this.logger)||void 0===o||o.debug("12",c,r),this.cmabCache.remove(h));const g=yield this.cmabCache.lookup(h),p=JSON.stringify(d,Object.keys(d).sort()),f=String(G.default.v3(p));if(g){if(g.attributesHash===f)return null===(a=this.logger)||void 0===a||a.debug("3",c,r),{variationId:g.variationId,cmabUuid:g.cmabUuid};null===(l=this.logger)||void 0===l||l.debug("2",c,r),this.cmabCache.remove(h)}else null===(u=this.logger)||void 0===u||u.debug("4",c,r);const v=yield this.fetchDecision(r,c,d);return this.cmabCache.save(h,{attributesHash:f,variationId:v.variationId,cmabUuid:v.cmabUuid}),v})}fetchDecision(e,t,r){return xt(this,void 0,void 0,function*(){const i=$();return{variationId:yield this.cmabClient.fetchDecision(e,t,r,i),cmabUuid:i}})}filterAttributes(e,t,r){const i={},n=t.getAttributes(),s=e.experimentIdMap[r];return s&&s.cmab?(s.cmab.attributeIds.forEach(t=>{const r=e.attributeIdMap[t];n.hasOwnProperty(r.key)&&(i[r.key]=n[r.key])}),i):i}getCacheKey(e,t){return`${e.length}-${e}-${t}`}},Xi=e=>{var t,r;const{clientEngine:i,clientVersion:n,jsonSchemaValidator:s,userProfileService:o,userProfileServiceAsync:a,defaultDecideOptions:l,disposable:u,requestHandler:c}=e,d=(e=>{if(!e||"object"!=typeof e)throw new Error(Pt);if(!e[At])throw new Error(Pt);return e[At]})(e.projectConfigManager),h=(e=>{if(e&&"object"==typeof e)return e[lr]})(e.eventProcessor),g=(e=>{if(e&&"object"==typeof e)return e[kr]})(e.odpManager),p=(e=>{if(e&&"object"==typeof e)return e[Rr]})(e.vuidManager),f=(e=>{if(e&&"object"==typeof e)return e[Ye]})(e.errorNotifier),v=(e=>{if(e&&"object"==typeof e)return e[Ge]})(e.logger),m=new Qi({requestHandler:c,retryConfig:{maxRetries:1,backoffProvider:()=>new Mt(100)},predictionEndpointTemplate:null===(t=e.cmab)||void 0===t?void 0:t.predictionEndpointTemplate}),y=(null===(r=e.cmab)||void 0===r?void 0:r.cache)?((e,t)=>{const r=(e,t)=>{if(void 0!==e)return t(e)},i={lookup:i=>"sync"===e.operation?r(e.lookup(i),t):e.lookup(i).then(e=>r(e,t)),save:(t,r)=>e.save(t,(e=>JSON.stringify(e))(r))};return Object.setPrototypeOf(i,e),i})(e.cmab.cache,e=>JSON.parse(e)):(()=>{var t,r;const i=(null===(t=e.cmab)||void 0===t?void 0:t.cacheSize)||1e4,n=(null===(r=e.cmab)||void 0===r?void 0:r.cacheTtl)||18e5;return new dr(i,n)})(),b={cmabService:new Yi({cmabClient:m,cmabCache:y,logger:null==v?void 0:v.child()}),clientEngine:i||te,clientVersion:n||ie,jsonSchemaValidator:s,userProfileService:o,userProfileServiceAsync:a,defaultDecideOptions:l,disposable:u,logger:v,errorNotifier:f,projectConfigManager:d,eventProcessor:h,odpManager:g,vuidManager:p,UNSTABLE_conditionEvaluators:e.UNSTABLE_conditionEvaluators};return new Wi(b)},Zi=class{constructor(e={}){var t;this.logger=e.logger,this.timeout=null!==(t=e.timeout)&&void 0!==t?t:6e4}makeRequest(e,t,r,i){const n=Y.default.parse(e);if("https:"!==n.protocol&&"http:"!==n.protocol)return{responsePromise:Promise.reject(new Se("64",n.protocol)),abort:()=>{}};const s=("https:"===n.protocol?Q.default:W.default).request(Object.assign(Object.assign({},this.getRequestOptionsFromUrl(n)),{method:r,headers:Object.assign(Object.assign({},t),{"accept-encoding":"gzip,deflate","content-length":String((null==i?void 0:i.length)||0)}),timeout:this.timeout})),o=this.getAbortableRequestFromRequest(s);return i&&s.write(i),s.end(),o}getRequestOptionsFromUrl(e){return{hostname:e.hostname,path:e.path,port:e.port,protocol:e.protocol}}createHeadersFromNodeIncomingMessage(e){const t={};return Object.keys(e.headers).forEach(r=>{const i=e.headers[r];"string"==typeof i?t[r]=i:void 0===i||i.length>0&&(t[r]=i[0])}),t}getAbortableRequestFromRequest(e){let t=!1;return{abort:()=>{t=!0,e.destroy()},responsePromise:new Promise((r,i)=>{e.on("timeout",()=>{t=!0,e.destroy(),i(new Se("48"))}),e.on("error",e=>{e instanceof Error?i(e):i("string"==typeof e?new Error(e):new Se("47"))}),e.once("response",e=>{if(t)return;const n=(0,X.default)(e);n.setEncoding("utf8");let s="";n.on("data",e=>{t||(s+=e)}),n.on("end",()=>{t||(e.statusCode?r({statusCode:e.statusCode,body:s,headers:this.createHeadersFromNodeIncomingMessage(e)}):i(new Se("36")))})})})}}},en=new class{constructor(e){this.requestHandler=e}dispatchEvent(e){return xt(this,void 0,void 0,function*(){if("POST"!==e.httpVerb)return Promise.reject(new Se("44"));const t=JSON.stringify(e.params);return this.requestHandler.makeRequest(e.url,{"content-type":"application/json"},"POST",t).responsePromise})}}(new Zi),tn=e=>{const t={autoUpdate:!0,requestHandler:new Zi};return r=Object.assign(Object.assign({},t),e),{[At]:Dt(r)};var r},rn=(e=en)=>{return cr((ur(t=e),new ar(t)));var t},nn=(e={})=>{var t;const r=e.eventStore?"async"===(i=e.eventStore).operation?new Vt(i,or,JSON.parse,JSON.stringify):new Ut(i,or,JSON.parse,JSON.stringify):void 0;var i;return((e,t=nr)=>cr(((e,t=nr)=>{const{eventDispatcher:r,closingEventDispatcher:i,retryOptions:n,eventStore:s}=e;ur(r),i&&ur(i),s&&Ct(s);const o=n?{maxRetries:n.maxRetries,backoffProvider:()=>{var e,t;const r=null!==(e=null==n?void 0:n.minBackoff)&&void 0!==e?e:200,i=null!==(t=null==n?void 0:n.maxBackoff)&&void 0!==t?t:1e3;return new kt(r,i,50)}}:void 0,a=[],{defaultFlushInterval:l,defaultBatchSize:u}=e;let c=l;void 0===e.flushInterval||e.flushInterval<=0?a.push({level:H.Warn,message:"Invalid flushInterval %s, defaulting to %s",params:[e.flushInterval,l]}):c=e.flushInterval;let d=u;return void 0===e.batchSize||e.batchSize<=0?a.push({level:H.Warn,message:"Invalid batchSize %s, defaulting to %s",params:[e.batchSize,u]}):d=e.batchSize,new t({eventDispatcher:r,closingEventDispatcher:i,dispatchRepeater:new Rt(c),failedEventRepeater:e.failedEventRetryInterval?new Rt(e.failedEventRetryInterval):void 0,retryConfig:o,batchSize:d,eventStore:s,startupLogs:a})})(e,t)))({eventDispatcher:e.eventDispatcher||en,closingEventDispatcher:e.closingEventDispatcher,flushInterval:e.flushInterval,batchSize:e.batchSize,defaultFlushInterval:3e4,defaultBatchSize:10,retryOptions:{maxRetries:null!==(t=e.maxRetries)&&void 0!==t?t:2},failedEventRetryInterval:r?2e4:void 0,eventStore:r})},sn=(e={})=>{const t=new Zi({timeout:e.segmentsApiTimeout||1e4}),r=new Zi({timeout:e.eventApiTimeout||1e4});return i=Object.assign(Object.assign({},e),{segmentRequestHandler:t,eventRequestHandler:r,eventBatchSize:e.eventBatchSize||10,eventFlushInterval:e.eventFlushInterval||1e3,eventRequestGenerator:gr}),{[kr]:Mr(i)};var i},on=(e={})=>({[Rr]:void 0}),an=function(e){const t=Object.assign(Object.assign({},e),{clientEngine:e.clientEngine||re,requestHandler:new Zi});return Xi(t)},ln=function(){},un=re,cn=["node"],dn={};var hn,gn={type:"optimizely",config:{},async init({config:e,env:t}){var r,i,n,s;const o=e.settings;if(!(null==o?void 0:o.sdkKey))return!1;const a=function(e){return(null==e?void 0:e.optimizely)?e.optimizely:U}(t),l={projectConfigManager:a.createPollingProjectConfigManager({sdkKey:o.sdkKey,autoUpdate:null==(r=o.autoUpdate)||r,updateInterval:null!=(i=o.updateInterval)?i:6e4}),eventProcessor:a.createBatchEventProcessor({batchSize:null!=(n=o.batchSize)?n:10,flushInterval:null!=(s=o.flushInterval)?s:1e3})},u=a.createInstance(l);await u.onReady();const c={client:u};return{...e,settings:{...o,_state:c}}},async push(e,{config:t,rule:r,env:i,collector:n}){const s=t.settings||{},o=s._state||{},a=(null==r?void 0:r.settings)||{};if(!o.client)return;const l=s.userId;let u,c;if(void 0!==l){const t=await _(e,l,{collector:n});P(t)&&(u=t)}if(!u)return;if(void 0!==s.attributes){const t=await _(e,s.attributes,{collector:n});C(t)&&(c=t)}if(u!==o.lastUserId||!o.userContext){const e=o.client.createUserContext(u,c);if(!e)return;o.userContext=e,o.lastUserId=u}const d=o.userContext;if(d){if(void 0!==a.attributes){const t=await _(e,a.attributes,{collector:n});if(C(t))for(const[e,r]of Object.entries(t))d.setAttribute(e,r)}if(!0!==(null==r?void 0:r.silent)){const t=P(null==r?void 0:r.name)?r.name:e.name,i={};if(void 0!==a.eventTags){const t=await _(e,a.eventTags,{collector:n});C(t)&&Object.assign(i,t)}if(void 0!==a.revenue){const t=await _(e,a.revenue,{collector:n});R(t)&&(i.revenue=t)}if(void 0!==a.value){const t=await _(e,a.value,{collector:n});R(t)&&(i.value=t)}d.trackEvent(t,i)}s._state=o}},on(e,t){var r,i,n;if("consent"!==e||!t.data)return;const s=null==(r=t.config)?void 0:r.consent;if(!s||0===Object.keys(s).length)return;const o=t.data,a=Object.keys(s).every(e=>!0===o[e]),l=null==(n=null==(i=t.config)?void 0:i.settings)?void 0:n._state;!a&&(null==l?void 0:l.client)&&(l.client.close(),l.client=void 0,l.userContext=void 0)},destroy({config:e}){const t=((null==e?void 0:e.settings)||{})._state;(null==t?void 0:t.client)&&(t.client.close(),t.client=void 0,t.userContext=void 0)}},pn=gn;return hn=f,u(t({},"__esModule",{value:!0}),hn)})();