xvai-loi 0.1.98 → 0.1.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/co.txt +1 -1
  2. package/package.json +2 -3
  3. package/xvai-loi.js +42 -11
  4. package/sfx/LICENSE-Kenney-CC0.txt +0 -22
  5. package/sfx/bong_001.ogg +0 -0
  6. package/sfx/click_001.ogg +0 -0
  7. package/sfx/click_002.ogg +0 -0
  8. package/sfx/click_003.ogg +0 -0
  9. package/sfx/click_004.ogg +0 -0
  10. package/sfx/click_005.ogg +0 -0
  11. package/sfx/confirmation_001.ogg +0 -0
  12. package/sfx/confirmation_002.ogg +0 -0
  13. package/sfx/confirmation_003.ogg +0 -0
  14. package/sfx/confirmation_004.ogg +0 -0
  15. package/sfx/drop_001.ogg +0 -0
  16. package/sfx/drop_002.ogg +0 -0
  17. package/sfx/drop_003.ogg +0 -0
  18. package/sfx/drop_004.ogg +0 -0
  19. package/sfx/glass_001.ogg +0 -0
  20. package/sfx/glass_002.ogg +0 -0
  21. package/sfx/glass_003.ogg +0 -0
  22. package/sfx/glass_004.ogg +0 -0
  23. package/sfx/glass_005.ogg +0 -0
  24. package/sfx/glass_006.ogg +0 -0
  25. package/sfx/impactPunch_heavy_000.ogg +0 -0
  26. package/sfx/impactPunch_heavy_001.ogg +0 -0
  27. package/sfx/impactPunch_heavy_002.ogg +0 -0
  28. package/sfx/impactPunch_heavy_003.ogg +0 -0
  29. package/sfx/impactPunch_heavy_004.ogg +0 -0
  30. package/sfx/impactPunch_medium_000.ogg +0 -0
  31. package/sfx/impactPunch_medium_001.ogg +0 -0
  32. package/sfx/impactPunch_medium_002.ogg +0 -0
  33. package/sfx/impactPunch_medium_003.ogg +0 -0
  34. package/sfx/impactPunch_medium_004.ogg +0 -0
  35. package/sfx/impactSoft_medium_000.ogg +0 -0
  36. package/sfx/impactSoft_medium_001.ogg +0 -0
  37. package/sfx/impactSoft_medium_002.ogg +0 -0
  38. package/sfx/impactSoft_medium_003.ogg +0 -0
  39. package/sfx/impactSoft_medium_004.ogg +0 -0
  40. package/sfx/maximize_001.ogg +0 -0
  41. package/sfx/maximize_002.ogg +0 -0
  42. package/sfx/maximize_003.ogg +0 -0
  43. package/sfx/maximize_004.ogg +0 -0
  44. package/sfx/maximize_005.ogg +0 -0
  45. package/sfx/maximize_006.ogg +0 -0
  46. package/sfx/maximize_007.ogg +0 -0
  47. package/sfx/maximize_008.ogg +0 -0
  48. package/sfx/maximize_009.ogg +0 -0
  49. package/sfx/pluck_001.ogg +0 -0
  50. package/sfx/pluck_002.ogg +0 -0
  51. package/sfx/select_001.ogg +0 -0
  52. package/sfx/select_002.ogg +0 -0
  53. package/sfx/select_003.ogg +0 -0
  54. package/sfx/select_004.ogg +0 -0
  55. package/sfx/select_005.ogg +0 -0
  56. package/sfx/select_006.ogg +0 -0
  57. package/sfx/select_007.ogg +0 -0
  58. package/sfx/select_008.ogg +0 -0
  59. package/sfx/tick_001.ogg +0 -0
  60. package/sfx/tick_002.ogg +0 -0
  61. package/sfx/tick_004.ogg +0 -0
