1 2 3 4 5 6 7 8 9 10 11 12 13<!DOCTYPE html> 14<html lang="en"> 15<!-- SN --> 16<!-- TouchNet Bill+Payment Suite 9.5.1 HF 2 Build 4 ( 08/07/2026 18:27:00 UTC ) --> 17<head> 18 <!-- Required meta tags always come first --> 19 <meta charset="utf-8"> 20 21 22 23 <meta http-equiv="x-ua-compatible" content="ie=edge"> 24 <meta name="description" content="TouchNet Information Systems, Inc. - Bill+Payment"> 25 26 27 28<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/C21017_tsa/web/images/apple-touch-icon-144-precomposed.png"> 29<link rel="shortcut icon" href="/C21017_tsa/web/images/favicon.ico"> 30 31<link rel="StyleSheet" href="/C21017_tsa/web/styles/ckeditor-contents.css" /> 32<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/lib/bootstrap/3.4.1/css/bootstrap.min.css" media="all" /> 33<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/lib/datatables/1.10.15/datatables.min.css" media="all" /> 34<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/styles/tbpmain.css" media="all" /> 35<link rel="stylesheet" type="text/css" href="/C21017_tsa/web/styles/loading.css"/> 36 37 38<link rel="stylesheet" href="/C21017_tsa/web/lib/font-awesome/6.5.2/css/v4-shims.min.css"/> 39<link rel="stylesheet" href="/C21017_tsa/web/lib/font-awesome/6.5.2/css/fontawesome.min.css"/> 40<link rel="stylesheet" href="/C21017_tsa/web/lib/font-awesome/6.5.2/css/solid.min.css"/> 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 <link rel="stylesheet" href="/C21017_tsa/web/styles/non-responsive.css" media="all"/> 57 58 59<!-- 60Responsive licensed: false | Mobile device: false 61--> 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95<style> 96 /* 97 header colors 98 */ 99 100 header.pageHeader 101 { 102 background: #2c2a29; 103 border-color: #2c2a29; 104 } 105 106 107 header.pageHeader, .loginBox 108 { 109 color: #ffffff !important; 110 } 111 112 113 header.pageHeader a, 114 header.pageHeader button, 115 header.pageHeader input[type='button'], 116 .navbar-inverse .navbar-nav .loginBox a 117 { 118 color: #ffffff; 119 } 120 121 122 header.pageHeader a:hover, 123 header.pageHeader a:focus, 124 header.pageHeader button:hover, 125 header.pageHeader button:focus, 126 header.pageHeader input[type='button']:hover, 127 header.pageHeader input[type='button']:focus 128 { 129 color: #ffffff; 130 } 131 132 133 /* 134 menu navigation colors 135 */ 136 137 .navbar-inverse 138 { 139 background: #c8102e; 140 border-color: #c8102e; 141 } 142 143 144 .navbar-inverse .navbar-nav>li>a, 145 .navbar-inverse .navbar-nav>li.open>a 146 { 147 color: #ffffff; 148 } 149 150 151 .navbar-inverse .navbar-nav>li>a:hover, 152 .navbar-inverse .navbar-nav>li>a:focus, 153 .navbar-inverse .navbar-nav>li>.active a, 154 .navbar-inverse .navbar-nav>li>.active a:hover, 155 .navbar-inverse .navbar-nav>li>.active a:focus, 156 .navbar-inverse .navbar-nav>li.open>a:hover, 157 .navbar-inverse .navbar-nav>li.open>a:focus, 158 .navbar-inverse .navbar-nav>li.open>.active a, 159 .navbar-inverse .navbar-nav>li.open>.active a:hover, 160 .navbar-inverse .navbar-nav>li.open>.active a:focus 161 { 162 163 background: #555555; 164 border-color: #555555; 165 166 167 color: #fdb913; 168 169 } 170 171 172 /* 173 primary button colors 174 */ 175 176 .btn-primary, 177 .btn-primary:hover, 178 .btn-primary:focus, 179 .btn-primary.disabled:hover, 180 .btn-primary:disabled:hover 181 { 182 background: #c8102e; 183 border-color: #cccccc; 184 } 185 186 187 .btn-primary, 188 .btn-primary:hover, 189 .btn-primary:focus, 190 .btn-primary.disabled:hover, 191 .btn-primary:disabled:hover 192 { 193 color: #ffffff; 194 } 195 196 197 .btn-primary:active 198 { 199 background: #320a4d !important; 200 border-color: #cccccc !important; 201 } 202 203 204 .btn-primary:active 205 { 206 color: #ffffff !important; 207 } 208 209 210 /* 211 secondary buttons colors 212 */ 213 214 .btn-default, 215 .btn-default:hover, 216 .btn-default:focus, 217 .btn-default.disabled:hover, 218 .btn-default:disabled:hover 219 { 220 background: #ffffff; 221 border-color: #cccccc; 222 } 223 224 225 .btn-default, 226 .btn-default:hover, 227 .btn-default:focus, 228 .btn-default.disabled:hover, 229 .btn-default:disabled:hover 230 { 231 color: #333333; 232 } 233 234 235 .btn-default:active 236 { 237 background: #e6e6e6 !important; 238 border-color: #cccccc !important; 239 } 240 241 242 .btn-default:active 243 { 244 color: #333333 !important; 245 } 246 247 248 /* 249 footer colors 250 */ 251 252 .footer, .footer-content 253 { 254 background: #54585a; 255 border-color: #54585a; 256 } 257 258 259 .footer .footer-content 260 { 261 color: #cccccc; 262 } 263 264 265 .footer .footer-content a, 266 .footer .footer-content button, 267 .footer .footer-content input[type='button'] 268 { 269 color: #cccccc; 270 } 271 272 273 .footer .footer-content a:hover, 274 .footer .footer-content a:focus, 275 .footer .footer-content button:hover, 276 .footer .footer-content button:focus, 277 .footer .footer-content input[type='button']:hover, 278 .footer .footer-content input[type='button']:focus 279 { 280 color: #cccccc; 281 } 282 283 284 /*Express Payment widget colors*/ 285 286 .paymentOptionSelect, .paymentOptionSelect .h3 287 { 288 background-color: #d80000; 289 border-color: transparent; 290 } 291 292 293 .paymentOptionSelect, .paymentOptionSelect .h3 294 { 295 color: #ffffff; 296 } 297 298</style> 299 300 301
302<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery-3.5.1.min.js"></script>
302
303<script type="text/javascript" src="/C21017_tsa/web/lib/tether/1.3.3/js/tether.min.js"></script>
303
304<script type="text/javascript" src="/C21017_tsa/web/lib/bootstrap/3.4.1/js/bootstrap.min.js"></script>
304
305<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-accessibility.js"></script>
305
306<script type="text/javascript" src="/C21017_tsa/web/js/extend.js"></script>
306
307<script type="text/javascript" src="/C21017_tsa/web/js/common.js"></script>
307
308<script type="text/javascript" src="/C21017_tsa/web/js/currency.js"></script>
308
309<script type="text/javascript" src="/C21017_tsa/web/js/toggle_lang.js"></script>
309
310<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-toast.js"></script>
310
311<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-modal/bootstrap-modals.js"></script>
311<script type="text/javascript" src="/C21017_tsa/web/js/bootstrap-modal/bootstrap-modals.i18n-en.js"></script>
311
312<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery.timers.js"></script>
312
313<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery.bootstrap.stackable.modals.js"></script>
313
314<script type="text/javascript" src="/C21017_tsa/web/js/spinner.js"></script>
314
315<script type="text/javascript" src="/C21017_tsa/web/js/please-wait.js"></script>
315
316<script type="text/javascript" src="/C21017_tsa/web/lib/datatables/1.10.15/datatables.min.js"></script>
316<script type="text/javascript" src="/C21017_tsa/web/lib/datatables/1.10.15/datatables.i18n-en.min.js"></script>
316
317<script type="text/javascript" src="/C21017_tsa/web/js/datatables-init.js"></script>
317
318<script type="text/javascript" src="/C21017_tsa/web/js/datatables-fixes.js"></script>
318
319<script type="text/javascript" src="/C21017_tsa/web/js/datatables-defaults.js"></script>
319
320<script type="text/javascript" src="/C21017_tsa/web/js/ajax-submit.js"></script>
320
321<script type="text/javascript" src="/C21017_tsa/web/js/apple_pay.js"></script>
321
322<script type="text/javascript" src="/C21017_tsa/web/js/polyfills.js"></script>
322
323<script type="text/javascript" src="/C21017_tsa/web/js/react/react.production.min.js"></script>
323
324<script type="text/javascript" src="/C21017_tsa/web/js/react/react-dom.production.min.js"></script>
324
325<script type="text/javascript" src="/C21017_tsa/web/js/password-complexity.js"></script>
325
326<script type="text/javascript" src="/C21017_tsa/web/js/banner-messages.js"></script>
326
327<script type="text/javascript" src="/C21017_tsa/web/js/agreement.js"></script>
327
328<script type="text/javascript" src="/C21017_tsa/web/js/messages.js"></script>
328
329<script type="text/javascript" src="/C21017_tsa/web/js/jquery/mask/jquery.mask.js"></script>
329 330 331 332 333 334 335 336 337 338
339<script nonce=""> 340 341 342 343</script>
343 344 345 346 347 348 349
350<script type="text/javascript" src="/C21017_tsa/web/js/formValidation.js"></script>
350 351 352 353 354 355 356 357 358 359 360 361 362 363 <title>Billing Center Login</title> 364 365 366 367
367<script type="text/javascript" src="/C21017_tsa/web/js/jquery/jquery-3.5.1.min.js"></script>
367 368 369</head> 370 371<body id="" class=""> 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393<div id="skipNav"> 394 <a id="skipNavigationToMainContent" class="sr-only sr-only-focusable" href="#skipNavigationToMainContent"> 395 Skip to Main Content 396 </a> 397</div><!--used for skip navigation--> 398 399<div id="ariaLive" class="hidden"> 400 <div id="mainLiveRegion" role="log" aria-live="assertive" aria-atomic="false" aria-relevant="text"></div> 401</div><!-- it is used for 508 compliance - this invisible field is for screen readers in situations when we update some area 402without having focus on it --> 403
404<script type="text/javascript" src="/C21017_tsa/web/js/skip_navigation.js"></script>
404
405<script nonce=""> 406 $( function() 407 { 408 $( "a.payment-date-skip-navigator" ).skip_navigation_to( "#paymentDatePicker" ); 409 410 var skipFocus = function( navOrContent ) 411 { 412 var contentSelectorWrapper = ".container, .container-fluid"; 413 var navSelectorWrapper = "nav"; 414 var focusSelectors = [ "*[tabindex]:visible", "input:visible", "select:visible", 415 "textarea:visible", "button:visible", "a:visible" ]; 416 417 var focusToSelector = ""; 418 419 if ( navOrContent === "nav" ) 420 { 421 focusToSelector = navSelectorWrapper; 422 } 423 else if ( navOrContent === "content" ) 424 { 425 focusToSelector = contentSelectorWrapper; 426 } 427 428 $( focusToSelector ).find( focusSelectors.join() ).first().focus(); 429 }; 430 431 var skipToNavClickHandler = function( event ) 432 { 433 event.preventDefault(); 434 skipFocus( "nav" ); 435 }; 436 437 var skipToContentClickHandler = function( event ) 438 { 439 event.preventDefault(); 440 skipFocus( "content" ); 441 }; 442 443 $( '#skipToNav' ).bind( "click", skipToNavClickHandler ); 444 $( '#skipNav' ).bind( "click", skipToContentClickHandler ); 445 } ); 446</script>
446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 <div class="printHeader"> 466 <img id="printHeader" src="/C21017_tsa/web/images/printHeader.png" alt="Bill+Payment Header"> 467 </div> 468 469 470 471 472 473 474 475 476 477 478 479 480 481 <form name="Form1" action="/C21017_tsa/tapp" method="post"> 482 483 484 485 486 487<input type="hidden" name="START_APP" value="true"> 488<input type="hidden" name="JSP_TYPE" value="web"> 489<input type="hidden" name="REDIRECT" value="true"> 490<input type="hidden" name="SCHEME" value="https"> 491<input type="hidden" name="SERVER" value="epay.maryville.edu"> 492<input type="hidden" name="PORT" value="443"> 493<input type="hidden" name="CTX_PATH" value="/C21017_tsa"> 494<input type="hidden" name="tapp-stoken" value="null" /> 495 496 <input type="hidden" name="OnError" value="login.jsp"> 497 <input type="hidden" name="Navigate" value="login.jsp"> 498 499 500 501 502 <input type="hidden" name="_ga" value="2.38803370.867605969.1689610591-885137803.1623179314"> 503 504 505 </form> 506 507
507<script nonce=""> 508 $( function() 509 { 510 setTimeout( function () { 511 512 513 document.Form1.submit(); 514 515 516 517 }, 0); 518 }); 519 </script>
519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535<div id="footerContainer"></div> 536
537<script nonce=""> 538 $( function () { 539 const footerTemplatesData = 540 {"FOOTER":[]}?. 541 ['FOOTER'] ?? []; 542 const layoutTemplate = footerTemplatesData.find( template => template?.type === 'GENERAL' ); 543 const brandingTemplate = footerTemplatesData.find( template => template?.type === 'BRANDING' ); 544 545 if ( layoutTemplate && brandingTemplate ) 546 { 547 renderFooter( layoutTemplate, brandingTemplate ); 548 } 549 else 550 { 551 renderDefaultFooter(); 552 } 553 554 function renderFooter( layoutTemplate, brandingTemplate ) 555 { 556 const layoutTemplateDesignComponent = layoutTemplate.componentList 557 .find( component => component.type === 'FOOTER' ) ?? {}; 558 559 const brandingTemplateDesignComponent = brandingTemplate.componentList 560 .find( component => component.type === 'FOOTER' ) ?? {}; 561 562 const layoutTemplateProperties = layoutTemplateDesignComponent.propertyList ?? []; 563 564 const links = getSubpropertyList( layoutTemplateProperties, 'LINK_LIST' ); 565 const linksHtml = getLinksHtml( 566 getSubpropertyList( links, 'LINK', 'privacyPolicy' ), 567 getSubpropertyList( links, 'LINK', 'accessibility' ) ); 568 569 const copyright = layoutTemplateProperties.find( prop => prop.type === 'CONTENT' )?.value ?? ''; 570 571 const logo = getSubpropertyList( layoutTemplateProperties, 'IMAGE' ); 572 const logoPath = getPropertyValue( logo, 'path' ); 573 const logoStoragePath = getPropertyValue( logo, 'storagePath' ); 574 const logoUrl = getPropertyValue( logo, 'url' ); 575 const logoAltText = getPropertyValue( logo, 'altText' ); 576 577 const templateScope = layoutTemplate?.scope ?? ''; 578 579 const logoHtml = getLogoHtml( logoPath, logoStoragePath, logoUrl, logoAltText, templateScope ); 580 581 const brandingTemplateProperties = brandingTemplateDesignComponent.propertyList ?? []; 582 583 const fontFamily = getSubpropertyList( brandingTemplateProperties, 'FONT', 'body' ) 584 ?.find( prop => prop.type === 'TEXT' )?.value ?? ''; 585 586 const hyperlinks = getSubpropertyList( brandingTemplateProperties, 'FONT', 'hyperlinks' ); 587 588 const DEFAULT_LINKS_COLOR = '#cccccc'; 589 const DEFAULT_LINKS_DECORATION = 'none'; 590 const DEFAULT_LINKS_COLOR_HOVER = '#cccccc'; 591 const DEFAULT_LINKS_DECORATION_HOVER = 'none'; 592 593 const hyperlinksColor = getPropertyValue( hyperlinks, 'color', DEFAULT_LINKS_COLOR ); 594 const hyperlinksDecoration = getPropertyValue( hyperlinks, 'decoration', DEFAULT_LINKS_DECORATION ); 595 const hyperlinksColorHover = getPropertyValue( hyperlinks, 'colorHover', DEFAULT_LINKS_COLOR_HOVER ); 596 const hyperlinksDecorationHover = getPropertyValue( hyperlinks, 'decorationHover', DEFAULT_LINKS_DECORATION_HOVER ); 597 598 const colorSchemeProperties = getSubpropertyList( brandingTemplateProperties, 'FONT', 599 'colorScheme' ); 600 601 const DEFAULT_FONT_COLOR = '#cccccc'; 602 const DEFAULT_BACKGROUND_COLOR = '#00467F'; 603 604 const fontColor = getPropertyValue( colorSchemeProperties, 'color', DEFAULT_FONT_COLOR ); 605 const backgroundColor = getPropertyValue( colorSchemeProperties, 'background', DEFAULT_BACKGROUND_COLOR ); 606 607 const FOOTER_HTML_TEMPLATE = ` 608<style> 609 .footer-template { 610 position: absolute; 611 bottom: 0; 612 width: 100%; 613 min-height: 55px; 614 max-height: 180px; 615 } 616 617 .footer-template .footer-template-content { 618 display: block; 619 line-height: 24px; 620 padding: 15px; 621 z-index: 3; 622 word-break: break-word; 623 font-size: 16px; 624 font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; 625 } 626 627 .footer-template .footer-template-links { 628 font-variant: normal; 629 font-weight: 500; 630 padding-left: 10px; 631 } 632 633 .footer-template .footer-template-links .footer-link-delimiter { 634 font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; 635 opacity: 0.5; 636 padding-left: 15px; 637 padding-right: 15px; 638 } 639 640 .footer-template .footer-template-brand { 641 display: flex;
642 align-items: flex-end; 643 flex-direction: column; 644 padding-left: 10px; 645 padding-right: 15px; 646 } 647 648 @media (max-width: 768px) { 649 .footer-template .footer-template-brand { 650 align-items: flex-start; 651 } 652 } 653 654 .footer-template .footer-template-copyright-text p { 655 margin: 0; 656 } 657 658 .footerLogo .img-responsive { 659 max-height: 200px; 660 } 661 662 .footer-template, .footer-template-content { 663 background: ${backgroundColor}; 664 color: ${fontColor} !important; 665 } 666 667 .footer-template, .footer-template-links { 668 font-family: ${fontFamily}; 669 } 670 671 .footer-template .footer-template-links a { 672 color: ${hyperlinksColor}; 673 text-decoration: ${hyperlinksDecoration}; 674 } 675 676 .footer-template .footer-template-links a:hover, 677 .footer-template .footer-template-links a:focus { 678 color: ${hyperlinksColorHover}; 679 text-decoration: ${hyperlinksDecorationHover}; 680 } 681</style> 682 683<footer class="footer-template"> 684 <div class="container-fluid footer-template-content"> 685 <div class="row"> 686 <div class="col-md-6 col-xs-12"> 687 <div class="footer-template-links"> 688 <span>${linksHtml}</span> 689 </div> 690 </div> 691 <div class="col-md-6 col-xs-12"> 692 <div class="footer-template-brand"> 693 <span class="footerLogo">${logoHtml}</span> 694 <span class="footer-template-copyright-text">${copyright}</span> 695 </div> 696 </div> 697 </div> 698 </div> 699</footer>`; 700 701 $( '#footerContainer' ) 702 .append( FOOTER_HTML_TEMPLATE ); 703 } 704 705 function getPropertyValue( property, propertyName, defaultValue ) 706 { 707 defaultValue = defaultValue ?? ''; 708 709 return property.find( prop => prop.name === propertyName )?.value ?? defaultValue; 710 } 711 712 function getSubpropertyList( properties, type, name ) 713 { 714 if ( type && name ) 715 { 716 return properties.find( prop => prop.type === type && prop.name === name )?.subpropertyList ?? []; 717 } 718 else 719 { 720 return properties.find( prop => prop.type === type )?.subpropertyList ?? []; 721 } 722 } 723 724 function getLinksHtml( privacyPolicyLink, accessibilityLink ) 725 { 726 const DEFAULT_PRIVACY_URL_ORDER = 1; 727 const DEFAULT_ACCESSIBILITY_URL_ORDER = 2; 728 729 const privacyPolicyLinkDisplayName = getPropertyValue( privacyPolicyLink, 'displayName' ); 730 const privacyPolicyLinkUrl = getPropertyValue( privacyPolicyLink, 'url' ); 731 let privacyPolicyLinkSortOrder = getPropertyValue( privacyPolicyLink, 'sortOrder', DEFAULT_PRIVACY_URL_ORDER ); 732 privacyPolicyLinkSortOrder = isNaN( privacyPolicyLinkSortOrder ) ? DEFAULT_PRIVACY_URL_ORDER : Number( privacyPolicyLinkSortOrder ); 733 734 const accessibilityLinkDisplayName = getPropertyValue( accessibilityLink, 'displayName' ); 735 const accessibilityLinkUrl = getPropertyValue( accessibilityLink, 'url' ); 736 let accessibilityLinkSortOrder = getPropertyValue( accessibilityLink, 'sortOrder', DEFAULT_ACCESSIBILITY_URL_ORDER ); 737 accessibilityLinkSortOrder = isNaN( accessibilityLinkSortOrder ) ? DEFAULT_ACCESSIBILITY_URL_ORDER : Number( accessibilityLinkSortOrder ); 738 739 const privacyPolicyUrlHtml = 740 privacyPolicyLinkDisplayName.length > 0 && privacyPolicyLinkUrl.length > 0 ? 741 ` <a target="_blank" href="${checkHttpProtocol( privacyPolicyLinkUrl )}">${privacyPolicyLinkDisplayName} 742 <span class="sr-only">Opens in new window</span></a>` : ''; 743 744 const accessibilityPolicyUrlHtml = 745 accessibilityLinkDisplayName.length > 0 && accessibilityLinkUrl.length > 0 ? 746 ` <a target="_blank" href="${checkHttpProtocol( accessibilityLinkUrl )}">${accessibilityLinkDisplayName} 747 <span class="sr-only">Opens in new window</span></a>` : ''; 748 749 const linkDelimiter = `<span class="footer-link-delimiter">|</span>`; 750 751 if ( !privacyPolicyUrlHtml ) 752 { 753 return accessibilityPolicyUrlHtml; 754 } 755 756 if ( !accessibilityPolicyUrlHtml ) 757 { 758 return privacyPolicyUrlHtml; 759 } 760 761 if ( privacyPolicyLinkSortOrder > accessibilityLinkSortOrder ) 762 { 763 return accessibilityPolicyUrlHtml + linkDelimiter + privacyPolicyUrlHtml; 764 } 765 else 766 { 767 return privacyPolicyUrlHtml + linkDelimiter + accessibilityPolicyUrlHtml; 768 } 769 } 770 771 function checkHttpProtocol( url ) 772 { 773 return url.startsWith( "https://" ) || url.startsWith( "http://" ) ? url : "//" + url; 774 } 775 776 function getLogoHtml( logoPath, logoStoragePath, logoUrl, logoAltText, templateScope ) 777 { 778 const serverPath = '/C21017_tsa/'; 779
780 const logoImageFullPath = templateScope === 'GLOBAL' ? 781 getUniversalTemplateImageFullPath( logoStoragePath, logoPath, serverPath ) 782 : 783 serverPath + 784 'web/images/footers/' 785 + encodeURIComponent( logoPath ); 786 787 if ( logoUrl && ( logoPath || logoStoragePath ) && logoAltText ) 788 { 789 return `<a href="${logoUrl}" target="_blank"> 790 <img class="img-responsive" 791 src="${logoImageFullPath}" 792 alt="${logoAltText}"> 793 </a>`; 794 } 795 else if ( logoPath || logoStoragePath ) 796 { 797 return `<img class="img-responsive" 798 src="${logoImageFullPath}" 799 alt="${logoAltText}">`; 800 } 801 else 802 { 803 return ''; 804 } 805 } 806 807 function getUniversalTemplateImageFullPath( cloudStorageImagePath, sharedStorageImagePath, serverPath ) 808 { 809 if ( cloudStorageImagePath ) 810 { 811 return 'https://storage.googleapis.com/bkt-gousgnaig-tnet-ucomm-dts-universal-template-image/C21017/' + encodeURIComponent( cloudStorageImagePath ); 812 } 813 814 return serverPath + 815 'web/universal/' 816 + encodeURIComponent( sharedStorageImagePath ); 817 } 818 819 function renderDefaultFooter() 820 { 821 const currentYear = new Date().getFullYear(); 822 const DEFAULT_FOOTER_HTML = 823 `<footer class="footer"> 824 <div class="container-fluid footer-content"> 825 <div class="row"> 826 <div class="col-xs-12 footerLegal"> 827 <span> 828 © ${currentYear} TouchNet <sup>®</sup> 829 <i>A<strong> Global Payments </strong>Company</i><span class="px-1">|</span>All rights reserved.<span class="px-1">|</span> 830 <a class="text-underline" 831 href="https://www.touchnet.com/en/technology-solution-privacy-policy" 832 target="_blank">Privacy Policy<span class="sr-only">Opens in new window</span> 833 </a> 834 </span> 835 </div> 836 </div> 837 </div> 838 </footer>` 839 840 $( '#footerContainer' ) 841 .append( DEFAULT_FOOTER_HTML ); 842 } 843 } ); 844</script>
844 845 846</body> 847 848</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.