1<!doctype html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <title>Subscribe: Parasited</title> 7 <!-- userLayoutHead() start --> 8 9 10<meta name="generator" content="aMember Pro" > 11<link href="https://use.fontawesome.com/releases/v6.5.1/css/all.css" media="screen" rel="stylesheet" crossorigin="anonymous" > 12 13<style type="text/css">@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/greek-ext/400/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic-ext/400/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/symbols/400/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/vietnamese/400/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/math/400/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/latin-ext/400/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic/400/normal.woff2);
13unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/latin/400/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:400;src:url(/cf-fonts/s/roboto/5.2.10/greek/400/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/math/700/normal.woff2);unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic/700/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/vietnamese/700/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/greek-ext/700/normal.woff2);unicode-range:U+1F00-1FFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/symbols/700/normal.woff2);unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/latin/700/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/latin-ext/700/normal.woff2);
13unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/greek/700/normal.woff2);unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-display:swap;}@font-face {font-family:'Roboto';font-style:normal;font-weight:700;src:url(/cf-fonts/s/roboto/5.2.10/cyrillic-ext/700/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}</style> 14<link href="/amember/application/default/views/public/css/reset.css?721751063" rel="stylesheet" > 15<link href="/amember/application/default/views/public/css/amember.css?721751063" rel="stylesheet" > 16<link href="/amember/data/public/thc--black-275172cb8dd5251b376321cc4cc384de-theme.css" rel="stylesheet" > 17<link href="/amember/application/default/views/public/css/site.css?1909497295" rel="stylesheet" > 18<link href="/amember/application/default/views/public/js/jquery/jquery.ui.css?721751063" rel="stylesheet" > 19
20<script type="text/am-vars">{"public-path":"\/amember\/","api-url":"\/amember\/","datepickerDefaults":{"closeText":"Done","prevText":"Prev","nextText":"Proceed to Checkout","currentText":"Today","monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},"langCount":0,"msg_select_state":"[Select state]"}</script>
20 21
22<script type="text/javascript"> 23 //<!-- 24 window.uiDateFormat = "mm\/dd\/y"; 25window.uiWeekFirstDay = 0; 26window.momentDateFormat = "MM\/DD\/YY"; 27window.uiDefaultDate = new Date(2026,8,29); 28 //--> 29</script>
vendor: 1 bytes, line 29
29
30<script type="text/javascript" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
vendor: 1 bytes, line 30
30
31<script type="text/javascript" src="/amember/application/default/views/public/js/vendors-admin-user.js?721751063"></script>
vendor: 1 bytes, line 31
31
32<script type="text/javascript" src="/amember/application/default/views/public/js/vendors-user.js?721751063"></script>
vendor: 1 bytes, line 32
32
33<script type="text/javascript" src="/amember/application/default/views/public/js/user.js?721751063"></script>
vendor: 1 bytes, line 33
33
34<script type="text/javascript"> 35 //<!-- 36 am_i18n = {"toggle_password_visibility":"Toggle Password Visibility","toggle_password_visibility_hide":"Hide Password","toggle_password_visibility_show":"Show Password","password_strength":"Password Strength","upload_browse":"browse","upload_upload":"upload","upload_files":"Uploaded Files","upload_uploading":"Uploading...","upload_remove_file":"remove file","ms_please_select":"-- Please Select --","ms_select_all":"Select All","please_wait":"Please Wait...","popup_close":"Close","file_style_browse":"Browse\u2026"}; //--> 37</script>
vendor: 1 bytes, line 37
37
38<script type="text/javascript"> 39 //<!-- 40 window.rootUrl = "\/amember"; //kept for compatibility only! use amUrl() instead 41function amUrl(u, return_path) { 42 var ret = "\/amember" + u; 43 return (return_path || 0) ? [ret, []] : ret; 44}; //--> 45</script>
45 46 47 48<!-- userLayoutHead() finish --> 49 </head> 50 <body class="am-logged-out am-page-signup am-page-signup-wefuckvr am-page-signup-65PolRxUI"> 51 <style> 52* { box-sizing: border-box; } 53body { 54 margin: 0; 55 background: #000; 56 color: #fff; 57 font-family: Arial, sans-serif; 58} 59.page { 60 display: grid; 61 grid-template-columns: 1fr 1fr; 62 gap:15px; 63 min-height: 100vh; 64 background: #000; 65 max-width: 1100px; 66 margin: 0 auto; 67 padding: 0.5rem 0px; 68} 69.left img { 70 width: 100%; 71 72 object-fit: cover; 73} 74/* Banner variants: SFW shown by default; NSFW only when <html> has .rpbp-nsfw */ 75.rpbp-banner { width: 100%; display: block; } 76.rpbp-banner-nsfw { display: none; } 77.rpbp-nsfw .rpbp-banner-sfw { display: none; } 78.rpbp-nsfw .rpbp-banner-nsfw { display: block; } 79/* Mobile banner block lives in .right and only shows on small screens */ 80.left-mobile { display: none; } 81.left-mobile img { width: 100%; object-fit: cover; } 82.right { 83 padding: 0px 5px; 84 position: relative; 85} 86#rpbp-submit-overlay { 87 display: none; 88 position: absolute; 89 inset: 0; 90 z-index: 100; 91 background: rgba(0,0,0,0.72); 92 align-items: center; 93 justify-content: center; 94} 95.rpbp-spinner { 96 width: 44px; 97 height: 44px; 98 border: 4px solid rgba(255,255,255,0.15); 99 border-top-color: #614385; 100 border-radius: 50%; 101 animation: rpbp-spin 0.75s linear infinite; 102} 103@keyframes rpbp-spin { to { transform: rotate(360deg); } } 104.logo { 105 text-align: center; 106 font-size: 46px; 107 font-family: Georgia, serif; 108 margin-bottom: 0px; 109 letter-spacing: 2px; 110} 111.subtitle { 112 text-align: center; 113 font-size: 12px; 114 color: #aaa; 115 margin-bottom: 12px; 116} 117.login { 118 display: grid; 119 grid-template-columns: 1fr 1fr; 120 gap: 7px; 121 margin-bottom: 11px; 122} 123.login input { 124 height: 34px; 125 border: 1px solid #444; 126 background: #fff; 127 color: #000; 128 padding: 0 10px; 129 font-size: 12px; 130} 131h3 { 132 text-align: center; 133 font-size: 16px; 134 margin: 10px 0 6px; 135 font-weight: bold; 136} 137.tabs { 138 display: grid; 139 grid-template-columns: 1fr 1fr; 140 gap: 7px; 141 margin-bottom: 8px; 142} 143.option { 144 background: #1c1c1c; 145 border: 1px solid #444; 146 padding: 9px 8px; 147 cursor: pointer; 148 font-weight: bold; 149 text-align: center; 150 font-size: 12px; 151 position: relative; 152} 153.option.active, 154.plan.active { 155 background: #e95c7d; 156 color: #000; 157 border-color: #e95c7d; 158} 159.all-sites-wrap { 160 position: relative; 161} 162.discount-tag { 163 position: absolute; 164 top: -8px; 165 right: -6px; 166 background: #e00000; 167 color: #fff; 168 font-size: 9px; 169 font-weight: bold; 170 padding: 2px 5px; 171 border-radius: 2px; 172 z-index: 2; 173} 174.plans { 175 display: grid; 176 gap: 6px; 177 margin-bottom: 14px; 178} 179.plan { 180 display: flex; 181 justify-content: space-between; 182 align-items: center; 183 background: #222; 184 border: 1px solid #3a3a3a; 185 padding: 9px 12px; 186 cursor: pointer; 187 min-height: 54px; 188} 189.plan-title { 190 font-size: 13px; 191 font-weight: bold; 192} 193.billed { 194 font-size: 10px; 195 color: #aaa; 196 margin-top: 3px; 197} 198.plan.active .billed { 199 color: #222; 200} 201.hot-tag { 202 background: #e00000; 203 color: #fff; 204 font-size: 9px; 205 font-weight: bold; 206 padding: 2px 5px; 207 margin-left: 6px; 208 border-radius: 2px; 209} 210.plan-price { 211 text-align: right; 212} 213.day-price { 214 font-size: 18px; 215 font-weight: bold; 216} 217.per-day { 218 font-size: 10px; 219 opacity: 0.75; 220} 221.rpbp-opt-row { 222 text-align:center; 223 /*display: flex;*/ 224 align-items: center; 225 justify-content: space-between; 226 gap: 10px; 227 margin-bottom: 7px; 228} 229/* 230.rpbp-opt-label { 231 font-size: 13px; 232 font-weight: bold; 233}*/ 234.rpbp-opt-select { 235 flex: 1; 236 height: 38px; 237 background: #1c1c1c; 238 color: #fff; 239 border: 1px solid #614385; 240 padding: 0 8px; 241 border-radius:0; 242 font-size: 12px; 243 cursor: pointer; 244 width:100%; 245} 246.rpbp-opt-select:focus, 247.rpbp-opt-select:focus-visible, 248.rpbp-opt-select:focus-within { 249 border-radius: 0 !important; 250 border-color: #614385; 251} 252.rpbp-opt-select, 253.rpbp-opt-select:focus { 254 border-radius: 0 !important; 255 border-color: #614385 !important; 256 outline: none; 257} 258#rpbp-coupon-input:focus { 259 border-color: #614385 !important; 260 outline: none; 261} 262.payments { 263 display: grid; 264 grid-template-columns: repeat(4, 1fr); 265 gap: 7px; 266} 267.continue { 268 width: 100%; 269 margin-top: 14px; 270 background: #614385; 271 color: #000; 272 border: none; 273 padding: 14px; 274 font-size: 17px; 275 font-weight: bold; 276 cursor: pointer; 277} 278.billing-line{font-size:13px;} 279.micro-trust { 280 text-align: center; 281 margin-top: 10px; 282 font-size: 10px; 283 color: #aaa; 284 line-height: 1.4; 285} 286.billing-line strong { 287 color: #e95c7d; 288} 289.awards-logos { 290 display: flex; 291 justify-content: center; 292 gap: 10px; 293 margin: 5px 0; 294} 295.awards-logos img { 296 height: 22px; 297 opacity: 0.8; 298 filter: grayscale(100%); 299} 300.trust-note { 301 font-size: 10px; 302 opacity: 0.8; 303 margin-top:7px; 304 text-align:center; 305} 306.trust-note img{ 307 max-width:55px; 308} 309.byclicking{ 310 text-align:center; 311 margin-top:15px; 312 font-size:12px; 313} 314.byclicking a{ 315 color:#e95c7d; 316} 317.rpbp-recurring-compliance{ 318 text-align:center; 319 margin:12px 0; 320 font-size:12px; 321 opacity:0.85; 322} 323.rpbp-recurring-compliance a{ 324 color:#e95c7d; 325} 326#rpbp-tabs .hot-tag{ 327 position:absolute; 328 top:-10px; 329 right:5px; 330} 331@media(max-width:800px) { 332 .page { grid-template-columns: 1fr; } 333 .left{display:none;} 334 .left img { max-height: 520px; } 335 .left-mobile { display: block; margin-bottom: 10px; } 336 .left-mobile img { max-height: 520px; } 337 .payments { grid-template-columns: 1fr 1fr; } 338 .login { grid-template-columns: 1fr; } 339} 340/* aMember form integration: 2-column grid + dark theme */ 341/* Strip white card + make form a 2-column flex row */ 342.am-signup-inner .am-form { background: transparent !important; border: none !important; margin: 0 !important; } 343form#page-0 { border: none !important; box-shadow: none !important; background: transparent !important; } 344.am-signup-inner .am-form form { 345 display: flex !important; 346 flex-direction: row !important; 347 flex-wrap: wrap !important; 348 gap: 7px !important; 349 background: transparent !important; 350 border: none !important; 351 box-shadow: none !important; 352 padding: 0 !important; 353 margin: 0 0 0px 0 !important; 354} 355/* Strip any fieldset that may exist */ 356.am-signup-inner fieldset, 357.am-signup-inner .fieldset { 358 display: contents !important; 359 border: none !important; 360 padding: 0 !important; 361 margin: 0 !important; 362 min-inline-size: auto !important; 363} 364.am-signup-inner legend { display: none !important; } 365/* Equal-width email + password side by side */ 366.am-signup-inner #row-email-0, 367.am-signup-inner #row-pass-0 { 368 display: block !important; 369 flex: 1 1 0 !important; 370 min-width: 0 !important; 371 margin: 0 !important; 372} 373.am-signup-inner #row-grp-turnstile { flex: 0 0 100% !important; width: 100% !important; } 374.am-signup-inner .am-row { background: transparent !important; margin: 0 !important; padding: 0 !important; } 375/* Kill aMember's 35% label-offset margin that was causing the massive left gap */ 376.am-signup-inner .am-element { margin-left: 0 !important; padding: 0 !important; width: 100% !important; } 377.am-signup-inner .am-element input[type=email], 378.am-signup-inner .am-element input[type=text], 379.am-signup-inner .am-element input[type=password] { 380 height: 44px; 381 border: 1px solid #444; 382 background: #fff; 383 color: #000; 384 padding: 0 10px; 385 font-size: 12px; 386 width: 100%; 387 box-sizing: border-box; 388} 389.am-signup-inner .am-element input[type=email]:focus, 390.am-signup-inner .am-element input[type=text]:focus, 391.am-signup-inner .am-element input[type=password]:focus { 392 border-color: #614385; 393 outline: none; 394 border-width:2px; 395} 396.am-signup-inner .am-element-title { display: none !important; } 397/* Password field: hide strength indicator bar (renders as line above input); fix wrapper width */ 398.am-signup-inner .am-pass-indicator-bar { display: none !important; } 399.am-signup-inner .am-pass-indicator-wrap { display: block !important; width: 100% !important; } 400.am-signup-inner #row-product_id_page-0-0, 401.am-signup-inner #row-paysys_id { display: none !important; } 402.am-signup-inner #row-buttons { display: none !important; } 403.am-signup-inner .am-cta-signup { display: none !important; } 404#rpbp-paysys .option, #rpbp-tabs .option, .plan, #rpbp-coupon-apply { background: #1c1c1c; color: #ffffff; border-color: #444444; } 405#rpbp-paysys .option.active, #rpbp-tabs .option.active, .plan.active { background: #614385; color: #000000; border-color: #614385; } 406.continue { background: #614385; color: #000000; border-color: #614385; } 407.billing-line strong, .byclicking a, .rpbp-recurring-compliance a { color: #614385; } 408.hot-tag { background: #e00000 !important; color: #ffffff !important; } 409</style> 410 411<div class="page rpbp-nsfw"> 412 <div class="left"> 413 <img class="rpbp-banner rpbp-banner-sfw" src="/wp-content/uploads/2025/06/SignupImage_SFW_Parasited.png" alt=""> <img class="rpbp-banner rpbp-banner-nsfw" src="/wp-content/uploads/2025/06/SignupImage_SFW_Parasited.png" alt=""> </div> 414 <div class="right"> 415 <div id="rpbp-submit-overlay"><div class="rpbp-spinner"></div></div> 416 <div class="logo"><img src="https://parasited.com/amember/data/public/632d0ec1edc58.png" alt="Logo" style="max-width:100%;height:auto;display:block;margin:0 auto;"></div> 417 418 419 <h3>Create Account</h3> 420 <div class="am-signup-inner"> 421 <div class="am-form "> <form action="/amember/signup" id="page-0" method="post" data-bricks="{"email":{"class":"email","do_not_allow_copy_paste":false},"password":{"class":"password","do_not_allow_copy_paste":false},"recaptcha":{"class":"recaptcha"},"paysystem":{"class":"paysystem","psHide":{"netvalve":[],"centrobill-crypto":[]}},"java-script-4":{"class":"java-script"},"java-script-2":{"class":"java-script"},"java-script-3":{"class":"java-script"},"java-script-1":{"class":"java-script"}}" data-saved_form_id="16" class="am-signup-form"> 422<div class="am-row" id="row-email-0"> <div class="am-element-title"> <label for="email-0">
422 <span class="required">* </span> Enter your email... </label> </div> <div class="am-element"> <input type="text" size="30" placeholder="E-Mail Address" name="email" id="email-0" /> </div></div> 423<div class="am-row" id="row-pass-0"> <div class="am-element-title"> <label for="pass-0"> <span class="required">* </span> Create a Password </label> </div> <div class="am-element"> <input type="password" autocomplete="new-password" spellcheck="false" class="am-pass-reveal am-with-action am-pass-indicator" placeholder="Password" name="pass" id="pass-0" /> </div></div> 424<div class="am-row" id="row-grp-captcha"> <div class="am-element-title"> <label for="grp-captcha"> </label> </div> <div class="am-element group">
424<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?compat=recaptcha" async defer></script>
424 425<div class="g-recaptcha" 426 data-sitekey="0x4AAAAAADYlp68nqdeZMrbD" 427 data-theme="light" 428 data-size="normal" 429 data-language="en"></div> </div></div> 430<div class="am-row" id="row-paysys_id"> <div class="am-element-title"> <label for="paysys_id"> <span class="required">* </span> Payment System </label> </div> <div class="am-element"> <label for="paysys_id---0" class="radio"><input type="radio" name="paysys_id" data-recurring="true" checked="checked" value="netvalve" id="paysys_id---0"> <span class="am-paysystem-title" id="am-paysystem-netvalve-title">NetValve</span> <span class="am-paysystem-desc" id="am-paysystem-netvalve-desc">Credit Card Payment</span></label><label for="paysys_id---1" class="radio"><input type="radio" name="paysys_id" data-recurring="true" value="centrobill-crypto" id="paysys_id---1"> <span class="am-paysystem-title" id="am-paysystem-centrobill-crypto-title">Cryptocurrency</span> <span class="am-paysystem-desc" id="am-paysystem-centrobill-crypto-desc">Pay with Bitcoin, Ethereum and other cryptocurrencies</span></label> </div></div> 431<div class="am-row" id="row-buttons"> <div class="am-element group"> <input type="submit" value="Proceed to Checkout" class="am-cta-signup" name="_qf_page-0_next" id="_qf_page-0_next-0" /> </div></div><input type="hidden" id="_qf_default" src="data:image/gif;base64,R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=" name="_qf_page-0_next" style="display: none;" /><input type="hidden" name="_save_" id="_save_-0" value="page-0" />
431<script name="" id="qfauto-0"> 432 document.addEventListener('DOMContentLoaded', function() { 433 if (window.location.hash === '#hentaiedpro') { 434 const interval = setInterval(function() { 435 const el = document.querySelector('#rpbp-tabs .option:nth-child(2)'); 436 if (el) { 437 el.click(); 438 clearInterval(interval); 439 } 440 }, 100); 441 // Give up after 5 seconds 442 setTimeout(function() { clearInterval(interval); }, 5000); 443 } 444}); 445 </script>
445
445<script name="" id="qfauto-1"> 446 447 </script>
447
447<script name="" id="qfauto-2"> 448 const observer = new MutationObserver(() => { 449 document.querySelectorAll('.plan-title').forEach(el => { 450 el.childNodes.forEach(node => { 451 if (node.nodeType === Node.TEXT_NODE && /\s*-\s*USD\s*/.test(node.textContent)) { 452 node.textContent = node.textContent.replace(/\s*-\s*USD\s*/, ''); 453 } 454 }); 455 }); 456}); 457 458observer.observe(document.body, { childList: true, subtree: true }); 459 </script>
459
459<script name="" id="qfauto-3"> 460 // Store the original title and custom title 461 const originalTitle = "Subscribe: Hentaied.com"; 462 const customTitle = "Come Back!"; 463 464 let interval; // To store the interval ID 465 466 document.addEventListener("visibilitychange", function() { 467 if (document.hidden) { 468 // Start alternating the title every second when the tab is hidden 469 let toggle = false; // To track which title to display 470 interval = setInterval(() => { 471 document.title = toggle ? originalTitle : customTitle; 472 toggle = !toggle; // Switch the toggle flag for alternating 473 }, 1000); // Interval of 1 second 474 } else { 475 // Clear the interval and restore the original title when the tab is active 476 clearInterval(interval); 477 document.title = originalTitle; 478 } 479 }); 480 </script>
480</form> </div>
481<script> 482jQuery(document).ready(function($) { 483 if (jQuery && jQuery.validator) 484 { 485 jQuery.validator.addMethod("regex", function(value, element, params) { 486 return this.optional(element) || new RegExp(params[0],params[1]).test(value); 487 }, "Invalid Value"); 488 489 jQuery.validator.addMethod("requiredms", function(value, element, params) { 490 return this.optional(element) || jQuery(element).closest('div').find('input[type=hidden]').length() > 0 491 }, "This field is required."); 492 493 jQuery("form#page-0").validate({ 494 ignore: ':hidden' 495 ,errorClass: "am-error" 496 ,rules: {"email":{"required":true,"remote":{"url":"\/amember\/ajax\/check-uniq-email?_url=%2Famember%2Fsignup"}},"pass":{"required":true,"rangelength":["6","32"]}} 497 ,messages: {"email":{"required":"Please enter valid Email","remote":"--wrong email--"},"pass":{"required":"Please enter Password","rangelength":"Password must be between 6 and 32 characters length"}} 498 //,debug : true 499 ,errorPlacement: function(error, element) { 500 error.appendTo( element.parent()); 501 } 502 ,submitHandler: function(form, event) { 503 event.stopPropagation(); 504 var ev = jQuery.Event( "amFormSubmit", { 505 originalEvent : event, 506 callback: function(){ 507 form.submit(); 508 } 509 }); 510 // function shall replace callback to your own code 511 jQuery(form).trigger(ev); 512 if (ev.callback) 513 ev.callback(); 514 } 515 // custom validate js code start 516 517,errorElement: "span" 518 // custom validate js code end 519 }); 520 } 521 // custom js code start 522 523 // custom js code end 524}); 525</script>
525 </div> 526 527 <h3>Select Deal</h3> 528 <div class="tabs" id="rpbp-tabs"> 529 <!-- Rendered by JS from RPBP_CATEGORIES --> 530 </div> 531 532 <h3>Choose An Option</h3> 533 <div class="plans" id="rpbp-plans"> 534 <!-- Rendered by JS from RPBP_PRODUCTS --> 535 </div> 536 537 <div id="rpbp-options-wrap" style="display:none"> 538 <!---<h3>Customize Your Plan</h3>---> 539 <div id="rpbp-options"></div> 540 </div> 541 542 <div id="rpbp-coupon-wrap" style="display:none"> 543 <div id="rpbp-coupon-toggle" style="cursor:pointer;text-align:center;font-size:12px;color:#aaa;margin:10px 0 6px">Have a coupon code? <span id="rpbp-coupon-arrow">▶</span></div> 544 <div id="rpbp-coupon-body" style="display:none"> 545 <div style="display:flex;gap:7px;margin-bottom:6px"> 546 <input type="text" id="rpbp-coupon-input" placeholder="Enter coupon code" style="flex:1;height:44px;border:1px solid #444;background:#1c1c1c;color:#fff;padding:0 10px;font-size:13px;box-sizing:border-box"> 547 <button type="button" id="rpbp-coupon-apply" class="option" style="height:44px;padding:0 16px;font-size:13px">Apply</button> 548 </div> 549 <div id="rpbp-coupon-msg" style="font-size:11px;color:#aaa;min-height:16px"></div> 550 </div> 551 </div> 552 553 <h3>Choose Payment Method</h3> 554 <div class="payments" id="rpbp-paysys"> 555 <!-- Rendered by JS from RPBP_PAYSYSTEMS --> 556 </div> 557 558 <button class="continue" id="continueBtn">CONTINUE ›</button> 559 560 <div class="micro-trust"> 561 <div class="billing-line"> 562 Secure & discreet billing — appears as <strong>RomeroBill</strong> 563 </div> 564 565 <div class="trust-note"><img src="https://parasited.com/wp-content/uploads/2026/06/award-avn.svg" alt=""><img src="https://parasited.com/wp-content/uploads/2026/06/award-xbiz.svg" alt=""></div> 566 </div> 567 <div class="trust-note">Multi award-winning network (AVN & XBIZ)</div> 568 <div class="byclicking">By clicking 'Continue' you confirm you are aged 18+ and have understood our <a href="/terms-and-conditions/">Terms</a> & <a href="/privacy-policy/">Privacy Policy.</a> Payments are facilitated through the secure payment gateway of Netvalve and Curopayments.</div> 569 <div id="rpbp-recurring-compliance" class="rpbp-recurring-compliance" style="display:none"></div> 570 </div> 571</div> 572
573<script> 574var RPBP_PRODUCTS = {"1":[{"id":"132","planId":"132","title":"2 Day Trial - USD","price":6.9900000000000002131628207280300557613372802734375,"period":"2d","label":"2d","currency":"USD","rebillPrice":29.989999999999998436805981327779591083526611328125,"rebillPeriod":"30d","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":true},{"id":"33","planId":"33","title":"30 Day Full Access - USD","price":29.989999999999998436805981327779591083526611328125,"period":"30d","label":"30d","currency":"USD","rebillPrice":29.989999999999998436805981327779591083526611328125,"rebillPeriod":"30d","rebillTimes":99999,"cssClass":"","hotTag":"Most Popular","hidePerDay":false},{"id":"100","planId":"100","title":"180 Day Full Access - USD","price":118.7999999999999971578290569595992565155029296875,"period":"6m","label":"6m","currency":"USD","rebillPrice":118.7999999999999971578290569595992565155029296875,"rebillPeriod":"6m","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":false},{"id":"134","planId":"134","title":"365 Day Full Access - USD","price":199.990000000000009094947017729282379150390625,"period":"1y","label":"1y","currency":"USD","rebillPrice":199.990000000000009094947017729282379150390625,"rebillPeriod":"1y","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":false}],"8":[{"id":"73","planId":"73","title":"Hentaied.pro Access - USD","price":69.9500000000000028421709430404007434844970703125,"period":"30d","label":"30d","currency":"USD","rebillPrice":69.9500000000000028421709430404007434844970703125,"rebillPeriod":"30d","rebillTimes":99999,"cssClass":"","hotTag":"","hidePerDay":false}]}; 575var RPBP_CATEGORIES = [{"id":"1","label":"Single Serie only","cssClass":"","hotTag":""},{"id":"8","label":"All Series Membership","cssClass":"","hotTag":"65% OFF"}]; 576var RPBP_PAYSYSTEMS = [{"id":"netvalve","title":"Credit card","recurring":true,"cssClass":""},{"id":"centrobill-crypto","title":"Crypto","recurring":true,"cssClass":""}]; 577var RPBP_MATRIX = {"2":["netvalve"],"33":["netvalve"],"72":["netvalve"],"73":["netvalve"],"99":["netvalve","centrobill-crypto"],"100":["netvalve","centrobill-crypto"],"128":["netvalve"],"129":["netvalve"],"130":["netvalve"],"131":["netvalve","centrobill-crypto"],"132":["netvalve"],"134":["netvalve","centrobill-crypto"]}; 578var RPBP_DEFAULT_PAYSYS = {"2":"netvalve","33":"netvalve","72":"netvalve","73":"netvalve","99":"netvalve","100":"netvalve","128":"netvalve","129":"netvalve","130":"netvalve","131":"netvalve","132":"netvalve","134":"netvalve"}; 579var RPBP_OPTIONS = []; 580var RPBP_COUPON_MAP = {"2":["netvalve"],"33":["netvalve"],"72":["netvalve"],"73":["netvalve"],"99":["netvalve"],"100":["netvalve"],"128":["netvalve"],"129":["netvalve"],"130":["netvalve"],"131":["netvalve"],"132":["netvalve"],"134":["netvalve"]}; 581var RPBP_DEFAULT_PRODUCTS = ["2","33"]; 582var RPBP_RECURRING_TEXT = ""; 583 584// Left-panel banner mode. SFW by default; call rpbpSetBannerMode('nsfw') to switch 585// (the NSFW-condition logic will drive this later). 586window.rpbpSetBannerMode = function (mode) { 587 document.documentElement.classList.toggle('rpbp-nsfw', mode === 'nsfw'); 588}; 589 590(function () { 591 var selectedCatId = null; 592 var selectedProdId = null; 593 var selectedPay = null; 594 595 function enforceMatrix() { 596 if (selectedProdId === null) return; 597 // Auto-select paysys: prefer configured default for this product, fall back to first visible 598 if (!selectedPay) { 599 var payBtns = document.querySelectorAll('[data-pay]'); 600 var preferred = RPBP_DEFAULT_PAYSYS[String(selectedProdId)] || null; 601 var target = null; 602 payBtns.forEach(function (btn) { 603 if (!target) target = btn; 604 if (preferred && btn.getAttribute('data-pay') === preferred) target = btn; 605 }); 606 if (target) { 607 payBtns.forEach(function (btn) { btn.classList.remove('active'); }); 608 target.classList.add('active'); 609 selectedPay = target.getAttribute('data-pay'); 610 } 611 } 612 } 613 614 function enforcePaysysByCategory() { 615 if (selectedCatId === null) return; 616 var prods = RPBP_PRODUCTS[selectedCatId] || RPBP_PRODUCTS[String(selectedCatId)] || []; 617 var available = {}; 618 prods.forEach(function (prod) { 619 var allowed = RPBP_MATRIX[String(prod.id)] || []; 620 allowed.forEach(function (psId) { available[psId] = true; }); 621 }); 622 document.querySelectorAll('[data-pay]').forEach(function (btn) { 623 var psId = btn.getAttribute('data-pay'); 624 var ok = available[psId] === true; 625 btn.style.display = ok ? '' : 'none'; 626 if (!ok && btn.classList.contains('active')) { 627 btn.classList.remove('active'); 628 if (selectedPay === psId) selectedPay = null; 629 } 630 }); 631 } 632 633 function enforceProductsByPaysys() { 634 if (selectedPay === null) return; 635 var prodBtns = document.querySelectorAll('[data-prod]'); 636 prodBtns.forEach(function (btn) { 637 var pid = String(btn.getAttribute('data-prod')); 638 var allowed = RPBP_MATRIX[pid]; 639 var ok = (allowed !== undefined) && (allowed.indexOf(selectedPay) !== -1); 640 btn.style.display = ok ? '' : 'none'; 641 if (!ok && btn.classList.contains('active')) { 642 btn.classList.remove('active'); 643 if (String(selectedProdId) === pid) selectedProdId = null; 644 } 645 }); 646 // If selected product was hidden, switch to first visible one 647 if (selectedProdId === null) { 648 prodBtns.forEach(function (btn) { 649 if (btn.style.display !== 'none' && selectedProdId === null) { 650 btn.classList.add('active'); 651 selectedProdId = btn.getAttribute('data-prod'); 652 } 653 }); 654 } 655 // The active product may have changed above (e.g. a paysys
655switch hid it), 656 // so re-render options â otherwise a previous product's options dropdown 657 // lingers when switching to a product that has none. 658 renderProductOptions(); 659 } 660 661 function getSelectedOptionDeltas() { 662 var total = 0; 663 document.querySelectorAll('#rpbp-options select[data-opt-name]').forEach(function (sel) { 664 var pid = sel.getAttribute('data-opt-pid'); 665 var name = sel.getAttribute('data-opt-name'); 666 if (String(pid) !== String(selectedProdId)) return; 667 var opts = RPBP_OPTIONS[String(pid)] || []; 668 opts.forEach(function (opt) { 669 if (opt.name !== name) return; 670 opt.choices.forEach(function (c) { if (c.key === sel.value) total += c.delta; }); 671 }); 672 }); 673 return total; 674 } 675 676 function updatePlanPrice() { 677 if (!selectedProdId) return; 678 var prod = getProdData(); 679 if (!prod) return; 680 var delta = getSelectedOptionDeltas(); 681 var adjPrice = prod.price + delta; 682 var days = parseDays(prod.period); 683 var perDay = (Math.floor(adjPrice / days * 100) / 100).toFixed(2); 684 var currency = prod.currency || 'USD'; 685 var symbol = currency === 'USD' ? '$' : currency === 'EUR' ? 'â¬' : currency + ' '; 686 var planEl = document.querySelector('[data-prod="' + selectedProdId + '"]'); 687 if (!planEl) return; 688 var billedEl = planEl.querySelector('.billed'); 689 var dayPriceEl = planEl.querySelector('.day-price'); 690 if (billedEl) billedEl.textContent = 'Billed as ' + symbol + adjPrice.toFixed(2); 691 if (dayPriceEl) dayPriceEl.textContent = symbol + perDay; 692 } 693 694 function formatPeriodHuman(period) { 695 var m = String(period).match(/^(\d+)(d|m|y)$/i); 696 if (!m) return String(period); 697 var n = parseInt(m[1], 10); 698 var u = m[2].toLowerCase(); 699 var name = u === 'd' ? 'day' : u === 'm' ? 'month' : 'year'; 700 return n + ' ' + name + (n === 1 ? '' : 's'); 701 } 702 703 // Recurring compliance text (admin setting) shown near CONTINUE, with 704 // {amount} / {period} placeholders filled from the selected product's rebill. 705 function isSelectedPaysysRecurring() { 706 if (!selectedPay) return false; 707 for (var i = 0; i < RPBP_PAYSYSTEMS.length; i++) { 708 if (String(RPBP_PAYSYSTEMS[i].id) === String(selectedPay)) { 709 return !!RPBP_PAYSYSTEMS[i].recurring; 710 } 711 } 712 return false; 713 } 714 715 function renderRecurringCompliance() { 716 var el = document.getElementById('rpbp-recurring-compliance'); 717 if (!el) return; 718 var tpl = RPBP_RECURRING_TEXT || ''; 719 var prod = getProdData(); 720 var _by = document.querySelector('.byclicking'); 721 if (!tpl || !prod) { 722 el.style.display = 'none'; 723 el.innerHTML = ''; 724 if (_by) _by.style.display = ''; 725 return; 726 } 727 // Recurs only when BOTH the product and the selected gateway recur. 728 // Otherwise the recurrence period is shown as "0 days". 729 var productRecurring = (prod.rebillTimes > 0) && (parseFloat(prod.rebillPrice) > 0); 730 var recurs = productRecurring && isSelectedPaysysRecurring(); 731 var currency = prod.currency || 'USD'; 732 var symbol = currency === 'USD' ? '$' : currency === 'EUR' ? 'â¬' : currency + ' '; 733 var amount = symbol + parseFloat(prod.rebillPrice || 0).toFixed(2); 734 var period = recurs ? formatPeriodHuman(prod.rebillPeriod) : '0 days'; 735 el.innerHTML = tpl 736 .replace(/\{amount\}/gi, amount) 737 .replace(/\{recurring_amount\}/gi, amount) 738 .replace(/\{period\}/gi, period) 739 .replace(/\{recurring_period\}/gi, period); 740 el.style.display = ''; 741 if (_by) _by.style.display = 'none'; 742 } 743 744 // Hide the "Choose Payment Method" heading + methods row when the whole visible 745 // category offers only one payment method â i.e. the union of methods across all
746 // products currently shown for this audience (US/non-US currency filter already 747 // applied server-side) is a single method. Nothing to choose in that case. 748 function updatePaysysSectionVisibility() { 749 var container = document.getElementById('rpbp-paysys'); 750 if (!container) return; 751 var heading = container.previousElementSibling; 752 var methods = {}; 753 if (selectedCatId !== null) { 754 var prods = RPBP_PRODUCTS[selectedCatId] || RPBP_PRODUCTS[String(selectedCatId)] || []; 755 prods.forEach(function(p) { 756 (RPBP_MATRIX[String(p.id)] || []).forEach(function(m) { methods[m] = true; }); 757 }); 758 } 759 var hide = Object.keys(methods).length <= 1; 760 container.style.display = hide ? 'none' : ''; 761 if (heading && heading.tagName === 'H3') { 762 heading.style.display = hide ? 'none' : ''; 763 } 764 } 765 766 function renderProductOptions() { 767 renderRecurringCompliance(); 768 updatePaysysSectionVisibility(); 769 var wrap = document.getElementById('rpbp-options-wrap'); 770 var container = document.getElementById('rpbp-options'); 771 if (!wrap || !container) return; 772 container.innerHTML = ''; 773 var opts = selectedProdId ? (RPBP_OPTIONS[String(selectedProdId)] || []) : []; 774 if (opts.length === 0) { 775 wrap.style.display = 'none'; 776 return; 777 } 778 wrap.style.display = ''; 779 opts.forEach(function (opt) { 780 var row = document.createElement('div'); 781 row.className = 'rpbp-opt-row'; 782 var lbl = document.createElement('h3'); 783 lbl.className = 'rpbp-opt-label'; 784 lbl.textContent = opt.title; 785 var sel = document.createElement('select'); 786 sel.className = 'rpbp-opt-select'; 787 sel.setAttribute('data-opt-name', opt.name); 788 sel.setAttribute('data-opt-pid', String(selectedProdId)); 789 opt.choices.forEach(function (c) { 790 var o = document.createElement('option'); 791 o.value = c.key; 792 o.textContent = c.label; 793 if (c.key === opt.default) o.selected = true; 794 sel.appendChild(o); 795 }); 796 // sel.onchange = updatePlanPrice; 797 row.appendChild(lbl); 798 row.appendChild(sel); 799 container.appendChild(row); 800 801 }); 802 // updatePlanPrice(); 803 } 804 805 function updateCouponVisibility() { 806 var wrap = document.getElementById('rpbp-coupon-wrap'); 807 if (!wrap) return; 808 var pidCoupons = selectedProdId ? (RPBP_COUPON_MAP[String(selectedProdId)] || []) : []; 809 var show = selectedProdId && selectedPay && pidCoupons.indexOf(String(selectedPay)) !== -1; 810 if (!show) { 811 wrap.style.display = 'none'; 812 document.getElementById('rpbp-coupon-body').style.display = 'none'; 813 document.getElementById('rpbp-coupon-arrow').innerHTML = '▶'; 814 } else { 815 wrap.style.display = ''; 816 } 817 } 818 819 function renderTabs() { 820 var container = document.getElementById('rpbp-tabs'); 821 if (!container) return; 822 container.innerHTML = ''; 823 RPBP_CATEGORIES.forEach(function (cat, idx) { 824 var div = document.createElement('div'); 825 div.className = 'option' + (idx === 0 ? ' active' : ''); 826 if (cat.cssClass) { div.classList.add(cat.cssClass); } 827 div.setAttribute('data-cat', cat.id); 828 if (cat.hotTag) { 829 div.innerHTML = escapeHtml(cat.label) + ' <span class="hot-tag">' + escapeHtml(cat.hotTag) + '</span>'; 830 } else { 831 div.textContent = cat.label; 832 } 833 div.onclick = function () { 834 document.querySelectorAll('[data-cat]').forEach(function (x) { x.classList.remove('active'); }); 835 div.classList.add('active'); 836 selectedCatId = cat.id; 837 renderPlans(); 838 enforcePaysysByCategory(); 839 enforceMatrix(); 840 enforceProductsByPaysys(); 841 renderProductOptions(); 842 updateCouponVisibility(); 843 }; 844 container.appendChild(div); 845 }); 846 var show = RPBP_CATEGORIES.length >= 2; 847 container.style.display = show ? '' : 'none'; 848 var heading = container.previousElementSibling; 849 if (heading) heading.style.display = show ? '' : 'none'; 850 if (RPBP_CATEGORIES.length > 0) { 851 selectedCatId = RPBP_CATEGORIES[0].id; 852 } 853 } 854 855 function parseDays(period) { 856 // "2d" -> 2, "30d" -> 30, "180d" -> 180, "365d" -> 365 857 // "1m" -> 30, "6m" -> 180, "1y" -> 365 (approximate fallbacks) 858 var m = String(period).match(/^(\d+)(d|m|y)$/i); 859 if (!m) return 1; 860 var n = parseInt(m[1], 10); 861 if (m[2].toLowerCase() === 'd') return n; 862 if (m[2].toLowerCase() === 'm') return n * 30; 863 if (m[2].toLowerCase() === 'y') return n * 365; 864 return 1; 865 } 866 867 function renderPlans() { 868 var container = document.getElementById('rpbp-plans'); 869 if (!container) return; 870 container.innerHTML = ''; 871 var catKey = selectedCatId !== null ? selectedCatId : null; 872 // Find matching category in RPBP_PRODUCTS (keys are string category IDs) 873 var prods = null; 874 if (catKey !== null) { 875 // RPBP_PRODUCTS keys may be numeric or string 876 prods = RPBP_PRODUCTS[catKey] || RPBP_PRODUCTS[String(catKey)] || null; 877 } 878 if (!prods || prods.length === 0) return; 879 880 // Among the products actually shown, pick the default-marked one with the 881 // smallest numeric id. (Multiple products may be flagged default â e.g. a USD 882 // and a EUR variant â but only one currency is rendered per visitor.) 883 var defaultProdId = null; 884 if (RPBP_DEFAULT_PRODUCTS && RPBP_DEFAULT_PRODUCTS.length) { 885 var _defs = prods.filter(function(p) { return RPBP_DEFAULT_PRODUCTS.indexOf(String(p.id)) !== -1; });
886 if (_defs.length) { 887 _defs.sort(function(a, b) { return parseInt(a.id, 10) - parseInt(b.id, 10); }); 888 defaultProdId = String(_defs[0].id); 889 } 890 } 891 892 prods.forEach(function (prod, idx) { 893 var el = document.createElement('div'); 894 var isActive = defaultProdId ? (String(prod.id) === defaultProdId) : (idx === 0); 895 el.className = 'plan' + (isActive ? ' active' : ''); 896 if (prod.cssClass) { el.classList.add(prod.cssClass); } 897 el.setAttribute('data-prod', prod.id); 898 899 var currency = prod.currency || 'USD'; 900 var symbol = currency === 'USD' ? '$' : currency === 'EUR' ? 'â¬' : currency + ' '; 901 var days = parseDays(prod.period); 902 var perDay = (Math.floor(prod.price / days * 100) / 100).toFixed(2); 903 var hotTag = prod.hotTag ? ' <span class="hot-tag">' + escapeHtml(prod.hotTag) + '</span>' : ''; 904 905 el.innerHTML = 906 '<div class="plan-left">' + 907 '<div class="plan-title">' + escapeHtml(prod.title) + hotTag + '</div>' + 908 '<div class="billed">Billed as ' + symbol + prod.price.toFixed(2) + '</div>' + 909 '</div>' + 910 (prod.hidePerDay ? '' : 911 '<div class="plan-price">' + 912 '<div class="day-price">' + symbol + perDay + '</div>' + 913 '<div class="per-day">per day</div>' + 914 '</div>'); 915 916 el.onclick = function () { 917 document.querySelectorAll('[data-prod]').forEach(function (x) { x.classList.remove('active'); }); 918 el.classList.add('active'); 919 selectedProdId = prod.id; 920 enforceMatrix(); 921 renderProductOptions(); 922 updateCouponVisibility(); 923 }; 924 925 container.appendChild(el); 926 }); 927 928 if (prods.length > 0) { 929 selectedProdId = defaultProdId || prods[0].id; 930 } 931 } 932 933 function renderPaysystems() { 934 var container = document.getElementById('rpbp-paysys'); 935 if (!container) return; 936 container.innerHTML = ''; 937 RPBP_PAYSYSTEMS.forEach(function (ps, idx) { 938 var div = document.createElement('div'); 939 div.className = 'option' + (idx === 0 ? ' active' : ''); 940 if (ps.cssClass) { div.classList.add(ps.cssClass); } 941 div.setAttribute('data-pay', ps.id); 942 div.textContent = ps.title; 943 div.onclick = function () { 944 if (div.classList.contains('disabled')) return; 945 document.querySelectorAll('[data-pay]').forEach(function (x) { x.classList.remove('active'); }); 946 div.classList.add('active'); 947 selectedPay = ps.id; 948 enforceProductsByPaysys(); 949 updateCouponVisibility(); 950 }; 951 container.appendChild(div); 952 }); 953 if (RPBP_PAYSYSTEMS.length > 0) { 954 selectedPay = RPBP_PAYSYSTEMS[0].id; 955 } 956 } 957 958 function escapeHtml(str) { 959 return String(str) 960 .replace(/&/g, '&') 961 .replace(/</g, '<') 962 .replace(/>/g, '>') 963 .replace(/"/g, '"'); 964 } 965 966 function getProdData() { 967 for (var catId in RPBP_PRODUCTS) { 968 var prods = RPBP_PRODUCTS[catId]; 969 for (var i = 0; i < prods.length; i++) { 970 if (String(prods[i].id) === String(selectedProdId)) { 971 return prods[i]; 972 } 973 } 974 } 975 return null; 976 } 977 978 function initContinueBtn() { 979 var btn = document.getElementById('continueBtn'); 980 if (!btn) return; 981 982 // Intercept Enter-key form submission: if our injected fields are absent, treat as btn click 983 var _nativeForm = document.getElementById('page-0'); 984 if (_nativeForm) { 985 _nativeForm.addEventListener('submit', function(e) { 986 if (_nativeForm.querySelector('._rpbp_inject')) return; // already injected â allow through 987 e.preventDefault(); 988 btn.click(); 989 }); 990 } 991 992 btn.addEventListener('click', function (e) { 993 e.preventDefault(); 994 if (!selectedProdId) { 995 alert('Please select a plan.'); 996 return; 997 } 998 if (!selectedPay) { 999 alert('Please select a payment method.'); 1000 return; 1001 } 1002 var form = document.getElementById('page-0'); 1003 if (!form) return; 1004 1005 var prod = getProdData(); 1006 if (!prod || !prod.planId) { 1007 alert('Plan data not found. Please refresh the page.'); 1008 return; 1009 } 1010 1011 // Validate account fields (email/password for logged-out users)
1011UP FRONT. 1012 // jQuery Validate reuses existing .am-error nodes on repeated failures, so the 1013 // MutationObserver below only catches the FIRST failure. Checking validity here 1014 // means a second click on an invalid form bails before showing the overlay. 1015 if (window.jQuery) { 1016 var $form = window.jQuery(form); 1017 var _validator = $form.data('validator'); 1018 if (_validator && !$form.valid()) { 1019 return; // Validate shows/updates the messages; do not show the spinner 1020 } 1021 } 1022 1023 // Clean up from any previous click 1024 form.querySelectorAll('._rpbp_inject').forEach(function(el) { el.parentNode.removeChild(el); }); 1025 form.querySelectorAll('._rpbp_inject_disabled').forEach(function(r) { r.disabled = false; r.classList.remove('_rpbp_inject_disabled'); }); 1026 1027 // Disable native paysys_id radios â our injected hidden takes precedence 1028 form.querySelectorAll('input[name="paysys_id"]').forEach(function(r) { r.disabled = true; r.classList.add('_rpbp_inject_disabled'); }); 1029 1030 // For virtual sub-method IDs (e.g. "curopayments.creditcard"), split into real paysys_id + sub-method 1031 var dotIdx = selectedPay.indexOf('.'); 1032 var realPaysysId = dotIdx !== -1 ? selectedPay.slice(0, dotIdx) : selectedPay; 1033 var curoMethod = dotIdx !== -1 ? selectedPay.slice(dotIdx + 1) : null; 1034 1035 // Inject coupon code only when coupon section is visible for this product+paysys combo 1036 var couponWrap = document.getElementById('rpbp-coupon-wrap'); 1037 var couponVal = (couponWrap && couponWrap.style.display !== 'none') 1038 ? ((document.getElementById('rpbp-coupon-input') || {}).value || '').trim() 1039 : ''; 1040 if (couponVal) { 1041 var couponInput = document.createElement('input'); 1042 couponInput.type = 'hidden'; 1043 couponInput.name = 'coupon'; 1044 couponInput.value = couponVal.trim(); 1045 couponInput.className = '_rpbp_inject'; 1046 form.appendChild(couponInput); 1047 } 1048 1049 // Inject selected product option values 1050 document.querySelectorAll('#rpbp-options select[data-opt-name]').forEach(function (sel) { 1051 var optInput = document.createElement('input'); 1052 optInput.type = 'hidden'; 1053 optInput.name = 'rpbp_options[' + sel.getAttribute('data-opt-name') + ']'; 1054 optInput.value = sel.value; 1055 optInput.className = '_rpbp_inject'; 1056 form.appendChild(optInput); 1057 }); 1058 1059 // rpbp_product is NOT a QF2 form element â plugin reads it directly from $_POST 1060 var prodInput = document.createElement('input'); 1061 prodInput.type = 'hidden'; 1062 prodInput.name = 'rpbp_product'; 1063 prodInput.value = prod.id + '-' + prod.planId; 1064 prodInput.className = '_rpbp_inject'; 1065 form.appendChild(prodInput); 1066 1067 var psInput = document.createElement('input'); 1068 psInput.type = 'hidden'; 1069 psInput.name = 'paysys_id'; 1070 psInput.value = realPaysysId; 1071 psInput.className = '_rpbp_inject'; 1072 form.appendChild(psInput); 1073 1074 if (curoMethod) { 1075 var curoInput = document.createElement('input'); 1076 curoInput.type = 'hidden'; 1077 curoInput.name = 'rpbp_payment_type_id'; 1078 curoInput.value = curoMethod; 1079 curoInput.className = '_rpbp_inject'; 1080 form.appendChild(curoInput); 1081 } 1082 1083 // Show overlay + lock button before handing off to aMember 1084 var overlay = document.getElementById('rpbp-submit-overlay'); 1085 1086 // Hand off to aMember (validates account fields + submits). Wrapped so the 1087 // Turnstile gate below can defer it until a fresh anti-spam token exists. 1088 function _finishSubmit() { 1089 if (overlay) overlay.style.display = 'flex'; 1090 btn.disabled = true; 1091 1092 // If jQuery Validate rejects the form it adds .am-error nodes â page stays. 1093 // Watch for that and clear the overlay so the user can correct and retry. 1094 var _observer = new MutationObserver(function(mutations) { 1095 for (var mi = 0; mi < mutations.length; mi++) { 1096 for (var ni = 0; ni < mutations[mi].addedNodes.length; ni++) { 1097 var node = mutations[mi].addedNodes[ni]; 1098 if (node.nodeType === 1 && (node.classList.contains('am-error') || node.querySelector && node.querySelector('.am-error'))) { 1099 if (overlay) overlay.style.display = 'none'; 1100 btn.disabled = false;
1101 _observer.disconnect(); 1102 return; 1103 } 1104 } 1105 } 1106 }); 1107 _observer.observe(form, { childList: true, subtree: true }); 1108 1109 // Click aMember's submit button to trigger jQuery validation on account fields. 1110 // When user is already logged in the native submit button is absent â fall back to direct submit. 1111 var submitBtn = form.querySelector('input[type="submit"]'); 1112 if (submitBtn) { submitBtn.disabled = false; submitBtn.click(); } else { form.submit(); } 1113 } 1114 1115 // --- Cloudflare Turnstile gate --- 1116 // The anti-spam brick fails server-side ("Anti Spam check failed") if the 1117 // g-recaptcha-response token is missing/stale at submit â which happens with 1118 // an invisible/managed widget that hasn't produced a token yet. Read the 1119 // current token; if absent, trigger execute() and poll briefly before 1120 // handing off. If it never arrives, tell the user instead of failing. 1121 function _tsToken() { 1122 // Search the whole document â some Turnstile modes append the response 1123 // field outside the form. 1124 var v = ''; 1125 document.querySelectorAll('[name="g-recaptcha-response"], [name="cf-turnstile-response"]').forEach(function(el) { 1126 if (!v && el.value) v = el.value; 1127 }); 1128 if (!v && window.grecaptcha && grecaptcha.getResponse) { try { v = grecaptcha.getResponse() || ''; } catch (_e) {} } 1129 if (!v && window.turnstile && turnstile.getResponse) { try { v = turnstile.getResponse() || ''; } catch (_e) {} } 1130 return v; 1131 } 1132 1133 var turnstileEl = form.querySelector('.g-recaptcha, .cf-turnstile'); 1134 if (!turnstileEl || _tsToken()) { 1135 _finishSubmit(); 1136 return; 1137 } 1138 1139 // Token not ready â show the spinner and poll. Only invisible widgets need 1140 // an explicit execute(); normal/managed widgets auto-run, and calling 1141 // execute() on them throws "already executing". 1142 if (overlay) overlay.style.display = 'flex'; 1143 btn.disabled = true; 1144 if (turnstileEl.getAttribute('data-size') === 'invisible') { 1145 try { if (window.grecaptcha && grecaptcha.execute) gre
1145captcha.execute(); } catch (_e) {} 1146 try { if (window.turnstile && turnstile.execute) turnstile.execute(); } catch (_e) {} 1147 } 1148 1149 var _tsWaited = 0; 1150 var _tsPoll = setInterval(function() { 1151 if (_tsToken()) { 1152 clearInterval(_tsPoll); 1153 _finishSubmit(); 1154 return; 1155 } 1156 _tsWaited += 250; 1157 if (_tsWaited >= 10000) { 1158 clearInterval(_tsPoll); 1159 if (overlay) overlay.style.display = 'none'; 1160 btn.disabled = false; 1161 alert('Please complete the anti-spam check and try again.'); 1162 } 1163 }, 250); 1164 }); 1165 } 1166 1167 function init() { 1168 renderTabs(); 1169 renderPaysystems(); 1170 renderPlans(); 1171 enforcePaysysByCategory(); 1172 enforceMatrix(); 1173 enforceProductsByPaysys(); 1174 renderProductOptions(); 1175 updateCouponVisibility(); 1176 initContinueBtn(); 1177 1178 // Coupon toggle 1179 var couponToggle = document.getElementById('rpbp-coupon-toggle'); 1180 var couponBody = document.getElementById('rpbp-coupon-body'); 1181 var couponArrow = document.getElementById('rpbp-coupon-arrow'); 1182 if (couponToggle && couponBody) { 1183 couponToggle.addEventListener('click', function () { 1184 var open = couponBody.style.display !== 'none'; 1185 couponBody.style.display = open ? 'none' : ''; 1186 couponArrow.innerHTML = open ? '▶' : '▼'; 1187 }); 1188 } 1189 var couponApply = document.getElementById('rpbp-coupon-apply'); 1190 if (couponApply) { 1191 couponApply.addEventListener('click', function () { 1192 var code = (document.getElementById('rpbp-coupon-input').value || '').trim(); 1193 var msg = document.getElementById('rpbp-coupon-msg'); 1194 if (code) { 1195 msg.textContent = 'â Code â' + code + 'â will be applied on checkout'; 1196 msg.style.color = '#7ecf7e'; 1197 } else { 1198 msg.textContent = 'Please enter a coupon code.'; 1199 msg.style.color = '#f08080'; 1200 } 1201 }); 1202 } 1203 } 1204 1205 if (document.readyState === 'loading') { 1206 document.addEventListener('DOMContentLoaded', init); 1207 } else { 1208 init(); 1209 } 1210 1211 window.addEventListener('pageshow', function(e) { 1212 if (!e.persisted) return; 1213 // bfcache restore â clean submit state 1214 var overlay = document.getElementById('rpbp-submit-overlay'); 1215 var btn = document.getElementById('continueBtn'); 1216 var form = document.getElementById('page-0'); 1217 if (overlay) overlay.style.display = 'none'; 1218 if (btn) btn.disabled = false; 1219 if (form) { 1220 var nativeSubmit = form.querySelector('input[type="submit"]'); 1221 if (nativeSubmit) nativeSubmit.disabled = false; 1222 form.querySelectorAll('._rpbp_inject').forEach(function(el) { el.parentNode.removeChild(el); }); 1223 form.querySelectorAll('._rpbp_inject_disabled').forEach(function(r) { r.disabled = false; r.classList.remove('_rpbp_inject_disabled'); }); 1224 } 1225 // Clear coupon 1226 var couponInput = document.getElementById('rpbp-coupon-input'); 1227 var couponMsg = document.getElementById('rpbp-coupon-msg'); 1228 var couponBody = document.getElementById('rpbp-coupon-body'); 1229 var couponArrow = document.getElementById('rpbp-coupon-arrow'); 1230 if (couponInput) couponInput.value = ''; 1231 if (couponMsg) couponMsg.textContent = ''; 1232 if (couponBody) couponBody.style.display = 'none'; 1233 if (couponArrow) couponArrow.innerHTML = '▶'; 1234 // Reset product/paysys selection 1235 renderPaysystems(); 1236 renderPlans(); 1237 enforcePaysysByCategory(); 1238 enforceMatrix(); 1239 enforceProductsByPaysys(); 1240 renderProductOptions(); 1241 updateCouponVisibility(); 1242 }); 1243}()); 1244</script>
1244 <!-- Google Tag Manager -->
1245<script>
vendor: 327 bytes, lines 1245-1249
1245(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1246new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1247j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1248'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 1249})(window,document,'script','dataLayer','
1249GTM-KJNCXKR
vendor: 3 bytes, line 1249
1249');
1249</script>
1249 1250<!-- End Google Tag Manager --><!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 1250-1251
1250 1251<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1251GTM-KJNCXKR
vendor: 83 bytes, lines 1251-1252
1251" 1252height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1253<!-- End Google Tag Manager (noscript) --><img src='/amember/cron/tasks' width='1' height='1' style='display:none'></body> 1254</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.