package/co.txt CHANGED
@@ -1 +1 @@
1
- xvaiLoi121518
1
+ xvaiLoi122031
package/package.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "xvai-loi",
3
- "version": "0.1.98",
3
+ "version": "0.1.100",
4
4
  "description": "Loi dung video (Edit Video Tu Dong) nap vao tool Google Flow qua o cam engine/oCam.ts",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
7
7
  "files": [
8
8
  "xvai-loi.js",
9
9
  "nap.js",
10
- "co.txt",
11
- "sfx/"
10
+ "co.txt"
12
11
  ],
13
12
  "main": "nap.js",
14
13
  "exports": {
package/xvai-loi.js CHANGED
@@ -4541,9 +4541,6 @@ function phatMau(ctx, mau7, loai, t, amp) {
4541
4541
  return true;
4542
4542
  }
4543
4543
 
4544
- // flow-src/engine/render.ts
4545
- var DAU_CHU_HAU_KY = "titles are added in editing";
4546
-
4547
4544
  // flow-src/engine/tiengNhan.ts
4548
4545
  function mui(ctx, f0, f1, t, dai2, amp, kieu) {
4549
4546
  const o = ctx.createOscillator(), g = ctx.createGain();
@@ -4644,6 +4641,7 @@ function tiengNhan(ctx, loai, t, amp) {
4644
4641
  }
4645
4642
 
4646
4643
  // flow-src/engine/hauKy.ts
4644
+ var DAU_CHU_HAU_KY = "titles are added in editing";
4647
4645
  var NHAC_VOL = 0.18;
4648
4646
  var HE_SO_NHAC = 0.3;
4649
4647
  var DINH_POP = 0.35;
@@ -11719,6 +11717,16 @@ function lapCuongMe(o) {
11719
11717
  m.ten = m.ten || cum2(m.c.chu);
11720
11718
  });
11721
11719
  const N = muc.length, ten = muc.map((m) => m.ten);
11720
+ const cuaVideo = (t) => {
11721
+ const K = /* @__PURE__ */ new Set();
11722
+ (kb?.canh || []).forEach((c) => {
11723
+ if (c && c.kieu && c.tu) K.add(c.kieu + ":" + String(c.tu).toLocaleLowerCase("vi"));
11724
+ });
11725
+ (kb?.muc || []).concat(muc).forEach((m) => {
11726
+ if (m && m.ten) K.add("trang:" + String(m.ten).toLocaleLowerCase("vi").replace(/[^\p{L}\p{N}]+/gu, ""));
11727
+ });
11728
+ return K.has(t);
11729
+ };
11722
11730
  const loiDem = W22.map((w) => w.t).join(" "), coBuoc = N >= 3 && (muc.filter((m) => m.cach === "ten").length >= Math.ceil(N * 0.6) || new Set(loiDem.match(/(đầu tiên|thứ hai|thứ ba|thứ tư|thứ năm|số một|số hai|số ba|bước một|bước hai|bước ba|thứ nhất)/g) || []).size >= 2);
11723
11731
  globalThis.__coBuoc = { N, coBuoc, ten: muc.filter((m) => m.cach === "ten").length };
11724
11732
  const sp = [];
@@ -12822,7 +12830,7 @@ function lapCuongMe(o) {
12822
12830
  sp.forEach((x) => {
12823
12831
  if (x.ten) lanCuoi[x.ten] = Math.max(lanCuoi[x.ten] ?? -99, x.f);
12824
12832
  });
12825
- const tatCa = dsTenTaiSan().filter((t) => t.indexOf("trang:") === 0 || t.indexOf("anh:") === 0);
12833
+ const tatCa = dsTenTaiSan().filter((t) => (t.indexOf("trang:") === 0 || t.indexOf("anh:") === 0) && cuaVideo(t));
12826
12834
  const kho6 = tatCa.filter((t) => lanCuoi[t] == null);
12827
12835
  let kI = 0, nThem = 0;
12828
12836
  const spans = [];
@@ -13006,7 +13014,7 @@ function lapCuongMe(o) {
13006
13014
  G4.__vd236 = { bo: nB, lap: nL };
13007
13015
  }
13008
13016
  {
13009
- const tat2 = dsTenTaiSan().filter((t) => /^(anh|trang):/.test(t)), dung = {}, daTren = /* @__PURE__ */ new Set();
13017
+ const tat2 = dsTenTaiSan().filter((t) => /^(anh|trang):/.test(t) && cuaVideo(t)), dung = {}, daTren = /* @__PURE__ */ new Set();
13010
13018
  sp.forEach((x) => {
13011
13019
  if (x.ten) dung[x.ten] = (dung[x.ten] || 0) + 1;
13012
13020
  });
@@ -13375,6 +13383,7 @@ function lapCuongMe(o) {
13375
13383
  }
13376
13384
  if (coBuoc) the(nguon3(f1), nguon3(f1) + Math.min(hetMuc, tong) - 0.05 - f1, { loai: "cmTien", rel: muc.map((m) => +(m.f - f1).toFixed(2)) });
13377
13385
  o.lichCm = globalThis.__lichCm = {
13386
+ dungTen: [...new Set(sp.map((s) => s.ten).filter(Boolean))],
13378
13387
  N,
13379
13388
  muc: muc.map((m) => [+m.f.toFixed(2), m.ten]),
13380
13389
  canh: sp.flatMap((s) => [[+s.f.toFixed(2), s.bo, +s.d.toFixed(2), s.tieu || s.giant || s.chu || ""].join(" ")].concat(s.phong ? [[+s.f.toFixed(2), "phong", 0.75, ""].join(" ")] : [])),
@@ -19011,13 +19020,17 @@ function dsTaiSan(kieu, kb) {
19011
19020
  ICON3D.forEach(([k, v]) => ds2.push(["st3d:" + k, ICON(v), "1:1"]));
19012
19021
  return ds2;
19013
19022
  }
19014
- async function chuanBiTaiSanAI(kieu, kb, bao) {
19015
- const ds2 = dsTaiSan(kieu, kb);
19023
+ async function chuanBiTaiSanAI(kieu, kb, bao, chi) {
19024
+ const ds2 = dsTaiSan(kieu, kb).filter((x) => !chi || !/^(anh|vat|trang):/.test(x[0]) || chi.has(x[0]));
19016
19025
  if (!ds2.length) return 0;
19017
19026
  const d = await db2();
19018
19027
  let ok = 0, loiLien = 0;
19028
+ const t0 = Date.now();
19019
19029
  for (let i = 0; i < ds2.length; i++) {
19020
- bao?.("T\u1EA1o \u1EA3nh t\xE0i s\u1EA3n m\u1EABu (0 credit) " + (i + 1) + "/" + ds2.length + "...");
19030
+ {
19031
+ const tb = i ? (Date.now() - t0) / i : 55e3, con = Math.ceil((ds2.length - i) * tb / 6e4);
19032
+ bao?.("T\u1EA1o \u1EA3nh tr\xE1m (0 credit) " + (i + 1) + "/" + ds2.length + (i >= 2 || ds2.length - i > 3 ? " \xB7 c\xF2n ~" + con + " ph\xFAt" : "") + "...");
19033
+ }
19021
19034
  try {
19022
19035
  if (await mot(d, ds2[i][0], ds2[i][1], ds2[i][2], bao)) ok++;
19023
19036
  loiLien = 0;
@@ -19325,7 +19338,24 @@ async function handleExport(currentProject, setExporting, setExportedBlob, addLo
19325
19338
  }
19326
19339
  await chuanBiKho(kb, window.__wsGocKB || currentProject.speechDraft?.analysis?.words || [], (st) => setExporting({ percent: 1, step: st }));
19327
19340
  await chupTrangThieu(kb, (st) => setExporting({ percent: 1, step: st }));
19328
- await chuanBiTaiSanAI(mauPd.doan, kb, (st) => setExporting({ percent: 1, step: st }));
19341
+ let chiAnh = null;
19342
+ try {
19343
+ const G3 = globalThis;
19344
+ if (localStorage.getItem("xvaiTaoHetAnh") !== "1") {
19345
+ const cu = G3.__taiSanThu, gia2 = new Map(dsTaiSan(mauPd.doan, kb).map((x) => [x[0], { laVideo: false, dai: 0, width: 1080, height: 1920, khung: () => null }]));
19346
+ G3.__taiSanThu = (t) => gia2.get(t) || (cu ? cu(t) : null);
19347
+ try {
19348
+ apDungDoan(currentProject, mauPd, JSON.parse(JSON.stringify(kb)));
19349
+ const d = G3.__lichCm && G3.__lichCm.dungTen;
19350
+ if (Array.isArray(d)) chiAnh = new Set(d);
19351
+ } finally {
19352
+ G3.__taiSanThu = cu;
19353
+ }
19354
+ }
19355
+ } catch (e) {
19356
+ chiAnh = null;
19357
+ }
19358
+ await chuanBiTaiSanAI(mauPd.doan, kb, (st) => setExporting({ percent: 1, step: st }), chiAnh);
19329
19359
  await kiemAnhTao(kb, window.__wsGocKB || currentProject.speechDraft?.analysis?.words || [], (st) => setExporting({ percent: 1, step: st }));
19330
19360
  currentProject = apDungDoan(currentProject, mauPd, kb);
19331
19361
  }
@@ -21057,6 +21087,7 @@ var LOI_URL = "https://cdn.jsdelivr.net/npm/xvai-loi@on-dinh/nap.js";
21057
21087
  var TRONG_LOI = !!globalThis.__xvaiReact;
21058
21088
  try {
21059
21089
  if (!TRONG_LOI) setTimeout(() => {
21090
+ if (globalThis.__nenTang && globalThis.__nenTang.ten === "web") return;
21060
21091
  let u = LOI_URL;
21061
21092
  try {
21062
21093
  u = localStorage.getItem("xvaiLoiUrl") || LOI_URL;
@@ -21083,7 +21114,7 @@ function datCauLenh(a) {
21083
21114
  on2 = true;
21084
21115
  window.addEventListener("message", async (ev) => {
21085
21116
  const d = ev.data;
21086
- if (!d || d.xvaiLoi121518 !== true) return;
21117
+ if (!d || d.xvaiLoi122031 !== true) return;
21087
21118
  const o = String(ev.origin || "");
21088
21119
  if (!(o.indexOf("https://flow.google.com") === 0 || o.indexOf("https://labs.google") === 0)) return;
21089
21120
  const tra = (kq) => {
@@ -21919,7 +21950,7 @@ var Vo = () => {
21919
21950
  window.__loiApp = { p, ex, b, phienBan: PHIEN_BAN };
21920
21951
  const [hienSua, setHienSua] = useState(false);
21921
21952
  const dangXuat = !!(ex && !ex.error && ex.percent < 100) && !window.__loiHienUI;
21922
- return /* @__PURE__ */ shim_react_default.createElement("div", { className: "min-h-screen bg-[#0B1A2D] text-[#E6EEF8]" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "sticky top-0 z-40 h-12 bg-[#0B1A2D]/95 backdrop-blur border-b border-[#2C4A73] px-4 flex items-center gap-3" }, /* @__PURE__ */ shim_react_default.createElement("span", { className: "text-[13px] font-black text-[#F6D178] whitespace-nowrap" }, "EDIT VIDEO T\u1EF0 \u0110\u1ED8NG \xB7 L\xD5I M\u1EDAI"), /* @__PURE__ */ shim_react_default.createElement("span", { className: "text-[11px] text-[#A2B2C9] truncate flex-1 min-w-0" }, PHIEN_BAN, " \xB7 ", p.name || "D\u1EF1 \xE1n m\u1EDBi", " \xB7 ", p.timeline ? p.timeline.length : 0, " \u0111o\u1EA1n"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4 + (hienSua ? " ring-2 ring-[#F6D178]" : ""), onClick: () => setHienSua((v) => !v) }, "S\u1EEDa l\u1ECBch"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4, onClick: () => handleExportProject(p, toast), disabled: !p.scenes || !p.scenes.length }, "L\u01B0u d\u1EF1 \xE1n"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4, onClick: () => doi(TRONG()) }, "D\u1EF1 \xE1n m\u1EDBi"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4, onClick: () => window.__loiTat && window.__loiTat() }, "V\u1EC1 tool c\u0169")), bao && /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto px-8 pt-3 text-[12px] text-[#F6D178]" }, bao), hienSua && /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto px-8 pt-3" }, /* @__PURE__ */ shim_react_default.createElement(SuaLich, { ten: String(p.name || "du-an"), onDong: () => setHienSua(false) })), dangXuat && /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto px-8 pt-6 text-[13px] text-[#E6EEF8]" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "rounded-xl border border-[#2C4A73] p-4" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "font-black text-[#F6D178]" }, "\u0110ANG D\u1EF0NG PHIM\u2026 ", ex && ex.percent > 0 ? Math.round(ex.percent) + "%" : ""), /* @__PURE__ */ shim_react_default.createElement("div", { className: "mt-1 text-[12px] text-[#A2B2C9] break-words" }, String(ex && ex.step || "")), /* @__PURE__ */ shim_react_default.createElement("div", { className: "mt-2 text-[11px] text-[#A2B2C9]" }, "Giao di\u1EC7n t\u1EA1m \u1EA9n \u0111\u1EC3 d\u1EF1ng nhanh h\u01A1n (\u0111o 09/10: nhanh ~5\xD7). C\xF3 th\u1EC3 chuy\u1EC3n tab kh\xE1c, \u0111\u1EEBng t\u1EA3i l\u1EA1i trang."))), /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto w-full p-6", style: dangXuat ? { display: "none" } : void 0 }, /* @__PURE__ */ shim_react_default.createElement(StudioEdit, { project: p, setProject: setP, exporting: ex, blob: b, onExport: xuat, onDownload: tai, onOpenVoice: () => toast("Gi\u1ECDng \u0111\u1ECDc AI: d\xF9ng tool c\u0169") })));
21953
+ return /* @__PURE__ */ shim_react_default.createElement("div", { className: "min-h-screen bg-[#0B1A2D] text-[#E6EEF8]" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "sticky top-0 z-40 h-12 bg-[#0B1A2D]/95 backdrop-blur border-b border-[#2C4A73] px-4 flex items-center gap-3" }, /* @__PURE__ */ shim_react_default.createElement("span", { className: "text-[13px] font-black text-[#F6D178] whitespace-nowrap" }, "EDIT VIDEO T\u1EF0 \u0110\u1ED8NG \xB7 L\xD5I M\u1EDAI"), /* @__PURE__ */ shim_react_default.createElement("span", { className: "text-[11px] text-[#A2B2C9] truncate flex-1 min-w-0" }, PHIEN_BAN, " \xB7 ", p.name || "D\u1EF1 \xE1n m\u1EDBi", " \xB7 ", p.timeline ? p.timeline.length : 0, " \u0111o\u1EA1n"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4 + (hienSua ? " ring-2 ring-[#F6D178]" : ""), onClick: () => setHienSua((v) => !v) }, "S\u1EEDa l\u1ECBch"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4, onClick: () => handleExportProject(p, toast), disabled: !p.scenes || !p.scenes.length }, "L\u01B0u d\u1EF1 \xE1n"), /* @__PURE__ */ shim_react_default.createElement("button", { className: nut4, onClick: () => doi(TRONG()) }, "D\u1EF1 \xE1n m\u1EDBi")), bao && /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto px-8 pt-3 text-[12px] text-[#F6D178]" }, bao), hienSua && /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto px-8 pt-3" }, /* @__PURE__ */ shim_react_default.createElement(SuaLich, { ten: String(p.name || "du-an"), onDong: () => setHienSua(false) })), dangXuat && /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto px-8 pt-6 text-[13px] text-[#E6EEF8]" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "rounded-xl border border-[#2C4A73] p-4" }, /* @__PURE__ */ shim_react_default.createElement("div", { className: "font-black text-[#F6D178]" }, "\u0110ANG D\u1EF0NG PHIM\u2026 ", ex && ex.percent > 0 ? Math.round(ex.percent) + "%" : ""), /* @__PURE__ */ shim_react_default.createElement("div", { className: "mt-1 text-[12px] text-[#A2B2C9] break-words" }, String(ex && ex.step || "")), /* @__PURE__ */ shim_react_default.createElement("div", { className: "mt-2 text-[11px] text-[#A2B2C9]" }, "Giao di\u1EC7n t\u1EA1m \u1EA9n \u0111\u1EC3 d\u1EF1ng nhanh h\u01A1n (\u0111o 09/10: nhanh ~5\xD7). C\xF3 th\u1EC3 chuy\u1EC3n tab kh\xE1c, \u0111\u1EEBng t\u1EA3i l\u1EA1i trang."))), /* @__PURE__ */ shim_react_default.createElement("div", { className: "max-w-6xl mx-auto w-full p-6", style: dangXuat ? { display: "none" } : void 0 }, /* @__PURE__ */ shim_react_default.createElement(StudioEdit, { project: p, setProject: setP, exporting: ex, blob: b, onExport: xuat, onDownload: tai, onOpenVoice: () => toast("Gi\u1ECDng \u0111\u1ECDc AI: ch\u01B0a c\xF3 trong b\u1EA3n edit") })));
21923
21954
  };
21924
21955
  async function giuThuc() {
21925
21956
  const W4 = window;
@@ -1,22 +0,0 @@
1
-
2
-
3
- Interface Sounds (1.0)
4
-
5
- Created/distributed by Kenney (www.kenney.nl)
6
- Creation date: 11-02-2020
7
-
8
- ------------------------------
9
-
10
- License: (Creative Commons Zero, CC0)
11
- http://creativecommons.org/publicdomain/zero/1.0/
12
-
13
- This content is free to use in personal, educational and commercial projects.
14
- Support us by crediting Kenney or www.kenney.nl (this is not mandatory)
15
-
16
- ------------------------------
17
-
18
- Donate: http://support.kenney.nl
19
- Patreon: http://patreon.com/kenney/
20
-
21
- Follow on Twitter for updates:
22
- http://twitter.com/KenneyNL
package/sfx/bong_001.ogg DELETED
Binary file
package/sfx/click_001.ogg DELETED
Binary file
package/sfx/click_002.ogg DELETED
Binary file
package/sfx/click_003.ogg DELETED
Binary file
package/sfx/click_004.ogg DELETED
Binary file
package/sfx/click_005.ogg DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
package/sfx/drop_001.ogg DELETED
Binary file
package/sfx/drop_002.ogg DELETED
Binary file
package/sfx/drop_003.ogg DELETED
Binary file
package/sfx/drop_004.ogg DELETED
Binary file
package/sfx/glass_001.ogg DELETED
Binary file
package/sfx/glass_002.ogg DELETED
Binary file
package/sfx/glass_003.ogg DELETED
Binary file
package/sfx/glass_004.ogg DELETED
Binary file
package/sfx/glass_005.ogg DELETED
Binary file
package/sfx/glass_006.ogg DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/sfx/pluck_001.ogg DELETED
Binary file
package/sfx/pluck_002.ogg DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/sfx/tick_001.ogg DELETED
Binary file
package/sfx/tick_002.ogg DELETED
Binary file
package/sfx/tick_004.ogg DELETED
Binary file