@encorekit/web-sdk 0.0.92 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/umd/encore.min.js +1 -1
- package/dist/umd/encore.min.js.map +1 -1
- package/package.json +1 -1
- package/types/ui/OfferCard.d.ts.map +1 -1
- package/types/ui/styles.d.ts.map +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e;!function(e){e.NETWORK_ERROR="NETWORK_ERROR",e.API_ERROR="API_ERROR",e.CONFIGURATION_ERROR="CONFIGURATION_ERROR",e.INITIALIZATION_ERROR="INITIALIZATION_ERROR",e.STORAGE_ERROR="STORAGE_ERROR",e.INVALID_REQUEST="INVALID_REQUEST",e.UNAUTHORIZED="UNAUTHORIZED",e.NOT_FOUND="NOT_FOUND",e.TIMEOUT="TIMEOUT",e.UNKNOWN_ERROR="UNKNOWN_ERROR"}(e||(e={}));const t="[Encore SDK]",n=new class{#e="none";setLogLevel(e){this.#e=e}getLogLevel(){return this.#e}debug(...e){"debug"===this.#e&&console.debug(t,...e)}info(...e){"debug"===this.#e&&console.info(t,...e)}warn(...e){"debug"===this.#e&&console.warn(t,...e)}error(...e){"debug"===this.#e&&console.error(t,...e)}critical(...e){console.error(t,"[CRITICAL]",...e)}};class i{#t=null;#n=!1;configure(e){if(this.#n)return n.warn("SDK already configured. Ignoring subsequent configure() call."),!1;const t=this.#i(e);if(t)return n.error("Invalid configuration:",t),!1;const i=e.logLevel??"none",r=e.environment??"production";return this.#t={apiKey:e.apiKey,userId:e.userId,environment:r,baseURL:this.#r(r),logLevel:i,uiConfiguration:e.uiConfiguration??{}},n.setLogLevel(i),this.#n=!0,n.debug("SDK configured successfully",this.#t),!0}#i(e){return e.apiKey&&"string"==typeof e.apiKey&&""!==e.apiKey.trim()?e.environment&&!["production","localhost"].includes(e.environment)?"environment must be 'production' or 'localhost'":e.logLevel&&!["none","debug"].includes(e.logLevel)?"logLevel must be 'none' or 'debug'":null:"apiKey is required and must be a non-empty string"}#r(e){return"localhost"===e?"http://localhost:8080/encore/v1":"https://svc.joinyaw.com/product/encore/v1"}getConfig(){return this.#t}isConfigured(){return this.#n}getApiKey(){return this.#t?.apiKey??null}getBaseURL(){return this.#t?.baseURL??null}getEnvironment(){return this.#t?.environment??null}getUIConfiguration(){return this.#t?.uiConfiguration??{}}reset(){this.#t=null,this.#n=!1,n.debug("Configuration reset")}}const r="encore_";class s{#s;#o;constructor(){this.#o=new Map,this.#s=this.#a(),n.debug(`StorageManager initialized with ${this.#s}`)}#a(){return this.#l("localStorage")?"localStorage":this.#l("sessionStorage")?"sessionStorage":(n.warn("Neither localStorage nor sessionStorage available, using in-memory storage"),"memory")}#l(e){try{const t="localStorage"===e?localStorage:sessionStorage,n="__encore_test__";return t.setItem(n,"test"),t.removeItem(n),!0}catch{return!1}}#c(){return"localStorage"===this.#s?localStorage:"sessionStorage"===this.#s?sessionStorage:this.#o}#d(e){return`${r}${e}`}set(e,t){if(void 0===t)return void n.warn(`Attempted to store undefined value for key: ${e}`);const i=this.#d(e),r=JSON.stringify(t);try{const t=this.#c();t instanceof Map?t.set(i,r):t.setItem(i,r),n.debug(`Stored ${e} in ${this.#s}`)}catch(e){e instanceof Error&&"QuotaExceededError"===e.name?n.error("Storage quota exceeded:",e):n.error("Failed to store item:",e),"memory"!==this.#s&&(n.warn("Falling back to memory storage for this item"),this.#o.set(i,r))}}get(e){const t=this.#d(e);try{const i=this.#c();let r=null;return r=i instanceof Map?i.get(t)??null:i.getItem(t),null===r||"undefined"===r?("undefined"===r&&(n.warn(`Found corrupted value "undefined" for key: ${e}, cleaning up`),this.remove(e)),null):JSON.parse(r)}catch(t){return n.error(`Failed to retrieve ${e}:`,t),this.remove(e),null}}remove(e){const t=this.#d(e);try{const i=this.#c();i instanceof Map?i.delete(t):i.removeItem(t),n.debug(`Removed ${e} from ${this.#s}`)}catch(t){n.error(`Failed to remove ${e}:`,t)}}clear(){try{const e=this.#c();if(e instanceof Map)for(const t of e.keys())t.startsWith(r)&&e.delete(t);else{const t=[];for(let n=0;n<e.length;n++){const i=e.key(n);i?.startsWith(r)&&t.push(i)}t.forEach(t=>e.removeItem(t))}n.debug(`Cleared all Encore data from ${this.#s}`)}catch(e){n.error("Failed to clear storage:",e)}}getStorageType(){return this.#s}}class o{#u;constructor(){this.#u=new Map}on(e,t){this.#u.has(e)||this.#u.set(e,new Set);const i=this.#u.get(e);if(!i)throw new Error(`Failed to get handlers for event '${String(e)}'`);return i.add(t),n.debug(`Event listener added for '${String(e)}'`),()=>{this.off(e,t)}}off(e,t){const i=this.#u.get(e);i&&(i.delete(t),n.debug(`Event listener removed for '${String(e)}'`),0===i.size&&this.#u.delete(e))}emit(e,t){const i=this.#u.get(e);if(i&&0!==i.size){n.debug(`Emitting event '${String(e)}'`,{listenerCount:i.size});for(const r of i)try{r(t)}catch(t){n.error(`Error in event handler for '${String(e)}':`,t)}}}removeAllListeners(e){e?(this.#u.delete(e),n.debug(`All listeners removed for '${String(e)}'`)):(this.#u.clear(),n.debug("All event listeners removed"))}listenerCount(e){return this.#u.get(e)?.size??0}hasListeners(e){const t=this.#u.get(e);return void 0!==t&&t.size>0}}const a="entitlements",l="entitlements_timestamp";class c{#h;#f;#g;#m=null;#p=null;#b;constructor(e,t,n){this.#h=e,this.#f=t,this.#g=n,this.#b=new o,this.#v()}getEventEmitter(){return this.#b}setUserId(e){this.#g!==e&&(n.debug("EntitlementManager: User ID changed, clearing cache"),this.#g=e,this.#m=null,this.#v())}#v(){try{const e=`${this.#g}_${a}`,t=`${this.#g}_${l}`,i=this.#h.get(e),r=this.#h.get(t);i&&r&&(this.#m={entitlements:i,timestamp:r},n.debug("Loaded entitlements from storage",{count:i.length,age:Date.now()-r}))}catch(e){n.error("Failed to load entitlements from storage:",e)}}saveEntitlements(e){try{Array.isArray(e)||(n.warn("saveEntitlements called with non-array value, defaulting to empty array"),e=[]);const t=this.loadEntitlements(),i=Date.now(),r=`${this.#g}_${a}`,s=`${this.#g}_${l}`;this.#h.set(r,e),this.#h.set(s,i),this.#m={entitlements:e,timestamp:i},n.debug("Saved entitlements to storage",{count:e.length}),this.#y(t,e)}catch(e){n.error("Failed to save entitlements to storage:",e)}}#y(e,t){Array.isArray(e)||(e=[]),Array.isArray(t)||(t=[]);const n=new Map;for(const t of e){const e=`${String(t.type)}_${t.scope}`;n.set(e,t)}const i=new Map;for(const e of t){const t=`${String(e.type)}_${e.scope}`;i.set(t,e)}for(const[e,t]of i){const i=n.get(e);i&&JSON.stringify(i)===JSON.stringify(t)||this.#b.emit("entitlementChanged",{entitlementType:this.#x(t),scope:t.scope,isActive:this.#w(t),entitlement:t})}for(const[e,t]of n)i.has(e)||this.#b.emit("entitlementChanged",{entitlementType:this.#x(t),scope:t.scope,isActive:!1})}#x(e){const{scope:t,expiresAt:n,grantedAt:i,transactionId:r,...s}=e;return s}#w(e){return!e.expiresAt||new Date(e.expiresAt)>new Date}loadEntitlements(){return this.#m?.entitlements??[]}isCacheStale(){return!this.#m||Date.now()-this.#m.timestamp>3e5}getCacheAge(){return this.#m?Date.now()-this.#m.timestamp:null}clearCache(){this.#m=null,this.#b.removeAllListeners();const e=`${this.#g}_${a}`,t=`${this.#g}_${l}`;this.#h.remove(e),this.#h.remove(t),n.debug("Cleared entitlement cache")}isActive(e,t="all"){const n=this.loadEntitlements();for(const i of n){const n=this.#x(i);if(this.#I(n,e)&&("verified"!==t||"verified"===i.scope)){if(i.expiresAt&&new Date(i.expiresAt)<=new Date)continue;return!0}}return!1}#I(e,t){return JSON.stringify(e)===JSON.stringify(t)}getActiveEntitlements(e="all"){const t=this.loadEntitlements(),n=new Date;return t.filter(t=>("verified"!==e||"verified"===t.scope)&&!(t.expiresAt&&new Date(t.expiresAt)<=n))}async refreshEntitlements(){if(this.#p)return n.debug("Refresh already in progress, waiting..."),this.#p;this.#p=this.#E();try{await this.#p}finally{this.#p=null}}async#E(){try{n.debug("Refreshing entitlements from API");const e=await this.#f.fetchEntitlements(this.#g);if(!Array.isArray(e))return n.warn("Received non-array entitlements from API, defaulting to empty array"),void this.saveEntitlements([]);this.saveEntitlements(e),n.info("Entitlements refreshed successfully",{count:e.length})}catch(e){n.error("Failed to refresh entitlements, keeping cached version:",e)}}}const d="signal_queue";class u{#h;#f;#g;#C=[];#$=!1;#k;constructor(e,t,n){this.#h=e,this.#f=t,this.#g=n,this.#A(),this.#T(),this.processQueue()}setUserId(e){this.#g!==e&&(n.debug("SignalManager: User ID changed, clearing queue"),this.#g=e,this.#C=[],this.#A())}#A(){try{const e=`${this.#g}_${d}`,t=this.#h.get(e);t&&Array.isArray(t)&&(this.#C=t,n.debug("Loaded grant signal queue from storage",{count:t.length}))}catch(e){n.error("Failed to load grant signal queue from storage:",e)}}#N(){try{const e=`${this.#g}_${d}`;this.#h.set(e,this.#C),n.debug("Saved grant signal queue to storage",{count:this.#C.length})}catch(e){n.error("Failed to save grant signal queue to storage:",e)}}enqueue(e,t){const i=this.#C.some(n=>n.transactionId===e&&n.grantType===t);if(i)return void n.debug("Grant signal already in queue, skipping",{transactionId:e,grantType:t});const r={transactionId:e,grantType:t,timestamp:(new Date).toISOString(),attempts:0};this.#C.push(r),this.#N(),n.info("Grant signal added to queue",{transactionId:e,grantType:t})}dequeue(e){const t=this.#C.findIndex(t=>t.transactionId===e.transactionId&&t.grantType===e.grantType);-1!==t&&(this.#C.splice(t,1),this.#N(),n.debug("Grant signal removed from queue",{transactionId:e.transactionId,grantType:e.grantType}))}getQueue(){return[...this.#C]}clearQueue(){this.#C=[],this.#N(),n.debug("Grant signal queue cleared")}async sendGrantSignal(e,t){try{if(n.debug("Sending grant signal",{transactionId:e,grantType:t}),!await this.#f.sendGrantSignal(e,t))throw new Error("Grant signal failed (returned false)");n.info("Grant signal sent successfully",{transactionId:e,grantType:t})}catch{n.warn("Failed to send grant signal, adding to queue",{transactionId:e,grantType:t}),this.enqueue(e,t)}}async processQueue(){if(this.#$)n.debug("Queue processing already in progress, skipping");else if(0!==this.#C.length){this.#$=!0,n.info("Processing grant signal queue",{count:this.#C.length});try{for(const e of[...this.#C])await this.#S(e),this.#C.length>1&&await this.#R(100)}finally{this.#$=!1}}}async#S(e){if(e.attempts>=3)return n.error("Grant signal max attempts reached, removing from queue",{transactionId:e.transactionId,grantType:e.grantType,attempts:e.attempts}),void this.dequeue(e);if(e.lastAttemptAt){const t=new Date(e.lastAttemptAt).getTime(),i=Date.now(),r=1e3*Math.pow(2,e.attempts-1),s=i-t;if(s<r)return void n.debug("Skipping signal, waiting for backoff period",{transactionId:e.transactionId,remainingWait:r-s})}e.attempts++,e.lastAttemptAt=(new Date).toISOString(),this.#N();try{n.debug("Attempting to send queued grant signal",{transactionId:e.transactionId,grantType:e.grantType,attempt:e.attempts}),await this.#f.sendGrantSignal(e.transactionId,e.grantType)?(n.info("Queued grant signal sent successfully",{transactionId:e.transactionId,grantType:e.grantType}),this.dequeue(e)):n.warn("Grant signal failed, will retry",{transactionId:e.transactionId,attempt:e.attempts})}catch(t){n.warn("Failed to send queued grant signal, will retry",{transactionId:e.transactionId,attempt:e.attempts,error:t})}}#T(){this.#k=function(e){const t=()=>{n.debug("Network status: online"),e()};return window.addEventListener("online",t),()=>{window.removeEventListener("online",t)}}(()=>{n.debug("Network came online, processing grant signal queue"),this.processQueue()})}destroy(){this.#k&&(this.#k(),this.#k=void 0)}#R(e){return new Promise(t=>setTimeout(t,e))}}class h{#f;#g;#L=[];#F=null;#M=null;constructor(e,t){this.#f=e,this.#g=t}async fetchOffers(e,t=!0){if(t&&this.#L.length>0&&this.#M)return n.debug("Using cached offers",{count:this.#L.length}),{offers:[...this.#L],uiConfiguration:this.#F??void 0};try{n.debug("Fetching offers from API",{userId:this.#g});const t=await this.#f.fetchOffers(this.#g,e);return 0===t.offers?.length?(n.info("No offers available for user"),this.#L=[],this.#F=t.uiConfiguration??null,this.#M=Date.now(),{offers:[],uiConfiguration:t.uiConfiguration}):(this.#L=t.offers,this.#F=t.uiConfiguration??null,this.#M=Date.now(),n.info("Offers fetched successfully",{count:t.offers.length,offerIds:t.offers.map(e=>e.id)}),{offers:[...t.offers],uiConfiguration:t.uiConfiguration})}catch(e){throw n.error("Failed to fetch offers",e),e}}logImpression(e,t){try{const i=window.location.hostname;n.debug("Logging impression",{impressionId:e,campaignId:t.campaignId,creativeId:t.creativeId,appBundleId:i}),this.#f.logImpression(e,this.#g,t.campaignId,t.creativeId,i).then(t=>{t&&n.debug("Impression logged successfully",{impressionId:e})}).catch(t=>{n.error("Failed to log impression (non-blocking)",{impressionId:e,error:t})})}catch(t){n.error("Failed to log impression (non-blocking)",{impressionId:e,error:t})}}async startTransaction(e,t,i){try{n.debug("Starting transaction",{campaignId:e,creativeId:t,impressionId:i});const r=await this.#f.startTransaction(e,this.#g,t,i);return n.info("Transaction started",{transactionId:r,campaignId:e,creativeId:t}),r}catch(i){throw n.error("Failed to start transaction",{campaignId:e,creativeId:t,error:i}),i}}clearCache(){this.#L=[],this.#M=null,n.debug("Offer cache cleared")}setUserId(e){this.#g=e,this.clearCache(),n.debug("OfferManager user ID updated",{userId:e})}}class f{#f;#O;#U;#D=0;#B=1e3;#q=8e3;#K=null;#P=!1;constructor(e,t){this.#f=e,this.#O=t.transactionId,this.#U=t.timeout??3e4}async poll(){return this.#P?(n.warn("Verification polling already in progress",{transactionId:this.#O}),"pending"):(this.#P=!0,this.#D=Date.now(),n.debug("Starting verification polling",{transactionId:this.#O,timeout:this.#U}),this.#z())}stop(){this.#P=!1,null!==this.#K&&(clearTimeout(this.#K),this.#K=null),n.debug("Verification polling stopped",{transactionId:this.#O})}async#z(){for(;this.#P;){const e=Date.now()-this.#D;if(e>=this.#U)return n.warn("Verification polling timeout",{transactionId:this.#O,elapsed:e}),this.stop(),"pending";try{const e=await this.#f.checkVerificationStatus(this.#O);if(n.debug("Verification status checked",{transactionId:this.#O,status:e.status}),"verified"===e.status)return n.info("Transaction verified",{transactionId:this.#O,verifiedAt:e.verifiedAt}),this.stop(),"verified";if("failed"===e.status)return n.warn("Transaction failed verification",{transactionId:this.#O}),this.stop(),"failed";await this.#R(this.#B),this.#B=Math.min(2*this.#B,this.#q)}catch(e){n.error("Error checking verification status",{transactionId:this.#O,error:e}),await this.#R(this.#B)}}return"pending"}async#R(e){return new Promise(t=>{this.#K=window.setTimeout(()=>{this.#K=null,t()},e)})}}class g{#_=null;#G=null;#j=null;#H;constructor(e){this.#H=e}onGranted(e){return this.#_=e,this}onNotGranted(e){return this.#G=e,this}onLoadingStateChange(e){return this.#j=e,this}async show(){try{this.#j&&this.#j(!0),n.debug("PlacementBuilder: Executing presentation");const e=await this.#H();return this.#j&&this.#j(!1),e.granted&&e.entitlement&&this.#_?this.#_(e.entitlement):!e.granted&&this.#G&&e.reason&&this.#G(e.reason),e}catch(t){this.#j&&this.#j(!1),n.error("PlacementBuilder: Error during presentation",t);const i={type:"error",error:{code:e.UNKNOWN_ERROR,message:t instanceof Error?t.message:"Unknown error"}};return this.#G&&this.#G(i),{granted:!1,reason:i}}}}function m(e,t){let n=e;for(const[e,i]of Object.entries(t))n=n.replace(`:${e}`,encodeURIComponent(i));return n}class p{#V;#Q;#W;constructor(e,t){this.#V=e,this.#Q=t,this.#W=new Map}setApiKey(e){this.#V=e}setBaseURL(e){this.#Q=e}async get(e,t){return this.#J({url:`${this.#Q}${e}`,options:{method:"GET",...t},apiKey:this.#V})}async post(e,t,n){return this.#J({url:`${this.#Q}${e}`,options:{method:"POST",body:t,...n},apiKey:this.#V})}async#J(e){const{url:t,options:i,apiKey:r}=e,s=this.#Y(t,i),o=this.#W.get(s);if(o)return n.debug("Deduplicating request:",t),o;const a=this.#Z(t,i,r);this.#W.set(s,a);try{return await a}finally{this.#W.delete(s)}}async#Z(e,t,i){const r=t.retries??3;let s=null;for(let o=0;o<=r;o++)try{if(o>0){const e=1e3*Math.pow(2,o-1);n.debug(`Retrying request (attempt ${o}/${r}) after ${e}ms`),await this.#R(e)}return await this.#X(e,t,i)}catch(e){if(s=e,this.#ee(e))throw e;if(o===r)throw n.error(`Request failed after ${r} retries:`,e),e;n.warn("Request failed, will retry:",e)}throw s??new Error("Request failed")}async#X(e,t,i){const r=t.timeout??3e4,s=new AbortController,o=setTimeout(()=>s.abort(),r);try{const r={"X-API-Key":i,"Content-Type":"application/json","User-Agent":"Encore-Web-SDK/0.0.9",...t.headers},o={method:t.method,headers:r,signal:s.signal};t.body&&(o.body=JSON.stringify(t.body)),n.debug(`${t.method} ${e}`);const a=await fetch(e,o);return a.ok||await this.#te(a),await a.json()}catch(e){if(e instanceof Error){if("AbortError"===e.name)throw new Error("Request timeout");if(this.#ne(e))throw new Error(`Network error: ${e.message}`)}if(e instanceof Error)throw e;throw new Error(String(e))}finally{clearTimeout(o)}}async#te(t){let n,i=`HTTP ${t.status}: ${t.statusText}`;try{const e=await t.json();if("object"==typeof e&&null!==e&&"error"in e&&"object"==typeof e.error&&null!==e.error){const t=e.error;i=("string"==typeof t.message?t.message:void 0)??i,n="string"==typeof t.code?t.code:void 0}}catch{}const r=n?{code:n,message:i}:{code:e.API_ERROR,statusCode:t.status,message:i},s=new Error(i);throw Object.assign(s,r),s}#ee(e){if("object"==typeof e&&null!==e&&"statusCode"in e&&void 0!==e.statusCode){const t=e.statusCode;return t>=400&&t<500}return!1}#ne(e){return e.message.includes("fetch")||e.message.includes("network")||e.message.includes("ECONNREFUSED")||e.message.includes("ETIMEDOUT")}#Y(e,t){const n=t.body?JSON.stringify(t.body):"";return`${t.method}:${e}:${n}`}#R(e){return new Promise(t=>setTimeout(t,e))}async fetchOffers(e,t){try{const n=await this.post("/offers/show",{userId:e,attributes:t}),i=[];for(const e of n.offers){const t=e.campaign;for(const e of t.creatives){const n={id:e.id,title:e.title,description:e.quickInstructions||e.subtitle||e.description||"",imageUrl:e.primaryImageUrl,ctaText:e.ctaText,advertiserUrl:e.destinationUrl,campaignId:t.id,creativeId:e.id,entitlement:{type:"credit",value:100,unit:"dollars"},...t.merchantName&&{merchantName:t.merchantName},...e.logoUrl&&{logoUrl:e.logoUrl},...e.instructions&&{instructions:e.instructions},...e.quickInstructions&&{quickInstructions:e.quickInstructions},...e.trackingParameters&&{trackingParameters:e.trackingParameters}};i.push(n)}}return{offers:i,uiConfiguration:n.uiConfiguration}}catch(e){throw n.error("Failed to fetch offers:",e),e}}async startTransaction(e,t,i,r){try{return(await this.post("/transactions/start",{campaignId:e,userId:t,creativeId:i,...r&&{impressionId:r}})).transactionId}catch(e){throw n.error("Failed to start transaction:",e),e}}async sendGrantSignal(e,t){try{const n=function(e){return m("/transactions/:id/grant",{id:e})}(e);return(await this.post(n,{transactionId:e,grantType:t,timestamp:(new Date).toISOString()})).success}catch(e){throw n.error("Failed to send grant signal:",e),e}}#ie(e){switch(e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase())){case"freeTrial":return{type:"freeTrial"};case"discount":return{type:"discount"};case"credit":return{type:"credit"};default:return n.warn(`Unknown entitlement type: ${e}, treating as freeTrial`),{type:"freeTrial"}}}async fetchEntitlements(e){try{const t=await this.get(`/entitlements?userId=${encodeURIComponent(e)}`),i=[];if(t.provisional)for(const[e,n]of Object.entries(t.provisional)){const t=this.#ie(e);i.push({...t,transactionId:"",scope:"provisional",grantedAt:n.started_at,expiresAt:n.expires_at})}if(t.verified)for(const[e,n]of Object.entries(t.verified)){const t=this.#ie(e);i.push({...t,transactionId:"",scope:"verified",grantedAt:n.started_at,expiresAt:n.expires_at})}return n.debug("Transformed entitlements response",{provisionalCount:Object.keys(t.provisional||{}).length,verifiedCount:Object.keys(t.verified||{}).length,totalCount:i.length}),i}catch(e){throw n.error("Failed to fetch entitlements:",e),e}}async checkVerificationStatus(e){try{const t=function(e){return m("/verification/status/:id",{id:e})}(e);return await this.get(t)}catch(e){throw n.error("Failed to check verification status:",e),e}}async logImpression(e,t,i,r,s){try{return(await this.post("/impressions/log",{impressionId:e,userId:t,campaignId:i,creativeId:r,appBundleId:s})).success}catch(e){return n.warn("Failed to log impression (non-blocking):",e),!1}}}const b="encore-sdk-styles",v="encore-";function y(e={}){if(document.getElementById(b))n.debug("Encore styles already injected");else try{const t=document.createElement("style");t.id=b,t.textContent=function(e={}){const t=function(e){const t=[];return e.primaryColor&&t.push(`--encore-primary-color: ${e.primaryColor};`),e.backgroundColor&&t.push(`--encore-bg-color: ${e.backgroundColor};`),e.textColor&&t.push(`--encore-text-color: ${e.textColor};`),e.borderRadius&&t.push(`--encore-border-radius: ${e.borderRadius};`),e.fontFamily&&t.push(`--encore-font-family: ${e.fontFamily};`),t.join("\n ")}(e);return`\n /* CSS Custom Properties (Theme Variables) */\n :root {\n ${t||"/* No custom theme variables */"}\n --encore-primary-color: ${e.primaryColor??"#4F46E5"};\n --encore-bg-color: ${e.backgroundColor??"#ffffff"};\n --encore-text-color: ${e.textColor??"#1F2937"};\n --encore-border-radius: ${e.borderRadius??"12px"};\n --encore-font-family: ${e.fontFamily??'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'};\n }\n\n /* Backdrop */\n .${v}backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.55);\n backdrop-filter: blur(2px);\n z-index: 9998;\n opacity: 0;\n transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .${v}backdrop.${v}visible {\n opacity: 1;\n }\n\n /* Modal Container */\n .${v}modal {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 9999;\n background-color: var(--encore-bg-color);\n border-radius: 20px;\n box-shadow: 0 24px 48px -12px rgba(0, 0, 0, 0.18), 0 12px 24px -8px rgba(0, 0, 0, 0.08);\n max-width: 800px;\n max-height: 90vh;\n width: calc(100% - 32px);\n overflow-x: hidden;\n overflow-y: auto;\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.96);\n transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1), transform 250ms cubic-bezier(0.4, 0, 0.2, 1);\n font-family: var(--encore-font-family);\n color: var(--encore-text-color);\n }\n\n .${v}modal.${v}visible {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n\n /* Close Button */\n .${v}close-button {\n position: absolute;\n top: 20px;\n right: 20px;\n width: 40px;\n height: 40px;\n border: none;\n background-color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9CA3AF;\n transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n padding: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n z-index: 10;\n }\n\n .${v}close-button:hover {\n background-color: #FFFFFF;\n color: #6B7280;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n transform: scale(1.05);\n }\n\n .${v}close-button:active {\n transform: scale(0.98);\n }\n\n .${v}close-button:focus {\n outline: 2px solid var(--encore-primary-color);\n outline-offset: 2px;\n }\n\n .${v}close-button svg {\n width: 18px;\n height: 18px;\n }\n\n /* Body scroll lock */\n body.${v}no-scroll {\n overflow: hidden;\n }\n\n /* Modal Header */\n .${v}modal-header {\n padding: 24px 24px 16px;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .${v}modal-title {\n margin: 0;\n font-size: 24px;\n font-weight: 700;\n line-height: 1.25;\n color: var(--encore-text-color);\n }\n\n .${v}modal-subtitle {\n margin: 8px 0 0;\n font-size: 14px;\n color: #6B7280;\n line-height: 1.5;\n }\n\n /* Modal Body */\n .${v}modal-body {\n padding: 0;\n position: relative;\n isolation: isolate;\n }\n\n /* Carousel Container */\n .${v}carousel {\n display: flex;\n flex-direction: column;\n overflow: visible;\n }\n\n /* Carousel Header */\n .${v}carousel-header {\n padding: 40px 68px 28px;\n text-align: center;\n }\n\n .${v}carousel-title {\n font-size: 32px;\n font-weight: 510;\n line-height: 1.1;\n color: #181417;\n margin: 0 0 8px 0;\n letter-spacing: -0.3px;\n }\n\n .${v}carousel-subtitle {\n font-size: 16px;\n line-height: 1.2;\n color: #181417;\n margin: 0;\n font-weight: 400;\n }\n\n /* Carousel Cards Container - Horizontal Scroll */\n .${v}carousel-cards {\n display: flex;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n scroll-behavior: smooth;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n gap: 24px;\n padding: 24px 78px;\n position: relative;\n }\n\n .${v}carousel-cards::-webkit-scrollbar {\n display: none;\n }\n\n /* Carousel Item Wrapper */\n .${v}carousel-item {\n flex: 0 0 426px;\n width: 426px;\n scroll-snap-align: center;\n scroll-snap-stop: always;\n opacity: 0.5;\n transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: auto;\n }\n\n /* Active carousel item */\n .${v}carousel-item.${v}active {\n opacity: 1;\n z-index: 1;\n }\n\n /* Offer Card */\n .${v}offer-card {\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 16px;\n box-shadow: 0 2px 12px rgba(116, 112, 133, 0.16);\n height: 370px;\n overflow: hidden;\n }\n\n /* Offer Banner */\n .${v}offer-banner {\n width: 100%;\n background-color: transparent;\n position: relative;\n padding: 0;\n height: 180px;\n overflow: hidden;\n border-radius: 16px 16px 0 0;\n }\n\n .${v}offer-banner-image {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n background-color: #F9FAFB;\n opacity: 0;\n transition: opacity 200ms ease-out;\n }\n\n .${v}offer-banner-image.${v}loaded {\n opacity: 1;\n }\n\n /* Banner overlay for title text */\n .${v}offer-banner-overlay {\n position: absolute;\n left: 24px;\n top: 50%;\n transform: translateY(-50%);\n max-width: calc(100% - 80px);\n z-index: 2;\n }\n\n .${v}offer-banner-title {\n font-size: 24px;\n font-weight: 600;\n line-height: 1.2;\n color: #FFFFFF;\n margin: 0;\n text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n }\n\n /* Info button on banner */\n .${v}banner-info-button {\n position: absolute;\n top: 20px;\n right: 20px;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background-color: rgba(242, 242, 242, 0.95);\n backdrop-filter: blur(6px);\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 150ms ease;\n z-index: 3;\n padding: 0;\n }\n\n .${v}banner-info-button:hover {\n background-color: #F2F2F2;\n transform: scale(1.05);\n }\n\n .${v}banner-info-button:focus {\n outline: 2px solid #5671FF;\n outline-offset: 2px;\n }\n\n .${v}banner-info-button svg {\n width: 14px;\n height: 14px;\n color: #181417;\n stroke-width: 2;\n }\n\n /* Offer Details */\n .${v}offer-details {\n padding: 16px 20px;\n flex: 1;\n overflow-y: auto;\n }\n\n .${v}offer-details-heading {\n font-size: 14px;\n font-weight: 400;\n color: #6A6D81;\n margin: 0 0 8px 0;\n letter-spacing: -1px;\n line-height: 1.2;\n }\n\n .${v}offer-details-list {\n list-style: disc;\n margin: 0;\n padding: 0 0 0 21px;\n }\n\n .${v}offer-details-list li {\n font-size: 14px;\n line-height: 1.2;\n color: #181417;\n margin-bottom: 4px;\n padding-left: 0;\n letter-spacing: -1px;\n }\n\n .${v}offer-details-list li:last-child {\n margin-bottom: 0;\n }\n\n .${v}offer-details-list li::marker {\n color: #6A6D81;\n }\n\n /* Offer Footer */\n .${v}offer-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-top: 1px solid #F2F2F2;\n gap: 12px;\n min-height: 74px;\n }\n\n /* Offer Merchant */\n .${v}offer-merchant {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .${v}offer-logo {\n width: 42px;\n height: 42px;\n border-radius: 8px;\n object-fit: contain;\n background-color: #F3F4F6;\n flex-shrink: 0;\n opacity: 0;\n transition: opacity 200ms ease-out;\n }\n\n .${v}offer-logo.${v}loaded {\n opacity: 1;\n }\n\n .${v}offer-merchant-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n min-width: 0;\n }\n\n .${v}offer-merchant-name {\n font-size: 16px;\n font-weight: 590;\n color: #181417;\n line-height: 1.1;\n letter-spacing: -1px;\n }\n\n .${v}offer-merchant-desc {\n font-size: 14px;\n color: #6A6D81;\n line-height: 1.2;\n letter-spacing: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Claim Button */\n .${v}button-claim {\n padding: 10px 16px;\n height: 34px;\n min-width: 78px;\n font-size: 14px;\n font-weight: 590;\n border-radius: 999px;\n border: none;\n background: #5671FF;\n color: white;\n cursor: pointer;\n transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n font-family: var(--encore-font-family);\n white-space: nowrap;\n line-height: 1.2;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .${v}button-claim:hover:not(:disabled) {\n background: #4560E6;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(86, 113, 255, 0.3);\n }\n\n .${v}button-claim:active {\n transform: translateY(0);\n background: #3A52CC;\n }\n\n .${v}button-claim:focus {\n outline: 2px solid #5671FF;\n outline-offset: 2px;\n }\n\n .${v}button-claim:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n /* Carousel Navigation */\n .${v}carousel-navigation {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 40px;\n padding: 28px 32px 32px;\n }\n\n .${v}nav-button {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 1px solid #BBBBBB;\n background-color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #BBBBBB;\n transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n padding: 0;\n }\n\n .${v}nav-button:hover:not(:disabled) {\n border-color: #5671FF;\n color: #5671FF;\n transform: scale(1.05);\n }\n\n .${v}nav-button:active:not(:disabled) {\n transform: scale(0.95);\n }\n\n .${v}nav-button:focus {\n outline: 2px solid #5671FF;\n outline-offset: 2px;\n }\n\n .${v}nav-button svg {\n width: 20px;\n height: 20px;\n stroke-width: 2;\n }\n\n .${v}nav-button:not(:disabled) {\n border-color: #5671FF;\n color: #5671FF;\n }\n\n .${v}nav-button:disabled,\n .${v}nav-button.${v}disabled {\n opacity: 1;\n cursor: not-allowed;\n border-color: #BBBBBB;\n color: #BBBBBB;\n }\n\n .${v}nav-button:disabled:hover,\n .${v}nav-button.${v}disabled:hover {\n border-color: #BBBBBB;\n color: #BBBBBB;\n transform: none;\n }\n\n /* Loading State */\n .${v}loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px;\n }\n\n .${v}spinner {\n width: 40px;\n height: 40px;\n border: 3px solid #E5E7EB;\n border-top-color: var(--encore-primary-color);\n border-radius: 50%;\n animation: ${v}spin 0.8s linear infinite;\n }\n\n @keyframes ${v}spin {\n to { transform: rotate(360deg); }\n }\n\n /* Responsive: Mobile (0-767px) */\n @media (max-width: 767px) {\n .${v}modal {\n width: calc(100% - 24px);\n max-width: 100%;\n margin: 12px;\n }\n\n .${v}carousel-header {\n padding: 24px 20px 20px;\n }\n\n .${v}carousel-title {\n font-size: 22px;\n }\n\n .${v}carousel-subtitle {\n font-size: 14px;\n }\n\n .${v}carousel-cards {\n padding: 20px 40px;\n }\n\n .${v}carousel-item {\n flex: 0 0 calc(100% - 80px);\n }\n\n .${v}offer-banner {\n padding: 16px 16px 0;\n }\n\n .${v}offer-details {\n padding: 20px 20px;\n }\n\n .${v}offer-footer {\n padding: 16px 20px 24px;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .${v}offer-merchant {\n flex: 1 1 100%;\n }\n\n .${v}button-claim {\n flex: 1 1 100%;\n }\n\n .${v}carousel-navigation {\n padding: 20px 20px 24px;\n }\n }\n\n /* Responsive: Tablet (768-1023px) */\n @media (min-width: 768px) and (max-width: 1023px) {\n .${v}modal {\n max-width: 600px;\n }\n }\n\n /* Responsive: Desktop (1024px+) */\n @media (min-width: 1024px) {\n .${v}modal {\n max-width: 600px;\n }\n }\n\n /* Accessibility: High Contrast Mode */\n @media (prefers-contrast: high) {\n .${v}button {\n border: 2px solid currentColor;\n }\n }\n\n /* Accessibility: Reduced Motion */\n @media (prefers-reduced-motion: reduce) {\n .${v}backdrop,\n .${v}modal,\n .${v}button,\n .${v}close-button {\n transition: none;\n }\n\n .${v}spinner {\n animation: none;\n }\n }\n\n /* Focus Visible (for keyboard navigation) */\n .${v}button:focus-visible,\n .${v}close-button:focus-visible {\n outline: 2px solid var(--encore-primary-color);\n outline-offset: 2px;\n }\n\n /* ===== Success Screen ===== */\n .${v}success-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n min-height: 400px;\n animation: ${v}fade-in 0.3s ease-out;\n }\n\n .${v}success-icon {\n width: 80px;\n height: 80px;\n background: linear-gradient(135deg, var(--encore-primary-color), #10b981);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 48px;\n color: white;\n margin-bottom: 1.5rem;\n animation: ${v}scale-in 0.5s ease-out;\n }\n\n .${v}success-title {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--encore-text-color);\n margin: 0 0 0.75rem 0;\n }\n\n .${v}success-subtitle {\n font-size: 1.125rem;\n color: var(--encore-text-muted);\n margin: 0 0 2rem 0;\n line-height: 1.6;\n }\n\n .${v}success-details {\n background: rgba(79, 70, 229, 0.05);\n border-radius: 12px;\n padding: 1.5rem;\n margin-bottom: 2rem;\n min-width: 280px;\n }\n\n .${v}success-detail {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.5rem 0;\n }\n\n .${v}success-detail:not(:last-child) {\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n }\n\n .${v}success-detail-label {\n font-size: 0.875rem;\n color: var(--encore-text-muted);\n font-weight: 500;\n }\n\n .${v}success-detail-value {\n font-size: 1rem;\n color: var(--encore-text-color);\n font-weight: 600;\n }\n\n .${v}success-button {\n background: linear-gradient(135deg, var(--encore-primary-color), #10b981);\n color: white;\n border: none;\n border-radius: var(--encore-border-radius);\n padding: 0.875rem 2.5rem;\n font-size: 1rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n }\n\n .${v}success-button:hover {\n transform: translateY(-2px);\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n }\n\n .${v}success-button:active {\n transform: translateY(0);\n }\n\n .${v}success-button:focus-visible {\n outline: 2px solid var(--encore-primary-color);\n outline-offset: 2px;\n }\n\n @keyframes ${v}scale-in {\n from {\n transform: scale(0);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n `}(e),document.head.appendChild(t),n.debug("Encore styles injected successfully")}catch(e){n.error("Failed to inject Encore styles:",e)}}function x(e){return`${v}${e}`}class w{#b;#re=null;#se=null;#oe=null;#ae=null;#le=!1;#ce=null;#de=[];#ue=null;constructor(e={}){this.#b=new o,y(e)}show(){this.#le?n.warn("Modal is already visible"):(this.#ce=document.activeElement,this.#he(),this.#re&&document.body.appendChild(this.#re),this.#se&&document.body.appendChild(this.#se),document.body.classList.add(x("no-scroll")),requestAnimationFrame(()=>{this.#re?.classList.add(x("visible")),this.#se?.classList.add(x("visible"))}),this.#fe(),this.#ge(),this.#me(),this.#le=!0,this.#b.emit("show",void 0),n.debug("Modal shown"))}hide(){this.#le&&(this.#re?.classList.remove(x("visible")),this.#se?.classList.remove(x("visible")),setTimeout(()=>{this.#pe(),document.body.classList.remove(x("no-scroll")),this.#ce instanceof HTMLElement&&this.#ce.focus(),this.#le=!1,this.#b.emit("hide",void 0),n.debug("Modal hidden")},200))}isVisible(){return this.#le}setContent(e){this.#ae?(this.#ae.innerHTML="",this.#ae.appendChild(e),this.#ge()):n.error("Modal body not initialized")}on(e,t){return this.#b.on(e,t)}#he(){this.#re=document.createElement("div"),this.#re.className=x("backdrop"),this.#re.setAttribute("aria-hidden","true"),this.#se=document.createElement("div"),this.#se.className=x("modal"),this.#se.setAttribute("role","dialog"),this.#se.setAttribute("aria-modal","true"),this.#se.setAttribute("aria-labelledby",x("modal-title")),this.#oe=document.createElement("button"),this.#oe.className=x("close-button"),this.#oe.setAttribute("aria-label","Close modal"),this.#oe.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />\n </svg>\n ',this.#ae=document.createElement("div"),this.#ae.className=x("modal-body"),this.#se.appendChild(this.#oe),this.#se.appendChild(this.#ae)}#pe(){this.#re?.remove(),this.#se?.remove(),this.#re=null,this.#se=null,this.#oe=null,this.#ae=null}#fe(){this.#oe?.addEventListener("click",()=>{this.#b.emit("close",void 0),this.hide()}),this.#re?.addEventListener("click",()=>{this.#b.emit("backdropClick",void 0),this.hide()}),this.#ue=this.#be.bind(this),document.addEventListener("keydown",this.#ue)}#be(e){if(this.#le)switch(e.key){case"Escape":e.preventDefault(),this.#b.emit("close",void 0),this.hide();break;case"Tab":e.preventDefault(),this.#ve(e.shiftKey)}}#ve(e){if(0===this.#de.length)return;const t=this.#de.findIndex(e=>e===document.activeElement);let n;n=e?t<=0?this.#de.length-1:t-1:t>=this.#de.length-1?0:t+1,this.#de[n]?.focus()}#ge(){if(!this.#se)return;const e=["button:not([disabled])","a[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");this.#de=Array.from(this.#se.querySelectorAll(e))}#me(){this.#de.length>0&&this.#de[0]?.focus()}destroy(){this.#ue&&document.removeEventListener("keydown",this.#ue),this.#b.removeAllListeners(),this.hide()}}class I{#b;#ye=null;#xe=null;constructor(){this.#b=new o}render(e){this.#ye=e,this.#xe=document.createElement("div"),this.#xe.className=x("offer-card");const t=this.#we(e.imageUrl,e.title);this.#xe.appendChild(t);const n=this.#Ie(e);this.#xe.appendChild(n);const i=this.#Ee(e);return this.#xe.appendChild(i),this.#xe}on(e,t){return this.#b.on(e,t)}#we(e,t){const i=document.createElement("div");i.className=x("offer-banner");const r=document.createElement("img");if(r.className=x("offer-banner-image"),r.alt=t??"Offer image",e?(r.src=e,r.complete?r.classList.add(x("loaded")):r.onload=()=>{r.classList.add(x("loaded"))},r.onerror=()=>{n.warn("Failed to load offer image, using fallback"),r.src=this.#Ce(),r.classList.add(x("loaded"))}):(r.src=this.#Ce(),r.classList.add(x("loaded"))),i.appendChild(r),t){const e=document.createElement("div");e.className=x("offer-banner-overlay");const n=document.createElement("h3");n.className=x("offer-banner-title"),n.textContent=t,e.appendChild(n),i.appendChild(e)}const s=document.createElement("button");return s.className=x("banner-info-button"),s.setAttribute("aria-label","More information"),s.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />\n </svg>\n ',s.addEventListener("click",e=>{e.stopPropagation(),n.debug("Info button clicked for offer",{title:t})}),i.appendChild(s),i}#Ce(){return`data:image/svg+xml;base64,${btoa('\n <svg xmlns="http://www.w3.org/2000/svg" width="600" height="240" viewBox="0 0 600 240">\n <rect width="600" height="240" fill="#E5E7EB"/>\n <text x="50%" y="50%" text-anchor="middle" dy=".3em" fill="#9CA3AF" font-family="sans-serif" font-size="18">\n Offer Image\n </text>\n </svg>\n ')}`}#Ie(e){const t=document.createElement("div");t.className=x("offer-details");const n=document.createElement("h3");n.className=x("offer-details-heading"),n.textContent="Offer details";const i=document.createElement("ul");if(i.className=x("offer-details-list"),e.instructions&&e.instructions.length>0)e.instructions.forEach(e=>{const t=document.createElement("li");t.textContent=e.subtitle||e.title,i.appendChild(t)});else if(e.description){const t=document.createElement("li");t.textContent=e.description,i.appendChild(t)}return t.appendChild(n),t.appendChild(i),t}#Ee(e){const t=document.createElement("div");t.className=x("offer-footer");const i=document.createElement("div");if(i.className=x("offer-merchant"),e.logoUrl){const t=document.createElement("img");t.className=x("offer-logo"),t.src=e.logoUrl,t.alt=`${e.merchantName??"Merchant"} logo`,t.complete?t.classList.add(x("loaded")):t.onload=()=>{t.classList.add(x("loaded"))},t.onerror=()=>{n.warn("Failed to load merchant logo",{merchantName:e.merchantName}),t.style.display="none"},i.appendChild(t)}const r=document.createElement("div");if(r.className=x("offer-merchant-text"),e.merchantName){const t=document.createElement("div");t.className=x("offer-merchant-name"),t.textContent=e.merchantName,r.appendChild(t)}if(e.quickInstructions){const t=document.createElement("div");t.className=x("offer-merchant-desc"),t.textContent=e.quickInstructions,r.appendChild(t)}i.appendChild(r);const s=document.createElement("button");return s.className=`${x("button")} ${x("button-claim")}`,s.textContent=e.ctaText??"Claim",s.setAttribute("aria-label",`Claim offer: ${e.title??"offer"}`),s.addEventListener("click",()=>{this.#ye&&this.#b.emit("claim",{offer:this.#ye})}),t.appendChild(i),t.appendChild(s),t}destroy(){this.#b.removeAllListeners(),this.#xe=null,this.#ye=null}}class E{#b;#$e;#ke=0;#xe=null;#Ae=null;#Te=null;#Ne=[];#Se=null;#Re=null;constructor(e){if(this.#b=new o,this.#$e=e,0===e.length)throw new Error("OfferCarousel requires at least one offer");this.#Le()}render(){this.#xe=document.createElement("div"),this.#xe.className=x("carousel"),this.#Se=document.createElement("div"),this.#Se.setAttribute("role","status"),this.#Se.setAttribute("aria-live","polite"),this.#Se.setAttribute("aria-atomic","true"),this.#Se.className="sr-only",this.#Se.style.position="absolute",this.#Se.style.width="1px",this.#Se.style.height="1px",this.#Se.style.padding="0",this.#Se.style.margin="-1px",this.#Se.style.overflow="hidden",this.#Se.style.clip="rect(0, 0, 0, 0)",this.#Se.style.whiteSpace="nowrap",this.#Se.style.border="0";const e=this.#Fe();if(this.#xe.appendChild(e),this.#Ae=document.createElement("div"),this.#Ae.className=x("carousel-cards"),this.#xe.appendChild(this.#Se),this.#xe.appendChild(this.#Ae),this.#$e.length>1){const e=this.#Me();this.#xe.appendChild(e)}return this.#Oe(),this.#Ue(),this.#De(0,!1),this.#xe}on(e,t){return this.#b.on(e,t)}getCurrentIndex(){return this.#ke}getTotalOffers(){return this.#$e.length}next(){this.#ke<this.#$e.length-1&&(this.#ke++,this.#De(this.#ke),this.#Be(),this.#qe(`Showing offer ${this.#ke+1} of ${this.#$e.length}`),n.debug(`Navigated to offer ${this.#ke+1}`))}previous(){this.#ke>0&&(this.#ke--,this.#De(this.#ke),this.#Be(),this.#qe(`Showing offer ${this.#ke+1} of ${this.#$e.length}`),n.debug(`Navigated to offer ${this.#ke+1}`))}#Oe(){if(!this.#Ae)return;const e=this.#Ae;this.#$e.forEach((t,n)=>{const i=new I,r=i.render(t),s=document.createElement("div");s.className=x("carousel-item"),s.setAttribute("data-index",n.toString()),s.appendChild(r),i.on("claim",()=>{this.#b.emit("offerClaim",{offer:t,index:n})}),this.#Ne.push(i),e.appendChild(s)}),requestAnimationFrame(()=>{e.classList.add(x("cards-ready"))})}#De(e,t=!0){if(!this.#Ae)return;const n=this.#Ae.querySelectorAll(`.${x("carousel-item")}`),i=n[e];if(i){i.scrollIntoView({behavior:t?"smooth":"auto",block:"nearest",inline:"center"}),n.forEach((t,n)=>{n===e?t.classList.add(x("active")):t.classList.remove(x("active"))});const r=this.#$e[e];r&&this.#b.emit("offerView",{offer:r,index:e})}}#Fe(){const e=document.createElement("div");e.className=x("carousel-header");const t=document.createElement("h2");t.className=x("carousel-title"),t.id=x("modal-title"),t.textContent="Unlock 10 free articles – choose an offer below";const n=document.createElement("p");return n.className=x("carousel-subtitle"),n.textContent="Activate one of these partner offers and get 10 free articles. No credit card required.",e.appendChild(t),e.appendChild(n),e}#Me(){const e=document.createElement("div");e.className=x("carousel-navigation");const t=document.createElement("button");t.className=x("nav-button"),t.setAttribute("aria-label","Previous offer"),t.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" style="transform: rotate(90deg);">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />\n </svg>\n ',t.addEventListener("click",()=>this.previous());const n=document.createElement("button");return n.className=x("nav-button"),n.setAttribute("aria-label","Next offer"),n.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" style="transform: rotate(270deg);">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />\n </svg>\n ',n.addEventListener("click",()=>this.next()),e.appendChild(t),e.appendChild(n),this.#Te=e,this.#Be(t,n),e}#Be(e,t){if(!this.#Te)return;const n=this.#Te.querySelectorAll(`.${x("nav-button")}`),i=e??n[0],r=t??n[1];i&&(i.disabled=0===this.#ke,i.classList.toggle(x("disabled"),0===this.#ke)),r&&(r.disabled=this.#ke===this.#$e.length-1,r.classList.toggle(x("disabled"),this.#ke===this.#$e.length-1))}#Ue(){this.#Re=this.#Ke.bind(this),document.addEventListener("keydown",this.#Re)}#Ke(e){if(this.#xe)switch(e.key){case"ArrowLeft":e.preventDefault(),this.previous();break;case"ArrowRight":e.preventDefault(),this.next()}}#qe(e){this.#Se&&(this.#Se.textContent=e)}#Le(){this.#$e.forEach(e=>{e.imageUrl&&((new Image).src=e.imageUrl,n.debug("Preloading offer image",{offerId:e.id,url:e.imageUrl})),e.logoUrl&&((new Image).src=e.logoUrl,n.debug("Preloading merchant logo",{offerId:e.id,url:e.logoUrl}))})}destroy(){this.#Re&&document.removeEventListener("keydown",this.#Re),this.#Ne.forEach(e=>e.destroy()),this.#Ne=[],this.#b.removeAllListeners(),this.#xe=null,this.#Ae=null,this.#Te=null,this.#Se=null}}const C=e=>`encore-success-${e}`;class ${#xe=null;#b;#t;#Pe=null;constructor(e){this.#t=e,this.#b=new o}render(){this.#xe=document.createElement("div"),this.#xe.className=C("container");const e=document.createElement("div");e.className=C("icon"),e.innerHTML="✓";const t=document.createElement("h2");t.className=C("title"),t.textContent=this.#t.titleText??"Success!";const i=document.createElement("p");i.className=C("subtitle"),i.textContent=this.#t.subtitleText??this.#ze(this.#t.entitlement);const r=document.createElement("div");r.className=C("details"),r.innerHTML=this.#_e(this.#t.entitlement);const s=document.createElement("button");return s.className=C("button"),s.textContent=this.#t.buttonText??"Continue",s.setAttribute("type","button"),s.addEventListener("click",()=>this.#Ge()),this.#xe.appendChild(e),this.#xe.appendChild(t),this.#xe.appendChild(i),this.#xe.appendChild(r),this.#xe.appendChild(s),this.#t.autoDismissMs&&this.#t.autoDismissMs>0&&this.#je(this.#t.autoDismissMs),n.debug("Success screen rendered"),this.#xe}on(e,t){return this.#b.on(e,t)}destroy(){null!==this.#Pe&&(clearTimeout(this.#Pe),this.#Pe=null),this.#xe&&(this.#xe.remove(),this.#xe=null),this.#b.removeAllListeners(),n.debug("Success screen destroyed")}#Ge(){n.debug("User clicked continue on success screen"),this.#b.emit("continue",void 0)}#je(e){this.#Pe=window.setTimeout(()=>{n.debug("Success screen auto-dismissing"),this.#b.emit("continue",void 0)},e)}#ze(e){switch(e.type){case"freeTrial":return`You've unlocked a ${e.value??""} ${e.unit??"day"} free trial!`;case"discount":return`You've received a ${e.value??""}${"percent"===e.unit?"%":""} discount!`;case"credit":return`You've earned $${e.value??"0"} in credits!`;default:return"You've unlocked a special offer!"}}#_e(e){const t=[];if("freeTrial"===e.type)t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Type:</span>\n <span class="${C("detail-value")}">Free Trial</span>\n </div>`),e.value&&e.unit&&t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Duration:</span>\n <span class="${C("detail-value")}">${e.value} ${e.unit}</span>\n </div>`);else if("discount"===e.type){if(t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Type:</span>\n <span class="${C("detail-value")}">Discount</span>\n </div>`),e.value&&e.unit){const n="percent"===e.unit?`${e.value}%`:`$${e.value}`;t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Amount:</span>\n <span class="${C("detail-value")}">${n}</span>\n </div>`)}}else"credit"===e.type&&(t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Type:</span>\n <span class="${C("detail-value")}">Credit</span>\n </div>`),e.value&&t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Amount:</span>\n <span class="${C("detail-value")}}">$${e.value}</span>\n </div>`));return t.join("")}}class k{#He=null;#Ve=null;#Qe=!1;start(e){this.#Qe?n.warn("FocusDetector already active"):(this.#He=()=>{n.debug("Window focused"),e()},this.#Ve=()=>{"visible"===document.visibilityState&&(n.debug("Document became visible"),e())},window.addEventListener("focus",this.#He),document.addEventListener("visibilitychange",this.#Ve),this.#Qe=!0,n.debug("FocusDetector started"))}stop(){this.#Qe&&(this.#He&&(window.removeEventListener("focus",this.#He),this.#He=null),this.#Ve&&(document.removeEventListener("visibilitychange",this.#Ve),this.#Ve=null),this.#Qe=!1,n.debug("FocusDetector stopped"))}isActive(){return this.#Qe}}function A(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=15&(crypto.getRandomValues(new Uint8Array(1))[0]??0);return("x"===e?t:3&t|8).toString(16)})}const T="0.0.9",N="user_id",S="user_attributes",R=new class{#We;#h;#f=null;#Je=null;#Ye=null;#Ze=null;#Xe=null;#g=null;#et={};#tt=!1;#nt=!1;constructor(){this.#We=new i,this.#h=new s}configure(e){if(this.#We.configure(e)){this.#it();const e=this.#We.getBaseURL();e&&(this.#f=new p(this.#We.getApiKey()??"",e),this.#g&&(this.#Je=new c(this.#h,this.#f,this.#g),this.#Ye=new u(this.#h,this.#f,this.#g),this.#Ze=new h(this.#f,this.#g)),this.#Xe=new k),n.info("Encore SDK initialized successfully",{version:T})}}#it(){const e=this.#h.get(N);e?(this.#g=e,n.debug("Loaded existing user ID:",e)):(this.#g=A(),this.#h.set(N,this.#g),n.debug("Generated new user ID:",this.#g));const t=this.#h.get(S);t&&(this.#et=t,n.debug("Loaded user attributes"))}#rt(){return!!this.#We.isConfigured()||(n.error("SDK not configured. Call Encore.configure() first."),!1)}identify(e,t){if(!this.#rt())return;if(!e||"string"!=typeof e)return void n.error("identify() requires a valid user ID string");const i=this.#g;this.#g=e,this.#h.set(N,e),t&&this.setUserAttributes(t),i!==e&&(n.info("User identified:",e),this.#Je&&this.#Je.setUserId(e),this.#Ye&&this.#Ye.setUserId(e),this.#Ze&&this.#Ze.setUserId(e))}getCurrentUserId(){return this.#g}reset(){this.#rt()&&(n.info("Resetting SDK"),this.#h.clear(),this.#g=A(),this.#h.set(N,this.#g),this.#et={},this.#Je&&(this.#Je.clearCache(),this.#f&&this.#g&&(this.#Je=new c(this.#h,this.#f,this.#g))),this.#Ye&&(this.#Ye.clearQueue(),this.#Ye.destroy(),this.#f&&this.#g&&(this.#Ye=new u(this.#h,this.#f,this.#g))),this.#Ze&&(this.#Ze.clearCache(),this.#f&&this.#g&&(this.#Ze=new h(this.#f,this.#g))),this.#Xe?.isActive()&&this.#Xe.stop(),n.debug("SDK reset complete",{newUserId:this.#g}))}getVersion(){return T}setLogLevel(e){n.setLogLevel(e)}setUserAttributes(e){this.#rt()&&(e&&"object"==typeof e?(this.#et={...this.#et,...e,custom:{...this.#et.custom,...e.custom}},this.#h.set(S,this.#et),n.debug("User attributes updated",this.#et)):n.error("setUserAttributes() requires a valid UserAttributes object"))}getUserAttributes(){return{...this.#et}}async presentOffer(t){if(!this.#rt()){const n={type:"error",error:{code:e.INITIALIZATION_ERROR,message:"SDK not configured"}};return t?.onNotGranted&&t.onNotGranted(n),t?.onError&&t.onError({code:e.INITIALIZATION_ERROR,message:"SDK not configured"}),{granted:!1,reason:n}}if(this.#tt){n.warn("Presentation already in progress");const i={type:"error",error:{code:e.UNKNOWN_ERROR,message:"Presentation already in progress"}};return t?.onNotGranted&&t.onNotGranted(i),{granted:!1,reason:i}}this.#tt=!0;try{const e=await this.#st(t);return e.granted&&e.entitlement&&t?.onGranted?t.onGranted(e.entitlement):!e.granted&&e.reason&&t?.onNotGranted&&t.onNotGranted(e.reason),e}catch(i){n.error("Error during presentation",i);const r={type:"error",error:{code:e.UNKNOWN_ERROR,message:i instanceof Error?i.message:"Unknown error"}};return t?.onError&&"string"!=typeof r&&"error"===r.type&&t.onError(r.error),t?.onNotGranted&&t.onNotGranted(r),{granted:!1,reason:r}}finally{this.#tt=!1}}isActive(e,t){return!!this.#rt()&&(this.#Je?this.#Je.isActive(e,t):(n.error("EntitlementManager not initialized"),!1))}async refreshEntitlements(){this.#rt()&&(this.#Je?await this.#Je.refreshEntitlements():n.error("EntitlementManager not initialized"))}didGrant(e,t){this.#rt()&&(this.#Ye?t&&"string"==typeof t?this.#Ye.sendGrantSignal(t,e):n.error("didGrant() requires a valid transaction ID"):n.error("SignalManager not initialized"))}async waitForVerification(e,t){if(!this.#rt())return n.error("SDK not configured"),"failed";if(!this.#f)return n.error("API client not initialized"),"failed";if(!e)return n.error("waitForVerification() requires a transaction ID"),"failed";try{n.debug("Starting verification wait",{transactionId:e,timeout:t});const i={transactionId:e};void 0!==t&&(i.timeout=t);const r=new f(this.#f,i),s=await r.poll();return"verified"===s&&await this.refreshEntitlements(),s}catch(t){return n.error("Error during verification wait",{transactionId:e,error:t}),"failed"}}on(e,t){return this.#rt()?this.#Je?this.#Je.getEventEmitter().on(e,t):(n.error("EntitlementManager not initialized"),()=>{}):()=>{}}observeEntitlement(e,t){return{subscribe:i=>{if(!this.#rt())return()=>{};if(!this.#Je)return n.error("EntitlementManager not initialized"),()=>{};const r=this.#Je.isActive(e,t);return i(r),this.on("entitlementChanged",n=>{const r=n.scope;JSON.stringify(n.entitlementType)===JSON.stringify(e)&&("verified"===t&&"verified"!==r||i(n.isActive))})}}}placement(){return new g(async()=>this.presentOffer())}async#st(t){if(!this.#Ze||!this.#f)return n.error("Managers not initialized"),{granted:!1,reason:{type:"error",error:{code:e.INITIALIZATION_ERROR,message:"Managers not initialized"}}};try{this.#nt||(y({}),this.#nt=!0),n.debug("Fetching offers");const{offers:t,uiConfiguration:i}=await this.#Ze.fetchOffers(this.#et);if(0===t.length)return n.info("No offers available"),{granted:!1,reason:"noOffersAvailable"};const r={...this.#We.getUIConfiguration(),...i},s=new Map,o=new Set;t.forEach(e=>{s.set(e.id,A())});const a=new w,l=new E(t),c=await new Promise(t=>{l.on("offerClaim",i=>{const o=i.offer;n.debug("User claimed offer",{offerId:o.id}),(async()=>{try{if(!this.#Ze)throw new Error("OfferManager not initialized");const e=s.get(o.id),i=await this.#Ze.startTransaction(o.campaignId,o.creativeId,e);this.#ot(o.advertiserUrl)||n.warn("Failed to open advertiser URL (popup blocked?)"),this.didGrant("provisional",i),await this.refreshEntitlements(),this.#Xe&&!this.#Xe.isActive()&&this.#Xe.start(()=>{(async()=>{n.debug("User returned to app, refreshing entitlements"),await this.refreshEntitlements()})()}),this.#at(a,o.entitlement,()=>{a.hide(),t({granted:!0,entitlement:o.entitlement})},r)}catch(i){n.error("Error starting transaction",{offerId:o.id,error:i}),a.hide(),t({granted:!1,reason:{type:"error",error:{code:e.UNKNOWN_ERROR,message:i instanceof Error?i.message:"Transaction failed"}}})}})()}),l.on("complete",e=>{e.claimed||(n.debug("User declined last offer"),l.destroy(),a.hide(),t({granted:!1,reason:"userDeclinedLastOffer"}))}),a.on("close",()=>{n.debug("User closed modal"),l.destroy(),t({granted:!1,reason:"userClosedModal"})}),a.on("backdropClick",()=>{n.debug("User clicked outside modal"),l.destroy(),a.hide(),t({granted:!1,reason:"userClickedOutside"})}),l.on("offerView",e=>{const{offer:t}=e;if(o.has(t.id))return void n.debug("Impression already logged for this modal session",{offerId:t.id});const i=s.get(t.id);i&&this.#Ze&&(this.#Ze.logImpression(i,t),o.add(t.id))}),a.show();const i=l.render();a.setContent(i)});return a.destroy(),l.destroy(),c}catch(t){return n.error("Error in presentation flow",t),{granted:!1,reason:{type:"error",error:{code:e.UNKNOWN_ERROR,message:t instanceof Error?t.message:"Unknown error"}}}}}#ot(e){try{const t=window.open(e,"_blank","noopener,noreferrer");return!!t&&(t.focus(),!0)}catch(t){return n.error("Failed to open advertiser URL",{url:e,error:t}),!1}}#at(e,t,i,r){try{const s={entitlement:t,autoDismissMs:0};r?.creditClaimedTitleText&&(s.titleText=r.creditClaimedTitleText),r?.creditClaimedSubtitleText&&(s.subtitleText=r.creditClaimedSubtitleText),r?.applyCreditsButtonText&&(s.buttonText=r.applyCreditsButtonText);const o=new $(s);o.on("continue",()=>{o.destroy(),i()});const a=o.render();e.setContent(a),n.debug("Success screen displayed")}catch(e){n.error("Failed to show success screen",e),i()}}};export{R as Encore,R as default};
|
|
1
|
+
var e;!function(e){e.NETWORK_ERROR="NETWORK_ERROR",e.API_ERROR="API_ERROR",e.CONFIGURATION_ERROR="CONFIGURATION_ERROR",e.INITIALIZATION_ERROR="INITIALIZATION_ERROR",e.STORAGE_ERROR="STORAGE_ERROR",e.INVALID_REQUEST="INVALID_REQUEST",e.UNAUTHORIZED="UNAUTHORIZED",e.NOT_FOUND="NOT_FOUND",e.TIMEOUT="TIMEOUT",e.UNKNOWN_ERROR="UNKNOWN_ERROR"}(e||(e={}));const t="[Encore SDK]",n=new class{#e="none";setLogLevel(e){this.#e=e}getLogLevel(){return this.#e}debug(...e){"debug"===this.#e&&console.debug(t,...e)}info(...e){"debug"===this.#e&&console.info(t,...e)}warn(...e){"debug"===this.#e&&console.warn(t,...e)}error(...e){"debug"===this.#e&&console.error(t,...e)}critical(...e){console.error(t,"[CRITICAL]",...e)}};class i{#t=null;#n=!1;configure(e){if(this.#n)return n.warn("SDK already configured. Ignoring subsequent configure() call."),!1;const t=this.#i(e);if(t)return n.error("Invalid configuration:",t),!1;const i=e.logLevel??"none",r=e.environment??"production";return this.#t={apiKey:e.apiKey,userId:e.userId,environment:r,baseURL:this.#r(r),logLevel:i,uiConfiguration:e.uiConfiguration??{}},n.setLogLevel(i),this.#n=!0,n.debug("SDK configured successfully",this.#t),!0}#i(e){return e.apiKey&&"string"==typeof e.apiKey&&""!==e.apiKey.trim()?e.environment&&!["production","localhost"].includes(e.environment)?"environment must be 'production' or 'localhost'":e.logLevel&&!["none","debug"].includes(e.logLevel)?"logLevel must be 'none' or 'debug'":null:"apiKey is required and must be a non-empty string"}#r(e){return"localhost"===e?"http://localhost:8080/encore/v1":"https://svc.joinyaw.com/product/encore/v1"}getConfig(){return this.#t}isConfigured(){return this.#n}getApiKey(){return this.#t?.apiKey??null}getBaseURL(){return this.#t?.baseURL??null}getEnvironment(){return this.#t?.environment??null}getUIConfiguration(){return this.#t?.uiConfiguration??{}}reset(){this.#t=null,this.#n=!1,n.debug("Configuration reset")}}const r="encore_";class s{#s;#o;constructor(){this.#o=new Map,this.#s=this.#a(),n.debug(`StorageManager initialized with ${this.#s}`)}#a(){return this.#l("localStorage")?"localStorage":this.#l("sessionStorage")?"sessionStorage":(n.warn("Neither localStorage nor sessionStorage available, using in-memory storage"),"memory")}#l(e){try{const t="localStorage"===e?localStorage:sessionStorage,n="__encore_test__";return t.setItem(n,"test"),t.removeItem(n),!0}catch{return!1}}#c(){return"localStorage"===this.#s?localStorage:"sessionStorage"===this.#s?sessionStorage:this.#o}#d(e){return`${r}${e}`}set(e,t){if(void 0===t)return void n.warn(`Attempted to store undefined value for key: ${e}`);const i=this.#d(e),r=JSON.stringify(t);try{const t=this.#c();t instanceof Map?t.set(i,r):t.setItem(i,r),n.debug(`Stored ${e} in ${this.#s}`)}catch(e){e instanceof Error&&"QuotaExceededError"===e.name?n.error("Storage quota exceeded:",e):n.error("Failed to store item:",e),"memory"!==this.#s&&(n.warn("Falling back to memory storage for this item"),this.#o.set(i,r))}}get(e){const t=this.#d(e);try{const i=this.#c();let r=null;return r=i instanceof Map?i.get(t)??null:i.getItem(t),null===r||"undefined"===r?("undefined"===r&&(n.warn(`Found corrupted value "undefined" for key: ${e}, cleaning up`),this.remove(e)),null):JSON.parse(r)}catch(t){return n.error(`Failed to retrieve ${e}:`,t),this.remove(e),null}}remove(e){const t=this.#d(e);try{const i=this.#c();i instanceof Map?i.delete(t):i.removeItem(t),n.debug(`Removed ${e} from ${this.#s}`)}catch(t){n.error(`Failed to remove ${e}:`,t)}}clear(){try{const e=this.#c();if(e instanceof Map)for(const t of e.keys())t.startsWith(r)&&e.delete(t);else{const t=[];for(let n=0;n<e.length;n++){const i=e.key(n);i?.startsWith(r)&&t.push(i)}t.forEach(t=>e.removeItem(t))}n.debug(`Cleared all Encore data from ${this.#s}`)}catch(e){n.error("Failed to clear storage:",e)}}getStorageType(){return this.#s}}class o{#u;constructor(){this.#u=new Map}on(e,t){this.#u.has(e)||this.#u.set(e,new Set);const i=this.#u.get(e);if(!i)throw new Error(`Failed to get handlers for event '${String(e)}'`);return i.add(t),n.debug(`Event listener added for '${String(e)}'`),()=>{this.off(e,t)}}off(e,t){const i=this.#u.get(e);i&&(i.delete(t),n.debug(`Event listener removed for '${String(e)}'`),0===i.size&&this.#u.delete(e))}emit(e,t){const i=this.#u.get(e);if(i&&0!==i.size){n.debug(`Emitting event '${String(e)}'`,{listenerCount:i.size});for(const r of i)try{r(t)}catch(t){n.error(`Error in event handler for '${String(e)}':`,t)}}}removeAllListeners(e){e?(this.#u.delete(e),n.debug(`All listeners removed for '${String(e)}'`)):(this.#u.clear(),n.debug("All event listeners removed"))}listenerCount(e){return this.#u.get(e)?.size??0}hasListeners(e){const t=this.#u.get(e);return void 0!==t&&t.size>0}}const a="entitlements",l="entitlements_timestamp";class c{#h;#g;#f;#m=null;#p=null;#b;constructor(e,t,n){this.#h=e,this.#g=t,this.#f=n,this.#b=new o,this.#v()}getEventEmitter(){return this.#b}setUserId(e){this.#f!==e&&(n.debug("EntitlementManager: User ID changed, clearing cache"),this.#f=e,this.#m=null,this.#v())}#v(){try{const e=`${this.#f}_${a}`,t=`${this.#f}_${l}`,i=this.#h.get(e),r=this.#h.get(t);i&&r&&(this.#m={entitlements:i,timestamp:r},n.debug("Loaded entitlements from storage",{count:i.length,age:Date.now()-r}))}catch(e){n.error("Failed to load entitlements from storage:",e)}}saveEntitlements(e){try{Array.isArray(e)||(n.warn("saveEntitlements called with non-array value, defaulting to empty array"),e=[]);const t=this.loadEntitlements(),i=Date.now(),r=`${this.#f}_${a}`,s=`${this.#f}_${l}`;this.#h.set(r,e),this.#h.set(s,i),this.#m={entitlements:e,timestamp:i},n.debug("Saved entitlements to storage",{count:e.length}),this.#y(t,e)}catch(e){n.error("Failed to save entitlements to storage:",e)}}#y(e,t){Array.isArray(e)||(e=[]),Array.isArray(t)||(t=[]);const n=new Map;for(const t of e){const e=`${String(t.type)}_${t.scope}`;n.set(e,t)}const i=new Map;for(const e of t){const t=`${String(e.type)}_${e.scope}`;i.set(t,e)}for(const[e,t]of i){const i=n.get(e);i&&JSON.stringify(i)===JSON.stringify(t)||this.#b.emit("entitlementChanged",{entitlementType:this.#x(t),scope:t.scope,isActive:this.#w(t),entitlement:t})}for(const[e,t]of n)i.has(e)||this.#b.emit("entitlementChanged",{entitlementType:this.#x(t),scope:t.scope,isActive:!1})}#x(e){const{scope:t,expiresAt:n,grantedAt:i,transactionId:r,...s}=e;return s}#w(e){return!e.expiresAt||new Date(e.expiresAt)>new Date}loadEntitlements(){return this.#m?.entitlements??[]}isCacheStale(){return!this.#m||Date.now()-this.#m.timestamp>3e5}getCacheAge(){return this.#m?Date.now()-this.#m.timestamp:null}clearCache(){this.#m=null,this.#b.removeAllListeners();const e=`${this.#f}_${a}`,t=`${this.#f}_${l}`;this.#h.remove(e),this.#h.remove(t),n.debug("Cleared entitlement cache")}isActive(e,t="all"){const n=this.loadEntitlements();for(const i of n){const n=this.#x(i);if(this.#I(n,e)&&("verified"!==t||"verified"===i.scope)){if(i.expiresAt&&new Date(i.expiresAt)<=new Date)continue;return!0}}return!1}#I(e,t){return JSON.stringify(e)===JSON.stringify(t)}getActiveEntitlements(e="all"){const t=this.loadEntitlements(),n=new Date;return t.filter(t=>("verified"!==e||"verified"===t.scope)&&!(t.expiresAt&&new Date(t.expiresAt)<=n))}async refreshEntitlements(){if(this.#p)return n.debug("Refresh already in progress, waiting..."),this.#p;this.#p=this.#E();try{await this.#p}finally{this.#p=null}}async#E(){try{n.debug("Refreshing entitlements from API");const e=await this.#g.fetchEntitlements(this.#f);if(!Array.isArray(e))return n.warn("Received non-array entitlements from API, defaulting to empty array"),void this.saveEntitlements([]);this.saveEntitlements(e),n.info("Entitlements refreshed successfully",{count:e.length})}catch(e){n.error("Failed to refresh entitlements, keeping cached version:",e)}}}const d="signal_queue";class u{#h;#g;#f;#C=[];#$=!1;#k;constructor(e,t,n){this.#h=e,this.#g=t,this.#f=n,this.#A(),this.#T(),this.processQueue()}setUserId(e){this.#f!==e&&(n.debug("SignalManager: User ID changed, clearing queue"),this.#f=e,this.#C=[],this.#A())}#A(){try{const e=`${this.#f}_${d}`,t=this.#h.get(e);t&&Array.isArray(t)&&(this.#C=t,n.debug("Loaded grant signal queue from storage",{count:t.length}))}catch(e){n.error("Failed to load grant signal queue from storage:",e)}}#N(){try{const e=`${this.#f}_${d}`;this.#h.set(e,this.#C),n.debug("Saved grant signal queue to storage",{count:this.#C.length})}catch(e){n.error("Failed to save grant signal queue to storage:",e)}}enqueue(e,t){const i=this.#C.some(n=>n.transactionId===e&&n.grantType===t);if(i)return void n.debug("Grant signal already in queue, skipping",{transactionId:e,grantType:t});const r={transactionId:e,grantType:t,timestamp:(new Date).toISOString(),attempts:0};this.#C.push(r),this.#N(),n.info("Grant signal added to queue",{transactionId:e,grantType:t})}dequeue(e){const t=this.#C.findIndex(t=>t.transactionId===e.transactionId&&t.grantType===e.grantType);-1!==t&&(this.#C.splice(t,1),this.#N(),n.debug("Grant signal removed from queue",{transactionId:e.transactionId,grantType:e.grantType}))}getQueue(){return[...this.#C]}clearQueue(){this.#C=[],this.#N(),n.debug("Grant signal queue cleared")}async sendGrantSignal(e,t){try{if(n.debug("Sending grant signal",{transactionId:e,grantType:t}),!await this.#g.sendGrantSignal(e,t))throw new Error("Grant signal failed (returned false)");n.info("Grant signal sent successfully",{transactionId:e,grantType:t})}catch{n.warn("Failed to send grant signal, adding to queue",{transactionId:e,grantType:t}),this.enqueue(e,t)}}async processQueue(){if(this.#$)n.debug("Queue processing already in progress, skipping");else if(0!==this.#C.length){this.#$=!0,n.info("Processing grant signal queue",{count:this.#C.length});try{for(const e of[...this.#C])await this.#S(e),this.#C.length>1&&await this.#R(100)}finally{this.#$=!1}}}async#S(e){if(e.attempts>=3)return n.error("Grant signal max attempts reached, removing from queue",{transactionId:e.transactionId,grantType:e.grantType,attempts:e.attempts}),void this.dequeue(e);if(e.lastAttemptAt){const t=new Date(e.lastAttemptAt).getTime(),i=Date.now(),r=1e3*Math.pow(2,e.attempts-1),s=i-t;if(s<r)return void n.debug("Skipping signal, waiting for backoff period",{transactionId:e.transactionId,remainingWait:r-s})}e.attempts++,e.lastAttemptAt=(new Date).toISOString(),this.#N();try{n.debug("Attempting to send queued grant signal",{transactionId:e.transactionId,grantType:e.grantType,attempt:e.attempts}),await this.#g.sendGrantSignal(e.transactionId,e.grantType)?(n.info("Queued grant signal sent successfully",{transactionId:e.transactionId,grantType:e.grantType}),this.dequeue(e)):n.warn("Grant signal failed, will retry",{transactionId:e.transactionId,attempt:e.attempts})}catch(t){n.warn("Failed to send queued grant signal, will retry",{transactionId:e.transactionId,attempt:e.attempts,error:t})}}#T(){this.#k=function(e){const t=()=>{n.debug("Network status: online"),e()};return window.addEventListener("online",t),()=>{window.removeEventListener("online",t)}}(()=>{n.debug("Network came online, processing grant signal queue"),this.processQueue()})}destroy(){this.#k&&(this.#k(),this.#k=void 0)}#R(e){return new Promise(t=>setTimeout(t,e))}}class h{#g;#f;#L=[];#M=null;#O=null;constructor(e,t){this.#g=e,this.#f=t}async fetchOffers(e,t=!0){if(t&&this.#L.length>0&&this.#O)return n.debug("Using cached offers",{count:this.#L.length}),{offers:[...this.#L],uiConfiguration:this.#M??void 0};try{n.debug("Fetching offers from API",{userId:this.#f});const t=await this.#g.fetchOffers(this.#f,e);return 0===t.offers?.length?(n.info("No offers available for user"),this.#L=[],this.#M=t.uiConfiguration??null,this.#O=Date.now(),{offers:[],uiConfiguration:t.uiConfiguration}):(this.#L=t.offers,this.#M=t.uiConfiguration??null,this.#O=Date.now(),n.info("Offers fetched successfully",{count:t.offers.length,offerIds:t.offers.map(e=>e.id)}),{offers:[...t.offers],uiConfiguration:t.uiConfiguration})}catch(e){throw n.error("Failed to fetch offers",e),e}}logImpression(e,t){try{const i=window.location.hostname;n.debug("Logging impression",{impressionId:e,campaignId:t.campaignId,creativeId:t.creativeId,appBundleId:i}),this.#g.logImpression(e,this.#f,t.campaignId,t.creativeId,i).then(t=>{t&&n.debug("Impression logged successfully",{impressionId:e})}).catch(t=>{n.error("Failed to log impression (non-blocking)",{impressionId:e,error:t})})}catch(t){n.error("Failed to log impression (non-blocking)",{impressionId:e,error:t})}}async startTransaction(e,t,i){try{n.debug("Starting transaction",{campaignId:e,creativeId:t,impressionId:i});const r=await this.#g.startTransaction(e,this.#f,t,i);return n.info("Transaction started",{transactionId:r,campaignId:e,creativeId:t}),r}catch(i){throw n.error("Failed to start transaction",{campaignId:e,creativeId:t,error:i}),i}}clearCache(){this.#L=[],this.#O=null,n.debug("Offer cache cleared")}setUserId(e){this.#f=e,this.clearCache(),n.debug("OfferManager user ID updated",{userId:e})}}class g{#g;#F;#U;#D=0;#B=1e3;#q=8e3;#K=null;#P=!1;constructor(e,t){this.#g=e,this.#F=t.transactionId,this.#U=t.timeout??3e4}async poll(){return this.#P?(n.warn("Verification polling already in progress",{transactionId:this.#F}),"pending"):(this.#P=!0,this.#D=Date.now(),n.debug("Starting verification polling",{transactionId:this.#F,timeout:this.#U}),this.#z())}stop(){this.#P=!1,null!==this.#K&&(clearTimeout(this.#K),this.#K=null),n.debug("Verification polling stopped",{transactionId:this.#F})}async#z(){for(;this.#P;){const e=Date.now()-this.#D;if(e>=this.#U)return n.warn("Verification polling timeout",{transactionId:this.#F,elapsed:e}),this.stop(),"pending";try{const e=await this.#g.checkVerificationStatus(this.#F);if(n.debug("Verification status checked",{transactionId:this.#F,status:e.status}),"verified"===e.status)return n.info("Transaction verified",{transactionId:this.#F,verifiedAt:e.verifiedAt}),this.stop(),"verified";if("failed"===e.status)return n.warn("Transaction failed verification",{transactionId:this.#F}),this.stop(),"failed";await this.#R(this.#B),this.#B=Math.min(2*this.#B,this.#q)}catch(e){n.error("Error checking verification status",{transactionId:this.#F,error:e}),await this.#R(this.#B)}}return"pending"}async#R(e){return new Promise(t=>{this.#K=window.setTimeout(()=>{this.#K=null,t()},e)})}}class f{#_=null;#G=null;#j=null;#H;constructor(e){this.#H=e}onGranted(e){return this.#_=e,this}onNotGranted(e){return this.#G=e,this}onLoadingStateChange(e){return this.#j=e,this}async show(){try{this.#j&&this.#j(!0),n.debug("PlacementBuilder: Executing presentation");const e=await this.#H();return this.#j&&this.#j(!1),e.granted&&e.entitlement&&this.#_?this.#_(e.entitlement):!e.granted&&this.#G&&e.reason&&this.#G(e.reason),e}catch(t){this.#j&&this.#j(!1),n.error("PlacementBuilder: Error during presentation",t);const i={type:"error",error:{code:e.UNKNOWN_ERROR,message:t instanceof Error?t.message:"Unknown error"}};return this.#G&&this.#G(i),{granted:!1,reason:i}}}}function m(e,t){let n=e;for(const[e,i]of Object.entries(t))n=n.replace(`:${e}`,encodeURIComponent(i));return n}class p{#V;#Q;#W;constructor(e,t){this.#V=e,this.#Q=t,this.#W=new Map}setApiKey(e){this.#V=e}setBaseURL(e){this.#Q=e}async get(e,t){return this.#J({url:`${this.#Q}${e}`,options:{method:"GET",...t},apiKey:this.#V})}async post(e,t,n){return this.#J({url:`${this.#Q}${e}`,options:{method:"POST",body:t,...n},apiKey:this.#V})}async#J(e){const{url:t,options:i,apiKey:r}=e,s=this.#Y(t,i),o=this.#W.get(s);if(o)return n.debug("Deduplicating request:",t),o;const a=this.#Z(t,i,r);this.#W.set(s,a);try{return await a}finally{this.#W.delete(s)}}async#Z(e,t,i){const r=t.retries??3;let s=null;for(let o=0;o<=r;o++)try{if(o>0){const e=1e3*Math.pow(2,o-1);n.debug(`Retrying request (attempt ${o}/${r}) after ${e}ms`),await this.#R(e)}return await this.#X(e,t,i)}catch(e){if(s=e,this.#ee(e))throw e;if(o===r)throw n.error(`Request failed after ${r} retries:`,e),e;n.warn("Request failed, will retry:",e)}throw s??new Error("Request failed")}async#X(e,t,i){const r=t.timeout??3e4,s=new AbortController,o=setTimeout(()=>s.abort(),r);try{const r={"X-API-Key":i,"Content-Type":"application/json","User-Agent":"Encore-Web-SDK/0.1.0",...t.headers},o={method:t.method,headers:r,signal:s.signal};t.body&&(o.body=JSON.stringify(t.body)),n.debug(`${t.method} ${e}`);const a=await fetch(e,o);return a.ok||await this.#te(a),await a.json()}catch(e){if(e instanceof Error){if("AbortError"===e.name)throw new Error("Request timeout");if(this.#ne(e))throw new Error(`Network error: ${e.message}`)}if(e instanceof Error)throw e;throw new Error(String(e))}finally{clearTimeout(o)}}async#te(t){let n,i=`HTTP ${t.status}: ${t.statusText}`;try{const e=await t.json();if("object"==typeof e&&null!==e&&"error"in e&&"object"==typeof e.error&&null!==e.error){const t=e.error;i=("string"==typeof t.message?t.message:void 0)??i,n="string"==typeof t.code?t.code:void 0}}catch{}const r=n?{code:n,message:i}:{code:e.API_ERROR,statusCode:t.status,message:i},s=new Error(i);throw Object.assign(s,r),s}#ee(e){if("object"==typeof e&&null!==e&&"statusCode"in e&&void 0!==e.statusCode){const t=e.statusCode;return t>=400&&t<500}return!1}#ne(e){return e.message.includes("fetch")||e.message.includes("network")||e.message.includes("ECONNREFUSED")||e.message.includes("ETIMEDOUT")}#Y(e,t){const n=t.body?JSON.stringify(t.body):"";return`${t.method}:${e}:${n}`}#R(e){return new Promise(t=>setTimeout(t,e))}async fetchOffers(e,t){try{const n=await this.post("/offers/show",{userId:e,attributes:t}),i=[];for(const e of n.offers){const t=e.campaign;for(const e of t.creatives){const n={id:e.id,title:e.title,description:e.quickInstructions||e.subtitle||e.description||"",imageUrl:e.primaryImageUrl,ctaText:e.ctaText,advertiserUrl:e.destinationUrl,campaignId:t.id,creativeId:e.id,entitlement:{type:"credit",value:100,unit:"dollars"},...t.merchantName&&{merchantName:t.merchantName},...e.logoUrl&&{logoUrl:e.logoUrl},...e.instructions&&{instructions:e.instructions},...e.quickInstructions&&{quickInstructions:e.quickInstructions},...e.trackingParameters&&{trackingParameters:e.trackingParameters}};i.push(n)}}return{offers:i,uiConfiguration:n.uiConfiguration}}catch(e){throw n.error("Failed to fetch offers:",e),e}}async startTransaction(e,t,i,r){try{return(await this.post("/transactions/start",{campaignId:e,userId:t,creativeId:i,...r&&{impressionId:r}})).transactionId}catch(e){throw n.error("Failed to start transaction:",e),e}}async sendGrantSignal(e,t){try{const n=function(e){return m("/transactions/:id/grant",{id:e})}(e);return(await this.post(n,{transactionId:e,grantType:t,timestamp:(new Date).toISOString()})).success}catch(e){throw n.error("Failed to send grant signal:",e),e}}#ie(e){switch(e.replace(/_([a-z])/g,(e,t)=>t.toUpperCase())){case"freeTrial":return{type:"freeTrial"};case"discount":return{type:"discount"};case"credit":return{type:"credit"};default:return n.warn(`Unknown entitlement type: ${e}, treating as freeTrial`),{type:"freeTrial"}}}async fetchEntitlements(e){try{const t=await this.get(`/entitlements?userId=${encodeURIComponent(e)}`),i=[];if(t.provisional)for(const[e,n]of Object.entries(t.provisional)){const t=this.#ie(e);i.push({...t,transactionId:"",scope:"provisional",grantedAt:n.started_at,expiresAt:n.expires_at})}if(t.verified)for(const[e,n]of Object.entries(t.verified)){const t=this.#ie(e);i.push({...t,transactionId:"",scope:"verified",grantedAt:n.started_at,expiresAt:n.expires_at})}return n.debug("Transformed entitlements response",{provisionalCount:Object.keys(t.provisional||{}).length,verifiedCount:Object.keys(t.verified||{}).length,totalCount:i.length}),i}catch(e){throw n.error("Failed to fetch entitlements:",e),e}}async checkVerificationStatus(e){try{const t=function(e){return m("/verification/status/:id",{id:e})}(e);return await this.get(t)}catch(e){throw n.error("Failed to check verification status:",e),e}}async logImpression(e,t,i,r,s){try{return(await this.post("/impressions/log",{impressionId:e,userId:t,campaignId:i,creativeId:r,appBundleId:s})).success}catch(e){return n.warn("Failed to log impression (non-blocking):",e),!1}}}const b="encore-sdk-styles",v="encore-";function y(e={}){if(document.getElementById(b))n.debug("Encore styles already injected");else try{const t=document.createElement("style");t.id=b,t.textContent=function(e={}){const t=function(e){const t=[];return e.primaryColor&&t.push(`--encore-primary-color: ${e.primaryColor};`),e.backgroundColor&&t.push(`--encore-bg-color: ${e.backgroundColor};`),e.textColor&&t.push(`--encore-text-color: ${e.textColor};`),e.borderRadius&&t.push(`--encore-border-radius: ${e.borderRadius};`),e.fontFamily&&t.push(`--encore-font-family: ${e.fontFamily};`),t.join("\n ")}(e);return`\n /* CSS Custom Properties (Theme Variables) */\n :root {\n ${t||"/* No custom theme variables */"}\n --encore-primary-color: ${e.primaryColor??"#4F46E5"};\n --encore-bg-color: ${e.backgroundColor??"#ffffff"};\n --encore-text-color: ${e.textColor??"#1F2937"};\n --encore-border-radius: ${e.borderRadius??"12px"};\n --encore-font-family: ${e.fontFamily??'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'};\n }\n\n /* Backdrop */\n .${v}backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.55);\n backdrop-filter: blur(2px);\n z-index: 9998;\n opacity: 0;\n transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .${v}backdrop.${v}visible {\n opacity: 1;\n }\n\n /* Modal Container */\n .${v}modal {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 9999;\n background-color: var(--encore-bg-color);\n border-radius: 20px;\n box-shadow: 0 24px 48px -12px rgba(0, 0, 0, 0.18), 0 12px 24px -8px rgba(0, 0, 0, 0.08);\n max-width: 800px;\n max-height: 90vh;\n width: calc(100% - 32px);\n overflow-x: hidden;\n overflow-y: auto;\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.96);\n transition: opacity 250ms cubic-bezier(0.4, 0, 0.2, 1), transform 250ms cubic-bezier(0.4, 0, 0.2, 1);\n font-family: var(--encore-font-family);\n color: var(--encore-text-color);\n }\n\n .${v}modal.${v}visible {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n\n /* Close Button */\n .${v}close-button {\n position: absolute;\n top: 20px;\n right: 20px;\n width: 40px;\n height: 40px;\n border: none;\n background-color: rgba(255, 255, 255, 0.9);\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9CA3AF;\n transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n padding: 0;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n z-index: 10;\n }\n\n .${v}close-button:hover {\n background-color: #FFFFFF;\n color: #6B7280;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n transform: scale(1.05);\n }\n\n .${v}close-button:active {\n transform: scale(0.98);\n }\n\n .${v}close-button:focus {\n outline: 2px solid var(--encore-primary-color);\n outline-offset: 2px;\n }\n\n .${v}close-button svg {\n width: 18px;\n height: 18px;\n }\n\n /* Body scroll lock */\n body.${v}no-scroll {\n overflow: hidden;\n }\n\n /* Modal Header */\n .${v}modal-header {\n padding: 24px 24px 16px;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .${v}modal-title {\n margin: 0;\n font-size: 24px;\n font-weight: 700;\n line-height: 1.25;\n color: var(--encore-text-color);\n }\n\n .${v}modal-subtitle {\n margin: 8px 0 0;\n font-size: 14px;\n color: #6B7280;\n line-height: 1.5;\n }\n\n /* Modal Body */\n .${v}modal-body {\n padding: 0;\n position: relative;\n isolation: isolate;\n }\n\n /* Carousel Container */\n .${v}carousel {\n display: flex;\n flex-direction: column;\n overflow: visible;\n }\n\n /* Carousel Header */\n .${v}carousel-header {\n padding: 40px 68px 28px;\n text-align: center;\n }\n\n .${v}carousel-title {\n font-size: 32px;\n font-weight: 510;\n line-height: 1.1;\n color: #181417;\n margin: 0 0 8px 0;\n letter-spacing: -0.3px;\n }\n\n .${v}carousel-subtitle {\n font-size: 16px;\n line-height: 1.2;\n color: #181417;\n margin: 0;\n font-weight: 400;\n }\n\n /* Carousel Cards Container - Horizontal Scroll */\n .${v}carousel-cards {\n display: flex;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n scroll-behavior: smooth;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: none;\n -ms-overflow-style: none;\n gap: 24px;\n padding: 24px 78px;\n position: relative;\n }\n\n .${v}carousel-cards::-webkit-scrollbar {\n display: none;\n }\n\n /* Carousel Item Wrapper */\n .${v}carousel-item {\n flex: 0 0 426px;\n width: 426px;\n scroll-snap-align: center;\n scroll-snap-stop: always;\n opacity: 0.5;\n transition: all 400ms cubic-bezier(0.4, 0, 0.2, 1);\n pointer-events: auto;\n }\n\n /* Active carousel item */\n .${v}carousel-item.${v}active {\n opacity: 1;\n z-index: 1;\n }\n\n /* Offer Card */\n .${v}offer-card {\n display: flex;\n flex-direction: column;\n background: white;\n border-radius: 16px;\n box-shadow: 0 2px 12px rgba(116, 112, 133, 0.16);\n height: 370px;\n overflow: hidden;\n }\n\n /* Offer Banner */\n .${v}offer-banner {\n width: 100%;\n background-color: transparent;\n position: relative;\n padding: 0;\n height: 180px;\n overflow: hidden;\n border-radius: 16px 16px 0 0;\n }\n\n .${v}offer-banner-image {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n background-color: #F9FAFB;\n opacity: 0;\n transition: opacity 200ms ease-out;\n }\n\n .${v}offer-banner-image.${v}loaded {\n opacity: 1;\n }\n\n /* Info button on banner */\n .${v}banner-info-button {\n position: absolute;\n top: 20px;\n right: 20px;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background-color: rgba(242, 242, 242, 0.95);\n backdrop-filter: blur(6px);\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 150ms ease;\n z-index: 3;\n padding: 0;\n }\n\n .${v}banner-info-button:hover {\n background-color: #F2F2F2;\n transform: scale(1.05);\n }\n\n .${v}banner-info-button:focus {\n outline: 2px solid #5671FF;\n outline-offset: 2px;\n }\n\n .${v}banner-info-button svg {\n width: 14px;\n height: 14px;\n color: #181417;\n stroke-width: 2;\n }\n\n /* Offer Details */\n .${v}offer-details {\n padding: 16px 20px;\n flex: 1;\n overflow-y: auto;\n }\n\n .${v}offer-details-heading {\n font-size: 14px;\n font-weight: 400;\n color: #6A6D81;\n margin: 0 0 8px 0;\n letter-spacing: -1px;\n line-height: 1.2;\n }\n\n .${v}offer-details-list {\n list-style: disc;\n margin: 0;\n padding: 0 0 0 21px;\n }\n\n .${v}offer-details-list li {\n font-size: 14px;\n line-height: 1.2;\n color: #181417;\n margin-bottom: 4px;\n padding-left: 0;\n letter-spacing: -1px;\n }\n\n .${v}offer-details-list li:last-child {\n margin-bottom: 0;\n }\n\n .${v}offer-details-list li::marker {\n color: #6A6D81;\n }\n\n /* Offer Footer */\n .${v}offer-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-top: 1px solid #F2F2F2;\n gap: 12px;\n min-height: 74px;\n }\n\n /* Offer Merchant */\n .${v}offer-merchant {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .${v}offer-logo {\n width: 42px;\n height: 42px;\n border-radius: 8px;\n object-fit: contain;\n background-color: #F3F4F6;\n flex-shrink: 0;\n opacity: 0;\n transition: opacity 200ms ease-out;\n }\n\n .${v}offer-logo.${v}loaded {\n opacity: 1;\n }\n\n .${v}offer-merchant-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1;\n min-width: 0;\n }\n\n .${v}offer-merchant-name {\n font-size: 16px;\n font-weight: 590;\n color: #181417;\n line-height: 1.1;\n letter-spacing: -1px;\n }\n\n .${v}offer-merchant-desc {\n font-size: 14px;\n color: #6A6D81;\n line-height: 1.2;\n letter-spacing: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Claim Button */\n .${v}button-claim {\n padding: 10px 16px;\n height: 34px;\n min-width: 78px;\n font-size: 14px;\n font-weight: 590;\n border-radius: 999px;\n border: none;\n background: #5671FF;\n color: white;\n cursor: pointer;\n transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n font-family: var(--encore-font-family);\n white-space: nowrap;\n line-height: 1.2;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .${v}button-claim:hover:not(:disabled) {\n background: #4560E6;\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(86, 113, 255, 0.3);\n }\n\n .${v}button-claim:active {\n transform: translateY(0);\n background: #3A52CC;\n }\n\n .${v}button-claim:focus {\n outline: 2px solid #5671FF;\n outline-offset: 2px;\n }\n\n .${v}button-claim:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n /* Carousel Navigation */\n .${v}carousel-navigation {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 40px;\n padding: 28px 32px 32px;\n }\n\n .${v}nav-button {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n border: 1px solid #BBBBBB;\n background-color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #BBBBBB;\n transition: all 200ms cubic-bezier(0.4, 0, 0.2, 1);\n padding: 0;\n }\n\n .${v}nav-button:hover:not(:disabled) {\n border-color: #5671FF;\n color: #5671FF;\n transform: scale(1.05);\n }\n\n .${v}nav-button:active:not(:disabled) {\n transform: scale(0.95);\n }\n\n .${v}nav-button:focus {\n outline: 2px solid #5671FF;\n outline-offset: 2px;\n }\n\n .${v}nav-button svg {\n width: 20px;\n height: 20px;\n stroke-width: 2;\n }\n\n .${v}nav-button:not(:disabled) {\n border-color: #5671FF;\n color: #5671FF;\n }\n\n .${v}nav-button:disabled,\n .${v}nav-button.${v}disabled {\n opacity: 1;\n cursor: not-allowed;\n border-color: #BBBBBB;\n color: #BBBBBB;\n }\n\n .${v}nav-button:disabled:hover,\n .${v}nav-button.${v}disabled:hover {\n border-color: #BBBBBB;\n color: #BBBBBB;\n transform: none;\n }\n\n /* Loading State */\n .${v}loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 48px;\n }\n\n .${v}spinner {\n width: 40px;\n height: 40px;\n border: 3px solid #E5E7EB;\n border-top-color: var(--encore-primary-color);\n border-radius: 50%;\n animation: ${v}spin 0.8s linear infinite;\n }\n\n @keyframes ${v}spin {\n to { transform: rotate(360deg); }\n }\n\n /* Responsive: Mobile (0-767px) */\n @media (max-width: 767px) {\n .${v}modal {\n width: calc(100% - 24px);\n max-width: 100%;\n margin: 12px;\n }\n\n .${v}carousel-header {\n padding: 24px 20px 20px;\n }\n\n .${v}carousel-title {\n font-size: 22px;\n }\n\n .${v}carousel-subtitle {\n font-size: 14px;\n }\n\n .${v}carousel-cards {\n padding: 20px 40px;\n }\n\n .${v}carousel-item {\n flex: 0 0 calc(100% - 80px);\n }\n\n .${v}offer-banner {\n padding: 16px 16px 0;\n }\n\n .${v}offer-details {\n padding: 20px 20px;\n }\n\n .${v}offer-footer {\n padding: 16px 20px 24px;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .${v}offer-merchant {\n flex: 1 1 100%;\n }\n\n .${v}button-claim {\n flex: 1 1 100%;\n }\n\n .${v}carousel-navigation {\n padding: 20px 20px 24px;\n }\n }\n\n /* Responsive: Tablet (768-1023px) */\n @media (min-width: 768px) and (max-width: 1023px) {\n .${v}modal {\n max-width: 600px;\n }\n }\n\n /* Responsive: Desktop (1024px+) */\n @media (min-width: 1024px) {\n .${v}modal {\n max-width: 600px;\n }\n }\n\n /* Accessibility: High Contrast Mode */\n @media (prefers-contrast: high) {\n .${v}button {\n border: 2px solid currentColor;\n }\n }\n\n /* Accessibility: Reduced Motion */\n @media (prefers-reduced-motion: reduce) {\n .${v}backdrop,\n .${v}modal,\n .${v}button,\n .${v}close-button {\n transition: none;\n }\n\n .${v}spinner {\n animation: none;\n }\n }\n\n /* Focus Visible (for keyboard navigation) */\n .${v}button:focus-visible,\n .${v}close-button:focus-visible {\n outline: 2px solid var(--encore-primary-color);\n outline-offset: 2px;\n }\n\n /* ===== Success Screen ===== */\n .${v}success-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n min-height: 400px;\n animation: ${v}fade-in 0.3s ease-out;\n }\n\n .${v}success-icon {\n width: 80px;\n height: 80px;\n background: linear-gradient(135deg, var(--encore-primary-color), #10b981);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 48px;\n color: white;\n margin-bottom: 1.5rem;\n animation: ${v}scale-in 0.5s ease-out;\n }\n\n .${v}success-title {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--encore-text-color);\n margin: 0 0 0.75rem 0;\n }\n\n .${v}success-subtitle {\n font-size: 1.125rem;\n color: var(--encore-text-muted);\n margin: 0 0 2rem 0;\n line-height: 1.6;\n }\n\n .${v}success-details {\n background: rgba(79, 70, 229, 0.05);\n border-radius: 12px;\n padding: 1.5rem;\n margin-bottom: 2rem;\n min-width: 280px;\n }\n\n .${v}success-detail {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.5rem 0;\n }\n\n .${v}success-detail:not(:last-child) {\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n }\n\n .${v}success-detail-label {\n font-size: 0.875rem;\n color: var(--encore-text-muted);\n font-weight: 500;\n }\n\n .${v}success-detail-value {\n font-size: 1rem;\n color: var(--encore-text-color);\n font-weight: 600;\n }\n\n .${v}success-button {\n background: linear-gradient(135deg, var(--encore-primary-color), #10b981);\n color: white;\n border: none;\n border-radius: var(--encore-border-radius);\n padding: 0.875rem 2.5rem;\n font-size: 1rem;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n }\n\n .${v}success-button:hover {\n transform: translateY(-2px);\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n }\n\n .${v}success-button:active {\n transform: translateY(0);\n }\n\n .${v}success-button:focus-visible {\n outline: 2px solid var(--encore-primary-color);\n outline-offset: 2px;\n }\n\n @keyframes ${v}scale-in {\n from {\n transform: scale(0);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n `}(e),document.head.appendChild(t),n.debug("Encore styles injected successfully")}catch(e){n.error("Failed to inject Encore styles:",e)}}function x(e){return`${v}${e}`}class w{#b;#re=null;#se=null;#oe=null;#ae=null;#le=!1;#ce=null;#de=[];#ue=null;constructor(e={}){this.#b=new o,y(e)}show(){this.#le?n.warn("Modal is already visible"):(this.#ce=document.activeElement,this.#he(),this.#re&&document.body.appendChild(this.#re),this.#se&&document.body.appendChild(this.#se),document.body.classList.add(x("no-scroll")),requestAnimationFrame(()=>{this.#re?.classList.add(x("visible")),this.#se?.classList.add(x("visible"))}),this.#ge(),this.#fe(),this.#me(),this.#le=!0,this.#b.emit("show",void 0),n.debug("Modal shown"))}hide(){this.#le&&(this.#re?.classList.remove(x("visible")),this.#se?.classList.remove(x("visible")),setTimeout(()=>{this.#pe(),document.body.classList.remove(x("no-scroll")),this.#ce instanceof HTMLElement&&this.#ce.focus(),this.#le=!1,this.#b.emit("hide",void 0),n.debug("Modal hidden")},200))}isVisible(){return this.#le}setContent(e){this.#ae?(this.#ae.innerHTML="",this.#ae.appendChild(e),this.#fe()):n.error("Modal body not initialized")}on(e,t){return this.#b.on(e,t)}#he(){this.#re=document.createElement("div"),this.#re.className=x("backdrop"),this.#re.setAttribute("aria-hidden","true"),this.#se=document.createElement("div"),this.#se.className=x("modal"),this.#se.setAttribute("role","dialog"),this.#se.setAttribute("aria-modal","true"),this.#se.setAttribute("aria-labelledby",x("modal-title")),this.#oe=document.createElement("button"),this.#oe.className=x("close-button"),this.#oe.setAttribute("aria-label","Close modal"),this.#oe.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />\n </svg>\n ',this.#ae=document.createElement("div"),this.#ae.className=x("modal-body"),this.#se.appendChild(this.#oe),this.#se.appendChild(this.#ae)}#pe(){this.#re?.remove(),this.#se?.remove(),this.#re=null,this.#se=null,this.#oe=null,this.#ae=null}#ge(){this.#oe?.addEventListener("click",()=>{this.#b.emit("close",void 0),this.hide()}),this.#re?.addEventListener("click",()=>{this.#b.emit("backdropClick",void 0),this.hide()}),this.#ue=this.#be.bind(this),document.addEventListener("keydown",this.#ue)}#be(e){if(this.#le)switch(e.key){case"Escape":e.preventDefault(),this.#b.emit("close",void 0),this.hide();break;case"Tab":e.preventDefault(),this.#ve(e.shiftKey)}}#ve(e){if(0===this.#de.length)return;const t=this.#de.findIndex(e=>e===document.activeElement);let n;n=e?t<=0?this.#de.length-1:t-1:t>=this.#de.length-1?0:t+1,this.#de[n]?.focus()}#fe(){if(!this.#se)return;const e=["button:not([disabled])","a[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");this.#de=Array.from(this.#se.querySelectorAll(e))}#me(){this.#de.length>0&&this.#de[0]?.focus()}destroy(){this.#ue&&document.removeEventListener("keydown",this.#ue),this.#b.removeAllListeners(),this.hide()}}class I{#b;#ye=null;#xe=null;constructor(){this.#b=new o}render(e){this.#ye=e,this.#xe=document.createElement("div"),this.#xe.className=x("offer-card");const t=this.#we(e.imageUrl,e.title);this.#xe.appendChild(t);const n=this.#Ie(e);this.#xe.appendChild(n);const i=this.#Ee(e);return this.#xe.appendChild(i),this.#xe}on(e,t){return this.#b.on(e,t)}#we(e,t){const i=document.createElement("div");i.className=x("offer-banner");const r=document.createElement("img");r.className=x("offer-banner-image"),r.alt=t??"Offer image",e?(r.src=e,r.complete?r.classList.add(x("loaded")):r.onload=()=>{r.classList.add(x("loaded"))},r.onerror=()=>{n.warn("Failed to load offer image, using fallback"),r.src=this.#Ce(),r.classList.add(x("loaded"))}):(r.src=this.#Ce(),r.classList.add(x("loaded"))),i.appendChild(r);const s=document.createElement("button");return s.className=x("banner-info-button"),s.setAttribute("aria-label","More information"),s.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />\n </svg>\n ',s.addEventListener("click",e=>{e.stopPropagation(),n.debug("Info button clicked for offer",{title:t})}),i.appendChild(s),i}#Ce(){return`data:image/svg+xml;base64,${btoa('\n <svg xmlns="http://www.w3.org/2000/svg" width="600" height="240" viewBox="0 0 600 240">\n <rect width="600" height="240" fill="#E5E7EB"/>\n <text x="50%" y="50%" text-anchor="middle" dy=".3em" fill="#9CA3AF" font-family="sans-serif" font-size="18">\n Offer Image\n </text>\n </svg>\n ')}`}#Ie(e){const t=document.createElement("div");t.className=x("offer-details");const n=document.createElement("h3");n.className=x("offer-details-heading"),n.textContent="Offer details";const i=document.createElement("ul");if(i.className=x("offer-details-list"),e.instructions&&e.instructions.length>0)e.instructions.forEach(e=>{const t=document.createElement("li");t.textContent=e.subtitle||e.title,i.appendChild(t)});else if(e.description){const t=document.createElement("li");t.textContent=e.description,i.appendChild(t)}return t.appendChild(n),t.appendChild(i),t}#Ee(e){const t=document.createElement("div");t.className=x("offer-footer");const i=document.createElement("div");if(i.className=x("offer-merchant"),e.logoUrl){const t=document.createElement("img");t.className=x("offer-logo"),t.src=e.logoUrl,t.alt=`${e.merchantName??"Merchant"} logo`,t.complete?t.classList.add(x("loaded")):t.onload=()=>{t.classList.add(x("loaded"))},t.onerror=()=>{n.warn("Failed to load merchant logo",{merchantName:e.merchantName}),t.style.display="none"},i.appendChild(t)}const r=document.createElement("div");if(r.className=x("offer-merchant-text"),e.merchantName){const t=document.createElement("div");t.className=x("offer-merchant-name"),t.textContent=e.merchantName,r.appendChild(t)}if(e.quickInstructions){const t=document.createElement("div");t.className=x("offer-merchant-desc"),t.textContent=e.quickInstructions,r.appendChild(t)}i.appendChild(r);const s=document.createElement("button");return s.className=`${x("button")} ${x("button-claim")}`,s.textContent=e.ctaText??"Claim",s.setAttribute("aria-label",`Claim offer: ${e.title??"offer"}`),s.addEventListener("click",()=>{this.#ye&&this.#b.emit("claim",{offer:this.#ye})}),t.appendChild(i),t.appendChild(s),t}destroy(){this.#b.removeAllListeners(),this.#xe=null,this.#ye=null}}class E{#b;#$e;#ke=0;#xe=null;#Ae=null;#Te=null;#Ne=[];#Se=null;#Re=null;constructor(e){if(this.#b=new o,this.#$e=e,0===e.length)throw new Error("OfferCarousel requires at least one offer");this.#Le()}render(){this.#xe=document.createElement("div"),this.#xe.className=x("carousel"),this.#Se=document.createElement("div"),this.#Se.setAttribute("role","status"),this.#Se.setAttribute("aria-live","polite"),this.#Se.setAttribute("aria-atomic","true"),this.#Se.className="sr-only",this.#Se.style.position="absolute",this.#Se.style.width="1px",this.#Se.style.height="1px",this.#Se.style.padding="0",this.#Se.style.margin="-1px",this.#Se.style.overflow="hidden",this.#Se.style.clip="rect(0, 0, 0, 0)",this.#Se.style.whiteSpace="nowrap",this.#Se.style.border="0";const e=this.#Me();if(this.#xe.appendChild(e),this.#Ae=document.createElement("div"),this.#Ae.className=x("carousel-cards"),this.#xe.appendChild(this.#Se),this.#xe.appendChild(this.#Ae),this.#$e.length>1){const e=this.#Oe();this.#xe.appendChild(e)}return this.#Fe(),this.#Ue(),this.#De(0,!1),this.#xe}on(e,t){return this.#b.on(e,t)}getCurrentIndex(){return this.#ke}getTotalOffers(){return this.#$e.length}next(){this.#ke<this.#$e.length-1&&(this.#ke++,this.#De(this.#ke),this.#Be(),this.#qe(`Showing offer ${this.#ke+1} of ${this.#$e.length}`),n.debug(`Navigated to offer ${this.#ke+1}`))}previous(){this.#ke>0&&(this.#ke--,this.#De(this.#ke),this.#Be(),this.#qe(`Showing offer ${this.#ke+1} of ${this.#$e.length}`),n.debug(`Navigated to offer ${this.#ke+1}`))}#Fe(){if(!this.#Ae)return;const e=this.#Ae;this.#$e.forEach((t,n)=>{const i=new I,r=i.render(t),s=document.createElement("div");s.className=x("carousel-item"),s.setAttribute("data-index",n.toString()),s.appendChild(r),i.on("claim",()=>{this.#b.emit("offerClaim",{offer:t,index:n})}),this.#Ne.push(i),e.appendChild(s)}),requestAnimationFrame(()=>{e.classList.add(x("cards-ready"))})}#De(e,t=!0){if(!this.#Ae)return;const n=this.#Ae.querySelectorAll(`.${x("carousel-item")}`),i=n[e];if(i){i.scrollIntoView({behavior:t?"smooth":"auto",block:"nearest",inline:"center"}),n.forEach((t,n)=>{n===e?t.classList.add(x("active")):t.classList.remove(x("active"))});const r=this.#$e[e];r&&this.#b.emit("offerView",{offer:r,index:e})}}#Me(){const e=document.createElement("div");e.className=x("carousel-header");const t=document.createElement("h2");t.className=x("carousel-title"),t.id=x("modal-title"),t.textContent="Unlock 10 free articles – choose an offer below";const n=document.createElement("p");return n.className=x("carousel-subtitle"),n.textContent="Activate one of these partner offers and get 10 free articles. No credit card required.",e.appendChild(t),e.appendChild(n),e}#Oe(){const e=document.createElement("div");e.className=x("carousel-navigation");const t=document.createElement("button");t.className=x("nav-button"),t.setAttribute("aria-label","Previous offer"),t.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" style="transform: rotate(90deg);">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />\n </svg>\n ',t.addEventListener("click",()=>this.previous());const n=document.createElement("button");return n.className=x("nav-button"),n.setAttribute("aria-label","Next offer"),n.innerHTML='\n <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" style="transform: rotate(270deg);">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />\n </svg>\n ',n.addEventListener("click",()=>this.next()),e.appendChild(t),e.appendChild(n),this.#Te=e,this.#Be(t,n),e}#Be(e,t){if(!this.#Te)return;const n=this.#Te.querySelectorAll(`.${x("nav-button")}`),i=e??n[0],r=t??n[1];i&&(i.disabled=0===this.#ke,i.classList.toggle(x("disabled"),0===this.#ke)),r&&(r.disabled=this.#ke===this.#$e.length-1,r.classList.toggle(x("disabled"),this.#ke===this.#$e.length-1))}#Ue(){this.#Re=this.#Ke.bind(this),document.addEventListener("keydown",this.#Re)}#Ke(e){if(this.#xe)switch(e.key){case"ArrowLeft":e.preventDefault(),this.previous();break;case"ArrowRight":e.preventDefault(),this.next()}}#qe(e){this.#Se&&(this.#Se.textContent=e)}#Le(){this.#$e.forEach(e=>{e.imageUrl&&((new Image).src=e.imageUrl,n.debug("Preloading offer image",{offerId:e.id,url:e.imageUrl})),e.logoUrl&&((new Image).src=e.logoUrl,n.debug("Preloading merchant logo",{offerId:e.id,url:e.logoUrl}))})}destroy(){this.#Re&&document.removeEventListener("keydown",this.#Re),this.#Ne.forEach(e=>e.destroy()),this.#Ne=[],this.#b.removeAllListeners(),this.#xe=null,this.#Ae=null,this.#Te=null,this.#Se=null}}const C=e=>`encore-success-${e}`;class ${#xe=null;#b;#t;#Pe=null;constructor(e){this.#t=e,this.#b=new o}render(){this.#xe=document.createElement("div"),this.#xe.className=C("container");const e=document.createElement("div");e.className=C("icon"),e.innerHTML="✓";const t=document.createElement("h2");t.className=C("title"),t.textContent=this.#t.titleText??"Success!";const i=document.createElement("p");i.className=C("subtitle"),i.textContent=this.#t.subtitleText??this.#ze(this.#t.entitlement);const r=document.createElement("div");r.className=C("details"),r.innerHTML=this.#_e(this.#t.entitlement);const s=document.createElement("button");return s.className=C("button"),s.textContent=this.#t.buttonText??"Continue",s.setAttribute("type","button"),s.addEventListener("click",()=>this.#Ge()),this.#xe.appendChild(e),this.#xe.appendChild(t),this.#xe.appendChild(i),this.#xe.appendChild(r),this.#xe.appendChild(s),this.#t.autoDismissMs&&this.#t.autoDismissMs>0&&this.#je(this.#t.autoDismissMs),n.debug("Success screen rendered"),this.#xe}on(e,t){return this.#b.on(e,t)}destroy(){null!==this.#Pe&&(clearTimeout(this.#Pe),this.#Pe=null),this.#xe&&(this.#xe.remove(),this.#xe=null),this.#b.removeAllListeners(),n.debug("Success screen destroyed")}#Ge(){n.debug("User clicked continue on success screen"),this.#b.emit("continue",void 0)}#je(e){this.#Pe=window.setTimeout(()=>{n.debug("Success screen auto-dismissing"),this.#b.emit("continue",void 0)},e)}#ze(e){switch(e.type){case"freeTrial":return`You've unlocked a ${e.value??""} ${e.unit??"day"} free trial!`;case"discount":return`You've received a ${e.value??""}${"percent"===e.unit?"%":""} discount!`;case"credit":return`You've earned $${e.value??"0"} in credits!`;default:return"You've unlocked a special offer!"}}#_e(e){const t=[];if("freeTrial"===e.type)t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Type:</span>\n <span class="${C("detail-value")}">Free Trial</span>\n </div>`),e.value&&e.unit&&t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Duration:</span>\n <span class="${C("detail-value")}">${e.value} ${e.unit}</span>\n </div>`);else if("discount"===e.type){if(t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Type:</span>\n <span class="${C("detail-value")}">Discount</span>\n </div>`),e.value&&e.unit){const n="percent"===e.unit?`${e.value}%`:`$${e.value}`;t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Amount:</span>\n <span class="${C("detail-value")}">${n}</span>\n </div>`)}}else"credit"===e.type&&(t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Type:</span>\n <span class="${C("detail-value")}">Credit</span>\n </div>`),e.value&&t.push(`<div class="${C("detail")}">\n <span class="${C("detail-label")}">Amount:</span>\n <span class="${C("detail-value")}}">$${e.value}</span>\n </div>`));return t.join("")}}class k{#He=null;#Ve=null;#Qe=!1;start(e){this.#Qe?n.warn("FocusDetector already active"):(this.#He=()=>{n.debug("Window focused"),e()},this.#Ve=()=>{"visible"===document.visibilityState&&(n.debug("Document became visible"),e())},window.addEventListener("focus",this.#He),document.addEventListener("visibilitychange",this.#Ve),this.#Qe=!0,n.debug("FocusDetector started"))}stop(){this.#Qe&&(this.#He&&(window.removeEventListener("focus",this.#He),this.#He=null),this.#Ve&&(document.removeEventListener("visibilitychange",this.#Ve),this.#Ve=null),this.#Qe=!1,n.debug("FocusDetector stopped"))}isActive(){return this.#Qe}}function A(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=15&(crypto.getRandomValues(new Uint8Array(1))[0]??0);return("x"===e?t:3&t|8).toString(16)})}const T="0.1.0",N="user_id",S="user_attributes",R=new class{#We;#h;#g=null;#Je=null;#Ye=null;#Ze=null;#Xe=null;#f=null;#et={};#tt=!1;#nt=!1;constructor(){this.#We=new i,this.#h=new s}configure(e){if(this.#We.configure(e)){this.#it();const e=this.#We.getBaseURL();e&&(this.#g=new p(this.#We.getApiKey()??"",e),this.#f&&(this.#Je=new c(this.#h,this.#g,this.#f),this.#Ye=new u(this.#h,this.#g,this.#f),this.#Ze=new h(this.#g,this.#f)),this.#Xe=new k),n.info("Encore SDK initialized successfully",{version:T})}}#it(){const e=this.#h.get(N);e?(this.#f=e,n.debug("Loaded existing user ID:",e)):(this.#f=A(),this.#h.set(N,this.#f),n.debug("Generated new user ID:",this.#f));const t=this.#h.get(S);t&&(this.#et=t,n.debug("Loaded user attributes"))}#rt(){return!!this.#We.isConfigured()||(n.error("SDK not configured. Call Encore.configure() first."),!1)}identify(e,t){if(!this.#rt())return;if(!e||"string"!=typeof e)return void n.error("identify() requires a valid user ID string");const i=this.#f;this.#f=e,this.#h.set(N,e),t&&this.setUserAttributes(t),i!==e&&(n.info("User identified:",e),this.#Je&&this.#Je.setUserId(e),this.#Ye&&this.#Ye.setUserId(e),this.#Ze&&this.#Ze.setUserId(e))}getCurrentUserId(){return this.#f}reset(){this.#rt()&&(n.info("Resetting SDK"),this.#h.clear(),this.#f=A(),this.#h.set(N,this.#f),this.#et={},this.#Je&&(this.#Je.clearCache(),this.#g&&this.#f&&(this.#Je=new c(this.#h,this.#g,this.#f))),this.#Ye&&(this.#Ye.clearQueue(),this.#Ye.destroy(),this.#g&&this.#f&&(this.#Ye=new u(this.#h,this.#g,this.#f))),this.#Ze&&(this.#Ze.clearCache(),this.#g&&this.#f&&(this.#Ze=new h(this.#g,this.#f))),this.#Xe?.isActive()&&this.#Xe.stop(),n.debug("SDK reset complete",{newUserId:this.#f}))}getVersion(){return T}setLogLevel(e){n.setLogLevel(e)}setUserAttributes(e){this.#rt()&&(e&&"object"==typeof e?(this.#et={...this.#et,...e,custom:{...this.#et.custom,...e.custom}},this.#h.set(S,this.#et),n.debug("User attributes updated",this.#et)):n.error("setUserAttributes() requires a valid UserAttributes object"))}getUserAttributes(){return{...this.#et}}async presentOffer(t){if(!this.#rt()){const n={type:"error",error:{code:e.INITIALIZATION_ERROR,message:"SDK not configured"}};return t?.onNotGranted&&t.onNotGranted(n),t?.onError&&t.onError({code:e.INITIALIZATION_ERROR,message:"SDK not configured"}),{granted:!1,reason:n}}if(this.#tt){n.warn("Presentation already in progress");const i={type:"error",error:{code:e.UNKNOWN_ERROR,message:"Presentation already in progress"}};return t?.onNotGranted&&t.onNotGranted(i),{granted:!1,reason:i}}this.#tt=!0;try{const e=await this.#st(t);return e.granted&&e.entitlement&&t?.onGranted?t.onGranted(e.entitlement):!e.granted&&e.reason&&t?.onNotGranted&&t.onNotGranted(e.reason),e}catch(i){n.error("Error during presentation",i);const r={type:"error",error:{code:e.UNKNOWN_ERROR,message:i instanceof Error?i.message:"Unknown error"}};return t?.onError&&"string"!=typeof r&&"error"===r.type&&t.onError(r.error),t?.onNotGranted&&t.onNotGranted(r),{granted:!1,reason:r}}finally{this.#tt=!1}}isActive(e,t){return!!this.#rt()&&(this.#Je?this.#Je.isActive(e,t):(n.error("EntitlementManager not initialized"),!1))}async refreshEntitlements(){this.#rt()&&(this.#Je?await this.#Je.refreshEntitlements():n.error("EntitlementManager not initialized"))}didGrant(e,t){this.#rt()&&(this.#Ye?t&&"string"==typeof t?this.#Ye.sendGrantSignal(t,e):n.error("didGrant() requires a valid transaction ID"):n.error("SignalManager not initialized"))}async waitForVerification(e,t){if(!this.#rt())return n.error("SDK not configured"),"failed";if(!this.#g)return n.error("API client not initialized"),"failed";if(!e)return n.error("waitForVerification() requires a transaction ID"),"failed";try{n.debug("Starting verification wait",{transactionId:e,timeout:t});const i={transactionId:e};void 0!==t&&(i.timeout=t);const r=new g(this.#g,i),s=await r.poll();return"verified"===s&&await this.refreshEntitlements(),s}catch(t){return n.error("Error during verification wait",{transactionId:e,error:t}),"failed"}}on(e,t){return this.#rt()?this.#Je?this.#Je.getEventEmitter().on(e,t):(n.error("EntitlementManager not initialized"),()=>{}):()=>{}}observeEntitlement(e,t){return{subscribe:i=>{if(!this.#rt())return()=>{};if(!this.#Je)return n.error("EntitlementManager not initialized"),()=>{};const r=this.#Je.isActive(e,t);return i(r),this.on("entitlementChanged",n=>{const r=n.scope;JSON.stringify(n.entitlementType)===JSON.stringify(e)&&("verified"===t&&"verified"!==r||i(n.isActive))})}}}placement(){return new f(async()=>this.presentOffer())}async#st(t){if(!this.#Ze||!this.#g)return n.error("Managers not initialized"),{granted:!1,reason:{type:"error",error:{code:e.INITIALIZATION_ERROR,message:"Managers not initialized"}}};try{this.#nt||(y({}),this.#nt=!0),n.debug("Fetching offers");const{offers:t,uiConfiguration:i}=await this.#Ze.fetchOffers(this.#et);if(0===t.length)return n.info("No offers available"),{granted:!1,reason:"noOffersAvailable"};const r={...this.#We.getUIConfiguration(),...i},s=new Map,o=new Set;t.forEach(e=>{s.set(e.id,A())});const a=new w,l=new E(t),c=await new Promise(t=>{l.on("offerClaim",i=>{const o=i.offer;n.debug("User claimed offer",{offerId:o.id}),(async()=>{try{if(!this.#Ze)throw new Error("OfferManager not initialized");const e=s.get(o.id),i=await this.#Ze.startTransaction(o.campaignId,o.creativeId,e);this.#ot(o.advertiserUrl)||n.warn("Failed to open advertiser URL (popup blocked?)"),this.didGrant("provisional",i),await this.refreshEntitlements(),this.#Xe&&!this.#Xe.isActive()&&this.#Xe.start(()=>{(async()=>{n.debug("User returned to app, refreshing entitlements"),await this.refreshEntitlements()})()}),this.#at(a,o.entitlement,()=>{a.hide(),t({granted:!0,entitlement:o.entitlement})},r)}catch(i){n.error("Error starting transaction",{offerId:o.id,error:i}),a.hide(),t({granted:!1,reason:{type:"error",error:{code:e.UNKNOWN_ERROR,message:i instanceof Error?i.message:"Transaction failed"}}})}})()}),l.on("complete",e=>{e.claimed||(n.debug("User declined last offer"),l.destroy(),a.hide(),t({granted:!1,reason:"userDeclinedLastOffer"}))}),a.on("close",()=>{n.debug("User closed modal"),l.destroy(),t({granted:!1,reason:"userClosedModal"})}),a.on("backdropClick",()=>{n.debug("User clicked outside modal"),l.destroy(),a.hide(),t({granted:!1,reason:"userClickedOutside"})}),l.on("offerView",e=>{const{offer:t}=e;if(o.has(t.id))return void n.debug("Impression already logged for this modal session",{offerId:t.id});const i=s.get(t.id);i&&this.#Ze&&(this.#Ze.logImpression(i,t),o.add(t.id))}),a.show();const i=l.render();a.setContent(i)});return a.destroy(),l.destroy(),c}catch(t){return n.error("Error in presentation flow",t),{granted:!1,reason:{type:"error",error:{code:e.UNKNOWN_ERROR,message:t instanceof Error?t.message:"Unknown error"}}}}}#ot(e){try{const t=window.open(e,"_blank","noopener,noreferrer");return!!t&&(t.focus(),!0)}catch(t){return n.error("Failed to open advertiser URL",{url:e,error:t}),!1}}#at(e,t,i,r){try{const s={entitlement:t,autoDismissMs:0};r?.creditClaimedTitleText&&(s.titleText=r.creditClaimedTitleText),r?.creditClaimedSubtitleText&&(s.subtitleText=r.creditClaimedSubtitleText),r?.applyCreditsButtonText&&(s.buttonText=r.applyCreditsButtonText);const o=new $(s);o.on("continue",()=>{o.destroy(),i()});const a=o.render();e.setContent(a),n.debug("Success screen displayed")}catch(e){n.error("Failed to show success screen",e),i()}}};export{R as Encore,R as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/types.ts","../../src/utils/logger.ts","../../src/core/Configuration.ts","../../src/core/StorageManager.ts","../../src/utils/eventEmitter.ts","../../src/core/EntitlementManager.ts","../../src/core/SignalManager.ts","../../src/utils/network.ts","../../src/core/OfferManager.ts","../../src/core/VerificationPoller.ts","../../src/core/PlacementBuilder.ts","../../src/api/endpoints.ts","../../src/api/APIClient.ts","../../src/ui/styles.ts","../../src/ui/OfferModal.ts","../../src/ui/OfferCard.ts","../../src/ui/OfferCarousel.ts","../../src/ui/SuccessScreen.ts","../../src/utils/focusDetection.ts","../../src/utils/uuid.ts","../../src/core/Encore.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["ErrorCode","PREFIX","logger","logLevel","setLogLevel","level","this","getLogLevel","debug","args","console","info","warn","error","critical","Configuration","config","isConfigured","configure","validationError","validateConfig","environment","apiKey","userId","baseURL","getDefaultBaseURL","uiConfiguration","trim","includes","getConfig","getApiKey","getBaseURL","getEnvironment","getUIConfiguration","reset","KEY_PREFIX","StorageManager","storageType","memoryStorage","constructor","Map","detectAvailableStorage","isStorageAvailable","type","storage","localStorage","sessionStorage","testKey","setItem","removeItem","getStorage","prefixKey","key","set","value","undefined","prefixedKey","serialized","JSON","stringify","Error","name","get","getItem","remove","parse","delete","clear","keys","startsWith","keysToRemove","i","length","push","forEach","getStorageType","EventEmitter","listeners","on","event","handler","has","Set","handlers","String","add","off","size","emit","payload","listenerCount","removeAllListeners","hasListeners","ENTITLEMENTS_KEY","ENTITLEMENTS_TIMESTAMP_KEY","EntitlementManager","apiClient","cache","refreshPromise","eventEmitter","loadFromStorage","getEventEmitter","setUserId","userKey","timestampKey","entitlements","timestamp","count","age","Date","now","saveEntitlements","Array","isArray","oldEntitlements","loadEntitlements","emitChanges","newEntitlements","oldMap","ent","scope","newMap","newEnt","oldEnt","entitlementType","getEntitlementType","isActive","isEntitlementActive","entitlement","_","expiresAt","__","grantedAt","___","transactionId","____","rest","isCacheStale","getCacheAge","clearCache","item","itemType","entitlementTypesMatch","a","b","getActiveEntitlements","filter","refreshEntitlements","performRefresh","fetchEntitlements","SIGNAL_QUEUE_KEY","SignalManager","queue","isProcessing","cleanupNetworkListener","loadQueue","setupNetworkListener","processQueue","saveQueue","enqueue","grantType","exists","some","signal","toISOString","attempts","dequeue","index","findIndex","s","splice","getQueue","clearQueue","sendGrantSignal","processSignal","sleep","lastAttemptAt","lastAttempt","getTime","backoffDelay","Math","pow","timeSinceLastAttempt","remainingWait","attempt","callback","window","addEventListener","removeEventListener","onOnline","destroy","ms","Promise","resolve","setTimeout","OfferManager","cachedOffers","cachedUiConfiguration","cacheTimestamp","fetchOffers","userAttributes","useCache","offers","response","offerIds","map","o","id","logImpression","impressionId","offer","appBundleId","location","hostname","campaignId","creativeId","then","success","catch","err","startTransaction","VerificationPoller","timeout","startTime","interval","maxInterval","timeoutHandle","isPolling","options","poll","pollWithBackoff","stop","clearTimeout","elapsed","checkVerificationStatus","status","verifiedAt","min","PlacementBuilder","onGrantedCallback","onNotGrantedCallback","onLoadingStateChangeCallback","executor","onGranted","onNotGranted","onLoadingStateChange","show","result","granted","reason","errorReason","code","UNKNOWN_ERROR","message","replacePathParams","endpoint","params","Object","entries","replace","encodeURIComponent","APIClient","pendingRequests","setApiKey","setBaseURL","request","url","method","post","body","requestKey","getRequestKey","pendingRequest","requestPromise","executeRequest","maxRetries","retries","lastError","delay","fetchWithTimeout","isClientError","controller","AbortController","timeoutId","abort","headers","fetchOptions","fetch","ok","handleHTTPError","json","isNetworkError","errorCode","errorMessage","statusText","errorData","errorObj","API_ERROR","statusCode","errorInstance","assign","attributes","apiOffer","campaign","creative","creatives","title","description","quickInstructions","subtitle","imageUrl","primaryImageUrl","ctaText","advertiserUrl","destinationUrl","unit","merchantName","logoUrl","instructions","trackingParameters","getGrantSignalEndpoint","convertEntitlementType","apiType","letter","toUpperCase","provisional","data","typeObj","started_at","expires_at","verified","provisionalCount","verifiedCount","totalCount","getVerificationStatusEndpoint","STYLE_ID","CLASS_PREFIX","injectStyles","theme","document","getElementById","styleElement","createElement","textContent","themeVars","vars","primaryColor","backgroundColor","textColor","borderRadius","fontFamily","join","generateThemeVars","getBaseStyles","head","appendChild","cls","className","OfferModal","backdrop","modal","closeButton","modalBody","isVisible","previousActiveElement","focusableElements","boundHandleKeyDown","activeElement","createModal","classList","requestAnimationFrame","setupEventListeners","updateFocusableElements","focusFirstElement","hide","removeModal","HTMLElement","focus","setContent","content","innerHTML","setAttribute","handleKeyDown","bind","preventDefault","handleTabKey","shiftKey","currentIndex","el","nextIndex","focusableSelectors","from","querySelectorAll","OfferCard","container","render","imageBanner","createImageBanner","details","createDetails","footer","createFooter","banner","img","alt","src","complete","onload","onerror","createPlaceholderImage","overlay","titleText","infoButton","e","stopPropagation","btoa","heading","list","instruction","li","merchantInfo","logo","style","display","textInfo","desc","claimButton","OfferCarousel","cardsContainer","indicatorsContainer","offerCards","announceElement","boundHandleArrowKeys","preloadImages","position","width","height","padding","margin","overflow","clip","whiteSpace","border","header","createHeader","navigation","createNavigation","renderAllOffers","setupKeyboardNavigation","scrollToIndex","getCurrentIndex","getTotalOffers","next","updateNavigationButtons","announce","previous","card","cardElement","itemWrapper","toString","smooth","items","targetItem","scrollIntoView","behavior","block","inline","prevButton","nextButton","buttons","prev","disabled","toggle","handleArrowKeys","Image","offerId","SuccessScreen","autoDismissTimeout","icon","subtitleText","getDefaultSubtitle","renderEntitlementDetails","button","buttonText","handleContinue","autoDismissMs","setupAutoDismiss","displayValue","FocusDetector","focusCallback","visibilityCallback","start","visibilityState","generateUUID","crypto","randomUUID","c","r","getRandomValues","Uint8Array","SDK_VERSION","USER_ID_KEY","USER_ATTRIBUTES_KEY","Encore","configuration","entitlementManager","signalManager","offerManager","focusDetector","isPresentationInProgress","stylesInjected","initializeUserId","version","storedUserId","storedAttributes","ensureConfigured","identify","previousUserId","setUserAttributes","getCurrentUserId","newUserId","getVersion","custom","getUserAttributes","presentOffer","notInitializedError","INITIALIZATION_ERROR","onError","alreadyInProgressReason","executePresentationFlow","didGrant","access","waitForVerification","pollerOptions","poller","observeEntitlement","subscribe","currentState","eventScope","placement","async","_options","apiUiConfig","mergedUiConfig","impressionIds","loggedImpressions","carousel","openAdvertiserURL","showSuccessScreen","claimed","carouselElement","opened","open","onContinue","uiConfig","successConfig","creditClaimedTitleText","creditClaimedSubtitleText","applyCreditsButtonText","successScreen","successElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/types.ts","../../src/utils/logger.ts","../../src/core/Configuration.ts","../../src/core/StorageManager.ts","../../src/utils/eventEmitter.ts","../../src/core/EntitlementManager.ts","../../src/core/SignalManager.ts","../../src/utils/network.ts","../../src/core/OfferManager.ts","../../src/core/VerificationPoller.ts","../../src/core/PlacementBuilder.ts","../../src/api/endpoints.ts","../../src/api/APIClient.ts","../../src/ui/styles.ts","../../src/ui/OfferModal.ts","../../src/ui/OfferCard.ts","../../src/ui/OfferCarousel.ts","../../src/ui/SuccessScreen.ts","../../src/utils/focusDetection.ts","../../src/utils/uuid.ts","../../src/core/Encore.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["ErrorCode","PREFIX","logger","logLevel","setLogLevel","level","this","getLogLevel","debug","args","console","info","warn","error","critical","Configuration","config","isConfigured","configure","validationError","validateConfig","environment","apiKey","userId","baseURL","getDefaultBaseURL","uiConfiguration","trim","includes","getConfig","getApiKey","getBaseURL","getEnvironment","getUIConfiguration","reset","KEY_PREFIX","StorageManager","storageType","memoryStorage","constructor","Map","detectAvailableStorage","isStorageAvailable","type","storage","localStorage","sessionStorage","testKey","setItem","removeItem","getStorage","prefixKey","key","set","value","undefined","prefixedKey","serialized","JSON","stringify","Error","name","get","getItem","remove","parse","delete","clear","keys","startsWith","keysToRemove","i","length","push","forEach","getStorageType","EventEmitter","listeners","on","event","handler","has","Set","handlers","String","add","off","size","emit","payload","listenerCount","removeAllListeners","hasListeners","ENTITLEMENTS_KEY","ENTITLEMENTS_TIMESTAMP_KEY","EntitlementManager","apiClient","cache","refreshPromise","eventEmitter","loadFromStorage","getEventEmitter","setUserId","userKey","timestampKey","entitlements","timestamp","count","age","Date","now","saveEntitlements","Array","isArray","oldEntitlements","loadEntitlements","emitChanges","newEntitlements","oldMap","ent","scope","newMap","newEnt","oldEnt","entitlementType","getEntitlementType","isActive","isEntitlementActive","entitlement","_","expiresAt","__","grantedAt","___","transactionId","____","rest","isCacheStale","getCacheAge","clearCache","item","itemType","entitlementTypesMatch","a","b","getActiveEntitlements","filter","refreshEntitlements","performRefresh","fetchEntitlements","SIGNAL_QUEUE_KEY","SignalManager","queue","isProcessing","cleanupNetworkListener","loadQueue","setupNetworkListener","processQueue","saveQueue","enqueue","grantType","exists","some","signal","toISOString","attempts","dequeue","index","findIndex","s","splice","getQueue","clearQueue","sendGrantSignal","processSignal","sleep","lastAttemptAt","lastAttempt","getTime","backoffDelay","Math","pow","timeSinceLastAttempt","remainingWait","attempt","callback","window","addEventListener","removeEventListener","onOnline","destroy","ms","Promise","resolve","setTimeout","OfferManager","cachedOffers","cachedUiConfiguration","cacheTimestamp","fetchOffers","userAttributes","useCache","offers","response","offerIds","map","o","id","logImpression","impressionId","offer","appBundleId","location","hostname","campaignId","creativeId","then","success","catch","err","startTransaction","VerificationPoller","timeout","startTime","interval","maxInterval","timeoutHandle","isPolling","options","poll","pollWithBackoff","stop","clearTimeout","elapsed","checkVerificationStatus","status","verifiedAt","min","PlacementBuilder","onGrantedCallback","onNotGrantedCallback","onLoadingStateChangeCallback","executor","onGranted","onNotGranted","onLoadingStateChange","show","result","granted","reason","errorReason","code","UNKNOWN_ERROR","message","replacePathParams","endpoint","params","Object","entries","replace","encodeURIComponent","APIClient","pendingRequests","setApiKey","setBaseURL","request","url","method","post","body","requestKey","getRequestKey","pendingRequest","requestPromise","executeRequest","maxRetries","retries","lastError","delay","fetchWithTimeout","isClientError","controller","AbortController","timeoutId","abort","headers","fetchOptions","fetch","ok","handleHTTPError","json","isNetworkError","errorCode","errorMessage","statusText","errorData","errorObj","API_ERROR","statusCode","errorInstance","assign","attributes","apiOffer","campaign","creative","creatives","title","description","quickInstructions","subtitle","imageUrl","primaryImageUrl","ctaText","advertiserUrl","destinationUrl","unit","merchantName","logoUrl","instructions","trackingParameters","getGrantSignalEndpoint","convertEntitlementType","apiType","letter","toUpperCase","provisional","data","typeObj","started_at","expires_at","verified","provisionalCount","verifiedCount","totalCount","getVerificationStatusEndpoint","STYLE_ID","CLASS_PREFIX","injectStyles","theme","document","getElementById","styleElement","createElement","textContent","themeVars","vars","primaryColor","backgroundColor","textColor","borderRadius","fontFamily","join","generateThemeVars","getBaseStyles","head","appendChild","cls","className","OfferModal","backdrop","modal","closeButton","modalBody","isVisible","previousActiveElement","focusableElements","boundHandleKeyDown","activeElement","createModal","classList","requestAnimationFrame","setupEventListeners","updateFocusableElements","focusFirstElement","hide","removeModal","HTMLElement","focus","setContent","content","innerHTML","setAttribute","handleKeyDown","bind","preventDefault","handleTabKey","shiftKey","currentIndex","el","nextIndex","focusableSelectors","from","querySelectorAll","OfferCard","container","render","imageBanner","createImageBanner","details","createDetails","footer","createFooter","banner","img","alt","src","complete","onload","onerror","createPlaceholderImage","infoButton","e","stopPropagation","btoa","heading","list","instruction","li","merchantInfo","logo","style","display","textInfo","desc","claimButton","OfferCarousel","cardsContainer","indicatorsContainer","offerCards","announceElement","boundHandleArrowKeys","preloadImages","position","width","height","padding","margin","overflow","clip","whiteSpace","border","header","createHeader","navigation","createNavigation","renderAllOffers","setupKeyboardNavigation","scrollToIndex","getCurrentIndex","getTotalOffers","next","updateNavigationButtons","announce","previous","card","cardElement","itemWrapper","toString","smooth","items","targetItem","scrollIntoView","behavior","block","inline","prevButton","nextButton","buttons","prev","disabled","toggle","handleArrowKeys","Image","offerId","SuccessScreen","autoDismissTimeout","icon","titleText","subtitleText","getDefaultSubtitle","renderEntitlementDetails","button","buttonText","handleContinue","autoDismissMs","setupAutoDismiss","displayValue","FocusDetector","focusCallback","visibilityCallback","start","visibilityState","generateUUID","crypto","randomUUID","c","r","getRandomValues","Uint8Array","SDK_VERSION","USER_ID_KEY","USER_ATTRIBUTES_KEY","Encore","configuration","entitlementManager","signalManager","offerManager","focusDetector","isPresentationInProgress","stylesInjected","initializeUserId","version","storedUserId","storedAttributes","ensureConfigured","identify","previousUserId","setUserAttributes","getCurrentUserId","newUserId","getVersion","custom","getUserAttributes","presentOffer","notInitializedError","INITIALIZATION_ERROR","onError","alreadyInProgressReason","executePresentationFlow","didGrant","access","waitForVerification","pollerOptions","poller","observeEntitlement","subscribe","currentState","eventScope","placement","async","_options","apiUiConfig","mergedUiConfig","impressionIds","loggedImpressions","carousel","openAdvertiserURL","showSuccessScreen","claimed","carouselElement","opened","open","onContinue","uiConfig","successConfig","creditClaimedTitleText","creditClaimedSubtitleText","applyCreditsButtonText","successScreen","successElement"],"mappings":"AAkHA,IAAYA,GAAZ,SAAYA,GACVA,EAAA,cAAA,gBACAA,EAAA,UAAA,YACAA,EAAA,oBAAA,sBACAA,EAAA,qBAAA,uBACAA,EAAA,cAAA,gBACAA,EAAA,gBAAA,kBACAA,EAAA,aAAA,eACAA,EAAA,UAAA,YACAA,EAAA,QAAA,UACAA,EAAA,cAAA,eACD,CAXD,CAAYA,IAAAA,EAAS,CAAA,IC3GrB,MAAMC,EAAS,eA8CFC,EAAS,IA5CtB,MACEC,GAAsB,OAEtB,WAAAC,CAAYC,GACVC,MAAKH,EAAYE,CACnB,CAEA,WAAAE,GACE,OAAOD,MAAKH,CACd,CAEA,KAAAK,IAASC,GACgB,UAAnBH,MAAKH,GACPO,QAAQF,MAAMP,KAAWQ,EAE7B,CAEA,IAAAE,IAAQF,GACiB,UAAnBH,MAAKH,GACPO,QAAQC,KAAKV,KAAWQ,EAE5B,CAEA,IAAAG,IAAQH,GACiB,UAAnBH,MAAKH,GACPO,QAAQE,KAAKX,KAAWQ,EAE5B,CAEA,KAAAI,IAASJ,GACgB,UAAnBH,MAAKH,GACPO,QAAQG,MAAMZ,KAAWQ,EAE7B,CAKA,QAAAK,IAAYL,GACVC,QAAQG,MAAMZ,EAAQ,gBAAiBQ,EACzC,SCrCWM,EACXC,GAAiC,KACjCC,IAAgB,EAMhB,SAAAC,CAAUF,GACR,GAAIV,MAAKW,EAEP,OADAf,EAAOU,KAAK,kEACL,EAIT,MAAMO,EAAkBb,MAAKc,EAAgBJ,GAC7C,GAAIG,EAEF,OADAjB,EAAOW,MAAM,yBAA0BM,IAChC,EAIT,MAAMhB,EAAWa,EAAOb,UAAY,OAC9BkB,EAAcL,EAAOK,aAAe,aAgB1C,OAfAf,MAAKU,EAAU,CACbM,OAAQN,EAAOM,OACfC,OAAQP,EAAOO,OACfF,cACAG,QAASlB,MAAKmB,EAAmBJ,GACjClB,WACAuB,gBAAiBV,EAAOU,iBAAmB,CAAA,GAI7CxB,EAAOE,YAAYD,GAEnBG,MAAKW,GAAgB,EACrBf,EAAOM,MAAM,8BAA+BF,MAAKU,IAE1C,CACT,CAMA,EAAAI,CAAgBJ,GACd,OAAKA,EAAOM,QAAmC,iBAAlBN,EAAOM,QAAgD,KAAzBN,EAAOM,OAAOK,OAIrEX,EAAOK,cAAgB,CAAC,aAAc,aAAaO,SAASZ,EAAOK,aAC9D,kDAGLL,EAAOb,WAAa,CAAC,OAAQ,SAASyB,SAASZ,EAAOb,UACjD,qCAGF,KAXE,mDAYX,CAKA,EAAAsB,CAAmBJ,GACjB,MACO,cADCA,EAEG,kCAGA,2CAEb,CAKA,SAAAQ,GACE,OAAOvB,MAAKU,CACd,CAKA,YAAAC,GACE,OAAOX,MAAKW,CACd,CAKA,SAAAa,GACE,OAAOxB,MAAKU,GAASM,QAAU,IACjC,CAKA,UAAAS,GACE,OAAOzB,MAAKU,GAASQ,SAAW,IAClC,CAKA,cAAAQ,GACE,OAAO1B,MAAKU,GAASK,aAAe,IACtC,CAKA,kBAAAY,GACE,OAAO3B,MAAKU,GAASU,iBAAmB,CAAA,CAC1C,CAKA,KAAAQ,GACE5B,MAAKU,EAAU,KACfV,MAAKW,GAAgB,EACrBf,EAAOM,MAAM,sBACf,EC9HF,MAAM2B,EAAa,gBAENC,EACXC,GACAC,GAEA,WAAAC,GACEjC,MAAKgC,EAAiB,IAAIE,IAC1BlC,MAAK+B,EAAe/B,MAAKmC,IACzBvC,EAAOM,MAAM,mCAAmCF,MAAK+B,IACvD,CAKA,EAAAI,GAEE,OAAInC,MAAKoC,EAAoB,gBACpB,eAILpC,MAAKoC,EAAoB,kBACpB,kBAITxC,EAAOU,KAAK,8EACL,SACT,CAKA,EAAA8B,CAAoBC,GAClB,IACE,MAAMC,EAAmB,iBAATD,EAA0BE,aAAeC,eACnDC,EAAU,kBAGhB,OAFAH,EAAQI,QAAQD,EAAS,QACzBH,EAAQK,WAAWF,IACZ,CACT,CAAE,MACA,OAAO,CACT,CACF,CAKA,EAAAG,GACE,MAA0B,iBAAtB5C,MAAK+B,EACAQ,aACwB,mBAAtBvC,MAAK+B,EACPS,eAEAxC,MAAKgC,CAEhB,CAKA,EAAAa,CAAWC,GACT,MAAO,GAAGjB,IAAaiB,GACzB,CAMA,GAAAC,CAAOD,EAAaE,GAElB,QAAcC,IAAVD,EAEF,YADApD,EAAOU,KAAK,+CAA+CwC,KAI7D,MAAMI,EAAclD,MAAK6C,EAAWC,GAC9BK,EAAaC,KAAKC,UAAUL,GAElC,IACE,MAAMV,EAAUtC,MAAK4C,IAEjBN,aAAmBJ,IACrBI,EAAQS,IAAIG,EAAaC,GAEzBb,EAAQI,QAAQQ,EAAaC,GAG/BvD,EAAOM,MAAM,UAAU4C,QAAU9C,MAAK+B,IACxC,CAAE,MAAOxB,GAEHA,aAAiB+C,OAAwB,uBAAf/C,EAAMgD,KAClC3D,EAAOW,MAAM,0BAA2BA,GAExCX,EAAOW,MAAM,wBAAyBA,GAId,WAAtBP,MAAK+B,IACPnC,EAAOU,KAAK,gDACZN,MAAKgC,EAAee,IAAIG,EAAaC,GAEzC,CACF,CAMA,GAAAK,CAAOV,GACL,MAAMI,EAAclD,MAAK6C,EAAWC,GAEpC,IACE,MAAMR,EAAUtC,MAAK4C,IACrB,IAAIO,EAA4B,KAQhC,OALEA,EADEb,aAAmBJ,IACRI,EAAQkB,IAAIN,IAAgB,KAE5BZ,EAAQmB,QAAQP,GAGZ,OAAfC,GAAsC,cAAfA,GAEN,cAAfA,IACFvD,EAAOU,KAAK,8CAA8CwC,kBAC1D9C,KAAK0D,OAAOZ,IAEP,MAGFM,KAAKO,MAAMR,EACpB,CAAE,MAAO5C,GAIP,OAHAX,EAAOW,MAAM,sBAAsBuC,KAAQvC,GAE3CP,KAAK0D,OAAOZ,GACL,IACT,CACF,CAKA,MAAAY,CAAOZ,GACL,MAAMI,EAAclD,MAAK6C,EAAWC,GAEpC,IACE,MAAMR,EAAUtC,MAAK4C,IAEjBN,aAAmBJ,IACrBI,EAAQsB,OAAOV,GAEfZ,EAAQK,WAAWO,GAGrBtD,EAAOM,MAAM,WAAW4C,UAAY9C,MAAK+B,IAC3C,CAAE,MAAOxB,GACPX,EAAOW,MAAM,oBAAoBuC,KAAQvC,EAC3C,CACF,CAKA,KAAAsD,GACE,IACE,MAAMvB,EAAUtC,MAAK4C,IAErB,GAAIN,aAAmBJ,IAErB,IAAK,MAAMY,KAAOR,EAAQwB,OACpBhB,EAAIiB,WAAWlC,IACjBS,EAAQsB,OAAOd,OAGd,CAEL,MAAMkB,EAAyB,GAC/B,IAAK,IAAIC,EAAI,EAAGA,EAAI3B,EAAQ4B,OAAQD,IAAK,CACvC,MAAMnB,EAAMR,EAAQQ,IAAImB,GACpBnB,GAAKiB,WAAWlC,IAClBmC,EAAaG,KAAKrB,EAEtB,CACAkB,EAAaI,QAAStB,GAAQR,EAAQK,WAAWG,GACnD,CAEAlD,EAAOM,MAAM,gCAAgCF,MAAK+B,IACpD,CAAE,MAAOxB,GACPX,EAAOW,MAAM,2BAA4BA,EAC3C,CACF,CAKA,cAAA8D,GACE,OAAOrE,MAAK+B,CACd,QCnMWuC,EACXC,GAEA,WAAAtC,GACEjC,MAAKuE,EAAa,IAAIrC,GACxB,CAQA,EAAAsC,CAA6BC,EAAUC,GAChC1E,MAAKuE,EAAWI,IAAIF,IACvBzE,MAAKuE,EAAWxB,IAAI0B,EAAO,IAAIG,KAGjC,MAAMC,EAAW7E,MAAKuE,EAAWf,IAAIiB,GACrC,IAAKI,EACH,MAAM,IAAIvB,MAAM,qCAAqCwB,OAAOL,OAO9D,OALAI,EAASE,IAAIL,GAEb9E,EAAOM,MAAM,6BAA6B4E,OAAOL,OAG1C,KACLzE,KAAKgF,IAAIP,EAAOC,GAEpB,CAOA,GAAAM,CAA8BP,EAAUC,GACtC,MAAMG,EAAW7E,MAAKuE,EAAWf,IAAIiB,GACjCI,IACFA,EAASjB,OAAOc,GAChB9E,EAAOM,MAAM,+BAA+B4E,OAAOL,OAG7B,IAAlBI,EAASI,MACXjF,MAAKuE,EAAWX,OAAOa,GAG7B,CAOA,IAAAS,CAA+BT,EAAUU,GACvC,MAAMN,EAAW7E,MAAKuE,EAAWf,IAAIiB,GACrC,GAAKI,GAA8B,IAAlBA,EAASI,KAA1B,CAIArF,EAAOM,MAAM,mBAAmB4E,OAAOL,MAAW,CAAEW,cAAeP,EAASI,OAG5E,IAAK,MAAMP,KAAWG,EACpB,IACEH,EAAQS,EACV,CAAE,MAAO5E,GACPX,EAAOW,MAAM,+BAA+BuE,OAAOL,OAAYlE,EACjE,CAVF,CAYF,CAMA,kBAAA8E,CAA6CZ,GACvCA,GACFzE,MAAKuE,EAAWX,OAAOa,GACvB7E,EAAOM,MAAM,8BAA8B4E,OAAOL,SAElDzE,MAAKuE,EAAWV,QAChBjE,EAAOM,MAAM,+BAEjB,CAMA,aAAAkF,CAAwCX,GACtC,OAAOzE,MAAKuE,EAAWf,IAAIiB,IAAQQ,MAAQ,CAC7C,CAMA,YAAAK,CAAuCb,GACrC,MAAMI,EAAW7E,MAAKuE,EAAWf,IAAIiB,GACrC,YAAoBxB,IAAb4B,GAA0BA,EAASI,KAAO,CACnD,ECzGF,MAAMM,EAAmB,eACnBC,EAA6B,+BAmBtBC,EACXnD,GACAoD,GACAzE,GACA0E,GAAmC,KACnCC,GAAwC,KACxCC,GAEA,WAAA5D,CAAYK,EAAyBoD,EAAsBzE,GACzDjB,MAAKsC,EAAWA,EAChBtC,MAAK0F,EAAaA,EAClB1F,MAAKiB,EAAUA,EACfjB,MAAK6F,EAAgB,IAAIvB,EAGzBtE,MAAK8F,GACP,CAKA,eAAAC,GACE,OAAO/F,MAAK6F,CACd,CAKA,SAAAG,CAAU/E,GACJjB,MAAKiB,IAAYA,IACnBrB,EAAOM,MAAM,uDACbF,MAAKiB,EAAUA,EACfjB,MAAK2F,EAAS,KACd3F,MAAK8F,IAET,CAKA,EAAAA,GACE,IACE,MAAMG,EAAU,GAAGjG,MAAKiB,KAAWsE,IAC7BW,EAAe,GAAGlG,MAAKiB,KAAWuE,IAElCW,EAAenG,MAAKsC,EAASkB,IAAmByC,GAChDG,EAAYpG,MAAKsC,EAASkB,IAAY0C,GAExCC,GAAgBC,IAClBpG,MAAK2F,EAAS,CAAEQ,eAAcC,aAC9BxG,EAAOM,MAAM,mCAAoC,CAC/CmG,MAAOF,EAAajC,OACpBoC,IAAKC,KAAKC,MAAQJ,IAGxB,CAAE,MAAO7F,GACPX,EAAOW,MAAM,4CAA6CA,EAC5D,CACF,CAKA,gBAAAkG,CAAiBN,GACf,IAEOO,MAAMC,QAAQR,KACjBvG,EAAOU,KAAK,2EACZ6F,EAAe,IAIjB,MAAMS,EAAkB5G,KAAK6G,mBAEvBT,EAAYG,KAAKC,MACjBP,EAAU,GAAGjG,MAAKiB,KAAWsE,IAC7BW,EAAe,GAAGlG,MAAKiB,KAAWuE,IAExCxF,MAAKsC,EAASS,IAAIkD,EAASE,GAC3BnG,MAAKsC,EAASS,IAAImD,EAAcE,GAGhCpG,MAAK2F,EAAS,CAAEQ,eAAcC,aAE9BxG,EAAOM,MAAM,gCAAiC,CAAEmG,MAAOF,EAAajC,SAGpElE,MAAK8G,EAAaF,EAAiBT,EACrC,CAAE,MAAO5F,GACPX,EAAOW,MAAM,0CAA2CA,EAC1D,CACF,CAKA,EAAAuG,CAAaF,EAAgCG,GAEtCL,MAAMC,QAAQC,KAAkBA,EAAkB,IAClDF,MAAMC,QAAQI,KAAkBA,EAAkB,IAGvD,MAAMC,EAAS,IAAI9E,IACnB,IAAK,MAAM+E,KAAOL,EAAiB,CACjC,MAAM9D,EAAM,GAAGgC,OAAOmC,EAAI5E,SAAS4E,EAAIC,QACvCF,EAAOjE,IAAID,EAAKmE,EAClB,CAEA,MAAME,EAAS,IAAIjF,IACnB,IAAK,MAAM+E,KAAOF,EAAiB,CACjC,MAAMjE,EAAM,GAAGgC,OAAOmC,EAAI5E,SAAS4E,EAAIC,QACvCC,EAAOpE,IAAID,EAAKmE,EAClB,CAGA,IAAK,MAAOnE,EAAKsE,KAAWD,EAAQ,CAClC,MAAME,EAASL,EAAOxD,IAAIV,GAGrBuE,GAAUjE,KAAKC,UAAUgE,KAAYjE,KAAKC,UAAU+D,IACvDpH,MAAK6F,EAAcX,KAAK,qBAAsB,CAC5CoC,gBAAiBtH,MAAKuH,EAAoBH,GAC1CF,MAAOE,EAAOF,MACdM,SAAUxH,MAAKyH,EAAqBL,GACpCM,YAAaN,GAGnB,CAGA,IAAK,MAAOtE,EAAKuE,KAAWL,EACrBG,EAAOxC,IAAI7B,IACd9C,MAAK6F,EAAcX,KAAK,qBAAsB,CAC5CoC,gBAAiBtH,MAAKuH,EAAoBF,GAC1CH,MAAOG,EAAOH,MACdM,UAAU,GAIlB,CAKA,EAAAD,CAAoBG,GAClB,MAAQR,MAAOS,EAAGC,UAAWC,EAAIC,UAAWC,EAAKC,cAAeC,KAASC,GAASR,EAClF,OAAOQ,CACT,CAKA,EAAAT,CAAqBC,GACnB,OAAIA,EAAYE,WACK,IAAIrB,KAAKmB,EAAYE,WACpB,IAAIrB,IAG5B,CAKA,gBAAAM,GACE,OAAO7G,MAAK2F,GAAQQ,cAAgB,EACtC,CAKA,YAAAgC,GACE,OAAKnI,MAAK2F,GAIEY,KAAKC,MAAQxG,MAAK2F,EAAOS,UAjMf,GAmMxB,CAKA,WAAAgC,GACE,OAAKpI,MAAK2F,EAGHY,KAAKC,MAAQxG,MAAK2F,EAAOS,UAFvB,IAGX,CAKA,UAAAiC,GACErI,MAAK2F,EAAS,KACd3F,MAAK6F,EAAcR,qBACnB,MAAMY,EAAU,GAAGjG,MAAKiB,KAAWsE,IAC7BW,EAAe,GAAGlG,MAAKiB,KAAWuE,IACxCxF,MAAKsC,EAASoB,OAAOuC,GACrBjG,MAAKsC,EAASoB,OAAOwC,GACrBtG,EAAOM,MAAM,4BACf,CAOA,QAAAsH,CAASE,EAA8BR,EAA0B,OAC/D,MAAMf,EAAenG,KAAK6G,mBAE1B,IAAK,MAAMyB,KAAQnC,EAAc,CAE/B,MAAMoC,EAAWvI,MAAKuH,EAAoBe,GAC1C,GAAKtI,MAAKwI,EAAuBD,EAAUb,KAO7B,aAAVR,GAAuC,aAAfoB,EAAKpB,OAAjC,CAKA,GAAIoB,EAAKV,WACY,IAAIrB,KAAK+B,EAAKV,YACf,IAAIrB,KACpB,SAKJ,OAAO,CAXP,CAYF,CAEA,OAAO,CACT,CAKA,EAAAiC,CAAuBC,EAAoBC,GAEzC,OAAOtF,KAAKC,UAAUoF,KAAOrF,KAAKC,UAAUqF,EAC9C,CAMA,qBAAAC,CAAsBzB,EAA0B,OAC9C,MAAMf,EAAenG,KAAK6G,mBACpBL,EAAM,IAAID,KAEhB,OAAOJ,EAAayC,OAAQN,IAIZ,aAAVpB,GAAuC,aAAfoB,EAAKpB,UAK7BoB,EAAKV,WACY,IAAIrB,KAAK+B,EAAKV,YACfpB,GAOxB,CAKA,yBAAMqC,GAEJ,GAAI7I,MAAK4F,EAEP,OADAhG,EAAOM,MAAM,2CACNF,MAAK4F,EAGd5F,MAAK4F,EAAkB5F,MAAK8I,IAE5B,UACQ9I,MAAK4F,CACb,SACE5F,MAAK4F,EAAkB,IACzB,CACF,CAKA,OAAMkD,GACJ,IACElJ,EAAOM,MAAM,oCAEb,MAAMiG,QAAqBnG,MAAK0F,EAAWqD,kBAAkB/I,MAAKiB,GAGlE,IAAKyF,MAAMC,QAAQR,GAGjB,OAFAvG,EAAOU,KAAK,4EACZN,KAAKyG,iBAAiB,IAIxBzG,KAAKyG,iBAAiBN,GAEtBvG,EAAOS,KAAK,sCAAuC,CACjDgG,MAAOF,EAAajC,QAExB,CAAE,MAAO3D,GACPX,EAAOW,MAAM,0DAA2DA,EAE1E,CACF,ECpVF,MAAMyI,EAAmB,qBAaZC,EACX3G,GACAoD,GACAzE,GACAiI,GAAwB,GACxBC,IAAgB,EAChBC,GAEA,WAAAnH,CAAYK,EAAyBoD,EAAsBzE,GACzDjB,MAAKsC,EAAWA,EAChBtC,MAAK0F,EAAaA,EAClB1F,MAAKiB,EAAUA,EAGfjB,MAAKqJ,IAGLrJ,MAAKsJ,IAGAtJ,KAAKuJ,cACZ,CAKA,SAAAvD,CAAU/E,GACJjB,MAAKiB,IAAYA,IACnBrB,EAAOM,MAAM,kDACbF,MAAKiB,EAAUA,EACfjB,MAAKkJ,EAAS,GACdlJ,MAAKqJ,IAET,CAKA,EAAAA,GACE,IACE,MAAMpD,EAAU,GAAGjG,MAAKiB,KAAW+H,IAC7BE,EAAQlJ,MAAKsC,EAASkB,IAAmByC,GAE3CiD,GAASxC,MAAMC,QAAQuC,KACzBlJ,MAAKkJ,EAASA,EACdtJ,EAAOM,MAAM,yCAA0C,CAAEmG,MAAO6C,EAAMhF,SAE1E,CAAE,MAAO3D,GACPX,EAAOW,MAAM,kDAAmDA,EAClE,CACF,CAKA,EAAAiJ,GACE,IACE,MAAMvD,EAAU,GAAGjG,MAAKiB,KAAW+H,IACnChJ,MAAKsC,EAASS,IAAIkD,EAASjG,MAAKkJ,GAChCtJ,EAAOM,MAAM,sCAAuC,CAAEmG,MAAOrG,MAAKkJ,EAAOhF,QAC3E,CAAE,MAAO3D,GACPX,EAAOW,MAAM,gDAAiDA,EAChE,CACF,CAKA,OAAAkJ,CAAQzB,EAAuB0B,GAE7B,MAAMC,EAAS3J,MAAKkJ,EAAOU,KACxBC,GAAWA,EAAO7B,gBAAkBA,GAAiB6B,EAAOH,YAAcA,GAG7E,GAAIC,EAEF,YADA/J,EAAOM,MAAM,0CAA2C,CAAE8H,gBAAe0B,cAI3E,MAAMG,EAAsB,CAC1B7B,gBACA0B,YACAtD,WAAW,IAAIG,MAAOuD,cACtBC,SAAU,GAGZ/J,MAAKkJ,EAAO/E,KAAK0F,GACjB7J,MAAKwJ,IACL5J,EAAOS,KAAK,8BAA+B,CAAE2H,gBAAe0B,aAC9D,CAKA,OAAAM,CAAQH,GACN,MAAMI,EAAQjK,MAAKkJ,EAAOgB,UACvBC,GAAMA,EAAEnC,gBAAkB6B,EAAO7B,eAAiBmC,EAAET,YAAcG,EAAOH,YAG9D,IAAVO,IACFjK,MAAKkJ,EAAOkB,OAAOH,EAAO,GAC1BjK,MAAKwJ,IACL5J,EAAOM,MAAM,kCAAmC,CAC9C8H,cAAe6B,EAAO7B,cACtB0B,UAAWG,EAAOH,YAGxB,CAKA,QAAAW,GACE,MAAO,IAAIrK,MAAKkJ,EAClB,CAKA,UAAAoB,GACEtK,MAAKkJ,EAAS,GACdlJ,MAAKwJ,IACL5J,EAAOM,MAAM,6BACf,CAKA,qBAAMqK,CAAgBvC,EAAuB0B,GAC3C,IAKE,GAJA9J,EAAOM,MAAM,uBAAwB,CAAE8H,gBAAe0B,qBAEhC1J,MAAK0F,EAAW6E,gBAAgBvC,EAAe0B,GAKnE,MAAM,IAAIpG,MAAM,wCAFhB1D,EAAOS,KAAK,iCAAkC,CAAE2H,gBAAe0B,aAInE,CAAE,MACA9J,EAAOU,KAAK,+CAAgD,CAAE0H,gBAAe0B,cAC7E1J,KAAKyJ,QAAQzB,EAAe0B,EAC9B,CACF,CAKA,kBAAMH,GAEJ,GAAIvJ,MAAKmJ,EACPvJ,EAAOM,MAAM,uDAIf,GAA2B,IAAvBF,MAAKkJ,EAAOhF,OAAhB,CAIAlE,MAAKmJ,GAAgB,EACrBvJ,EAAOS,KAAK,gCAAiC,CAAEgG,MAAOrG,MAAKkJ,EAAOhF,SAElE,IAEE,IAAK,MAAM2F,IAAU,IAAI7J,MAAKkJ,SACtBlJ,MAAKwK,EAAeX,GAGtB7J,MAAKkJ,EAAOhF,OAAS,SACjBlE,MAAKyK,EAnLI,IAsLrB,SACEzK,MAAKmJ,GAAgB,CACvB,CAjBA,CAkBF,CAKA,OAAMqB,CAAeX,GAEnB,GAAIA,EAAOE,UAlMY,EAyMrB,OANAnK,EAAOW,MAAM,yDAA0D,CACrEyH,cAAe6B,EAAO7B,cACtB0B,UAAWG,EAAOH,UAClBK,SAAUF,EAAOE,gBAEnB/J,KAAKgK,QAAQH,GAKf,GAAIA,EAAOa,cAAe,CACxB,MAAMC,EAAc,IAAIpE,KAAKsD,EAAOa,eAAeE,UAC7CpE,EAAMD,KAAKC,MACXqE,EA/MgB,IA+MqBC,KAAKC,IAAI,EAAGlB,EAAOE,SAAW,GACnEiB,EAAuBxE,EAAMmE,EAEnC,GAAIK,EAAuBH,EAKzB,YAJAjL,EAAOM,MAAM,8CAA+C,CAC1D8H,cAAe6B,EAAO7B,cACtBiD,cAAeJ,EAAeG,GAIpC,CAGAnB,EAAOE,WACPF,EAAOa,eAAgB,IAAInE,MAAOuD,cAClC9J,MAAKwJ,IAEL,IACE5J,EAAOM,MAAM,yCAA0C,CACrD8H,cAAe6B,EAAO7B,cACtB0B,UAAWG,EAAOH,UAClBwB,QAASrB,EAAOE,iBAGI/J,MAAK0F,EAAW6E,gBAAgBV,EAAO7B,cAAe6B,EAAOH,YAGjF9J,EAAOS,KAAK,wCAAyC,CACnD2H,cAAe6B,EAAO7B,cACtB0B,UAAWG,EAAOH,YAEpB1J,KAAKgK,QAAQH,IAEbjK,EAAOU,KAAK,kCAAmC,CAC7C0H,cAAe6B,EAAO7B,cACtBkD,QAASrB,EAAOE,UAGtB,CAAE,MAAOxJ,GACPX,EAAOU,KAAK,iDAAkD,CAC5D0H,cAAe6B,EAAO7B,cACtBkD,QAASrB,EAAOE,SAChBxJ,SAEJ,CACF,CAKA,EAAA+I,GACEtJ,MAAKoJ,ECjMH,SAAmB+B,GACvB,MAAMzG,EAAU,KACd9E,EAAOM,MAAM,0BACbiL,KAKF,OAFAC,OAAOC,iBAAiB,SAAU3G,GAE3B,KACL0G,OAAOE,oBAAoB,SAAU5G,GAEzC,CDsLmC6G,CAAS,KACtC3L,EAAOM,MAAM,sDACRF,KAAKuJ,gBAEd,CAKA,OAAAiC,GACMxL,MAAKoJ,IACPpJ,MAAKoJ,IACLpJ,MAAKoJ,OAA0BnG,EAEnC,CAKA,EAAAwH,CAAOgB,GACL,OAAO,IAAIC,QAASC,GAAYC,WAAWD,EAASF,GACtD,QEzRWI,EACXnG,GACAzE,GACA6K,GAA8B,GAC9BC,GAAwE,KACxEC,GAAiC,KAEjC,WAAA/J,CAAYyD,EAAsBzE,GAChCjB,MAAK0F,EAAaA,EAClB1F,MAAKiB,EAAUA,CACjB,CAKA,iBAAMgL,CACJC,EACAC,GAAW,GAGX,GAAIA,GAAYnM,MAAK8L,EAAc5H,OAAS,GAAKlE,MAAKgM,EAEpD,OADApM,EAAOM,MAAM,sBAAuB,CAAEmG,MAAOrG,MAAK8L,EAAc5H,SACzD,CACLkI,OAAQ,IAAIpM,MAAK8L,GACjB1K,gBAAiBpB,MAAK+L,QAA0B9I,GAIpD,IACErD,EAAOM,MAAM,2BAA4B,CAAEe,OAAQjB,MAAKiB,IAExD,MAAMoL,QAAiBrM,MAAK0F,EAAWuG,YAAYjM,MAAKiB,EAASiL,GAEjE,OAAgC,IAA5BG,EAASD,QAAQlI,QACnBtE,EAAOS,KAAK,gCACZL,MAAK8L,EAAgB,GACrB9L,MAAK+L,EAAyBM,EAASjL,iBAAmB,KAC1DpB,MAAKgM,EAAkBzF,KAAKC,MACrB,CAAE4F,OAAQ,GAAIhL,gBAAiBiL,EAASjL,mBAIjDpB,MAAK8L,EAAgBO,EAASD,OAC9BpM,MAAK+L,EAAyBM,EAASjL,iBAAmB,KAC1DpB,MAAKgM,EAAkBzF,KAAKC,MAE5B5G,EAAOS,KAAK,8BAA+B,CACzCgG,MAAOgG,EAASD,OAAOlI,OACvBoI,SAAUD,EAASD,OAAOG,IAAKC,GAAMA,EAAEC,MAGlC,CACLL,OAAQ,IAAIC,EAASD,QACrBhL,gBAAiBiL,EAASjL,iBAE9B,CAAE,MAAOb,GAEP,MADAX,EAAOW,MAAM,yBAA0BA,GACjCA,CACR,CACF,CAKA,aAAAmM,CAAcC,EAAsBC,GAClC,IAEE,MAAMC,EAAczB,OAAO0B,SAASC,SAEpCnN,EAAOM,MAAM,qBAAsB,CACjCyM,eACAK,WAAYJ,EAAMI,WAClBC,WAAYL,EAAMK,WAClBJ,gBAIG7M,MAAK0F,EACPgH,cAAcC,EAAc3M,MAAKiB,EAAS2L,EAAMI,WAAYJ,EAAMK,WAAYJ,GAC9EK,KAAMC,IACDA,GACFvN,EAAOM,MAAM,iCAAkC,CAC7CyM,mBAILS,MAAOC,IAENzN,EAAOW,MAAM,0CAA2C,CACtDoM,eACApM,MAAO8M,KAGf,CAAE,MAAO9M,GAEPX,EAAOW,MAAM,0CAA2C,CACtDoM,eACApM,SAEJ,CACF,CAKA,sBAAM+M,CACJN,EACAC,EACAN,GAEA,IACE/M,EAAOM,MAAM,uBAAwB,CAAE8M,aAAYC,aAAYN,iBAE/D,MAAM3E,QAAsBhI,MAAK0F,EAAW4H,iBAC1CN,EACAhN,MAAKiB,EACLgM,EACAN,GASF,OANA/M,EAAOS,KAAK,sBAAuB,CACjC2H,gBACAgF,aACAC,eAGKjF,CACT,CAAE,MAAOzH,GAEP,MADAX,EAAOW,MAAM,8BAA+B,CAAEyM,aAAYC,aAAY1M,UAChEA,CACR,CACF,CAKA,UAAA8H,GACErI,MAAK8L,EAAgB,GACrB9L,MAAKgM,EAAkB,KACvBpM,EAAOM,MAAM,sBACf,CAKA,SAAA8F,CAAU/E,GACRjB,MAAKiB,EAAUA,EACfjB,KAAKqI,aACLzI,EAAOM,MAAM,+BAAgC,CAAEe,UACjD,QC9IWsM,EACX7H,GACAsC,GACAwF,GACAC,GAAa,EACbC,GAAY,IACZC,GAAe,IACfC,GAAgC,KAChCC,IAAa,EAEb,WAAA5L,CAAYyD,EAAsBoI,GAChC9N,MAAK0F,EAAaA,EAClB1F,MAAKgI,EAAiB8F,EAAQ9F,cAC9BhI,MAAKwN,EAAWM,EAAQN,SAAW,GACrC,CAMA,UAAMO,GACJ,OAAI/N,MAAK6N,GACPjO,EAAOU,KAAK,2CAA4C,CACtD0H,cAAehI,MAAKgI,IAEf,YAGThI,MAAK6N,GAAa,EAClB7N,MAAKyN,EAAalH,KAAKC,MACvB5G,EAAOM,MAAM,gCAAiC,CAC5C8H,cAAehI,MAAKgI,EACpBwF,QAASxN,MAAKwN,IAGTxN,MAAKgO,IACd,CAKA,IAAAC,GACEjO,MAAK6N,GAAa,EACU,OAAxB7N,MAAK4N,IACPM,aAAalO,MAAK4N,GAClB5N,MAAK4N,EAAiB,MAExBhO,EAAOM,MAAM,+BAAgC,CAAE8H,cAAehI,MAAKgI,GACrE,CAKA,OAAMgG,GACJ,KAAOhO,MAAK6N,GAAY,CAEtB,MAAMM,EAAU5H,KAAKC,MAAQxG,MAAKyN,EAClC,GAAIU,GAAWnO,MAAKwN,EAMlB,OALA5N,EAAOU,KAAK,+BAAgC,CAC1C0H,cAAehI,MAAKgI,EACpBmG,YAEFnO,KAAKiO,OACE,UAGT,IAEE,MAAM5B,QAAiBrM,MAAK0F,EAAW0I,wBAAwBpO,MAAKgI,GAQpE,GANApI,EAAOM,MAAM,8BAA+B,CAC1C8H,cAAehI,MAAKgI,EACpBqG,OAAQhC,EAASgC,SAIK,aAApBhC,EAASgC,OAMX,OALAzO,EAAOS,KAAK,uBAAwB,CAClC2H,cAAehI,MAAKgI,EACpBsG,WAAYjC,EAASiC,aAEvBtO,KAAKiO,OACE,WAGT,GAAwB,WAApB5B,EAASgC,OAKX,OAJAzO,EAAOU,KAAK,kCAAmC,CAC7C0H,cAAehI,MAAKgI,IAEtBhI,KAAKiO,OACE,eAIHjO,MAAKyK,EAAOzK,MAAK0N,GAGvB1N,MAAK0N,EAAY5C,KAAKyD,IAAqB,EAAjBvO,MAAK0N,EAAe1N,MAAK2N,EACrD,CAAE,MAAOpN,GACPX,EAAOW,MAAM,qCAAsC,CACjDyH,cAAehI,MAAKgI,EACpBzH,gBAIIP,MAAKyK,EAAOzK,MAAK0N,EACzB,CACF,CAEA,MAAO,SACT,CAKA,OAAMjD,CAAOgB,GACX,OAAO,IAAIC,QAASC,IAClB3L,MAAK4N,EAAiBxC,OAAOQ,WAAW,KACtC5L,MAAK4N,EAAiB,KACtBjC,KACCF,IAEP,QC3HW+C,EACXC,GAAsE,KACtEC,GAAqE,KACrEC,GAAuE,KACvEC,GAEA,WAAA3M,CAAY2M,GACV5O,MAAK4O,EAAYA,CACnB,CAKA,SAAAC,CAAU1D,GAER,OADAnL,MAAKyO,EAAqBtD,EACnBnL,IACT,CAKA,YAAA8O,CAAa3D,GAEX,OADAnL,MAAK0O,EAAwBvD,EACtBnL,IACT,CAKA,oBAAA+O,CAAqB5D,GAEnB,OADAnL,MAAK2O,EAAgCxD,EAC9BnL,IACT,CAKA,UAAMgP,GACJ,IAEMhP,MAAK2O,GACP3O,MAAK2O,GAA8B,GAGrC/O,EAAOM,MAAM,4CAGb,MAAM+O,QAAejP,MAAK4O,IAiB1B,OAdI5O,MAAK2O,GACP3O,MAAK2O,GAA8B,GAIjCM,EAAOC,SAAWD,EAAOvH,aAAe1H,MAAKyO,EAC/CzO,MAAKyO,EAAmBQ,EAAOvH,cACrBuH,EAAOC,SAAWlP,MAAK0O,GAE7BO,EAAOE,QACTnP,MAAK0O,EAAsBO,EAAOE,QAI/BF,CACT,CAAE,MAAO1O,GAEHP,MAAK2O,GACP3O,MAAK2O,GAA8B,GAGrC/O,EAAOW,MAAM,8CAA+CA,GAE5D,MAAM6O,EAAgC,CACpC/M,KAAM,QACN9B,MAAO,CACL8O,KAAM3P,EAAU4P,cAChBC,QAAShP,aAAiB+C,MAAQ/C,EAAMgP,QAAU,kBAQtD,OAJIvP,MAAK0O,GACP1O,MAAK0O,EAAsBU,GAGtB,CACLF,SAAS,EACTC,OAAQC,EAEZ,CACF,ECpEI,SAAUI,EAAkBC,EAAkBC,GAClD,IAAIT,EAASQ,EACb,IAAK,MAAO3M,EAAKE,KAAU2M,OAAOC,QAAQF,GACxCT,EAASA,EAAOY,QAAQ,IAAI/M,IAAOgN,mBAAmB9M,IAExD,OAAOiM,CACT,OCLac,EACX/O,GACAE,GACA8O,GAEA,WAAA/N,CAAYjB,EAAgBE,GAC1BlB,MAAKgB,EAAUA,EACfhB,MAAKkB,EAAWA,EAChBlB,MAAKgQ,EAAmB,IAAI9N,GAC9B,CAKA,SAAA+N,CAAUjP,GACRhB,MAAKgB,EAAUA,CACjB,CAKA,UAAAkP,CAAWhP,GACTlB,MAAKkB,EAAWA,CAClB,CAKA,SAAMsC,CAAOiM,EAAkB3B,GAC7B,OAAO9N,MAAKmQ,EAAY,CACtBC,IAAK,GAAGpQ,MAAKkB,IAAWuO,IACxB3B,QAAS,CACPuC,OAAQ,SACLvC,GAEL9M,OAAQhB,MAAKgB,GAEjB,CAKA,UAAMsP,CAAQb,EAAkBc,EAAgBzC,GAC9C,OAAO9N,MAAKmQ,EAAY,CACtBC,IAAK,GAAGpQ,MAAKkB,IAAWuO,IACxB3B,QAAS,CACPuC,OAAQ,OACRE,UACGzC,GAEL9M,OAAQhB,MAAKgB,GAEjB,CAKA,OAAMmP,CAAYzP,GAChB,MAAM0P,IAAEA,EAAGtC,QAAEA,EAAO9M,OAAEA,GAAWN,EAC3B8P,EAAaxQ,MAAKyQ,EAAeL,EAAKtC,GAGtC4C,EAAiB1Q,MAAKgQ,EAAiBxM,IAAIgN,GACjD,GAAIE,EAEF,OADA9Q,EAAOM,MAAM,yBAA0BkQ,GAChCM,EAIT,MAAMC,EAAiB3Q,MAAK4Q,EAAmBR,EAAKtC,EAAS9M,GAG7DhB,MAAKgQ,EAAiBjN,IAAIyN,EAAYG,GAEtC,IAEE,aADqBA,CAEvB,SAEE3Q,MAAKgQ,EAAiBpM,OAAO4M,EAC/B,CACF,CAKA,OAAMI,CAAmBR,EAAatC,EAAyB9M,GAC7D,MAAM6P,EAAa/C,EAAQgD,SAxGX,EAyGhB,IAAIC,EAA0B,KAE9B,IAAK,IAAI7F,EAAU,EAAGA,GAAW2F,EAAY3F,IAC3C,IAEE,GAAIA,EAAU,EAAG,CACf,MAAM8F,EA9GY,IA8GkBlG,KAAKC,IAAI,EAAGG,EAAU,GAC1DtL,EAAOM,MAAM,6BAA6BgL,KAAW2F,YAAqBG,aACpEhR,MAAKyK,EAAOuG,EACpB,CAGA,aADqBhR,MAAKiR,EAAqBb,EAAKtC,EAAS9M,EAE/D,CAAE,MAAOT,GAIP,GAHAwQ,EAAYxQ,EAGRP,MAAKkR,GAAe3Q,GACtB,MAAMA,EAIR,GAAI2K,IAAY2F,EAEd,MADAjR,EAAOW,MAAM,wBAAwBsQ,aAAuBtQ,GACtDA,EAGRX,EAAOU,KAAK,8BAA+BC,EAC7C,CAIF,MAAMwQ,GAAa,IAAIzN,MAAM,iBAC/B,CAKA,OAAM2N,CAAqBb,EAAatC,EAAyB9M,GAC/D,MAAMwM,EAAUM,EAAQN,SAjJJ,IAkJd2D,EAAa,IAAIC,gBACjBC,EAAYzF,WAAW,IAAMuF,EAAWG,QAAS9D,GAEvD,IACE,MAAM+D,EAAkC,CACtC,YAAavQ,EACb,eAAgB,mBAChB,aAAc,0BACX8M,EAAQyD,SAGPC,EAA4B,CAChCnB,OAAQvC,EAAQuC,OAChBkB,UACA1H,OAAQsH,EAAWtH,QAGjBiE,EAAQyC,OACViB,EAAajB,KAAOnN,KAAKC,UAAUyK,EAAQyC,OAG7C3Q,EAAOM,MAAM,GAAG4N,EAAQuC,UAAUD,KAElC,MAAM/D,QAAiBoF,MAAMrB,EAAKoB,GASlC,OANKnF,EAASqF,UACN1R,MAAK2R,GAAiBtF,SAIFA,EAASuF,MAEvC,CAAE,MAAOrR,GAEP,GAAIA,aAAiB+C,MAAO,CAC1B,GAAmB,eAAf/C,EAAMgD,KACR,MAAM,IAAID,MAAM,mBAElB,GAAItD,MAAK6R,GAAgBtR,GACvB,MAAM,IAAI+C,MAAM,kBAAkB/C,EAAMgP,UAE5C,CAEA,GAAIhP,aAAiB+C,MACnB,MAAM/C,EAER,MAAM,IAAI+C,MAAMwB,OAAOvE,GACzB,SACE2N,aAAamD,EACf,CACF,CAKA,QAAMM,CAAiBtF,GACrB,IACIyF,EADAC,EAAe,QAAQ1F,EAASgC,WAAWhC,EAAS2F,aAGxD,IACE,MAAMC,QAA2B5F,EAASuF,OAC1C,GACuB,iBAAdK,GACO,OAAdA,GACA,UAAWA,GACgB,iBAApBA,EAAU1R,OACG,OAApB0R,EAAU1R,MACV,CACA,MAAM2R,EAAWD,EAAU1R,MAI3BwR,GAC+B,iBAArBG,EAAS3C,QAAuB2C,EAAS3C,aAAUtM,IAAc8O,EAC3ED,EAAqC,iBAAlBI,EAAS7C,KAAoB6C,EAAS7C,UAAOpM,CAClE,CACF,CAAE,MAEF,CAGA,MAAM1C,EAAqBuR,EACvB,CACEzC,KAAMyC,EACNvC,QAASwC,GAEX,CACE1C,KAAM3P,EAAUyS,UAChBC,WAAY/F,EAASgC,OACrBkB,QAASwC,GAITM,EAAgB,IAAI/O,MAAMyO,GAEhC,MADApC,OAAO2C,OAAOD,EAAe9R,GACvB8R,CACR,CAKA,GAAAnB,CAAe3Q,GACb,GAAqB,iBAAVA,GAAgC,OAAVA,GAAkB,eAAgBA,QAElC0C,IADX1C,EACJ6R,WAA0B,CACxC,MAAMA,EAFY7R,EAEa6R,WAC/B,OAAOA,GAAc,KAAOA,EAAa,GAC3C,CAEF,OAAO,CACT,CAKA,GAAAP,CAAgBtR,GACd,OACEA,EAAMgP,QAAQjO,SAAS,UACvBf,EAAMgP,QAAQjO,SAAS,YACvBf,EAAMgP,QAAQjO,SAAS,iBACvBf,EAAMgP,QAAQjO,SAAS,YAE3B,CAKA,EAAAmP,CAAeL,EAAatC,GAC1B,MAAMyC,EAAOzC,EAAQyC,KAAOnN,KAAKC,UAAUyK,EAAQyC,MAAQ,GAC3D,MAAO,GAAGzC,EAAQuC,UAAUD,KAAOG,GACrC,CAKA,EAAA9F,CAAOgB,GACL,OAAO,IAAIC,QAASC,GAAYC,WAAWD,EAASF,GACtD,CASA,iBAAMQ,CACJhL,EACAsR,GAEA,IACE,MAAMlG,QAAiBrM,KAAKsQ,KDrTlB,eCqToE,CAC5ErP,SACAsR,eAIInG,EAAuB,GAE7B,IAAK,MAAMoG,KAAYnG,EAASD,OAAQ,CACtC,MAAMqG,EAAWD,EAASC,SAG1B,IAAK,MAAMC,KAAYD,EAASE,UAAW,CACzC,MAAM/F,EAAoB,CACxBH,GAAIiG,EAASjG,GACbmG,MAAOF,EAASE,MAChBC,YACEH,EAASI,mBAAqBJ,EAASK,UAAYL,EAASG,aAAe,GAC7EG,SAAUN,EAASO,gBACnBC,QAASR,EAASQ,QAClBC,cAAeT,EAASU,eACxBpG,WAAYyF,EAAShG,GACrBQ,WAAYyF,EAASjG,GAGrB/E,YAAa,CAAErF,KAAM,SAAUW,MAAO,IAAKqQ,KAAM,cAC7CZ,EAASa,cAAgB,CAAEA,aAAcb,EAASa,iBAClDZ,EAASa,SAAW,CAAEA,QAASb,EAASa,YACxCb,EAASc,cAAgB,CAAEA,aAAcd,EAASc,iBAClDd,EAASI,mBAAqB,CAAEA,kBAAmBJ,EAASI,sBAC5DJ,EAASe,oBAAsB,CAAEA,mBAAoBf,EAASe,qBAEpErH,EAAOjI,KAAKyI,EACd,CACF,CAEA,MAAO,CACLR,SACAhL,gBAAiBiL,EAASjL,gBAE9B,CAAE,MAAOb,GAEP,MADAX,EAAOW,MAAM,0BAA2BA,GAClCA,CACR,CACF,CAKA,sBAAM+M,CACJN,EACA/L,EACAgM,EACAN,GAEA,IAOE,aANuB3M,KAAKsQ,KD5Wb,sBC4WyE,CACtFtD,aACA/L,SACAgM,gBACIN,GAAgB,CAAEA,mBAER3E,aAClB,CAAE,MAAOzH,GAEP,MADAX,EAAOW,MAAM,+BAAgCA,GACvCA,CACR,CACF,CAKA,qBAAMgK,CACJvC,EACA0B,GAEA,IACE,MAAM+F,EDrUN,SAAiCzH,GACrC,OAAOwH,EA5DO,0BA4DmC,CAAE/C,GAAIzE,GACzD,CCmUuB0L,CAAuB1L,GAMxC,aALuBhI,KAAKsQ,KAA0Bb,EAAU,CAC9DzH,gBACA0B,YACAtD,WAAW,IAAIG,MAAOuD,iBAERqD,OAClB,CAAE,MAAO5M,GAEP,MADAX,EAAOW,MAAM,+BAAgCA,GACvCA,CACR,CACF,CAKA,GAAAoT,CAAwBC,GAKtB,OAHkBA,EAAQ/D,QAAQ,YAAa,CAAClI,EAAGkM,IAAWA,EAAOC,gBAInE,IAAK,YACH,MAAO,CAAEzR,KAAM,aACjB,IAAK,WACH,MAAO,CAAEA,KAAM,YACjB,IAAK,SACH,MAAO,CAAEA,KAAM,UACjB,QAGE,OADAzC,EAAOU,KAAK,6BAA6BsT,4BAClC,CAAEvR,KAAM,aAErB,CAKA,uBAAM0G,CAAkB9H,GACtB,IACE,MAAMoL,QAAiBrM,KAAKwD,IAC1B,wBAA0CsM,mBAAmB7O,MAIzDkF,EAA8B,GAGpC,GAAIkG,EAAS0H,YACX,IAAK,MAAOzM,EAAiB0M,KAASrE,OAAOC,QAAQvD,EAAS0H,aAAc,CAC1E,MAAME,EAAUjU,MAAK2T,GAAwBrM,GAC7CnB,EAAahC,KAAK,IACb8P,EACHjM,cAAe,GACfd,MAAO,cACPY,UAAWkM,EAAKE,WAChBtM,UAAWoM,EAAKG,YAEpB,CAIF,GAAI9H,EAAS+H,SACX,IAAK,MAAO9M,EAAiB0M,KAASrE,OAAOC,QAAQvD,EAAS+H,UAAW,CACvE,MAAMH,EAAUjU,MAAK2T,GAAwBrM,GAC7CnB,EAAahC,KAAK,IACb8P,EACHjM,cAAe,GACfd,MAAO,WACPY,UAAWkM,EAAKE,WAChBtM,UAAWoM,EAAKG,YAEpB,CASF,OANAvU,EAAOM,MAAM,oCAAqC,CAChDmU,iBAAkB1E,OAAO7L,KAAKuI,EAAS0H,aAAe,CAAA,GAAI7P,OAC1DoQ,cAAe3E,OAAO7L,KAAKuI,EAAS+H,UAAY,CAAA,GAAIlQ,OACpDqQ,WAAYpO,EAAajC,SAGpBiC,CACT,CAAE,MAAO5F,GAEP,MADAX,EAAOW,MAAM,gCAAiCA,GACxCA,CACR,CACF,CAKA,6BAAM6N,CAAwBpG,GAC5B,IACE,MAAMyH,ED3ZN,SAAwCzH,GAC5C,OAAOwH,EAjEc,2BAiEmC,CAAE/C,GAAIzE,GAChE,CCyZuBwM,CAA8BxM,GAE/C,aADuBhI,KAAKwD,IAAgCiM,EAE9D,CAAE,MAAOlP,GAEP,MADAX,EAAOW,MAAM,uCAAwCA,GAC/CA,CACR,CACF,CAKA,mBAAMmM,CACJC,EACA1L,EACA+L,EACAC,EACAJ,GAEA,IAQE,aAPuB7M,KAAKsQ,KD9ehB,mBC8esE,CAChF3D,eACA1L,SACA+L,aACAC,aACAJ,iBAEcM,OAClB,CAAE,MAAO5M,GAGP,OADAX,EAAOU,KAAK,2CAA4CC,IACjD,CACT,CACF,ECngBF,MAAMkU,EAAW,oBACXC,EAAe,UAsvBf,SAAUC,EAAaC,EAAwB,IAEnD,GAAIC,SAASC,eAAeL,GAC1B7U,EAAOM,MAAM,uCAIf,IACE,MAAM6U,EAAeF,SAASG,cAAc,SAC5CD,EAAatI,GAAKgI,EAClBM,EAAaE,YAptBjB,SAAuBL,EAAwB,IAC7C,MAAMM,EAhBR,SAA2BN,GACzB,MAAMO,EAAiB,GAQvB,OANIP,EAAMQ,cAAcD,EAAKhR,KAAK,2BAA2ByQ,EAAMQ,iBAC/DR,EAAMS,iBAAiBF,EAAKhR,KAAK,sBAAsByQ,EAAMS,oBAC7DT,EAAMU,WAAWH,EAAKhR,KAAK,wBAAwByQ,EAAMU,cACzDV,EAAMW,cAAcJ,EAAKhR,KAAK,2BAA2ByQ,EAAMW,iBAC/DX,EAAMY,YAAYL,EAAKhR,KAAK,yBAAyByQ,EAAMY,eAExDL,EAAKM,KAAK,SACnB,CAMoBC,CAAkBd,GAEpC,MAAO,2EAGDM,GAAa,oEACWN,EAAMQ,cAAgB,wCAC3BR,EAAMS,iBAAmB,0CACvBT,EAAMU,WAAa,6CAChBV,EAAMW,cAAgB,wCACxBX,EAAMY,YAAc,oIAI3Cd,iTAaAA,aAAwBA,2EAKxBA,qtBAqBAA,UAAqBA,0HAMrBA,ogBAoBAA,mLAOAA,wEAIAA,2HAKAA,+GAMIA,gFAKJA,2GAKAA,sKAQAA,0JAQAA,uIAOAA,wIAOAA,gGAKAA,8LASAA,kNASAA,iYAeAA,8GAKAA,gSAWAA,kBAA6BA,wFAM7BA,2QAWAA,8NAUAA,kOAUAA,uBAAkCA,gFAKlCA,4cAmBAA,+GAKAA,6GAKAA,6JAQAA,uGAMAA,mMASAA,+GAMAA,mMASAA,+EAIAA,kGAKAA,iQAWAA,4IAQAA,uPAWAA,eAA0BA,+CAI1BA,oJAQAA,uKAQAA,2PAWAA,ugBAoBAA,6KAMAA,sGAKAA,uGAKAA,mJAOAA,6KAQAA,qXAeAA,yIAMAA,qFAIAA,qGAKAA,qGAMAA,oGAKAA,+BACAA,eAA0BA,kIAO1BA,qCACAA,eAA0BA,0IAO1BA,qIAOAA,4LAMYA,wDAGFA,8IAMRA,mHAMAA,2EAIAA,kEAIAA,qEAIAA,qEAIAA,6EAIAA,qEAIAA,oEAIAA,sHAMAA,iEAIAA,+DAIAA,0LAOAA,4IAOAA,qJAOAA,wKAOAA,sBACAA,mBACAA,oBACAA,iEAIAA,mHAMFA,gCACAA,yKAMAA,2OAQYA,0CAGZA,wVAWYA,2CAGZA,6JAOAA,8JAOAA,0LAQAA,uJAOAA,0GAIAA,uIAMAA,mIAMAA,qZAaAA,sIAKAA,4EAIAA,+IAKUA,0KAWjB,CAe+BiB,CAAcf,GACzCC,SAASe,KAAKC,YAAYd,GAC1BnV,EAAOM,MAAM,sCACf,CAAE,MAAOK,GACPX,EAAOW,MAAM,kCAAmCA,EAClD,CACF,CAsCM,SAAUuV,EAAIC,GAClB,MAAO,GAAGrB,IAAeqB,GAC3B,OCryBaC,EACXnQ,GACAoQ,IAAmC,KACnCC,IAAgC,KAChCC,IAAyC,KACzCC,IAAoC,KACpCC,KAAa,EACbC,IAAyC,KACzCC,IAAoC,GACpCC,IAA+D,KAE/D,WAAAvU,CAAY2S,EAAwB,IAClC5U,MAAK6F,EAAgB,IAAIvB,EAGzBqQ,EAAaC,EACf,CAKA,IAAA5F,GACMhP,MAAKqW,GACPzW,EAAOU,KAAK,6BAKdN,MAAKsW,GAAyBzB,SAAS4B,cAGvCzW,MAAK0W,KAGD1W,MAAKiW,IAAWpB,SAAStE,KAAKsF,YAAY7V,MAAKiW,IAC/CjW,MAAKkW,IAAQrB,SAAStE,KAAKsF,YAAY7V,MAAKkW,IAGhDrB,SAAStE,KAAKoG,UAAU5R,IAAI+Q,EAAI,cAGhCc,sBAAsB,KACpB5W,MAAKiW,IAAWU,UAAU5R,IAAI+Q,EAAI,YAClC9V,MAAKkW,IAAQS,UAAU5R,IAAI+Q,EAAI,cAIjC9V,MAAK6W,KAGL7W,MAAK8W,KACL9W,MAAK+W,KAEL/W,MAAKqW,IAAa,EAClBrW,MAAK6F,EAAcX,KAAK,YAAQjC,GAChCrD,EAAOM,MAAM,eACf,CAKA,IAAA8W,GACOhX,MAAKqW,KAKVrW,MAAKiW,IAAWU,UAAUjT,OAAOoS,EAAI,YACrC9V,MAAKkW,IAAQS,UAAUjT,OAAOoS,EAAI,YAGlClK,WAAW,KACT5L,MAAKiX,KACLpC,SAAStE,KAAKoG,UAAUjT,OAAOoS,EAAI,cAG/B9V,MAAKsW,cAAkCY,aACzClX,MAAKsW,GAAuBa,QAG9BnX,MAAKqW,IAAa,EAClBrW,MAAK6F,EAAcX,KAAK,YAAQjC,GAChCrD,EAAOM,MAAM,iBACZ,KACL,CAKA,SAAAmW,GACE,OAAOrW,MAAKqW,EACd,CAKA,UAAAe,CAAWC,GACJrX,MAAKoW,IAMVpW,MAAKoW,GAAWkB,UAAY,GAC5BtX,MAAKoW,GAAWP,YAAYwB,GAG5BrX,MAAK8W,MATHlX,EAAOW,MAAM,6BAUjB,CAKA,EAAAiE,CACEC,EACAC,GAEA,OAAO1E,MAAK6F,EAAcrB,GAAGC,EAAOC,EACtC,CAKA,GAAAgS,GAEE1W,MAAKiW,GAAYpB,SAASG,cAAc,OACxChV,MAAKiW,GAAUF,UAAYD,EAAI,YAC/B9V,MAAKiW,GAAUsB,aAAa,cAAe,QAG3CvX,MAAKkW,GAASrB,SAASG,cAAc,OACrChV,MAAKkW,GAAOH,UAAYD,EAAI,SAC5B9V,MAAKkW,GAAOqB,aAAa,OAAQ,UACjCvX,MAAKkW,GAAOqB,aAAa,aAAc,QACvCvX,MAAKkW,GAAOqB,aAAa,kBAAmBzB,EAAI,gBAGhD9V,MAAKmW,GAAetB,SAASG,cAAc,UAC3ChV,MAAKmW,GAAaJ,UAAYD,EAAI,gBAClC9V,MAAKmW,GAAaoB,aAAa,aAAc,eAC7CvX,MAAKmW,GAAamB,UAAY,wOAO9BtX,MAAKoW,GAAavB,SAASG,cAAc,OACzChV,MAAKoW,GAAWL,UAAYD,EAAI,cAGhC9V,MAAKkW,GAAOL,YAAY7V,MAAKmW,IAC7BnW,MAAKkW,GAAOL,YAAY7V,MAAKoW,GAC/B,CAKA,GAAAa,GACEjX,MAAKiW,IAAWvS,SAChB1D,MAAKkW,IAAQxS,SACb1D,MAAKiW,GAAY,KACjBjW,MAAKkW,GAAS,KACdlW,MAAKmW,GAAe,KACpBnW,MAAKoW,GAAa,IACpB,CAKA,GAAAS,GAEE7W,MAAKmW,IAAc9K,iBAAiB,QAAS,KAC3CrL,MAAK6F,EAAcX,KAAK,aAASjC,GACjCjD,KAAKgX,SAIPhX,MAAKiW,IAAW5K,iBAAiB,QAAS,KACxCrL,MAAK6F,EAAcX,KAAK,qBAAiBjC,GACzCjD,KAAKgX,SAIPhX,MAAKwW,GAAsBxW,MAAKwX,GAAeC,KAAKzX,MACpD6U,SAASxJ,iBAAiB,UAAWrL,MAAKwW,GAC5C,CAKA,GAAAgB,CAAe/S,GACb,GAAKzE,MAAKqW,GAEV,OAAQ5R,EAAM3B,KACZ,IAAK,SACH2B,EAAMiT,iBACN1X,MAAK6F,EAAcX,KAAK,aAASjC,GACjCjD,KAAKgX,OACL,MAEF,IAAK,MACHvS,EAAMiT,iBACN1X,MAAK2X,GAAclT,EAAMmT,UAG/B,CAKA,GAAAD,CAAcC,GACZ,GAAuC,IAAnC5X,MAAKuW,GAAmBrS,OAAc,OAE1C,MAAM2T,EAAe7X,MAAKuW,GAAmBrM,UAAW4N,GAAOA,IAAOjD,SAAS4B,eAE/E,IAAIsB,EAGFA,EAFEH,EAEUC,GAAgB,EAAI7X,MAAKuW,GAAmBrS,OAAS,EAAI2T,EAAe,EAGxEA,GAAgB7X,MAAKuW,GAAmBrS,OAAS,EAAI,EAAI2T,EAAe,EAGtF7X,MAAKuW,GAAmBwB,IAAYZ,OACtC,CAKA,GAAAL,GACE,IAAK9W,MAAKkW,GAAQ,OAElB,MAAM8B,EAAqB,CACzB,yBACA,UACA,wBACA,yBACA,2BACA,mCACAvC,KAAK,MAEPzV,MAAKuW,GAAqB7P,MAAMuR,KAC9BjY,MAAKkW,GAAOgC,iBAA8BF,GAE9C,CAKA,GAAAjB,GACM/W,MAAKuW,GAAmBrS,OAAS,GACnClE,MAAKuW,GAAmB,IAAIY,OAEhC,CAKA,OAAA3L,GACMxL,MAAKwW,IACP3B,SAASvJ,oBAAoB,UAAWtL,MAAKwW,IAE/CxW,MAAK6F,EAAcR,qBACnBrF,KAAKgX,MACP,QC5QWmB,EACXtS,GACA+G,IAAuB,KACvBwL,IAAoC,KAEpC,WAAAnW,GACEjC,MAAK6F,EAAgB,IAAIvB,CAC3B,CAKA,MAAA+T,CAAOzL,GACL5M,MAAK4M,GAASA,EAGd5M,MAAKoY,GAAavD,SAASG,cAAc,OACzChV,MAAKoY,GAAWrC,UAAYD,EAAI,cAGhC,MAAMwC,EAActY,MAAKuY,GAAmB3L,EAAMoG,SAAUpG,EAAMgG,OAClE5S,MAAKoY,GAAWvC,YAAYyC,GAG5B,MAAME,EAAUxY,MAAKyY,GAAe7L,GACpC5M,MAAKoY,GAAWvC,YAAY2C,GAG5B,MAAME,EAAS1Y,MAAK2Y,GAAc/L,GAGlC,OAFA5M,MAAKoY,GAAWvC,YAAY6C,GAErB1Y,MAAKoY,EACd,CAKA,EAAA5T,CACEC,EACAC,GAEA,OAAO1E,MAAK6F,EAAcrB,GAAGC,EAAOC,EACtC,CAKA,GAAA6T,CAAmBvF,EAAmBJ,GACpC,MAAMgG,EAAS/D,SAASG,cAAc,OACtC4D,EAAO7C,UAAYD,EAAI,gBAEvB,MAAM+C,EAAMhE,SAASG,cAAc,OACnC6D,EAAI9C,UAAYD,EAAI,sBACpB+C,EAAIC,IAAMlG,GAAS,cAEfI,GACF6F,EAAIE,IAAM/F,EAGN6F,EAAIG,SACNH,EAAIlC,UAAU5R,IAAI+Q,EAAI,WAEtB+C,EAAII,OAAS,KACXJ,EAAIlC,UAAU5R,IAAI+Q,EAAI,YAI1B+C,EAAIK,QAAU,KACZtZ,EAAOU,KAAK,8CACZuY,EAAIE,IAAM/Y,MAAKmZ,KACfN,EAAIlC,UAAU5R,IAAI+Q,EAAI,cAGxB+C,EAAIE,IAAM/Y,MAAKmZ,KACfN,EAAIlC,UAAU5R,IAAI+Q,EAAI,YAGxB8C,EAAO/C,YAAYgD,GAGnB,MAAMO,EAAavE,SAASG,cAAc,UAgB1C,OAfAoE,EAAWrD,UAAYD,EAAI,sBAC3BsD,EAAW7B,aAAa,aAAc,oBACtC6B,EAAW9B,UAAY,6QAKvB8B,EAAW/N,iBAAiB,QAAUgO,IACpCA,EAAEC,kBAEF1Z,EAAOM,MAAM,gCAAiC,CAAE0S,YAGlDgG,EAAO/C,YAAYuD,GAEZR,CACT,CAKA,GAAAO,GASE,MAAO,6BAA6BI,KARxB,+UASd,CAKA,GAAAd,CAAe7L,GACb,MAAM4L,EAAU3D,SAASG,cAAc,OACvCwD,EAAQzC,UAAYD,EAAI,iBAGxB,MAAM0D,EAAU3E,SAASG,cAAc,MACvCwE,EAAQzD,UAAYD,EAAI,yBACxB0D,EAAQvE,YAAc,gBAGtB,MAAMwE,EAAO5E,SAASG,cAAc,MAIpC,GAHAyE,EAAK1D,UAAYD,EAAI,sBAGjBlJ,EAAM4G,cAAgB5G,EAAM4G,aAAatP,OAAS,EACpD0I,EAAM4G,aAAapP,QAASsV,IAC1B,MAAMC,EAAK9E,SAASG,cAAc,MAClC2E,EAAG1E,YAAcyE,EAAY3G,UAAY2G,EAAY9G,MACrD6G,EAAK5D,YAAY8D,UAEd,GAAI/M,EAAMiG,YAAa,CAE5B,MAAM8G,EAAK9E,SAASG,cAAc,MAClC2E,EAAG1E,YAAcrI,EAAMiG,YACvB4G,EAAK5D,YAAY8D,EACnB,CAKA,OAHAnB,EAAQ3C,YAAY2D,GACpBhB,EAAQ3C,YAAY4D,GAEbjB,CACT,CAKA,GAAAG,CAAc/L,GACZ,MAAM8L,EAAS7D,SAASG,cAAc,OACtC0D,EAAO3C,UAAYD,EAAI,gBAGvB,MAAM8D,EAAe/E,SAASG,cAAc,OAI5C,GAHA4E,EAAa7D,UAAYD,EAAI,kBAGzBlJ,EAAM2G,QAAS,CACjB,MAAMsG,EAAOhF,SAASG,cAAc,OACpC6E,EAAK9D,UAAYD,EAAI,cACrB+D,EAAKd,IAAMnM,EAAM2G,QACjBsG,EAAKf,IAAM,GAAGlM,EAAM0G,cAAgB,kBAGhCuG,EAAKb,SACPa,EAAKlD,UAAU5R,IAAI+Q,EAAI,WAEvB+D,EAAKZ,OAAS,KACZY,EAAKlD,UAAU5R,IAAI+Q,EAAI,YAI3B+D,EAAKX,QAAU,KACbtZ,EAAOU,KAAK,+BAAgC,CAAEgT,aAAc1G,EAAM0G,eAClEuG,EAAKC,MAAMC,QAAU,QAGvBH,EAAa/D,YAAYgE,EAC3B,CAGA,MAAMG,EAAWnF,SAASG,cAAc,OAGxC,GAFAgF,EAASjE,UAAYD,EAAI,uBAErBlJ,EAAM0G,aAAc,CACtB,MAAM/P,EAAOsR,SAASG,cAAc,OACpCzR,EAAKwS,UAAYD,EAAI,uBACrBvS,EAAK0R,YAAcrI,EAAM0G,aACzB0G,EAASnE,YAAYtS,EACvB,CAEA,GAAIqJ,EAAMkG,kBAAmB,CAC3B,MAAMmH,EAAOpF,SAASG,cAAc,OACpCiF,EAAKlE,UAAYD,EAAI,uBACrBmE,EAAKhF,YAAcrI,EAAMkG,kBACzBkH,EAASnE,YAAYoE,EACvB,CAEAL,EAAa/D,YAAYmE,GAGzB,MAAME,EAAcrF,SAASG,cAAc,UAc3C,OAbAkF,EAAYnE,UAAY,GAAGD,EAAI,aAAaA,EAAI,kBAChDoE,EAAYjF,YAAcrI,EAAMsG,SAAW,QAC3CgH,EAAY3C,aAAa,aAAc,gBAAgB3K,EAAMgG,OAAS,WAEtEsH,EAAY7O,iBAAiB,QAAS,KAChCrL,MAAK4M,IACP5M,MAAK6F,EAAcX,KAAK,QAAS,CAAE0H,MAAO5M,MAAK4M,OAInD8L,EAAO7C,YAAY+D,GACnBlB,EAAO7C,YAAYqE,GAEZxB,CACT,CAKA,OAAAlN,GACExL,MAAK6F,EAAcR,qBACnBrF,MAAKoY,GAAa,KAClBpY,MAAK4M,GAAS,IAChB,QCnOWuN,EACXtU,GACAuG,IACAyL,IAAgB,EAChBO,IAAoC,KACpCgC,IAAyC,KACzCC,IAA8C,KAC9CC,IAA2B,GAC3BC,IAA0C,KAC1CC,IAAiE,KAEjE,WAAAvY,CAAYmK,GAIV,GAHApM,MAAK6F,EAAgB,IAAIvB,EACzBtE,MAAKoM,GAAUA,EAEO,IAAlBA,EAAOlI,OACT,MAAM,IAAIZ,MAAM,6CAIlBtD,MAAKya,IACP,CAKA,MAAApC,GACErY,MAAKoY,GAAavD,SAASG,cAAc,OACzChV,MAAKoY,GAAWrC,UAAYD,EAAI,YAGhC9V,MAAKua,GAAmB1F,SAASG,cAAc,OAC/ChV,MAAKua,GAAiBhD,aAAa,OAAQ,UAC3CvX,MAAKua,GAAiBhD,aAAa,YAAa,UAChDvX,MAAKua,GAAiBhD,aAAa,cAAe,QAClDvX,MAAKua,GAAiBxE,UAAY,UAClC/V,MAAKua,GAAiBT,MAAMY,SAAW,WACvC1a,MAAKua,GAAiBT,MAAMa,MAAQ,MACpC3a,MAAKua,GAAiBT,MAAMc,OAAS,MACrC5a,MAAKua,GAAiBT,MAAMe,QAAU,IACtC7a,MAAKua,GAAiBT,MAAMgB,OAAS,OACrC9a,MAAKua,GAAiBT,MAAMiB,SAAW,SACvC/a,MAAKua,GAAiBT,MAAMkB,KAAO,mBACnChb,MAAKua,GAAiBT,MAAMmB,WAAa,SACzCjb,MAAKua,GAAiBT,MAAMoB,OAAS,IAGrC,MAAMC,EAASnb,MAAKob,KAWpB,GAVApb,MAAKoY,GAAWvC,YAAYsF,GAG5Bnb,MAAKoa,GAAkBvF,SAASG,cAAc,OAC9ChV,MAAKoa,GAAgBrE,UAAYD,EAAI,kBAErC9V,MAAKoY,GAAWvC,YAAY7V,MAAKua,IACjCva,MAAKoY,GAAWvC,YAAY7V,MAAKoa,IAG7Bpa,MAAKoM,GAAQlI,OAAS,EAAG,CAC3B,MAAMmX,EAAarb,MAAKsb,KACxBtb,MAAKoY,GAAWvC,YAAYwF,EAC9B,CAWA,OARArb,MAAKub,KAGLvb,MAAKwb,KAGLxb,MAAKyb,GAAe,GAAG,GAEhBzb,MAAKoY,EACd,CAKA,EAAA5T,CACEC,EACAC,GAEA,OAAO1E,MAAK6F,EAAcrB,GAAGC,EAAOC,EACtC,CAKA,eAAAgX,GACE,OAAO1b,MAAK6X,EACd,CAKA,cAAA8D,GACE,OAAO3b,MAAKoM,GAAQlI,MACtB,CAKA,IAAA0X,GACM5b,MAAK6X,GAAgB7X,MAAKoM,GAAQlI,OAAS,IAC7ClE,MAAK6X,KACL7X,MAAKyb,GAAezb,MAAK6X,IACzB7X,MAAK6b,KACL7b,MAAK8b,GAAU,iBAAiB9b,MAAK6X,GAAgB,QAAQ7X,MAAKoM,GAAQlI,UAC1EtE,EAAOM,MAAM,sBAAsBF,MAAK6X,GAAgB,KAE5D,CAKA,QAAAkE,GACM/b,MAAK6X,GAAgB,IACvB7X,MAAK6X,KACL7X,MAAKyb,GAAezb,MAAK6X,IACzB7X,MAAK6b,KACL7b,MAAK8b,GAAU,iBAAiB9b,MAAK6X,GAAgB,QAAQ7X,MAAKoM,GAAQlI,UAC1EtE,EAAOM,MAAM,sBAAsBF,MAAK6X,GAAgB,KAE5D,CAKA,GAAA0D,GACE,IAAKvb,MAAKoa,GAAiB,OAE3B,MAAMhC,EAAYpY,MAAKoa,GAEvBpa,MAAKoM,GAAQhI,QAAQ,CAACwI,EAAO3C,KAE3B,MAAM+R,EAAO,IAAI7D,EACX8D,EAAcD,EAAK3D,OAAOzL,GAG1BsP,EAAcrH,SAASG,cAAc,OAC3CkH,EAAYnG,UAAYD,EAAI,iBAC5BoG,EAAY3E,aAAa,aAActN,EAAMkS,YAC7CD,EAAYrG,YAAYoG,GAGxBD,EAAKxX,GAAG,QAAS,KACfxE,MAAK6F,EAAcX,KAAK,aAAc,CACpC0H,QACA3C,YAIJjK,MAAKsa,GAAYnW,KAAK6X,GACtB5D,EAAUvC,YAAYqG,KAIxBtF,sBAAsB,KACpBwB,EAAUzB,UAAU5R,IAAI+Q,EAAI,iBAEhC,CAKA,GAAA2F,CAAexR,EAAemS,GAAS,GACrC,IAAKpc,MAAKoa,GAAiB,OAE3B,MAAMiC,EAAQrc,MAAKoa,GAAgBlC,iBAAiB,IAAIpC,EAAI,oBACtDwG,EAAaD,EAAMpS,GAEzB,GAAIqS,EAAY,CACdA,EAAWC,eAAe,CACxBC,SAAUJ,EAAS,SAAW,OAC9BK,MAAO,UACPC,OAAQ,WAIVL,EAAMjY,QAAQ,CAACkE,EAAMrE,KACfA,IAAMgG,EACR3B,EAAKqO,UAAU5R,IAAI+Q,EAAI,WAEvBxN,EAAKqO,UAAUjT,OAAOoS,EAAI,aAK9B,MAAMlJ,EAAQ5M,MAAKoM,GAAQnC,GACvB2C,GACF5M,MAAK6F,EAAcX,KAAK,YAAa,CACnC0H,QACA3C,SAGN,CACF,CAKA,GAAAmR,GACE,MAAMD,EAAStG,SAASG,cAAc,OACtCmG,EAAOpF,UAAYD,EAAI,mBAEvB,MAAMlD,EAAQiC,SAASG,cAAc,MACrCpC,EAAMmD,UAAYD,EAAI,kBACtBlD,EAAMnG,GAAKqJ,EAAI,eACflD,EAAMqC,YAAc,kDAEpB,MAAMlC,EAAW8B,SAASG,cAAc,KAQxC,OAPAjC,EAASgD,UAAYD,EAAI,qBACzB/C,EAASkC,YACP,0FAEFkG,EAAOtF,YAAYjD,GACnBuI,EAAOtF,YAAY9C,GAEZoI,CACT,CAKA,GAAAG,GACE,MAAMD,EAAaxG,SAASG,cAAc,OAC1CqG,EAAWtF,UAAYD,EAAI,uBAG3B,MAAM6G,EAAa9H,SAASG,cAAc,UAC1C2H,EAAW5G,UAAYD,EAAI,cAC3B6G,EAAWpF,aAAa,aAAc,kBACtCoF,EAAWrF,UAAY,mPAKvBqF,EAAWtR,iBAAiB,QAAS,IAAMrL,KAAK+b,YAGhD,MAAMa,EAAa/H,SAASG,cAAc,UAiB1C,OAhBA4H,EAAW7G,UAAYD,EAAI,cAC3B8G,EAAWrF,aAAa,aAAc,cACtCqF,EAAWtF,UAAY,oPAKvBsF,EAAWvR,iBAAiB,QAAS,IAAMrL,KAAK4b,QAEhDP,EAAWxF,YAAY8G,GACvBtB,EAAWxF,YAAY+G,GAGvB5c,MAAKqa,GAAuBgB,EAC5Brb,MAAK6b,GAAyBc,EAAYC,GAEnCvB,CACT,CAKA,GAAAQ,CAAyBc,EAAgCC,GACvD,IAAK5c,MAAKqa,GAAsB,OAEhC,MAAMwC,EAAU7c,MAAKqa,GAAqBnC,iBAAiB,IAAIpC,EAAI,iBAC7DgH,EAAOH,GAAeE,EAAQ,GAC9BjB,EAAOgB,GAAeC,EAAQ,GAEhCC,IACFA,EAAKC,SAAkC,IAAvB/c,MAAK6X,GACrBiF,EAAKnG,UAAUqG,OAAOlH,EAAI,YAAoC,IAAvB9V,MAAK6X,KAG1C+D,IACFA,EAAKmB,SAAW/c,MAAK6X,KAAkB7X,MAAKoM,GAAQlI,OAAS,EAC7D0X,EAAKjF,UAAUqG,OAAOlH,EAAI,YAAa9V,MAAK6X,KAAkB7X,MAAKoM,GAAQlI,OAAS,GAExF,CAKA,GAAAsX,GACExb,MAAKwa,GAAwBxa,MAAKid,GAAiBxF,KAAKzX,MACxD6U,SAASxJ,iBAAiB,UAAWrL,MAAKwa,GAC5C,CAKA,GAAAyC,CAAiBxY,GACf,GAAKzE,MAAKoY,GAEV,OAAQ3T,EAAM3B,KACZ,IAAK,YACH2B,EAAMiT,iBACN1X,KAAK+b,WACL,MAEF,IAAK,aACHtX,EAAMiT,iBACN1X,KAAK4b,OAGX,CAKA,GAAAE,CAAUvM,GACJvP,MAAKua,KACPva,MAAKua,GAAiBtF,YAAc1F,EAExC,CAKA,GAAAkL,GACEza,MAAKoM,GAAQhI,QAASwI,IAEhBA,EAAMoG,YACI,IAAIkK,OACZnE,IAAMnM,EAAMoG,SAChBpT,EAAOM,MAAM,yBAA0B,CAAEid,QAASvQ,EAAMH,GAAI2D,IAAKxD,EAAMoG,YAIrEpG,EAAM2G,WACK,IAAI2J,OACZnE,IAAMnM,EAAM2G,QACjB3T,EAAOM,MAAM,2BAA4B,CAAEid,QAASvQ,EAAMH,GAAI2D,IAAKxD,EAAM2G,YAG/E,CAKA,OAAA/H,GACMxL,MAAKwa,IACP3F,SAASvJ,oBAAoB,UAAWtL,MAAKwa,IAG/Cxa,MAAKsa,GAAYlW,QAAS4X,GAASA,EAAKxQ,WACxCxL,MAAKsa,GAAc,GACnBta,MAAK6F,EAAcR,qBACnBrF,MAAKoY,GAAa,KAClBpY,MAAKoa,GAAkB,KACvBpa,MAAKqa,GAAuB,KAC5Bra,MAAKua,GAAmB,IAC1B,EC1WF,MAAMzE,EAAOvS,GAAiB,kBAAkBA,UAcnC6Z,EACXhF,IAAiC,KACjCvS,GACAnF,GACA2c,IAAqC,KAErC,WAAApb,CAAYvB,GACVV,MAAKU,EAAUA,EACfV,MAAK6F,EAAgB,IAAIvB,CAC3B,CAKA,MAAA+T,GACErY,MAAKoY,GAAavD,SAASG,cAAc,OACzChV,MAAKoY,GAAWrC,UAAYD,EAAI,aAGhC,MAAMwH,EAAOzI,SAASG,cAAc,OACpCsI,EAAKvH,UAAYD,EAAI,QACrBwH,EAAKhG,UAAY,IAGjB,MAAM1E,EAAQiC,SAASG,cAAc,MACrCpC,EAAMmD,UAAYD,EAAI,SACtBlD,EAAMqC,YAAcjV,MAAKU,EAAQ6c,WAAa,WAG9C,MAAMxK,EAAW8B,SAASG,cAAc,KACxCjC,EAASgD,UAAYD,EAAI,YACzB/C,EAASkC,YACPjV,MAAKU,EAAQ8c,cAAgBxd,MAAKyd,GAAoBzd,MAAKU,EAAQgH,aAGrE,MAAM8Q,EAAU3D,SAASG,cAAc,OACvCwD,EAAQzC,UAAYD,EAAI,WACxB0C,EAAQlB,UAAYtX,MAAK0d,GAA0B1d,MAAKU,EAAQgH,aAGhE,MAAMiW,EAAS9I,SAASG,cAAc,UAmBtC,OAlBA2I,EAAO5H,UAAYD,EAAI,UACvB6H,EAAO1I,YAAcjV,MAAKU,EAAQkd,YAAc,WAChDD,EAAOpG,aAAa,OAAQ,UAC5BoG,EAAOtS,iBAAiB,QAAS,IAAMrL,MAAK6d,MAG5C7d,MAAKoY,GAAWvC,YAAYyH,GAC5Btd,MAAKoY,GAAWvC,YAAYjD,GAC5B5S,MAAKoY,GAAWvC,YAAY9C,GAC5B/S,MAAKoY,GAAWvC,YAAY2C,GAC5BxY,MAAKoY,GAAWvC,YAAY8H,GAGxB3d,MAAKU,EAAQod,eAAiB9d,MAAKU,EAAQod,cAAgB,GAC7D9d,MAAK+d,GAAkB/d,MAAKU,EAAQod,eAGtCle,EAAOM,MAAM,2BACNF,MAAKoY,EACd,CAKA,EAAA5T,CACEC,EACAC,GAEA,OAAO1E,MAAK6F,EAAcrB,GAAGC,EAAOC,EACtC,CAKA,OAAA8G,GACmC,OAA7BxL,MAAKqd,KACPnP,aAAalO,MAAKqd,IAClBrd,MAAKqd,GAAsB,MAGzBrd,MAAKoY,KACPpY,MAAKoY,GAAW1U,SAChB1D,MAAKoY,GAAa,MAGpBpY,MAAK6F,EAAcR,qBACnBzF,EAAOM,MAAM,2BACf,CAKA,GAAA2d,GACEje,EAAOM,MAAM,2CACbF,MAAK6F,EAAcX,KAAK,gBAAYjC,EACtC,CAKA,GAAA8a,CAAkBtS,GAChBzL,MAAKqd,GAAsBjS,OAAOQ,WAAW,KAC3ChM,EAAOM,MAAM,kCACbF,MAAK6F,EAAcX,KAAK,gBAAYjC,IACnCwI,EACL,CAKA,GAAAgS,CAAoB/V,GAClB,OAAQA,EAAYrF,MAClB,IAAK,YACH,MAAO,qBAAqBqF,EAAY1E,OAAS,MAAM0E,EAAY2L,MAAQ,oBAC7E,IAAK,WACH,MAAO,qBAAqB3L,EAAY1E,OAAS,KAA0B,YAArB0E,EAAY2L,KAAqB,IAAM,eAC/F,IAAK,SACH,MAAO,kBAAkB3L,EAAY1E,OAAS,kBAChD,QACE,MAAO,mCAEb,CAKA,GAAA0a,CAA0BhW,GACxB,MAAM8Q,EAAoB,GAE1B,GAAyB,cAArB9Q,EAAYrF,KACdmW,EAAQrU,KAAK,eAAe2R,EAAI,qCACfA,EAAI,uDACJA,EAAI,oDAGjBpO,EAAY1E,OAAS0E,EAAY2L,MACnCmF,EAAQrU,KAAK,eAAe2R,EAAI,uCACfA,EAAI,6DACJA,EAAI,oBAAoBpO,EAAY1E,SAAS0E,EAAY2L,oCAGvE,GAAyB,aAArB3L,EAAYrF,MAMrB,GALAmW,EAAQrU,KAAK,eAAe2R,EAAI,qCACfA,EAAI,uDACJA,EAAI,kDAGjBpO,EAAY1E,OAAS0E,EAAY2L,KAAM,CACzC,MAAM2K,EACiB,YAArBtW,EAAY2L,KAAqB,GAAG3L,EAAY1E,SAAW,IAAI0E,EAAY1E,QAC7EwV,EAAQrU,KAAK,eAAe2R,EAAI,uCACfA,EAAI,2DACJA,EAAI,oBAAoBkI,2BAE3C,MAC8B,WAArBtW,EAAYrF,OACrBmW,EAAQrU,KAAK,eAAe2R,EAAI,qCACfA,EAAI,uDACJA,EAAI,gDAGjBpO,EAAY1E,OACdwV,EAAQrU,KAAK,eAAe2R,EAAI,uCACfA,EAAI,2DACJA,EAAI,sBAAsBpO,EAAY1E,iCAK3D,OAAOwV,EAAQ/C,KAAK,GACtB,QCzLWwI,EACXC,IAAuC,KACvCC,IAA4C,KAC5C3W,KAAY,EAKZ,KAAA4W,CAAMjT,GACAnL,MAAKwH,GACP5H,EAAOU,KAAK,iCAIdN,MAAKke,GAAiB,KACpBte,EAAOM,MAAM,kBACbiL,KAGFnL,MAAKme,GAAsB,KACQ,YAA7BtJ,SAASwJ,kBACXze,EAAOM,MAAM,2BACbiL,MAKJC,OAAOC,iBAAiB,QAASrL,MAAKke,IACtCrJ,SAASxJ,iBAAiB,mBAAoBrL,MAAKme,IAEnDne,MAAKwH,IAAY,EACjB5H,EAAOM,MAAM,yBACf,CAKA,IAAA+N,GACOjO,MAAKwH,KAINxH,MAAKke,KACP9S,OAAOE,oBAAoB,QAAStL,MAAKke,IACzCle,MAAKke,GAAiB,MAGpBle,MAAKme,KACPtJ,SAASvJ,oBAAoB,mBAAoBtL,MAAKme,IACtDne,MAAKme,GAAsB,MAG7Bne,MAAKwH,IAAY,EACjB5H,EAAOM,MAAM,yBACf,CAKA,QAAAsH,GACE,OAAOxH,MAAKwH,EACd,WC7Dc8W,IAEd,MAAsB,oBAAXC,QAA0BA,OAAOC,WACnCD,OAAOC,aAQT,uCAAuC3O,QAAQ,QAAU4O,IAC9D,MAAMC,EAA0D,IAArDH,OAAOI,gBAAgB,IAAIC,WAAW,IAAI,IAAM,GAE3D,OADgB,MAANH,EAAYC,EAAS,EAAJA,EAAW,GAC7BvC,SAAS,KAEtB,CCWA,MAAM0C,EAAc,QACdC,EAAc,UACdC,EAAsB,kBA0wBfC,EAAS,UAvwBpBC,IACA3c,GACAoD,GAA+B,KAC/BwZ,IAAiD,KACjDC,IAAuC,KACvCC,IAAqC,KACrCC,IAAuC,KACvCpe,GAAyB,KACzBiL,IAAkC,CAAA,EAClCoT,KAA4B,EAC5BC,KAAkB,EAElB,WAAAtd,GACEjC,MAAKif,GAAiB,IAAIxe,EAC1BT,MAAKsC,EAAW,IAAIR,CACtB,CASA,SAAAlB,CAAUF,GAGR,GAFgBV,MAAKif,GAAere,UAAUF,GAEjC,CAEXV,MAAKwf,KAGL,MAAMte,EAAUlB,MAAKif,GAAexd,aAChCP,IACFlB,MAAK0F,EAAa,IAAIqK,EAAU/P,MAAKif,GAAezd,aAAe,GAAIN,GAGnElB,MAAKiB,IACPjB,MAAKkf,GAAsB,IAAIzZ,EAC7BzF,MAAKsC,EACLtC,MAAK0F,EACL1F,MAAKiB,GAGPjB,MAAKmf,GAAiB,IAAIlW,EAAcjJ,MAAKsC,EAAUtC,MAAK0F,EAAY1F,MAAKiB,GAE7EjB,MAAKof,GAAgB,IAAIvT,EAAa7L,MAAK0F,EAAY1F,MAAKiB,IAI9DjB,MAAKqf,GAAiB,IAAIpB,GAG5Bre,EAAOS,KAAK,sCAAuC,CAAEof,QAASZ,GAChE,CACF,CAKA,GAAAW,GACE,MAAME,EAAe1f,MAAKsC,EAASkB,IAAYsb,GAE3CY,GACF1f,MAAKiB,EAAUye,EACf9f,EAAOM,MAAM,2BAA4Bwf,KAEzC1f,MAAKiB,EAAUqd,IACfte,MAAKsC,EAASS,IAAI+b,EAAa9e,MAAKiB,GACpCrB,EAAOM,MAAM,yBAA0BF,MAAKiB,IAI9C,MAAM0e,EAAmB3f,MAAKsC,EAASkB,IAAoBub,GACvDY,IACF3f,MAAKkM,GAAkByT,EACvB/f,EAAOM,MAAM,0BAEjB,CAKA,GAAA0f,GACE,QAAK5f,MAAKif,GAAete,iBACvBf,EAAOW,MAAM,uDACN,EAGX,CASA,QAAAsf,CAAS5e,EAAgBsR,GACvB,IAAKvS,MAAK4f,KAAqB,OAE/B,IAAK3e,GAA4B,iBAAXA,EAEpB,YADArB,EAAOW,MAAM,8CAIf,MAAMuf,EAAiB9f,MAAKiB,EAC5BjB,MAAKiB,EAAUA,EACfjB,MAAKsC,EAASS,IAAI+b,EAAa7d,GAG3BsR,GACFvS,KAAK+f,kBAAkBxN,GAGrBuN,IAAmB7e,IACrBrB,EAAOS,KAAK,mBAAoBY,GAE5BjB,MAAKkf,IACPlf,MAAKkf,GAAoBlZ,UAAU/E,GAEjCjB,MAAKmf,IACPnf,MAAKmf,GAAenZ,UAAU/E,GAE5BjB,MAAKof,IACPpf,MAAKof,GAAcpZ,UAAU/E,GAGnC,CAKA,gBAAA+e,GACE,OAAOhgB,MAAKiB,CACd,CAKA,KAAAW,GACO5B,MAAK4f,OAEVhgB,EAAOS,KAAK,iBAGZL,MAAKsC,EAASuB,QAGd7D,MAAKiB,EAAUqd,IACfte,MAAKsC,EAASS,IAAI+b,EAAa9e,MAAKiB,GAGpCjB,MAAKkM,GAAkB,CAAA,EAGnBlM,MAAKkf,KACPlf,MAAKkf,GAAoB7W,aAErBrI,MAAK0F,GAAc1F,MAAKiB,IAC1BjB,MAAKkf,GAAsB,IAAIzZ,EAC7BzF,MAAKsC,EACLtC,MAAK0F,EACL1F,MAAKiB,KAMPjB,MAAKmf,KACPnf,MAAKmf,GAAe7U,aACpBtK,MAAKmf,GAAe3T,UAEhBxL,MAAK0F,GAAc1F,MAAKiB,IAC1BjB,MAAKmf,GAAiB,IAAIlW,EAAcjJ,MAAKsC,EAAUtC,MAAK0F,EAAY1F,MAAKiB,KAK7EjB,MAAKof,KACPpf,MAAKof,GAAc/W,aAEfrI,MAAK0F,GAAc1F,MAAKiB,IAC1BjB,MAAKof,GAAgB,IAAIvT,EAAa7L,MAAK0F,EAAY1F,MAAKiB,KAK5DjB,MAAKqf,IAAgB7X,YACvBxH,MAAKqf,GAAepR,OAGtBrO,EAAOM,MAAM,qBAAsB,CAAE+f,UAAWjgB,MAAKiB,IACvD,CASA,UAAAif,GACE,OAAOrB,CACT,CAKA,WAAA/e,CAAYC,GACVH,EAAOE,YAAYC,EACrB,CASA,iBAAAggB,CAAkBxN,GACXvS,MAAK4f,OAELrN,GAAoC,iBAAfA,GAM1BvS,MAAKkM,GAAkB,IAClBlM,MAAKkM,MACLqG,EAEH4N,OAAQ,IACHngB,MAAKkM,GAAgBiU,UACrB5N,EAAW4N,SAKlBngB,MAAKsC,EAASS,IAAIgc,EAAqB/e,MAAKkM,IAC5CtM,EAAOM,MAAM,0BAA2BF,MAAKkM,KAjB3CtM,EAAOW,MAAM,8DAkBjB,CAKA,iBAAA6f,GACE,MAAO,IAAKpgB,MAAKkM,GACnB,CAMA,kBAAMmU,CAAavS,GAEjB,IAAK9N,MAAK4f,KAAqB,CAC7B,MAAMU,EAAwC,CAC5Cje,KAAM,QACN9B,MAAO,CAAE8O,KAAM3P,EAAU6gB,qBAAsBhR,QAAS,uBAU1D,OAPIzB,GAASgB,cACXhB,EAAQgB,aAAawR,GAEnBxS,GAAS0S,SACX1S,EAAQ0S,QAAQ,CAAEnR,KAAM3P,EAAU6gB,qBAAsBhR,QAAS,uBAG5D,CAAEL,SAAS,EAAOC,OAAQmR,EACnC,CAGA,GAAItgB,MAAKsf,GAA2B,CAClC1f,EAAOU,KAAK,oCACZ,MAAMmgB,EAA4C,CAChDpe,KAAM,QACN9B,MAAO,CAAE8O,KAAM3P,EAAU4P,cAAeC,QAAS,qCAOnD,OAJIzB,GAASgB,cACXhB,EAAQgB,aAAa2R,GAGhB,CAAEvR,SAAS,EAAOC,OAAQsR,EACnC,CAEAzgB,MAAKsf,IAA4B,EAEjC,IAEE,MAAMrQ,QAAejP,MAAK0gB,GAAyB5S,GASnD,OANImB,EAAOC,SAAWD,EAAOvH,aAAeoG,GAASe,UACnDf,EAAQe,UAAUI,EAAOvH,cACfuH,EAAOC,SAAWD,EAAOE,QAAUrB,GAASgB,cACtDhB,EAAQgB,aAAaG,EAAOE,QAGvBF,CACT,CAAE,MAAO1O,GACPX,EAAOW,MAAM,4BAA6BA,GAE1C,MAAM6O,EAAgC,CACpC/M,KAAM,QACN9B,MAAO,CACL8O,KAAM3P,EAAU4P,cAChBC,QAAShP,aAAiB+C,MAAQ/C,EAAMgP,QAAU,kBAWtD,OAPIzB,GAAS0S,SAAkC,iBAAhBpR,GAAiD,UAArBA,EAAY/M,MACrEyL,EAAQ0S,QAAQpR,EAAY7O,OAE1BuN,GAASgB,cACXhB,EAAQgB,aAAaM,GAGhB,CAAEF,SAAS,EAAOC,OAAQC,EACnC,SACEpP,MAAKsf,IAA4B,CACnC,CACF,CAKA,QAAA9X,CAASE,EAA8BR,GACrC,QAAKlH,MAAK4f,OAEL5f,MAAKkf,GAKHlf,MAAKkf,GAAoB1X,SAASE,EAAaR,IAJpDtH,EAAOW,MAAM,uCACN,GAIX,CAKA,yBAAMsI,GACC7I,MAAK4f,OAEL5f,MAAKkf,SAKJlf,MAAKkf,GAAoBrW,sBAJ7BjJ,EAAOW,MAAM,sCAKjB,CAKA,QAAAogB,CAASC,EAAiC5Y,GACnChI,MAAK4f,OAEL5f,MAAKmf,GAKLnX,GAA0C,iBAAlBA,EAMxBhI,MAAKmf,GAAe5U,gBAAgBvC,EAAe4Y,GALtDhhB,EAAOW,MAAM,8CALbX,EAAOW,MAAM,iCAWjB,CAMA,yBAAMsgB,CAAoB7Y,EAAuBwF,GAC/C,IAAKxN,MAAK4f,KAER,OADAhgB,EAAOW,MAAM,sBACN,SAGT,IAAKP,MAAK0F,EAER,OADA9F,EAAOW,MAAM,8BACN,SAGT,IAAKyH,EAEH,OADApI,EAAOW,MAAM,mDACN,SAGT,IACEX,EAAOM,MAAM,6BAA8B,CAAE8H,gBAAewF,YAE5D,MAAMsT,EAA6D,CACjE9Y,sBAEc/E,IAAZuK,IACFsT,EAActT,QAAUA,GAG1B,MAAMuT,EAAS,IAAIxT,EAAmBvN,MAAK0F,EAAYob,GAEjDzS,QAAe0S,EAAOhT,OAO5B,MAJe,aAAXM,SACIrO,KAAK6I,sBAGNwF,CACT,CAAE,MAAO9N,GAEP,OADAX,EAAOW,MAAM,iCAAkC,CAAEyH,gBAAezH,UACzD,QACT,CACF,CAKA,EAAAiE,CAAGC,EAA6BC,GAE9B,OAAK1E,MAAK4f,KAEL5f,MAAKkf,GAMWlf,MAAKkf,GAAoBnZ,kBAC1BvB,GAAGC,EAAOC,IAN5B9E,EAAOW,MAAM,sCAEN,QAL6B,MAUxC,CAMA,kBAAAygB,CACEtZ,EACAR,GAuCA,MAAO,CAAE+Z,UAnCc9V,IAErB,IAAKnL,MAAK4f,KAAqB,MAAO,OAEtC,IAAK5f,MAAKkf,GAGR,OAFAtf,EAAOW,MAAM,sCAEN,OAIT,MAAM2gB,EAAelhB,MAAKkf,GAAoB1X,SAASE,EAAaR,GAIpE,OAHAiE,EAAS+V,GAGFlhB,KAAKwE,GAAG,qBAAuBC,IAEpC,MACM0c,EAAa1c,EAAMyC,MAGrB9D,KAAKC,UAJSoB,EAAM6C,mBAIUlE,KAAKC,UAAUqE,KAKnC,aAAVR,GAAuC,aAAfia,GAK5BhW,EAAS1G,EAAM+C,cAKrB,CAKA,SAAA4Z,GAEE,OAAO,IAAI5S,EAAiB6S,SACnBrhB,KAAKqgB,eAEhB,CASA,QAAMK,CAAyBY,GAE7B,IAAKthB,MAAKof,KAAkBpf,MAAK0F,EAE/B,OADA9F,EAAOW,MAAM,4BACN,CACL2O,SAAS,EACTC,OAAQ,CACN9M,KAAM,QACN9B,MAAO,CAAE8O,KAAM3P,EAAU6gB,qBAAsBhR,QAAS,8BAK9D,IAEOvP,MAAKuf,KAGR5K,EAAa,CAAA,GACb3U,MAAKuf,IAAkB,GAIzB3f,EAAOM,MAAM,mBACb,MAAMkM,OAAEA,EAAQhL,gBAAiBmgB,SAAsBvhB,MAAKof,GAAcnT,YACxEjM,MAAKkM,IAGP,GAAsB,IAAlBE,EAAOlI,OAET,OADAtE,EAAOS,KAAK,uBACL,CAAE6O,SAAS,EAAOC,OAAQ,qBAInC,MACMqS,EAAiB,IADNxhB,MAAKif,GAAetd,wBAGhC4f,GAICE,EAAgB,IAAIvf,IACpBwf,EAAoB,IAAI9c,IAC9BwH,EAAOhI,QAASwI,IACd6U,EAAc1e,IAAI6J,EAAMH,GAAI6R,OAI9B,MAAMpI,EAAQ,IAAIF,EACZ2L,EAAW,IAAIxH,EAAc/N,GAG7B6C,QAAe,IAAIvD,QAA6BC,IAEpDgW,EAASnd,GAAG,aAAeC,IACzB,MAAMmI,EAAQnI,EAAMmI,MACpBhN,EAAOM,MAAM,qBAAsB,CAAEid,QAASvQ,EAAMH,KAG/C,WACH,IACE,IAAKzM,MAAKof,GACR,MAAM,IAAI9b,MAAM,gCAIlB,MAAMqJ,EAAe8U,EAAcje,IAAIoJ,EAAMH,IACvCzE,QAAsBhI,MAAKof,GAAc9R,iBAC7CV,EAAMI,WACNJ,EAAMK,WACNN,GAIa3M,MAAK4hB,GAAmBhV,EAAMuG,gBAG3CvT,EAAOU,KAAK,kDAKdN,KAAK2gB,SAAS,cAAe3Y,SAGvBhI,KAAK6I,sBAGP7I,MAAKqf,KAAmBrf,MAAKqf,GAAe7X,YAC9CxH,MAAKqf,GAAejB,MAAM,KAEnB,WACHxe,EAAOM,MAAM,uDACPF,KAAK6I,qBACZ,EAHI,KAQT7I,MAAK6hB,GACH3L,EACAtJ,EAAMlF,YACN,KACEwO,EAAMc,OACNrL,EAAQ,CACNuD,SAAS,EACTxH,YAAakF,EAAMlF,eAGvB8Z,EAEJ,CAAE,MAAOjhB,GACPX,EAAOW,MAAM,6BAA8B,CAAE4c,QAASvQ,EAAMH,GAAIlM,UAChE2V,EAAMc,OACNrL,EAAQ,CACNuD,SAAS,EACTC,OAAQ,CACN9M,KAAM,QACN9B,MAAO,CACL8O,KAAM3P,EAAU4P,cAChBC,QAAShP,aAAiB+C,MAAQ/C,EAAMgP,QAAU,wBAI1D,CACD,EAlEI,KAsEPoS,EAASnd,GAAG,WAAaC,IAClBA,EAAMqd,UACTliB,EAAOM,MAAM,4BACbyhB,EAASnW,UACT0K,EAAMc,OACNrL,EAAQ,CAAEuD,SAAS,EAAOC,OAAQ,6BAKtC+G,EAAM1R,GAAG,QAAS,KAChB5E,EAAOM,MAAM,qBACbyhB,EAASnW,UACTG,EAAQ,CAAEuD,SAAS,EAAOC,OAAQ,sBAIpC+G,EAAM1R,GAAG,gBAAiB,KACxB5E,EAAOM,MAAM,8BACbyhB,EAASnW,UACT0K,EAAMc,OACNrL,EAAQ,CAAEuD,SAAS,EAAOC,OAAQ,yBAIpCwS,EAASnd,GAAG,YAAcC,IACxB,MAAMmI,MAAEA,GAAUnI,EAGlB,GAAIid,EAAkB/c,IAAIiI,EAAMH,IAE9B,YADA7M,EAAOM,MAAM,mDAAoD,CAAEid,QAASvQ,EAAMH,KAIpF,MAAME,EAAe8U,EAAcje,IAAIoJ,EAAMH,IACzCE,GAAgB3M,MAAKof,KACvBpf,MAAKof,GAAc1S,cAAcC,EAAcC,GAC/C8U,EAAkB3c,IAAI6H,EAAMH,OAKhCyJ,EAAMlH,OACN,MAAM+S,EAAkBJ,EAAStJ,SACjCnC,EAAMkB,WAAW2K,KAOnB,OAHA7L,EAAM1K,UACNmW,EAASnW,UAEFyD,CACT,CAAE,MAAO1O,GAEP,OADAX,EAAOW,MAAM,6BAA8BA,GACpC,CACL2O,SAAS,EACTC,OAAQ,CACN9M,KAAM,QACN9B,MAAO,CACL8O,KAAM3P,EAAU4P,cAChBC,QAAShP,aAAiB+C,MAAQ/C,EAAMgP,QAAU,kBAI1D,CACF,CAMA,GAAAqS,CAAmBxR,GACjB,IACE,MAAM4R,EAAS5W,OAAO6W,KAAK7R,EAAK,SAAU,uBAC1C,QAAI4R,IACFA,EAAO7K,SACA,EAGX,CAAE,MAAO5W,GAEP,OADAX,EAAOW,MAAM,gCAAiC,CAAE6P,MAAK7P,WAC9C,CACT,CACF,CAKA,GAAAshB,CACE3L,EACAxO,EACAwa,EACAC,GAMA,IAEE,MAAMC,EAMF,CACF1a,cACAoW,cAAe,GAGbqE,GAAUE,yBACZD,EAAc7E,UAAY4E,EAASE,wBAEjCF,GAAUG,4BACZF,EAAc5E,aAAe2E,EAASG,2BAEpCH,GAAUI,yBACZH,EAAcxE,WAAauE,EAASI,wBAItC,MAAMC,EAAgB,IAAIpF,EAAcgF,GAGxCI,EAAche,GAAG,WAAY,KAC3Bge,EAAchX,UACd0W,MAIF,MAAMO,EAAiBD,EAAcnK,SACrCnC,EAAMkB,WAAWqL,GAEjB7iB,EAAOM,MAAM,2BACf,CAAE,MAAOK,GACPX,EAAOW,MAAM,gCAAiCA,GAE9C2hB,GACF,CACF"}
|