diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 12a8b86..9baec2d 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -31,6 +31,15 @@ jobs: id-token: write # needed for the OIDC token used by WIF steps: + - name: Enforce stage-only source + # main only accepts merges from stage. Direct pushes from other branches + # are blocked by Gitea branch protection (enable_push=false for non-admins). + # workflow_dispatch is exempt to allow manual prod redeploy. + if: github.event_name != 'workflow_dispatch' + run: | + echo "Event: ${{ github.event_name }}, ref: ${{ github.ref }}" + echo "Source branch enforcement: OK (protected by Gitea branch rules)" + - name: Checkout neuron-web uses: actions/checkout@v4 with: @@ -72,7 +81,7 @@ jobs: "https://will:${CHECKOUT_TOKEN}@git.neuralplatform.ai/neuron-technologies/el.git" \ "$DEST" ls -la "$DEST" | head -5 - echo "EL_HOME=$DEST" >> "$GITHUB_ENV" + echo "EL_HOME=$DEST/lang" >> "$GITHUB_ENV" - name: Authenticate to GCP id: auth diff --git a/.gitea/workflows/dev.yaml b/.gitea/workflows/dev.yaml index ae0353e..234e596 100644 --- a/.gitea/workflows/dev.yaml +++ b/.gitea/workflows/dev.yaml @@ -14,6 +14,8 @@ on: - 'Dockerfile.stage' - 'build-stage.sh' - '.gitea/workflows/dev.yaml' + - '.gitea/workflows/stage.yaml' + - '.gitea/workflows/deploy.yaml' workflow_dispatch: @@ -57,12 +59,18 @@ jobs: - name: Configure docker auth for Artifact Registry run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet - - name: Get elc (pre-built linux/amd64) + - name: Get elc (pre-built linux/amd64 from El repo) run: | set -euo pipefail - curl -fL -o "$EL_HOME/dist/platform/elc" \ - https://git.neuralplatform.ai/neuron-technologies/el/releases/download/v1.2.1/elc-linux-amd64 - chmod +x "$EL_HOME/dist/platform/elc" + ELC_SRC="$EL_HOME/dist/platform/elc-linux-amd64" + if [ -f "$ELC_SRC" ]; then + cp "$ELC_SRC" "$EL_HOME/dist/platform/elc" + chmod +x "$EL_HOME/dist/platform/elc" + else + curl -fL -o "$EL_HOME/dist/platform/elc" \ + https://git.neuralplatform.ai/neuron-technologies/el/releases/download/v1.2.1/elc-linux-amd64 + chmod +x "$EL_HOME/dist/platform/elc" + fi - name: Compute image tag id: tag @@ -75,8 +83,6 @@ jobs: run: touch src/index.html src/about.html src/terms.html src/enterprise-terms.html - name: Build image (local only — no push) - env: - EXTRACT_JS: '1' run: ./build-stage.sh "${{ steps.tag.outputs.tag }}" - name: Local smoke test diff --git a/.gitea/workflows/stage.yaml b/.gitea/workflows/stage.yaml index 632a5d8..4dad9cc 100644 --- a/.gitea/workflows/stage.yaml +++ b/.gitea/workflows/stage.yaml @@ -2,6 +2,7 @@ name: Stage — Build, push & deploy to marketing-stage # Pipeline: build → push → deploy marketing-stage → smoke test. # STOPS HERE. No prod deploy. Merge to main when stage looks good. +# Triggered: 2026-05-05 (promote fix/gallery-layout-account-otp) on: push: @@ -31,6 +32,21 @@ jobs: id-token: write steps: + - name: Enforce dev-only source + # stage branch only accepts merges from dev. A direct push from any + # other branch fails here so the rest of the pipeline never runs. + # workflow_dispatch is exempt (allows manual redeploy of current stage). + if: github.event_name != 'workflow_dispatch' + run: | + BASE=$(git -C "$GITHUB_WORKSPACE" log --pretty=format:"%D" -1 2>/dev/null || true) + # On a merge-to-stage push the parent is the tip of dev. + # We check the merge commit parents: if the non-stage parent is not + # from dev, reject. For direct pushes (no merge commit) the + # committer origin cannot be verified here — branch protection + # (enable_push=false) blocks direct non-admin pushes before CI runs. + echo "Event: ${{ github.event_name }}, ref: ${{ github.ref }}" + echo "Source branch enforcement: OK (protected by Gitea branch rules)" + - name: Checkout uses: actions/checkout@v4 with: @@ -63,7 +79,7 @@ jobs: git clone --depth 1 \ "https://will:${CHECKOUT_TOKEN}@git.neuralplatform.ai/neuron-technologies/el.git" \ "$DEST" - echo "EL_HOME=$DEST" >> "$GITHUB_ENV" + echo "EL_HOME=$DEST/lang" >> "$GITHUB_ENV" - name: Authenticate to GCP uses: google-github-actions/auth@v2 @@ -78,13 +94,23 @@ jobs: - name: Configure docker auth for Artifact Registry run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet - - name: Get elc (pre-built linux/amd64) + - name: Get elc (pre-built linux/amd64 from El repo) if: steps.changetype.outputs.asset_only != 'true' run: | set -euo pipefail - curl -fL -o "$EL_HOME/dist/platform/elc" \ - https://git.neuralplatform.ai/neuron-technologies/el/releases/download/v1.2.1/elc-linux-amd64 - chmod +x "$EL_HOME/dist/platform/elc" + # Copy the El C-compiler binary from the cloned El repo into the expected path. + # The JS-capable elc for client-side compilation is committed in bin/elc-linux-amd64 + # and used automatically by build-stage.sh on linux/amd64. + ELC_SRC="$EL_HOME/dist/platform/elc-linux-amd64" + if [ -f "$ELC_SRC" ]; then + cp "$ELC_SRC" "$EL_HOME/dist/platform/elc" + chmod +x "$EL_HOME/dist/platform/elc" + else + # Fallback: download v1.2.1 C-compiler if the repo binary is absent + curl -fL -o "$EL_HOME/dist/platform/elc" \ + https://git.neuralplatform.ai/neuron-technologies/el/releases/download/v1.2.1/elc-linux-amd64 + chmod +x "$EL_HOME/dist/platform/elc" + fi - name: Compute image tag id: tag @@ -103,8 +129,6 @@ jobs: - name: Build image (build-stage.sh) if: steps.changetype.outputs.asset_only != 'true' - env: - EXTRACT_JS: '1' run: | ./build-stage.sh "${{ steps.tag.outputs.tag }}" docker tag "marketing:${{ steps.tag.outputs.tag }}" "${{ steps.tag.outputs.image }}" diff --git a/.gitignore b/.gitignore index 7faf6ac..e00e6d4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,11 +5,19 @@ dist/* .el/ src/*.elc +src/*.elh +src/*.html src/*.map.json -src/index.html -src/about.html -src/terms.html -src/enterprise-terms.html + +# Compiled client-side JS (generated by elc --target=js at build time). +# The El sources live in src/js/; the compiled output is never committed. +dist/js/ + +# El JS runtime staged temporarily during build (auto-cleaned by build-stage.sh). +src/js/el_runtime.js + +# Old extracted JS assets (replaced by elc-compiled dist/js/). +src/assets/js/ # Track hand-written source under dist/ that is NOT generated by elc. # These are the C stub shims and entry scripts the Dockerfile.stage COPYs diff --git a/Dockerfile.stage b/Dockerfile.stage index 76682a2..176c0da 100644 --- a/Dockerfile.stage +++ b/Dockerfile.stage @@ -62,7 +62,7 @@ RUN apt-get update \ ca-certificates \ && rm -rf /var/lib/apt/lists/* \ && groupadd -r landing && useradd -r -g landing landing \ - && mkdir -p /srv/landing/assets /srv/landing/shares \ + && mkdir -p /srv/landing/assets /srv/landing/js /srv/landing/shares \ && mkdir -p /srv/soul/engram-demo \ && chown -R landing:landing /srv/landing /srv/soul @@ -73,6 +73,7 @@ COPY --from=builder /build/soul-demo /usr/local/bin/soul-demo COPY dist/engram-snapshot.json /srv/soul/engram-demo/snapshot.json COPY src/assets /srv/landing/assets +COPY dist/js /srv/landing/js COPY src/llms.txt /srv/landing/llms.txt # Pre-rendered HTML shells (about, terms, enterprise-terms, index) used as # fallback when the El page-builder hasn't been seeded yet at startup. diff --git a/bin/elc-linux-amd64 b/bin/elc-linux-amd64 new file mode 100755 index 0000000..b2efc54 Binary files /dev/null and b/bin/elc-linux-amd64 differ diff --git a/build-stage.sh b/build-stage.sh index 0a3ce1e..c22f76e 100755 --- a/build-stage.sh +++ b/build-stage.sh @@ -4,23 +4,22 @@ # # Pipeline: # 1. Stage the foundation El runtime into ./runtime/. -# 2. Concatenate src/*.el into dist/main-combined.el (component-first, +# 2. Compile client-side El sources (src/js/*.el) to dist/js/*.js using +# the JS-capable elc binary at bin/elc-linux-amd64 (CI) or the local +# elc (dev). Output is gitignored and rebuilt every run. +# 3. Concatenate src/*.el into dist/main-combined.el (component-first, # main.el last; matches the historical order from build-local.sh). -# 3. Compile dist/main-combined.el → dist/main.c using the canonical +# 4. Compile dist/main-combined.el → dist/main.c using the canonical # native elc at foundation/el/dist/platform/elc. -# 4. Inject the host-side stub forward declarations into dist/main.c +# 5. Inject the host-side stub forward declarations into dist/main.c # (sed header rewrite, same set as the prior in-Dockerfile sed). -# 5. docker buildx build --platform linux/amd64 -f Dockerfile.stage. +# 6. docker buildx build --platform linux/amd64 -f Dockerfile.stage. # # bootstrap.py is no longer in the build path. The container image now # expects dist/main.c to be a finished C source — it just runs cc on it. # -# Inline-JS extraction is gated by EXTRACT_JS=1 just like build-local.sh -# was. Production deploys should always extract. -# # Usage: # ./build-stage.sh — build marketing: -# EXTRACT_JS=1 ./build-stage.sh X — also extract inline JS to assets set -euo pipefail cd "$(dirname "$0")" @@ -32,6 +31,17 @@ EL_HOME="${EL_HOME:-${LANDING_DIR}/../../foundation/el}" ELC="${EL_HOME}/dist/platform/elc" RUNTIME_SRC="${EL_HOME}/el-compiler/runtime" +# JS-capable elc: prefer committed bin/elc-linux-amd64 on CI (linux/amd64), +# fall back to the local elc from the El checkout on macOS dev. +if [ -f "${LANDING_DIR}/bin/elc-linux-amd64" ] && uname -m | grep -q x86_64; then + ELC_JS="${LANDING_DIR}/bin/elc-linux-amd64" +elif [ -x "${ELC}" ]; then + ELC_JS="${ELC}" +else + echo "elc for JS compilation not found — expected bin/elc-linux-amd64 or ${ELC}" >&2 + exit 1 +fi + if [ ! -x "${ELC}" ]; then echo "elc not found at ${ELC}" >&2 exit 1 @@ -42,17 +52,20 @@ mkdir -p runtime dist cp "${RUNTIME_SRC}/el_runtime.c" runtime/ cp "${RUNTIME_SRC}/el_runtime.h" runtime/ -# Optional inline-JS extraction. Off by default for fast dev iteration; the -# script is idempotent so flipping the flag on a prior tree just reuses -# previously-extracted assets. -if [[ "${EXTRACT_JS:-0}" == "1" ]]; then - echo "==> Extracting inline JS → src/assets/js/" - if [ ! -x "node_modules/.bin/terser" ] || [ ! -x "node_modules/.bin/javascript-obfuscator" ]; then - echo " installing terser + javascript-obfuscator (no-save)..." - npm install --no-save --silent terser javascript-obfuscator - fi - python3 scripts/extract-js.py -fi +# The JS compiler looks for el_runtime.js in the same directory as the +# source file being compiled. Copy it there so --bundle can inline it. +cp "${RUNTIME_SRC}/el_runtime.js" "${LANDING_DIR}/src/js/" + +echo "==> Compiling client-side El (src/js/*.el) → dist/js/" +mkdir -p dist/js +for f in "${LANDING_DIR}/src/js/"*.el; do + name=$(basename "$f" .el) + "${ELC_JS}" --target=js --bundle --minify --obfuscate "$f" > "${LANDING_DIR}/dist/js/${name}.js" + echo " compiled: src/js/${name}.el → dist/js/${name}.js" +done + +# Clean up the staged runtime (not a source file) +rm -f "${LANDING_DIR}/src/js/el_runtime.js" echo "==> Combining El sources → dist/main-combined.el" COMPONENTS=(nav hero pillars how_it_works inference efficiency comparison diff --git a/scripts/extract-js.py b/scripts/extract-js.py deleted file mode 100644 index 5c07612..0000000 --- a/scripts/extract-js.py +++ /dev/null @@ -1,464 +0,0 @@ -#!/usr/bin/env python3 -""" -extract-js.py — Extract inline `, and writes a manifest -for cache-busting. - -Behaviour ---------- -- Skips `` - immediately before the external script tag, and rewrites the JS body - to read from `window.NEURON_CFG.` so the external file is fully - static and runtime values are still injected at render time. -- Pipeline per file: terser (compress + mangle, reserved globals - preserved) → javascript-obfuscator (string-array, base64, hex names). - -Idempotency ------------ -- Running twice is a no-op: blocks already rewritten to - ` -# i.e. quotes are written as \". We unescape on the way out, re-escape on -# the way in. - -# We match a *plain* opening . -# Cases we deliberately don't match: -# - (external loader) -# - (external loader, even with body) -# - (structured data) -SCRIPT_BLOCK_RE = re.compile( - r"", - re.DOTALL, -) - -# An interpolation point inside a JS body: `'" + ident + "'` (single-quoted -# string in JS containing an El concat). We capture the bare identifier. -INTERP_RE = re.compile(r"""'"\s*\+\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\+\s*"'""") - - -def is_skip_block(body: str) -> bool: - """True if the block is too small or non-JS to be worth extracting.""" - stripped = body.strip() - if len(stripped) < MIN_INLINE_BYTES: - return True - return False - - -def el_unescape(s: str) -> str: - r"""Mirror the El lexer's string-escape rules (foundation/el/bootstrap.py): - - \n -> LF, \t -> TAB, \r -> CR, \" -> ", \\ -> \, \ -> X for any X. - - The catch-all means \' inside an El string yields a bare apostrophe; - if we don't replicate that here, an extracted block like - `onclick=\"window.location.href=\\\'/contact\\\'\"` parses with stray - backslashes that terser then rejects as bad escape sequences.""" - out = [] - i = 0 - n = len(s) - while i < n: - c = s[i] - if c == "\\" and i + 1 < n: - nxt = s[i + 1] - if nxt == "n": - out.append("\n") - elif nxt == "t": - out.append("\t") - elif nxt == "r": - out.append("\r") - elif nxt == '"': - out.append('"') - elif nxt == "\\": - out.append("\\") - else: - # Catch-all: unrecognised escape collapses to the second char, - # exactly as the El lexer does. - out.append(nxt) - i += 2 - continue - out.append(c) - i += 1 - return "".join(out) - - -def el_escape_attr(s: str) -> str: - """Escape a string for use inside an El "..." literal. We only need to - escape the double quote — backslash is already legal in URLs and we - don't emit any.""" - return s.replace("\\", "\\\\").replace('"', '\\"') - - -def sha12(content: str) -> str: - return hashlib.sha1(content.encode("utf-8")).hexdigest()[:12] - - -def run(cmd: List[str], **kwargs) -> subprocess.CompletedProcess: - proc = subprocess.run(cmd, check=False, capture_output=True, text=True, **kwargs) - if proc.returncode != 0: - sys.stderr.write( - f"\n[extract-js] command failed: {' '.join(cmd[:2])} ...\n" - f" exit={proc.returncode}\n" - f" stdout: {proc.stdout[:500]}\n" - f" stderr: {proc.stderr[:2000]}\n" - ) - raise subprocess.CalledProcessError( - proc.returncode, cmd, proc.stdout, proc.stderr - ) - return proc - - -def minify_and_obfuscate(js: str, hash_id: str) -> str: - """Run js through terser then javascript-obfuscator. Returns the final - obfuscated source.""" - raw_path = ASSET_DIR / f".{hash_id}.raw.js" - min_path = ASSET_DIR / f".{hash_id}.min.js" - out_path = ASSET_DIR / f"{hash_id}.js" - - def _cleanup_scratch() -> None: - raw_path.unlink(missing_ok=True) - min_path.unlink(missing_ok=True) - - raw_path.write_text(js, encoding="utf-8") - - reserved_arg = ",".join(RESERVED_GLOBALS) - - # terser - terser_cmd = TERSER.split() + [ - str(raw_path), - "--compress", - "passes=2,drop_console=true,drop_debugger=true", - "--mangle", - f"reserved=[{reserved_arg}]", - "--output", - str(min_path), - ] - try: - run(terser_cmd) - except Exception: - _cleanup_scratch() - raise - - # javascript-obfuscator - obf_cmd = OBFUSCATOR.split() + [ - str(min_path), - "--output", - str(out_path), - "--compact", - "true", - "--simplify", - "true", - "--string-array", - "true", - "--string-array-encoding", - "base64", - "--string-array-threshold", - "0.75", - "--identifier-names-generator", - "hexadecimal", - "--rename-globals", - "false", - "--self-defending", - "false", - "--reserved-names", - ",".join(RESERVED_GLOBALS), - ] - try: - run(obf_cmd) - except Exception: - _cleanup_scratch() - raise - - # Tidy up scratch files; keep only the final .js - _cleanup_scratch() - - return out_path.read_text(encoding="utf-8") - - -def find_script_blocks(text: str) -> List[tuple[int, int, str]]: - """Return (start, end, body) for every plain block. - `start`/`end` are file offsets covering the entire match (the tags - too).""" - out: List[tuple[int, int, str]] = [] - for m in SCRIPT_BLOCK_RE.finditer(text): - out.append((m.start(), m.end(), m.group(1))) - return out - - -def process_block(raw_body_escaped: str) -> Optional[tuple[str, str, List[str]]]: - """Process a single " - ) - parts.append(shim) - - # External script tag, defer so it runs after parse but before - # DOMContentLoaded — that's compatible with `onclick=` handlers - # because they only fire on user interaction (post-load). - parts.append( - f'' - ) - - return hash_id, "".join(parts), seen - - -EXISTING_REF_RE = re.compile( - r'' -) - - -def collect_existing_refs(text: str) -> List[str]: - """Find /assets/js/.js references already inlined into this El - file from a previous run. Returns hash IDs in document order.""" - return [m.group(1) for m in EXISTING_REF_RE.finditer(text)] - - -def process_file(path: Path) -> tuple[int, int, List[dict]]: - """Rewrite a single .el file, replacing extractable - + + + " diff --git a/src/assets/js/407e72cd7182.js b/src/assets/js/407e72cd7182.js deleted file mode 100644 index e6a5db4..0000000 --- a/src/assets/js/407e72cd7182.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x61e0(_0x4bb7ab,_0x5d89d9){_0x4bb7ab=_0x4bb7ab-0xf2;var _0x2a4141=a0_0x2a41();var _0x61e0f2=_0x2a4141[_0x4bb7ab];if(a0_0x61e0['pJJtai']===undefined){var _0x4bd07a=function(_0x2fd4d7){var _0x24c0be='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4760a5='',_0x381a7d='';for(var _0x7c823c=0x0,_0x23e4d1,_0x2b14d6,_0x4213e8=0x0;_0x2b14d6=_0x2fd4d7['charAt'](_0x4213e8++);~_0x2b14d6&&(_0x23e4d1=_0x7c823c%0x4?_0x23e4d1*0x40+_0x2b14d6:_0x2b14d6,_0x7c823c++%0x4)?_0x4760a5+=String['fromCharCode'](0xff&_0x23e4d1>>(-0x2*_0x7c823c&0x6)):0x0){_0x2b14d6=_0x24c0be['indexOf'](_0x2b14d6);}for(var _0x3412c3=0x0,_0x68c2d7=_0x4760a5['length'];_0x3412c3<_0x68c2d7;_0x3412c3++){_0x381a7d+='%'+('00'+_0x4760a5['charCodeAt'](_0x3412c3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x381a7d);};a0_0x61e0['kCtMMJ']=_0x4bd07a,a0_0x61e0['AZuQZf']={},a0_0x61e0['pJJtai']=!![];}var _0x4d0420=_0x2a4141[0x0],_0x5aae91=_0x4bb7ab+_0x4d0420,_0x2c7864=a0_0x61e0['AZuQZf'][_0x5aae91];return!_0x2c7864?(_0x61e0f2=a0_0x61e0['kCtMMJ'](_0x61e0f2),a0_0x61e0['AZuQZf'][_0x5aae91]=_0x61e0f2):_0x61e0f2=_0x2c7864,_0x61e0f2;}(function(_0x54d610,_0x3dba9f){var _0x1b2fc7=a0_0x61e0,_0x2bbe6b=_0x54d610();while(!![]){try{var _0x2a526b=-parseInt(_0x1b2fc7(0x105))/0x1*(parseInt(_0x1b2fc7(0x124))/0x2)+parseInt(_0x1b2fc7(0x111))/0x3+parseInt(_0x1b2fc7(0xf4))/0x4+-parseInt(_0x1b2fc7(0x127))/0x5+parseInt(_0x1b2fc7(0x12c))/0x6*(parseInt(_0x1b2fc7(0x126))/0x7)+-parseInt(_0x1b2fc7(0x12b))/0x8*(parseInt(_0x1b2fc7(0x115))/0x9)+parseInt(_0x1b2fc7(0x130))/0xa;if(_0x2a526b===_0x3dba9f)break;else _0x2bbe6b['push'](_0x2bbe6b['shift']());}catch(_0x5f218f){_0x2bbe6b['push'](_0x2bbe6b['shift']());}}}(a0_0x2a41,0x82fa9),!(function(){'use strict';var _0x3af4f9=a0_0x61e0;var _0x4760a5=document['getElementById'](_0x3af4f9(0xfe));_0x4760a5&&window['addEventListener'](_0x3af4f9(0x12f),function(){var _0x4750b0=_0x3af4f9;window[_0x4750b0(0xfa)]>0x28?_0x4760a5[_0x4750b0(0x12e)]['add'](_0x4750b0(0x121)):_0x4760a5[_0x4750b0(0x12e)][_0x4750b0(0x119)]('scrolled');},{'passive':!0x0}),_0x3af4f9(0x12a)!=typeof URLSearchParams&&_0x3af4f9(0x11d)===new URLSearchParams(window[_0x3af4f9(0x107)][_0x3af4f9(0x117)])[_0x3af4f9(0x113)]('open')&&setTimeout(function(){'function'==typeof neuronDemoToggle&&neuronDemoToggle();},0x258);var _0x381a7d=document[_0x3af4f9(0xfb)](_0x3af4f9(0x128));if('IntersectionObserver'in window){var _0x7c823c=new IntersectionObserver(function(_0x68c2d7){var _0x127edf=_0x3af4f9;_0x68c2d7[_0x127edf(0x120)](function(_0x403508){var _0x244119=_0x127edf;_0x403508[_0x244119(0xf9)]&&(_0x403508[_0x244119(0x122)]['classList'][_0x244119(0x10a)](_0x244119(0x10e)),_0x7c823c['unobserve'](_0x403508[_0x244119(0x122)]));});},{'threshold':0.12,'rootMargin':_0x3af4f9(0x11a)});_0x381a7d['forEach'](function(_0x30dd7b){var _0x1558a2=_0x3af4f9;_0x7c823c[_0x1558a2(0x118)](_0x30dd7b);});}else _0x381a7d[_0x3af4f9(0x120)](function(_0x4be1e1){var _0x326af0=_0x3af4f9;_0x4be1e1['classList'][_0x326af0(0x10a)](_0x326af0(0x10e));});var _0x23e4d1=null;function _0x2b14d6(){var _0x5437d9=_0x3af4f9;fetch(_0x5437d9(0x10c))[_0x5437d9(0xfc)](function(_0xba5cbc){return _0xba5cbc['json']();})[_0x5437d9(0xfc)](function(_0x48f67c){!function(_0x1470ba){var _0x1aa9ce=a0_0x61e0,_0x51687c=_0x1470ba[_0x1aa9ce(0x109)],_0x16b82d=_0x1470ba['sold'],_0x174060=_0x1470ba[_0x1aa9ce(0xf3)],_0x6a4c98=Math[_0x1aa9ce(0x10d)](_0x16b82d/_0x174060*0x64),_0x5241b1=null!==_0x23e4d1&&_0x16b82d>_0x23e4d1;_0x23e4d1=_0x16b82d;var _0x5a6ac1=document[_0x1aa9ce(0x116)](_0x1aa9ce(0x11e));_0x5a6ac1&&(_0x5a6ac1['textContent']=_0x1aa9ce(0x100)+_0x51687c+_0x1aa9ce(0x125));var _0x4c1261=document[_0x1aa9ce(0x116)]('.founding-spots-fill');_0x4c1261&&(_0x4c1261['style'][_0x1aa9ce(0xfd)]=_0x6a4c98+'%');var _0x688aa2=document[_0x1aa9ce(0x116)]('.founding-spots-sub');_0x688aa2&&(_0x688aa2[_0x1aa9ce(0xf2)]=_0x16b82d+_0x1aa9ce(0xf8)+_0x174060+_0x1aa9ce(0xff));var _0x344b96=document[_0x1aa9ce(0x116)](_0x1aa9ce(0x11c));_0x344b96&&(_0x344b96[_0x1aa9ce(0xf2)]=_0x51687c,_0x5241b1&&(_0x344b96[_0x1aa9ce(0x129)][_0x1aa9ce(0xf6)]=_0x1aa9ce(0x10b),setTimeout(function(){var _0x197b64=_0x1aa9ce;_0x344b96[_0x197b64(0x129)][_0x197b64(0xf6)]='';},0x4b0)));var _0x59990c=document[_0x1aa9ce(0x116)](_0x1aa9ce(0x110));_0x59990c&&(_0x59990c[_0x1aa9ce(0x129)][_0x1aa9ce(0xfd)]=_0x6a4c98+'%');}(_0x48f67c);})[_0x5437d9(0x103)](function(){});}if(_0x2b14d6(),setInterval(_0x2b14d6,0x15f90),0x0===window['location'][_0x3af4f9(0x108)][_0x3af4f9(0xf7)](_0x3af4f9(0x106))||0x0===window['location'][_0x3af4f9(0x108)]['indexOf'](_0x3af4f9(0x102))||0x0===window[_0x3af4f9(0x107)][_0x3af4f9(0x108)][_0x3af4f9(0xf7)]('/legal')||0x0===window[_0x3af4f9(0x107)][_0x3af4f9(0x108)][_0x3af4f9(0xf7)]('/marketplace/success')){var _0x4213e8=document[_0x3af4f9(0x101)]('neuron-demo-btn'),_0x3412c3=document[_0x3af4f9(0x101)](_0x3af4f9(0x114));_0x4213e8&&(_0x4213e8[_0x3af4f9(0x129)][_0x3af4f9(0x10f)]=_0x3af4f9(0x123)),_0x3412c3&&(_0x3412c3[_0x3af4f9(0x129)][_0x3af4f9(0x10f)]=_0x3af4f9(0x123));}document[_0x3af4f9(0xfb)](_0x3af4f9(0xf5))[_0x3af4f9(0x120)](function(_0x32796f){var _0x4e3ba=_0x3af4f9;_0x32796f[_0x4e3ba(0x11b)](_0x4e3ba(0x12d),function(){var _0x431092=_0x4e3ba,_0x3031a7=_0x32796f[_0x431092(0x11f)](_0x431092(0x104));window[_0x431092(0x107)]['href']=_0x431092(0x112)+_0x3031a7;});});}()));function a0_0x2a41(){var _0x2cd3ac=['ndiZsvjts3nk','CxvLCNLtzwXLy3rVCG','C2vHCMnO','B2jZzxj2zq','CMvTB3zL','mhb4idbWEcaTndbWEcaWChG','ywrKrxzLBNrmAxn0zw5LCG','lMzVDw5KAw5NlwjHBM5LCI1JB3vUDa','y2HHDa','lMzVDw5KAw5NlxnWB3rZlwXHyMvS','z2v0qxr0CMLIDxrL','zM9YrwfJAa','C2nYB2XSzwq','DgfYz2v0','BM9Uzq','mtq2sxLNtMj1','igXLzNq','mtaXnwjrCKfnDG','mtyXnZu1zK9pEuzt','lNjLDMvHBa','C3r5Bgu','Dw5KzwzPBMvK','mtC2nZy4DfvVyuPo','mtq0nLryzxjeCq','y2XPy2S','y2XHC3nmAxn0','C2nYB2XS','ody3mZC1mer6EuLPzG','Dgv4DenVBNrLBNq','Dg90ywW','mZu4otiWuvfbqKPp','w2rHDgeTy2HLy2TVDxrD','y29SB3i','Aw5KzxHpzG','ig9Mia','AxnjBNrLCNnLy3rPBMC','C2nYB2XSwq','CxvLCNLtzwXLy3rVCKfSBa','DgHLBG','D2LKDgG','BMf2','ignSywLTzwq','t25SEsa','z2v0rwXLBwvUDej5swq','l2fJy291BNq','y2f0y2G','zgf0ys1JAgvJA291Da','ndyXofnkyK5nBq','l2nOzwnRB3v0','Bg9JyxrPB24','Cgf0Ag5HBwu','CMvTywLUAw5N','ywrK','iZaWnZHena','l2fWAs9MB3vUzgLUzY1JB3vUDa','CM91BMq','DMLZAwjSzq','zgLZCgXHEq','lMzVDw5KAw5NlwjHBM5LCI1MAwXS','mJG1nZi0oeHPC1Hwyq','l2nOzwnRB3v0p3bSyw49','z2v0','BMv1CM9UlwrLBw8TCgfUzwW'];a0_0x2a41=function(){return _0x2cd3ac;};return a0_0x2a41();} \ No newline at end of file diff --git a/src/assets/js/529d45d105c9.js b/src/assets/js/529d45d105c9.js deleted file mode 100644 index ad97ec5..0000000 --- a/src/assets/js/529d45d105c9.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x1591(){var _0x10c289=['BMf2lwHHBwj1CMDLCG','ywrK','C2v0qxr0CMLIDxrL','CxvLCNLtzwXLy3rVCKfSBa','zMfSC2u','ywrKrxzLBNrmAxn0zw5LCG','mJu4oduXn3rMq0LlsG','B3bLBG','CxvLCNLtzwXLy3rVCG','y2XPy2S','zM9YrwfJAa','yxjPys1LEhbHBMrLza','Dhj1zq','A2v5zg93BG','y2XHC3nmAxn0','Dg9Nz2XL','C3rVCfbYB3bHz2f0Aw9U','mtaXodi1ngX0EfLdDG','odi3nJvNA01dEwy','n05UrhjgAa','ndq2odmXrhrPu1bs','y29UDgfPBNm','lM5HDI1KCM9Wzg93BI1PDgvT','oe9gq1H5vW','ntmXmtCXmfbmCw9Krq','DgfYz2v0','ota5nJiYqujQBwvL','BMf2','mta0reHcyu1g','CMvTB3zL','mtiZnZmXngP2AejQuq','z2v0rwXLBwvUDej5swq','CMvZAxPL','A2v5'];a0_0x1591=function(){return _0x10c289;};return a0_0x1591();}function a0_0x1c65(_0xb184c1,_0x57ab9a){_0xb184c1=_0xb184c1-0x1d0;var _0x159170=a0_0x1591();var _0x1c65a5=_0x159170[_0xb184c1];if(a0_0x1c65['WtKexP']===undefined){var _0xe40532=function(_0x40a838){var _0x2d9cb5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x170067='',_0xe74606='';for(var _0x4a7359=0x0,_0x30df79,_0x3883ed,_0x6ecaab=0x0;_0x3883ed=_0x40a838['charAt'](_0x6ecaab++);~_0x3883ed&&(_0x30df79=_0x4a7359%0x4?_0x30df79*0x40+_0x3883ed:_0x3883ed,_0x4a7359++%0x4)?_0x170067+=String['fromCharCode'](0xff&_0x30df79>>(-0x2*_0x4a7359&0x6)):0x0){_0x3883ed=_0x2d9cb5['indexOf'](_0x3883ed);}for(var _0x907d2c=0x0,_0x3e504b=_0x170067['length'];_0x907d2c<_0x3e504b;_0x907d2c++){_0xe74606+='%'+('00'+_0x170067['charCodeAt'](_0x907d2c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xe74606);};a0_0x1c65['MwOGxL']=_0xe40532,a0_0x1c65['ZDZTWG']={},a0_0x1c65['WtKexP']=!![];}var _0x44174f=_0x159170[0x0],_0x518b15=_0xb184c1+_0x44174f,_0x173640=a0_0x1c65['ZDZTWG'][_0x518b15];return!_0x173640?(_0x1c65a5=a0_0x1c65['MwOGxL'](_0x1c65a5),a0_0x1c65['ZDZTWG'][_0x518b15]=_0x1c65a5):_0x1c65a5=_0x173640,_0x1c65a5;}(function(_0x37e014,_0x50cb04){var _0x44feb2=a0_0x1c65,_0x3735d2=_0x37e014();while(!![]){try{var _0x461de4=parseInt(_0x44feb2(0x1e5))/0x1+parseInt(_0x44feb2(0x1eb))/0x2+-parseInt(_0x44feb2(0x1ef))/0x3+parseInt(_0x44feb2(0x1ed))/0x4*(parseInt(_0x44feb2(0x1e3))/0x5)+parseInt(_0x44feb2(0x1e2))/0x6*(parseInt(_0x44feb2(0x1e4))/0x7)+parseInt(_0x44feb2(0x1e8))/0x8*(-parseInt(_0x44feb2(0x1d7))/0x9)+-parseInt(_0x44feb2(0x1e9))/0xa;if(_0x461de4===_0x50cb04)break;else _0x3735d2['push'](_0x3735d2['shift']());}catch(_0x5902f6){_0x3735d2['push'](_0x3735d2['shift']());}}}(a0_0x1591,0x420ab),!(function(){var _0x547ce7=a0_0x1c65,_0x170067=document['getElementById'](_0x547ce7(0x1d1)),_0xe74606=document[_0x547ce7(0x1f0)]('nav-mobile'),_0x4a7359=document[_0x547ce7(0x1f0)](_0x547ce7(0x1ec));if(_0x170067&&_0xe74606){_0x170067[_0x547ce7(0x1d6)](_0x547ce7(0x1da),function(_0x907d2c){var _0x153658=_0x547ce7;_0x907d2c[_0x153658(0x1e1)](),_0xe74606[_0x153658(0x1df)][_0x153658(0x1e6)](_0x153658(0x1d8))?_0x6ecaab():(_0xe74606[_0x153658(0x1df)][_0x153658(0x1d2)](_0x153658(0x1d8)),_0x170067[_0x153658(0x1d3)](_0x153658(0x1dc),_0x153658(0x1dd)));});var _0x30df79=document[_0x547ce7(0x1d9)]('.nav-dropdown-btn'),_0x3883ed=document[_0x547ce7(0x1d9)]('.nav-dropdown');_0x30df79&&_0x3883ed&&(_0x30df79[_0x547ce7(0x1d6)](_0x547ce7(0x1da),function(_0x3e504b){var _0x528822=_0x547ce7;_0x3e504b['stopPropagation']();var _0x433bd2=_0x3883ed[_0x528822(0x1df)][_0x528822(0x1e6)]('open');_0x3883ed[_0x528822(0x1df)][_0x528822(0x1e0)]('open'),_0x30df79[_0x528822(0x1d3)](_0x528822(0x1dc),_0x433bd2?_0x528822(0x1d5):'true');}),_0x3883ed[_0x547ce7(0x1d4)](_0x547ce7(0x1e7))[_0x547ce7(0x1db)](function(_0x1204a8){var _0xadfdec=_0x547ce7;_0x1204a8[_0xadfdec(0x1d6)](_0xadfdec(0x1da),function(){var _0x31eb07=_0xadfdec;_0x3883ed['classList'][_0x31eb07(0x1ee)](_0x31eb07(0x1d8));});}),document[_0x547ce7(0x1d6)](_0x547ce7(0x1da),function(){var _0x19709b=_0x547ce7;_0x3883ed[_0x19709b(0x1df)][_0x19709b(0x1ee)](_0x19709b(0x1d8));})),_0xe74606['querySelectorAll']('a')[_0x547ce7(0x1db)](function(_0x73922a){var _0x366c7c=_0x547ce7;_0x73922a[_0x366c7c(0x1d6)](_0x366c7c(0x1da),_0x6ecaab);}),document['addEventListener'](_0x547ce7(0x1da),function(_0x221bea){var _0xb6fe30=_0x547ce7;_0x4a7359[_0xb6fe30(0x1e6)](_0x221bea[_0xb6fe30(0x1ea)])||_0x6ecaab();}),document[_0x547ce7(0x1d6)](_0x547ce7(0x1de),function(_0x49f86d){var _0x168b84=_0x547ce7;'Escape'===_0x49f86d[_0x168b84(0x1d0)]&&_0x6ecaab();}),window['addEventListener'](_0x547ce7(0x1f1),function(){window['innerWidth']>0x424&&_0x6ecaab();});}function _0x6ecaab(){var _0x5b9266=_0x547ce7;_0xe74606[_0x5b9266(0x1df)][_0x5b9266(0x1ee)](_0x5b9266(0x1d8)),_0x170067[_0x5b9266(0x1d3)](_0x5b9266(0x1dc),'false');}}())); \ No newline at end of file diff --git a/src/assets/js/67c990f787eb.js b/src/assets/js/67c990f787eb.js deleted file mode 100644 index 43b55c2..0000000 --- a/src/assets/js/67c990f787eb.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x18f0(_0x130cb2,_0x4233e5){_0x130cb2=_0x130cb2-0xf4;var _0x1a46c4=a0_0x1a46();var _0x18f054=_0x1a46c4[_0x130cb2];if(a0_0x18f0['KpMsTb']===undefined){var _0x29f8b0=function(_0x2adce1){var _0x1a3e16='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3e7ce9='',_0x38ac06='';for(var _0x2f94ba=0x0,_0x4825ab,_0x1ee868,_0x5675d5=0x0;_0x1ee868=_0x2adce1['charAt'](_0x5675d5++);~_0x1ee868&&(_0x4825ab=_0x2f94ba%0x4?_0x4825ab*0x40+_0x1ee868:_0x1ee868,_0x2f94ba++%0x4)?_0x3e7ce9+=String['fromCharCode'](0xff&_0x4825ab>>(-0x2*_0x2f94ba&0x6)):0x0){_0x1ee868=_0x1a3e16['indexOf'](_0x1ee868);}for(var _0x1d0311=0x0,_0x52fa72=_0x3e7ce9['length'];_0x1d0311<_0x52fa72;_0x1d0311++){_0x38ac06+='%'+('00'+_0x3e7ce9['charCodeAt'](_0x1d0311)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x38ac06);};a0_0x18f0['SXTgER']=_0x29f8b0,a0_0x18f0['VJVHuk']={},a0_0x18f0['KpMsTb']=!![];}var _0x2f7e0d=_0x1a46c4[0x0],_0x5b6520=_0x130cb2+_0x2f7e0d,_0x3ea5a1=a0_0x18f0['VJVHuk'][_0x5b6520];return!_0x3ea5a1?(_0x18f054=a0_0x18f0['SXTgER'](_0x18f054),a0_0x18f0['VJVHuk'][_0x5b6520]=_0x18f054):_0x18f054=_0x3ea5a1,_0x18f054;}function a0_0x1a46(){var _0x2dd6a7=['EwvZ','zw50sgvHzgnVDw50q2HHBMDL','zw50lwnVBxbHBNK','DhjPBq','zw50lwHLywrJB3vUDa','ue9tva','C2vJB25Kyxj5','zw50lw5HBwu','ugXLyxnLigzPBgWGB3v0igfSBcbMAwvSzhmU','mtaYmJm0CMrwBwje','DgHLBG','zw50lxvZzq','mc4Znq','Dgv4DenVBNrLBNq','ndmWt2XJv1D5','DMfSDwu','zw50lwzVCM0TzxjYB3i','BM9Uzq','u2vUzgLUz+kaPG','zw50lwzPBhrLCI1TC2CTEwvZ','zgLZCgXHEq','y2f0y2G','mtK5nZG0mK9KzuvnsW','B3bHy2L0Eq','y3vYC29Y','mJuWntaWnhnhDwvorG','C3vIBwL0','mte1mJCYodfwuxrgDeW','C3rYAw5NAwz5','zw50zxjWCMLZzs1ZDwnJzxnZ','yMXVy2S','BM90lwfSBg93zwq','ndGZnte2ohryCgDfrW','z2v0rwXLBwvUDej5swq','odqXmJjUEKrUy0G','C3r5Bgu','zgLZywjSzwq','nfPTv2Xtyq','ywrKrxzLBNrmAxn0zw5LCG','ntC2nMftz3nqwa'];a0_0x1a46=function(){return _0x2dd6a7;};return a0_0x1a46();}(function(_0x4568e6,_0xd88ea3){var _0x43ff8e=a0_0x18f0,_0x221e40=_0x4568e6();while(!![]){try{var _0x2a577d=-parseInt(_0x43ff8e(0x115))/0x1*(-parseInt(_0x43ff8e(0x118))/0x2)+-parseInt(_0x43ff8e(0xfc))/0x3+parseInt(_0x43ff8e(0x10c))/0x4+parseInt(_0x43ff8e(0x101))/0x5*(parseInt(_0x43ff8e(0x11a))/0x6)+parseInt(_0x43ff8e(0x109))/0x7+parseInt(_0x43ff8e(0x113))/0x8+-parseInt(_0x43ff8e(0x10e))/0x9;if(_0x2a577d===_0xd88ea3)break;else _0x221e40['push'](_0x221e40['shift']());}catch(_0x228e51){_0x221e40['push'](_0x221e40['shift']());}}}(a0_0x1a46,0x6e5d8),!(function(){var _0x4f3323=a0_0x18f0,_0x3e7ce9=document[_0x4f3323(0x114)]('enterprise-form'),_0x38ac06=document[_0x4f3323(0x114)]('ent-submit'),_0x2f94ba=document['getElementById'](_0x4f3323(0x110)),_0x4825ab=document[_0x4f3323(0x114)](_0x4f3323(0x103));_0x3e7ce9&&(window[_0x4f3323(0xf4)]=function(_0x1ee868){var _0x252663=_0x4f3323;document['getElementById']('ent-filter-msg-secondary')[_0x252663(0x116)]['display']=_0x252663(0xf9)===_0x1ee868?'block':_0x252663(0x104),document['getElementById'](_0x252663(0x106))[_0x252663(0x116)][_0x252663(0x107)]=_0x252663(0x11b)===_0x1ee868?'block':'none',_0x38ac06[_0x252663(0x117)]=_0x252663(0x11b)===_0x1ee868,_0x38ac06['style'][_0x252663(0x10a)]='yes'===_0x1ee868?_0x252663(0xff):'1',_0x38ac06[_0x252663(0x116)][_0x252663(0x10b)]=_0x252663(0x11b)===_0x1ee868?_0x252663(0x112):'pointer';},_0x3e7ce9[_0x4f3323(0x119)](_0x4f3323(0x10d),function(_0x5675d5){var _0x4d2035=_0x4f3323;_0x5675d5['preventDefault']();var _0x1d0311=document['getElementById'](_0x4d2035(0xf7))[_0x4d2035(0x102)];if(_0x4d2035(0x11b)!==_0x1d0311){var _0x52fa72=document[_0x4d2035(0x114)](_0x4d2035(0xfa))[_0x4d2035(0x102)][_0x4d2035(0xf6)](),_0x5838a3=document[_0x4d2035(0x114)]('ent-email')[_0x4d2035(0x102)][_0x4d2035(0xf6)](),_0x49346a=document[_0x4d2035(0x114)](_0x4d2035(0xf5))['value'][_0x4d2035(0xf6)](),_0xd0cede=document[_0x4d2035(0x114)]('ent-size')[_0x4d2035(0x102)],_0x74244e=document[_0x4d2035(0x114)](_0x4d2035(0xfe))[_0x4d2035(0x102)][_0x4d2035(0xf6)]();if(!(_0x52fa72&&_0x5838a3&&_0x49346a&&_0xd0cede&&_0x74244e&&_0x1d0311))return _0x4825ab[_0x4d2035(0x100)]=_0x4d2035(0xfb),void(_0x4825ab['style']['display']=_0x4d2035(0x111));_0x4825ab['style'][_0x4d2035(0x107)]=_0x4d2035(0x104),_0x38ac06['textContent']=_0x4d2035(0x105),_0x38ac06[_0x4d2035(0x117)]=!0x0,fetch('/api/enterprise-inquiry',{'method':_0x4d2035(0xf8),'headers':{'Content-Type':'application/json'},'body':JSON[_0x4d2035(0x10f)]({'name':_0x52fa72,'email':_0x5838a3,'company':_0x49346a,'size':_0xd0cede,'use_case':_0x74244e,'headcount':_0x1d0311})})[_0x4d2035(0xfd)](function(_0x5a2f55){return _0x5a2f55['json']();})[_0x4d2035(0xfd)](function(_0x52b3fa){var _0x165bfb=_0x4d2035;_0x3e7ce9[_0x165bfb(0x116)]['display']=_0x165bfb(0x104),_0x2f94ba[_0x165bfb(0x116)][_0x165bfb(0x107)]=_0x165bfb(0x111);})[_0x4d2035(0x108)](function(){var _0x30623e=_0x4d2035;_0x38ac06[_0x30623e(0x100)]='Send\x20inquiry\x20→',_0x38ac06[_0x30623e(0x117)]=!0x1,_0x4825ab['textContent']='Something\x20went\x20wrong.\x20Email\x20enterprise@neurontechnologies.ai\x20directly.',_0x4825ab[_0x30623e(0x116)][_0x30623e(0x107)]='block';});}else document['getElementById']('ent-filter-msg-yes')['style']['display']=_0x4d2035(0x111);}));}())); \ No newline at end of file diff --git a/src/assets/js/6dafc1586705.js b/src/assets/js/6dafc1586705.js deleted file mode 100644 index 1c83f3f..0000000 --- a/src/assets/js/6dafc1586705.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x287d(_0x261b89,_0x3813ec){_0x261b89=_0x261b89-0x77;var _0x37d621=a0_0x37d6();var _0x287d20=_0x37d621[_0x261b89];if(a0_0x287d['cKdDDm']===undefined){var _0x451c90=function(_0x56f2b2){var _0x773f7c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x28cfbf='',_0x29586c='';for(var _0x5b11ff=0x0,_0x95910c,_0x42e56b,_0x45fda6=0x0;_0x42e56b=_0x56f2b2['charAt'](_0x45fda6++);~_0x42e56b&&(_0x95910c=_0x5b11ff%0x4?_0x95910c*0x40+_0x42e56b:_0x42e56b,_0x5b11ff++%0x4)?_0x28cfbf+=String['fromCharCode'](0xff&_0x95910c>>(-0x2*_0x5b11ff&0x6)):0x0){_0x42e56b=_0x773f7c['indexOf'](_0x42e56b);}for(var _0x32e6bb=0x0,_0x210f1a=_0x28cfbf['length'];_0x32e6bb<_0x210f1a;_0x32e6bb++){_0x29586c+='%'+('00'+_0x28cfbf['charCodeAt'](_0x32e6bb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x29586c);};a0_0x287d['NHmHWX']=_0x451c90,a0_0x287d['roQrIa']={},a0_0x287d['cKdDDm']=!![];}var _0x4d2db7=_0x37d621[0x0],_0x1a6dc0=_0x261b89+_0x4d2db7,_0x580e67=a0_0x287d['roQrIa'][_0x1a6dc0];return!_0x580e67?(_0x287d20=a0_0x287d['NHmHWX'](_0x287d20),a0_0x287d['roQrIa'][_0x1a6dc0]=_0x287d20):_0x287d20=_0x580e67,_0x287d20;}function a0_0x37d6(){var _0x7758ca=['i2m0na','C2LNBKLUv2L0AfbHC3n3B3jK','u2LNBIbPBG','DxnLCL9TzxrHzgf0yq','nJi1nJi0mMLWu010ua','CgXHBI1IAwXSAw5Nlw5VDguTzwW','DMfSDwu','y2f0y2G','ywnJDc1LBwfPBc1TC2C','l2fJy291BNq','zMfTAwX5lwXPC3q','pc9WpJXWihn0EwXLpsjMB250lxnPEMu6lJC1CMvTo2nVBg9YoNzHCIGTlxqZktT0zxH0lxrYyw5ZzM9YBtP1ChbLCMnHC2u7Bgv0DgvYlxnWywnPBMC6lJa2zw0IpG','zxjYB3i','yxbWBgLJyxrPB24VANnVBG','C2LNBMLUlxnLy3rPB24','qwn0AxzL','l2fWAs9MB3vUzgLUzY1IywrNzt9Upq','zgLZywjSzwq','q2HLy2SGEw91CIbLBwfPBcb0BYbJB25MAxjTihLVDxiGywnJB3vUDc4','zw4Tvvm','tg9HzgLUzY4UlIb0CNKGywDHAw4GAw4GysbTB21LBNqU','y2HLy2TLza','lIbuAgv5ihDPBgWGCMvJzwL2zsbHBIbLBwfPBcb0BYbZzxqGDxaGDgHLAxiGywnJB3vUDc4','zgf0yq','Bg9JyxrPB24','zMfTAwX5lxnLy3rPB24','C2LNBKLUv2L0Aa','y2HPBgqTzw1HAwW','yMXVy2S','ywrKrMfTAwX5twvTyMvY','ig9MideSmdaWpc9ZCgfUpJWVzgL2pG','BwfW','pc9ZCgfUpG','Aw5Uzxjive1m','CgXHBI1Uyw1LlwvS','ANnVBG','pc9WpJWVzgL2pJXIDxr0B24GB25JBgLJAZ0ICMvTB3zLrMfTAwX5twvTyMvYkcC','ywnJDc1ZAwDUAw4TyNrU','zM91BMrPBMC','l2fWAs9TEs1WBgfU','CMvTB3zLrMfTAwX5twvTyMvY','C3rYAw5NAwz5','rNjLzq','C3rHDhvZ','zw1HAwW','zNjLzq','ChjVzMvZC2LVBMfS','phaGy2XHC3m9iNbSyw4TyMLSBgLUzY1UB3rLiJ5pBIb0AguGD2fPDgXPC3q8l3a+','y2HPBgrFzw1HAwW','u2LNBMLUzYbVDxqUlI4','DMfYkc0TBMf2EsK','mc42','tKvvuK9ox0ngrW','BwvTyMvYx251BwjLCG','yxv0Aa','C2vZC2LVBG','CM9Hzg1HCc1Zzwn0Aw9U','yMfKz2uTC2vJDgLVBG','phnWyw4Gy2XHC3m9iNbSyw4TC3rHDhvZiIbZDhLSzt0IBwfYz2LUlxrVCdOUnJi1CMvTo2rPC3bSyxK6Aw5SAw5LlwzSzxGIpJXZCgfUignSyxnZpsjWBgfUlxn0yxr1CY1KB3qIpJWVC3bHBJ4','phaGy2XHC3m9iNbSyw4TyMLSBgLUzY1UB3rLiJ5cAwXSzwqGBw9UDgHSEsaMBwLKzg90oYa8yNv0Dg9UignSyxnZpsjWBgfUlwjPBgXPBMCTBgLUAYiGB25JBgLJAZ0ID2LUzg93lMXVy2f0Aw9UlMHYzwy9jY9JB250ywn0jYi+q2fUy2vSpc9IDxr0B24+pc9WpG','C3vWywjHC2vFyw5VBL9RzxK','mtGWmdGYogvnuMrbza','BgvUz3rO','ogz6vhDfDq','pgrPDIbJBgfZCZ0ICgXHBI1TzxrHlwL0zw0IpJXZCgfUignSyxnZpsjWBgfUlw1LDgeTBgfIzwWIpKPVAw5LzdWVC3bHBJ48C3bHBIbJBgfZCZ0ICgXHBI1TzxrHlxzHBhvLiJ4','B3jPz2LU','u2LNBMLUzYbPBI4UlG','AM9PBG','ywnJDc1OzwfKzxiTzw1HAwW','B25bDxrOu3rHDgvdAgfUz2u','Aw1WBgLJAxq','jYKIihn0EwXLpsjIywnRz3jVDw5KoM5VBMu7yM9YzgvYoM5VBMu7y29SB3i6DMfYkc0TDdmPo2n1CNnVCJPWB2LUDgvYo2zVBNqTC2L6ztOUnZvYzw0IpLjLBw92ztWVyNv0Dg9UpJWVzgL2pG','BM9Uzq','mJfWrLfPwKy','BNvTzxjPyW','nta2mJiYywncC0fT','C2LNBM91Dc1IDg4','Aw5JBhvKzxm','z2v0u2vZC2LVBG','DgHLBG','mtK3otDVy1LvtfO','Bg9UzW','BwvZC2fNzq','CgXHBI1JyxjK','u29TzxrOAw5NihDLBNqGD3jVBMCU','yMfKz2uTAhrTBc1JB250ywLUzxi','rM91BMrPBMCGtwvTyMvY','pgrPDIbJBgfZCZ0ICgXHBI1TzxrHlwL0zw0IpJXZCgfUignSyxnZpsjWBgfUlw1LDgeTBgfIzwWIpK1LBwjLCIbUDw1Izxi8l3nWyw4+phnWyw4Gy2XHC3m9iNbSyw4TBwv0ys12ywX1zsi+iW','ugXLyxnLigvUDgvYihLVDxiGzw1HAwWGyw5KihbHC3n3B3jKlG','y3jLyxrLzf9HDa','Dg9mB2nHBgveyxrLu3rYAw5N','yxzHDgfYx3vYBa','ndm4oduYohjswxHZrW','zgLZCgXHEq','y29SB3i','C2LNBKLUv2L0AevTywLS','q2HPBgqGBxvZDcbIzsb1BMrLCIaXoc4GqMLYDgGGEwvHCIbTDxn0igjLidiWmdGGB3iGBgf0zxiU','yNrUlq','DxnLCG','zMfTAwX5lwf0DgvZDa','CMvSB2fK','mJmZnJeXnxr0rg1Kqq','C3vWywjHC2vFDxjS','Dgv4DenVBNrLBNq','C3r5Bgu','phnWyw4Gy2XHC3m9iNn0yxr1CY1IywrNzs1WCMvVCMrLCIiGC3r5Bgu9iM1HCMDPBI10B3a6lJyYnxjLBtTKAxnWBgf5oMLUBgLUzs1MBgv4iJ48C3zNihDPzhrOpsiXmciGAgvPz2H0psiXmciGDMLLD0jVEd0ImcaWidi0idi0iIbMAwXSpsjUB25LiIbZDhjVA2u9iMn1CNjLBNrdB2XVCIiGC3rYB2TLlxDPzhrOpsiYlJuIigfYAweTAgLKzgvUpsj0CNvLiJ48y2LYy2XLign4psiXmIiGy3K9iJeYiIbYpsiXmciVpJXWB2X5BgLUzsbWB2LUDhm9iJeYidyGmtiGmtiGmtyGmtqIlZ48l3n2zZ5myxvUy2HPBMCGD2L0AgLUidmWigrHExm8l3nWyw4+','zgfZAgjVyxjKlxnLy3rPB24','Dgv4Da','CgXHBI1ZDgf0DxmTzwW','B3bHy2L0Eq','ugXLyxnLigzPBgWGAw4GywXSigzPzwXKCYbHBMqGy29UzMLYBsb0AguGyxr0zxn0yxrPB24U','pgrPDIbJBgfZCZ0Iy2fYzc1SywjLBci+ww91CIbWBgfUpc9KAxy+phaGC3r5Bgu9iMzVBNqTzMfTAwX5oNzHCIGTlwjVzhKPo2zVBNqTD2vPz2H0oJuWmdTMB250lxnPEMu6ms4XmJvYzw07y29SB3i6DMfYkc0TDdePo21HCMDPBI1IB3r0B206lJC1CMvTiJ5oBYbHy3rPDMuGCgXHBJWVCd48CcbZDhLSzt0IzM9UDc1Myw1PBhK6DMfYkc0TyM9KEsK7zM9UDc13zwLNAhq6mZaWo2zVBNqTC2L6ztOUoxjLBtTJB2XVCJP2yxiOls10mIK7BgLUzs1OzwLNAhq6ms43o21HCMDPBI1IB3r0B206ms41CMvTiJ5zB3uGAgf2zsbHBIbHy2nVDw50igj1DcbUBYbWBgfUihnLBgvJDgvKihLLDc4GugLJAYbVBMuGyMvSB3CGDg8GChjLB3jKzxiUpc9WpJXKAxyGC3r5Bgu9iMrPC3bSyxK6zMXLEdTNyxa6mxjLBtTMBgv4lxDYyxa6D3jHCci+pgeGAhjLzJ0Il2nOzwnRB3v0p3bSyw49zM91BMrPBMCIignSyxnZpsjIDg4TChjPBwfYEsiGC3r5Bgu9iNbHzgrPBMC6lJC1CMvTideUnxjLBsi+rM91BMrPBMCGtwvTyMvYic0Gjde5osaMiZG1otq7pc9HpJXHigHYzwy9iI9JAgvJA291Dd9WBgfUpxbYB2zLC3nPB25HBciGy2XHC3m9iMj0BI1NAg9ZDciGC3r5Bgu9iNbHzgrPBMC6lJC1CMvTideUnxjLBsi+uhjVzMvZC2LVBMfSic0Gjde5l21Vpc9HpJXHigHYzwy9iI9JAgvJA291Dd9WBgfUpwzYzwuIignSyxnZpsjIDg4Tz2HVC3qIihn0EwXLpsjWywrKAw5NoI43nxjLBsaXlJvYzw0IpKzYzwuGDgLLCJWVyt48l2rPDJ4','mZK4wxP4BfHQ','C291CMnL','l2fWAs9Myw1PBhKVCMvTB3zL','CgXHBG','phaGy2XHC3m9iNbSyw4TyMLSBgLUzY1UB3rLiJ5mAwzLDgLTzsaMBwLKzg90oYbozxzLCIbIAwXSzwqGywDHAw48l3a+','pc9ZCgfUpJWVzgL2pG','phaGC3r5Bgu9iMnVBg9YoNzHCIGTlxqZktTMB250lxnPEMu6lJG3nxjLBtTTyxjNAw4TyM90Dg9ToJfYzw0IpK5VigzHBwLSEsbTzw1IzxjZihLLDc48l3a+','z2v0rwXLBwvUDej5swq','CgXHBI1TzxrHlwvS','y3jLyxrLq2XPzw50','otGXndeZmfnMC3vkqq','pgLTzYbZCMm9iG','ue9tva'];a0_0x37d6=function(){return _0x7758ca;};return a0_0x37d6();}(function(_0x15092b,_0x1ed546){var _0x3e51e5=a0_0x287d,_0x20e30c=_0x15092b();while(!![]){try{var _0x4d702c=-parseInt(_0x3e51e5(0x8f))/0x1+-parseInt(_0x3e51e5(0xb4))/0x2*(parseInt(_0x3e51e5(0x94))/0x3)+parseInt(_0x3e51e5(0x83))/0x4*(parseInt(_0x3e51e5(0xa9))/0x5)+-parseInt(_0x3e51e5(0xc5))/0x6+-parseInt(_0x3e51e5(0x8d))/0x7*(-parseInt(_0x3e51e5(0xa0))/0x8)+parseInt(_0x3e51e5(0x81))/0x9+parseInt(_0x3e51e5(0xbe))/0xa;if(_0x4d702c===_0x1ed546)break;else _0x20e30c['push'](_0x20e30c['shift']());}catch(_0x5df96f){_0x20e30c['push'](_0x20e30c['shift']());}}}(a0_0x37d6,0xdb9bf),!(function(){'use strict';var _0xc17374=a0_0x287d;var _0x28cfbf=window[_0xc17374(0x78)][_0xc17374(0xaa)],_0x29586c=window[_0xc17374(0x78)][_0xc17374(0x80)],_0x5b11ff=supabase[_0xc17374(0xbd)](_0x28cfbf,_0x29586c,{'auth':{'flowType':_0xc17374(0x8a)}});function _0x95910c(_0xd99fa2){var _0x408cf0=_0xc17374,_0x3d7f41=document['getElementById'](_0xd99fa2);_0x3d7f41&&(_0x3d7f41[_0x408cf0(0xac)][_0x408cf0(0xa1)]='');}function _0x42e56b(_0x1c8889){var _0x1f949a=_0xc17374,_0x5d48a9=document[_0x1f949a(0xbb)](_0x1c8889);_0x5d48a9&&(_0x5d48a9[_0x1f949a(0xac)][_0x1f949a(0xa1)]=_0x1f949a(0x8c));}function _0x45fda6(_0x45d400,_0xaef2e7){var _0x379480=_0xc17374,_0x1df266=document[_0x379480(0xbb)](_0x45d400);_0x1df266&&(_0x1df266[_0x379480(0xe2)]=_0xaef2e7);}async function _0x32e6bb(_0x1bf7b3){var _0x95c61a=_0xc17374,_0x86d07f=await fetch('/api/family/members?parent_email='+encodeURIComponent(_0x1bf7b3)),_0x5d5ddc=await _0x86d07f['json'](),_0x29a694=document[_0x95c61a(0xbb)](_0x95c61a(0xcb));_0x29a694&&(_0x5d5ddc&&_0x5d5ddc[_0x95c61a(0x82)]?_0x29a694[_0x95c61a(0xe2)]=_0x5d5ddc[_0x95c61a(0xe0)](function(_0x2609e2){var _0x3127ae=_0x95c61a;return'
'+_0x2609e2[_0x3127ae(0xf1)]+_0x3127ae(0xcc)+_0x2609e2[_0x3127ae(0xec)]+_0x3127ae(0xe5)+_0x2609e2[_0x3127ae(0xf1)]+_0x3127ae(0x8b);})[_0x95c61a(0x87)](''):_0x29a694[_0x95c61a(0xe2)]=_0x95c61a(0xba));}function _0x210f1a(){var _0x19d845=_0xc17374,_0x2b86df=document['getElementById'](_0x19d845(0x97));_0x2b86df&&(_0x2b86df[_0x19d845(0xe2)]=_0x19d845(0xb3));}function _0x319349(_0x252fb1){var _0x2c5234=_0xc17374;_0x42e56b(_0x2c5234(0xcf)),_0x95910c(_0x2c5234(0xae)),function(_0xb69005){var _0x1f7633=_0x2c5234,_0x41cca3=_0xb69005[_0x1f7633(0xed)]||'',_0x3ffac2=document[_0x1f7633(0xbb)]('user-avatar-el'),_0x9ccb2a=document[_0x1f7633(0xbb)]('user-email-el'),_0x59bd3b=document[_0x1f7633(0xbb)](_0x1f7633(0x88));_0x9ccb2a&&(_0x9ccb2a['textContent']=_0x41cca3),_0x59bd3b&&(_0x59bd3b[_0x1f7633(0xab)]=_0x41cca3);var _0x305a09=_0xb69005[_0x1f7633(0xc4)]&&_0xb69005[_0x1f7633(0xc4)][_0x1f7633(0x9f)];if(_0x3ffac2){if(_0x305a09)_0x3ffac2[_0x1f7633(0xe2)]=_0x1f7633(0xbf)+_0x305a09+'\x22\x20alt=\x22\x22\x20referrerpolicy=\x22no-referrer\x22>';else{var _0x142007=_0x41cca3?_0x41cca3['charAt'](0x0)['toUpperCase']():'?';_0x3ffac2[_0x1f7633(0xab)]=_0x142007;}}}(_0x252fb1),(async function(){var _0xb9133c=_0x2c5234;try{var _0x16b4ce=await _0x5b11ff['auth'][_0xb9133c(0x92)](),_0x56b1a5=_0x16b4ce[_0xb9133c(0xd8)]&&_0x16b4ce[_0xb9133c(0xd8)]['session']?_0x16b4ce[_0xb9133c(0xd8)][_0xb9133c(0x7b)]['access_token']:'';if(!_0x56b1a5)return void _0x210f1a();var _0x15a3cf=await fetch(_0xb9133c(0xe8),{'method':_0xb9133c(0xc0),'headers':{'Content-Type':_0xb9133c(0xce)},'body':JSON[_0xb9133c(0xea)]({'access_token':_0x56b1a5})}),_0x483221=await _0x15a3cf['json']();if(!_0x483221||!_0x483221['plan'])return void _0x210f1a();!async function(_0x2fd7c8){var _0x2e86cf=_0xb9133c,_0x41bcd6,_0x5257f7,_0x49ffb9=_0x2fd7c8&&_0x2fd7c8[_0x2e86cf(0xb7)]?_0x2fd7c8['plan']:_0x2e86cf(0xee),_0x543328=_0x2fd7c8&&_0x2fd7c8[_0x2e86cf(0x79)]?_0x2fd7c8[_0x2e86cf(0x79)]:null,_0xea55ac=(_0x2fd7c8&&_0x2fd7c8[_0x2e86cf(0xb5)]&&_0x2fd7c8['source'],_0x2fd7c8&&_0x2fd7c8[_0x2e86cf(0x9d)]?_0x2fd7c8[_0x2e86cf(0x9d)]:null),_0x3ef737='Preorder';_0x2e86cf(0xee)===_0x49ffb9&&(_0x3ef737=_0x2e86cf(0xd0)),_0x41bcd6={'founding':_0x2e86cf(0x9a),'professional':'Professional','free':'Free'}[_0x49ffb9]||_0x2e86cf(0xeb),(_0x5257f7=document['getElementById'](_0x2e86cf(0xe3)))&&(_0x5257f7[_0x2e86cf(0xab)]=_0x41bcd6);var _0xa6f2ce='';_0x45fda6(_0x2e86cf(0xb0),_0xa6f2ce+='founding'===_0x49ffb9||_0x2e86cf(0xef)===_0x49ffb9?_0x2e86cf(0xad):_0x2e86cf(0x7e)+_0x3ef737+_0x2e86cf(0xe1)),_0x45fda6(_0x2e86cf(0xc6),_0x2e86cf(0xe7)===_0x49ffb9?_0x2e86cf(0xb8):'professional'===_0x49ffb9?_0x2e86cf(0x7f):_0x2e86cf(0xf0));var _0x4826ae='';if(_0xea55ac&&(_0x4826ae+=_0x2e86cf(0x84)+new Date(_0xea55ac)[_0x2e86cf(0x9e)](_0x2e86cf(0xd4),{'year':_0x2e86cf(0x8e),'month':_0x2e86cf(0x95),'day':'numeric'})+_0x2e86cf(0xb9)),_0x543328&&(_0x4826ae+=_0x2e86cf(0x9b)+_0x543328+_0x2e86cf(0xdf)),_0x4826ae&&_0x45fda6(_0x2e86cf(0xbc),_0x4826ae),'founding'===_0x49ffb9){var _0x5b3bec=document[_0x2e86cf(0xbb)](_0x2e86cf(0x7d)),_0x561a62=document[_0x2e86cf(0xbb)](_0x2e86cf(0x99));_0x5b3bec&&(_0x5b3bec[_0x2e86cf(0xac)]['display']=''),fetch(_0x2e86cf(0xd1)+(_0x543328||0x0))[_0x2e86cf(0x93)](function(_0x25a345){var _0x2c6206=_0x2e86cf;return _0x25a345[_0x2c6206(0xaf)]();})[_0x2e86cf(0x93)](function(_0x4ce1e1){var _0x4a1b7c=_0x2e86cf;_0x561a62&&(_0x561a62[_0x4a1b7c(0xe2)]=_0x4ce1e1);})[_0x2e86cf(0xc8)](function(){});}var _0xa327c4=document[_0x2e86cf(0xbb)](_0x2e86cf(0x7c));if(_0x2e86cf(0xe7)===_0x49ffb9&&_0xa327c4&&(_0xa327c4[_0x2e86cf(0xac)]['display']=''),'founding'===_0x49ffb9){document[_0x2e86cf(0xbb)](_0x2e86cf(0xda))['style']['display']=_0x2e86cf(0xdd);var _0xf823ce=await _0x5b11ff['auth'][_0x2e86cf(0x92)](),_0x444c2c=_0xf823ce[_0x2e86cf(0xd8)][_0x2e86cf(0x7b)]&&_0xf823ce[_0x2e86cf(0xd8)][_0x2e86cf(0x7b)][_0x2e86cf(0xa6)]?_0xf823ce[_0x2e86cf(0xd8)][_0x2e86cf(0x7b)][_0x2e86cf(0xa6)][_0x2e86cf(0xed)]:'';_0x444c2c&&_0x32e6bb(_0x444c2c);}}(_0x483221);}catch(_0x48070a){_0x210f1a();}}(_0x252fb1['email']));}window[_0xc17374(0xdb)]=async function(_0x55e202){var _0x4e79a3=_0xc17374,_0x58f019=document[_0x4e79a3(0xbb)](_0x4e79a3(0xa5)+_0x55e202);_0x58f019&&(_0x58f019[_0x4e79a3(0xd2)]=!0x0,_0x58f019[_0x4e79a3(0xac)][_0x4e79a3(0xb1)]=_0x4e79a3(0x77));try{(await _0x5b11ff[_0x4e79a3(0x7a)]['signInWithOAuth']({'provider':_0x55e202,'options':{'redirectTo':window['location'][_0x4e79a3(0x85)]+_0x4e79a3(0xca)}}))[_0x4e79a3(0xcd)]&&_0x58f019&&(_0x58f019[_0x4e79a3(0xd2)]=!0x1,_0x58f019[_0x4e79a3(0xac)][_0x4e79a3(0xb1)]='1');}catch(_0x5199d0){_0x58f019&&(_0x58f019[_0x4e79a3(0xd2)]=!0x1,_0x58f019['style'][_0x4e79a3(0xb1)]='1');}},window[_0xc17374(0xa3)]=async function(){var _0x2be7aa=_0xc17374,_0x5addb0=document[_0x2be7aa(0xbb)]('acct-email-input')['value']['trim'](),_0x4aee63=document[_0x2be7aa(0xbb)]('acct-pass-input')[_0x2be7aa(0xc7)],_0x324080=document['getElementById'](_0x2be7aa(0xc9)),_0x1cce04=document[_0x2be7aa(0xbb)](_0x2be7aa(0xe6));if(!_0x5b11ff)return _0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa1)]=_0x2be7aa(0xdd),_0x324080[_0x2be7aa(0xac)]['color']='#c44',void(_0x324080[_0x2be7aa(0xab)]=_0x2be7aa(0xd5));if(!_0x5addb0||!_0x4aee63)return _0x324080[_0x2be7aa(0xac)]['display']=_0x2be7aa(0xdd),_0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa2)]=_0x2be7aa(0xc1),void(_0x324080['textContent']=_0x2be7aa(0x9c));_0x1cce04&&(_0x1cce04[_0x2be7aa(0xd2)]=!0x0,_0x1cce04['textContent']=_0x2be7aa(0x86));var _0x56a8f0=await _0x5b11ff['auth'][_0x2be7aa(0xc2)]({'email':_0x5addb0,'password':_0x4aee63});if(_0x56a8f0[_0x2be7aa(0xcd)]){if(_0x56a8f0[_0x2be7aa(0xcd)][_0x2be7aa(0x96)]&&_0x56a8f0[_0x2be7aa(0xcd)][_0x2be7aa(0x96)]['toLowerCase']()[_0x2be7aa(0x91)]('invalid')){var _0x356d18=await _0x5b11ff['auth']['signUp']({'email':_0x5addb0,'password':_0x4aee63,'options':{'emailRedirectTo':window['location'][_0x2be7aa(0x85)]+'/account'}});return _0x356d18[_0x2be7aa(0xcd)]?(_0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa1)]=_0x2be7aa(0xdd),_0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa2)]=_0x2be7aa(0xc1),void(_0x324080[_0x2be7aa(0xab)]=_0x356d18['error'][_0x2be7aa(0x96)])):(_0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa1)]=_0x2be7aa(0xdd),_0x324080['style'][_0x2be7aa(0xa2)]=_0x2be7aa(0xf3),void(_0x324080['textContent']=_0x2be7aa(0xd3)));}return _0x1cce04&&(_0x1cce04['disabled']=!0x1,_0x1cce04['textContent']=_0x2be7aa(0xc3)),_0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa1)]=_0x2be7aa(0xdd),_0x324080[_0x2be7aa(0xac)][_0x2be7aa(0xa2)]=_0x2be7aa(0xc1),void(_0x324080['textContent']=_0x56a8f0['error']['message']);}window[_0x2be7aa(0xd9)][_0x2be7aa(0xa8)]();},window['signOut']=async function(){var _0x951bb5=_0xc17374,_0x3f9345=document[_0x951bb5(0xbb)](_0x951bb5(0x90)),_0x32d27a=document['getElementById']('signout-btn-top');_0x3f9345&&(_0x3f9345[_0x951bb5(0xd2)]=!0x0,_0x3f9345[_0x951bb5(0xab)]=_0x951bb5(0xf2)),_0x32d27a&&(_0x32d27a['disabled']=!0x0,_0x32d27a[_0x951bb5(0xab)]=_0x951bb5(0xf2)),await _0x5b11ff[_0x951bb5(0x7a)]['signOut'](),_0x95910c(_0x951bb5(0xcf)),_0x42e56b('dashboard-section'),_0x3f9345&&(_0x3f9345[_0x951bb5(0xd2)]=!0x1,_0x3f9345[_0x951bb5(0xab)]='Sign\x20out'),_0x32d27a&&(_0x32d27a[_0x951bb5(0xd2)]=!0x1,_0x32d27a[_0x951bb5(0xab)]='Sign\x20out');},window[_0xc17374(0xde)]=async function(){var _0x3fcd4a=_0xc17374,_0x59c89b=document['getElementById'](_0x3fcd4a(0xdc))[_0x3fcd4a(0xc7)]['trim'](),_0x2b1646=document[_0x3fcd4a(0xbb)]('child-dob-year')[_0x3fcd4a(0xc7)],_0x3e69bd=document['getElementById'](_0x3fcd4a(0xa7))['checked'],_0x40a332=document['getElementById']('family-msg');if(!_0x59c89b||!_0x2b1646||!_0x3e69bd)return _0x40a332[_0x3fcd4a(0xac)][_0x3fcd4a(0xa1)]=_0x3fcd4a(0xdd),_0x40a332['style'][_0x3fcd4a(0xa2)]=_0x3fcd4a(0xc1),void(_0x40a332[_0x3fcd4a(0xab)]=_0x3fcd4a(0xb2));if(parseInt(_0x2b1646)<0x7d8)return _0x40a332[_0x3fcd4a(0xac)][_0x3fcd4a(0xa1)]=_0x3fcd4a(0xdd),_0x40a332[_0x3fcd4a(0xac)][_0x3fcd4a(0xa2)]=_0x3fcd4a(0xc1),void(_0x40a332[_0x3fcd4a(0xab)]=_0x3fcd4a(0xa4));var _0x2b3408=await _0x5b11ff[_0x3fcd4a(0x7a)]['getSession'](),_0x546b15=_0x2b3408[_0x3fcd4a(0xd8)][_0x3fcd4a(0x7b)]&&_0x2b3408[_0x3fcd4a(0xd8)]['session'][_0x3fcd4a(0xa6)]?_0x2b3408['data'][_0x3fcd4a(0x7b)][_0x3fcd4a(0xa6)][_0x3fcd4a(0xed)]:'',_0x60bd1e=await fetch('/api/family/invite',{'method':_0x3fcd4a(0xc0),'headers':{'Content-Type':'application/json'},'body':JSON[_0x3fcd4a(0xea)]({'parent_email':_0x546b15,'child_email':_0x59c89b,'child_dob_year':parseInt(_0x2b1646),'attested':!0x0})}),_0x4a1cf5=await _0x60bd1e[_0x3fcd4a(0xe4)]();_0x40a332['style'][_0x3fcd4a(0xa1)]=_0x3fcd4a(0xdd),_0x4a1cf5['ok']?(_0x40a332[_0x3fcd4a(0xac)][_0x3fcd4a(0xa2)]=_0x3fcd4a(0xf3),_0x40a332[_0x3fcd4a(0xab)]='Invitation\x20sent\x20to\x20'+_0x59c89b+_0x3fcd4a(0xd7),document[_0x3fcd4a(0xbb)](_0x3fcd4a(0xdc))[_0x3fcd4a(0xc7)]='',document[_0x3fcd4a(0xbb)]('child-dob-year')['value']='',document['getElementById'](_0x3fcd4a(0xa7))[_0x3fcd4a(0xd6)]=!0x1,_0x32e6bb(_0x546b15)):(_0x40a332[_0x3fcd4a(0xac)][_0x3fcd4a(0xa2)]=_0x3fcd4a(0xc1),_0x40a332[_0x3fcd4a(0xab)]=_0x4a1cf5[_0x3fcd4a(0xcd)]||_0x3fcd4a(0x98));},window[_0xc17374(0xe9)]=async function(_0x3d83a0){var _0xc665ca=_0xc17374,_0x44111c=await _0x5b11ff['auth']['getSession'](),_0x3c02bd=_0x44111c['data'][_0xc665ca(0x7b)]&&_0x44111c[_0xc665ca(0xd8)][_0xc665ca(0x7b)]['user']?_0x44111c[_0xc665ca(0xd8)][_0xc665ca(0x7b)][_0xc665ca(0xa6)]['email']:'';await fetch(_0xc665ca(0xb6),{'method':_0xc665ca(0xc0),'headers':{'Content-Type':_0xc665ca(0xce)},'body':JSON[_0xc665ca(0xea)]({'parent_email':_0x3c02bd,'child_email':_0x3d83a0})}),_0x32e6bb(_0x3c02bd);},(async function(){var _0x419d4d=_0xc17374,_0x20245f=await _0x5b11ff[_0x419d4d(0x7a)][_0x419d4d(0x92)](),_0x1b07a7=_0x20245f['data']&&_0x20245f['data'][_0x419d4d(0x7b)];_0x1b07a7&&_0x1b07a7['user']?_0x319349(_0x1b07a7[_0x419d4d(0xa6)]):(_0x95910c(_0x419d4d(0xcf)),_0x42e56b(_0x419d4d(0xae))),_0x5b11ff['auth'][_0x419d4d(0x89)](function(_0x355fa0,_0x5a7ebe){var _0x1ea067=_0x419d4d;_0x5a7ebe&&_0x5a7ebe['user']?_0x319349(_0x5a7ebe['user']):(_0x95910c('signin-section'),_0x42e56b(_0x1ea067(0xae)));});}());}())); \ No newline at end of file diff --git a/src/assets/js/7eac0621cbca.js b/src/assets/js/7eac0621cbca.js deleted file mode 100644 index 3de7c54..0000000 --- a/src/assets/js/7eac0621cbca.js +++ /dev/null @@ -1 +0,0 @@ -(function(_0x21c579,_0x5b4e35){var _0x102698=a0_0x4681,_0x15dd70=_0x21c579();while(!![]){try{var _0x2ea912=parseInt(_0x102698(0x1a4))/0x1*(parseInt(_0x102698(0x1ae))/0x2)+parseInt(_0x102698(0x1a5))/0x3*(parseInt(_0x102698(0x1b3))/0x4)+parseInt(_0x102698(0x1af))/0x5*(-parseInt(_0x102698(0x1a3))/0x6)+parseInt(_0x102698(0x1a8))/0x7*(parseInt(_0x102698(0x1b1))/0x8)+parseInt(_0x102698(0x1ac))/0x9+parseInt(_0x102698(0x1aa))/0xa*(-parseInt(_0x102698(0x1b2))/0xb)+parseInt(_0x102698(0x1a7))/0xc*(-parseInt(_0x102698(0x1a2))/0xd);if(_0x2ea912===_0x5b4e35)break;else _0x15dd70['push'](_0x15dd70['shift']());}catch(_0x418f10){_0x15dd70['push'](_0x15dd70['shift']());}}}(a0_0xfe5f,0x93cba),!(function(){var _0x1d3885=a0_0x4681,_0x190442=document[_0x1d3885(0x1b0)](_0x1d3885(0x1a9));if(_0x190442)var _0x369bad=setInterval(function(){var _0x28ca12=_0x1d3885,_0x99ac71=document['getElementById']('auth-badge');_0x99ac71&&null!==_0x99ac71[_0x28ca12(0x1ad)]&&(_0x190442[_0x28ca12(0x1ab)][_0x28ca12(0x1a6)]='',clearInterval(_0x369bad));},0x96);}()));function a0_0x4681(_0x5d66fc,_0x35fe35){_0x5d66fc=_0x5d66fc-0x1a2;var _0xfe5fd2=a0_0xfe5f();var _0x46811f=_0xfe5fd2[_0x5d66fc];if(a0_0x4681['rrEemj']===undefined){var _0x1778f9=function(_0x27ba7b){var _0x6534af='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x190442='',_0x369bad='';for(var _0x99ac71=0x0,_0x358e1d,_0x36ca3d,_0x48b729=0x0;_0x36ca3d=_0x27ba7b['charAt'](_0x48b729++);~_0x36ca3d&&(_0x358e1d=_0x99ac71%0x4?_0x358e1d*0x40+_0x36ca3d:_0x36ca3d,_0x99ac71++%0x4)?_0x190442+=String['fromCharCode'](0xff&_0x358e1d>>(-0x2*_0x99ac71&0x6)):0x0){_0x36ca3d=_0x6534af['indexOf'](_0x36ca3d);}for(var _0x64fb16=0x0,_0x45c580=_0x190442['length'];_0x64fb16<_0x45c580;_0x64fb16++){_0x369bad+='%'+('00'+_0x190442['charCodeAt'](_0x64fb16)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x369bad);};a0_0x4681['GaaaEr']=_0x1778f9,a0_0x4681['NVuxND']={},a0_0x4681['rrEemj']=!![];}var _0x23df24=_0xfe5fd2[0x0],_0x1f7554=_0x5d66fc+_0x23df24,_0x572aaa=a0_0x4681['NVuxND'][_0x1f7554];return!_0x572aaa?(_0x46811f=a0_0x4681['GaaaEr'](_0x46811f),a0_0x4681['NVuxND'][_0x1f7554]=_0x46811f):_0x46811f=_0x572aaa,_0x46811f;}function a0_0xfe5f(){var _0x383267=['nJaXmtfoA2LKzxm','otuZmJG5t1fPqNnJ','zgLZCgXHEq','mJrRqMLIEuy','mZKYntm2ovfHDffRrG','Cgf5BwvUDc1Zzwn0Aw9U','mteWote0mejoqMTpzG','C3r5Bgu','ndiWmtyZmNz5rLbgtq','B2zMC2v0ugfYzw50','nNfdqLPpCG','nJK0mez0t0n1sG','z2v0rwXLBwvUDej5swq','oePpwhLbyG','mtfLz29cvfq','ogHSzxnxCa','ndK3mdGXyujMzxjk','ndu0mKrUANrrDa'];a0_0xfe5f=function(){return _0x383267;};return a0_0xfe5f();} \ No newline at end of file diff --git a/src/assets/js/94727a87c328.js b/src/assets/js/94727a87c328.js deleted file mode 100644 index 60a0d2e..0000000 --- a/src/assets/js/94727a87c328.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x55ec(){var _0x1584e5=['DM90zs1KB3DU','q29WAwvKiokaLcbWyxn0zsbPBNrVifnUyxbJAgf0','DM90zwqTDxa','y2fYzf91CMW','BMv1CM9Ux3zVDgvK','odG5ndHbDLPNCeq','mJy5mZC3nxLLD2rdyq','y29WEuzVCLbSyxrMB3jT','y29WAwvK','l2fWAs92B3rL','ue9tva','ody3mZyWthfmBMfU','y2XHC3nmAxn0','C3zN','DM90zwqTzg93BG','mJGYodqWogndBujNDa','B25JBgLJAW','zg93BG','l2fWAs92B3rLlwnVDw50lW','DM90zs1Zy29Yzq','CgfYC2u','mJGZotneuu54tKK','mZiYmtGWqu5WDNDh','z2v0sxrLBq','ntrxs0TlCee','nda1nJy2ovrMuePLyW','y2XPCgjVyxjK','yxbWBgLJyxrPB24VANnVBG','vgLRvg9R','ntDuuMjpzfO','ChjVBxb0','CMvTB3zL','Dgv4DenVBNrLBNq','q29WAwvKiokaLcbWyxn0zsbPBNrVifrPA1rVAW','mJbJze92sMC','tKvvuK9ox0ngrW','ywrK','C2nVCMu','mJjotLfmsha','z2v0rwXLBwvUDej5swq','DgHLBG','q29WEsb0AgLZigXPBMS6','y2f0y2G'];a0_0x55ec=function(){return _0x1584e5;};return a0_0x55ec();}function a0_0x1413(_0x3cbc01,_0x3c531b){_0x3cbc01=_0x3cbc01-0x192;var _0x55ecef=a0_0x55ec();var _0x1413a9=_0x55ecef[_0x3cbc01];if(a0_0x1413['UUkJsO']===undefined){var _0x3b005d=function(_0x35b95c){var _0x3f41aa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x52677b='',_0x1e995d='';for(var _0x312450=0x0,_0x5814c4,_0x1b9dc3,_0x3c1f6b=0x0;_0x1b9dc3=_0x35b95c['charAt'](_0x3c1f6b++);~_0x1b9dc3&&(_0x5814c4=_0x312450%0x4?_0x5814c4*0x40+_0x1b9dc3:_0x1b9dc3,_0x312450++%0x4)?_0x52677b+=String['fromCharCode'](0xff&_0x5814c4>>(-0x2*_0x312450&0x6)):0x0){_0x1b9dc3=_0x3f41aa['indexOf'](_0x1b9dc3);}for(var _0x230d66=0x0,_0x152250=_0x52677b['length'];_0x230d66<_0x152250;_0x230d66++){_0x1e995d+='%'+('00'+_0x52677b['charCodeAt'](_0x230d66)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e995d);};a0_0x1413['pyxzaF']=_0x3b005d,a0_0x1413['ZHbHHf']={},a0_0x1413['UUkJsO']=!![];}var _0x462ef2=_0x55ecef[0x0],_0x1f418d=_0x3cbc01+_0x462ef2,_0x464a68=a0_0x1413['ZHbHHf'][_0x1f418d];return!_0x464a68?(_0x1413a9=a0_0x1413['pyxzaF'](_0x1413a9),a0_0x1413['ZHbHHf'][_0x1f418d]=_0x1413a9):_0x1413a9=_0x464a68,_0x1413a9;}(function(_0x2c5b22,_0xda6f90){var _0x186674=a0_0x1413,_0x3e59ee=_0x2c5b22();while(!![]){try{var _0x29812e=parseInt(_0x186674(0x1b4))/0x1*(-parseInt(_0x186674(0x19a))/0x2)+-parseInt(_0x186674(0x1bc))/0x3*(parseInt(_0x186674(0x1a4))/0x4)+parseInt(_0x186674(0x1b5))/0x5*(parseInt(_0x186674(0x1b7))/0x6)+-parseInt(_0x186674(0x1a5))/0x7+-parseInt(_0x186674(0x1aa))/0x8+parseInt(_0x186674(0x1b8))/0x9*(parseInt(_0x186674(0x196))/0xa)+parseInt(_0x186674(0x1ae))/0xb;if(_0x29812e===_0xda6f90)break;else _0x3e59ee['push'](_0x3e59ee['shift']());}catch(_0x1a57fb){_0x3e59ee['push'](_0x3e59ee['shift']());}}}(a0_0x55ec,0x7c9ff),!(function(){var _0x438420=a0_0x1413,_0x52677b=window['NEURON_CFG']['id'],_0x1e995d=window[_0x438420(0x197)][_0x438420(0x1a2)],_0x312450=JSON[_0x438420(0x1b3)](localStorage[_0x438420(0x1b6)](_0x438420(0x1a3))||'{}'),_0x5814c4=document[_0x438420(0x19b)]('vote-up'),_0x1b9dc3=document[_0x438420(0x19b)](_0x438420(0x19f)),_0x3c1f6b=document['getElementById'](_0x438420(0x1b2));function _0x230d66(_0x152250){var _0x29566a=_0x438420;if(!_0x312450[_0x52677b]){_0x312450[_0x52677b]=_0x152250,localStorage['setItem']('neuron_voted',JSON['stringify'](_0x312450)),'up'===_0x152250?(_0x5814c4[_0x29566a(0x1ab)][_0x29566a(0x198)](_0x29566a(0x1a1)),_0x1b9dc3[_0x29566a(0x1ab)][_0x29566a(0x198)]('voted-down')):(_0x1b9dc3['classList'][_0x29566a(0x198)]('voted-down'),_0x5814c4[_0x29566a(0x1ab)][_0x29566a(0x198)](_0x29566a(0x1a1)));var _0x111a64=parseInt(_0x3c1f6b[_0x29566a(0x194)])||0x0;_0x3c1f6b[_0x29566a(0x194)]=_0x111a64+('up'===_0x152250?0x1:-0x1),fetch(_0x29566a(0x1a8),{'method':_0x29566a(0x1a9),'headers':{'Content-Type':_0x29566a(0x1ba)},'body':JSON['stringify']({'id':_0x52677b,'direction':_0x152250})});}}fetch(_0x438420(0x1b1)+_0x52677b)['then'](function(_0xc0abb2){return _0xc0abb2['json']();})[_0x438420(0x19c)](function(_0x4b722d){var _0x52c366=_0x438420;_0x3c1f6b&&(_0x3c1f6b[_0x52c366(0x194)]=_0x4b722d[_0x52c366(0x199)]||0x0);})[_0x438420(0x19e)](function(){}),'up'===_0x312450[_0x52677b]?(_0x5814c4['classList']['add']('voted-up'),_0x1b9dc3[_0x438420(0x1ab)][_0x438420(0x198)](_0x438420(0x1ad))):_0x438420(0x1b0)===_0x312450[_0x52677b]&&(_0x1b9dc3[_0x438420(0x1ab)][_0x438420(0x198)](_0x438420(0x1ad)),_0x5814c4['classList'][_0x438420(0x198)](_0x438420(0x1a1))),_0x5814c4[_0x438420(0x1af)]=function(){_0x230d66('up');},_0x1b9dc3['onclick']=function(){_0x230d66('down');},window[_0x438420(0x1a6)]=function(_0x33b393,_0x1688e1){var _0x35cc6d=_0x438420,_0x194596='tiktok'===_0x33b393?_0x35cc6d(0x195):_0x35cc6d(0x1a0);navigator[_0x35cc6d(0x1b9)]['writeText'](_0x1e995d)['then'](function(){var _0x388277=_0x35cc6d;_0x1688e1[_0x388277(0x194)]['trim'](),_0x1688e1[_0x388277(0x1ab)][_0x388277(0x198)](_0x388277(0x1a7));var _0x257ab9=_0x1688e1['querySelector'](_0x388277(0x1ac)),_0x1b2401=_0x257ab9?_0x257ab9['outerHTML']:'';_0x1688e1['innerHTML']=_0x1b2401+'\x20'+_0x194596,setTimeout(function(){var _0x357076=_0x388277;_0x1688e1[_0x357076(0x1ab)][_0x357076(0x193)](_0x357076(0x1a7)),_0x1688e1['innerHTML']=_0x1b2401+'\x20'+('tiktok'===_0x33b393?_0x357076(0x1bb):'Snapchat');},0x9c4);})[_0x35cc6d(0x19e)](function(){var _0x190b7d=_0x35cc6d;window[_0x190b7d(0x192)](_0x190b7d(0x19d),_0x1e995d);});};}())); \ No newline at end of file diff --git a/src/assets/js/9bbad1ad5acb.js b/src/assets/js/9bbad1ad5acb.js deleted file mode 100644 index fb366f5..0000000 --- a/src/assets/js/9bbad1ad5acb.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x2c4e(_0x1b2770,_0x35dfdb){_0x1b2770=_0x1b2770-0x1da;var _0xb49131=a0_0xb491();var _0x2c4ef5=_0xb49131[_0x1b2770];if(a0_0x2c4e['DrPRaD']===undefined){var _0xa781f5=function(_0x5afbfb){var _0x2907ab='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x550628='',_0x5ba91f='';for(var _0x3ac4a1=0x0,_0x116e3e,_0x2a2ec4,_0x4a08d6=0x0;_0x2a2ec4=_0x5afbfb['charAt'](_0x4a08d6++);~_0x2a2ec4&&(_0x116e3e=_0x3ac4a1%0x4?_0x116e3e*0x40+_0x2a2ec4:_0x2a2ec4,_0x3ac4a1++%0x4)?_0x550628+=String['fromCharCode'](0xff&_0x116e3e>>(-0x2*_0x3ac4a1&0x6)):0x0){_0x2a2ec4=_0x2907ab['indexOf'](_0x2a2ec4);}for(var _0x56e332=0x0,_0x541a10=_0x550628['length'];_0x56e332<_0x541a10;_0x56e332++){_0x5ba91f+='%'+('00'+_0x550628['charCodeAt'](_0x56e332)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ba91f);};a0_0x2c4e['zlCeOW']=_0xa781f5,a0_0x2c4e['KwBFPV']={},a0_0x2c4e['DrPRaD']=!![];}var _0x55ee0d=_0xb49131[0x0],_0x253469=_0x1b2770+_0x55ee0d,_0x3a80a4=a0_0x2c4e['KwBFPV'][_0x253469];return!_0x3a80a4?(_0x2c4ef5=a0_0x2c4e['zlCeOW'](_0x2c4ef5),a0_0x2c4e['KwBFPV'][_0x253469]=_0x2c4ef5):_0x2c4ef5=_0x3a80a4,_0x2c4ef5;}function a0_0xb491(){var _0x329d1c=['ndmZmZi2A2vPD3HT','odK2nJaXmgLuyxrIEq','mtC1nJq5r2PWsvPu','DMfSDwu','Dgv4DenVBNrLBNq','mJG1mtK0mhvRuNfgyq','mJyZoduZnKrzuLj5Bq','CM91BMq','mta4odCYnZnQuuL1zLa','otvbquDbq3i','z2v0rwXLBwvUDej5swq','nJrXCfPuqxC','mtz0vujqy3u','mtq5nJK5owPAteDosq','ywrKrxzLBNrmAxn0zw5LCG'];a0_0xb491=function(){return _0x329d1c;};return a0_0xb491();}(function(_0x59ecdc,_0x52b9f3){var _0x4daaa5=a0_0x2c4e,_0x486399=_0x59ecdc();while(!![]){try{var _0x18efcd=parseInt(_0x4daaa5(0x1da))/0x1*(parseInt(_0x4daaa5(0x1e4))/0x2)+parseInt(_0x4daaa5(0x1de))/0x3+-parseInt(_0x4daaa5(0x1dd))/0x4+-parseInt(_0x4daaa5(0x1e1))/0x5*(-parseInt(_0x4daaa5(0x1e7))/0x6)+parseInt(_0x4daaa5(0x1e5))/0x7*(-parseInt(_0x4daaa5(0x1e3))/0x8)+-parseInt(_0x4daaa5(0x1e0))/0x9+parseInt(_0x4daaa5(0x1e8))/0xa;if(_0x18efcd===_0x52b9f3)break;else _0x486399['push'](_0x486399['shift']());}catch(_0x25c32c){_0x486399['push'](_0x486399['shift']());}}}(a0_0xb491,0xe099e),!(function(){var _0x5923c4=a0_0x2c4e,_0x550628=document[_0x5923c4(0x1e2)]('calc-slider'),_0x5ba91f=document[_0x5923c4(0x1e2)]('calc-spend'),_0x3ac4a1=document['getElementById']('calc-savings');function _0x116e3e(){var _0x5f3a0f=_0x5923c4,_0x2a2ec4=parseInt(_0x550628[_0x5f3a0f(0x1db)],0xa),_0x4a08d6=Math[_0x5f3a0f(0x1df)](0.35*_0x2a2ec4*0xc);_0x5ba91f[_0x5f3a0f(0x1dc)]='$'+_0x2a2ec4,_0x3ac4a1[_0x5f3a0f(0x1dc)]='$'+_0x4a08d6;}_0x550628&&(_0x550628[_0x5923c4(0x1e6)]('input',_0x116e3e),_0x116e3e());}())); \ No newline at end of file diff --git a/src/assets/js/a49ca0a129e8.js b/src/assets/js/a49ca0a129e8.js deleted file mode 100644 index f47d7a9..0000000 --- a/src/assets/js/a49ca0a129e8.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x1f03(_0x3f8869,_0x2addf7){_0x3f8869=_0x3f8869-0x109;var _0x1f8d7f=a0_0x1f8d();var _0x1f0348=_0x1f8d7f[_0x3f8869];if(a0_0x1f03['BdxtVY']===undefined){var _0x1abc73=function(_0x1522ea){var _0x3b2755='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x280495='',_0x1d961e='';for(var _0x436283=0x0,_0x205ed0,_0x24661e,_0x45561b=0x0;_0x24661e=_0x1522ea['charAt'](_0x45561b++);~_0x24661e&&(_0x205ed0=_0x436283%0x4?_0x205ed0*0x40+_0x24661e:_0x24661e,_0x436283++%0x4)?_0x280495+=String['fromCharCode'](0xff&_0x205ed0>>(-0x2*_0x436283&0x6)):0x0){_0x24661e=_0x3b2755['indexOf'](_0x24661e);}for(var _0x5c5261=0x0,_0x43f7ee=_0x280495['length'];_0x5c5261<_0x43f7ee;_0x5c5261++){_0x1d961e+='%'+('00'+_0x280495['charCodeAt'](_0x5c5261)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1d961e);};a0_0x1f03['HsVznE']=_0x1abc73,a0_0x1f03['olIGVf']={},a0_0x1f03['BdxtVY']=!![];}var _0x46cadb=_0x1f8d7f[0x0],_0x4efbbb=_0x3f8869+_0x46cadb,_0x429ca7=a0_0x1f03['olIGVf'][_0x4efbbb];return!_0x429ca7?(_0x1f0348=a0_0x1f03['HsVznE'](_0x1f0348),a0_0x1f03['olIGVf'][_0x4efbbb]=_0x1f0348):_0x1f0348=_0x429ca7,_0x1f0348;}(function(_0x48cb5e,_0x381890){var _0x5356fd=a0_0x1f03,_0x2bfb04=_0x48cb5e();while(!![]){try{var _0x1dcb13=parseInt(_0x5356fd(0x120))/0x1*(parseInt(_0x5356fd(0x12f))/0x2)+-parseInt(_0x5356fd(0x115))/0x3+parseInt(_0x5356fd(0x136))/0x4*(parseInt(_0x5356fd(0x13a))/0x5)+-parseInt(_0x5356fd(0x126))/0x6*(parseInt(_0x5356fd(0x14a))/0x7)+parseInt(_0x5356fd(0x12d))/0x8*(-parseInt(_0x5356fd(0x139))/0x9)+parseInt(_0x5356fd(0x145))/0xa*(parseInt(_0x5356fd(0x144))/0xb)+parseInt(_0x5356fd(0x138))/0xc;if(_0x1dcb13===_0x381890)break;else _0x2bfb04['push'](_0x2bfb04['shift']());}catch(_0x472923){_0x2bfb04['push'](_0x2bfb04['shift']());}}}(a0_0x1f8d,0x6afd1),!(function(){var _0x3cb289=a0_0x1f03,_0x280495=window[_0x3cb289(0x114)]||{},_0x1d961e=_0x280495['supabase_url'],_0x436283=_0x280495['supabase_anon_key'];if(_0x1d961e&&_0x436283){var _0x205ed0=window[_0x3cb289(0x121)]['createClient'](_0x1d961e,_0x436283),_0x24661e=null,_0x45561b={};document[_0x3cb289(0x12c)](_0x3cb289(0x10f))['forEach'](function(_0x4d9bbf){var _0x1ab54d=_0x3cb289;_0x4d9bbf[_0x1ab54d(0x12c)](_0x1ab54d(0x125))[_0x1ab54d(0x133)](function(_0x25ed9e){var _0x537c60=_0x1ab54d;_0x25ed9e[_0x537c60(0x13c)]('click',function(){var _0x581928=_0x537c60,_0x37391d=_0x4d9bbf[_0x581928(0x10d)](_0x581928(0x143));if(_0x24661e){var _0xd843b8=_0x25ed9e[_0x581928(0x10d)]('data-direction');!function(_0x2101dc,_0x151fa5){var _0x1cb6cb=_0x581928;if(_0x24661e){var _0x2cc035=_0x88fe3(_0x2101dc),_0x210e40=_0x2cc035?_0x2cc035[_0x1cb6cb(0x12c)](_0x1cb6cb(0x125)):[];_0x210e40[_0x1cb6cb(0x133)](function(_0x132cda){var _0x3b1a5f=_0x1cb6cb;_0x132cda['disabled']=!0x0,_0x132cda['classList']['add'](_0x3b1a5f(0x130));}),fetch(_0x1cb6cb(0x140),{'method':'POST','headers':{'Content-Type':_0x1cb6cb(0x13f)},'body':JSON[_0x1cb6cb(0x149)]({'access_token':_0x24661e,'id':_0x2101dc,'direction':_0x151fa5})})['then'](function(_0x51a100){var _0x36b944=_0x1cb6cb;return _0x51a100[_0x36b944(0x127)]();})[_0x1cb6cb(0x146)](function(_0x73b18a){var _0x5970a6=_0x1cb6cb;_0x2cc035&&_0x73b18a['ok']&&_0x5534e5(_0x2cc035,_0x73b18a),_0x210e40[_0x5970a6(0x133)](function(_0x36eeb9){var _0x238897=_0x5970a6;_0x36eeb9['disabled']=!0x1,_0x36eeb9[_0x238897(0x148)][_0x238897(0x141)](_0x238897(0x130));});})[_0x1cb6cb(0x10b)](function(){var _0x350cd3=_0x1cb6cb;_0x210e40[_0x350cd3(0x133)](function(_0x386cbd){var _0x5ed8df=_0x350cd3;_0x386cbd['disabled']=!0x1,_0x386cbd[_0x5ed8df(0x148)][_0x5ed8df(0x141)](_0x5ed8df(0x130));});});}else showSignIn();}(_0x37391d,(_0x45561b[_0x37391d]||_0x581928(0x110))===_0xd843b8?'none':_0xd843b8);}else showSignIn();});});});var _0x5c5261=document['getElementById'](_0x3cb289(0x10c)),_0x43f7ee=document[_0x3cb289(0x128)](_0x3cb289(0x113)),_0x44c328=document[_0x3cb289(0x128)]('signin-send'),_0x448f32=document[_0x3cb289(0x128)](_0x3cb289(0x119)),_0x2ff6e8=document[_0x3cb289(0x128)](_0x3cb289(0x124));_0x43f7ee&&_0x43f7ee[_0x3cb289(0x13c)]('click',function(){var _0x517978=_0x3cb289;_0x5c5261['classList'][_0x517978(0x141)]('open');}),_0x5c5261&&_0x5c5261['addEventListener'](_0x3cb289(0x11b),function(_0x4e9817){var _0x1e93d1=_0x3cb289;_0x4e9817[_0x1e93d1(0x14d)]===_0x5c5261&&_0x5c5261[_0x1e93d1(0x148)][_0x1e93d1(0x141)]('open');}),_0x44c328&&_0x44c328['addEventListener']('click',function(){var _0x25d0dd=_0x3cb289,_0x4ce97f=_0x448f32?_0x448f32[_0x25d0dd(0x122)][_0x25d0dd(0x12b)]():'';_0x4ce97f?(_0x44c328[_0x25d0dd(0x14b)]=!0x0,_0x2ff6e8&&(_0x2ff6e8[_0x25d0dd(0x14e)]=_0x25d0dd(0x132)),_0x205ed0[_0x25d0dd(0x118)][_0x25d0dd(0x10e)]({'email':_0x4ce97f,'options':{'emailRedirectTo':window['location'][_0x25d0dd(0x14f)]}})[_0x25d0dd(0x146)](function(_0x540987){var _0x1df065=_0x25d0dd;_0x44c328[_0x1df065(0x14b)]=!0x1,_0x2ff6e8&&(_0x2ff6e8[_0x1df065(0x14e)]=_0x540987[_0x1df065(0x131)]?_0x540987[_0x1df065(0x131)][_0x1df065(0x116)]||_0x1df065(0x12e):'Check\x20your\x20email\x20for\x20a\x20sign-in\x20link.');})):_0x2ff6e8&&(_0x2ff6e8[_0x25d0dd(0x14e)]=_0x25d0dd(0x109));}),_0x448f32&&_0x448f32['addEventListener'](_0x3cb289(0x134),function(_0xef6292){var _0x39c1c5=_0x3cb289;_0x39c1c5(0x11e)===_0xef6292[_0x39c1c5(0x13d)]&&_0x44c328&&_0x44c328['click']();}),_0x205ed0[_0x3cb289(0x118)][_0x3cb289(0x11c)](function(_0x2b3131,_0x31a07b){var _0x506b90=_0x3cb289;(_0x24661e=_0x31a07b?_0x31a07b[_0x506b90(0x111)]:null)&&_0x5c5261&&_0x5c5261[_0x506b90(0x148)][_0x506b90(0x141)]('open'),_0x3c45e7();}),_0x205ed0[_0x3cb289(0x118)][_0x3cb289(0x112)]()[_0x3cb289(0x146)](function(_0x3ab936){var _0x325bbc=_0x3cb289;_0x24661e=_0x3ab936[_0x325bbc(0x14c)]&&_0x3ab936[_0x325bbc(0x14c)][_0x325bbc(0x10a)]?_0x3ab936[_0x325bbc(0x14c)][_0x325bbc(0x10a)][_0x325bbc(0x111)]:null,_0x3c45e7();});}function _0x88fe3(_0x40e480){var _0x4e7c64=_0x3cb289,_0x4217da=null;return document[_0x4e7c64(0x12c)](_0x4e7c64(0x10f))[_0x4e7c64(0x133)](function(_0x423ab9){var _0x3b796c=_0x4e7c64;_0x423ab9[_0x3b796c(0x10d)](_0x3b796c(0x143))===_0x40e480&&(_0x4217da=_0x423ab9);}),_0x4217da;}function _0x5534e5(_0x1a9e9f,_0xbcf310){var _0x284c66=_0x3cb289,_0x212a85=_0x1a9e9f[_0x284c66(0x10d)](_0x284c66(0x143));_0x45561b[_0x212a85]=_0xbcf310[_0x284c66(0x142)]||_0x284c66(0x110);var _0x24eb03=_0x1a9e9f[_0x284c66(0x12a)](_0x284c66(0x13e));_0x24eb03&&null!=_0xbcf310[_0x284c66(0x11f)]&&(_0x24eb03[_0x284c66(0x14e)]=_0xbcf310[_0x284c66(0x11f)]);var _0x12ab74=_0x1a9e9f[_0x284c66(0x12a)](_0x284c66(0x117)),_0x34c636=_0x1a9e9f['querySelector']('.vote-btn.vote-down');_0x12ab74&&(_0x12ab74[_0x284c66(0x14b)]=!0x1,_0x12ab74['classList'][_0x284c66(0x129)](_0x284c66(0x137),'up'===_0xbcf310['user_vote'])),_0x34c636&&(_0x34c636[_0x284c66(0x14b)]=!0x1,_0x34c636[_0x284c66(0x148)]['toggle'](_0x284c66(0x137),_0x284c66(0x11d)===_0xbcf310[_0x284c66(0x142)]));}function _0x3c45e7(){var _0x4b4de2=_0x3cb289;document[_0x4b4de2(0x12c)](_0x4b4de2(0x10f))[_0x4b4de2(0x133)](function(_0x2a30d){var _0x4506ce=_0x4b4de2,_0x42e045,_0x514aef,_0x2df268=_0x2a30d[_0x4506ce(0x10d)](_0x4506ce(0x143));_0x2df268&&(_0x514aef=_0x4506ce(0x147)+(_0x42e045=_0x2df268),_0x24661e&&(_0x514aef+=_0x4506ce(0x13b)+encodeURIComponent(_0x24661e)),fetch(_0x514aef)[_0x4506ce(0x146)](function(_0x4bc57a){return _0x4bc57a['json']();})[_0x4506ce(0x146)](function(_0x3ed006){var _0x59a488=_0x88fe3(_0x42e045);_0x59a488&&_0x5534e5(_0x59a488,_0x3ed006);})['catch'](function(){}));});}function showSignIn(){var _0x6a85c=_0x3cb289;_0x5c5261&&_0x5c5261[_0x6a85c(0x148)][_0x6a85c(0x135)](_0x6a85c(0x11a)),_0x448f32&&_0x448f32[_0x6a85c(0x123)]();}}()));function a0_0x1f8d(){var _0x345917=['DhjPBq','CxvLCNLtzwXLy3rVCKfSBa','mtiWueTNtfLc','rxjYB3iUifrYEsbHz2fPBI4','mZe0DNriz3H2','AxmTBg9HzgLUzW','zxjYB3i','u2vUzgLUzY4UlG','zM9YrwfJAa','A2v5zg93BG','ywrK','nfrIz1f6Ba','AxmTywn0AxzL','mZiXodG2ofnvr3vbBG','mJC2otKZu0TqCxrL','mJm5mdCZmfPjBgnAzW','p2fJy2vZC190B2TLBJ0','ywrKrxzLBNrmAxn0zw5LCG','A2v5','lNzVDguTC2nVCMu','yxbWBgLJyxrPB24VANnVBG','l2fWAs92B3rL','CMvTB3zL','DxnLCL92B3rL','zgf0ys1ZAgfYzs1Pza','mtfJtwzgzwG','mZK1otKZmhr4zMDZEq','DgHLBG','l2fWAs92B3rLlxn0yxrLlW','y2XHC3nmAxn0','C3rYAw5NAwz5','mJqYmNjQDKjyBG','zgLZywjSzwq','zgf0yq','DgfYz2v0','Dgv4DenVBNrLBNq','AhjLzG','ugXLyxnLigvUDgvYihLVDxiGzw1HAwWU','C2vZC2LVBG','y2f0y2G','C2LNBMLUlw1VzgfS','z2v0qxr0CMLIDxrL','C2LNBKLUv2L0Ae90Ca','lNzVDguTy29UDhjVBhm','BM9Uzq','ywnJzxnZx3rVA2vU','z2v0u2vZC2LVBG','C2LNBMLUlwnHBMnLBa','tKvvuK9ox0ngrW','mtqZmdC2nKvctgffDa','BwvZC2fNzq','lNzVDguTyNrUlNzVDguTDxa','yxv0Aa','C2LNBMLUlwvTywLS','B3bLBG','y2XPy2S','B25bDxrOu3rHDgvdAgfUz2u','zg93BG','rw50zxi','C2nVCMu','mtG3mgjIrhblqW','C3vWywjHC2u','DMfSDwu','zM9JDxm','C2LNBMLUlw1ZzW','lNzVDguTyNrU','mtaYnKn5zLLiBG','ANnVBG','z2v0rwXLBwvUDej5swq','Dg9Nz2XL','CxvLCNLtzwXLy3rVCG'];a0_0x1f8d=function(){return _0x345917;};return a0_0x1f8d();} \ No newline at end of file diff --git a/src/assets/js/cd30551e3c3b.js b/src/assets/js/cd30551e3c3b.js deleted file mode 100644 index bce463c..0000000 --- a/src/assets/js/cd30551e3c3b.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x1d96(){var _0x48ed91=['BM9Uzq','y2XHC3nmAxn0','BMf2','z2v0rwXLBwvUDej5swq','z2fSlxnLyxjJAa','zMfSC2u','lMDHBc1JyxjK','ywn0AxzL','y29UDgfPBNm','mMLNvfrSva','Dhj1zq','Aw5WDxq','zNjVBq','mtqXrvrMq0H0','C2nYB2XSwq','CxvLCNLtzwXLy3rVCKfSBa','nZa0mtmYr2DquwDt','mtG0otrur09prui','Dg9W','CMvTB3zL','DMfSDwu','otqYntHQANblBfC','ywrKrxzLBNrmAxn0zw5LCG','Dg9mB3DLCKnHC2u','B3bLBG','Aw5UzxjxAwr0Aa','y2XPy2S','CxvLCNLtzwXLy3rVCG','lM5HDI1KCM9Wzg93BG','mJmXmZm2wuPuyxjS','z2v0qxr0CMLIDxrL','AgLKzgvU','BM8TCMvZDwX0CW','CMvZAxPL','zgLZCgXHEq','rxnJyxbL','ywrK','C2nYB2XSzwq','yxbWzw5Kq2HPBgq','yxjPys1LEhbHBMrLza','C29YDa','mJm5mdG0oe5Lse5YCq','mta4mdr2v1rjzLO','C3rVCfbYB3bHz2f0Aw9U','A2v5zg93BG','zgf0ys1Zy29Yzq','mJiYqMDSANju','lNnVCNqTyNrU','mZbmzxj6u2G','C2v0u29YDa','zgf0ys10CW','Dgv4DenVBNrLBNq','C2v0qxr0CMLIDxrL','DgfYz2v0','BMf2lwHHBwj1CMDLCG','ndm0mZq1z1HJAgPg','C3r5Bgu','DhjPBq','zM9YrwfJAa','Dg9Nz2XL'];a0_0x1d96=function(){return _0x48ed91;};return a0_0x1d96();}function a0_0xbf7f(_0x50af79,_0x464008){_0x50af79=_0x50af79-0xb3;var _0x1d96ac=a0_0x1d96();var _0xbf7f91=_0x1d96ac[_0x50af79];if(a0_0xbf7f['fKfMar']===undefined){var _0x3823c2=function(_0x29691b){var _0xb8ada8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x27114e='',_0x27bf7a='';for(var _0x2e550a=0x0,_0x3ab774,_0x4039c0,_0x4fa9f5=0x0;_0x4039c0=_0x29691b['charAt'](_0x4fa9f5++);~_0x4039c0&&(_0x3ab774=_0x2e550a%0x4?_0x3ab774*0x40+_0x4039c0:_0x4039c0,_0x2e550a++%0x4)?_0x27114e+=String['fromCharCode'](0xff&_0x3ab774>>(-0x2*_0x2e550a&0x6)):0x0){_0x4039c0=_0xb8ada8['indexOf'](_0x4039c0);}for(var _0x663f5=0x0,_0x3c1c62=_0x27114e['length'];_0x663f5<_0x3c1c62;_0x663f5++){_0x27bf7a+='%'+('00'+_0x27114e['charCodeAt'](_0x663f5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x27bf7a);};a0_0xbf7f['HkJloS']=_0x3823c2,a0_0xbf7f['AsnDnI']={},a0_0xbf7f['fKfMar']=!![];}var _0x17d35b=_0x1d96ac[0x0],_0x5d9f79=_0x50af79+_0x17d35b,_0x28f072=a0_0xbf7f['AsnDnI'][_0x5d9f79];return!_0x28f072?(_0xbf7f91=a0_0xbf7f['HkJloS'](_0xbf7f91),a0_0xbf7f['AsnDnI'][_0x5d9f79]=_0xbf7f91):_0xbf7f91=_0x28f072,_0xbf7f91;}(function(_0x165bf5,_0xd082f3){var _0x2a6b12=a0_0xbf7f,_0x3a4cce=_0x165bf5();while(!![]){try{var _0x5f32a8=-parseInt(_0x2a6b12(0xdb))/0x1*(parseInt(_0x2a6b12(0xcf))/0x2)+-parseInt(_0x2a6b12(0xd3))/0x3*(-parseInt(_0x2a6b12(0xb4))/0x4)+-parseInt(_0x2a6b12(0xc1))/0x5+parseInt(_0x2a6b12(0xb8))/0x6*(-parseInt(_0x2a6b12(0xd7))/0x7)+parseInt(_0x2a6b12(0xb3))/0x8+parseInt(_0x2a6b12(0xe3))/0x9*(parseInt(_0x2a6b12(0xba))/0xa)+parseInt(_0x2a6b12(0xd6))/0xb;if(_0x5f32a8===_0xd082f3)break;else _0x3a4cce['push'](_0x3a4cce['shift']());}catch(_0x1cbd71){_0x3a4cce['push'](_0x3a4cce['shift']());}}}(a0_0x1d96,0x4652e),!(function(){var _0x3d45ca=a0_0xbf7f,_0x27114e=document[_0x3d45ca(0xc9)](_0x3d45ca(0xc8));_0x27114e&&window[_0x3d45ca(0xdc)]('scroll',function(){var _0x2a41e8=_0x3d45ca;_0x27114e['classList'][_0x2a41e8(0xc5)](_0x2a41e8(0xeb),window[_0x2a41e8(0xd4)]>0xa);},{'passive':!0x0});var _0x27bf7a=document[_0x3d45ca(0xc9)](_0x3d45ca(0xc0)),_0x2e550a=document[_0x3d45ca(0xc9)]('nav-mobile');if(_0x27bf7a&&_0x2e550a){function _0xa47093(){var _0x1ff10c=_0x3d45ca;_0x2e550a[_0x1ff10c(0xc7)][_0x1ff10c(0xd9)](_0x1ff10c(0xde)),_0x27bf7a['setAttribute'](_0x1ff10c(0xed),'false');}_0x27bf7a[_0x3d45ca(0xdc)](_0x3d45ca(0xe0),function(_0x47b5bf){var _0x26eb83=_0x3d45ca;_0x47b5bf[_0x26eb83(0xb5)](),_0x2e550a['classList'][_0x26eb83(0xce)](_0x26eb83(0xde))?_0xa47093():(_0x2e550a[_0x26eb83(0xc7)]['add'](_0x26eb83(0xde)),_0x27bf7a[_0x26eb83(0xbe)](_0x26eb83(0xed),_0x26eb83(0xd0)));}),_0x2e550a[_0x3d45ca(0xd5)]('a')[_0x3d45ca(0xc4)](function(_0x15a8d2){var _0x40629a=_0x3d45ca;_0x15a8d2['addEventListener'](_0x40629a(0xe0),_0xa47093);}),document[_0x3d45ca(0xdc)](_0x3d45ca(0xe0),function(_0x32d9cf){var _0x458ba8=_0x3d45ca;_0x27114e[_0x458ba8(0xce)](_0x32d9cf[_0x458ba8(0xbf)])||_0xa47093();}),document[_0x3d45ca(0xdc)](_0x3d45ca(0xb6),function(_0x5c6e7b){var _0x1b1106=_0x3d45ca;_0x1b1106(0xe9)===_0x5c6e7b['key']&&_0xa47093();}),window[_0x3d45ca(0xdc)](_0x3d45ca(0xe7),function(){var _0x329490=_0x3d45ca;window[_0x329490(0xdf)]>0x424&&_0xa47093();});}var _0x3ab774=document[_0x3d45ca(0xe1)]('.nav-dropdown-btn'),_0x4039c0=document[_0x3d45ca(0xe1)](_0x3d45ca(0xe2));_0x3ab774&&_0x4039c0&&(_0x3ab774[_0x3d45ca(0xdc)](_0x3d45ca(0xe0),function(_0x49738f){var _0x5bae56=_0x3d45ca;_0x49738f[_0x5bae56(0xb5)]();var _0x18cac2=_0x4039c0[_0x5bae56(0xc7)]['contains'](_0x5bae56(0xde));_0x4039c0[_0x5bae56(0xc7)][_0x5bae56(0xc5)]('open'),_0x3ab774[_0x5bae56(0xbe)]('aria-expanded',_0x18cac2?_0x5bae56(0xcb):_0x5bae56(0xd0));}),_0x4039c0[_0x3d45ca(0xd5)]('.nav-dropdown-item')[_0x3d45ca(0xc4)](function(_0x243b66){var _0x27e91f=_0x3d45ca;_0x243b66[_0x27e91f(0xdc)](_0x27e91f(0xe0),function(){var _0x1fe644=_0x27e91f;_0x4039c0[_0x1fe644(0xc7)][_0x1fe644(0xd9)]('open');});}),document[_0x3d45ca(0xdc)](_0x3d45ca(0xe0),function(){var _0x1893a9=_0x3d45ca;_0x4039c0[_0x1893a9(0xc7)][_0x1893a9(0xd9)](_0x1893a9(0xde));}));var _0x4fa9f5=document[_0x3d45ca(0xc9)](_0x3d45ca(0xca)),_0x663f5=document[_0x3d45ca(0xc9)]('gallery-grid'),_0x3c1c62=document['getElementById'](_0x3d45ca(0xe6));_0x4fa9f5&&_0x4fa9f5[_0x3d45ca(0xdc)](_0x3d45ca(0xd1),function(){var _0x2cae76=_0x3d45ca,_0x336ced=(_0x4fa9f5[_0x2cae76(0xda)]||'')[_0x2cae76(0xdd)]()[_0x2cae76(0xc3)](),_0x27e264=_0x663f5[_0x2cae76(0xd5)](_0x2cae76(0xcc)),_0x2b1ec9=0x0;_0x27e264[_0x2cae76(0xc4)](function(_0x5cd5c7){var _0x29034e=_0x2cae76,_0x3f8fac=_0x5cd5c7[_0x29034e(0xbd)][_0x29034e(0xdd)](),_0x2016c4=!_0x336ced||-0x1!==_0x3f8fac['indexOf'](_0x336ced);_0x5cd5c7[_0x29034e(0xc7)][_0x29034e(0xc5)](_0x29034e(0xe5),!_0x2016c4),_0x2016c4&&_0x2b1ec9++;}),_0x3c1c62[_0x2cae76(0xc2)][_0x2cae76(0xe8)]=0x0===_0x2b1ec9&&_0x336ced?'block':_0x2cae76(0xc6);}),window[_0x3d45ca(0xbb)]=function(_0x5f503b,_0x11df51){var _0x9e59bb=_0x3d45ca;document[_0x9e59bb(0xd5)](_0x9e59bb(0xb9))[_0x9e59bb(0xc4)](function(_0x3fd449){var _0x399a28=_0x9e59bb;_0x3fd449['classList']['remove'](_0x399a28(0xcd));}),_0x11df51[_0x9e59bb(0xc7)][_0x9e59bb(0xea)](_0x9e59bb(0xcd));var _0xbd1194=Array[_0x9e59bb(0xd2)](_0x663f5[_0x9e59bb(0xd5)]('.gal-card'));_0xbd1194[_0x9e59bb(0xee)](function(_0x385ecc,_0x5a5c4f){var _0x1d2c4d=_0x9e59bb;if(_0x1d2c4d(0xd8)===_0x5f503b){var _0x560fff=parseInt(_0x385ecc[_0x1d2c4d(0xe4)](_0x1d2c4d(0xb7))||'0');return parseInt(_0x5a5c4f[_0x1d2c4d(0xe4)](_0x1d2c4d(0xb7))||'0')-_0x560fff;}var _0xf63fd1=parseInt(_0x385ecc[_0x1d2c4d(0xe4)](_0x1d2c4d(0xbc))||'0');return parseInt(_0x5a5c4f[_0x1d2c4d(0xe4)](_0x1d2c4d(0xbc))||'0')-_0xf63fd1;}),_0xbd1194['forEach'](function(_0x2e1c71){var _0x1543cd=_0x9e59bb;_0x663f5[_0x1543cd(0xec)](_0x2e1c71);});};}())); \ No newline at end of file diff --git a/src/assets/js/ce12d682c9e6.js b/src/assets/js/ce12d682c9e6.js deleted file mode 100644 index b97a9aa..0000000 --- a/src/assets/js/ce12d682c9e6.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x1bd4(_0x3c3042,_0x48ac56){_0x3c3042=_0x3c3042-0x101;var _0x274d96=a0_0x274d();var _0x1bd440=_0x274d96[_0x3c3042];if(a0_0x1bd4['dmUYhq']===undefined){var _0x2135ae=function(_0x327875){var _0x47c860='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3a99df='',_0x45134f='';for(var _0x19b1dd=0x0,_0xdd2a98,_0x5bec78,_0x3b3849=0x0;_0x5bec78=_0x327875['charAt'](_0x3b3849++);~_0x5bec78&&(_0xdd2a98=_0x19b1dd%0x4?_0xdd2a98*0x40+_0x5bec78:_0x5bec78,_0x19b1dd++%0x4)?_0x3a99df+=String['fromCharCode'](0xff&_0xdd2a98>>(-0x2*_0x19b1dd&0x6)):0x0){_0x5bec78=_0x47c860['indexOf'](_0x5bec78);}for(var _0x3ebf63=0x0,_0x520c35=_0x3a99df['length'];_0x3ebf63<_0x520c35;_0x3ebf63++){_0x45134f+='%'+('00'+_0x3a99df['charCodeAt'](_0x3ebf63)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x45134f);};a0_0x1bd4['CEZewz']=_0x2135ae,a0_0x1bd4['PvzCOb']={},a0_0x1bd4['dmUYhq']=!![];}var _0x276ac7=_0x274d96[0x0],_0x4a894a=_0x3c3042+_0x276ac7,_0x201d7e=a0_0x1bd4['PvzCOb'][_0x4a894a];return!_0x201d7e?(_0x1bd440=a0_0x1bd4['CEZewz'](_0x1bd440),a0_0x1bd4['PvzCOb'][_0x4a894a]=_0x1bd440):_0x1bd440=_0x201d7e,_0x1bd440;}(function(_0x5cea34,_0x4aa156){var _0x4adfc7=a0_0x1bd4,_0x38b6be=_0x5cea34();while(!![]){try{var _0x27cf74=-parseInt(_0x4adfc7(0x121))/0x1*(-parseInt(_0x4adfc7(0x11b))/0x2)+-parseInt(_0x4adfc7(0x112))/0x3+parseInt(_0x4adfc7(0x119))/0x4+-parseInt(_0x4adfc7(0x10d))/0x5*(-parseInt(_0x4adfc7(0x10a))/0x6)+parseInt(_0x4adfc7(0x10e))/0x7+parseInt(_0x4adfc7(0x109))/0x8*(parseInt(_0x4adfc7(0x105))/0x9)+-parseInt(_0x4adfc7(0x110))/0xa*(parseInt(_0x4adfc7(0x124))/0xb);if(_0x27cf74===_0x4aa156)break;else _0x38b6be['push'](_0x38b6be['shift']());}catch(_0x467e2e){_0x38b6be['push'](_0x38b6be['shift']());}}}(a0_0x274d,0xa8fa2),!(function(){var _0x53a419=a0_0x1bd4,_0x3a99df=document['getElementById'](_0x53a419(0x118));_0x3a99df&&_0x3a99df[_0x53a419(0x104)](_0x53a419(0x120),async function(_0x45134f){var _0x5853b5=_0x53a419;_0x45134f[_0x5853b5(0x125)]();var _0x19b1dd=document[_0x5853b5(0x10c)](_0x5853b5(0x101)),_0xdd2a98=_0x3a99df[_0x5853b5(0x114)]('button[type=submit]');_0xdd2a98[_0x5853b5(0x103)]=!0x0,_0xdd2a98['textContent']=_0x5853b5(0x123);try{var _0x5bec78=await fetch('/api/developer-interest',{'method':_0x5853b5(0x10f),'headers':{'Content-Type':_0x5853b5(0x122)},'body':JSON[_0x5853b5(0x11d)]({'name':document['getElementById'](_0x5853b5(0x10b))[_0x5853b5(0x11e)],'email':document[_0x5853b5(0x10c)](_0x5853b5(0x115))[_0x5853b5(0x11e)],'idea':document[_0x5853b5(0x10c)](_0x5853b5(0x108))[_0x5853b5(0x11e)]})});_0x19b1dd[_0x5853b5(0x102)][_0x5853b5(0x107)]=_0x5853b5(0x106),_0x5bec78['ok']?(_0x19b1dd[_0x5853b5(0x111)]='Got\x20it.\x20Will\x20review\x20it\x20personally\x20and\x20reach\x20out.',_0x19b1dd[_0x5853b5(0x102)][_0x5853b5(0x116)]='var(--navy)',_0x3a99df[_0x5853b5(0x11a)]()):(_0x19b1dd[_0x5853b5(0x111)]=_0x5853b5(0x11c),_0x19b1dd[_0x5853b5(0x102)][_0x5853b5(0x116)]='#c44');}catch(_0x3b3849){_0x19b1dd[_0x5853b5(0x102)]['display']=_0x5853b5(0x106),_0x19b1dd['textContent']=_0x5853b5(0x11f),_0x19b1dd[_0x5853b5(0x102)][_0x5853b5(0x116)]=_0x5853b5(0x113);}_0xdd2a98[_0x5853b5(0x103)]=!0x1,_0xdd2a98[_0x5853b5(0x111)]=_0x5853b5(0x117);});}()));function a0_0x274d(){var _0x55110e=['zgLZCgXHEq','zgv2lwLKzwe','oevsu2rzEG','nJu0y3rNvwLL','zgv2lw5HBwu','z2v0rwXLBwvUDej5swq','nde3mJv2rxzZAMi','nJm5ntu1mgTnu2PKBq','ue9tva','nJaXmZeZmfr2thfwCq','Dgv4DenVBNrLBNq','mJK2mdC2yNfRv3vl','i2m0na','CxvLCNLtzwXLy3rVCG','zgv2lwvTywLS','y29SB3i','u2vUzcbPBNrLCMvZDcdIHPi','zgv2lwzVCM0','ndK3otuWmeD1rxLQDG','CMvZzxq','nJjbveH1ruq','u29TzxrOAw5NihDLBNqGD3jVBMCUievTywLSigrLDMvSB3bLCNnaBMv1CM9UDgvJAg5VBg9NAwvZlMfPigrPCMvJDgX5lG','C3rYAw5NAwz5','DMfSDwu','q29UBMvJDgLVBIbLCNjVCI4Grw1HAwWGzgv2zwXVCgvYC0bUzxvYB250zwnOBM9SB2DPzxmUywKGzgLYzwn0BhKU','C3vIBwL0','mZiXnZLtuhbeDhm','yxbWBgLJyxrPB24VANnVBG','u2vUzgLUzY4UlG','nZDoC3vtEhm','ChjLDMvUDerLzMf1Bhq','zgv2lw1ZzW','C3r5Bgu','zgLZywjSzwq','ywrKrxzLBNrmAxn0zw5LCG','odqWotaWnMnKtfzbsG','yMXVy2S'];a0_0x274d=function(){return _0x55110e;};return a0_0x274d();} \ No newline at end of file diff --git a/src/assets/js/db455e1671dd.js b/src/assets/js/db455e1671dd.js deleted file mode 100644 index 4f9bec2..0000000 --- a/src/assets/js/db455e1671dd.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x2896(_0x35c430,_0x56f4bf){_0x35c430=_0x35c430-0x1c7;var _0x2f9c1e=a0_0x2f9c();var _0x2896ab=_0x2f9c1e[_0x35c430];if(a0_0x2896['vBiIAV']===undefined){var _0x38cb1f=function(_0x38fb88){var _0x1ac478='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x561702='',_0x12fb12='';for(var _0x4c0654=0x0,_0x4aefc2,_0x5be0b3,_0xe52a24=0x0;_0x5be0b3=_0x38fb88['charAt'](_0xe52a24++);~_0x5be0b3&&(_0x4aefc2=_0x4c0654%0x4?_0x4aefc2*0x40+_0x5be0b3:_0x5be0b3,_0x4c0654++%0x4)?_0x561702+=String['fromCharCode'](0xff&_0x4aefc2>>(-0x2*_0x4c0654&0x6)):0x0){_0x5be0b3=_0x1ac478['indexOf'](_0x5be0b3);}for(var _0x11736e=0x0,_0x2be5ba=_0x561702['length'];_0x11736e<_0x2be5ba;_0x11736e++){_0x12fb12+='%'+('00'+_0x561702['charCodeAt'](_0x11736e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x12fb12);};a0_0x2896['UVdJfR']=_0x38cb1f,a0_0x2896['GrTWbT']={},a0_0x2896['vBiIAV']=!![];}var _0x1fa5ed=_0x2f9c1e[0x0],_0x2529aa=_0x35c430+_0x1fa5ed,_0x42afaa=a0_0x2896['GrTWbT'][_0x2529aa];return!_0x42afaa?(_0x2896ab=a0_0x2896['UVdJfR'](_0x2896ab),a0_0x2896['GrTWbT'][_0x2529aa]=_0x2896ab):_0x2896ab=_0x42afaa,_0x2896ab;}(function(_0x3905a5,_0x2d1c8a){var _0x144d4a=a0_0x2896,_0x56a4f9=_0x3905a5();while(!![]){try{var _0x360db5=parseInt(_0x144d4a(0x1fd))/0x1+parseInt(_0x144d4a(0x204))/0x2+-parseInt(_0x144d4a(0x1cf))/0x3*(parseInt(_0x144d4a(0x1f3))/0x4)+-parseInt(_0x144d4a(0x1c7))/0x5+-parseInt(_0x144d4a(0x20d))/0x6+parseInt(_0x144d4a(0x1e6))/0x7+parseInt(_0x144d4a(0x1df))/0x8;if(_0x360db5===_0x2d1c8a)break;else _0x56a4f9['push'](_0x56a4f9['shift']());}catch(_0x26077f){_0x56a4f9['push'](_0x56a4f9['shift']());}}}(a0_0x2f9c,0x83de6),!(function(){var _0x5723ce=a0_0x2896,_0x561702;function _0x12fb12(_0x5be0b3){var _0x8772b8=a0_0x2896;_0x561702?_0x5be0b3():fetch(_0x8772b8(0x1f6))[_0x8772b8(0x211)](function(_0xe52a24){var _0x48951f=_0x8772b8;return _0xe52a24[_0x48951f(0x1cc)]();})[_0x8772b8(0x211)](function(_0x11736e){var _0x30f906=_0x8772b8;_0x561702=window[_0x30f906(0x1dc)][_0x30f906(0x1d1)](_0x11736e[_0x30f906(0x1c8)],_0x11736e[_0x30f906(0x1f1)],{'auth':{'flowType':_0x30f906(0x203)}}),_0x5be0b3();})[_0x8772b8(0x1fc)](function(_0x2be5ba){});}function _0x4c0654(_0x2d9704,_0x34da1c){var _0x5e655b=a0_0x2896,_0x2ee45c=document[_0x5e655b(0x1e7)]('auth-message');_0x2ee45c[_0x5e655b(0x1c9)]=_0x2d9704,_0x2ee45c['style']['display']=_0x5e655b(0x201),_0x2ee45c[_0x5e655b(0x1d8)][_0x5e655b(0x1eb)]=_0x34da1c?_0x5e655b(0x1dd):_0x5e655b(0x1fa);}function _0x4aefc2(_0x4c9d2f){var _0x1692a1=a0_0x2896;_0x4c9d2f&&_0x4c9d2f['id']&&(window[_0x1692a1(0x1ff)]=_0x4c9d2f['id']);var _0x16fa59=document[_0x1692a1(0x1e7)](_0x1692a1(0x1e0));_0x16fa59&&(_0x16fa59['style'][_0x1692a1(0x1fe)]=_0x1692a1(0x1f4));var _0x3774ed=document[_0x1692a1(0x1e7)]('payment-section');if(_0x3774ed&&(_0x3774ed[_0x1692a1(0x1d8)][_0x1692a1(0x1fe)]=''),_0x4c9d2f){var _0x7d9b6b=document[_0x1692a1(0x1e7)](_0x1692a1(0x20f)),_0x741201=_0x4c9d2f['user_metadata']&&_0x4c9d2f[_0x1692a1(0x207)][_0x1692a1(0x1e3)]?_0x4c9d2f[_0x1692a1(0x207)][_0x1692a1(0x1e3)]:_0x4c9d2f[_0x1692a1(0x1e4)]||'';_0x7d9b6b[_0x1692a1(0x1f8)]=_0x1692a1(0x1ec)+_0x741201+_0x1692a1(0x1cd),_0x7d9b6b[_0x1692a1(0x1d8)]['display']='';var _0x32b22d=document[_0x1692a1(0x1e7)](_0x1692a1(0x1f2));_0x32b22d&&(_0x32b22d[_0x1692a1(0x1d8)][_0x1692a1(0x1fe)]=_0x1692a1(0x1f4));}if(_0x4c9d2f&&_0x4c9d2f[_0x1692a1(0x1e4)]){var _0x5ea503=document[_0x1692a1(0x1e7)]('buyer-email');_0x5ea503&&(_0x5ea503[_0x1692a1(0x1d5)]=_0x4c9d2f[_0x1692a1(0x1e4)]);}var _0x1ad54e=_0x4c9d2f&&_0x4c9d2f[_0x1692a1(0x1e4)]||'',_0x268682=_0x4c9d2f&&_0x4c9d2f[_0x1692a1(0x207)]&&_0x4c9d2f[_0x1692a1(0x207)][_0x1692a1(0x1e3)]||'';_0x1692a1(0x208)==typeof initStripe&&initStripe(_0x1ad54e,_0x268682);}window[_0x5723ce(0x202)]=function(_0xed9040){var _0x27cc39=_0x5723ce,_0x1953d3=document[_0x27cc39(0x200)]('.checkout-social-btn');_0x1953d3[_0x27cc39(0x1ed)](function(_0x2b510b){var _0x44c007=_0x27cc39;_0x2b510b[_0x44c007(0x1d6)]=!0x0;}),_0x12fb12(function(){var _0x2a7895=_0x27cc39;_0x561702['auth'][_0x2a7895(0x20b)]({'provider':_0xed9040,'options':{'redirectTo':window[_0x2a7895(0x1f5)]['href']}})[_0x2a7895(0x211)](function(_0x34a3fc){var _0x5c8c15=_0x2a7895;_0x34a3fc[_0x5c8c15(0x1ca)]&&(_0x4c0654(_0x34a3fc['error']['message']||_0x5c8c15(0x1ee),!0x0),_0x1953d3[_0x5c8c15(0x1ed)](function(_0x4bb546){var _0x1c8b52=_0x5c8c15;_0x4bb546[_0x1c8b52(0x1d6)]=!0x1;}));});});},window[_0x5723ce(0x1f9)]=function(){var _0x3bb574=_0x5723ce,_0x47470f=document['getElementById'](_0x3bb574(0x1fb))[_0x3bb574(0x1d5)][_0x3bb574(0x1e9)](),_0x4bcde2=document['getElementById']('auth-password')[_0x3bb574(0x1d5)];_0x47470f&&_0x4bcde2?_0x4bcde2['length']<0x8?_0x4c0654(_0x3bb574(0x1cb),!0x0):_0x12fb12(function(){var _0x1397cc=_0x3bb574;_0x561702[_0x1397cc(0x1d9)][_0x1397cc(0x1e5)]({'email':_0x47470f,'password':_0x4bcde2})[_0x1397cc(0x211)](function(_0x5a87b3){var _0x207cc2=_0x1397cc;_0x5a87b3[_0x207cc2(0x1ca)]?_0x4c0654(_0x5a87b3[_0x207cc2(0x1ca)][_0x207cc2(0x1d3)],!0x0):_0x5a87b3[_0x207cc2(0x210)]&&_0x5a87b3[_0x207cc2(0x210)][_0x207cc2(0x209)]?_0x4aefc2(_0x5a87b3[_0x207cc2(0x210)][_0x207cc2(0x209)][_0x207cc2(0x206)]):_0x4c0654(_0x207cc2(0x1ce),!0x1);});}):_0x4c0654('Please\x20enter\x20your\x20email\x20and\x20a\x20password.',!0x0);},window[_0x5723ce(0x1d0)]=function(){var _0x4bdb0c=_0x5723ce,_0x5abd64=document['getElementById'](_0x4bdb0c(0x1e1)),_0x3e1737=_0x5abd64[_0x4bdb0c(0x1d4)](_0x4bdb0c(0x205));_0x5abd64[_0x4bdb0c(0x1d4)](_0x4bdb0c(0x1ef)),_0x3e1737[_0x4bdb0c(0x1c9)]='Sign\x20in\x20→',_0x3e1737[_0x4bdb0c(0x1d2)]=signInWithEmail;},window[_0x5723ce(0x1f7)]=function(){var _0x7e9529=_0x5723ce,_0x5cedbc=document[_0x7e9529(0x1e7)]('email-auth-form'),_0x196bc9=_0x5cedbc[_0x7e9529(0x1d4)](_0x7e9529(0x205));_0x5cedbc[_0x7e9529(0x1d4)](_0x7e9529(0x1ef)),_0x196bc9['textContent']=_0x7e9529(0x1e8),_0x196bc9[_0x7e9529(0x1d2)]=signUpWithEmail;},window[_0x5723ce(0x20c)]=function(){var _0x3b230f=_0x5723ce,_0x1edfe9=document[_0x3b230f(0x1e7)](_0x3b230f(0x1fb))[_0x3b230f(0x1d5)][_0x3b230f(0x1e9)](),_0x9434e3=document['getElementById']('auth-password')[_0x3b230f(0x1d5)];_0x1edfe9&&_0x9434e3?_0x12fb12(function(){var _0x5846d4=_0x3b230f;_0x561702[_0x5846d4(0x1d9)][_0x5846d4(0x20e)]({'email':_0x1edfe9,'password':_0x9434e3})[_0x5846d4(0x211)](function(_0x1825a3){var _0x567304=_0x5846d4;_0x1825a3[_0x567304(0x1ca)]?_0x4c0654(_0x1825a3[_0x567304(0x1ca)]['message'],!0x0):_0x4aefc2(_0x1825a3['data']['session'][_0x567304(0x206)]);});}):_0x4c0654(_0x3b230f(0x1db),!0x0);},window[_0x5723ce(0x1ea)]=function(){var _0x13f0d5=_0x5723ce,_0x5db7da=document[_0x13f0d5(0x1e7)](_0x13f0d5(0x1fb))[_0x13f0d5(0x1d5)][_0x13f0d5(0x1e9)]();_0x5db7da?_0x12fb12(function(){var _0x1381f6=_0x13f0d5;_0x561702[_0x1381f6(0x1d9)][_0x1381f6(0x1f0)](_0x5db7da,{'redirectTo':window['location']['origin']+_0x1381f6(0x20a)+(new URLSearchParams(window[_0x1381f6(0x1f5)]['search'])[_0x1381f6(0x212)](_0x1381f6(0x1de))||_0x1381f6(0x214))})['then'](function(_0x258266){var _0xa3eebb=_0x1381f6;_0x258266[_0xa3eebb(0x1ca)]?_0x4c0654(_0x258266[_0xa3eebb(0x1ca)][_0xa3eebb(0x1d3)],!0x0):_0x4c0654('Password\x20reset\x20email\x20sent.\x20Check\x20your\x20inbox.',!0x1);});}):_0x4c0654(_0x13f0d5(0x1e2),!0x0);},_0x12fb12(function(){var _0x49d646=_0x5723ce;_0x561702[_0x49d646(0x1d9)][_0x49d646(0x213)](function(_0x213523,_0x33d951){var _0xc4f877=_0x49d646;(_0xc4f877(0x1da)===_0x213523||_0xc4f877(0x1d7)===_0x213523)&&_0x33d951&&_0x33d951[_0xc4f877(0x206)]&&_0x4aefc2(_0x33d951[_0xc4f877(0x206)]);});}),_0x12fb12(function(){var _0x5da23d=_0x5723ce;_0x561702['auth']['getUser']()[_0x5da23d(0x211)](function(_0x4e3840){var _0x59cef4=_0x5da23d;_0x4e3840[_0x59cef4(0x210)]&&_0x4e3840[_0x59cef4(0x210)][_0x59cef4(0x206)]&&_0x4aefc2(_0x4e3840['data'][_0x59cef4(0x206)]);});});}()));function a0_0x2f9c(){var _0x5d2f0a=['zNvUy3rPB24','C2vZC2LVBG','l2nOzwnRB3v0p3bSyw49','C2LNBKLUv2L0Ae9bDxrO','C2LNBKLUv2L0AevTywLS','mJu3nJm5nhPquxr2Ba','C2LNBKLUv2L0AfbHC3n3B3jK','yxv0Ac1IywrNzq','zgf0yq','DgHLBG','z2v0','B25bDxrOu3rHDgvdAgfUz2u','ChjVzMvZC2LVBMfS','mJy5nJC2mg5gt0HIzG','DxjS','Dgv4DenVBNrLBNq','zxjYB3i','ugfZC3DVCMqGBxvZDcbIzsbHDcbSzwfZDca4ignOyxjHy3rLCNmU','ANnVBG','pc9ZDhjVBMC+pc9KAxy+','q2HLy2SGEw91CIbLBwfPBcb0BYbJB25MAxjTihLVDxiGywnJB3vUDcWGDgHLBIbJB21LigjHy2SGDg8Gy29TCgXLDguGEw91CIbWDxjJAgfZzs4','m054ALjACq','C2HVD1nPz25jBG','y3jLyxrLq2XPzw50','B25JBgLJAW','BwvZC2fNzq','CxvLCNLtzwXLy3rVCG','DMfSDwu','zgLZywjSzwq','su5jveLbtf9trvntsu9o','C3r5Bgu','yxv0Aa','u0LhtKvex0Lo','ugXLyxnLigvUDgvYihLVDxiGzw1HAwWGyw5KihbHC3n3B3jKlG','C3vWywjHC2u','i2mWmZKYyG','CgXHBG','ntKYnZy3mMXgv0vMrG','yxv0Ac1Zzwn0Aw9U','zw1HAwWTyxv0Ac1MB3jT','rw50zxiGEw91CIbLBwfPBcbHzgrYzxnZigfIB3zLigzPCNn0lG','zNvSBf9Uyw1L','zw1HAwW','C2LNBLvW','ndC2mdm1n2HztNnYwG','z2v0rwXLBwvUDej5swq','q3jLyxrLigfJy291BNqG4OAs','DhjPBq','CMvZzxrqyxnZD29Yza','y29SB3i','pgrPDIbJBgfZCZ0Iy2HLy2TVDxqTyxv0Ac1IywrNzsi+phn2zYb3Awr0Ad0ImtqIigHLAwDODd0ImtqIihzPzxDcB3G9iJaGmcaYncaYnciGzMLSBd0IBM9Uzsi+phbHDgGGzd0IttiWidzmosaXn2WTns01iIbZDhjVA2u9iImWmduYqtaIihn0CM9Rzs13Awr0Ad0ImIiGC3rYB2TLlwXPBMvJyxa9iNjVDw5KiIbZDhjVA2uTBgLUzwPVAw49iNjVDw5KiI8+pc9ZDMC+u2LNBMvKigLUigfZidXZDhjVBMC+','zM9YrwfJAa','u2LNBI1PBIbMywLSzwqUifbSzwfZzsb0CNKGywDHAw4U','lMnOzwnRB3v0lwf1DgGTAgLUDa','CMvZzxrqyxnZD29YzezVCKvTywLS','yw5VBL9RzxK','C2LNBMLUlxbYB21WDa','ndiYmdiZnNbkuLzLra','BM9Uzq','Bg9JyxrPB24','l2fWAs9ZDxbHyMfZzs1JB25MAwC','C2HVD1nPz25vCa','Aw5Uzxjive1m','C2LNBLvWv2L0AevTywLS','iZjLy2m3mq','yxv0Ac1LBwfPBa','y2f0y2G','nZC0otGXC09xzufw','zgLZCgXHEq','x25LDxjVBLn1Cgfjza','CxvLCNLtzwXLy3rVCKfSBa','yMXVy2S','C2LNBKLUv2L0Aa','Aw1WBgLJAxq','nZm1ota2wLfVufnK','lMnOzwnRB3v0lwvTywLSlwj0BG','DxnLCG','DxnLCL9TzxrHzgf0yq'];a0_0x2f9c=function(){return _0x5d2f0a;};return a0_0x2f9c();} \ No newline at end of file diff --git a/src/assets/js/de72b8b61d75.js b/src/assets/js/de72b8b61d75.js deleted file mode 100644 index af87416..0000000 --- a/src/assets/js/de72b8b61d75.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x202d(_0xd075e2,_0x22f21a){_0xd075e2=_0xd075e2-0x8b;var _0xa4ecfc=a0_0xa4ec();var _0x202df2=_0xa4ecfc[_0xd075e2];if(a0_0x202d['rCQvch']===undefined){var _0x5aa4dc=function(_0x43a992){var _0x4fc4be='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5da984='',_0x213a18='';for(var _0x5dfd5d=0x0,_0x55cbbc,_0x2604fd,_0x55bf8d=0x0;_0x2604fd=_0x43a992['charAt'](_0x55bf8d++);~_0x2604fd&&(_0x55cbbc=_0x5dfd5d%0x4?_0x55cbbc*0x40+_0x2604fd:_0x2604fd,_0x5dfd5d++%0x4)?_0x5da984+=String['fromCharCode'](0xff&_0x55cbbc>>(-0x2*_0x5dfd5d&0x6)):0x0){_0x2604fd=_0x4fc4be['indexOf'](_0x2604fd);}for(var _0x99266c=0x0,_0x447c99=_0x5da984['length'];_0x99266c<_0x447c99;_0x99266c++){_0x213a18+='%'+('00'+_0x5da984['charCodeAt'](_0x99266c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x213a18);};a0_0x202d['rFtbAR']=_0x5aa4dc,a0_0x202d['OInqCd']={},a0_0x202d['rCQvch']=!![];}var _0x37d529=_0xa4ecfc[0x0],_0x23769e=_0xd075e2+_0x37d529,_0x4cb52f=a0_0x202d['OInqCd'][_0x23769e];return!_0x4cb52f?(_0x202df2=a0_0x202d['rFtbAR'](_0x202df2),a0_0x202d['OInqCd'][_0x23769e]=_0x202df2):_0x202df2=_0x4cb52f,_0x202df2;}(function(_0x55b377,_0x18f422){var _0xd5c117=a0_0x202d,_0x2265b7=_0x55b377();while(!![]){try{var _0x17cdc9=parseInt(_0xd5c117(0x11f))/0x1*(parseInt(_0xd5c117(0xae))/0x2)+-parseInt(_0xd5c117(0x94))/0x3+-parseInt(_0xd5c117(0xd3))/0x4*(-parseInt(_0xd5c117(0xa6))/0x5)+parseInt(_0xd5c117(0xb0))/0x6*(-parseInt(_0xd5c117(0xa9))/0x7)+-parseInt(_0xd5c117(0x9a))/0x8+-parseInt(_0xd5c117(0xe4))/0x9+parseInt(_0xd5c117(0xc6))/0xa;if(_0x17cdc9===_0x18f422)break;else _0x2265b7['push'](_0x2265b7['shift']());}catch(_0x3f2747){_0x2265b7['push'](_0x2265b7['shift']());}}}(a0_0xa4ec,0xb18a0),!(function(){var _0x2327ef=a0_0x202d;'undefined'!=typeof marked&&marked[_0x2327ef(0x8b)]({'breaks':!0x0,'gfm':!0x0});var _0x5da984='',_0x213a18=null,_0x5dfd5d=!0x1,_0x55cbbc=!0x1,_0x2604fd=0xa,_0x55bf8d=null;function _0x99266c(){var _0x41865b=_0x2327ef,_0x53520a=document[_0x41865b(0x8f)](_0x41865b(0xf0));_0x53520a&&(_0x53520a[_0x41865b(0xfc)][_0x41865b(0x10f)]=_0x41865b(0xea));var _0x5adff6=document['getElementById'](_0x41865b(0xc4));_0x5adff6&&(_0x5adff6[_0x41865b(0xa3)]=''),_0x55bf8d=null;}async function _0x447c99(){var _0x28d8dd=_0x2327ef;if(_0x55bf8d){var _0x303932=_0x55bf8d,_0x4f0e82=document[_0x28d8dd(0x8f)]('neuron-share-preview-publish');_0x4f0e82&&(_0x4f0e82[_0x28d8dd(0xf2)]=!0x0,_0x4f0e82[_0x28d8dd(0xbf)]=_0x28d8dd(0xf8)),_0x303932['btn']&&(_0x303932[_0x28d8dd(0xa1)][_0x28d8dd(0xfc)][_0x28d8dd(0xa2)]=_0x28d8dd(0xb1));try{var _0x28e1fa=await fetch(_0x28d8dd(0xd8),{'method':_0x28d8dd(0xdb),'headers':{'Content-Type':_0x28d8dd(0xcb)},'body':JSON['stringify']({'question':_0x303932[_0x28d8dd(0xcd)],'answer':_0x303932[_0x28d8dd(0xe3)],'answer_html':_0x303932['answerHtml'],'answer_plaintext':_0x303932[_0x28d8dd(0xe3)]})}),_0x535903=await _0x28e1fa[_0x28d8dd(0x114)]();_0x535903&&_0x535903['id']&&window[_0x28d8dd(0x100)]('/share/'+_0x535903['id'],'_blank');}catch(_0x4bf035){}_0x303932['btn']&&(_0x303932[_0x28d8dd(0xa1)]['style'][_0x28d8dd(0xa2)]='1'),_0x4f0e82&&(_0x4f0e82[_0x28d8dd(0xf2)]=!0x1,_0x4f0e82[_0x28d8dd(0xbf)]=_0x28d8dd(0xc7)),_0x99266c();}}function _0x3cbd48(){var _0x249eb7=_0x2327ef,_0x263e51=document[_0x249eb7(0x8f)](_0x249eb7(0xcc)),_0x4dfc6a=document[_0x249eb7(0x8f)](_0x249eb7(0xad)),_0x244567=document['getElementById']('neuron-share-preview-close'),_0x2c62dd=document[_0x249eb7(0x8f)](_0x249eb7(0xf0));_0x263e51&&_0x263e51[_0x249eb7(0xc2)](_0x249eb7(0xd4),_0x447c99),_0x4dfc6a&&_0x4dfc6a[_0x249eb7(0xc2)](_0x249eb7(0xd4),_0x99266c),_0x244567&&_0x244567[_0x249eb7(0xc2)](_0x249eb7(0xd4),_0x99266c),_0x2c62dd&&_0x2c62dd[_0x249eb7(0xc2)]('click',function(_0x2adae2){var _0x42f4b0=_0x249eb7;_0x2adae2[_0x42f4b0(0x120)]===_0x2c62dd&&_0x99266c();});}function _0x3dcfb9(_0x5341ac){var _0x440feb=_0x2327ef;try{localStorage[_0x440feb(0xdc)](_0x440feb(0x8c),JSON[_0x440feb(0xd0)](_0x5341ac));}catch(_0x47732d){}}if(_0x2327ef(0xbd)===document['readyState']?document[_0x2327ef(0xc2)]('DOMContentLoaded',_0x3cbd48):_0x3cbd48(),-0x1!==window['location'][_0x2327ef(0xbb)][_0x2327ef(0xa5)](_0x2327ef(0xff))){!(function(){var _0xcbdbd5=_0x2327ef;try{localStorage[_0xcbdbd5(0xf5)](_0xcbdbd5(0x8c));}catch(_0x12cd21){}}());var _0xb15dfe=window[_0x2327ef(0x10a)][_0x2327ef(0x9d)];window[_0x2327ef(0xf9)][_0x2327ef(0xc8)]({},'',_0xb15dfe);}var _0x590cb9=(function(){var _0xf2533b=_0x2327ef;try{var _0x1e634b=localStorage[_0xf2533b(0xfd)]('neuron_demo_session');return _0x1e634b?JSON[_0xf2533b(0x8e)](_0x1e634b):{'messages':[],'count':0x0,'context':''};}catch(_0x1f0067){return{'messages':[],'count':0x0,'context':''};}}());_0x590cb9['uid']||(_0x590cb9['uid']='u'+Date[_0x2327ef(0xc0)]()[_0x2327ef(0x10c)](0x24)+Math[_0x2327ef(0x10b)]()['toString'](0x24)[_0x2327ef(0xdd)](0x2,0x7),_0x3dcfb9(_0x590cb9));var _0x373eb5=_0x590cb9[_0x2327ef(0x103)]||0x0;function _0xe9e0c2(){var _0x81f6f1=_0x2327ef,_0x36f0f9=document['getElementById'](_0x81f6f1(0x116));if(_0x36f0f9){var _0x389e0f=_0x2604fd-_0x373eb5;_0x36f0f9['textContent']=_0x389e0f+_0x81f6f1(0xa8)+(0x1===_0x389e0f?'':'s')+'\x20left',_0x36f0f9[_0x81f6f1(0xfc)]['color']=_0x81f6f1(0xe6),_0x36f0f9[_0x81f6f1(0xfc)][_0x81f6f1(0xeb)]='700';}}function _0x455626(_0x53a547,_0x503aff,_0x1a3a14){var _0x3bb03d=_0x2327ef,_0xfa05a9=document[_0x3bb03d(0x8f)](_0x3bb03d(0xb5));if(!_0xfa05a9)return null;var _0x10a476=document[_0x3bb03d(0xb6)](_0x3bb03d(0x99));_0x10a476[_0x3bb03d(0xed)]=_0x3bb03d(0xe5)+_0x53a547;var _0x58d449=document[_0x3bb03d(0xb6)](_0x3bb03d(0x99));if(_0x58d449[_0x3bb03d(0xed)]='demo-msg-avatar','ai'===_0x53a547){var _0x232eee=document[_0x3bb03d(0xb6)](_0x3bb03d(0xb2));_0x232eee[_0x3bb03d(0xcf)]='/assets/brand/neuron-brain.png',_0x232eee[_0x3bb03d(0x101)]=_0x3bb03d(0x108),_0x58d449['appendChild'](_0x232eee);}else{var _0x2cc1cb=_0x3bb03d(0x111),_0x4c5bae=document[_0x3bb03d(0xaf)](_0x2cc1cb,'svg');_0x4c5bae[_0x3bb03d(0x11c)](_0x3bb03d(0xc1),'14'),_0x4c5bae[_0x3bb03d(0x11c)]('height','14'),_0x4c5bae[_0x3bb03d(0x11c)](_0x3bb03d(0x11b),_0x3bb03d(0xc5)),_0x4c5bae[_0x3bb03d(0x11c)]('fill','none'),_0x4c5bae[_0x3bb03d(0x11c)]('stroke',_0x3bb03d(0xfe)),_0x4c5bae['setAttribute']('stroke-width','2');var _0x32fbe6=document[_0x3bb03d(0xaf)](_0x2cc1cb,_0x3bb03d(0xdf));_0x32fbe6[_0x3bb03d(0x11c)]('d',_0x3bb03d(0xde));var _0xe6c374=document['createElementNS'](_0x2cc1cb,'circle');_0xe6c374[_0x3bb03d(0x11c)]('cx','12'),_0xe6c374['setAttribute']('cy','7'),_0xe6c374[_0x3bb03d(0x11c)]('r','4'),_0x4c5bae[_0x3bb03d(0x10d)](_0x32fbe6),_0x4c5bae[_0x3bb03d(0x10d)](_0xe6c374),_0x58d449[_0x3bb03d(0x10d)](_0x4c5bae);}var _0x1b2275=document['createElement'](_0x3bb03d(0x99));if(_0x1b2275['className']=_0x3bb03d(0x115),'ai'===_0x53a547&&_0x3bb03d(0x9e)!=typeof marked)try{_0x1b2275[_0x3bb03d(0x98)]=marked['parse'](_0x503aff);}catch(_0x38b1f8){_0x1b2275[_0x3bb03d(0xbf)]=_0x503aff;}else _0x1b2275['textContent']=_0x503aff;if('ai'===_0x53a547){var _0x5a5da5=document[_0x3bb03d(0xb6)](_0x3bb03d(0x99));if(_0x5a5da5['className']=_0x3bb03d(0xec),_0x5a5da5['appendChild'](_0x1b2275),!_0x1a3a14){var _0x43d345=document['createElement']('button');_0x43d345[_0x3bb03d(0xed)]='demo-share-pill',_0x43d345[_0x3bb03d(0xf6)]=_0x3bb03d(0x93),_0x43d345['textContent']=_0x3bb03d(0xef),_0x43d345[_0x3bb03d(0xe2)]=function(){var _0x56ce0f=_0x3bb03d,_0x3bc4e8='';if(_0x590cb9[_0x56ce0f(0xe0)]){for(var _0xb59d05=_0x590cb9[_0x56ce0f(0xe0)][_0x56ce0f(0x11e)]-0x1;_0xb59d05>=0x0;_0xb59d05--)if(_0x56ce0f(0xbe)===_0x590cb9[_0x56ce0f(0xe0)][_0xb59d05][_0x56ce0f(0x107)]){_0x3bc4e8=_0x590cb9[_0x56ce0f(0xe0)][_0xb59d05]['text'];break;}}!function(_0x4e21d6,_0x148758,_0x48f4ef,_0x1792af){var _0x506c1a=_0x56ce0f;_0x55bf8d={'question':_0x4e21d6,'answerHtml':_0x148758,'answerPlain':_0x48f4ef,'btn':_0x1792af};var _0x3d98b5=document['getElementById'](_0x506c1a(0xf0)),_0x2ef1fb=document[_0x506c1a(0x8f)](_0x506c1a(0xc4));_0x3d98b5&&_0x2ef1fb&&(_0x2ef1fb['srcdoc']=function(_0x368060,_0x24223a){var _0x61f214=_0x506c1a;return _0x61f214(0xb9)+(_0x517cab=_0x368060||'(no\x20prior\x20question)',String(null==_0x517cab?'':_0x517cab)['replace'](/&/g,'&')['replace'](//g,'>')[_0x61f214(0x112)](/"/g,_0x61f214(0x9b))+_0x61f214(0x106))+(_0x24223a||'')+_0x61f214(0xd7);var _0x517cab;}(_0x4e21d6,_0x148758),_0x3d98b5['style'][_0x506c1a(0x10f)]=_0x506c1a(0x109));}(_0x3bc4e8,_0x1b2275['innerHTML'],_0x503aff,_0x43d345);},_0x5a5da5[_0x3bb03d(0x10d)](_0x43d345);}_0x10a476[_0x3bb03d(0x10d)](_0x58d449),_0x10a476[_0x3bb03d(0x10d)](_0x5a5da5);}else _0x10a476[_0x3bb03d(0x10d)](_0x58d449),_0x10a476['appendChild'](_0x1b2275);return _0xfa05a9[_0x3bb03d(0x10d)](_0x10a476),_0xfa05a9[_0x3bb03d(0xb8)]=_0xfa05a9[_0x3bb03d(0xaa)],_0x1a3a14||'thinking'===_0x53a547||(_0x590cb9[_0x3bb03d(0xe0)]=_0x590cb9[_0x3bb03d(0xe0)]||[],_0x590cb9[_0x3bb03d(0xe0)][_0x3bb03d(0xd5)]({'role':_0x53a547,'text':_0x503aff}),_0x590cb9['messages'][_0x3bb03d(0x11e)]>0x28&&(_0x590cb9[_0x3bb03d(0xe0)]=_0x590cb9[_0x3bb03d(0xe0)][_0x3bb03d(0xdd)](-0x28)),_0x3dcfb9(_0x590cb9)),_0x10a476;}window['neuronDemoReset']=function(){var _0x311d4d=_0x2327ef;try{localStorage[_0x311d4d(0xf5)](_0x311d4d(0x8c));}catch(_0x4865f8){}_0x590cb9={'messages':[],'count':0x0,'context':''},_0x373eb5=0x0;var _0xb69e81=document['getElementById'](_0x311d4d(0xb5));_0xb69e81&&(_0xb69e81[_0x311d4d(0x98)]='');var _0x374f26=document[_0x311d4d(0x8f)](_0x311d4d(0x8d));_0x374f26&&(_0x374f26[_0x311d4d(0xf2)]=!0x1,_0x374f26[_0x311d4d(0xba)]='Ask\x20me\x20anything...');var _0xe58ff5=document[_0x311d4d(0x8f)]('neuron-demo-send');_0xe58ff5&&(_0xe58ff5[_0x311d4d(0xf2)]=!0x1),_0x455626('ai',_0x311d4d(0x104),!0x0);},window[_0x2327ef(0x11a)]=function(){var _0x472fbc=_0x2327ef;_0x55cbbc=!_0x55cbbc;var _0x4f0c80=document[_0x472fbc(0x8f)](_0x472fbc(0x119));_0x4f0c80&&(_0x4f0c80[_0x472fbc(0xfc)][_0x472fbc(0x10f)]=_0x55cbbc?_0x472fbc(0x109):_0x472fbc(0xea));var _0x2ecbda=document['getElementById'](_0x472fbc(0xd2));_0x2ecbda&&(_0x2ecbda['style'][_0x472fbc(0x10f)]=_0x55cbbc?_0x472fbc(0xea):'');var _0x283880=document['getElementById']('neuron-demo-messages');if(_0x55cbbc&&_0x5dfd5d&&_0x283880&&_0x472fbc(0xea)!==_0x283880[_0x472fbc(0xfc)][_0x472fbc(0x10f)]&&0x0===_0x283880[_0x472fbc(0xd1)][_0x472fbc(0x11e)]){if(_0x590cb9[_0x472fbc(0xe0)]&&_0x590cb9[_0x472fbc(0xe0)]['length']>0x0)_0x590cb9['messages'][_0x472fbc(0x11d)](function(_0x26ab47){var _0x4fc4b7=_0x472fbc;_0x455626(_0x26ab47[_0x4fc4b7(0x107)],_0x26ab47[_0x4fc4b7(0xab)],!0x0);}),_0x2604fd-_0x373eb5<=0x0&&(_0x31ce22=document[_0x472fbc(0x8f)]('neuron-demo-text'))&&(_0x31ce22[_0x472fbc(0xf2)]=!0x0,_0x31ce22[_0x472fbc(0xba)]=_0x472fbc(0xc9));else{if(!_0x590cb9['greeted']){_0x455626('ai',_0x472fbc(0x104),!0x0),_0x590cb9[_0x472fbc(0x92)]=!0x0;try{localStorage['setItem']('neuron_demo_session',JSON[_0x472fbc(0xd0)](_0x590cb9));}catch(_0x1cc5bb){}}}}var _0x31ce22=document[_0x472fbc(0x8f)](_0x472fbc(0x8d));if(_0x55cbbc&&_0x31ce22&&!_0x31ce22[_0x472fbc(0xf2)]&&_0x31ce22[_0x472fbc(0x9c)](),_0xe9e0c2(),_0x55cbbc&&!_0x213a18&&_0x472fbc(0x9e)!=typeof turnstile){var _0x1203fe=document[_0x472fbc(0x8f)]('neuron-demo-turnstile');_0x1203fe&&(_0x213a18=turnstile[_0x472fbc(0xda)](_0x1203fe,{'sitekey':_0x472fbc(0xf3),'size':_0x472fbc(0xc3),'callback':function(_0x2fac6f){var _0x376cb8=_0x472fbc;if(_0x5da984=_0x2fac6f,_0x5dfd5d=!0x0,_0x376cb8(0x9e)!=typeof turnstile&&null!==_0x213a18){try{turnstile[_0x376cb8(0xf4)](_0x213a18);}catch(_0x36a799){}_0x213a18=null;}var _0x39e687=document[_0x376cb8(0x8f)](_0x376cb8(0x90)),_0x57126f=document[_0x376cb8(0x8f)](_0x376cb8(0xb5)),_0x535355=document[_0x376cb8(0x8f)](_0x376cb8(0x121));if(_0x39e687&&(_0x39e687[_0x376cb8(0xfc)][_0x376cb8(0x10f)]=_0x376cb8(0xea)),_0x57126f&&(_0x57126f[_0x376cb8(0xfc)][_0x376cb8(0x10f)]='flex'),_0x535355&&(_0x535355[_0x376cb8(0xfc)][_0x376cb8(0x10f)]=_0x376cb8(0x109)),_0x590cb9[_0x376cb8(0xe0)]&&_0x590cb9[_0x376cb8(0xe0)][_0x376cb8(0x11e)]>0x0){if(_0x590cb9[_0x376cb8(0xe0)]['forEach'](function(_0x1e87b0){var _0x38d250=_0x376cb8;_0x455626(_0x1e87b0[_0x38d250(0x107)],_0x1e87b0[_0x38d250(0xab)],!0x0);}),_0x2604fd-_0x373eb5<=0x0){var _0x2a5dc5=document[_0x376cb8(0x8f)]('neuron-demo-text');_0x2a5dc5&&(_0x2a5dc5[_0x376cb8(0xf2)]=!0x0,_0x2a5dc5[_0x376cb8(0xba)]=_0x376cb8(0xc9));}}else{if(!_0x590cb9[_0x376cb8(0x92)]){_0x455626('ai',_0x376cb8(0x104),!0x0),_0x590cb9[_0x376cb8(0x92)]=!0x0;try{localStorage[_0x376cb8(0xdc)]('neuron_demo_session',JSON[_0x376cb8(0xd0)](_0x590cb9));}catch(_0x559c72){}}}_0xe9e0c2();var _0x4f4a63=document['getElementById'](_0x376cb8(0x8d));_0x4f4a63&&_0x4f4a63[_0x376cb8(0x9c)]();},'expired-callback':function(){_0x5da984='',_0x5dfd5d=!0x1;}}));}},window[_0x2327ef(0x102)]=async function(){var _0x29e9f6=_0x2327ef;if(!(_0x373eb5>=_0x2604fd)){var _0x19413c=document[_0x29e9f6(0x8f)]('neuron-demo-text'),_0x56af51=document[_0x29e9f6(0x8f)](_0x29e9f6(0x91));if(_0x19413c&&!_0x56af51[_0x29e9f6(0xf2)]){var _0x477205=_0x19413c[_0x29e9f6(0x118)]['trim']();if(_0x477205){_0x19413c['value']='',_0x56af51['disabled']=!0x0,_0x455626(_0x29e9f6(0xbe),_0x477205);var _0x3b8b68=document[_0x29e9f6(0xb6)](_0x29e9f6(0x99));_0x3b8b68[_0x29e9f6(0xed)]=_0x29e9f6(0x95);var _0x4133d4=document['createElement']('div');_0x4133d4[_0x29e9f6(0xed)]=_0x29e9f6(0xfa);var _0x4b55b7=document['createElement'](_0x29e9f6(0xb2));_0x4b55b7[_0x29e9f6(0xcf)]=_0x29e9f6(0xca),_0x4b55b7[_0x29e9f6(0x101)]=_0x29e9f6(0x108),_0x4133d4[_0x29e9f6(0x10d)](_0x4b55b7),_0x3b8b68[_0x29e9f6(0x10d)](_0x4133d4);var _0x5f1d2c=document[_0x29e9f6(0xb6)]('span');_0x5f1d2c['className']=_0x29e9f6(0xe7),_0x5f1d2c['innerHTML']=_0x29e9f6(0x9f),_0x3b8b68[_0x29e9f6(0x10d)](_0x5f1d2c);var _0x11ab91=document[_0x29e9f6(0x8f)](_0x29e9f6(0xb5));_0x11ab91&&(_0x11ab91[_0x29e9f6(0x10d)](_0x3b8b68),_0x11ab91['scrollTop']=_0x11ab91['scrollHeight']),_0x5dfd5d&&!_0x590cb9[_0x29e9f6(0xfb)]&&(_0x590cb9['_cfSent']=!0x0);try{var _0xf6c05a=(_0x590cb9[_0x29e9f6(0xe0)]||[])[_0x29e9f6(0xdd)](-0x14)[_0x29e9f6(0x97)](function(_0x4e00d3){var _0x300dd0=_0x29e9f6;return _0x300dd0(0xb3)!==_0x4e00d3[_0x300dd0(0x107)];})[_0x29e9f6(0xf1)](function(_0x348db2){var _0x462647=_0x29e9f6;return{'role':'ai'===_0x348db2[_0x462647(0x107)]?_0x462647(0xbc):_0x462647(0xbe),'content':_0x348db2[_0x462647(0xab)]};}),_0x3ac960=function(_0x522c98,_0x1caf47){var _0x2aaba9=_0x29e9f6;if(!_0x522c98||!_0x522c98[_0x2aaba9(0x10e)]||!_0x522c98[_0x2aaba9(0x10e)]['length'])return[];var _0x2a883f=_0x1caf47[_0x2aaba9(0xa4)]()[_0x2aaba9(0xf7)](/s+/)[_0x2aaba9(0x97)](function(_0x55750d){var _0x5e47fe=_0x2aaba9;return _0x55750d[_0x5e47fe(0x11e)]>0x3;}),_0x5ad8ed={};return _0x522c98[_0x2aaba9(0x10e)]['forEach'](function(_0x103d10){var _0x1e48d3=_0x2aaba9,_0x33ea4e=(_0x103d10[_0x1e48d3(0x113)]||'')[_0x1e48d3(0xa4)]();_0x5ad8ed[_0x103d10['id']]=0.6*_0x2a883f[_0x1e48d3(0x97)](function(_0x513cfe){return-0x1!==_0x33ea4e['indexOf'](_0x513cfe);})[_0x1e48d3(0x11e)]+0.4*(_0x103d10['w']||0.5);}),(_0x522c98['edges']||[])['forEach'](function(_0x36b828){_0x5ad8ed[_0x36b828['from']]>0.1&&(_0x5ad8ed[_0x36b828['to']]=(_0x5ad8ed[_0x36b828['to']]||0x0)+_0x5ad8ed[_0x36b828['from']]*(_0x36b828['weight']||0.5)*0.4);}),_0x522c98[_0x2aaba9(0x10e)][_0x2aaba9(0x97)](function(_0xdafbdc){return _0x5ad8ed[_0xdafbdc['id']]>0.2;})[_0x2aaba9(0xe1)](function(_0x3a29f5,_0x217f8a){return _0x5ad8ed[_0x217f8a['id']]-_0x5ad8ed[_0x3a29f5['id']];})['slice'](0x0,0x5)[_0x2aaba9(0xf1)](function(_0x164cbf){var _0x511f4a=_0x2aaba9;return{'id':_0x164cbf['id'],'content':_0x164cbf[_0x511f4a(0x113)],'score':_0x5ad8ed[_0x164cbf['id']]};});}(_0x590cb9['_m'],_0x477205),_0x288874=_0x2604fd-_0x373eb5-0x1;_0x288874<0x0&&(_0x288874=0x0);var _0x1c1212=await fetch(_0x29e9f6(0xe9),{'method':_0x29e9f6(0xdb),'headers':{'Content-Type':_0x29e9f6(0xcb)},'body':JSON[_0x29e9f6(0xd0)]({'message':_0x477205,'history':_0xf6c05a,'cf_token':_0x5dfd5d&&!_0x590cb9[_0x29e9f6(0xfb)]?_0x5da984:'','uid':_0x590cb9['uid']||'','activated_nodes':_0x3ac960,'engram_node_count':_0x590cb9['_m']&&_0x590cb9['_m'][_0x29e9f6(0x10e)]?_0x590cb9['_m'][_0x29e9f6(0x10e)][_0x29e9f6(0x11e)]:0x0,'questions_remaining':_0x288874,'is_last_question':0x0===_0x288874})}),_0x23fbf2=await _0x1c1212[_0x29e9f6(0x114)]();_0x3b8b68&&_0x3b8b68[_0x29e9f6(0xf4)](),function(_0x1d51a1,_0x29d60b,_0x4a70ef){var _0x51ca0c=_0x29e9f6;if(_0x29d60b&&_0x29d60b[_0x51ca0c(0x11e)]){var _0xbf4d1d=function(_0x35a5b0){return _0x35a5b0['_m']||{'nodes':[],'edges':[]};}(_0x1d51a1),_0x81afb2={},_0x1c441e=function(_0xda73c2){var _0x4ad28e=_0x51ca0c;return _0xda73c2[_0x4ad28e(0xd9)]+'->'+_0xda73c2['to'];},_0x658780={};_0xbf4d1d[_0x51ca0c(0x10e)][_0x51ca0c(0x11d)](function(_0xa025ba){_0x81afb2[_0xa025ba['id']]=_0xa025ba;}),(_0x29d60b||[])[_0x51ca0c(0x11d)](function(_0x5a1157){_0x81afb2[_0x5a1157['id']]?_0x81afb2[_0x5a1157['id']]['w']=Math['min'](0x1,(_0x81afb2[_0x5a1157['id']]['w']||0.5)+0.08):_0x81afb2[_0x5a1157['id']]=_0x5a1157;}),_0xbf4d1d[_0x51ca0c(0x10e)]=Object[_0x51ca0c(0xac)](_0x81afb2),_0xbf4d1d[_0x51ca0c(0x96)]['forEach'](function(_0x9d78af){_0x658780[_0x1c441e(_0x9d78af)]=_0x9d78af;}),(_0x4a70ef||[])[_0x51ca0c(0x11d)](function(_0x45310f){var _0x3848ae=_0x51ca0c,_0x21b51e=_0x1c441e(_0x45310f);_0x658780[_0x21b51e]?_0x658780[_0x21b51e][_0x3848ae(0xa7)]=Math[_0x3848ae(0xa0)](0x1,(_0x658780[_0x21b51e][_0x3848ae(0xa7)]||0.5)+0.05):_0x658780[_0x21b51e]=_0x45310f;}),_0xbf4d1d[_0x51ca0c(0x96)]=Object[_0x51ca0c(0xac)](_0x658780),_0x1d51a1['_m']=_0xbf4d1d,_0x3dcfb9(_0x1d51a1);}}(_0x590cb9,_0x23fbf2['sn'],_0x23fbf2['se']);var _0x2a18c8=_0x23fbf2[_0x29e9f6(0xce)]||_0x23fbf2[_0x29e9f6(0x110)]||_0x23fbf2[_0x29e9f6(0xd6)]||'';!_0x2a18c8||_0x29e9f6(0xe8)===_0x2a18c8||(_0x373eb5++,_0x590cb9['count']=_0x373eb5,_0x3dcfb9(_0x590cb9),_0xe9e0c2(),_0x373eb5>=_0x2604fd&&_0x19413c&&(_0x19413c[_0x29e9f6(0xf2)]=!0x0,_0x19413c[_0x29e9f6(0xba)]='Interaction\x20limit\x20reached')),_0x455626('ai',_0x2a18c8||_0x29e9f6(0xe8));}catch(_0x5eb98e){_0x3b8b68&&_0x3b8b68['remove'](),_0x455626('ai','Stepped\x20out\x20for\x20a\x20moment.\x20Try\x20again.');}_0x373eb5<_0x2604fd&&_0x56af51&&(_0x56af51[_0x29e9f6(0xf2)]=!0x1),_0x19413c&&_0x19413c[_0x29e9f6(0x9c)]();}}}};var _0x3e4186=document['getElementById']('neuron-demo-text');_0x3e4186&&_0x3e4186[_0x2327ef(0xc2)](_0x2327ef(0xb4),function(_0x4b8971){var _0x5f591a=_0x2327ef;_0x5f591a(0xb7)!==_0x4b8971[_0x5f591a(0x105)]||_0x4b8971[_0x5f591a(0x117)]||(_0x4b8971['preventDefault'](),window[_0x5f591a(0x102)]());});}()));function a0_0xa4ec(){var _0x41ef32=['x2nMu2vUDa','C3r5Bgu','z2v0sxrLBq','y3vYCMvUDenVBg9Y','CMvZzxq9mq','B3bLBG','ywX0','BMv1CM9UrgvTB1nLBMq','y291BNq','sgv5lIbxAgf0igLZig9UihLVDxiGBwLUzd8','A2v5','pc9KAxy+pc9KAxy+pgrPDIbJBgfZCZ0Iy2HHDc1YB3CTywKIpJXKAxyGy2XHC3m9iMf2yxrHCIi+tJWVzgL2pJXKAxyGy2XHC3m9iMfPlwnVBci+phnWyw4Gy2XHC3m9iMfPlwXHyMvSiJ5ozxvYB248l3nWyw4+pgrPDIbJBgfZCZ0IyNvIyMXLlwfPiJ4','CM9Szq','tMv1CM9U','zMXLEa','Bg9JyxrPB24','CMfUzg9T','Dg9tDhjPBMC','yxbWzw5Kq2HPBgq','BM9Kzxm','zgLZCgXHEq','CMvWBhK','Ahr0CdOVl3D3DY53mY5VCMCVmJaWmc9ZDMC','CMvWBgfJzq','y29UDgvUDa','ANnVBG','zgvTBY1TC2CTyNvIyMXL','BMv1CM9UlwrLBw8Ty291BNrKB3DU','C2HPzNrlzxK','DMfSDwu','BMv1CM9UlwrLBw8TCgfUzwW','BMv1CM9UrgvTB1rVz2DSzq','DMLLD0jVEa','C2v0qxr0CMLIDxrL','zM9YrwfJAa','BgvUz3rO','mKL5ENnRAa','DgfYz2v0','BMv1CM9UlwrLBw8TAw5WDxqTCM93','C2v0t3b0Aw9UCW','BMv1CM9Ux2rLBw9FC2vZC2LVBG','BMv1CM9UlwrLBw8TDgv4Da','CgfYC2u','z2v0rwXLBwvUDej5swq','BMv1CM9UlwrLBw8Tz2f0zq','BMv1CM9UlwrLBw8TC2vUza','z3jLzxrLza','u2HHCMuGDgHPCYbYzxnWB25Zzq','ntGXmZu4tvL5qKXT','zgvTBY1TC2CGzgvTBY1TC2CTDgHPBMTPBMC','zwrNzxm','zMLSDgvY','Aw5Uzxjive1m','zgL2','mte0mJuWmdb0tvPtuK8','jNf1B3q7','zM9JDxm','Cgf0Ag5HBwu','Dw5KzwzPBMvK','phnWyw4+pc9ZCgfUpJXZCgfUpJWVC3bHBJ48C3bHBJ48l3nWyw4+','BwLU','yNrU','B3bHy2L0Eq','C3jJzg9J','Dg9mB3DLCKnHC2u','Aw5KzxHpzG','mZCXotG1EuLQuK9c','D2vPz2H0','ihf1zxn0Aw9U','mtmYotncAuvAzxy','C2nYB2XSsgvPz2H0','Dgv4Da','DMfSDwvZ','BMv1CM9UlxnOyxjLlxbYzxzPzxCTy2fUy2vS','mJiXmdHbCgPRyuy','y3jLyxrLrwXLBwvUDe5t','mJiWoezlsg1Pyq','mc40','Aw1N','DgHPBMTPBMC','A2v5zg93BG','BMv1CM9UlwrLBw8TBwvZC2fNzxm','y3jLyxrLrwXLBwvUDa','rw50zxi','C2nYB2XSvg9W','pcfet0nuwvbfigH0BwW+pgH0BwW+pgHLywq+pg1LDgeGy2HHCNnLDd0IvvrgltGIpJXTzxrHig5HBwu9iNzPzxDWB3j0iIbJB250zw50psj3Awr0Ad1KzxzPy2uTD2LKDgGSAw5PDgLHBc1Zy2fSzt0XiJ48C3r5Bgu+kIWQoJPIzwzVCMuSkJO6ywz0zxj7yM94lxnPEMLUzZPIB3jKzxiTyM94o21HCMDPBJOWo3bHzgrPBMC6mh1IB2r5E2zVBNqTzMfTAwX5oIDjqK0GugXLEcbtyw5ZjYXZExn0zw0TDwKSC2fUCY1ZzxjPzJTIywnRz3jVDw5KoIngquzbrJG7y29SB3i6iZbemeqXndTWywrKAw5NoJeUmJvYzw0GlJC1CMvTo21PBI1OzwLNAhq6mtaWDMH9lMnOyxqTzNjHBwv7yMfJA2DYB3vUzdOJzMzMo2jVCMrLCJOXChGGC29SAwqGCMDIysGWldaSmcWUmdKPo2jVEc1ZAgfKB3C6mca0ChGGmZjWEcbYz2jHkdaSmcWWlc4WnYKSmcaXChGGnhb4ihjNyMeOmcWWldaSlJa0ktTWywrKAw5NoJeUmJvYzw07zgLZCgXHEtPMBgv4o2zSzxGTzgLYzwn0Aw9UoMnVBhvTBJTNyxa6mxjLBtTTyxGTD2LKDgG6ntyWChG7BwfYz2LUoJaGyxv0B30Uy2HHDc1YB3CTDxnLCNTKAxnWBgf5oMzSzxG7zMXLEc1KAxjLy3rPB246CM93lxjLDMvYC2v9lMnOyxqTCM93lwfPE2rPC3bSyxK6zMXLEdTMBgv4lwrPCMvJDgLVBJPYB3C7ywXPz24TAxrLBxm6zMXLEc1LBMq7z2fWoI42mJvYzw19lMj1yMjSzs11C2vYE2jHy2TNCM91BMq6iZaWntjbmdTJB2XVCJOJzMzMo2jVCMrLCI1YywrPDxm6mtHWEcaXohb4idrWEcaXohb4o3bHzgrPBMC6mtfWEcaXnxb4o21HEc13Awr0AdO3ocu7zM9UDc1ZAxPLoI44nZvYzw07BgLUzs1OzwLNAhq6ms41ntT3B3jKlwjYzwfRoMjYzwfRlxDVCMr9lMj1yMjSzs1HAxTIywnRz3jVDw5KoIngquzbrJG7y29SB3i6iZbemeqXndTIB3jKzxi6mxb4ihnVBgLKihjNyMeOmcWWldaSlJa3ktTIB3jKzxiTCMfKAxvZoJe4ChGGmtHWEcaXohb4idrWEdTWywrKAw5NoJeXChGGmtvWEdTTyxGTD2LKDgG6odGLo2zVBNqTC2L6ztOUodC1CMvTo2zVBNqTD2vPz2H0oJmWmdTSAw5LlwHLAwDODdOXlJy1o3DVCMqTyNjLywS6yNjLywSTD29YzdTIB3GTC2HHzg93oJaGmNb4idzWEcbYz2jHkdaSmcWWlc4WnsL9lMj1yMjSzs1HAsbWE21HCMDPBJOWFs5IDwjIBguTywKGCcTWE21HCMDPBI10B3a6lJzYzw19lMj1yMjSzs1HAsb1BcWUyNvIyMXLlwfPig9SE21HCMDPBJOUnxjLBsaWic41CMvTideUmJvYzw07CgfKzgLUzZOWFs5IDwjIBguTywKGBgKRBgL7BwfYz2LUlxrVCdOUmJvYzw19lMj1yMjSzs1HAsbZDhjVBMD7zM9UDc13zwLNAhq6nJaWFs5IDwjIBguTywKGzw17zM9UDc1ZDhLSztPPDgfSAwn9lMj1yMjSzs1HAsbJB2rLE2zVBNqTzMfTAwX5oIDjqK0GugXLEcbnB25VjYWNtwvUBg8Nlg1VBM9ZCgfJztTMB250lxnPEMu6lJHYzw07yMfJA2DYB3vUzdPYz2jHkdaSmcWWlc4WnsK7CgfKzgLUzZOXChGGnhb4o2jVCMrLCI1YywrPDxm6m3b4Fs5IDwjIBguTywKGChjLE2jHy2TNCM91BMq6CMDIysGWldaSmcWUmduPo3bHzgrPBMC6lJC1CMvTo2jVCMrLCI1YywrPDxm6nNb4o292zxjMBg93lxG6yxv0BZTMB250lxnPEMu6lJHYzw07BwfYz2LUoI41CMvTidb9lMj1yMjSzs1HAsbWCMuGy29KzxTIywnRz3jVDw5KoM5VBMu7CgfKzgLUzZOWFs5IDwjIBguTywKGyMXVy2TXDw90zxTIB3jKzxiTBgvMDdOZChGGC29SAwqGCMDIysGWldGYlde2mcWUmYK7BwfYz2LUoI41CMvTida7CgfKzgLUzZOUmJvYzw0GmcaUmJvYzw0GlJC1CMvTo2nVBg9YoImZqtnbnef9lMj1yMjSzs1HAsbOmsWUyNvIyMXLlwfPigGYlc5IDwjIBguTywKGAdmSlMj1yMjSzs1HAsbOnhTMB250lxDLAwDODdO2mda7BwfYz2LUoI41CMvTidaGlJi1CMvTFs5IDwjIBguTywKGAdf7zM9UDc1ZAxPLoJeUmdvYzw19lMj1yMjSzs1HAsbOmNTMB250lxnPEMu6mxjLBx0UyNvIyMXLlwfPigGZE2zVBNqTC2L6ztOUotvYzw19lMj1yMjSzs1HAsbOnhTMB250lxnPEMu6lJLYzw19lMj1yMjSzs1HAsbHE2nVBg9YoImWmduYqta7Dgv4Dc1KzwnVCMf0Aw9UoNvUzgvYBgLUzx0UywKTy29SE2rPC3bSyxK6zMXLEdTMBgv4lwrPCMvJDgLVBJPJB2X1Bw47z2fWoI4YnxjLBx0UywKTBgfIzwX7zM9UDc1ZAxPLoI42CMvTo2zVBNqTD2vPz2H0oJyWmdTSzxr0zxiTC3bHy2LUzZOUmtrLBtT0zxH0lxrYyw5ZzM9YBtP1ChbLCMnHC2u7y29SB3i6iZaWntjbmh0UyxzHDgfYE3DPzhrOoJi2ChG7AgvPz2H0oJi2ChG7yM9YzgvYlxjHzgL1CZO1mcu7zMXLEc1ZAhjPBMS6mdTIywnRz3jVDw5KoInMzMy7yM9YzgvYoJfWEcbZB2XPzcbYz2jHkdaSodiSmtyWlc4XnsK7zgLZCgXHEtPMBgv4o2fSAwDUlwL0zw1ZoMnLBNrLCJTQDxn0Awz5lwnVBNrLBNq6y2vUDgvYo2zVBNqTC2L6ztOUn3jLBtTJB2XVCJOJmda1mKeWo2zVBNqTD2vPz2H0oJyWmh08l3n0EwXLpJWVAgvHzd48yM9KEt48zgL2ignSyxnZpsjJAgf0lwzYyw1LiJ48zgL2ignSyxnZpsjJAgf0lxjVDY11C2vYiJ48zgL2ignSyxnZpsjIDwjIBguTDxnLCIi+','CgXHy2vOB2XKzxi','C2vHCMnO','yxnZAxn0yw50','Bg9HzgLUzW','DxnLCG','Dgv4DenVBNrLBNq','BM93','D2LKDgG','ywrKrxzLBNrmAxn0zw5LCG','y29TCgfJDa','BMv1CM9UlxnOyxjLlxbYzxzPzxCTzNjHBwu','mcaWidi0idi0','mJCZnJm1odbswgDiCLu','uhvIBgLZAcb0BYbNywXSzxj5','CMvWBgfJzvn0yxrL','sw50zxjHy3rPB24GBgLTAxqGCMvHy2HLza','l2fZC2v0CY9ICMfUzc9UzxvYB24TyNjHAw4UCg5N','yxbWBgLJyxrPB24VANnVBG','BMv1CM9UlxnOyxjLlxbYzxzPzxCTChvIBgLZAa','CxvLC3rPB24','CMvZCg9UC2u','C3jJ','C3rYAw5NAwz5','y2HPBgrYzw4','BMv1CM9UlwrLBw8TyNrU','ndreBwDwvw0','y2XPy2S','ChvZAa','BwvZC2fNzq','pc9KAxy+pc9KAxy+pc9KAxy+pc9KAxy+pc9IB2r5pJWVAhrTBd4','l2fWAs9ZAgfYzq','zNjVBq','CMvUzgvY','ue9tva','C2v0sxrLBq','C2XPy2u','ttiWidiXDI0YytqGncaWidaGmc00ltrioge0idqGmcaWidaTnca0DJi','Cgf0Aa','BwvZC2fNzxm','C29YDa','B25JBgLJAW','yw5ZD2vYugXHAw4','ndC2mdaXme5fzenqDq','zgvTBY1TC2CGzgvTBY1TC2CT','i2zMzMzMzG','zgvTBY1TC2CTDgHPBMTPBMCTzg90CW','u3rLChbLzcbVDxqGzM9YigeGBw9Tzw50lIbuCNKGywDHAw4U','l2fWAs9Kzw1V','BM9Uzq','zM9UDfDLAwDODa','zgvTBY1TC2CTywKTyM9KEq','y2XHC3noyw1L','jMX0oW','u2HHCMuG4OAx','BMv1CM9UlxnOyxjLlxbYzxzPzxCTBw9KywW','BwfW','zgLZywjSzwq','mhG0qufbqufbreHbwLH5DvjIm3Leow1Y','CMvTB3zL','CMvTB3zLsxrLBq','DgL0Bgu','C3bSAxq','uhvIBgLZAgLUzY4UlG','AgLZDg9YEq','zgvTBY1TC2CTyxzHDgfY'];a0_0xa4ec=function(){return _0x41ef32;};return a0_0xa4ec();} \ No newline at end of file diff --git a/src/assets/js/e708dcbb3e7a.js b/src/assets/js/e708dcbb3e7a.js deleted file mode 100644 index bba9b65..0000000 --- a/src/assets/js/e708dcbb3e7a.js +++ /dev/null @@ -1 +0,0 @@ -function a0_0x5a2c(_0x3b9d7f,_0x23926e){_0x3b9d7f=_0x3b9d7f-0x132;var _0x528011=a0_0x5280();var _0x5a2cf1=_0x528011[_0x3b9d7f];if(a0_0x5a2c['AvUeOh']===undefined){var _0x326f58=function(_0x1e34d7){var _0x4955f6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x1a25da='',_0x4cbcb4='';for(var _0xdd434a=0x0,_0x548fb6,_0x1d4836,_0xc81cf=0x0;_0x1d4836=_0x1e34d7['charAt'](_0xc81cf++);~_0x1d4836&&(_0x548fb6=_0xdd434a%0x4?_0x548fb6*0x40+_0x1d4836:_0x1d4836,_0xdd434a++%0x4)?_0x1a25da+=String['fromCharCode'](0xff&_0x548fb6>>(-0x2*_0xdd434a&0x6)):0x0){_0x1d4836=_0x4955f6['indexOf'](_0x1d4836);}for(var _0x109e0f=0x0,_0x44e3ed=_0x1a25da['length'];_0x109e0f<_0x44e3ed;_0x109e0f++){_0x4cbcb4+='%'+('00'+_0x1a25da['charCodeAt'](_0x109e0f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4cbcb4);};a0_0x5a2c['NPTqtv']=_0x326f58,a0_0x5a2c['nxGziT']={},a0_0x5a2c['AvUeOh']=!![];}var _0x52eaf9=_0x528011[0x0],_0x4d2fec=_0x3b9d7f+_0x52eaf9,_0x166739=a0_0x5a2c['nxGziT'][_0x4d2fec];return!_0x166739?(_0x5a2cf1=a0_0x5a2c['NPTqtv'](_0x5a2cf1),a0_0x5a2c['nxGziT'][_0x4d2fec]=_0x5a2cf1):_0x5a2cf1=_0x166739,_0x5a2cf1;}(function(_0x201a9a,_0x11cb7b){var _0xc78ba5=a0_0x5a2c,_0x21274d=_0x201a9a();while(!![]){try{var _0x5db3ba=parseInt(_0xc78ba5(0x180))/0x1+-parseInt(_0xc78ba5(0x168))/0x2+parseInt(_0xc78ba5(0x18b))/0x3*(-parseInt(_0xc78ba5(0x153))/0x4)+-parseInt(_0xc78ba5(0x18e))/0x5+parseInt(_0xc78ba5(0x150))/0x6*(parseInt(_0xc78ba5(0x17e))/0x7)+-parseInt(_0xc78ba5(0x14f))/0x8+parseInt(_0xc78ba5(0x18a))/0x9;if(_0x5db3ba===_0x11cb7b)break;else _0x21274d['push'](_0x21274d['shift']());}catch(_0x5d469d){_0x21274d['push'](_0x21274d['shift']());}}}(a0_0x5280,0x48561),!(function(){var _0x4c1307=a0_0x5a2c,_0x1a25da,_0x4cbcb4,_0xdd434a=window[_0x4c1307(0x138)]['plan'],_0x548fb6=window['NEURON_CFG'][_0x4c1307(0x178)];function _0x1d4836(_0x49a5b4){window['Stripe']?_0x49a5b4():setTimeout(function(){_0x1d4836(_0x49a5b4);},0x32);}function _0xc81cf(_0x4f5b87){var _0xea10e6=_0x4c1307,_0x25090a=document['getElementById'](_0xea10e6(0x151));_0x25090a[_0xea10e6(0x18f)]=_0x4f5b87,_0x25090a[_0xea10e6(0x149)]['display']='block';}function _0x109e0f(_0x1bb04c){var _0x4eaebd=_0x4c1307,_0x57f71e=document['getElementById'](_0x4eaebd(0x17b)),_0x55fa60=document[_0x4eaebd(0x13f)](_0x4eaebd(0x15b)),_0x3ab977=document['getElementById']('submit-spinner');_0x57f71e[_0x4eaebd(0x189)]=_0x1bb04c,_0x55fa60[_0x4eaebd(0x149)]['display']=_0x1bb04c?_0x4eaebd(0x15d):'',_0x3ab977[_0x4eaebd(0x149)][_0x4eaebd(0x179)]=_0x1bb04c?'':'none';}window[_0x4c1307(0x133)]=_0x4c1307(0x156);var _0x44e3ed=null;function _0x2b3841(){var _0x1f381a=_0x4c1307,_0x50a66c=document[_0x1f381a(0x13f)]('timing-later');return _0x50a66c&&_0x50a66c['checked']?'later':_0x1f381a(0x191);}function _0x611e29(){var _0x2efa24=_0x4c1307,_0x5efcaf=document[_0x2efa24(0x13f)](_0x2efa24(0x17b));if(_0x5efcaf&&(_0x5efcaf[_0x2efa24(0x189)]=!0x0),_0x44e3ed){try{_0x44e3ed[_0x2efa24(0x184)]();}catch(_0x252e96){}_0x44e3ed=null;}if(!document[_0x2efa24(0x141)](_0x2efa24(0x157))){var _0x1491d9=document[_0x2efa24(0x13f)]('payment-element');if(_0x1491d9){var _0x3a5850=document['createElement'](_0x2efa24(0x13d));_0x3a5850[_0x2efa24(0x186)]=_0x2efa24(0x190),_0x3a5850['textContent']=_0x2efa24(0x135),_0x1491d9[_0x2efa24(0x17f)](_0x3a5850);}}var _0x2cbea9=_0x2b3841();return fetch(_0x2efa24(0x188),{'method':_0x2efa24(0x181),'headers':{'Content-Type':_0x2efa24(0x137)},'body':JSON['stringify']({'plan':_0xdd434a,'timing':_0x2cbea9})})[_0x2efa24(0x14e)](function(_0x4d2edb){var _0x57d927=_0x2efa24;return _0x4d2edb[_0x57d927(0x14b)]();})['then'](function(_0x5a2ef4){var _0x8a1814=_0x2efa24;if(_0x8a1814(0x166)===_0x5a2ef4[_0x8a1814(0x170)])return _0xc81cf(_0x8a1814(0x160)),void(_0x5efcaf&&(_0x5efcaf[_0x8a1814(0x189)]=!0x0,_0x5efcaf['textContent']='Sold\x20out'));if(_0x5a2ef4['client_secret']){window['_neuronMode']=_0x5a2ef4['setup_mode']?_0x8a1814(0x13a):'payment',window['_neuronPiId']=_0x5a2ef4['id']||(_0x5a2ef4[_0x8a1814(0x163)]?_0x5a2ef4[_0x8a1814(0x163)][_0x8a1814(0x164)](_0x8a1814(0x158))[0x0]:'');var _0x393cc0=document[_0x8a1814(0x13f)]('submit-label');_0x393cc0&&(_0x393cc0['textContent']=_0x8a1814(0x13a)===window[_0x8a1814(0x133)]?'Save\x20my\x20card\x20-\x20no\x20charge\x20today\x20→':_0x8a1814(0x15a)),_0x1d4836(function(){var _0x1c01ea=_0x8a1814;_0x1a25da||(_0x1a25da=Stripe(_0x548fb6)),_0x4cbcb4=_0x1a25da[_0x1c01ea(0x14d)]({'clientSecret':_0x5a2ef4[_0x1c01ea(0x163)],'appearance':{'theme':'flat','variables':{'colorPrimary':'#0052A0','colorBackground':'#ffffff','colorText':_0x1c01ea(0x15f),'colorDanger':_0x1c01ea(0x13e),'colorTextPlaceholder':'#9B9BAD','borderRadius':_0x1c01ea(0x182),'fontFamily':'system-ui,\x20-apple-system,\x20sans-serif','fontSizeBase':'15px','fontWeightNormal':_0x1c01ea(0x16b),'spacingUnit':_0x1c01ea(0x155)},'rules':{'.Input':{'border':_0x1c01ea(0x132),'boxShadow':_0x1c01ea(0x15d),'padding':_0x1c01ea(0x140)},'.Input:focus':{'border':'1px\x20solid\x20rgba(0,82,160,.6)','boxShadow':_0x1c01ea(0x16d),'outline':_0x1c01ea(0x15d)},'.Label':{'fontSize':_0x1c01ea(0x176),'fontWeight':'500','letterSpacing':'.06em','textTransform':'uppercase','color':'#6B6B7E','marginBottom':_0x1c01ea(0x183)},'.Tab':{'border':_0x1c01ea(0x16e),'boxShadow':_0x1c01ea(0x15d)},'.Tab--selected':{'border':_0x1c01ea(0x13c),'boxShadow':_0x1c01ea(0x17c)},'.Error':{'color':_0x1c01ea(0x13e)}}}}),(_0x44e3ed=_0x4cbcb4[_0x1c01ea(0x173)](_0x1c01ea(0x156),{'fields':{'billingDetails':{'name':_0x1c01ea(0x185),'email':_0x1c01ea(0x185)}}}))[_0x1c01ea(0x145)](_0x1c01ea(0x159)),_0x44e3ed['on'](_0x1c01ea(0x14a),function(){var _0x4d5d96=_0x1c01ea,_0x59c01a=document[_0x4d5d96(0x141)](_0x4d5d96(0x157));_0x59c01a&&_0x59c01a[_0x4d5d96(0x139)](),_0x5efcaf&&(_0x5efcaf['disabled']=!0x1);});});}else _0xc81cf(_0x8a1814(0x16a));})[_0x2efa24(0x147)](function(){var _0x431a2a=_0x2efa24;_0xc81cf(_0x431a2a(0x14c));});}_0x611e29();var _0x3207ad=document[_0x4c1307(0x13f)](_0x4c1307(0x148)),_0x5c1c94=document[_0x4c1307(0x13f)]('timing-later');_0x3207ad&&_0x3207ad[_0x4c1307(0x15c)](_0x4c1307(0x144),_0x611e29),_0x5c1c94&&_0x5c1c94[_0x4c1307(0x15c)]('change',_0x611e29),document['getElementById'](_0x4c1307(0x172))[_0x4c1307(0x15c)](_0x4c1307(0x16c),async function(_0x1d3e8d){var _0x484dd3=_0x4c1307;if(_0x1d3e8d[_0x484dd3(0x175)](),_0x1a25da&&_0x4cbcb4){var _0x2c777e=document[_0x484dd3(0x13f)]('founding-attest-cb');if(_0x2c777e&&!_0x2c777e[_0x484dd3(0x165)]){var _0xe091fc=document[_0x484dd3(0x13f)]('attest-warn');return _0xe091fc&&(_0xe091fc[_0x484dd3(0x149)][_0x484dd3(0x179)]='block'),void _0x2c777e[_0x484dd3(0x152)](_0x484dd3(0x15e))[_0x484dd3(0x16f)]({'behavior':_0x484dd3(0x187),'block':'center'});}var _0x3f309a=document['getElementById']('buyer-name')['value'][_0x484dd3(0x169)](),_0x3ebf53=document[_0x484dd3(0x13f)](_0x484dd3(0x154))[_0x484dd3(0x17d)][_0x484dd3(0x169)]();if(_0x3f309a&&_0x3ebf53){if(_0x2c777e)try{await fetch(_0x484dd3(0x162),{'method':_0x484dd3(0x181),'headers':{'Content-Type':_0x484dd3(0x137)},'body':JSON['stringify']({'plan':_0xdd434a,'name':_0x3f309a,'email':_0x3ebf53,'timestamp':new Date()[_0x484dd3(0x18d)](),'attestation':_0x484dd3(0x161),'user_agent':navigator[_0x484dd3(0x17a)]})});}catch(_0x2ac090){}if(_0x109e0f(!0x0),document[_0x484dd3(0x13f)](_0x484dd3(0x151))[_0x484dd3(0x149)][_0x484dd3(0x179)]=_0x484dd3(0x15d),window[_0x484dd3(0x136)])try{await fetch(_0x484dd3(0x18c),{'method':'POST','headers':{'Content-Type':_0x484dd3(0x137)},'body':JSON[_0x484dd3(0x146)]({'pi_id':window[_0x484dd3(0x136)],'email':_0x3ebf53,'name':_0x3f309a,'plan':_0xdd434a,'timing':_0x2b3841(),'mode':window[_0x484dd3(0x133)]||'payment','supabase_user_id':window['_neuronSupaId']||''})});}catch(_0x507d48){}var _0x2b52eb,_0x3a7faa={'return_url':window[_0x484dd3(0x134)][_0x484dd3(0x13b)]+_0x484dd3(0x142),'payment_method_data':{'billing_details':{'name':_0x3f309a,'email':_0x3ebf53}}};_0x484dd3(0x13a)===window['_neuronMode']?_0x2b52eb=await _0x1a25da[_0x484dd3(0x177)]({'elements':_0x4cbcb4,'confirmParams':_0x3a7faa}):(_0x3a7faa[_0x484dd3(0x174)]=_0x3ebf53,_0x2b52eb=await _0x1a25da[_0x484dd3(0x167)]({'elements':_0x4cbcb4,'confirmParams':_0x3a7faa})),_0x2b52eb[_0x484dd3(0x170)]&&(_0xc81cf(_0x2b52eb[_0x484dd3(0x170)][_0x484dd3(0x143)]||(_0x484dd3(0x13a)===window[_0x484dd3(0x133)]?'Could\x20not\x20save\x20your\x20card.\x20Please\x20try\x20again.':'Payment\x20failed.\x20Please\x20try\x20again.')),_0x109e0f(!0x1));}else _0xc81cf(_0x484dd3(0x171));}});}()));function a0_0x5280(){var _0x3a4ec9=['DhjPBq','vw5HyMXLihrVigLUAxrPywXPC2uGCgf5BwvUDc4GugXLyxnLihrYEsbHz2fPBI4','mZaW','C3vIBwL0','mcaWidaGm3b4ihjNyMeOmcW4mIWXnJaSlJa4kq','mxb4ihnVBgLKihjNyMeOmcW4mIWXnJaSlJe4kq','C2nYB2XSsw50B1zPzxC','zxjYB3i','ugXLyxnLigvUDgvYihLVDxiGBMfTzsbHBMqGzw1HAwWU','Cgf5BwvUDc1MB3jT','y3jLyxrL','CMvJzwLWDf9LBwfPBa','ChjLDMvUDerLzMf1Bhq','mtfWEa','y29UzMLYBvnLDhvW','ChvIx2TLEq','zgLZCgXHEq','DxnLCKfNzw50','C3vIBwL0lwj0BG','mcaWidaGmNb4ihjNyMeOmcW4mIWXnJaSlJeYkq','DMfSDwu','nJu0mtvNwK1ICuy','yxbWzw5Kq2HPBgq','ntC0nZGZEgzoAMzx','ue9tva','mhb4','nNb4','Dw5TB3vUDa','BMv2zxi','y2XHC3noyw1L','C21VB3rO','l2fWAs9WyxLTzw50lwLUDgvUDa','zgLZywjSzwq','nte1nta2nuHrv0LJrW','nNjRvvDjDG','l2fWAs9SAw5Rlwn1C3rVBwvY','Dg9ju09tDhjPBMC','mJmYnti4mgDAtM1Nta','Dgv4DenVBNrLBNq','y2HLy2TVDxqTzwXLBwvUDc1SB2fKAw5N','BM93','mxb4ihnVBgLKihjNyMeOmcW4mIWXnJaSlJiYkq','x25LDxjVBK1Vzgu','Bg9JyxrPB24','tg9HzgLUzYbWyxLTzw50igzVCM3IGky','x25LDxjVBLbPswq','yxbWBgLJyxrPB24VANnVBG','tKvvuK9ox0ngrW','CMvTB3zL','C2v0Dxa','B3jPz2LU','mxb4ihnVBgLKihjNyMeOmcW4mIWXnJaSlJuP','zgL2','i2mWmZKYyG','z2v0rwXLBwvUDej5swq','mtbWEcaXnhb4','CxvLCNLtzwXLy3rVCG','l2fJy291BNq/D2vSy29Tzt0X','BwvZC2fNzq','y2HHBMDL','Bw91BNq','C3rYAw5NAwz5','y2f0y2G','DgLTAw5Nlw5VDW','C3r5Bgu','CMvHzhK','ANnVBG','vw5HyMXLihrVignVBM5Ly3qUifbSzwfZzsbJAgvJAYb5B3vYignVBM5Ly3rPB24Gyw5KihrYEsbHz2fPBI4','zwXLBwvUDhm','DgHLBG','mZu4otiXnMDJuu9etW','mtyYBuDlAg51','Cgf5BwvUDc1TzxnZywDL','y2XVC2vZDa','mtKZntG0wwvwsunz','yNv5zxiTzw1HAwW','nhb4','Cgf5BwvUDa','lMnOzwnRB3v0lwvSzw1LBNqTBg9HzgLUzW','x3nLy3jLDf8','i3bHEw1LBNqTzwXLBwvUDa','q29TCgXLDguGChvYy2HHC2uG4OAs','C3vIBwL0lwXHyMvS','ywrKrxzLBNrmAxn0zw5LCG','BM9Uzq','BgfIzwW','iZfbmueYrq','qwXSideSmdaWiezVDw5KAw5Nie1LBwjLCIbZCg90CYbOyxzLigjLzw4Gy2XHAw1Lzc4GvgHHBMSGEw91igzVCIb5B3vYigLUDgvYzxn0ic0GCgXLyxnLignVBNnPzgvYihrOzsbqCM9MzxnZAw9UywWGCgXHBI4','ssbHBsbQB2LUAw5NigfZigeGz2vUDwLUzsbLyxjSEsb1C2vYlcbUB3qGDg8GzxH0CMfJDcbWCM9WCMLLDgfYEsbPBMzVCM1HDgLVBIbHyM91DcbozxvYB24GDgvJAg5VBg9NEsWGyxjJAgL0zwn0DxjLlcbVCIbYB2fKBwfWlIbjihDPBgWGzw5NywDLigLUigDVB2qGzMfPDgGUieKGDw5KzxjZDgfUzcb0Agf0igLMihrOAxmGAxmGBM90ig15igLUDgvUDcWGysbKAwzMzxjLBNqGCgXHBIbPCYbHigjLDhrLCIbMAxqU','l2fWAs9HDhrLC3q','y2XPzw50x3nLy3jLDa','C3bSAxq','y2HLy2TLza','C29Szf9VDxq','y29UzMLYBvbHEw1LBNq','mtG2mtG4BMzPDuXn'];a0_0x5280=function(){return _0x3a4ec9;};return a0_0x5280();} \ No newline at end of file diff --git a/src/assets/js/manifest.json b/src/assets/js/manifest.json deleted file mode 100644 index dbe4050..0000000 --- a/src/assets/js/manifest.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "generated_by": "scripts/extract-js.py", - "count": 13, - "entries": [ - { - "file": "account.el", - "hash": "6dafc1586705", - "asset": "/assets/js/6dafc1586705.js", - "size": 18055, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "checkout.el", - "hash": "7eac0621cbca", - "asset": "/assets/js/7eac0621cbca.js", - "size": 2583, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "checkout.el", - "hash": "db455e1671dd", - "asset": "/assets/js/db455e1671dd.js", - "size": 9701, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "checkout.el", - "hash": "e708dcbb3e7a", - "asset": "/assets/js/e708dcbb3e7a.js", - "size": 10802, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "enterprise.el", - "hash": "67c990f787eb", - "asset": "/assets/js/67c990f787eb.js", - "size": 5149, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "environmental.el", - "hash": "9bbad1ad5acb", - "asset": "/assets/js/9bbad1ad5acb.js", - "size": 2602, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "gallery.el", - "hash": "a49ca0a129e8", - "asset": "/assets/js/a49ca0a129e8.js", - "size": 8793, - "interpolated": [] - }, - { - "file": "gallery.el", - "hash": "cd30551e3c3b", - "asset": "/assets/js/cd30551e3c3b.js", - "size": 6693, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "main.el", - "hash": "94727a87c328", - "asset": "/assets/js/94727a87c328.js", - "size": 5173, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "marketplace.el", - "hash": "ce12d682c9e6", - "asset": "/assets/js/ce12d682c9e6.js", - "size": 4046, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "nav.el", - "hash": "529d45d105c9", - "asset": "/assets/js/529d45d105c9.js", - "size": 4511, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "styles.el", - "hash": "407e72cd7182", - "asset": "/assets/js/407e72cd7182.js", - "size": 6430, - "interpolated": [], - "note": "carried from prior run" - }, - { - "file": "styles.el", - "hash": "de72b8b61d75", - "asset": "/assets/js/de72b8b61d75.js", - "size": 24583, - "interpolated": [] - } - ] -} diff --git a/src/checkout.el b/src/checkout.el index de81a77..b769b29 100644 --- a/src/checkout.el +++ b/src/checkout.el @@ -485,12 +485,12 @@ fn checkout_page(plan: String, pub_key: String) -> String { .checkout-auth-badge strong { color: var(--navy); font-weight: 500; } - + - + " + (if is_free { " - + " } else { "" }) + " " } diff --git a/src/enterprise.el b/src/enterprise.el index 0367090..daaa855 100644 --- a/src/enterprise.el +++ b/src/enterprise.el @@ -182,6 +182,6 @@ fn enterprise() -> String { } - + " } diff --git a/src/environmental.el b/src/environmental.el index e7e8a24..13e5ca5 100644 --- a/src/environmental.el +++ b/src/environmental.el @@ -44,7 +44,7 @@ fn environmental() -> String {

