S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5883698" at line 8, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign bCode = qstringmap["bankercod...  [in template "10153#10191#5883698" at line 8, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
5<#assign url404 = '/error/404.html'> 
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
7 
8<#assign bCode= qstringmap["bankercode"]?first> 
9<#assign bCode = htmlUtil.escape(bCode)> 
10<#assign bCode = htmlUtil.escapeJS(bCode)> 
11 
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
13<#list bData as b>      
14    <#assign lc = b.locationcode > 
15    <#assign rLC = b.reallocationcode > 
16    <#assign mappedLC = b.mappedLocationCode > 
17    
18</#list>  
19   
20<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
21    <#assign ameriprise = true> 
22<#else> 
23    <#assign ameriprise = false> 
24</#if> 
25 
26<#if mappedLC?has_content && !ameriprise> 
27    <#assign lc = mappedLC > 
28</#if> 
29<#assign isEmployee = false> 
30 
31<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
32<#if fiData?first?has_content> 
33    <#assign fi = fiData?first> 
34    <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
35        <#assign subbu_special = fi.offerId> 
36    </#if> 
37    <#if fi.projectType == "emp"> 
38        <#assign isEmployee = true> 
39    </#if> 
40</#if>  
41 
42<#if lc?has_content> 
43    <#assign prefix = "00000" > 
44    <#assign lcWithPrefix = prefix + lc> 
45    <#assign withPrefixLength = lcWithPrefix?length > 
46    <#assign startHere = withPrefixLength - 5> 
47    <#assign lc = lcWithPrefix?substring(startHere)>     
48    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
49    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
50 
51    <#assign clientProfile = clientProfileList?first> 
52    <#assign partnerName = clientProfile.getMarketingNameLong()> 
53    <#assign pbu = clientProfile.getPbu()> 
54    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>     
55    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
56    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
57    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
58    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")>             
59        <#assign partnerUrl = 'https://' + partnerUrl> 
60    </#if> 
61 
62    <!-- <#assign clientdataList = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')> 
63    <#if clientdataList?has_content > 
64        <#assign clientdata = clientdataList?first > 
65    	<#assign backgroundHexColor = clientdata["backgroundHexColor"] > 
66		<#assign backgroundImage = clientdata["backgroundImage"] > 
67		<#assign buttonHexColor = clientdata["buttonHexColor"] > 
68		<#assign AprMin = clientdata["AprMin"] > 
69		<#assign AprMax = clientdata["AprMax"] > 
70		<#assign cashAdvanceRate = clientdata["cashAdvanceRate"] > 
71		<#assign BillingCycles = clientdata["BillingCycles"] > 
72		<#assign textHexColor = clientdata["textHexColor"] > 
73		<#assign linkHexColor = clientdata["linkHexColor"] > 
74		<#assign hoverColor = clientdata["hoverColor"] > 
75		<#assign secondaryBackgroundImage = clientdata["secondaryBackgroundImage"] > 
76		<#assign transparency = clientdata["transparency"] > 
77		<#assign businessBackgroundImageLarge = clientdata["businessBackgroundImageLarge"] > 
78		<#assign businessBackgroundImageSmall = clientdata["businessBackgroundImageSmall"] > 
79		<#assign businessTransparency = clientdata["businessTransparency"] > 
80		<#assign dmaBackgroundImage = clientdata["dmaBackgroundImage"] > 
81		<#assign secondaryDmaBackgroundImage = clientdata["secondaryDmaBackgroundImage"] > 
82	</#if> --> 
83	 
84    <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
85    <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
86    <#if pbu == "0864054"> 
87        <#assign override = "berkshire"> 
88    <#else> 
89        <#assign override = " "> 
90    </#if> 
91    <#--  this one should be delete for prod  --> 
92                 
93    <#-- <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">   
94    <#assign logoFileName = pbu + "-" + subbu + ".png">--> 
95 
96    <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
97    <#if (subbu_special?has_content)> 
98        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
99    <#else> 
100        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
101    </#if> 
102    <#assign temp = []> 
103    <#assign consumerCards = []> 
104    <#assign businessCards = []>  
105    <#assign offerTypeList = []>       
106    <#assign index = 0> 
107    <#assign ameriprise_cards= []> 
108    <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']> 
109    <#assign businessOfferTypes =['128', '121', '144', '143']> 
110    <#list fiCardsData as fib> 
111        <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>   
112            <#assign offerTypeList = offerTypeList + [fib.offerType]> 
113            <#assign temp = temp + fiCardsData[index..index]>    
114            <#if ameriprise> 
115                <#if (fib.offerType == "101" || fib.offerType == "103")> 
116                    <#assign ameriprise_cards= ameriprise_cards + fiCardsData[index..index]> 
117                </#if>                      
118            <#else> 
119                <#if consumerOfferTypes?seq_contains(fib.offerType)> 
120                    <#assign consumerCards = consumerCards + fiCardsData[index..index]> 
121                <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
122                    <#assign businessCards = businessCards + fiCardsData[index..index]> 
123                </#if>             
124            </#if>                 
125        </#if>  
126        <#assign index = index + 1>   
127                     
128    </#list>        
129    <#assign fiCardsData = temp> 
130    <#if ameriprise> 
131        <#assign consumerCards = ameriprise_cards?sort_by("offerType")> 
132    </#if> 
133 
134    <#if (fiCardsData?size > 0)>   
135        <#if (subbu_special?has_content)> 
136            <#assign lc_used = fiCardsData?first.WebLocationCode>   
137        <#else> 
138            <#if ameriprise> 
139                <#assign lc_used = mappedLC>  
140            <#else> 
141                <#assign lc_used = lc>  
142            </#if> 
143        </#if>               
144        <#assign offerId = ""> 
145        <#assign sourceCode = ""> 
146        <#assign cardArtImage = ""> 
147        <#assign productUrl = ""> 
148        <#assign product = ""> 
149        <#assign preparerType = "customer"> 
150        <#assign apr = ""> 
151        <#assign cardIndex = 0>  
152        <#assign empOfferId = "">  
153        <#if consumerCards[0]?has_content> 
154            <#assign empOfferId = consumerCards[0].empofferId!""> 
155        </#if> 
156        <#assign marketingChannel = 'SAT2A'> 
157        <#if isEmployee> 
158            <#assign marketingChannel = 'empl'> 
159            <#assign offerId = empOfferId>       
160        </#if> 
161 
162        <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)> 
163            <#if (offerTypeList?seq_contains("108") || offerTypeList?seq_contains("109"))> 
164                <#list consumerCards as card>                    
165                    <#if (card.offerType=="108" || card.offerType=="109") > 
166                        <#assign offerId = card.saaofferId> 
167                        <#if isEmployee> 
168                            <#assign offerId = card.empofferId!""> 
169                        </#if> 
170                        <#assign sourceCode = card.sourceCode> 
171                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
172                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
173 
174                        <#assign productUrl="consumer-platinum2103"> 
175                        <#assign product="Platinum"> 
176                        <#assign cardIndex = 4> 
177 
178                        <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
179                        <#if (scrapedData?size > 0)> 
180                            <#list scrapedData as sItem> 
181                                <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
182                                    <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
183                                    <#break> 
184                                </#if> 
185                            </#list> 
186                            <script> 
187                                $(document).ready(function () { 
188                                    var aprText = "${apr}"; 
189                                    if (aprText) { 
190                                        try { 
191                                            $(".apr-full-text").html(aprText); 
192                                            var matches= aprText.match(/\d+(\.\d+)?%?/g); 
193                                            var billing_cycle = matches[1]; 
194                                            var apr_min = apr_min = matches[2]; 
195                                            var apr_max = apr_max = matches[3]; 
196                                            if (billing_cycle) { 
197                                                $(".scraped-billing-cycle").html(billing_cycle); 
198
199                                            if (apr_min) { 
200                                                $(".scraped-apr-min").html(apr_min); 
201
202                                            if (apr_max) { 
203                                                $('.scraped-apr-max').html(apr_max); 
204
205 
206                                        } catch (e) { 
207                                            console.log(e); 
208
209                                    } else { 
210                                      $(".apr-full-text").html(''); 
211
212                                }); 
213                            </script> 
214                        </#if> 
215                        <script> 
216                        var product = "${product}"; 
217                        var partnerName = "${partnerName}"; 
218                          $(document).ready(function () { 
219                            $(".see-terms").replaceWith('<a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"><span class="screen-reader-only">' + partnerName + ' ' + product + ' Card</span>See terms &amp; conditions</a>'); 
220                          }); 
221                        </script> 
222                    </#if> 
223                </#list> 
224            <#else> 
225                <#assign displayedCard = consumerCards[0]> 
226                <#assign offerId = displayedCard.saaofferId> 
227                <#if isEmployee> 
228                    <#assign offerId = displayedCard.empofferId!""> 
229                </#if> 
230                <#assign sourceCode = displayedCard.sourceCode> 
231                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
232                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
233                <#if ameriprise> 
234                    <#if (displayedCard.offerType == "101")> 
235                        <#assign productUrl="ameriprise-premier-visa-signature"> 
236                        <#assign product="Premier Visa Signature"> 
237                        <#assign cardIndex = 0> 
238                    <#elseif (displayedCard.offerType == "103")> 
239                        <#assign productUrl = "ameriprise-visa-signature"> 
240                        <#assign product="Visa Signature"> 
241                        <#assign cardIndex = 1> 
242                    </#if> 
243                <#else>                   
244                        <#if (displayedCard.offerType == "108" || displayedCard.offerType == "109")> 
245                            <#assign productUrl = "consumer-platinum2103"> 
246                            <#assign product="Platinum">    
247                            <#assign cardIndex = 4>    
248                            <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
249                            <#if (scrapedData?size > 0)> 
250                                <#list scrapedData as sItem> 
251                                    <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
252                                        <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
253                                        <#break> 
254                                    </#if> 
255                                </#list> 
256                                <script> 
257                                    $(document).ready(function () { 
258                                        var aprText = "${apr}"; 
259                                        if (aprText) { 
260                                            try { 
261                                                $(".apr-full-text").html(aprText); 
262                                                var matches= aprText.match(/\d+(\.\d+)?%?/g); 
263                                                var billing_cycle = matches[1]; 
264                                                var apr_min = apr_min = matches[2]; 
265                                                var apr_max = apr_max = matches[3]; 
266                                                if (billing_cycle) { 
267                                                    $(".scraped-billing-cycle").html(billing_cycle); 
268
269                                                if (apr_min) { 
270                                                    $(".scraped-apr-min").html(apr_min); 
271
272                                                if (apr_max) { 
273                                                    $('.scraped-apr-max').html(apr_max); 
274
275 
276                                            } catch (e) { 
277                                                console.log(e); 
278
279                                        } else { 
280                                          $(".apr-full-text").html(''); 
281
282                                    }); 
283                                </script> 
284                            </#if>     
285                        <#elseif (displayedCard.offerType == "104")> 
286                            <#assign productUrl = "max-cash"> 
287                            <#assign product="Max Cash Preferred"> 
288                            <#assign cardIndex = 0>    
289                        <#elseif (displayedCard.offerType == "141")> 
290                            <#assign productUrl = "college-real-rewards"> 
291                            <#assign product="College Real Rewards"> 
292                            <#assign cardIndex = 2>                                                
293                        <#elseif (displayedCard.offerType == "115")> 
294                            <#assign productUrl = "secured"> 
295                            <#assign product="Secured"> 
296                            <#assign cardIndex = 3> 
297                        </#if> 
298                </#if> 
299            </#if> 
300        </#if> 
301        <#if (class.getData() == "landing-business" && businessCards?size > 0)> 
302             
303            <#if (offerTypeList?seq_contains("128")) > 
304                <#list businessCards as card> 
305                    <#if (card.offerType=="128")> 
306                        <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
307                        <#assign offerId = card.saaofferId> 
308                        <#assign sourceCode = card.sourceCode> 
309                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
310                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
311                        <#assign productUrl = "business-cash-preferred"> 
312                        <#assign product="Business Cash Preferred">                 
313                        <#assign cardIndex = 0> 
314                    </#if> 
315                </#list> 
316            <#else> 
317                <#assign displayedCard = businessCards[0]> 
318                <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
319                <#assign offerId = displayedCard.saaofferId> 
320                <#assign sourceCode = displayedCard.sourceCode> 
321                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
322                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
323 
324                <#if (displayedCard.offerType=="143")> 
325                    <#assign productUrl="business-real-rewards"> 
326                    <#assign product="Business Real Rewards"> 
327                    <#assign cardIndex = 2>    
328                <#elseif (displayedCard.offerType=="144")> 
329                    <#assign productUrl = "smart-business-rewards"> 
330                    <#assign product="Smart Business Rewards"> 
331                    <#assign cardIndex = 1>                     
332                <#elseif (displayedCard.offerType=="121")> 
333                    <#assign productUrl = "business-platinum2103"> 
334                    <#assign product="Business Card"> 
335                    <#assign cardIndex = 3> 
336                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
337                    <#if (scrapedData?size > 0)> 
338                        <#list scrapedData as sItem> 
339                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
340                                <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
341                                <#break> 
342                            </#if> 
343                        </#list> 
344                        <script> 
345                            $(document).ready(function () { 
346                                var aprText = "${apr}"; 
347                                if (aprText) { 
348                                    try { 
349                                        $(".apr-full-text").html(aprText); 
350                                        var matches= aprText.match(/\d+(\.\d+)?%?/g); 
351                                        var billing_cycle = matches[1]; 
352                                        var apr_min = apr_min = matches[2]; 
353                                        var apr_max = apr_max = matches[3]; 
354                                        if (billing_cycle) { 
355                                            $(".scraped-billing-cycle").html(billing_cycle); 
356
357                                        if (apr_min) { 
358                                            $(".scraped-apr-min").html(apr_min); 
359
360                                        if (apr_max) { 
361                                            $('.scraped-apr-max').html(apr_max); 
362
363 
364                                    } catch (e) { 
365                                        console.log(e); 
366
367                                } else { 
368                                  $(".apr-full-text").html(''); 
369
370                            }); 
371                        </script> 
372                    </#if>                       
373                </#if> 
374            </#if> 
375        </#if>    
376        <#if product != ""> 
377            <#if ameriprise> 
378                <#assign card_art_alt =  partnerName + " " + product + " Card"> 
379                <#assign rollover_text =  partnerName + " " + product + " Card"> 
380            <#else> 
381                <#assign card_art_alt = partnerName + " " + product + "  Card"> 
382                <#assign rollover_text =  partnerName + " " + product + " Credit Card"> 
383                <#assign card_text = product + " Card"> 
384            </#if>  
385        </#if>  
386        <div class="jn-hero-container product-${productUrl} tier1-hero-${class.getData()}" title="${rollover_text!''}"> 
387            <div class="hero-main"> 
388                <div class="hero-main-logo"> 
389                    <#if partnerUrl?has_content> 
390                        <a href="${partnerUrl!''}" title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
391                    <#else> 
392                        <a title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
393                    </#if> 
394                </div> 
395                <div class="hero-main-container"> 
396                    <div class="hero-main-offer bg-color-white"> 
397                    <div class="offer-detail"> 
398 
399                            <div class="offer-detail-cardArt cardArtImg">                                                  
400                                <img src="${cardArtImage!''}" alt="${card_art_alt!''}" srcset="" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
401                                <p>${card_text!''}</p> 
402                            </div> 
403                            <div class="offer-detail-text text-color-default hide-desktop"> 
404                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
405                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
406                            </div> 
407 
408                            <#if ameriprise> 
409                                <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white hide-desktop" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
410                            <#else>  
411                                <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm hide-desktop"> 
412                                    <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
413                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
414                                    <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
415                                    <button  
416                                        type="submit"  
417                                        data-button-name="cta-button-top"   
418                                        data-product-name="${productUrl!''}"                                        
419                                        class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
420                                        disabled  
421
422                                        ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
423                                    </button> 
424                                </form> 
425                            </#if> 
426                        </div> 
427 
428                        <div class="offer-header"> 
429                             <div class="offer-text-top"> 
430                                <div class="offer-title">${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div> 
431                                <h1 class="offer-subtitle">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</h1> 
432                            </div> 
433                            <div class="offer-text-bottom hide-mobile"> 
434                                <div class="offer-detail-text text-color-default"> 
435                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
436                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
437                                </div> 
438 
439                                <#if ameriprise> 
440                                    <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
441                                <#else>  
442                                    <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm"> 
443                                        <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
444                                        <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
445                                        <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
446                                        <button  
447                                            type="submit"  
448                                            data-button-name="cta-button-top"   
449                                            data-product-name="${productUrl!''}"  
450                                            class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
451                                            disabled 
452
453                                            ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
454                                        </button> 
455                                    </form> 
456                                </#if> 
457                            </div> 
458                        </div>                        
459                    </div> 
460                </div> 
461            </div> 
462        </div>   
463 
464    </#if> 
465</#if> 
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5883698" at line 8, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign bCode = qstringmap["bankercod...  [in template "10153#10191#5883698" at line 8, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
5<#assign url404 = '/error/404.html'> 
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
7 
8<#assign bCode= qstringmap["bankercode"]?first> 
9<#assign bCode = htmlUtil.escape(bCode)> 
10<#assign bCode = htmlUtil.escapeJS(bCode)> 
11 
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
13<#list bData as b>      
14    <#assign lc = b.locationcode > 
15    <#assign rLC = b.reallocationcode > 
16    <#assign mappedLC = b.mappedLocationCode > 
17    
18</#list>  
19   
20<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
21    <#assign ameriprise = true> 
22<#else> 
23    <#assign ameriprise = false> 
24</#if> 
25 
26<#if mappedLC?has_content && !ameriprise> 
27    <#assign lc = mappedLC > 
28</#if> 
29<#assign isEmployee = false> 
30 
31<#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
32<#if fiData?first?has_content> 
33    <#assign fi = fiData?first> 
34    <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
35        <#assign subbu_special = fi.offerId> 
36    </#if> 
37    <#if fi.projectType == "emp"> 
38        <#assign isEmployee = true> 
39    </#if> 
40</#if>  
41 
42<#if lc?has_content> 
43    <#assign prefix = "00000" > 
44    <#assign lcWithPrefix = prefix + lc> 
45    <#assign withPrefixLength = lcWithPrefix?length > 
46    <#assign startHere = withPrefixLength - 5> 
47    <#assign lc = lcWithPrefix?substring(startHere)>     
48    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
49    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
50 
51    <#assign clientProfile = clientProfileList?first> 
52    <#assign partnerName = clientProfile.getMarketingNameLong()> 
53    <#assign pbu = clientProfile.getPbu()> 
54    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>     
55    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
56    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
57    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
58    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")>             
59        <#assign partnerUrl = 'https://' + partnerUrl> 
60    </#if> 
61 
62    <!-- <#assign clientdataList = utilServ.makeCall('crcDDCTier1Customizations','0&'+pbu+'&'+subbu+'&11')> 
63    <#if clientdataList?has_content > 
64        <#assign clientdata = clientdataList?first > 
65    	<#assign backgroundHexColor = clientdata["backgroundHexColor"] > 
66		<#assign backgroundImage = clientdata["backgroundImage"] > 
67		<#assign buttonHexColor = clientdata["buttonHexColor"] > 
68		<#assign AprMin = clientdata["AprMin"] > 
69		<#assign AprMax = clientdata["AprMax"] > 
70		<#assign cashAdvanceRate = clientdata["cashAdvanceRate"] > 
71		<#assign BillingCycles = clientdata["BillingCycles"] > 
72		<#assign textHexColor = clientdata["textHexColor"] > 
73		<#assign linkHexColor = clientdata["linkHexColor"] > 
74		<#assign hoverColor = clientdata["hoverColor"] > 
75		<#assign secondaryBackgroundImage = clientdata["secondaryBackgroundImage"] > 
76		<#assign transparency = clientdata["transparency"] > 
77		<#assign businessBackgroundImageLarge = clientdata["businessBackgroundImageLarge"] > 
78		<#assign businessBackgroundImageSmall = clientdata["businessBackgroundImageSmall"] > 
79		<#assign businessTransparency = clientdata["businessTransparency"] > 
80		<#assign dmaBackgroundImage = clientdata["dmaBackgroundImage"] > 
81		<#assign secondaryDmaBackgroundImage = clientdata["secondaryDmaBackgroundImage"] > 
82	</#if> --> 
83	 
84    <#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
85    <#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
86    <#if pbu == "0864054"> 
87        <#assign override = "berkshire"> 
88    <#else> 
89        <#assign override = " "> 
90    </#if> 
91    <#--  this one should be delete for prod  --> 
92                 
93    <#-- <#assign cdnLogoUrl = "https://4f61efb10f32ceb57895-3733e103896f37259213d6ad72acbe68.ssl.cf2.rackcdn.com">   
94    <#assign logoFileName = pbu + "-" + subbu + ".png">--> 
95 
96    <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
97    <#if (subbu_special?has_content)> 
98        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
99    <#else> 
100        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
101    </#if> 
102    <#assign temp = []> 
103    <#assign consumerCards = []> 
104    <#assign businessCards = []>  
105    <#assign offerTypeList = []>       
106    <#assign index = 0> 
107    <#assign ameriprise_cards= []> 
108    <#assign consumerOfferTypes =['101', '108', '109', '104', '138', '154', '141', '147', '115']> 
109    <#assign businessOfferTypes =['128', '121', '144', '143']> 
110    <#list fiCardsData as fib> 
111        <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>   
112            <#assign offerTypeList = offerTypeList + [fib.offerType]> 
113            <#assign temp = temp + fiCardsData[index..index]>    
114            <#if ameriprise> 
115                <#if (fib.offerType == "101" || fib.offerType == "103")> 
116                    <#assign ameriprise_cards= ameriprise_cards + fiCardsData[index..index]> 
117                </#if>                      
118            <#else> 
119                <#if consumerOfferTypes?seq_contains(fib.offerType)> 
120                    <#assign consumerCards = consumerCards + fiCardsData[index..index]> 
121                <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
122                    <#assign businessCards = businessCards + fiCardsData[index..index]> 
123                </#if>             
124            </#if>                 
125        </#if>  
126        <#assign index = index + 1>   
127                     
128    </#list>        
129    <#assign fiCardsData = temp> 
130    <#if ameriprise> 
131        <#assign consumerCards = ameriprise_cards?sort_by("offerType")> 
132    </#if> 
133 
134    <#if (fiCardsData?size > 0)>   
135        <#if (subbu_special?has_content)> 
136            <#assign lc_used = fiCardsData?first.WebLocationCode>   
137        <#else> 
138            <#if ameriprise> 
139                <#assign lc_used = mappedLC>  
140            <#else> 
141                <#assign lc_used = lc>  
142            </#if> 
143        </#if>               
144        <#assign offerId = ""> 
145        <#assign sourceCode = ""> 
146        <#assign cardArtImage = ""> 
147        <#assign productUrl = ""> 
148        <#assign product = ""> 
149        <#assign preparerType = "customer"> 
150        <#assign apr = ""> 
151        <#assign cardIndex = 0>  
152        <#assign empOfferId = "">  
153        <#if consumerCards[0]?has_content> 
154            <#assign empOfferId = consumerCards[0].empofferId!""> 
155        </#if> 
156        <#assign marketingChannel = 'SAT2A'> 
157        <#if isEmployee> 
158            <#assign marketingChannel = 'empl'> 
159            <#assign offerId = empOfferId>       
160        </#if> 
161 
162        <#if (class.getData() == "landing-consumer" && consumerCards?size > 0)> 
163            <#if (offerTypeList?seq_contains("108") || offerTypeList?seq_contains("109"))> 
164                <#list consumerCards as card>                    
165                    <#if (card.offerType=="108" || card.offerType=="109") > 
166                        <#assign offerId = card.saaofferId> 
167                        <#if isEmployee> 
168                            <#assign offerId = card.empofferId!""> 
169                        </#if> 
170                        <#assign sourceCode = card.sourceCode> 
171                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
172                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
173 
174                        <#assign productUrl="consumer-platinum2103"> 
175                        <#assign product="Platinum"> 
176                        <#assign cardIndex = 4> 
177 
178                        <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
179                        <#if (scrapedData?size > 0)> 
180                            <#list scrapedData as sItem> 
181                                <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
182                                    <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
183                                    <#break> 
184                                </#if> 
185                            </#list> 
186                            <script> 
187                                $(document).ready(function () { 
188                                    var aprText = "${apr}"; 
189                                    if (aprText) { 
190                                        try { 
191                                            $(".apr-full-text").html(aprText); 
192                                            var matches= aprText.match(/\d+(\.\d+)?%?/g); 
193                                            var billing_cycle = matches[1]; 
194                                            var apr_min = apr_min = matches[2]; 
195                                            var apr_max = apr_max = matches[3]; 
196                                            if (billing_cycle) { 
197                                                $(".scraped-billing-cycle").html(billing_cycle); 
198
199                                            if (apr_min) { 
200                                                $(".scraped-apr-min").html(apr_min); 
201
202                                            if (apr_max) { 
203                                                $('.scraped-apr-max').html(apr_max); 
204
205 
206                                        } catch (e) { 
207                                            console.log(e); 
208
209                                    } else { 
210                                      $(".apr-full-text").html(''); 
211
212                                }); 
213                            </script> 
214                        </#if> 
215                        <script> 
216                        var product = "${product}"; 
217                        var partnerName = "${partnerName}"; 
218                          $(document).ready(function () { 
219                            $(".see-terms").replaceWith('<a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"><span class="screen-reader-only">' + partnerName + ' ' + product + ' Card</span>See terms &amp; conditions</a>'); 
220                          }); 
221                        </script> 
222                    </#if> 
223                </#list> 
224            <#else> 
225                <#assign displayedCard = consumerCards[0]> 
226                <#assign offerId = displayedCard.saaofferId> 
227                <#if isEmployee> 
228                    <#assign offerId = displayedCard.empofferId!""> 
229                </#if> 
230                <#assign sourceCode = displayedCard.sourceCode> 
231                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
232                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
233                <#if ameriprise> 
234                    <#if (displayedCard.offerType == "101")> 
235                        <#assign productUrl="ameriprise-premier-visa-signature"> 
236                        <#assign product="Premier Visa Signature"> 
237                        <#assign cardIndex = 0> 
238                    <#elseif (displayedCard.offerType == "103")> 
239                        <#assign productUrl = "ameriprise-visa-signature"> 
240                        <#assign product="Visa Signature"> 
241                        <#assign cardIndex = 1> 
242                    </#if> 
243                <#else>                   
244                        <#if (displayedCard.offerType == "108" || displayedCard.offerType == "109")> 
245                            <#assign productUrl = "consumer-platinum2103"> 
246                            <#assign product="Platinum">    
247                            <#assign cardIndex = 4>    
248                            <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
249                            <#if (scrapedData?size > 0)> 
250                                <#list scrapedData as sItem> 
251                                    <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
252                                        <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
253                                        <#break> 
254                                    </#if> 
255                                </#list> 
256                                <script> 
257                                    $(document).ready(function () { 
258                                        var aprText = "${apr}"; 
259                                        if (aprText) { 
260                                            try { 
261                                                $(".apr-full-text").html(aprText); 
262                                                var matches= aprText.match(/\d+(\.\d+)?%?/g); 
263                                                var billing_cycle = matches[1]; 
264                                                var apr_min = apr_min = matches[2]; 
265                                                var apr_max = apr_max = matches[3]; 
266                                                if (billing_cycle) { 
267                                                    $(".scraped-billing-cycle").html(billing_cycle); 
268
269                                                if (apr_min) { 
270                                                    $(".scraped-apr-min").html(apr_min); 
271
272                                                if (apr_max) { 
273                                                    $('.scraped-apr-max').html(apr_max); 
274
275 
276                                            } catch (e) { 
277                                                console.log(e); 
278
279                                        } else { 
280                                          $(".apr-full-text").html(''); 
281
282                                    }); 
283                                </script> 
284                            </#if>     
285                        <#elseif (displayedCard.offerType == "104")> 
286                            <#assign productUrl = "max-cash"> 
287                            <#assign product="Max Cash Preferred"> 
288                            <#assign cardIndex = 0>    
289                        <#elseif (displayedCard.offerType == "141")> 
290                            <#assign productUrl = "college-real-rewards"> 
291                            <#assign product="College Real Rewards"> 
292                            <#assign cardIndex = 2>                                                
293                        <#elseif (displayedCard.offerType == "115")> 
294                            <#assign productUrl = "secured"> 
295                            <#assign product="Secured"> 
296                            <#assign cardIndex = 3> 
297                        </#if> 
298                </#if> 
299            </#if> 
300        </#if> 
301        <#if (class.getData() == "landing-business" && businessCards?size > 0)> 
302             
303            <#if (offerTypeList?seq_contains("128")) > 
304                <#list businessCards as card> 
305                    <#if (card.offerType=="128")> 
306                        <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
307                        <#assign offerId = card.saaofferId> 
308                        <#assign sourceCode = card.sourceCode> 
309                        <#assign cardArtImage = cdnCardArtUrl + "/"+card.filename+".png"> 
310                        <#assign cardArtImageAlt = cdnCardArtUrl + "/"+card.filename+".jpg"> 
311                        <#assign productUrl = "business-cash-preferred"> 
312                        <#assign product="Business Cash Preferred">                 
313                        <#assign cardIndex = 0> 
314                    </#if> 
315                </#list> 
316            <#else> 
317                <#assign displayedCard = businessCards[0]> 
318                <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
319                <#assign offerId = displayedCard.saaofferId> 
320                <#assign sourceCode = displayedCard.sourceCode> 
321                <#assign cardArtImage = cdnCardArtUrl + "/"+ displayedCard.filename + ".png"> 
322                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+ displayedCard.filename + ".jpg"> 
323 
324                <#if (displayedCard.offerType=="143")> 
325                    <#assign productUrl="business-real-rewards"> 
326                    <#assign product="Business Real Rewards"> 
327                    <#assign cardIndex = 2>    
328                <#elseif (displayedCard.offerType=="144")> 
329                    <#assign productUrl = "smart-business-rewards"> 
330                    <#assign product="Smart Business Rewards"> 
331                    <#assign cardIndex = 1>                     
332                <#elseif (displayedCard.offerType=="121")> 
333                    <#assign productUrl = "business-platinum2103"> 
334                    <#assign product="Business Card"> 
335                    <#assign cardIndex = 3> 
336                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ sourceCode)> 
337                    <#if (scrapedData?size > 0)> 
338                        <#list scrapedData as sItem> 
339                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
340                                <#assign apr = sItem.scrapedValue?replace("(\n|\r\n|\r)+", " ","r")> 
341                                <#break> 
342                            </#if> 
343                        </#list> 
344                        <script> 
345                            $(document).ready(function () { 
346                                var aprText = "${apr}"; 
347                                if (aprText) { 
348                                    try { 
349                                        $(".apr-full-text").html(aprText); 
350                                        var matches= aprText.match(/\d+(\.\d+)?%?/g); 
351                                        var billing_cycle = matches[1]; 
352                                        var apr_min = apr_min = matches[2]; 
353                                        var apr_max = apr_max = matches[3]; 
354                                        if (billing_cycle) { 
355                                            $(".scraped-billing-cycle").html(billing_cycle); 
356
357                                        if (apr_min) { 
358                                            $(".scraped-apr-min").html(apr_min); 
359
360                                        if (apr_max) { 
361                                            $('.scraped-apr-max').html(apr_max); 
362
363 
364                                    } catch (e) { 
365                                        console.log(e); 
366
367                                } else { 
368                                  $(".apr-full-text").html(''); 
369
370                            }); 
371                        </script> 
372                    </#if>                       
373                </#if> 
374            </#if> 
375        </#if>    
376        <#if product != ""> 
377            <#if ameriprise> 
378                <#assign card_art_alt =  partnerName + " " + product + " Card"> 
379                <#assign rollover_text =  partnerName + " " + product + " Card"> 
380            <#else> 
381                <#assign card_art_alt = partnerName + " " + product + "  Card"> 
382                <#assign rollover_text =  partnerName + " " + product + " Credit Card"> 
383                <#assign card_text = product + " Card"> 
384            </#if>  
385        </#if>  
386        <div class="jn-hero-container product-${productUrl} tier1-hero-${class.getData()}" title="${rollover_text!''}"> 
387            <div class="hero-main"> 
388                <div class="hero-main-logo"> 
389                    <#if partnerUrl?has_content> 
390                        <a href="${partnerUrl!''}" title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
391                    <#else> 
392                        <a title="${partnerName!''} Logo"><img src="${cdnLogoUrl!''}/${logoFileName!''}" title="${partnerName!''} Logo" alt="${partnerName!''} Logo"></a> 
393                    </#if> 
394                </div> 
395                <div class="hero-main-container"> 
396                    <div class="hero-main-offer bg-color-white"> 
397                    <div class="offer-detail"> 
398 
399                            <div class="offer-detail-cardArt cardArtImg">                                                  
400                                <img src="${cardArtImage!''}" alt="${card_art_alt!''}" srcset="" title="${card_art_alt!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
401                                <p>${card_text!''}</p> 
402                            </div> 
403                            <div class="offer-detail-text text-color-default hide-desktop"> 
404                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
405                                ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
406                            </div> 
407 
408                            <#if ameriprise> 
409                                <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white hide-desktop" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
410                            <#else>  
411                                <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm hide-desktop"> 
412                                    <label for="appDataBAAMobile-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
413                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAAMobile-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
414                                    <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
415                                    <button  
416                                        type="submit"  
417                                        data-button-name="cta-button-top"   
418                                        data-product-name="${productUrl!''}"                                        
419                                        class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
420                                        disabled  
421
422                                        ${productTitle.getSiblings()[cardIndex].ctaText.getData()} <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
423                                    </button> 
424                                </form> 
425                            </#if> 
426                        </div> 
427 
428                        <div class="offer-header"> 
429                             <div class="offer-text-top"> 
430                                <div class="offer-title">${productTitle.getSiblings()[cardIndex].primaryHeadlineText.getData()}</div> 
431                                <h1 class="offer-subtitle">${productTitle.getSiblings()[cardIndex].primaryHeadlineFeature.getData()}</h1> 
432                            </div> 
433                            <div class="offer-text-bottom hide-mobile"> 
434                                <div class="offer-detail-text text-color-default"> 
435                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureTop.getData()} 
436                                    ${productTitle.getSiblings()[cardIndex].primaryHeadlineFeatureBottom.getData()} 
437                                </div> 
438 
439                                <#if ameriprise> 
440                                    <a data-button-name="cta-button-top" title="Learn More about ${partnerName!''} credit cards" class="applyNowLink jn-button apply-button text-bold button-bg-color-custom text-color-white" href="javascript:void(0);" onclick="goToByScroll('product-display')">${productTitle.getSiblings()[cardIndex].ctaText.getData()}</a>                                 
441                                <#else>  
442                                    <form action="${oadURL}?locationCode=${lc_used}&offerId=${offerId}&preparerType=${preparerType}&mktChl=${marketingChannel}" method="post" class="BAAForm"> 
443                                        <label for="appDataBAA-${sourceCode}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
444                                        <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${sourceCode}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
445                                        <!-- applyNowLink class is used for ga4 analytics call in other template on page --> 
446                                        <button  
447                                            type="submit"  
448                                            data-button-name="cta-button-top"   
449                                            data-product-name="${productUrl!''}"  
450                                            class="applyNowLink jn-button apply-button apply-now-button text-bold button-bg-color-custom text-color-white" 
451                                            disabled 
452
453                                            ${productTitle.getSiblings()[cardIndex].ctaText.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card</span> 
454                                        </button> 
455                                    </form> 
456                                </#if> 
457                            </div> 
458                        </div>                        
459                    </div> 
460                </div> 
461            </div> 
462        </div>   
463 
464    </#if> 
465</#if> 
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> url404  [in template "10153#10191#5843849" at line 79, column 28]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${url404}  [in template "10153#10191#5843849" at line 79, column 26]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign url = themeDisplay.getURLCurrent() > 
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
5<#-- <#assign url404 = '/error/404.html'> --> 
6<#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
7<#assign environment = url?replace('/index.*','','r')> 
8 
9<#assign text_to_apply_source = "vanity url" > 
10<#if qstringmap["sms"]?has_content> 
11    <#assign sms = 1 > 
12    <#assign text_to_apply_source = "sms" > 
13</#if> 
14<#if qstringmap["qrCode"]?has_content> 
15    <#assign text_to_apply_source = "qr code" > 
16</#if> 
17 
18<#if qstringmap["ecid"]?has_content> 
19    <#assign ecidExt = qstringmap["ecid"]?first> 
20    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
21    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
22    <#assign ecidExt = "&ecid=" + ecidExt> 
23    
24    <#assign campaignId = qstringmap["ecid"]?first > 
25    <#assign campaignId  = htmlUtil.escape(campaignId)> 
26    <#assign campaignId  = htmlUtil.escapeJS(campaignId)> 
27<#else> 
28    <#assign ecidExt=""> 
29    <#assign campaignId = "" > 
30</#if> 
31<#--  check bankercode validity  --> 
32<#if oadURL?contains("uat-")> 
33    <#assign oadURL_TC = 'https://uat-online1.elancard.com/oad/terms.controller' > 
34<#else> 
35    <#assign oadURL_TC = 'https://online1.elancard.com/oad/terms.controller' > 
36</#if> 
37<#if qstringmap["bankercode"]?has_content> 
38    <#assign bCode= qstringmap["bankercode"]?first> 
39    <#assign bCode= htmlUtil.escapeJS(bCode)> 
40    <#assign bCode= htmlUtil.escape(bCode)> 
41    <#assign isEmployee = false> 
42 
43    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
44    <#if fiData?first?has_content> 
45        <#assign fi = fiData?first> 
46        <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14") || (fi.projectId == "15"))> 
47            <#assign subbu_special = fi.offerId> 
48        </#if> 
49        <#if fi.projectType == "emp"> 
50            <#assign isEmployee = true> 
51        </#if> 
52    <#else> 
53        <script> 
54            console.log("fiData missing"); 
55            location.href = '${url404}'; 
56        </script> 
57    </#if> 
58 
59    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
60    <#if !bData?first?has_content> 
61        <script> 
62            console.log("bData missing"); 
63            location.href = '${url404}'; 
64        </script> 
65    </#if> 
66    <#list bData as b>      
67        <#assign lc = b.locationcode > 
68        <#assign bName = b.branch > 
69        <#assign bPhone = b.businessphone > 
70        <#assign boeid = b.oeid > 
71        <#assign fName = b.firstname?trim > 
72        <#assign lName = b.lastname?trim > 
73        <#assign rLC = b.reallocationcode > 
74        <#assign mappedLC = b.mappedLocationCode > 
75    </#list>  
76<#else> 
77    <script> 
78        console.log("MainProductBcode missing"); 
79        location.href = '${url404}'; 
80    </script> 
81</#if> 
82 
83<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
84    <#assign ameriprise = true> 
85<#else> 
86    <#assign ameriprise = false> 
87</#if> 
88<#if mappedLC?has_content && !ameriprise> 
89    <#assign lc = mappedLC > 
90</#if> 
91 
92           
93<#if lc?has_content> 
94    <#assign firstNameLength = fName?length > 
95    <#assign lastNameLength = lName?length > 
96    <#if firstNameLength + lastNameLength &gt; 19 > 
97        <#if lastNameLength &gt; 18 > 
98            <#assign bLName = lName?substring(0,18)> 
99        <#else> 
100            <#assign bLName = lName> 
101        </#if> 
102        <#assign maxFirstName = 19 - bLName?length > 
103        <#if firstNameLength &gt; maxFirstName > 
104            <#assign bFName = fName?substring(0,maxFirstName)> 
105        <#else> 
106            <#assign bFName = fName> 
107        </#if> 
108    <#else> 
109        <#assign bFName = fName> 
110        <#assign bLName = lName> 
111    </#if>  
112 
113    <#assign prefix = "00000" > 
114    <#assign lcWithPrefix = prefix + lc > 
115    <#assign withPrefixLength = lcWithPrefix?length > 
116    <#assign startHere = withPrefixLength - 5> 
117    <#assign lc = lcWithPrefix?substring(startHere)>   
118    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
119    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
120    <#if (clientProfileList?first?has_content)> 
121        <#assign clientProfile = clientProfileList?first> 
122        <#assign partnerName = clientProfile.getMarketingNameLong()> 
123        <#assign pbu = clientProfile.getPbu()> 
124        <#assign subbu = clientProfile.getSUBBRANDBUNBR()>          
125        <#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!>  
126        <#if (subbu_special?has_content)> 
127            <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
128        <#else> 
129            <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
130        </#if> 
131 
132        <#-- Begin: filter cards by sourceCode and offerId and remove duplicated cards--> 
133        <#assign temp = []> 
134        <#assign consumerCards = []> 
135        <#assign businessCards = []>  
136        <#assign offerTypeList = []>  
137        <#assign consumerOfferTypes =['104', '101', '103', '108', '109', '115', '141', '147', '138', '154']> 
138        <#assign businessOfferTypes =['144', '128', '143', '121']>     
139        <#assign index = 0> 
140        <#list fiCardsData as fib> 
141            <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>   
142                <#assign offerTypeList = offerTypeList + [fib.offerType]> 
143                <#assign temp = temp + fiCardsData[index..index]>   
144                <#if consumerOfferTypes?seq_contains(fib.offerType)> 
145                    <#assign consumerCards = consumerCards + fiCardsData[index..index]> 
146                <#elseif (businessOfferTypes?seq_contains(fib.offerType))> 
147                    <#assign businessCards = businessCards + fiCardsData[index..index]> 
148                </#if>                 
149            </#if>  
150            <#assign index = index + 1>                
151        </#list>  
152 
153        <#assign fiCardsData = temp> 
154 
155        <#if (fiCardsData?size > 0)>   
156            <#if (subbu_special?has_content)> 
157                <#assign lc_used = fiCardsData?first.WebLocationCode>   
158            <#else> 
159                <#if ameriprise> 
160                    <#assign lc_used = mappedLC>  
161                <#else> 
162                    <#assign lc_used = lc>  
163                </#if> 
164            </#if>  
165        </#if>  
166 
167        <#assign offerId = ""> 
168        <#assign empOfferId = "">  
169        <#if consumerCards[0]?has_content> 
170            <#assign empOfferId = consumerCards[0].empofferId!""> 
171        </#if> 
172        <#assign marketingChannel = 'SAT2A'> 
173        <#if isEmployee> 
174            <#assign marketingChannel = 'empl'> 
175            <#assign offerId = empOfferId>       
176        </#if> 
177        
178        <#if (consumerCards?size > 0 || businessCards?size > 0)>  
179         
180            <div class="content-container content-container-main jn-consumer-content" id="product-display"> 
181                <#if ((consumerCards?size > 0) && (businessCards?size > 0) && (isEmployee == false))> 
182                    <nav class="jn-primary-nav two-tabs"> 
183                        <ul> 
184                            <li title="${partnerName!''} - Personal products"> 
185                                <a href="#" class="tab-nav active" id="consumerTab"><span>Personal</span></a> 
186                            </li> 
187                            <li title="${partnerName!''} - Business products"> 
188                                <a href="#" class="tab-nav" id="businessTab"><span>Business</span></a> 
189                            </li> 
190                        </ul> 
191                    </nav> 
192                <#else> 
193                    <#if (consumerCards?size > 0)> 
194                        <nav class="jn-primary-nav" title="${partnerName!''} - Personal products"> 
195                            <ul> 
196                                <li> 
197                                    <p class="tab-nav" id="consumerTab"><span>Personal</span></p> 
198                                </li> 
199                            </ul> 
200                        </nav> 
201                    </#if> 
202                    <#if (businessCards?size > 0 && (isEmployee == false))> 
203                        <nav class="jn-primary-nav" title="${partnerName!''} - Business products"> 
204                            <ul> 
205                                <li> 
206                                    <p class="tab-nav" id="businessTab"><span>Business</span></p> 
207                                </li> 
208                            </ul> 
209                        </nav> 
210                    </#if> 
211                </#if> 
212                <#if (consumerCards?size > 0)> 
213                    <div class="tab-more-wrapper"> 
214                        <div class="jn-consumer-content-wrapper jn-tab-content active transition-start" data-id="consumerTab" title="${partnerName!''} - Personal products"> 
215                            <#list consumerCards as fib> 
216                                <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png" > 
217                                <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg">      
218                                <#assign hasBalanceTransferCalculator = false>    
219                                <#assign offerId = fib.saaofferId> 
220                                <#if isEmployee> 
221                                    <#assign offerId = fib.empofferId!""> 
222                                </#if> 
223 
224                                <#if ameriprise>                                
225                                    <#if (fib.offerType == "101")> 
226                                            <#assign productName = "premier-visa-signature"> 
227                                            <#assign product="Premier Visa Signature"> 
228                                            <#assign cardIndex = 0> 
229                                    <#elseif (fib.offerType == "103")> 
230                                            <#assign productName = "visa-signature"> 
231                                            <#assign product="Visa Signature"> 
232                                            <#assign cardIndex = 1> 
233                                    </#if> 
234                                    <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()> 
235                                    <#assign titleText = titleText?replace('<[^>]+>','','r')> 
236                                <#else> 
237                                    <#switch fib.offerType> 
238                                        <#case "101"> 
239                                            <#assign productName = "consumer-edr2112"> 
240                                            <#assign product="Everyday Rewards+"> 
241                                            <#assign cardIndex = 0> 
242                                            <#break> 
243                                        <#case "108"> 
244                                            <#assign productName = "consumer-platinum2103"> 
245                                            <#assign product="Platinum"> 
246                                            <#assign cardIndex = 2> 
247                                            <#assign hasBalanceTransferCalculator = true>  
248                                            <#break> 
249                                        <#case "109"> 
250                                            <#assign productName = "consumer-platinum2103"> 
251                                            <#assign product="Platinum"> 
252                                            <#assign cardIndex = 2> 
253                                            <#assign hasBalanceTransferCalculator = true>  
254                                            <#break>                                            
255                                        <#case "115"> 
256                                            <#assign productName = "secured"> 
257                                            <#assign product="Secured"> 
258                                            <#assign cardIndex = 5> 
259                                            <#break> 
260                                        <#case "104"> 
261                                            <#assign productName = "max-cash"> 
262                                            <#assign product="Max Cash Preferred"> 
263                                            <#assign cardIndex = 1> 
264                                            <#break> 
265                                        <#case "147"> 
266                                            <#assign productName = "max-cash-secured"> 
267                                            <#assign product="Max Cash Secured"> 
268                                            <#assign cardIndex = 4> 
269                                            <#break> 
270                                        <#case "141"> 
271                                            <#assign productName = "college-real-rewards"> 
272                                            <#assign product="College Real Rewards"> 
273                                            <#assign cardIndex = 3> 
274                                            <#break> 
275                                        <#case "138"> 
276                                            <#assign productName = "travel-rewards-plus"> 
277                                            <#assign product="Travel Rewards+"> 
278                                            <#assign cardIndex = 10> 
279                                            <#break> 
280                                        <#case "154"> 
281                                            <#assign productName = "reserve-rewards-plus"> 
282                                            <#assign product="Reserve Rewards+"> 
283                                            <#assign cardIndex = 11> 
284                                            <#break> 
285                                        <#default> 
286                                    </#switch> 
287 
288                                    <#assign newTag = ""> 
289                                    <#if (consumerTitle.getSiblings()[cardIndex].addNewTag?has_content && consumerTitle.getSiblings()[cardIndex].addNewTag.getData() == "true")> 
290                                        <#assign newTag = "with-new-tag"> 
291                                    </#if> 
292                                     
293                                    <#assign titleText = consumerTitle.getSiblings()[cardIndex].Title.getData()> 
294                                    <#assign titleText = titleText?replace('<[^>]+>','','r')> 
295                                     
296 
297                                    <#assign APR=""> 
298                                    <#assign AMF=""> 
299                                    <#assign BAL=""> 
300                                     
301 
302                                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ fib.sourceCode)> 
303                                    <#if (scrapedData?size > 0)> 
304                                        <#list scrapedData as sItem> 
305                                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
306                                                <#assign APR = sItem.scrapedValue> 
307                                            <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) > 
308                                                <#assign AMF = sItem.scrapedValue> 
309                                            <#elseif ((sItem.scrapedLabel?contains("APR for Balance Transfers")) && (sItem.scrapedValue?has_content)) > 
310                                                <#assign BAL = sItem.scrapedValue> 
311                                            </#if> 
312                                            <#if (APR?has_content && AMF?has_content && BAL?has_content)> 
313                                                <#break> 
314                                            </#if> 
315                                        </#list> 
316                                    </#if> 
317                                </#if> 
318                                <#if ameriprise> 
319                                    <#assign rollover_text =  partnerName + " " + product + " " + " Card"> 
320                                <#else> 
321                                    <#assign rollover_text =  partnerName + " " + product + " " + " Credit Card"> 
322                                </#if>                             
323                                <div class="${newTag} jn-consumer-item item-${fib.offerType}" title="${rollover_text!''}"> 
324                                    <div class="tag-container"> 
325                                        <div class="tag-corner"> 
326                                            <div class="tag-label">NEW</div> 
327                                        </div> 
328                                    </div> 
329                                    <div class="consumer-card-heading hide-desktop"> 
330                                        <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
331                                        ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
332                                    </div> 
333                                    <div class="jn-consumer-card-image"> 
334                                        <img src="${cardArtImage!''}" alt="${rollover_text!''}"  class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
335 
336                                        <#if (consumerTitle.getSiblings()[cardIndex].cardArtDescription?has_content) > 
337                                            <p class="jn-card-art-description">${consumerTitle.getSiblings()[cardIndex].cardArtDescription.getData()}</p> 
338                                        </#if> 
339                                        <#if (hasBalanceTransferCalculator)> 
340                                            <a style="display: block; text-align: center; max-width: 285px; margin: auto;" href="javascript:void(0);" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a> 
341                                        </#if> 
342                                    </div> 
343 
344                                    <div class="jn-consumer-card-info"> 
345                                        <div class="consumer-card-heading hide-mobile"> 
346                                            <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
347                                            ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
348                                        </div> 
349                                        <div class="jn-additional"> 
350                                            <ul class="${fib.offerType}"> 
351                                                <#if !ameriprise>                                            
352                                                    <#if (fib.offerType == "104")> 
353                                                        <li class="${fib.offerType}"> 
354                                                            <p> 
355                                                                <strong>APR for Purchases: </strong> 
356                                                                ${APR!''} 
357                                                                <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
358                                                                    <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
359                                                                </a> 
360                                                            </p>                                                             
361                                                        </li> 
362                                                        <li class="${fib.offerType}"> 
363                                                            <p> 
364                                                                <strong>Intro APR<sup>*</sup> for Balance Transfers: </strong> 
365                                                                ${BAL!''}  
366                                                                <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
367                                                                    <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
368                                                                </a> 
369                                                            </p> 
370                                                        </li> 
371                                                    <#else> 
372                                                        <li class="${fib.offerType}"> 
373                                                            <p> 
374                                                                <#if (fib.offerType == "147" || fib.offerType== "115" || fib.offerType== "138" || fib.offerType== "154")> 
375                                                                    <strong>APR for Purchases and Balance Transfers: </strong> 
376                                                                <#elseif (fib.offerType== "101")> 
377                                                                    <strong>INTRO APR<sup>*</sup> for Purchases and Balance Transfers: </strong> 
378                                                                <#else> 
379                                                                    <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong> 
380                                                                </#if> 
381 
382                                                                ${APR!''}  
383                                                                <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
384                                                                    <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
385                                                                </a> 
386                                                            </p> 
387                                                        </li> 
388                                                    </#if> 
389                                                </#if> 
390                                                <#if isEmployee && consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getData()?has_content> 
391                                                    <#if  consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings()?has_content> 
392                                                        <#list consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings() as marketingInfo> 
393                                                            <li>${marketingInfo.getData()}</li> 
394                                                        </#list> 
395                                                    </#if> 
396                                                <#elseif consumerTitle.getSiblings()[cardIndex].additionalInfo.getData()?has_content> 
397                                                    <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content> 
398                                                        <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo> 
399                                                            <li>${marketingInfo.getData()}</li> 
400                                                        </#list> 
401                                                    </#if> 
402                                                </#if> 
403                                                <#if !ameriprise> 
404                                                    <li> 
405                                                        <p> 
406                                                            Annual Fee: ${AMF!''}  
407                                                            <a  href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}"  target="_blank"> 
408                                                                <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
409                                                            </a> 
410                                                        </p> 
411                                                    </li> 
412                                                </#if> 
413                                            </ul> 
414                                        </div> 
415                                        <ul class="actions"> 
416                                            <li> 
417                                                <form action="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" method="post" class="BAAForm" id="BAAForm"> 
418                                                    <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
419                                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
420                                                    <a  
421                                                        class="applyNowLink apply-now-button"  
422                                                        href="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" 
423                                                        data-button-name="apply-now-link"  
424                                                        data-product-name="${productName}"                 
425
426                                                            ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()}<span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span> 
427                                                    </a> 
428                                                </form> 
429                                            </li> 
430                                            <li> 
431                                            <#if ameriprise> 
432                                                <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc_used}${ecidExt}"> 
433                                                    ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only"> about ${partnerName!''} ${product!''} Card </span> 
434                                                </a> 
435                                            <#else> 
436                                                <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}"> 
437                                                    ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only">about ${partnerName!''} ${product!''} Card </span> 
438                                                </a> 
439                                            </#if> 
440                                            </li> 
441                                        </ul> 
442                                    </div>                             
443                                </div> 
444                            </#list> 
445                        </div> 
446                    </div>                 
447                </#if> 
448                <#if ((businessCards?size > 0) && (isEmployee == false))>  
449                    <div class="tab-more-wrapper">    
450                        <div class="jn-consumer-content-wrapper jn-tab-content transition-start" data-id="businessTab" title="${partnerName!''} - Business products"> 
451                             
452                            <#list businessCards as fib> 
453                                    <#assign cardArtImage = cdnCardArtUrl + "/" + fib.filename + ".png"> 
454                                    <#assign cardArtImageAlt = cdnCardArtUrl + "/"+fib.filename+".jpg"> 
455                                    <#switch fib.offerType>                                   
456                                        <#case "144"> 
457                                            <#assign productName = "smart-business-rewards"> 
458                                            <#assign product="Smart Business Rewards"> 
459                                            <#assign cardIndex = 8> 
460                                            <#break> 
461                                        <#case "128"> 
462                                            <#assign productName = "business-cash-preferred"> 
463                                            <#assign product="Business Cash Preferred"> 
464                                            <#assign cardIndex = 6>   
465                                            <#break> 
466                                        <#case "143"> 
467                                            <#assign productName = "business-real-rewards"> 
468                                            <#assign product="Business Real Rewards"> 
469                                            <#assign cardIndex = 9> 
470                                            <#break> 
471                                        <#case "121"> 
472                                            <#assign productName = "business-platinum2103"> 
473                                            <#assign product="Business Card"> 
474                                            <#assign cardIndex = 7> 
475                                            <#break> 
476                                        <#default> 
477                                    </#switch> 
478                                    <!-- bussiness cards offerId dose not check for isEmployee because employees can't have business cards --> 
479                                    <#assign offerId = fib.saaofferId> 
480 
481                                    <#assign newTag = ""> 
482                                    <#if (consumerTitle.getSiblings()[cardIndex].addNewTag?has_content && consumerTitle.getSiblings()[cardIndex].addNewTag.getData() == "true")> 
483                                        <#assign newTag = "with-new-tag"> 
484                                    </#if> 
485                                    <#assign APR=""> 
486                                    <#assign AMF=""> 
487                                    <#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId + '&'+ fib.sourceCode)> 
488                                    <#if (scrapedData?size > 0)> 
489                                        <#list scrapedData as sItem> 
490                                            <#if ((sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases")) && (sItem.scrapedValue?has_content)) > 
491                                                <#assign APR = sItem.scrapedValue> 
492                                            <#elseif ((sItem.scrapedLabel?contains("Annual Membership Fee")) && (sItem.scrapedValue?has_content)) > 
493                                                <#assign AMF = sItem.scrapedValue> 
494                                            </#if> 
495                                            <#if (APR?has_content && AMF?has_content)> 
496                                                <#break> 
497                                            </#if> 
498                                        </#list> 
499                                    </#if> 
500                                     
501                                <div class="${newTag} jn-consumer-item item-${fib.offerType}" title="${partnerName!''} ${product!''} Credit Card"> 
502                                    <div class="tag-container"> 
503                                        <div class="tag-corner"> 
504                                            <div class="tag-label">NEW</div> 
505                                        </div> 
506                                    </div> 
507                                    <div class="consumer-card-heading hide-desktop"> 
508                                        <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
509                                        ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
510                                    </div> 
511                                    <div class="jn-consumer-card-image"> 
512                                        <img src="${cardArtImage!''}" alt="${rollover_text!''}"  class="jn-img-responsive" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"> 
513                                 
514                                        <#if (consumerTitle.getSiblings()[cardIndex].cardArtDescription?has_content) > 
515                                            <p class="jn-card-art-description">${consumerTitle.getSiblings()[cardIndex].cardArtDescription.getData()}</p> 
516                                        </#if> 
517                                    </div> 
518 
519                                    <div class="jn-consumer-card-info"> 
520                                        <div class="consumer-card-heading hide-mobile"> 
521                                            <div class="consumer-card-heading__subheading">${consumerTitle.getSiblings()[cardIndex].Title.getData()}</div> 
522                                            ${consumerTitle.getSiblings()[cardIndex].headlineText.getData()} 
523                                        </div> 
524                                        <div class="jn-additional"> 
525                                            <ul> 
526                                                <li class="${fib.offerType}"> 
527                                                    <p> 
528                                                        <#if (fib.offerType == "144")> 
529                                                            <strong>APR for Purchases and Balance Transfers: </strong> 
530                                                        <#else> 
531                                                            <strong>Intro APR<sup>*</sup> for Purchases and Balance Transfers: </strong> 
532                                                        </#if> 
533 
534                                                        ${APR!''} 
535                                                        <a href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
536                                                            <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
537                                                        </a> 
538                                                    </p> 
539                                                </li> 
540                                                <#if isEmployee && consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getData()?has_content> 
541                                                    <#if  consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings()?has_content> 
542                                                        <#list consumerTitle.getSiblings()[cardIndex].employeeAdditionalInfo.getSiblings() as marketingInfo> 
543                                                            <li>${marketingInfo.getData()}</li> 
544                                                        </#list> 
545                                                    </#if> 
546                                                <#elseif consumerTitle.getSiblings()[cardIndex].additionalInfo.getData()?has_content> 
547                                                    <#if consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings()?has_content> 
548                                                        <#list consumerTitle.getSiblings()[cardIndex].additionalInfo.getSiblings() as marketingInfo> 
549                                                            <li>${marketingInfo.getData()}</li> 
550                                                        </#list> 
551                                                    </#if> 
552                                                </#if> 
553                                                <li> 
554                                                    <p> 
555                                                        Annual Fee: ${AMF!''} <a 
556                                                        href="${oadURL_TC}?step=display&amp;offerId=${offerId}&amp;locationCode=${lc_used}" target="_blank"> 
557                                                            <span class="screen-reader-only">${partnerName!''} ${product!''} Card </span>See terms &amp; conditions 
558                                                        </a> 
559                                                    </p> 
560                                                </li> 
561                                            </ul> 
562                                        </div> 
563                                        <ul class="actions">                                     
564                                            <li> 
565                                                <form action="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" method="post" class="BAAForm"> 
566                                                    <label for="appDataBAA-${offerId}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
567                                                    <textarea rows="20" cols="100" name="applicationData" id="appDataBAA-${offerId}" class="appDataBAA" style="display:none;" title="application data"></textarea>                                         
568                                                    <a  
569                                                        class="applyNowLink apply-now-button"  
570                                                        href="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}"  
571                                                        data-button-name="apply-now-link"  
572                                                        data-product-name="${productName}" 
573
574                                                        ${consumerTitle.getSiblings()[cardIndex].applyNow.getData()} 
575                                                        <span class="screen-reader-only"> for ${partnerName!''} ${product!''} Card </span> 
576                                                    </a> 
577                                                </form> 
578                                            </li> 
579                                            <li> 
580                                                <a href="${environment}/${productName}?bankercode=${bCode}&ecdma-lc=${lc}${ecidExt}"> 
581                                                    ${consumerTitle.getSiblings()[cardIndex].LearnMore.getData()}<span class="screen-reader-only">about ${partnerName!''} ${product!''} Card </span> 
582                                                </a> 
583                                            </li> 
584                                        </ul> 
585                                    </div> 
586                                </div> 
587                                 
588                            </#list> 
589                             
590                        </div> 
591                    </div> 
592                </#if>  
593            </div> 
594            <script> 
595                var consumerSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="consumerTab"]'; 
596                var businessSelector = '.jn-consumer-content-wrapper.jn-tab-content[data-id="businessTab"]'; 
597                 $(document).ready(function () { 
598                    var banker_code = "${bCode!''}"; 
599                    var tabs=$('.tab-nav'); 
600                    var slideDiv = $('.jn-tab-content.active');                    
601                    var screenWidthMobile = 768; 
602                    var screenWidth = window.innerWidth; 
603 
604                    if (tabs.length == 1) { 
605                        if ($(consumerSelector).length > 0) { 
606                            if(banker_code && (banker_code.indexOf("amp") == 0) && (banker_code.length > 6)) { 
607                                $("nav.jn-primary-nav").hide(); 
608                                changeCardLayout(consumerSelector); 
609                                createMetaTag("consumer"); 
610                            } else { 
611                                hideHeroAndDisclaimer('business'); 
612                                showHeroAndDisclaimer('consumer'); 
613                                changeCardLayout(consumerSelector); 
614                                renumberFootnote("consumer"); 
615                                createMetaTag("consumer");  
616
617                        }  
618                        if ($(businessSelector).length > 0) { 
619                            $(businessSelector).addClass('active'); 
620                            hideHeroAndDisclaimer('consumer'); 
621                            showHeroAndDisclaimer('business'); 
622                            changeCardLayout(businessSelector); 
623                            renumberFootnote("business"); 
624                            createMetaTag("business");  
625
626
627                    if (tabs.length == 2) { 
628                        renumberFootnote("consumer"); 
629                        renumberFootnote("business"); 
630                        createMetaTag("consumer"); 
631                        if ($(consumerSelector + ' .jn-consumer-item').length < 3) { 
632                            changeCardLayout(consumerSelector); 
633
634                        if ($(businessSelector + ' .jn-consumer-item').length < 3) { 
635                            changeCardLayout(businessSelector); 
636
637                             
638                        var tabsNav = document.querySelectorAll('.tab-nav'); 
639                        togglePrimaryNav(tabsNav); 
640 
641                        if(window.location.href.indexOf('#business') > -1 ) { 
642                            $(consumerSelector).removeClass('active'); 
643                            $(businessSelector).addClass('active'); 
644                            $('#consumerTab').removeClass('active'); 
645                            $('#businessTab').addClass('active'); 
646                            hideHeroAndDisclaimer('consumer'); 
647                            showHeroAndDisclaimer('business'); 
648                            changeCardLayout(businessSelector); 
649                            renumberFootnote("business"); 
650                            createMetaTag("business"); 
651 
652                            $(tabs).click(function(){ 
653                                if ($(this).attr('id') === "consumerTab") { 
654                                    var newUrl = window.location.toString(); 
655                                    window.location = newUrl.replace(/#business/, '#consumer'); 
656
657                                if ($(this).attr('id') === "businessTab") { 
658                                    var url = window.location.toString(); 
659                                    window.location = url.replace(/#consumer/, '#business'); 
660
661                            }); 
662
663
664                     
665                }); 
666                // Primary Nav function 
667                 
668                function togglePrimaryNav(elem) { 
669                    for (var i = 0; i < elem.length; i++) { 
670                        elem[i].addEventListener("click", function(e) { 
671 
672                            var current = this, 
673                                allSections = document.querySelectorAll('[data-id]'), 
674                                section = document.querySelector("[data-id='"+ current.id +"']"); 
675 
676                            for (var a = 0; a < allSections.length; a++) { 
677                                allSections[a].classList.remove('active'); 
678
679                            for (var c = 0; c < elem.length; c++) { 
680                                if (current != elem[c]) { 
681                                    elem[c].classList.remove('active'); 
682                                } else { 
683                                    current.classList.add('active'); 
684                                    section.classList.add('active'); 
685                                    hideHeroAndDisclaimer('consumer'); 
686                                    hideHeroAndDisclaimer('business'); 
687                                    if(current.getAttribute('id') === "consumerTab"){ 
688                                        showHeroAndDisclaimer('consumer'); 
689                                    } else if(current.getAttribute('id') === "businessTab"){ 
690                                        showHeroAndDisclaimer('business'); 
691
692
693
694                            e.preventDefault(); 
695                        }); 
696
697
698 
699                function renumberFootnote(type) { 
700                    var discriptionSelector = '.jn-consumer-content-wrapper.jn-tab-content' + '[data-id="' + type + 'Tab"]'; 
701                    var disclaimerSelector = '.tier1-disclaimer-landing-' + type; 
702                    var heroSelector = '.tier1-hero-landing-' + type; 
703                    var numOfFootnote = $(disclaimerSelector + ' sup').length; 
704                    var showList = []; 
705                    var hideList=[]; 
706                    for (var i = 1; i <= numOfFootnote; i++) { 
707                    var cssClass="tag-" + i; 
708                    if ($(discriptionSelector + ' sup').hasClass(cssClass) || $(heroSelector + ' sup').hasClass(cssClass)) { 
709                        showList.push(i);      
710                    } else { 
711                        hideList.push(i); 
712
713                    }  
714                    /* 
715                    for (var i = 1; i < showList.length + 1; i++) { 
716                        if(showList[i-1] != i) { 
717                            var className="tag-" + showList[i-1]; 
718                            $(heroSelector).find("." +  className).html(i); 
719                            // $(discriptionSelector).find("." +  className).html(i); 
720                            $(disclaimerSelector).find("." +  className).html(i); 
721
722
723                    */ 
724                    for (var i = 0; i <hideList.length; i++) { 
725                        var cname="tag-" + hideList[i]; 
726                        $(disclaimerSelector).find("." + cname).parent().hide(); 
727                    }    
728
729 
730                function changeCardLayout(cssSelector) { 
731                    var numOfCards = $(cssSelector + ' .jn-consumer-item').length; 
732                    if(numOfCards == 1) { 
733                        $(cssSelector).addClass('one-card'); 
734                    } else if (numOfCards == 2) { 
735                        $(cssSelector).addClass('two-card'); 
736                    }   
737
738                function hideHeroAndDisclaimer(type) { 
739                    try { 
740                        document.querySelector('.tier1-hero-landing-'+ type).classList.remove('show'); 
741                        document.querySelector('.tier1-hero-landing-'+ type).classList.add('hide'); 
742                    } catch (e) { 
743                        console.log(e); 
744
745 
746                    try { 
747                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.remove('show'); 
748                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.add('hide');  
749                    } catch (e) { 
750                        console.log(e); 
751
752 
753
754                function showHeroAndDisclaimer(type) { 
755                    try { 
756                        document.querySelector('.tier1-hero-landing-'+ type).classList.add('show'); 
757                        document.querySelector('.tier1-hero-landing-'+ type).classList.remove('hide'); 
758                    } catch (e) { 
759                        console.log(e); 
760
761                     
762                    try { 
763                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.add('show'); 
764                        document.querySelector('.tier1-disclaimer-landing-'+ type).classList.remove('hide');  
765                    } catch (e) { 
766                        console.log(e); 
767
768 
769
770                function createMetaTag(type) { 
771                    var partnerName = "${partnerName!0}"; 
772                    var product_name = $('.jn-hero-container .jn-button').data('product-name'); 
773                    var metaDesc = ""; 
774                    if (type == "consumer") {     
775                        if(location.pathname.indexOf("11t1m") != -1) { 
776                            metaDesc = "Apply Today for an Ameriprise Financial Credit Card. Earn Rewards Points worth $375 cash value when deposited into an eligible account after spending $3,000 in eligible net purchases within the first 90 days of account opening." 
777                        } else {                                    
778                            if(product_name ==  "consumer-platinum2103") { 
779                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Limited Time Offer. 0% Intro APR on Purchases and Balance Transfers for 20 Billing Cycles Consolidate your Balances with the "+partnerName+" Intro APR Card."; 
780                            } else if(product_name ==  "real-rewards") { 
781                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Take home 2,500 bonus points after your first purchase."; 
782                            } else if(product_name ==  "secured") { 
783                                metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
784                            } else if(product_name ==  "max-cash") { 
785                                if('${isEmployee?string("yes", "no")}' == "yes") { 
786                                    metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $200 Bonus and 5% cash back on the two categories you select."; 
787                                } else { 
788                                    metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select."; 
789
790
791
792 
793                    } else if (type == "business") { 
794                        if(product_name ==  "business-cashback") {               
795                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses."; 
796                        } else if(product_name ==  "business-real-rewards") { 
797                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on."; 
798                        } else if(product_name ==  "business-visa") { 
799                            metaDesc = "Apply Today for a "+partnerName+" Business Card. 0% Intro APR on Purchases and Balance Transfers for 15 Billing Cycles"; 
800                        } else if(product_name ==  "smart-business-rewards") { 
801                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. More choices. More value for your business. Earn a $200 Bonus and 2x Rewards on your top 2 spend categories each month with the "+partnerName+" Credit Card."; 
802
803
804                    var m = document.createElement('meta');  
805                    m.name = 'description';  
806                    m.content = metaDesc;  
807                    document.head.appendChild(m); 
808
809                function goToByScroll(id) { 
810                    var element = document.getElementById(id); 
811                    element.scrollIntoView(true); 
812
813                 
814            </script> 
815            <script> 
816                var reportingData = window.reportingData || {}; 
817                document.addEventListener('DOMContentLoaded', function() {                    
818                    var page = location.pathname.split('/')[location.pathname.split('/').length-1]; 
819                    var hostName = location.hostname;                                     
820                    function getDomainFromHostname(hostname) { 
821                        var parts = hostname.split('.'); 
822                        return parts.length === 3 ? parts[1] : parts[0]; 
823
824                    var domain = getDomainFromHostname(hostName); 
825                    var partnerName = "${partnerName!0}"; 
826                    var ameriprise = '${ameriprise?string("yes", "no")}'; 
827                    var locationCode = "${rLC!lc}"; 
828                    var eidAmp = ""; 
829                    var heroCardImgs = document.querySelectorAll('.jn-consumer-card-image img, .cardArtImg img'); 
830                    for (var index = 0; index < heroCardImgs.length; index++) { 
831                        var heroCardImg = heroCardImgs[index]; 
832                        var heroCardSrc = heroCardImg.getAttribute("src"); 
833                        if(heroCardSrc != "") { 
834                            resizeImg(heroCardImg); 
835
836
837                    if (ameriprise == "yes") { 
838                        var bankercode_amp = '${bCode}'; 
839                        eidAmp = bankercode_amp.substring(3); 
840                        locationCode =""; 
841                        document.title = "Ameriprise Financial Credit Card Overview Page"; 
842                    } else { 
843                        document.title = partnerName + " Credit Card Index Page"; 
844
845                     
846                    var lc = '${lc!0}'; 
847 
848                    var regex = /\d+/g; 
849                    var bdNumber = "${bPhone!''}"; 
850                    var phoneNum = bdNumber.match(regex); 
851                    var areaCode = ""; 
852                    var exchangeCode = ""; 
853                    var num = ""; 
854                    if(phoneNum != null) { 
855                        phoneNum = phoneNum.join(""); 
856                        areaCode = phoneNum.substring(0,3); 
857                        exchangeCode = phoneNum.substring(3,6); 
858                        num = phoneNum.substring(6,10); 
859
860 
861                        /* update SiteCatalyst data object */ 
862                    reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' '); 
863                    reportingData.page_type = 'product';  
864                    reportingData.site_section = 'credit cards'; 
865                    reportingData.platform = 'microsite'; 
866                    reportingData.campaign_id = '${campaignId}'; 
867                    reportingData.location_code = '${rLC!0}'; 
868                    reportingData.partner_name = "${partnerName}"; 
869                    reportingData.product = 'All Cards'; 
870                    reportingData.text_to_apply_source = '${text_to_apply_source}'; 
871                    reportingData.visitor_type = 'prospect';         
872                    reportingData.Banker_id = '${boeid}'; 
873                    reportingData.Banker_code = '${bCode}'; 
874 
875                                                     
876                    /* SiteCatalyst  pageView tracking */ 
877                    AUI().ready(function() { 
878                        if (window.publisherFW) {                            
879                            window.publisherFW.publishEvent("pageView", reportingData); 
880
881                    });  
882                                   
883                    $('.jn-button').removeAttr('disabled'); 
884                    $('.jn-button').removeClass('jn-disabled'); 
885 
886                    jQuery('.applyNowLink').on('click', function(e) { 
887                        $(this).closest('.BAAForm').submit(); 
888                        const bankerId = '${boeid}'; 
889                        const employeeId = ""; 
890                        let visitorId = bankerId; 
891                         
892                        if('${isEmployee?string("yes", "no")}' == "yes") { 
893                            visitorId = employeeId; 
894
895                        const htmlElementName = e.target.nodeName; 
896                        const isButton = (htmlElementName ==='BUTTON'); 
897                        // gets href of clicked anchor tag 
898                        let href = e.target.href; 
899 
900                        // get action url of form submit button  
901                        if(isButton) { 
902                            href = document.getElementById('BAAForm').action; 
903
904 
905                        const urlParams = new URLSearchParams(href);                    
906                        let offerId = ""; 
907 
908                        if(urlParams.has('offerid')) { 
909                            offerId = urlParams.get('offerid'); 
910
911 
912                        if(urlParams.has('offerId')) { 
913                            offerId = urlParams.get('offerId'); 
914
915                         
916                        window.dataLayer.push({ 
917                            'event' : 'apply_payload', 
918                            'location_code': locationCode, 
919                            'banker_code': '${bCode}', 
920                            'offer_id': offerId, 
921                            'visitor_id': visitorId, 
922                        }); 
923                        return false; 
924                    }); 
925                    jQuery(".BAAForm").on("submit", function(e){ 
926                        e.preventDefault();                         
927                        var xmlData; 
928                        if('${isEmployee?string("yes", "no")}' == "yes") { 
929
930                        if(ameriprise == "yes") { 
931                            xmlData = '<?xml version="1.0"?>'+ 
932                                "<prefillData>"+  
933                                    "<versionNumber>1.0</versionNumber>"+  
934                                    "<applicationData>"+  
935                                        "<referral>" +  
936                                            "<employeeId>" + eidAmp + "</employeeId>" + 
937                                            "<storeNumber>"+"${bName!'0'}"+"</storeNumber>"+ 
938                                            "<divisionNumber></divisionNumber>"+ 
939                                        "</referral>" +  
940                                        "<bankerInformation>"+  
941                                            "<locationCode>" + locationCode + "</locationCode>"+ 
942                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
943                                            "<employeeID>${boeid!0}</employeeID>"+ 
944                                            "<name>" + 
945                                            "<first>${bFName!'0'}</first>" + 
946                                            "<last>${bLName!'0'}</last>" + 
947                                            "</name>"+ 
948                                            "<phone>"+ 
949                                            "<areaCode>"+areaCode+"</areaCode>"+  
950                                            "<exchange>"+exchangeCode+"</exchange>"+ 
951                                            "<number>"+num+"</number>"+  
952                                            "</phone>"+  
953                                        "</bankerInformation>"+  
954                                    "</applicationData>"+  
955                                "</prefillData>" 
956                        } else if ('${isEmployee?string("yes", "no")}' == "yes") {  
957                            xmlData = '<?xml version="1.0"?>'+ 
958                                "<prefillData>"+  
959                                    "<versionNumber>1.0</versionNumber>"+  
960                                    "<applicationData>"+                                         
961                                        "<bankerInformation>"+  
962                                            "<employeeFullName>Employee Product</employeeFullName>"+ 
963                                            "<employeeId>EMPPROD</employeeId>"+ 
964                                            "<employeePhoneNumber></employeePhoneNumber>"+ 
965                                            "<locationCode>" + locationCode + "</locationCode>"+ 
966                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
967                                            "<originatingBranchId></originatingBranchId>"+ 
968                                            "<name>" + 
969                                                "<first>${bFName!'0'}</first>" + 
970                                                "<last>${bLName!'0'}</last>" + 
971                                            "</name>"+ 
972                                            "<phone>"+ 
973                                                "<areaCode>" + areaCode + "</areaCode>"+  
974                                                "<exchange>" + exchangeCode + "</exchange>"+ 
975                                                "<number>" + num + "</number>"+  
976                                            "</phone>"+  
977                                        "</bankerInformation>"+  
978                                        "<referral>" +  
979                                            "<divisionNumber></divisionNumber>" +       
980                                            "<partnerLocationID>" + locationCode + "</partnerLocationID>" +                          
981                                            "<referralId>EMPPROD</referralId>" + 
982                                        "</referral>" +  
983                                    "</applicationData>"+  
984                                "</prefillData>";                             
985                        } else { 
986                            xmlData = '<?xml version="1.0"?>'+ 
987                                "<prefillData>"+  
988                                    "<versionNumber>1.0</versionNumber>"+  
989                                    "<applicationData>"+  
990                                        "<bankerInformation>"+  
991                                            "<locationCode>" + locationCode + "</locationCode>"+ 
992                                            "<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
993                                            "<employeeID>${boeid!0}</employeeID>"+ 
994                                            "<name>" + 
995                                                "<first>${bFName!'0'}</first>" + 
996                                                "<last>${bLName!'0'}</last>" + 
997                                            "</name>"+ 
998                                            "<phone>"+ 
999                                                "<areaCode>"+areaCode+"</areaCode>"+  
1000                                                "<exchange>"+exchangeCode+"</exchange>"+ 
1001                                                "<number>"+num+"</number>"+  
1002                                            "</phone>"+  
1003                                        "</bankerInformation>"+  
1004                                    "</applicationData>"+  
1005                                "</prefillData>" 
1006
1007                        $(this).children(".appDataBAA").val(xmlData); 
1008                        var buttonName = $(this).find(".apply-now-button").data("button-name"); 
1009                        var productName = $(this).find(".apply-now-button").data("product-name"); 
1010                        /* SiteCatalyst  onClick tracking */ 
1011                        reportingData.apply_button = buttonName; 
1012                        reportingData.product = productName; 
1013 
1014                        if (window.publisherFW) {                            
1015                            window.publisherFW.publishEvent("onClick", reportingData); 
1016
1017                        var paramString = '${bCode}' + "&" + xmlData + "&" + '${htmlUtil.escapeURL(htmlUtil.escapeJS(url))}'; 
1018                            /* CRC service call */ 
1019                            Liferay.Service( 
1020                                '/crc-utilities-portlet#crcremote/make-call', 
1021
1022                                    storedProcedure: 'crcDDCTextApplyLog', 
1023                                    parameters: paramString 
1024                                }, 
1025                                function(obj){                                   
1026
1027                            ); 
1028 
1029                        this.submit();                   
1030                    });                                                                                   
1031                }); 
1032                function resizeImg(img) { 
1033                    img.addEventListener("load", function() { 
1034                        var cardImgWidth = img.width; 
1035                        var cardImgHeight = img.height; 
1036                        if(cardImgWidth > cardImgHeight) { 
1037                            img.style.width = "285px"; 
1038                        } else { 
1039                            img.style.width = "150px"; 
1040
1041                    }); 
1042
1043            </script>                    
1044                 
1045        </#if>  
1046    </#if> 
1047</#if> 
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5843858" at line 5, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign bCode = qstringmap["bankercod...  [in template "10153#10191#5843858" at line 5, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
4 
5<#assign bCode= qstringmap["bankercode"]?first> 
6<#assign bCode = htmlUtil.escape(bCode)> 
7<#assign bCode = htmlUtil.escapeJS(bCode)> 
8 
9<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
10<#list bData as b>      
11    <#assign lc = b.locationcode > 
12    <#assign rLC = b.reallocationcode > 
13    <#assign mappedLC = b.mappedLocationCode > 
14</#list>  
15<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
16    <#assign ameriprise = true> 
17<#else> 
18    <#assign ameriprise = false> 
19</#if> 
20<#if mappedLC?has_content && !ameriprise> 
21    <#assign lc = mappedLC > 
22</#if> 
23 
24 
25<#if lc?has_content> 
26    <#assign prefix = "00000" > 
27    <#assign lcWithPrefix = prefix + lc > 
28    <#assign withPrefixLength = lcWithPrefix?length > 
29    <#assign startHere = withPrefixLength - 5> 
30    <#assign lc = lcWithPrefix?substring(startHere)> 
31    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
32    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
33 
34    <#assign clientProfile = clientProfileList?first>  
35    <#assign partnerName=clientProfile.getMarketingNameLong()> 
36 
37    <#assign pbu = clientProfile.getPbu()> 
38    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
39    <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>  
40    <#assign isEmployee = false> 
41 
42    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
43    <#if fiData?first?has_content> 
44        <#assign fi = fiData?first> 
45        <#if fi.projectType == "emp"> 
46            <#assign isEmployee = true> 
47        </#if> 
48    </#if> 
49 
50 
51    <#if (fiCardsData?size > 0) > 
52        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
53     
54        <#if (cardProvider?size > 0)> 
55            <#-- This will be V for visa or M for mastercard. --> 
56            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
57        <#else> 
58            <script> 
59                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
60            </script> 
61        </#if> 
62 
63        <div class="jn-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer"> 
64            <div class="disclaimer" > 
65                <#if isEmployee && employeeDisclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
66                    ${employeeDisclaimersVisa.getData()} 
67                <#elseif isEmployee && employeeDisclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
68                    ${employeeDisclaimersMasterCard.getData()}> 
69                <#elseif disclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
70                    ${disclaimersVisa.getData()} 
71                <#elseif disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
72                    ${disclaimersMasterCard.getData()} 
73                </#if> 
74            </div> 
75        </div> 
76    </#if> 
77<#else> 
78    <script> 
79        console.log("No lc for disclaimer"); 
80    </script> 
81</#if> 
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5843858" at line 5, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign bCode = qstringmap["bankercod...  [in template "10153#10191#5843858" at line 5, column 1]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
4 
5<#assign bCode= qstringmap["bankercode"]?first> 
6<#assign bCode = htmlUtil.escape(bCode)> 
7<#assign bCode = htmlUtil.escapeJS(bCode)> 
8 
9<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
10<#list bData as b>      
11    <#assign lc = b.locationcode > 
12    <#assign rLC = b.reallocationcode > 
13    <#assign mappedLC = b.mappedLocationCode > 
14</#list>  
15<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
16    <#assign ameriprise = true> 
17<#else> 
18    <#assign ameriprise = false> 
19</#if> 
20<#if mappedLC?has_content && !ameriprise> 
21    <#assign lc = mappedLC > 
22</#if> 
23 
24 
25<#if lc?has_content> 
26    <#assign prefix = "00000" > 
27    <#assign lcWithPrefix = prefix + lc > 
28    <#assign withPrefixLength = lcWithPrefix?length > 
29    <#assign startHere = withPrefixLength - 5> 
30    <#assign lc = lcWithPrefix?substring(startHere)> 
31    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
32    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
33 
34    <#assign clientProfile = clientProfileList?first>  
35    <#assign partnerName=clientProfile.getMarketingNameLong()> 
36 
37    <#assign pbu = clientProfile.getPbu()> 
38    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
39    <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>  
40    <#assign isEmployee = false> 
41 
42    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
43    <#if fiData?first?has_content> 
44        <#assign fi = fiData?first> 
45        <#if fi.projectType == "emp"> 
46            <#assign isEmployee = true> 
47        </#if> 
48    </#if> 
49 
50 
51    <#if (fiCardsData?size > 0) > 
52        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
53     
54        <#if (cardProvider?size > 0)> 
55            <#-- This will be V for visa or M for mastercard. --> 
56            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
57        <#else> 
58            <script> 
59                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
60            </script> 
61        </#if> 
62 
63        <div class="jn-disclaimer tier1-disclaimer-${class.getData()}" title="${partnerName} - Disclaimer"> 
64            <div class="disclaimer" > 
65                <#if isEmployee && employeeDisclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
66                    ${employeeDisclaimersVisa.getData()} 
67                <#elseif isEmployee && employeeDisclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
68                    ${employeeDisclaimersMasterCard.getData()}> 
69                <#elseif disclaimersVisa?has_content && cardProviderAbbreviated?contains("V")> 
70                    ${disclaimersVisa.getData()} 
71                <#elseif disclaimersMasterCard?has_content && cardProviderAbbreviated?contains("M") > 
72                    ${disclaimersMasterCard.getData()} 
73                </#if> 
74            </div> 
75        </div> 
76    </#if> 
77<#else> 
78    <script> 
79        console.log("No lc for disclaimer"); 
80    </script> 
81</#if> 
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10153#10191#5843861" at line 8, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign bCode = qstringmap["bankercod...  [in template "10153#10191#5843861" at line 8, column 1]
----
1<#assign aDateTime = .now> 
2<#assign currentYear = aDateTime?string.yyyy> 
3<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
4<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
5<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
6<#assign url404 = '/error/404.html'> 
7 
8<#assign bCode= qstringmap["bankercode"]?first> 
9<#assign bCode = htmlUtil.escape(bCode)> 
10<#assign bCode = htmlUtil.escapeJS(bCode)> 
11 
12<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)> 
13<#list bData as b>      
14    <#assign lc = b.locationcode > 
15    <#assign rLC = b.reallocationcode > 
16    <#assign mappedLC = b.mappedLocationCode > 
17</#list>  
18 
19<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
20    <#assign ameriprise = true> 
21<#else> 
22    <#assign ameriprise = false> 
23</#if> 
24<#if mappedLC?has_content && !ameriprise> 
25    <#assign lc = mappedLC > 
26</#if> 
27 
28<#if lc?has_content> 
29 
30    <#assign prefix = "00000" > 
31    <#assign lcWithPrefix = prefix + lc > 
32    <#assign withPrefixLength = lcWithPrefix?length > 
33    <#assign startHere = withPrefixLength - 5> 
34    <#assign lc = lcWithPrefix?substring(startHere)> 
35<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
36    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
37 
38    <#assign clientProfile = clientProfileList?first> 
39    <#assign pbu = clientProfile.getPbu()> 
40    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>   
41    <#assign partnerName=clientProfile.getMarketingNameLong()> 
42    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
43    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
44    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
45    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")> 
46        <#-- add protocal if missing  --> 
47        <#assign partnerUrl = 'https://' + partnerUrl> 
48    </#if> 
49    <footer class="footer bg-color-black text-color-white"> 
50        ${footerContent.getData()} 
51    </footer> 
52 
53    <!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
54        <script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
55        <style> 
56            #opt-out-button, 
57            .modal__btn.learn-more { 
58                background: #0C2074; 
59                border: 1px solid #0C2074; 
60                color: white; 
61                text-transform: uppercase; 
62                text-decoration: none; 
63                font-size: 16px; 
64                padding: 0.5rem 2rem; 
65                display: inline-block; 
66                border-radius: 0; 
67
68            #opt-out-button:hover, 
69            .modal__btn.learn-more:hover { 
70                color: white; 
71                border-color: #2C76AF !important; 
72                background-color: #2C76AF !important; 
73
74            .modal__btn.learn-more { 
75                background: white; 
76                border: 1px solid #0C2074; 
77                color: #0C2074; 
78
79            #opt-out-button[disabled="true"] { 
80                background-color: rgba(0,0,0,.15); 
81                color: rgba(0,0,0,.45); 
82                border-color: rgba(0,0,0,.25); 
83
84            #opt-out-button:hover[disabled="true"] { 
85                background-color: rgba(0,0,0,.15) !important; 
86                color: rgba(0,0,0,.45) !important; 
87                border-color: rgba(0,0,0,.25) !important; 
88
89            #opt-out-button:focus { 
90                outline-style: solid; 
91                outline-color: white; 
92                outline-offset: -3px; 
93                outline-width: 1px; 
94
95            .opt-out-link svg { 
96                width: 30px; 
97                height: 14px; 
98                width: auto; 
99                vertical-align: middle; 
100
101            .modal__overlay { 
102                position: fixed; 
103                top: 0; 
104                left: 0; 
105                right: 0; 
106                bottom: 0; 
107                background: rgba(0,0,0,0.6); 
108                display: flex; 
109                justify-content: center; 
110                align-items: center; 
111
112 
113            .modal__container { 
114                background-color: #fff; 
115                padding: 30px; 
116                max-width: 500px; 
117                max-height: 100vh; 
118                border-radius: 4px; 
119                overflow-y: auto; 
120                box-sizing: border-box; 
121
122 
123            .modal__header { 
124                display: flex; 
125                justify-content: space-between; 
126                align-items: center; 
127
128 
129            .modal__title { 
130                margin-top: 0; 
131                margin-bottom: 0; 
132                font-weight: 600; 
133                font-size: 20px; 
134                line-height: 1.25; 
135                color: #00449e; 
136                box-sizing: border-box; 
137
138 
139            .modal__close { 
140                background: transparent; 
141                border: 1px solid white; 
142                padding: 4px 8px; 
143
144            .modal__close:hover { 
145                border: 1px solid black; 
146
147 
148            .modal__header .modal__close:before { content: "\2715"; } 
149 
150            .modal__content { 
151                margin-top: 2rem; 
152                margin-bottom: 2rem; 
153                line-height: 1.5; 
154
155 
156            @keyframes mmfadeIn { 
157                from { opacity: 0; } 
158                to { opacity: 1; } 
159
160 
161            @keyframes mmfadeOut { 
162                from { opacity: 1; } 
163                to { opacity: 0; } 
164
165 
166            @keyframes mmslideIn { 
167                from { transform: translateY(15%); } 
168                to { transform: translateY(0); } 
169
170 
171            @keyframes mmslideOut { 
172                from { transform: translateY(0); } 
173                to { transform: translateY(-10%); } 
174
175 
176            .micromodal-slide { 
177                display: none; 
178
179 
180            .micromodal-slide.is-open { 
181                display: block; 
182
183 
184            .micromodal-slide[aria-hidden="false"] .modal__overlay { 
185                animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
186
187 
188            .micromodal-slide[aria-hidden="false"] .modal__container { 
189                animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
190
191 
192            .micromodal-slide[aria-hidden="true"] .modal__overlay { 
193                animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
194
195 
196            .micromodal-slide[aria-hidden="true"] .modal__container { 
197                animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
198
199 
200            .micromodal-slide .modal__container, 
201            .micromodal-slide .modal__overlay { 
202                will-change: transform; 
203
204        </style> 
205 
206        <div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
207        <div class="modal__overlay" tabindex="-1" data-micromodal-close> 
208            <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
209            <header class="modal__header"> 
210                <h2 class="modal__title" id="modal-1-title"> 
211                Your California privacy choices 
212                </h2> 
213                <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
214            </header> 
215            <div class="modal__content" id="modal-1-content"> 
216                <div id="message-no-cookie"> 
217                    <p> 
218                    We use technologies, such as cookies, that gather information on our website. That information is used for a variety of purposes, such as to understand how visitors interact with our websites, or to serve advertisements on our websites or on other websites. The use of technologies, such as cookies, constitutes a ‘share’ or ‘sale’ of personal information under the California Privacy Rights Act. You can stop the use of certain third-party tracking technologies that are not considered our service providers by clicking on “Opt-Out” below or by broadcasting the global privacy control signal.</p> 
219                     
220        <p>&nbsp;</p> 
221 
222        <p>Note that due to technological limitations, if you visit our website from a different computer or device, or clear cookies on your browser that store your preferences, you will need to return to this screen to opt-out and/or rebroadcast the signal. You can find a description of the types of tracking technologies, and your options with respect to those technologies, by clicking “Learn more” below.</p> 
223            </div> 
224            <div id="message-with-cookie"> 
225                <p>You have successfully opted-out.</p> 
226            </div> 
227            </div> 
228            <div class="modal__footer"> 
229                <a href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a> 
230                <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
231            </div> 
232            </div> 
233        </div> 
234        </div> 
235    <!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
236    <script> 
237        const fdicNode = document.querySelector('.footer .fdic');                          
238    </script> 
239    <script> 
240        const copyrightNode = document.querySelector('.footer .copyright'); 
241        if (copyrightNode) { 
242            copyrightNode.innerHTML = '<sup>©</sup> Elan Financial Services ' + ${currentYear}; 
243
244 
245    </script> 
246    <#if url?contains("11t1m")> 
247        <script>        
248            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
249            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
250        </script> 
251    <#else> 
252        <script> 
253            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
254            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
255            var newNode = document.createElement("div");  
256            newNode.classList.add("member-agreement"); 
257            newNode.innerHTML='<a class="text-color-white" href="https://online1.elancard.com/oad/cmas.controller?locationCode=${lc!0}&preparerType=customer&isNewRequest=false" target="_blank">Cardmember Agreements</a>'; 
258            var parent = fdicNode.parentNode; 
259            parent.insertBefore(newNode, fdicNode); 
260        </script> 
261    </#if> 
262 
263    <#if partnerUrl?has_content> 
264        <script> 
265            document.querySelector('.copyright .homelink').innerHTML="<a class='text-color-white' href='${partnerUrl!''}' title='${partnerName!''}' target='_blank'>Home</a>"; 
266        </script> 
267    </#if> 
268 
269    <script> 
270        /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
271        fdicNode.insertAdjacentHTML('afterend', '<div style="display: inline-block; margin-left: 100px;"><a href="javascript:void(0);" class="opt-out-link text-color-white" data-micromodal-trigger="modal-1">Your California privacy choices <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" fill="#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" fill="#06f"/></svg></a></div>'); 
272        /* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
273    </script> 
274    <!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
275 
276    <script> 
277        window.getCookieDomain = function() { 
278            var hostname = window.location.hostname.split("."); 
279            return hostname && hostname.slice(hostname.length - 2).join("."); 
280
281        window.setToOptOut = function() { 
282            if (window.getCookie('privacy_optout')) { 
283                    document.getElementById('message-no-cookie').style.display = 'none'; 
284                    document.getElementById('message-with-cookie').style.display = 'block'; 
285                    document.getElementById('opt-out-button').setAttribute('disabled', true) 
286                } else { 
287                    document.getElementById('message-no-cookie').style.display = 'block'; 
288                    document.getElementById('message-with-cookie').style.display = 'none'; 
289
290
291        window.getCookie = function(name) { 
292            var value = '; ' + document.cookie; 
293            var parts = value.split('; ' + name + '='); 
294            if (parts.length === 2) return parts.pop().split(';').shift(); 
295
296        window.californiaOptOut = function() { 
297            if (!window.getCookie('privacy_optout')) { 
298                document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
299                try { 
300                if (window.CustomEvent) { 
301                    window.dispatchEvent(new CustomEvent('privacy_optout')); 
302                } else { 
303                    var privacyOptoutEvent = document.createEvent('Event'); 
304                    privacyOptoutEvent.initEvent('privacy_optout', true, true); 
305                    window.dispatchEvent(privacyOptoutEvent); 
306
307                window.setToOptOut(); 
308                } catch (err) { 
309                console.error(err); 
310
311
312
313        MicroModal.init({ 
314            onShow: window.setToOptOut 
315        }); 
316        AUI().ready(function() { 
317            // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
318            const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
319            if(isBrowserGpcOptOut === true) { 
320            window.californiaOptOut(); 
321
322        }); 
323    </script> 
324    <!-- END CALIFORNIA OPT-OUT MODAL LOGIC --> 
325 
326</#if>