Hack client

FLY, NOCLIP, KILLAURA GUYS THIS IS A BLATANT HACK

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         Hack client
// @namespace    Hackudek client
// @version      0.5
// @description  FLY, NOCLIP, KILLAURA GUYS THIS IS A BLATANT HACK
// @author       JamjestAdolf
// @match        https://bloxd.io/*
// @license      MIT
// ==/UserScript==

(() => {
  // src/utils.js
  var keys = (obj) => Object.keys(obj ?? {}), values = (obj) => keys(obj).map((key) => obj[key]), entries = (obj) => Object.entries(obj ?? {}), attempt = (fn, fallback = null) => {
    try {
      return fn();
    } catch {
      return fallback;
    }
  }, clone = typeof structuredClone == "function" ? structuredClone : (obj) => obj && JSON.parse(JSON.stringify(obj)), style = (el3, props) => Object.assign(el3.style, props), el = (tag) => document.createElement(tag), floor = Math.floor;

  // src/config.js
  var config = {
    keyMap: {},
    killaura: { delay: 120, range: 6.8, jitterRatio: 0.4 },
    scaffold: { interval: 20 },
    slowSwing: { duration: 2e3 }
  }, moduleNames = [
    "Killaura",
    "Scaffold",
    "SlowSwing",
    "CoordsList",
    "ESP",
    "Bhop"
  ], defaults = {
    Killaura: "KeyK",
    ESP: "KeyE",
    CoordsList: "KeyL",
    Scaffold: "KeyG",
    SlowSwing: "KeyH",
    Bhop: "KeyB"
  }, binds = {}, cookieTag = (name) => `poop_${name}_keybind`, readCookie = (name) => document.cookie.split("; ").find((row) => row.startsWith(cookieTag(name) + "="))?.split("=")[1] ?? null, writeCookie = (name, code) => {
    document.cookie = `${cookieTag(name)}=${code}; path=/; max-age=31536000`;
  }, clearKey = (code) => {
    let mod = config.keyMap[code];
    mod && (delete config.keyMap[code], binds[mod] = null);
  }, setBind = (name, code) => {
    let trimmed = (code ?? "").trim();
    if (binds[name] && delete config.keyMap[binds[name]], !trimmed) {
      binds[name] = null, writeCookie(name, "");
      return;
    }
    clearKey(trimmed), binds[name] = trimmed, config.keyMap[trimmed] = name, writeCookie(name, trimmed);
  }, initBinds = () => {
    moduleNames.forEach(
      (name) => setBind(name, readCookie(name) || defaults[name])
    );
  };
  var getBindsSnapshot = () => {
    let snapshot = {};
    return moduleNames.forEach((name) => {
      snapshot[name] = binds[name] ?? "";
    }), snapshot;
  };

  // src/bloxd.js
  var B = {
    wpRequire: null,
    _noa: null,
    bloxdProps: null,
    get noa() {
      return !this._noa && this.bloxdProps && (this._noa = values(this.bloxdProps).find((p) => p?.entities)), this._noa;
    },
    clear() {
      this.wpRequire = null, this._noa = null, this.bloxdProps = null;
    },
    init(force = !1) {
      if (this.wpRequire && !force) return;
      this.clear();
      let descriptors = Object.getOwnPropertyDescriptors(window), chunkKey = Object.keys(descriptors).find((key) => {
        let setter = descriptors[key]?.set;
        return setter && setter.toString().includes("++");
      });
      if (chunkKey || (chunkKey = Object.keys(window).find((key) => {
        let value = window[key];
        return Array.isArray(value) && typeof value.push == "function";
      })), !chunkKey) throw new Error("Unable to locate webpack chunk");
      let chunk = window[chunkKey], randomID = Math.floor(Math.random() * 9999999) + 1;
      chunk.push([[randomID], {}, (req) => this.wpRequire = req]), this.bloxdProps = values(this.findModule("nonBlocksClient:")).find(
        (o) => typeof o == "object"
      ), this._noa = null;
    },
    findModule(str) {
      if (!this.wpRequire) return null;
      let mods = this.wpRequire.m;
      for (let id in mods) {
        let modFn = mods[id];
        if (modFn && modFn.toString().includes(str))
          return this.wpRequire(id);
      }
      return null;
    }
  }, getImpKey = () => attempt(() => {
    let entities = B.noa.entities, target = values(entities)[2];
    return entries(entities).find(([, val]) => val === target)?.[0] ?? null;
  }), getInventoryContext = () => {
    let noa = B.noa;
    if (!noa) return null;
    let entities = noa.entities, impKey = getImpKey();
    if (!impKey) return null;
    let entity = entities[impKey];
    if (!entity) return null;
    let inventoryWrapper = values(entity).find(
      (value) => value?.list?.[0]?._blockItem
    );
    if (!inventoryWrapper?.list?.length) return null;
    let listItem = inventoryWrapper.list[0];
    return { impKey, entity, inventoryWrapper, listItem };
  }, getHeldBlockContext = () => {
    let ctx = getInventoryContext();
    if (!ctx) return null;
    let heldBlock = ctx.listItem?._blockItem;
    if (!heldBlock) return null;
    let playerEntity = values(ctx.listItem).find(
      (value) => typeof value?.checkTargetedBlockCanBePlacedOver == "function"
    );
    if (!playerEntity) return null;
    let worldInstanceKey, worldInstance;
    if (keys(heldBlock).some((key) => {
      let value = heldBlock[key];
      return value && typeof value == "object" ? (worldInstanceKey = key, worldInstance = value, !0) : !1;
    }), !worldInstanceKey || !worldInstance) return null;
    let targetedBlockKey = null, targetedBlock = null;
    return keys(worldInstance).some((key) => {
      let value = worldInstance[key];
      return value && typeof value == "object" && (value.normal || value.position) ? (targetedBlockKey = key, targetedBlock = value, !0) : !1;
    }), {
      heldBlock,
      worldInstanceKey,
      worldInstance,
      targetedBlockKey,
      targetedBlock,
      playerEntity
    };
  }, createSpoofedContext = (context, position) => {
    let {
      heldBlock,
      worldInstanceKey,
      worldInstance,
      targetedBlockKey,
      targetedBlock
    } = context, safeTarget = clone(targetedBlock) || {
      normal: [0, 1, 0],
      position: [...position],
      blockPosition: position.map(floor),
      hitPoint: [...position]
    };
    return safeTarget.position = [...position], safeTarget.blockPosition = safeTarget.blockPosition ?? position.map(floor), safeTarget.normal = safeTarget.normal ?? [0, 1, 0], safeTarget.hitPoint = safeTarget.hitPoint ?? [...position], new Proxy(
      {},
      {
        get(_target, prop) {
          if (prop === worldInstanceKey)
            return new Proxy(worldInstance, {
              get(inner, key) {
                return key === targetedBlockKey ? safeTarget : inner[key];
              }
            });
          if (prop === "checkTargetedBlockCanBePlacedOver") return () => !0;
          let value = heldBlock[prop];
          return typeof value == "function" ? value.bind(heldBlock) : value;
        }
      }
    );
  }, placeSpoofedBlock = (position, context) => {
    let ctx = context ?? getHeldBlockContext();
    return ctx?.heldBlock?.placeBlock ? attempt(() => {
      let spoofed = createSpoofedContext(ctx, position);
      return ctx.heldBlock.placeBlock.call(spoofed), !0;
    }, !1) : !1;
  };

  // src/modules/base.js
  var Module = class {
    constructor(name) {
      this.name = name, this.enabled = !1;
    }
    onEnable() {
    }
    onDisable() {
    }
    onRender() {
    }
    toggle() {
      this.enabled ? this.disable() : this.enable();
    }
    enable() {
      this.enabled || (this.enabled = !0, this.onEnable());
    }
    disable() {
      this.enabled && (this.enabled = !1, this.onDisable());
    }
  }, base_default = Module;

  // src/game.js
  var game = {
    getPosition: (id) => attempt(() => B.noa.entities.getState(id, "position").position),
    getMoveState: (id) => attempt(() => B.noa.entities.getState(id, "movement")),
    get registry() {
      return attempt(() => values(B.noa)[17], {});
    },
    get getSolidity() {
      return values(this.registry)[5];
    },
    get getBlockID() {
      return attempt(
        () => {
          let names = Object.getOwnPropertyNames(
            B.noa.bloxd.constructor.prototype
          );
          return B.noa.bloxd[names[3]].bind(B.noa.bloxd);
        },
        () => 0
      );
    },
    getHeldItemGetter() {
      return attempt(
        () => values(B.noa.entities).find((fn) => {
          if (typeof fn != "function" || fn.length !== 1) return !1;
          let body = fn.toString();
          return body.length < 80 && body.includes(").") && !body.includes("opWrapper");
        })
      );
    },
    safeHeld(id) {
      let getter = this.getHeldItemGetter();
      return getter ? attempt(() => getter(id)) : null;
    },
    get playerList() {
      return attempt(() => {
        let ids = B.noa?.bloxd?.getPlayerIds?.();
        return ids ? Object.values(ids).map(Number).filter((id) => id && id !== 1 && this.safeHeld(id)) : [];
      }, []);
    },
    get doAttack() {
      let held = this.safeHeld(1);
      if (!held) return () => {
      };
      let attack = held.doAttack || held.breakingItem?.doAttack;
      return attack ? attack.bind(held) : () => {
      };
    },
    touchingWall() {
      let pos = this.getPosition(1);
      if (!pos) return !1;
      let r = 0.35, offsets = [
        [0, 0],
        [r, 0],
        [-r, 0],
        [0, r],
        [0, -r],
        [r, r],
        [r, -r],
        [-r, r],
        [-r, -r]
      ], heights = [0, 1, 2], getId = this.getBlockID;
      for (let [ox, oz] of offsets)
        for (let h of heights) {
          let id = attempt(
            () => getId(floor(pos[0] + ox), floor(pos[1]) + h, floor(pos[2] + oz)),
            null
          );
          if (id !== null && this.getSolidity(id)) return !0;
        }
      return !1;
    },
    getHeldItemState() {
      return getHeldBlockContext()?.playerEntity?.heldItemState || null;
    }
  };

  // src/math.js
  var math = {
    norm(v) {
      let s = v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
      if (!s) return v;
      let i = 1 / Math.sqrt(s);
      return [v[0] * i, v[1] * i, v[2] * i];
    },
    dist(a, b) {
      let dx = b[0] - a[0], dy = b[1] - a[1], dz = b[2] - a[2];
      return Math.sqrt(dx * dx + dy * dy + dz * dz);
    },
    distSq(a, b) {
      let dx = b[0] - a[0], dy = b[1] - a[1], dz = b[2] - a[2];
      return dx * dx + dy * dy + dz * dz;
    }
  };

  // src/modules/killaura.js
  var Killaura = class extends base_default {
    constructor() {
      super("Killaura"), this.lastSwing = 0;
    }
    onEnable() {
      this.lastSwing = 0;
    }
    onRender() {
      let now = Date.now(), baseDelay = config.killaura.delay, jitter = baseDelay * config.killaura.jitterRatio * (Math.random() - 0.5), effectiveDelay = Math.max(25, baseDelay + jitter);
      if (now - this.lastSwing < effectiveDelay)
        return;
      this.lastSwing = now;
      let playerPosition = game.getPosition(1);
      if (!playerPosition)
        return;
      let killRadius = config.killaura.range, killRadiusSq = killRadius * killRadius;
      game.playerList.forEach((playerId, index) => {
        let enemyPos = game.getPosition(playerId);
        if (!enemyPos || math.distSq(playerPosition, enemyPos) > killRadiusSq)
          return;
        let vector = math.norm([
          enemyPos[0] - playerPosition[0],
          enemyPos[1] - playerPosition[1],
          enemyPos[2] - playerPosition[2]
        ]);
        try {
          game.doAttack(vector, playerId.toString(), "BodyMesh");
          let safeHeld = game.safeHeld(1);
          safeHeld?.trySwingBlock && safeHeld.trySwingBlock();
          let moveState2 = game.getMoveState(1);
          moveState2?.setArmsAreSwinging && moveState2.setArmsAreSwinging();
        } catch (error) {
          console.debug("[KILLAURA] Killaura attack failed:", error), console.error("[KILLAURA] Error details:", error.message, error.stack);
        }
      });
    }
  }, killaura_default = Killaura;

  // src/modules/scaffold.js
  var Scaffold = class extends base_default {
    constructor() {
      super("Scaffold"), this.interval = null;
    }
    onEnable() {
      this.startInterval();
    }
    onDisable() {
      clearInterval(this.interval), this.interval = null;
    }
    startInterval() {
      clearInterval(this.interval);
      let delay = Math.max(5, config.scaffold?.interval ?? 20);
      this.interval = setInterval(() => this.enabled && this.tryPlace(), delay), this.tryPlace();
    }
    tryPlace() {
      let context = getHeldBlockContext();
      if (!context?.playerEntity || context.playerEntity.heldItemState?.heldType !== "CubeBlock") return;
      let pos = game.getPosition(1);
      if (!pos) return;
      let blockX = floor(pos[0]), blockY = floor(pos[1]), blockZ = floor(pos[2]), checkPlace = (x, y, z) => attempt(
        () => context.playerEntity.checkTargetedBlockCanBePlacedOver?.([x, y, z]),
        !1
      ) ? !0 : attempt(() => !game.getSolidity(game.getBlockID(x, y, z)), !1), target = [blockX, blockY - 1, blockZ];
      if (placeSpoofedBlock(target, context) || checkPlace(...target) && placeSpoofedBlock(target, context)) return;
      let dx = pos[0] - blockX, dz = pos[2] - blockZ, offsets = [];
      dx < 0.3 && offsets.push([-1, 0]), dx > 0.7 && offsets.push([1, 0]), dz < 0.3 && offsets.push([0, -1]), dz > 0.7 && offsets.push([0, 1]), offsets.some(([ox, oz]) => {
        let coords = [blockX + ox, blockY - 1, blockZ + oz];
        return checkPlace(...coords) && placeSpoofedBlock(coords, context);
      });
    }
  }, scaffold_default = Scaffold;

  // src/modules/slowswing.js
  var SlowSwing = class extends base_default {
    constructor() {
      super("SlowSwing"), this.slowDuration = config.slowSwing.duration || 2e3, this.normalDuration = 200;
    }
    setSwing(duration) {
      let heldState = game.getHeldItemState();
      heldState && (heldState.swingDuration = duration);
    }
    onEnable() {
      this.setSwing(this.slowDuration);
    }
    onDisable() {
      this.setSwing(this.normalDuration);
    }
  }, slowswing_default = SlowSwing;

  // src/modules/coordsList.js
  var CoordsList = class extends base_default {
    constructor() {
      super("CoordsList"), this.disabled = !0, this.ondisabled = !1;
    }
    onEnable() {
      this.disabled = !1, this.ondisabled = !1;
    }
    onDisable() {
      this.disabled = !0, this.ondisabled = !1;
    }
    onRender() {
      if (!(this.disabled && this.ondisabled) && B?.noa.bloxd?.entityNames)
        try {
          for (let entityId in B.noa.bloxd.entityNames) {
            if (entityId === "1")
              continue;
            let entityData = B.noa.bloxd.entityNames[entityId], positionData = B.noa.entities?.getState?.(entityId, "position");
            if (!positionData || !positionData.position)
              continue;
            let position = positionData.position, x = Math.round(position[0]), y = Math.round(position[1]), z = Math.round(position[2]), baseName = entityData.entityName.replace(/\s*\(\-?\d+,\s*\-?\d+,\s*\-?\d+\)$/, "");
            if (!this.ondisabled && this.disabled) {
              entityData.entityName = baseName, this.ondisabled = !0;
              continue;
            }
            entityData.entityName = `${baseName} (${x}, ${y}, ${z})`;
          }
        } catch (error) {
          console.error("Error updating player coords:", error);
        }
    }
  }, coordsList_default = CoordsList;

  // src/modules/esp.js
  var ESP = class extends base_default {
    constructor() {
      super("ESP"), this.interval = null;
    }
    update(state) {
      if (!B.noa) return;
      let rendering = values(B.noa)[12];
      if (!rendering) return;
      let thinMeshes = values(rendering).find(
        (value) => value?.thinMeshes
      )?.thinMeshes;
      if (!Array.isArray(thinMeshes)) return;
      let renderingGroupId = state ? 2 : 0;
      for (let item of thinMeshes) {
        let mesh = item?.meshVariations?.__DEFAULT__?.mesh;
        mesh && typeof mesh.renderingGroupId == "number" && (mesh.renderingGroupId = renderingGroupId);
      }
    }
    onEnable() {
      this.update(!0), this.interval = setInterval(() => this.update(!0), 300);
    }
    onDisable() {
      clearInterval(this.interval), this.interval = null, this.update(!1);
    }
    onRender() {
      this.enabled && this.update(!0);
    }
  }, esp_default = ESP;

  // src/modules/bhop.js
  var bhopInterval = null, moveState = null, movement = null, bunnyhopping = !1;
  function initBhop() {
    moveState = game.getMoveState(1), moveState && (movement = attempt(() => B.noa.entities.getState(1, "movement")));
  }
  function bhopTick() {
    if (!moveState) return;
    let touchScreen = !1;
    moveState._isAlive ? moveState.crouching || moveState.speed < 0.05 || movement?._flying ? bunnyhopping && (touchScreen ? moveState.jumping = !1 : B.noa?.inputs?.state && (B.noa.inputs.state.jump = !1), bunnyhopping = !1) : (bunnyhopping || (bunnyhopping = !0), movement?.isOnGround?.() ? touchScreen ? moveState.jumping = !0 : B.noa?.inputs?.state && (B.noa.inputs.state.jump = !0) : touchScreen ? moveState.jumping = !1 : B.noa?.inputs?.state && (B.noa.inputs.state.jump = !1)) : moveState.speedMultiplier?.multipliers && (moveState.speedMultiplier.multipliers.bhop = 1);
  }
  function startBhop() {
    bhopInterval || (initBhop(), bhopInterval = setInterval(() => {
      moveState || initBhop(), bhopTick();
    }, 1));
  }
  function stopBhop() {
    bhopInterval && (clearInterval(bhopInterval), bhopInterval = null), moveState?.speedMultiplier?.multipliers && (moveState.speedMultiplier.multipliers.bhop = 1), bunnyhopping = !1, moveState = null, movement = null;
  }
  var Bhop = class extends base_default {
    constructor() {
      super("Bhop");
    }
    onEnable() {
      startBhop();
    }
    onDisable() {
      stopBhop();
    }
  };

  // src/modules/index.js
  var modules = [
    new killaura_default(),
    new scaffold_default(),
    new slowswing_default(),
    new coordsList_default(),
    new esp_default(),
    new Bhop()
  ];

  // src/ui.js
  var setupUI = (modules2, reinject2) => {
    let listBox = el("div");
    style(listBox, {
      position: "fixed",
      top: "10px",
      left: "40px",
      background: "rgba(0,0,0,.6)",
      color: "#fff",
      padding: "6px 8px",
      borderRadius: "4px",
      font: "12px sans-serif",
      zIndex: 999999
    }), document.body.appendChild(listBox);
    let toggleBtn = el("button");
    toggleBtn.textContent = "\u2261", style(toggleBtn, {
      position: "fixed",
      top: "10px",
      left: "10px",
      width: "24px",
      height: "24px",
      cursor: "pointer",
      zIndex: 1e6
    }), document.body.appendChild(toggleBtn), toggleBtn.onclick = () => {
      listBox.style.display = listBox.style.display === "none" ? "block" : "none";
    };
    let gear = el("button");
    gear.textContent = "\u2699\uFE0F", style(gear, {
      position: "fixed",
      top: "10px",
      right: "10px",
      cursor: "pointer",
      zIndex: 1e6
    }), document.body.appendChild(gear);
    let panel2 = el("div");
    style(panel2, {
      position: "fixed",
      top: "45px",
      right: "10px",
      background: "rgba(0,0,0,.8)",
      color: "#fff",
      padding: "10px",
      borderRadius: "5px",
      font: "12px sans-serif",
      zIndex: 1e6,
      display: "none",
      overflow: "scroll"
    }), panel2.innerHTML = `
    <h2><strong>Generic Skid Clientâ‚‚</strong></h2>
<details>
    <summary><strong>Keybinds</strong></summary>
    <div id="kb"></div>
</details>
    <hr>
<details>
  <summary>
<strong>Killaura</strong>
</summary>
<br>
Delay <input id="ka-d" type="number" style="width:60px"> ms<br>
Range <input id="ka-r" type="number" style="width:60px"><br>
Jitter Ratio <input id="ka-j" type="number" step="0.05" style="width:60px">
</details>

    <hr>
<details>
<summary>
<strong>Scaffold</strong></summary><br>
Delay <input id="sc-i" type="number" style="width:60px"> ms<br>
</details>
    <hr>
<summary><strong>SlowSwing</strong></<ummary><br>
Duration <input id="ss-d" type="number" style="width:60px"> ms<br>
<hr>
<button id="manual-reinject">Re-Inject Client</button>
  `, document.body.appendChild(panel2), gear.onclick = () => {
      panel2.style.display = panel2.style.display === "none" ? "block" : "none";
    };
    let refreshList2 = () => {
      listBox.innerHTML = "", modules2.forEach((module) => {
        let row = el("div");
        row.textContent = module.name, row.style.cursor = "pointer", row.style.font="18px sans-serif", row.style.color = module.enabled ? "#0f0" : "#f00", row.onclick = () => {
          module.toggle(), refreshList2();
        }, listBox.appendChild(row);
      });
    }, drawKeyInputs2 = () => {
      let kb = panel2.querySelector("#kb");
      kb.innerHTML = "";
      let snapshot = getBindsSnapshot();
      moduleNames.forEach((name) => {
        let row = el("div");
        row.innerHTML = `${name}: <input data-mod="${name}" value="${snapshot[name]}" style="width:80px">`, kb.appendChild(row);
      }), kb.querySelectorAll("input").forEach((input) => {
        input.onchange = (e) => {
          let mod = e.target.dataset.mod;
          setBind(mod, e.target.value), drawKeyInputs2();
        };
      });
    };
    return panel2.querySelector("#manual-reinject").onclick = () => reinject2(refreshList2), {
      panel: panel2,
      refreshList: refreshList2,
      drawKeyInputs: drawKeyInputs2
    };
  };

  // src/listeners.js
  var setupKeyListener = (modules2, refreshList2) => {
    window.addEventListener(
      "keydown",
      (e) => {
        if (["INPUT", "TEXTAREA"].includes(e.target.tagName)) return;
        let modName = config.keyMap[e.code];
        if (!modName) return;
        e.preventDefault();
        let module = modules2.find((m) => m.name === modName);
        module && (module.toggle(), refreshList2());
      },
      !0
    );
  };

  // src/loop.js
  var startLoop = (modules2) => {
    let loop = () => {
      modules2.forEach((module) => module.enabled && module.onRender()), requestAnimationFrame(loop);
    };
    loop();
  };

  // src/index.js
  initBinds();
  attempt(() => B.init());
  window.gensc = { B, modules };
  var reinject = (refreshList2) => {
    try {
      B.init(!0);
    } catch (error) {
      console.warn("Re-inject init failed", error);
    }
    modules.forEach((module) => {
      if (module.enabled)
        try {
          module.onDisable?.();
        } catch (error) {
          console.debug(`Disable ${module.name} failed`, error);
        }
    }), modules.forEach((module) => {
      if (module.enabled)
        try {
          module.onEnable?.();
        } catch (error) {
          console.debug(`Enable ${module.name} failed`, error);
        }
    }), refreshList2();
  }, { panel, refreshList, drawKeyInputs } = setupUI(modules, reinject), delayInput = panel.querySelector("#ka-d"), rangeInput = panel.querySelector("#ka-r"), jitterInput = panel.querySelector("#ka-j"), scaffoldDelayInput = panel.querySelector("#sc-i"), slowSwingDurationInput = panel.querySelector("#ss-d");
  delayInput && (delayInput.value = config.killaura.delay, delayInput.onchange = (e) => config.killaura.delay = +e.target.value);
  rangeInput && (rangeInput.value = config.killaura.range, rangeInput.onchange = (e) => config.killaura.range = +e.target.value);
  jitterInput && (jitterInput.value = config.killaura.jitterRatio, jitterInput.onchange = (e) => config.killaura.jitterRatio = +e.target.value);
  scaffoldDelayInput && (scaffoldDelayInput.value = config.scaffold.interval, scaffoldDelayInput.onchange = (e) => config.scaffold.interval = +e.target.value);
  slowSwingDurationInput && (slowSwingDurationInput.value = config.slowSwing.duration, slowSwingDurationInput.onchange = (e) => config.slowSwing.duration = +e.target.value);
  refreshList();
  drawKeyInputs();
  setupKeyListener(modules, refreshList);
  startLoop(modules);
})();