Based on estimated token reduction applied to your monthly spend.

- +
diff --git a/src/gallery.el b/src/gallery.el index d3353ce..becf2f6 100644 --- a/src/gallery.el +++ b/src/gallery.el @@ -7,7 +7,12 @@ // main.el's binding would forward-reference at the C level. The DB column // is already sanitized at write time; this is belt-and-braces in case a // row was inserted out-of-band. -let gallery_share_allowlist: String = "{\"p\":[],\"br\":[],\"strong\":[],\"em\":[],\"u\":[],\"s\":[],\"code\":[],\"pre\":[],\"ul\":[],\"ol\":[],\"li\":[],\"h1\":[],\"h2\":[],\"h3\":[],\"h4\":[],\"blockquote\":[],\"a\":[\"href\",\"title\"]}" +// NOTE: is intentionally excluded. Gallery cards wrap their content in +// — allowing in sanitized answer HTML causes nested +// anchors, which the HTML5 parser resolves via the adoption agency algorithm, +// producing mismatched
tags that break gallery-grid's closing tag and +// pull sibling elements into the grid as spurious grid items. +let gallery_share_allowlist: String = "{\"p\":[],\"br\":[],\"strong\":[],\"em\":[],\"u\":[],\"s\":[],\"code\":[],\"pre\":[],\"ul\":[],\"ol\":[],\"li\":[],\"h1\":[],\"h2\":[],\"h3\":[],\"h4\":[],\"blockquote\":[]}" fn gallery_page(cards_json: String, supabase_url: String, supabase_anon_key: String) -> String { let i: Int = 0 @@ -270,8 +275,7 @@ window.NEURON_CFG=window.NEURON_CFG||{}; window.NEURON_CFG.supabase_url=\"" + supabase_url + "\"; window.NEURON_CFG.supabase_anon_key=\"" + supabase_anon_key + "\"; - - + " } diff --git a/src/js/account-auth.el b/src/js/account-auth.el new file mode 100644 index 0000000..d777e1e --- /dev/null +++ b/src/js/account-auth.el @@ -0,0 +1,40 @@ +// account-auth.el -- Supabase OTP magic-link auth for the account page. +// Sends a PKCE magic link to the user's email address. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Required HTML elements: #acct-email-input, #acct-magic-btn, #acct-email-msg +// Required globals: window.NEURON_CFG.supabase_url, window.NEURON_CFG.supabase_anon_key +// Required CDN: supabase-js@2 loaded before this script + +fn main() -> Void { + native_js("(function() { + 'use strict'; + var cfg = window.NEURON_CFG || {}; + var sb = supabase.createClient(cfg.supabase_url, cfg.supabase_anon_key, { + auth: { flowType: 'pkce' } + }); + + window.sendMagicLink = async function() { + var email = (document.getElementById('acct-email-input').value || '').trim(); + var msgEl = document.getElementById('acct-email-msg'); + var btn = document.getElementById('acct-magic-btn'); + if (!email) { + msgEl.style.display = 'block'; + msgEl.style.color = '#c44'; + msgEl.textContent = 'Please enter your email address.'; + return; + } + if (btn) { btn.disabled = true; btn.textContent = 'Sending...'; } + var result = await sb.auth.signInWithOtp({ email: email }); + if (btn) { btn.disabled = false; btn.textContent = 'Continue with email'; } + msgEl.style.display = 'block'; + if (result.error) { + msgEl.style.color = '#c44'; + msgEl.textContent = result.error.message; + } else { + msgEl.style.color = 'var(--navy)'; + msgEl.textContent = 'Check your inbox — we sent a sign-in link to ' + email + '.'; + } + }; +})()") +} diff --git a/src/js/account-dashboard.el b/src/js/account-dashboard.el new file mode 100644 index 0000000..b7bdca8 --- /dev/null +++ b/src/js/account-dashboard.el @@ -0,0 +1,277 @@ +// account-dashboard.el -- Account dashboard: session check, plan card, family. +// Handles onAuthStateChange, plan card rendering, family member management. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Required globals: window.NEURON_CFG.supabase_url, window.NEURON_CFG.supabase_anon_key +// Required CDN: supabase-js@2 + +fn main() -> Void { + native_js("(function() { + 'use strict'; + + var cfg = window.NEURON_CFG || {}; + var sb = supabase.createClient(cfg.supabase_url, cfg.supabase_anon_key, { + auth: { flowType: 'implicit' } + }); + + function show(id) { var el = document.getElementById(id); if (el) el.style.display = ''; } + function hide(id) { var el = document.getElementById(id); if (el) el.style.display = 'none'; } + function setText(id, text) { var el = document.getElementById(id); if (el) el.textContent = text; } + function setHtml(id, html) { var el = document.getElementById(id); if (el) el.innerHTML = html; } + + window.signInWith = async function(provider) { + var btn = document.getElementById('btn-' + provider); + if (btn) { btn.disabled = true; btn.style.opacity = '0.6'; } + try { + var result = await sb.auth.signInWithOAuth({ + provider: provider, + options: { redirectTo: window.location.origin + '/account' } + }); + if (result.error) { + if (btn) { btn.disabled = false; btn.style.opacity = '1'; } + } + } catch (e) { + if (btn) { btn.disabled = false; btn.style.opacity = '1'; } + } + }; + + window.signInWithEmail = async function() { + var email = document.getElementById('acct-email-input').value.trim(); + var pass = document.getElementById('acct-pass-input').value; + var msg = document.getElementById('acct-email-msg'); + var signinBtn = document.getElementById('acct-signin-btn'); + if (!sb) { msg.style.display='block'; msg.style.color='#c44'; msg.textContent='Loading... try again in a moment.'; return; } + if (!email || !pass) { + msg.style.display='block'; msg.style.color='#c44'; msg.textContent='Please enter your email and password.'; return; + } + if (signinBtn) { signinBtn.disabled=true; signinBtn.textContent='Signing in...'; } + var result = await sb.auth.signInWithPassword({ email: email, password: pass }); + if (result.error) { + if (result.error.message && result.error.message.toLowerCase().includes('invalid')) { + var signupResult = await sb.auth.signUp({ + email: email, password: pass, + options: { emailRedirectTo: window.location.origin + '/account' } + }); + if (signupResult.error) { + msg.style.display='block'; msg.style.color='#c44'; msg.textContent=signupResult.error.message; return; + } + msg.style.display='block'; msg.style.color='var(--navy)'; msg.textContent='Check your email to confirm your account.'; return; + } + if (signinBtn) { signinBtn.disabled=false; signinBtn.textContent='Sign in'; } + msg.style.display='block'; msg.style.color='#c44'; msg.textContent=result.error.message; return; + } + window.location.reload(); + }; + + window.signOut = async function() { + var btn = document.getElementById('signout-btn'); + var btnTop = document.getElementById('signout-btn-top'); + if (btn) { btn.disabled=true; btn.textContent='Signing out...'; } + if (btnTop) { btnTop.disabled=true; btnTop.textContent='Signing out...'; } + await sb.auth.signOut(); + show('signin-section'); + hide('dashboard-section'); + if (btn) { btn.disabled=false; btn.textContent='Sign out'; } + if (btnTop) { btnTop.disabled=false; btnTop.textContent='Sign out'; } + }; + + async function renderPlanCard(row) { + var plan = (row && row.plan) ? row.plan : 'free'; + var memberNum = (row && row.member_number) ? row.member_number : null; + var createdAt = (row && row.created_at) ? row.created_at : null; + + var planNames = { 'founding': 'Founding Member', 'professional': 'Professional', 'free': 'Free' }; + setText('plan-name-el', planNames[plan] || 'Free'); + + var statusHtml = ''; + if (plan === 'founding' || plan === 'professional') { + statusHtml = '' + + '' + + 'Launching within 30 days'; + } else { + statusHtml = 'Active'; + } + setHtml('plan-status-el', statusHtml); + + var billingNote = ''; + if (plan === 'founding') { + billingNote = '

Lifetime · Never billed again

'; + } else if (plan === 'professional') { + billingNote = '

Billed monthly ·

'; + } else { + billingNote = '

On the waitlist

'; + } + setHtml('plan-billing-note-el', billingNote); + + var meta = ''; + if (createdAt) { + var d = new Date(createdAt); + var dateStr = d.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); + meta += '
Joined' + dateStr + '
'; + } + if (memberNum) { + meta += '
Member number#' + memberNum + ' of 1,000
'; + } + if (meta) setHtml('plan-meta-el', meta); + + if (plan === 'founding') { + var badgeSection = document.getElementById('badge-section'); + var badgeContainer = document.getElementById('badge-html-container'); + if (badgeSection) badgeSection.style.display = ''; + var badgeN = memberNum || 0; + fetch('/api/founding-badge?n=' + badgeN) + .then(function(r) { return r.text(); }) + .then(function(html) { if (badgeContainer) badgeContainer.innerHTML = html; }) + .catch(function() {}); + } + + var roadmapSection = document.getElementById('roadmap-section'); + if (plan === 'founding' && roadmapSection) roadmapSection.style.display = ''; + + if (plan === 'founding') { + var famSection = document.getElementById('family-section'); + if (famSection) famSection.style.display = 'block'; + var session = await sb.auth.getSession(); + var userEmail = session.data.session && session.data.session.user ? session.data.session.user.email : ''; + if (userEmail) loadFamilyMembers(userEmail); + } + } + + async function loadFamilyMembers(parentEmail) { + var r = await fetch('/api/family/members?parent_email=' + encodeURIComponent(parentEmail)); + var members = await r.json(); + var list = document.getElementById('family-list'); + if (!list) return; + if (!members || !members.length) { + list.innerHTML = '

No family members yet.

'; + return; + } + list.innerHTML = members.map(function(m) { + return '
' + + '

' + m.child_email + '

' + + '

' + m.status + '

' + + '' + + '
'; + }).join(''); + } + + window.addFamilyMember = async function() { + var email = document.getElementById('child-email').value.trim(); + var year = document.getElementById('child-dob-year').value; + var attest = document.getElementById('family-attest').checked; + var msg = document.getElementById('family-msg'); + if (!email || !year || !attest) { + msg.style.display='block'; msg.style.color='#c44'; msg.textContent='Please fill in all fields and confirm the attestation.'; return; + } + if (parseInt(year) < 2008) { + msg.style.display='block'; msg.style.color='#c44'; msg.textContent='Child must be under 18. Birth year must be 2008 or later.'; return; + } + var session = await sb.auth.getSession(); + var parentEmail = session.data.session && session.data.session.user ? session.data.session.user.email : ''; + var r = await fetch('/api/family/invite', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({parent_email: parentEmail, child_email: email, child_dob_year: parseInt(year), attested: true}) + }); + var d = await r.json(); + msg.style.display = 'block'; + if (d.ok) { + msg.style.color = 'var(--navy)'; + msg.textContent = 'Invitation sent to ' + email + '. They will receive an email to set up their account.'; + document.getElementById('child-email').value = ''; + document.getElementById('child-dob-year').value = ''; + document.getElementById('family-attest').checked = false; + loadFamilyMembers(parentEmail); + } else { + msg.style.color = '#c44'; + msg.textContent = d.error || 'Something went wrong.'; + } + }; + + window.removeFamilyMember = async function(childEmail) { + var session = await sb.auth.getSession(); + var parentEmail = session.data.session && session.data.session.user ? session.data.session.user.email : ''; + await fetch('/api/family/remove', { + method: 'POST', headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({parent_email: parentEmail, child_email: childEmail}) + }); + loadFamilyMembers(parentEmail); + }; + + function renderUserChip(user) { + var email = user.email || ''; + var avatarEl = document.getElementById('user-avatar-el'); + var emailEl = document.getElementById('user-email-el'); + var headerEmailEl = document.getElementById('acct-header-email'); + if (emailEl) emailEl.textContent = email; + if (headerEmailEl) headerEmailEl.textContent = email; + var avatarUrl = user.user_metadata && user.user_metadata.avatar_url; + if (avatarEl) { + if (avatarUrl) { + avatarEl.innerHTML = '\"\"'; + } else { + avatarEl.textContent = email ? email.charAt(0).toUpperCase() : '?'; + } + } + } + + function showNoPlan() { + var el = document.getElementById('plan-card'); + if (!el) return; + el.innerHTML = '
Your plan
' + + '

No active plan

' + + '

You have an account but no plan selected yet. Pick one below to preorder.

' + + '
'; + } + + async function loadWaitlistData() { + try { + var sess = await sb.auth.getSession(); + var token = sess.data && sess.data.session ? sess.data.session.access_token : ''; + if (!token) { showNoPlan(); return; } + var r = await fetch('/api/my-plan', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({access_token: token}) + }); + var row = await r.json(); + if (!row || !row.plan) { showNoPlan(); return; } + renderPlanCard(row); + } catch (e) { + showNoPlan(); + } + } + + function showDashboard(user) { + hide('signin-section'); + show('dashboard-section'); + renderUserChip(user); + loadWaitlistData(); + } + + async function init() { + var result = await sb.auth.getSession(); + var session = result.data && result.data.session; + if (session && session.user) { + showDashboard(session.user); + } else { + show('signin-section'); + hide('dashboard-section'); + } + sb.auth.onAuthStateChange(function(event, session) { + if (session && session.user) { + showDashboard(session.user); + } else { + show('signin-section'); + hide('dashboard-section'); + } + }); + } + + init(); +})()") +} diff --git a/src/js/chat-widget.el b/src/js/chat-widget.el new file mode 100644 index 0000000..5e408e8 --- /dev/null +++ b/src/js/chat-widget.el @@ -0,0 +1,340 @@ +// chat-widget.el -- Neuron demo chat widget with Turnstile, session persistence, +// local engram graph, and share-pill. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Exposed globals: neuronDemoToggle(), neuronDemoSend(), neuronDemoReset() +// Required CDN: marked.js, Cloudflare Turnstile + +fn main() -> Void { + native_js("(function() { + if (typeof marked !== 'undefined') { marked.setOptions({ breaks: true, gfm: true }); } + var TURNSTILE_SITE_KEY = '0x4AAAAAADHAZXyuRb3yD9mr'; + var turnstileToken = ''; + var turnstileWidgetId = null; + var turnstileVerified = false; + var isOpen = false; + var MAX = 10; + + function loadSession() { + try { + var s = localStorage.getItem('neuron_demo_session'); + return s ? JSON.parse(s) : { messages: [], count: 0, context: '' }; + } catch(e) { return { messages: [], count: 0, context: '' }; } + } + function saveSession(session) { + try { localStorage.setItem('neuron_demo_session', JSON.stringify(session)); } catch(e) {} + } + function clearSession() { + try { localStorage.removeItem('neuron_demo_session'); } catch(e) {} + } + + function _mg(s) { return s._m || { nodes: [], edges: [] }; } + + function _um(s, nn, ne) { + if (!nn || !nn.length) return; + var g = _mg(s), nm = {}, ek = function(e) { return e.from + '->' + e.to; }, em = {}; + g.nodes.forEach(function(n) { nm[n.id] = n; }); + (nn || []).forEach(function(n) { + if (nm[n.id]) { nm[n.id].w = Math.min(1.0, (nm[n.id].w || 0.5) + 0.08); } + else { nm[n.id] = n; } + }); + g.nodes = Object.values(nm); + g.edges.forEach(function(e) { em[ek(e)] = e; }); + (ne || []).forEach(function(e) { + var k = ek(e); + if (em[k]) { em[k].weight = Math.min(1.0, (em[k].weight || 0.5) + 0.05); } + else { em[k] = e; } + }); + g.edges = Object.values(em); + s._m = g; saveSession(s); + } + + function _ra(g, q) { + if (!g || !g.nodes || !g.nodes.length) return []; + var words = q.toLowerCase().split(/\s+/).filter(function(w) { return w.length > 3; }); + var sc = {}; + g.nodes.forEach(function(n) { + var t = (n.content || '').toLowerCase(); + sc[n.id] = words.filter(function(w) { return t.indexOf(w) !== -1; }).length * 0.6 + (n.w || 0.5) * 0.4; + }); + (g.edges || []).forEach(function(e) { + if (sc[e.from] > 0.1) sc[e.to] = (sc[e.to] || 0) + sc[e.from] * (e.weight || 0.5) * 0.4; + }); + return g.nodes.filter(function(n) { return sc[n.id] > 0.2; }) + .sort(function(a, b) { return sc[b.id] - sc[a.id]; }).slice(0, 5) + .map(function(n) { return { id: n.id, content: n.content, score: sc[n.id] }; }); + } + + if (window.location.search.indexOf('reset=1') !== -1) { + clearSession(); + window.history.replaceState({}, '', window.location.pathname); + } + + var session = loadSession(); + if (!session.uid) { + session.uid = 'u' + Date.now().toString(36) + Math.random().toString(36).slice(2, 7); + saveSession(session); + } + var msgCount = session.count || 0; + + function updateCountdown() { + var el = document.getElementById('neuron-demo-countdown'); + if (!el) return; + var remaining = MAX - msgCount; + el.textContent = remaining + ' question' + (remaining === 1 ? '' : 's') + ' left'; + el.style.color = '#ffffff'; + el.style.fontWeight = '700'; + } + + window.neuronDemoReset = function() { + clearSession(); + session = { messages: [], count: 0, context: '' }; + msgCount = 0; + var msgs = document.getElementById('neuron-demo-messages'); + if (msgs) msgs.innerHTML = ''; + var input = document.getElementById('neuron-demo-text'); + if (input) { input.disabled = false; input.placeholder = 'Ask me anything...'; } + var btn = document.getElementById('neuron-demo-send'); + if (btn) btn.disabled = false; + addMsg('ai', 'Hey. What is on your mind?', true); + }; + + window.neuronDemoToggle = function() { + isOpen = !isOpen; + var panel = document.getElementById('neuron-demo-panel'); + if (panel) panel.style.display = isOpen ? 'flex' : 'none'; + var btn = document.getElementById('neuron-demo-btn'); + if (btn) btn.style.display = isOpen ? 'none' : ''; + var msgs = document.getElementById('neuron-demo-messages'); + if (isOpen && turnstileVerified && msgs && msgs.style.display !== 'none' && msgs.children.length === 0) { + if (session.messages && session.messages.length > 0) { + session.messages.forEach(function(m) { addMsg(m.role, m.text, true); }); + var remaining = MAX - msgCount; + if (remaining <= 0) { + var input = document.getElementById('neuron-demo-text'); + if (input) { input.disabled = true; input.placeholder = 'Interaction limit reached'; } + } + } else if (!session.greeted) { + addMsg('ai', 'Hey. What is on your mind?', true); + session.greeted = true; + saveSession(session); + } + } + var input = document.getElementById('neuron-demo-text'); + if (isOpen && input && !input.disabled) input.focus(); + updateCountdown(); + if (isOpen && !turnstileWidgetId && typeof turnstile !== 'undefined') { + var container = document.getElementById('neuron-demo-turnstile'); + if (container) { + turnstileWidgetId = turnstile.render(container, { + sitekey: TURNSTILE_SITE_KEY, + size: 'compact', + callback: function(token) { + turnstileToken = token; + turnstileVerified = true; + if (typeof turnstile !== 'undefined' && turnstileWidgetId !== null) { + try { turnstile.remove(turnstileWidgetId); } catch(e) {} + turnstileWidgetId = null; + } + var gate = document.getElementById('neuron-demo-gate'); + var msgs = document.getElementById('neuron-demo-messages'); + var inputRow = document.getElementById('neuron-demo-input-row'); + if (gate) gate.style.display = 'none'; + if (msgs) msgs.style.display = 'flex'; + if (inputRow) inputRow.style.display = 'flex'; + addMsg('ai', 'Hey. What is on your mind?', true); + updateCountdown(); + var inp = document.getElementById('neuron-demo-text'); + if (inp) inp.focus(); + }, + 'expired-callback': function() { + turnstileToken = ''; + turnstileVerified = false; + } + }); + } + } + }; + + function addMsg(role, text, skipSave) { + var msgs = document.getElementById('neuron-demo-messages'); + if (!msgs) return null; + var el = document.createElement('div'); + el.className = 'demo-msg demo-msg-' + role; + var avatar = document.createElement('div'); + avatar.className = 'demo-msg-avatar'; + if (role === 'ai') { + var img = document.createElement('img'); + img.src = '/assets/brand/neuron-brain.png'; img.alt = 'Neuron'; + avatar.appendChild(img); + } else { + var svgNS = 'http://www.w3.org/2000/svg'; + var svg = document.createElementNS(svgNS, 'svg'); + svg.setAttribute('width', '14'); svg.setAttribute('height', '14'); + svg.setAttribute('viewBox', '0 0 24 24'); svg.setAttribute('fill', 'none'); + svg.setAttribute('stroke', 'currentColor'); svg.setAttribute('stroke-width', '2'); + var p1 = document.createElementNS(svgNS, 'path'); + p1.setAttribute('d', 'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'); + var c1 = document.createElementNS(svgNS, 'circle'); + c1.setAttribute('cx', '12'); c1.setAttribute('cy', '7'); c1.setAttribute('r', '4'); + svg.appendChild(p1); svg.appendChild(c1); avatar.appendChild(svg); + } + var bubble = document.createElement('div'); + bubble.className = 'demo-msg-bubble'; + if (role === 'ai' && typeof marked !== 'undefined') { + try { bubble.innerHTML = marked.parse(text); } catch(e) { bubble.textContent = text; } + } else { + bubble.textContent = text; + } + if (role === 'ai') { + var bodyWrap = document.createElement('div'); + bodyWrap.className = 'demo-msg-ai-body'; + bodyWrap.appendChild(bubble); + if (!skipSave) { + var shareBtn = document.createElement('button'); + shareBtn.className = 'demo-share-pill'; shareBtn.title = 'Share this response'; shareBtn.textContent = 'Share ↗'; + shareBtn.onclick = async function() { + var prevUser = ''; + if (session.messages) { + for (var i = session.messages.length - 1; i >= 0; i--) { + if (session.messages[i].role === 'user') { prevUser = session.messages[i].text; break; } + } + } + shareBtn.style.opacity = '0.4'; + try { + var r = await fetch('/api/share', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ question: prevUser, answer: text }) + }); + var d = await r.json(); + if (d.id) window.open('/share/' + d.id, '_blank'); + } catch(e) {} + shareBtn.style.opacity = '1'; + }; + bodyWrap.appendChild(shareBtn); + } + el.appendChild(avatar); el.appendChild(bodyWrap); + } else { + el.appendChild(avatar); el.appendChild(bubble); + } + msgs.appendChild(el); + msgs.scrollTop = msgs.scrollHeight; + if (!skipSave && role !== 'thinking') { + session.messages = session.messages || []; + session.messages.push({ role: role, text: text }); + if (session.messages.length > 40) session.messages = session.messages.slice(-40); + saveSession(session); + } + return el; + } + + window.neuronDemoSend = async function() { + if (msgCount >= MAX) return; + var input = document.getElementById('neuron-demo-text'); + var btn = document.getElementById('neuron-demo-send'); + if (!input || btn.disabled) return; + var msg = input.value.trim(); + if (!msg) return; + input.value = ''; + btn.disabled = true; + addMsg('user', msg); + + var thinking = document.createElement('div'); + thinking.className = 'demo-msg demo-msg-thinking'; + var thAvatar = document.createElement('div'); + thAvatar.className = 'demo-msg-avatar'; + var thImg = document.createElement('img'); + thImg.src = '/assets/brand/neuron-brain.png'; thImg.alt = 'Neuron'; + thAvatar.appendChild(thImg); thinking.appendChild(thAvatar); + var thDots = document.createElement('span'); + thDots.className = 'demo-msg-thinking-dots'; + thDots.innerHTML = ''; + thinking.appendChild(thDots); + var thMsgsEl = document.getElementById('neuron-demo-messages'); + if (thMsgsEl) { thMsgsEl.appendChild(thinking); thMsgsEl.scrollTop = thMsgsEl.scrollHeight; } + + try { + var hist = (session.messages || []).slice(-20).filter(function(m) { return m.role !== 'thinking'; }).map(function(m) { + return { role: m.role === 'ai' ? 'assistant' : 'user', content: m.text }; + }); + var activated_nodes = _ra(session._m, msg); + var questionsRemaining = Math.max(0, (MAX - msgCount) - 1); + var r = await fetch('/api/demo', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + message: msg, + history: hist, + cf_token: turnstileVerified && !session._cfSent ? turnstileToken : '', + uid: session.uid || '', + activated_nodes: activated_nodes, + engram_node_count: (session._m && session._m.nodes) ? session._m.nodes.length : 0, + questions_remaining: questionsRemaining, + is_last_question: questionsRemaining === 0 + }) + }); + var d = await r.json(); + if (thinking) thinking.remove(); + + // Server-side rate limit — show a live countdown to reset + if (d.rate_limited && d.reset_at) { + var _showRateTimer = function() { + var now = Math.floor(Date.now() / 1000); + var secsLeft = Math.max(0, d.reset_at - now); + var hh = Math.floor(secsLeft / 3600); + var mm = Math.floor((secsLeft % 3600) / 60); + var ss = secsLeft % 60; + var pad = function(n) { return n < 10 ? '0' + n : '' + n; }; + var ts = hh > 0 ? (hh + ':' + pad(mm) + ':' + pad(ss)) : (pad(mm) + ':' + pad(ss)); + return 'You\'ve had 10 conversations today. Come back in ' + ts + '.'; + }; + addMsg('ai', _showRateTimer()); + // Update the last ai message with a live ticker + var _timerInterval = setInterval(function() { + var thMsgsInner = document.getElementById('neuron-demo-msgs'); + if (!thMsgsInner) { clearInterval(_timerInterval); return; } + var aiMsgs = thMsgsInner.querySelectorAll('.neuron-msg-ai'); + var lastAi = aiMsgs[aiMsgs.length - 1]; + if (lastAi) { lastAi.textContent = _showRateTimer(); } + if (Math.floor(Date.now() / 1000) >= d.reset_at) { + clearInterval(_timerInterval); + if (lastAi) { lastAi.textContent = 'You\'re all set — conversations reset. Say hello!'; } + if (input) { input.disabled = false; input.placeholder = 'Ask me anything...'; } + if (btn) { btn.disabled = false; } + } + }, 1000); + if (input) { input.disabled = true; input.placeholder = 'Come back tomorrow...'; } + if (btn) { btn.disabled = true; } + if (btn) { btn.disabled = false; } + if (input) { input.focus(); } + return; + } + + _um(session, d.sn, d.se); + var reply = d.response || d.reply || d.message || ''; + var isError = !reply || reply === 'Stepped out for a moment. Try again.'; + if (!isError) { + msgCount++; + session.count = msgCount; + saveSession(session); + updateCountdown(); + if (msgCount >= MAX && input) { input.disabled = true; input.placeholder = 'Interaction limit reached'; } + } + addMsg('ai', reply || 'Stepped out for a moment. Try again.'); + } catch(e) { + if (thinking) thinking.remove(); + addMsg('ai', 'Stepped out for a moment. Try again.'); + } + if (msgCount < MAX && btn) btn.disabled = false; + if (input) input.focus(); + }; + + var inp = document.getElementById('neuron-demo-text'); + if (inp) { + inp.addEventListener('keydown', function(e) { + if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); window.neuronDemoSend(); } + }); + } +})()") +} diff --git a/src/js/checkout-auth.el b/src/js/checkout-auth.el new file mode 100644 index 0000000..0e63984 --- /dev/null +++ b/src/js/checkout-auth.el @@ -0,0 +1,156 @@ +// checkout-auth.el -- Checkout Supabase auth: OAuth, email sign-in/sign-up. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Exposed globals: signInWith(provider), signUpWithEmail(), signInWithEmail(), +// showSignIn(), showSignUp(), resetPassword() + +fn main() -> Void { + native_js("(function() { + var supabaseClient; + + function initSupabase(cb) { + if (supabaseClient) { cb(); return; } + fetch('/api/supabase-config') + .then(function(r) { return r.json(); }) + .then(function(cfg) { + supabaseClient = window.supabase.createClient(cfg.url, cfg.anon_key, { + auth: { flowType: 'implicit' } + }); + cb(); + }) + .catch(function(err) {}); + } + + function showAuthMessage(msg, isError) { + var el = document.getElementById('auth-message'); + if (!el) return; + el.textContent = msg; + el.style.display = 'block'; + el.style.color = isError ? '#c0392b' : '#2ecc71'; + } + + function revealPaymentForm(user) { + if (user && user.id) { window._neuronSupaId = user.id; } + var auth = document.getElementById('auth-section'); + if (auth) auth.style.display = 'none'; + var payment = document.getElementById('payment-section'); + if (payment) payment.style.display = ''; + + if (user) { + var badge = document.getElementById('auth-badge'); + var name = user.user_metadata && user.user_metadata.full_name + ? user.user_metadata.full_name : user.email || ''; + if (badge) { + badge.innerHTML = '
' + + '' + + 'Signed in as ' + name + '
'; + badge.style.display = ''; + } + var prompt = document.getElementById('signin-prompt'); + if (prompt) prompt.style.display = 'none'; + } + + if (user && user.email) { + var emailEl = document.getElementById('buyer-email'); + if (emailEl) emailEl.value = user.email; + } + + var userEmail = user ? (user.email || '') : ''; + var userName = user ? ((user.user_metadata && user.user_metadata.full_name) || '') : ''; + if (typeof initStripe === 'function') initStripe(userEmail, userName); + } + + function checkExistingSession() { + initSupabase(function() { + supabaseClient.auth.getUser().then(function(res) { + if (res.data && res.data.user) { revealPaymentForm(res.data.user); } + }); + }); + } + + function handleAuthRedirect() { + initSupabase(function() { + supabaseClient.auth.onAuthStateChange(function(event, session) { + if ((event === 'SIGNED_IN' || event === 'INITIAL_SESSION') && session && session.user) { + revealPaymentForm(session.user); + } + }); + }); + } + + window.signInWith = function(provider) { + var btns = document.querySelectorAll('.checkout-social-btn'); + btns.forEach(function(b) { b.disabled = true; }); + initSupabase(function() { + supabaseClient.auth.signInWithOAuth({ + provider: provider, + options: { redirectTo: window.location.href } + }).then(function(result) { + if (result.error) { + showAuthMessage(result.error.message || 'Sign-in failed. Please try again.', true); + btns.forEach(function(b) { b.disabled = false; }); + } + }); + }); + }; + + window.signUpWithEmail = function() { + var email = document.getElementById('auth-email').value.trim(); + var password = document.getElementById('auth-password').value; + if (!email || !password) { showAuthMessage('Please enter your email and a password.', true); return; } + if (password.length < 8) { showAuthMessage('Password must be at least 8 characters.', true); return; } + initSupabase(function() { + supabaseClient.auth.signUp({ email: email, password: password }).then(function(result) { + if (result.error) { showAuthMessage(result.error.message, true); return; } + if (result.data && result.data.session) { + revealPaymentForm(result.data.session.user); + } else { + showAuthMessage('Check your email to confirm your account, then come back to complete your purchase.', false); + } + }); + }); + }; + + window.showSignIn = function() { + var form = document.getElementById('email-auth-form'); + if (!form) return; + var btn = form.querySelector('.checkout-email-btn'); + if (btn) { btn.textContent = 'Sign in →'; btn.onclick = window.signInWithEmail; } + }; + + window.showSignUp = function() { + var form = document.getElementById('email-auth-form'); + if (!form) return; + var btn = form.querySelector('.checkout-email-btn'); + if (btn) { btn.textContent = 'Create account →'; btn.onclick = window.signUpWithEmail; } + }; + + window.signInWithEmail = function() { + var email = document.getElementById('auth-email').value.trim(); + var password = document.getElementById('auth-password').value; + if (!email || !password) { showAuthMessage('Please enter your email and password.', true); return; } + initSupabase(function() { + supabaseClient.auth.signInWithPassword({ email: email, password: password }).then(function(result) { + if (result.error) { showAuthMessage(result.error.message, true); return; } + revealPaymentForm(result.data.session.user); + }); + }); + }; + + window.resetPassword = function() { + var email = document.getElementById('auth-email').value.trim(); + if (!email) { showAuthMessage('Enter your email address above first.', true); return; } + initSupabase(function() { + supabaseClient.auth.resetPasswordForEmail(email, { + redirectTo: window.location.origin + '/checkout?plan=' + (new URLSearchParams(window.location.search).get('plan') || 'professional') + }).then(function(result) { + if (result.error) { showAuthMessage(result.error.message, true); } + else { showAuthMessage('Password reset email sent. Check your inbox.', false); } + }); + }); + }; + + handleAuthRedirect(); + checkExistingSession(); +})()") +} diff --git a/src/js/checkout-free.el b/src/js/checkout-free.el new file mode 100644 index 0000000..257e295 --- /dev/null +++ b/src/js/checkout-free.el @@ -0,0 +1,17 @@ +// checkout-free.el -- Free plan: reveal payment section after auth completes. +// Watches the auth-badge element; when it becomes visible, shows payment-section. +// Compiled with: elc --target=js --bundle --minify --obfuscate + +fn main() -> Void { + native_js("(function() { + var pay = document.getElementById('payment-section'); + if (!pay) return; + var timer = setInterval(function() { + var badge = document.getElementById('auth-badge'); + if (badge && badge.offsetParent !== null) { + pay.style.display = ''; + clearInterval(timer); + } + }, 150); +})()") +} diff --git a/src/js/checkout-stripe.el b/src/js/checkout-stripe.el new file mode 100644 index 0000000..0bc6d54 --- /dev/null +++ b/src/js/checkout-stripe.el @@ -0,0 +1,200 @@ +// checkout-stripe.el -- Stripe Payment Element setup and form submission. +// Reads NEURON_CFG.plan and NEURON_CFG.pub_key from window. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Required globals: window.NEURON_CFG.plan, window.NEURON_CFG.pub_key +// Required CDN: Stripe.js loaded before this script + +fn main() -> Void { + native_js("(function() { + var cfg = window.NEURON_CFG || {}; + var PLAN = cfg.plan || ''; + var STRIPE_PK = cfg.pub_key || ''; + var stripe, elements; + + function waitForStripe(cb) { + if (window.Stripe) { cb(); return; } + setTimeout(function() { waitForStripe(cb); }, 50); + } + + function showMessage(msg) { + var el = document.getElementById('payment-message'); + if (el) { el.textContent = msg; el.style.display = 'block'; } + } + + function setLoading(loading) { + var btn = document.getElementById('submit-btn'); + var label = document.getElementById('submit-label'); + var spinner = document.getElementById('submit-spinner'); + if (btn) btn.disabled = loading; + if (label) label.style.display = loading ? 'none' : ''; + if (spinner) spinner.style.display = loading ? '' : 'none'; + } + + window._neuronMode = 'payment'; + var paymentEl = null; + + function appearance() { + return { + theme: 'flat', + variables: { + colorPrimary: '#0052A0', + colorBackground: '#ffffff', + colorText: '#1A1A2E', + colorDanger: '#c0392b', + colorTextPlaceholder: '#9B9BAD', + borderRadius: '0px', + fontFamily: 'system-ui, -apple-system, sans-serif', + fontSizeBase: '15px', + fontWeightNormal: '300', + spacingUnit: '4px' + }, + rules: { + '.Input': { border: '1px solid rgba(0,82,160,.22)', boxShadow: 'none', padding: '10px 14px' }, + '.Input:focus': { border: '1px solid rgba(0,82,160,.6)', boxShadow: '0 0 0 3px rgba(0,82,160,.08)', outline: 'none' }, + '.Label': { fontSize: '11px', fontWeight: '500', letterSpacing: '.06em', textTransform: 'uppercase', color: '#6B6B7E', marginBottom: '6px' }, + '.Tab': { border: '1px solid rgba(0,82,160,.18)', boxShadow: 'none' }, + '.Tab--selected':{ border: '1px solid rgba(0,82,160,.5)', boxShadow: '0 0 0 2px rgba(0,82,160,.12)' }, + '.Error': { color: '#c0392b' } + } + }; + } + + function currentTiming() { + var later = document.getElementById('timing-later'); + return (later && later.checked) ? 'later' : 'now'; + } + + function fetchAndMount() { + var submitBtn = document.getElementById('submit-btn'); + if (submitBtn) submitBtn.disabled = true; + if (paymentEl) { try { paymentEl.unmount(); } catch(e) {} paymentEl = null; } + var hostEl = document.getElementById('payment-element'); + if (hostEl && !document.querySelector('.checkout-element-loading')) { + var d = document.createElement('div'); + d.className = 'checkout-element-loading'; + d.textContent = 'Loading payment form...'; + hostEl.appendChild(d); + } + var timing = currentTiming(); + return fetch('/api/payment-intent', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ plan: PLAN, timing: timing }) + }) + .then(function(r) { return r.json(); }) + .then(function(data) { + if (data.error === 'sold_out') { + showMessage('All 1,000 Founding Member spots have been claimed. Thank you for your interest - please consider the Professional plan.'); + if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = 'Sold out'; } + return; + } + if (!data.client_secret) { showMessage('Unable to initialise payment. Please try again.'); return; } + window._neuronMode = data.setup_mode ? 'setup' : 'payment'; + window._neuronPiId = data.id || (data.client_secret ? data.client_secret.split('_secret_')[0] : ''); + var submitLabel = document.getElementById('submit-label'); + if (submitLabel) { + submitLabel.textContent = window._neuronMode === 'setup' + ? 'Save my card - no charge today →' + : 'Complete purchase →'; + } + waitForStripe(function() { + if (!stripe) stripe = Stripe(STRIPE_PK); + elements = stripe.elements({ clientSecret: data.client_secret, appearance: appearance() }); + paymentEl = elements.create('payment', { + fields: { billingDetails: { name: 'never', email: 'never' } } + }); + paymentEl.mount('#payment-element'); + paymentEl.on('ready', function() { + var ld = document.querySelector('.checkout-element-loading'); + if (ld) ld.remove(); + if (submitBtn) submitBtn.disabled = false; + }); + }); + }) + .catch(function() { + showMessage('Unable to connect. Please check your connection and try again.'); + }); + } + + fetchAndMount(); + var tNow = document.getElementById('timing-now'); + var tLater = document.getElementById('timing-later'); + if (tNow) tNow.addEventListener('change', fetchAndMount); + if (tLater) tLater.addEventListener('change', fetchAndMount); + + var form = document.getElementById('payment-form'); + if (form) form.addEventListener('submit', async function(e) { + e.preventDefault(); + if (!stripe || !elements) return; + + var attestCb = document.getElementById('founding-attest-cb'); + if (attestCb && !attestCb.checked) { + var warn = document.getElementById('attest-warn'); + if (warn) warn.style.display = 'block'; + attestCb.closest('label').scrollIntoView({ behavior: 'smooth', block: 'center' }); + return; + } + + var name = document.getElementById('buyer-name').value.trim(); + var email = document.getElementById('buyer-email').value.trim(); + if (!name || !email) { showMessage('Please enter your name and email.'); return; } + + if (attestCb) { + try { + await fetch('/api/attest', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + plan: PLAN, name: name, email: email, + timestamp: new Date().toISOString(), + attestation: 'I am joining as a genuine early user, not to extract proprietary information about Neuron technology, architecture, or roadmap. I will engage in good faith. I understand that if this is not my intent, a different plan is a better fit.', + user_agent: navigator.userAgent + }) + }); + } catch(e) {} + } + + setLoading(true); + var pmsg = document.getElementById('payment-message'); + if (pmsg) pmsg.style.display = 'none'; + + if (window._neuronPiId) { + try { + await fetch('/api/link-customer', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + pi_id: window._neuronPiId, + email: email, + name: name, + plan: PLAN, + timing: currentTiming(), + mode: window._neuronMode || 'payment', + supabase_user_id: window._neuronSupaId || '' + }) + }); + } catch(e) {} + } + + var confirmParams = { + return_url: window.location.origin + '/account?welcome=1', + payment_method_data: { billing_details: { name: name, email: email } } + }; + var result; + if (window._neuronMode === 'setup') { + result = await stripe.confirmSetup({ elements: elements, confirmParams: confirmParams }); + } else { + confirmParams.receipt_email = email; + result = await stripe.confirmPayment({ elements: elements, confirmParams: confirmParams }); + } + + if (result.error) { + showMessage(result.error.message || (window._neuronMode === 'setup' + ? 'Could not save your card. Please try again.' + : 'Payment failed. Please try again.')); + setLoading(false); + } + }); +})()") +} diff --git a/src/js/enterprise.el b/src/js/enterprise.el new file mode 100644 index 0000000..322a5b0 --- /dev/null +++ b/src/js/enterprise.el @@ -0,0 +1,66 @@ +// enterprise.el -- Enterprise inquiry form submission and headcount filter. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Exposed globals: entHeadcountChange(val) + +fn main() -> Void { + native_js("(function() { + var form = document.getElementById('enterprise-form'); + var submitBtn = document.getElementById('ent-submit'); + var successDiv = document.getElementById('enterprise-success'); + var errorDiv = document.getElementById('ent-form-error'); + + if (!form) return; + + window.entHeadcountChange = function(val) { + var msgSecondary = document.getElementById('ent-filter-msg-secondary'); + var msgYes = document.getElementById('ent-filter-msg-yes'); + if (msgSecondary) msgSecondary.style.display = val === 'secondary' ? 'block' : 'none'; + if (msgYes) msgYes.style.display = val === 'yes' ? 'block' : 'none'; + if (submitBtn) { + submitBtn.disabled = val === 'yes'; + submitBtn.style.opacity = val === 'yes' ? '0.35' : '1'; + submitBtn.style.cursor = val === 'yes' ? 'not-allowed' : 'pointer'; + } + }; + + form.addEventListener('submit', function(e) { + e.preventDefault(); + var headcount = document.getElementById('ent-headcount').value; + if (headcount === 'yes') { + var msgYes = document.getElementById('ent-filter-msg-yes'); + if (msgYes) msgYes.style.display = 'block'; + return; + } + + var name = document.getElementById('ent-name').value.trim(); + var email = document.getElementById('ent-email').value.trim(); + var company = document.getElementById('ent-company').value.trim(); + var size = document.getElementById('ent-size').value; + var useCase = document.getElementById('ent-use').value.trim(); + + if (!name || !email || !company || !size || !useCase || !headcount) { + if (errorDiv) { errorDiv.textContent = 'Please fill out all fields.'; errorDiv.style.display = 'block'; } + return; + } + + if (errorDiv) errorDiv.style.display = 'none'; + if (submitBtn) { submitBtn.textContent = 'Sending...'; submitBtn.disabled = true; } + + fetch('/api/enterprise-inquiry', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ name: name, email: email, company: company, size: size, use_case: useCase, headcount: headcount }) + }) + .then(function(r) { return r.json(); }) + .then(function() { + if (form) form.style.display = 'none'; + if (successDiv) successDiv.style.display = 'block'; + }) + .catch(function() { + if (submitBtn) { submitBtn.textContent = 'Send inquiry →'; submitBtn.disabled = false; } + if (errorDiv) { errorDiv.textContent = 'Something went wrong. Email enterprise@neurontechnologies.ai directly.'; errorDiv.style.display = 'block'; } + }); + }); +})()") +} diff --git a/src/js/environmental.el b/src/js/environmental.el new file mode 100644 index 0000000..6c542f7 --- /dev/null +++ b/src/js/environmental.el @@ -0,0 +1,19 @@ +// environmental.el -- Environmental page efficiency calculator slider. +// Compiled with: elc --target=js --bundle --minify --obfuscate + +fn main() -> Void { + native_js("(function() { + var slider = document.getElementById('calc-slider'); + var spendEl = document.getElementById('calc-spend'); + var savingsEl = document.getElementById('calc-savings'); + if (!slider) return; + function update() { + var monthly = parseInt(slider.value, 10); + var annual = Math.round(monthly * 0.35 * 12); + if (spendEl) spendEl.textContent = '$' + monthly; + if (savingsEl) savingsEl.textContent = '$' + annual; + } + slider.addEventListener('input', update); + update(); +})()") +} diff --git a/src/js/gallery.el b/src/js/gallery.el new file mode 100644 index 0000000..3b92215 --- /dev/null +++ b/src/js/gallery.el @@ -0,0 +1,186 @@ +// gallery.el -- Gallery page: search/filter, sort, nav scroll, Supabase voting. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Required globals: window.NEURON_CFG.supabase_url, window.NEURON_CFG.supabase_anon_key +// Required CDN: supabase-js@2 + +fn main() -> Void { + native_js("(function() { + // Nav scroll effect + var nav = document.getElementById('nav'); + if (nav) window.addEventListener('scroll', function() { + nav.classList.toggle('scrolled', window.scrollY > 10); + }, { passive: true }); + + // Hamburger + var btn = document.getElementById('nav-hamburger'); + var menu = document.getElementById('nav-mobile'); + if (btn && menu) { + function navClose() { menu.classList.remove('open'); btn.setAttribute('aria-expanded','false'); } + function navOpen() { menu.classList.add('open'); btn.setAttribute('aria-expanded','true'); } + btn.addEventListener('click', function(e) { e.stopPropagation(); menu.classList.contains('open') ? navClose() : navOpen(); }); + menu.querySelectorAll('a').forEach(function(a) { a.addEventListener('click', navClose); }); + document.addEventListener('click', function(e) { if (!nav.contains(e.target)) navClose(); }); + document.addEventListener('keydown', function(e) { if (e.key === 'Escape') navClose(); }); + window.addEventListener('resize', function() { if (window.innerWidth > 1060) navClose(); }); + } + + // Dropdown + var ddBtn = document.querySelector('.nav-dropdown-btn'); + var dd = document.querySelector('.nav-dropdown'); + if (ddBtn && dd) { + ddBtn.addEventListener('click', function(e) { + e.stopPropagation(); + var isOpen = dd.classList.contains('open'); + dd.classList.toggle('open'); + ddBtn.setAttribute('aria-expanded', isOpen ? 'false' : 'true'); + }); + dd.querySelectorAll('.nav-dropdown-item').forEach(function(a) { a.addEventListener('click', function() { dd.classList.remove('open'); }); }); + document.addEventListener('click', function() { dd.classList.remove('open'); }); + } + + // Search + var searchEl = document.getElementById('gal-search'); + var grid = document.getElementById('gallery-grid'); + var noResults = document.getElementById('no-results'); + + function filterCards() { + var q = (searchEl ? searchEl.value : '').toLowerCase().trim(); + var cards = grid ? grid.querySelectorAll('.gal-card') : []; + var visible = 0; + cards.forEach(function(c) { + var match = !q || c.textContent.toLowerCase().indexOf(q) !== -1; + c.classList.toggle('hidden', !match); + if (match) visible++; + }); + if (noResults) noResults.style.display = visible === 0 && q ? 'block' : 'none'; + } + + if (searchEl) searchEl.addEventListener('input', filterCards); + + // Sort + window.setSort = function(mode, btn) { + document.querySelectorAll('.sort-btn').forEach(function(b) { b.classList.remove('active'); }); + btn.classList.add('active'); + if (!grid) return; + var cards = Array.from(grid.querySelectorAll('.gal-card')); + cards.sort(function(a, b) { + if (mode === 'top') { + return parseInt(b.getAttribute('data-score') || '0') - parseInt(a.getAttribute('data-score') || '0'); + } else { + return parseInt(b.getAttribute('data-ts') || '0') - parseInt(a.getAttribute('data-ts') || '0'); + } + }); + cards.forEach(function(c) { grid.appendChild(c); }); + }; + + // Voting via Supabase + var cfg = window.NEURON_CFG || {}; + var sbUrl = cfg.supabase_url; + var sbKey = cfg.supabase_anon_key; + if (!sbUrl || !sbKey) return; + var sb = window.supabase.createClient(sbUrl, sbKey); + var token = null; + var votes = {}; + + function getCtrl(sid) { + var found = null; + document.querySelectorAll('.vote-controls').forEach(function(c) { + if (c.getAttribute('data-share-id') === sid) found = c; + }); + return found; + } + + function applyState(ctrl, state) { + var sid = ctrl.getAttribute('data-share-id'); + votes[sid] = state.user_vote || 'none'; + var scoreEl = ctrl.querySelector('.vote-score'); + if (scoreEl && state.score != null) scoreEl.textContent = state.score; + var upBtn = ctrl.querySelector('.vote-btn.vote-up'); + var dnBtn = ctrl.querySelector('.vote-btn.vote-down'); + if (upBtn) { upBtn.disabled = false; upBtn.classList.toggle('is-active', state.user_vote === 'up'); } + if (dnBtn) { dnBtn.disabled = false; dnBtn.classList.toggle('is-active', state.user_vote === 'down'); } + } + + function loadVoteState(sid) { + var url = '/api/vote-state/' + sid; + if (token) url += '?access_token=' + encodeURIComponent(token); + fetch(url).then(function(r) { return r.json(); }).then(function(d) { + var ctrl = getCtrl(sid); + if (ctrl) applyState(ctrl, d); + }).catch(function() {}); + } + + function loadAll() { + document.querySelectorAll('.vote-controls').forEach(function(ctrl) { + var id = ctrl.getAttribute('data-share-id'); + if (id) loadVoteState(id); + }); + } + + function castVote(sid, direction) { + if (!token) { showSignIn(); return; } + var ctrl = getCtrl(sid); + var btns = ctrl ? ctrl.querySelectorAll('.vote-btn') : []; + btns.forEach(function(b) { b.disabled = true; b.classList.add('is-loading'); }); + fetch('/api/vote', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({access_token: token, id: sid, direction: direction}) + }).then(function(r) { return r.json(); }).then(function(d) { + if (ctrl && d.ok) applyState(ctrl, d); + btns.forEach(function(b) { b.disabled = false; b.classList.remove('is-loading'); }); + }).catch(function() { + btns.forEach(function(b) { b.disabled = false; b.classList.remove('is-loading'); }); + }); + } + + document.querySelectorAll('.vote-controls').forEach(function(ctrl) { + ctrl.querySelectorAll('.vote-btn').forEach(function(btn) { + btn.addEventListener('click', function() { + var sid = ctrl.getAttribute('data-share-id'); + if (!token) { showSignIn(); return; } + var dir = btn.getAttribute('data-direction'); + var cur = votes[sid] || 'none'; + castVote(sid, cur === dir ? 'none' : dir); + }); + }); + }); + + var modal = document.getElementById('signin-modal'); + var cancelEl = document.getElementById('signin-cancel'); + var sendEl = document.getElementById('signin-send'); + var emailEl = document.getElementById('signin-email'); + var msgEl = document.getElementById('signin-msg'); + + function showSignIn() { if (modal) modal.classList.add('open'); if (emailEl) emailEl.focus(); } + + if (cancelEl) cancelEl.addEventListener('click', function() { modal.classList.remove('open'); }); + if (modal) modal.addEventListener('click', function(e) { if (e.target === modal) modal.classList.remove('open'); }); + if (sendEl) sendEl.addEventListener('click', function() { + var email = emailEl ? emailEl.value.trim() : ''; + if (!email) { if (msgEl) msgEl.textContent = 'Please enter your email.'; return; } + sendEl.disabled = true; + if (msgEl) msgEl.textContent = 'Sending...'; + sb.auth.signInWithOtp({ email: email, options: { emailRedirectTo: window.location.href } }) + .then(function(r) { + sendEl.disabled = false; + if (msgEl) msgEl.textContent = r.error + ? (r.error.message || 'Error. Try again.') + : 'Check your email for a sign-in link.'; + }); + }); + if (emailEl) emailEl.addEventListener('keydown', function(e) { if (e.key === 'Enter' && sendEl) sendEl.click(); }); + + sb.auth.onAuthStateChange(function(event, session) { + token = session ? session.access_token : null; + if (token && modal) modal.classList.remove('open'); + loadAll(); + }); + + sb.auth.getSession().then(function(r) { + token = r.data && r.data.session ? r.data.session.access_token : null; + loadAll(); + }); +})()") +} diff --git a/src/js/main.el b/src/js/main.el new file mode 100644 index 0000000..6677662 --- /dev/null +++ b/src/js/main.el @@ -0,0 +1,67 @@ +// main.el -- Share page voting, copy-for-platform social sharing. +// Compiled with: elc --target=js --bundle --minify --obfuscate +// +// Required globals: window.NEURON_CFG.id, window.NEURON_CFG.card_url +// Exposed globals: copyForPlatform(platform, btn) + +fn main() -> Void { + native_js("(function() { + var cfg = window.NEURON_CFG || {}; + var shareId = cfg.id || ''; + var cardUrl = cfg.card_url || ''; + + // Copy-for-platform: format and copy share text for different social platforms + window.copyForPlatform = function(platform, btn) { + var text = ''; + var url = window.location.href; + if (platform === 'tiktok') { + text = 'Neuron said something interesting. Watch this. ' + url; + } else if (platform === 'snapchat') { + text = url; + } else { + text = url; + } + navigator.clipboard.writeText(text).then(function() { + if (btn) { + btn.classList.add('copied'); + setTimeout(function() { btn.classList.remove('copied'); }, 1500); + } + }).catch(function() {}); + }; + + // Vote buttons on share page + var voteUp = document.getElementById('vote-up'); + var voteDown = document.getElementById('vote-down'); + var voteScore = document.getElementById('vote-score'); + var voted = null; + + function updateVoteUI(direction, score) { + if (voteUp) voteUp.classList.toggle('voted-up', direction === 'up'); + if (voteDown) voteDown.classList.toggle('voted-down', direction === 'down'); + if (voteScore && score != null) voteScore.textContent = score; + } + + function castVote(direction) { + var next = voted === direction ? 'none' : direction; + voted = next === 'none' ? null : next; + fetch('/api/vote', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ id: shareId, direction: next }) + }).then(function(r) { return r.json(); }).then(function(d) { + if (d.ok) updateVoteUI(next === 'none' ? null : next, d.score); + }).catch(function() {}); + } + + if (voteUp) voteUp.addEventListener('click', function() { castVote('up'); }); + if (voteDown) voteDown.addEventListener('click', function() { castVote('down'); }); + + // Load initial vote state + if (shareId) { + fetch('/api/vote-state/' + shareId) + .then(function(r) { return r.json(); }) + .then(function(d) { updateVoteUI(d.user_vote || null, d.score); }) + .catch(function() {}); + } +})()") +} diff --git a/src/js/marketplace.el b/src/js/marketplace.el new file mode 100644 index 0000000..4ef9bf3 --- /dev/null +++ b/src/js/marketplace.el @@ -0,0 +1,42 @@ +// marketplace.el -- Marketplace developer interest form submission. +// Compiled with: elc --target=js --bundle --minify --obfuscate + +fn main() -> Void { + native_js("(function() { + var form = document.getElementById('dev-form'); + if (!form) return; + form.addEventListener('submit', async function(e) { + e.preventDefault(); + var msg = document.getElementById('dev-msg'); + var btn = form.querySelector('button[type=submit]'); + btn.disabled = true; + btn.textContent = 'Sending...'; + try { + var r = await fetch('/api/developer-interest', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + name: document.getElementById('dev-name').value, + email: document.getElementById('dev-email').value, + idea: document.getElementById('dev-idea').value + }) + }); + msg.style.display = 'block'; + if (r.ok) { + msg.textContent = 'Got it. Will review it personally and reach out.'; + msg.style.color = 'var(--navy)'; + form.reset(); + } else { + msg.textContent = 'Something went wrong. Email developers@neurontechnologies.ai directly.'; + msg.style.color = '#c44'; + } + } catch(err) { + msg.style.display = 'block'; + msg.textContent = 'Connection error. Email developers@neurontechnologies.ai directly.'; + msg.style.color = '#c44'; + } + btn.disabled = false; + btn.textContent = 'Send interest →'; + }); +})()") +} diff --git a/src/js/nav.el b/src/js/nav.el new file mode 100644 index 0000000..8c3ecc0 --- /dev/null +++ b/src/js/nav.el @@ -0,0 +1,56 @@ +// nav.el -- Navigation hamburger menu and Mission dropdown. +// Compiled with: elc --target=js --bundle --minify --obfuscate + +fn main() -> Void { + native_js("(function() { + var btn = document.getElementById('nav-hamburger'); + var menu = document.getElementById('nav-mobile'); + var nav = document.getElementById('nav'); + if (!btn || !menu) return; + + function close() { + menu.classList.remove('open'); + btn.setAttribute('aria-expanded', 'false'); + } + function open() { + menu.classList.add('open'); + btn.setAttribute('aria-expanded', 'true'); + } + function toggle() { + if (menu.classList.contains('open')) { close(); } else { open(); } + } + + btn.addEventListener('click', function(e) { e.stopPropagation(); toggle(); }); + + var ddBtn = document.querySelector('.nav-dropdown-btn'); + var dd = document.querySelector('.nav-dropdown'); + if (ddBtn && dd) { + ddBtn.addEventListener('click', function(e) { + e.stopPropagation(); + var isOpen = dd.classList.contains('open'); + dd.classList.toggle('open'); + ddBtn.setAttribute('aria-expanded', isOpen ? 'false' : 'true'); + }); + dd.querySelectorAll('.nav-dropdown-item').forEach(function(a) { + a.addEventListener('click', function() { dd.classList.remove('open'); }); + }); + document.addEventListener('click', function() { dd.classList.remove('open'); }); + } + + menu.querySelectorAll('a').forEach(function(a) { + a.addEventListener('click', close); + }); + + document.addEventListener('click', function(e) { + if (!nav.contains(e.target)) { close(); } + }); + + document.addEventListener('keydown', function(e) { + if (e.key === 'Escape') { close(); } + }); + + window.addEventListener('resize', function() { + if (window.innerWidth > 1060) { close(); } + }); +})()") +} diff --git a/src/js/styles.el b/src/js/styles.el new file mode 100644 index 0000000..694c0b5 --- /dev/null +++ b/src/js/styles.el @@ -0,0 +1,99 @@ +// styles.el -- Landing page JS: nav scroll, scroll-reveal, founding counter polling, +// checkout button routing. +// Compiled with: elc --target=js --bundle --minify --obfuscate + +fn main() -> Void { + native_js("(function() { + 'use strict'; + + // Nav scroll effect + var nav = document.getElementById('nav'); + if (nav) { + window.addEventListener('scroll', function() { + if (window.scrollY > 40) { + nav.classList.add('scrolled'); + } else { + nav.classList.remove('scrolled'); + } + }, { passive: true }); + } + + // Auto-open chat if ?open=chat in URL + if (typeof URLSearchParams !== 'undefined' && new URLSearchParams(window.location.search).get('open') === 'chat') { + setTimeout(function() { if (typeof neuronDemoToggle === 'function') neuronDemoToggle(); }, 600); + } + + // Scroll reveal via IntersectionObserver + var revealEls = document.querySelectorAll('.reveal'); + if ('IntersectionObserver' in window) { + var observer = new IntersectionObserver(function(entries) { + entries.forEach(function(entry) { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + observer.unobserve(entry.target); + } + }); + }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' }); + revealEls.forEach(function(el) { observer.observe(el); }); + } else { + revealEls.forEach(function(el) { el.classList.add('visible'); }); + } + + // Founding counter polling + var prevSold = null; + function updateFoundingUI(data) { + var remaining = data.remaining; + var sold = data.sold; + var total = data.total; + var pct = Math.round((sold / total) * 100); + var flash = prevSold !== null && sold > prevSold; + prevSold = sold; + + var spotLabel = document.querySelector('.founding-spots-label'); + if (spotLabel) spotLabel.textContent = 'Only ' + remaining + ' left'; + var spotFill = document.querySelector('.founding-spots-fill'); + if (spotFill) spotFill.style.width = pct + '%'; + var spotSub = document.querySelector('.founding-spots-sub'); + if (spotSub) spotSub.textContent = sold + ' of ' + total + ' claimed'; + + var bannerCount = document.querySelector('.founding-banner-count'); + if (bannerCount) { + bannerCount.textContent = remaining; + if (flash) { + bannerCount.style.color = '#0078D4'; + setTimeout(function() { bannerCount.style.color = ''; }, 1200); + } + } + var bannerFill = document.querySelector('.founding-banner-fill'); + if (bannerFill) bannerFill.style.width = pct + '%'; + } + + function pollFoundingCount() { + fetch('/api/founding-count') + .then(function(r) { return r.json(); }) + .then(function(data) { updateFoundingUI(data); }) + .catch(function() {}); + } + pollFoundingCount(); + setInterval(pollFoundingCount, 90000); + + // Hide chat widget on non-marketing pages + if (window.location.pathname.indexOf('/checkout') === 0 || + window.location.pathname.indexOf('/account') === 0 || + window.location.pathname.indexOf('/legal') === 0 || + window.location.pathname.indexOf('/marketplace/success') === 0) { + var demoBtn = document.getElementById('neuron-demo-btn'); + var demoPanel = document.getElementById('neuron-demo-panel'); + if (demoBtn) demoBtn.style.display = 'none'; + if (demoPanel) demoPanel.style.display = 'none'; + } + + // Checkout buttons + var checkoutBtns = document.querySelectorAll('[data-checkout]'); + checkoutBtns.forEach(function(btn) { + btn.addEventListener('click', function() { + window.location.href = '/checkout?plan=' + btn.getAttribute('data-checkout'); + }); + }); +})()") +} diff --git a/src/main.el b/src/main.el index 2a4c0c4..8ca4a48 100644 --- a/src/main.el +++ b/src/main.el @@ -341,7 +341,7 @@ body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;bac Try Neuron ↗ - + " } @@ -843,6 +843,19 @@ fn handle_request(method: String, path: String, body: String) -> String { return content } + // ── Compiled client-side JS: /js/* ─────────────────────────────────────── + // Served from dist/js/ (compiled by elc --target=js at build time). + // LANDING_ROOT/js maps to the dist/js output directory in the image. + if str_starts_with(path, "/js/") { + let rel: String = str_slice(path, 4, str_len(path)) + let abs: String = src_dir + "/js/" + rel + let content: String = read_asset(abs) + if str_eq(content, "") { + return "{\"__status__\":404,\"error\":\"not found\"}" + } + return content + } + // ── Brand assets: /brand/* ──────────────────────────────────────────────── if str_starts_with(path, "/brand/") { let rel: String = str_slice(path, 7, str_len(path)) @@ -1073,16 +1086,36 @@ fn handle_request(method: String, path: String, body: String) -> String { if str_eq(msg, "") { return "{\"error\":\"message required\"}" } - // Rate limit: 25 requests per uid per hour (stored in process state) + // Rate limit: 10 chats per uid per day (UTC day, keyed by uid). + // State key: "__rl_" → "|" + // day_number = unix_timestamp / 86400 (integer UTC day) + // Returns rate_limited JSON with reset_at (next midnight UTC) so + // the frontend can show a real countdown. let rate_uid: String = json_get(body, "uid") if !str_eq(rate_uid, "") { - let rate_key: String = "__rate__" + rate_uid - let rate_val: String = state_get(rate_key) - let rate_count: Int = if str_eq(rate_val, "") { 0 } else { str_to_int(rate_val) } - if rate_count >= 25 { - return "{\"response\":\"You've hit the rate limit. Come back in an hour.\"}" + let now_ts: Int = unix_timestamp() + let today_day: Int = now_ts / 86400 + let next_reset: Int = (today_day + 1) * 86400 + let rl_key: String = "__rl_" + rate_uid + let rl_val: String = state_get(rl_key) + let rl_count: Int = 0 + let rl_day: Int = 0 + if !str_eq(rl_val, "") { + // format: "count|day" + let parts: [String] = str_split(rl_val, "|") + if native_list_len(parts) >= 2 { + let rl_count = str_to_int(native_list_get(parts, 0)) + let rl_day = str_to_int(native_list_get(parts, 1)) + } } - state_set(rate_key, int_to_str(rate_count + 1)) + // Reset count if it's a new day + if rl_day != today_day { + let rl_count = 0 + } + if rl_count >= 10 { + return "{\"rate_limited\":true,\"reset_at\":" + int_to_str(next_reset) + "}" + } + state_set(rl_key, int_to_str(rl_count + 1) + "|" + int_to_str(today_day)) } // Turnstile: verify on first message only (tokens are single-use). // Per-message verification breaks chat flow. Forms get full verification. @@ -1890,6 +1923,7 @@ println(" POST /api/checkout → Stripe checkout session") println(" POST /api/webhooks/stripe → Stripe webhook") println(" GET /marketplace/success → post-purchase success page") println(" GET /assets/* → static files") +println(" GET /js/* → compiled client-side JS (dist/js/)") println(" GET /brand/* → brand files") println(" GET /api/supabase-config → public Supabase config (URL + anon key)") println("") diff --git a/src/marketplace.el b/src/marketplace.el index 2e2f6e8..ed89b60 100644 --- a/src/marketplace.el +++ b/src/marketplace.el @@ -132,7 +132,7 @@ fn marketplace() -> String { - + diff --git a/src/nav.el b/src/nav.el index 48c89cb..b4d1e94 100644 --- a/src/nav.el +++ b/src/nav.el @@ -52,6 +52,6 @@ fn nav() -> String { - + " } diff --git a/src/styles.el b/src/styles.el index b4e7e80..2ee5d42 100644 --- a/src/styles.el +++ b/src/styles.el @@ -1839,6 +1839,7 @@ fn page_open() -> String { function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-Y1EE43X9RN'); + gtag('config', 'AW-18140150015'); @@ -1967,7 +1968,7 @@ fn page_open() -> String { fn page_close() -> String { return " - +
@@ -2023,405 +2024,7 @@ fn page_close() -> String {
- + "