From f2bddc9071764f60d0d00f2ddaf97ea905082dad Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Wed, 9 Sep 2026 16:17:03 +0000 Subject: [PATCH] runtime: publish CONTEXT-AUTO-20260909T161701Z --- .../CONTEXT-AUTO-20260909T161701Z.json | 1 + .../history/CONTEXT-AUTO-20260909T161701Z.txt | 162 +++++++++++++++ runtime/latest.json | 39 +--- runtime/latest.txt | 196 ++++++++++++++---- 4 files changed, 320 insertions(+), 78 deletions(-) create mode 100644 runtime/history/CONTEXT-AUTO-20260909T161701Z.json create mode 100644 runtime/history/CONTEXT-AUTO-20260909T161701Z.txt diff --git a/runtime/history/CONTEXT-AUTO-20260909T161701Z.json b/runtime/history/CONTEXT-AUTO-20260909T161701Z.json new file mode 100644 index 00000000..f52a22de --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260909T161701Z.json @@ -0,0 +1 @@ +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260909T161701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-09-09T16:17:01Z","finished_at_utc":"2026-09-09T16:17:03Z","reference_register_checked":true,"reference_sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","error_register_checked":true,"error_register_sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} diff --git a/runtime/history/CONTEXT-AUTO-20260909T161701Z.txt b/runtime/history/CONTEXT-AUTO-20260909T161701Z.txt new file mode 100644 index 00000000..7ddc6cd3 --- /dev/null +++ b/runtime/history/CONTEXT-AUTO-20260909T161701Z.txt @@ -0,0 +1,162 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +STATUS=OK +RC=0 +HOST=pve01 +COMPONENT=cluster-context +REFERENCE_SHA[PRIVATE_IP]e5154c41cb[PRIVATE_IP]aca68090be[PRIVATE_IP]bf[PRIVATE_IP]df[PRIVATE_IP] +ERROR_REGISTER_SHA[PRIVATE_IP]ec0f527ed3afeed[PRIVATE_IP]ee[PRIVATE_IP]bbfb[PRIVATE_IP]af4ba7ba0 +OUTPUT_BEGIN +GENERATED_AT_UTC=[PRIVATE_IP]T16:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on + +Quorum information +------------------ +Date: Wed Sep [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.130 +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":110},{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":111},{"cpu":[PRIVATE_IP]722e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":112},{"cpu":0,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":113},{"cpu":[PRIVATE_IP]14531,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":130},{"cpu":[PRIVATE_IP]223593,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"snikket","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":150},{"cpu":[PRIVATE_IP]483347,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":160},{"cpu":[PRIVATE_IP]90386,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":170},{"cpu":[PRIVATE_IP]89817,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":171},{"cpu":[PRIVATE_IP]011178,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":190},{"cpu":[PRIVATE_IP]890576,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/210","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":235166,"vmid":210},{"cpu":[PRIVATE_IP]23961,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/211","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-staging","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":431092,"vmid":211},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]67886,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]57895,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]79604,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":[PRIVATE_IP]},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"backup,vztmpl,import,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"backup,vztmpl,import,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"backup,vztmpl,import,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 20.59% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 9.49% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-retention-gc.service loaded failed failed Homelab owner-aware cloud retention GC + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + SUB → The low-level unit activation state, values depend on unit type. + +1 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Wed [PRIVATE_IP] 19:17:16 MSK 13s Wed [PRIVATE_IP] 19:16:16 MSK 46s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Wed [PRIVATE_IP] 19:17:16 MSK 13s Wed [PRIVATE_IP] 19:12:16 MSK 4min 46s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Wed [PRIVATE_IP] 19:17:16 MSK 13s Wed [PRIVATE_IP] 19:12:16 MSK 4min 46s ago netbird-peers-health.timer netbird-peers-health.service +Wed [PRIVATE_IP] 19:17:36 MSK 33s Wed [PRIVATE_IP] 19:16:32 MSK 30s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Wed [PRIVATE_IP] 19:18:13 MSK 1min 10s Wed [PRIVATE_IP] 19:12:54 MSK 4min 8s ago homelab-health-metrics.timer homelab-health-metrics.service +Wed [PRIVATE_IP] 19:18:54 MSK 1min 51s Wed [PRIVATE_IP] 19:03:54 MSK 13min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Wed [PRIVATE_IP] 19:21:38 MSK 4min 35s Wed [PRIVATE_IP] 18:49:32 MSK 27min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Wed [PRIVATE_IP] 19:23:16 MSK 6min Wed [PRIVATE_IP] 19:13:16 MSK 3min 46s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Wed [PRIVATE_IP] 19:25:54 MSK 8min Wed [PRIVATE_IP] 19:10:54 MSK 6min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Wed [PRIVATE_IP] 19:25:54 MSK 8min Wed [PRIVATE_IP] 19:10:54 MSK 6min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Wed [PRIVATE_IP] 19:30:00 MSK 12min Wed [PRIVATE_IP] 17:30:07 MSK 1h 46min ago homelab-app-cloud-quorum-queue.timer homelab-app-cloud-quorum-queue.service +Wed [PRIVATE_IP] 19:30:00 MSK 12min Wed [PRIVATE_IP] 19:15:07 MSK 1min 55s ago homelab-incident-journal.timer homelab-incident-journal.service +Wed [PRIVATE_IP] 19:30:32 MSK 13min Wed [PRIVATE_IP] 19:15:32 MSK 1min 30s ago homelab-disk-space-health.timer homelab-disk-space-health.service +Wed [PRIVATE_IP] 19:30:44 MSK 13min Wed [PRIVATE_IP] 19:15:07 MSK 1min 55s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Wed [PRIVATE_IP] 19:30:59 MSK 13min Wed [PRIVATE_IP] 19:15:32 MSK 1min 30s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Wed [PRIVATE_IP] 19:31:14 MSK 14min Wed [PRIVATE_IP] 19:15:54 MSK 1min 8s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Wed [PRIVATE_IP] 19:32:39 MSK 15min Wed [PRIVATE_IP] 19:02:54 MSK 14min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Wed [PRIVATE_IP] 19:35:30 MSK 18min Wed [PRIVATE_IP] 19:06:54 MSK 10min ago homelab-backup-audit.timer homelab-backup-audit.service +Wed [PRIVATE_IP] 20:07:08 MSK 50min Wed [PRIVATE_IP] 19:02:25 MSK 14min ago homelab-control-backup.timer homelab-control-backup.service +Wed [PRIVATE_IP] 20:30:41 MSK 1h 13min Wed [PRIVATE_IP] 16:32:54 MSK 2h 44min ago homelab-vm-cloud-quorum-queue.timer homelab-vm-cloud-quorum-queue.service +Wed [PRIVATE_IP] 22:35:54 MSK 3h 18min Wed [PRIVATE_IP] 16:35:54 MSK 2h 41min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 23:18:35 MSK 4h 1min Wed [PRIVATE_IP] 17:13:16 MSK 2h 3min ago homelab-evidence-root.timer homelab-evidence-root.service +Thu [PRIVATE_IP] 00:00:00 MSK 4h 42min Wed [PRIVATE_IP] 00:00:07 MSK 19h ago dpkg-db-backup.timer dpkg-db-backup.service +Thu [PRIVATE_IP] 00:12:22 MSK 4h 55min Wed [PRIVATE_IP] 00:41:12 MSK 18h ago logrotate.timer logrotate.service +Thu [PRIVATE_IP] 00:14:17 MSK 4h 57min Wed [PRIVATE_IP] 00:08:54 MSK 19h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Thu [PRIVATE_IP] 00:15:12 MSK 4h 58min Wed [PRIVATE_IP] 00:11:32 MSK 19h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Thu [PRIVATE_IP] 00:16:01 MSK 4h 58min Wed [PRIVATE_IP] 00:06:07 MSK 19h ago homelab-docker-health.timer homelab-docker-health.service +Thu [PRIVATE_IP] 00:16:50 MSK 4h 59min Wed [PRIVATE_IP] 00:14:16 MSK 19h ago homelab-quality-gate.timer homelab-quality-gate.service +Thu [PRIVATE_IP] 00:42:12 MSK 5h 25min Wed [PRIVATE_IP] 18:38:32 MSK 38min ago homelab-mailru-trash-gc.timer homelab-mailru-trash-gc.service +Thu [PRIVATE_IP] 01:22:35 MSK 6h Wed [PRIVATE_IP] 05:22:58 MSK 13h ago pve-daily-update.timer pve-daily-update.service +Thu [PRIVATE_IP] 03:19:46 MSK 8h Wed [PRIVATE_IP] 15:18:54 MSK 3h 58min ago apt-daily.timer apt-daily.service +Thu [PRIVATE_IP] 03:21:39 MSK 8h Wed [PRIVATE_IP] 03:34:04 MSK 15h ago homelab-backup-retention-gc.timer homelab-backup-retention-gc.service +Thu [PRIVATE_IP] 05:54:58 MSK 10h Wed [PRIVATE_IP] 07:54:16 MSK 11h ago man-db.timer man-db.service +Thu [PRIVATE_IP] 06:36:17 MSK 11h Wed [PRIVATE_IP] 06:54:42 MSK 12h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Thu [PRIVATE_IP] 07:01:18 MSK 11h Wed [PRIVATE_IP] 07:04:54 MSK 12h ago homelab-drift-check.timer homelab-drift-check.service +Thu [PRIVATE_IP] 07:29:10 MSK 12h Wed [PRIVATE_IP] 07:35:42 MSK 11h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Thu [PRIVATE_IP] 07:44:09 MSK 12h Wed [PRIVATE_IP] 07:48:02 MSK 11h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Thu [PRIVATE_IP] 07:55:04 MSK 12h Wed [PRIVATE_IP] 07:51:32 MSK 11h ago homelab-alerting-health.timer homelab-alerting-health.service +Thu [PRIVATE_IP] 07:56:50 MSK 12h Wed [PRIVATE_IP] 07:52:32 MSK 11h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Thu [PRIVATE_IP] 08:00:02 MSK 12h Wed [PRIVATE_IP] 07:55:16 MSK 11h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Thu [PRIVATE_IP] 08:01:45 MSK 12h Wed [PRIVATE_IP] 08:14:24 MSK 11h ago homelab-overall-health.timer homelab-overall-health.service +Thu [PRIVATE_IP] 08:02:41 MSK 12h Wed [PRIVATE_IP] 08:05:54 MSK 11h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Thu [PRIVATE_IP] 08:13:09 MSK 12h Wed [PRIVATE_IP] 08:24:08 MSK 10h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Thu [PRIVATE_IP] 08:24:32 MSK 13h Wed [PRIVATE_IP] 08:12:08 MSK 11h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Thu [PRIVATE_IP] 08:31:30 MSK 13h Wed [PRIVATE_IP] 08:40:33 MSK 10h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Thu [PRIVATE_IP] 08:37:17 MSK 13h Wed [PRIVATE_IP] 08:27:54 MSK 10h ago homelab-capacity-risk.timer homelab-capacity-risk.service +Thu [PRIVATE_IP] 08:38:48 MSK 13h Wed [PRIVATE_IP] 08:46:15 MSK 10h ago homelab-cluster-passport.timer homelab-cluster-passport.service +Thu [PRIVATE_IP] 08:59:12 MSK 13h Wed [PRIVATE_IP] 08:55:16 MSK 10h ago homelab-golden-state-index.timer homelab-golden-state-index.service +Thu [PRIVATE_IP] 10:15:00 MSK 14h Wed [PRIVATE_IP] 10:15:08 MSK 9h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Thu [PRIVATE_IP] 16:47:42 MSK 21h Wed [PRIVATE_IP] 16:47:42 MSK 2h 29min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Sun [PRIVATE_IP] 03:10:21 MSK 3 days Sun [PRIVATE_IP] 03:11:16 MSK 3 days ago e2scrub_all.timer e2scrub_all.service +Sun [PRIVATE_IP] 03:10:35 MSK 3 days Sun [PRIVATE_IP] 03:10:50 MSK 3 days ago xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 07:35:54 MSK 3 days Sun [PRIVATE_IP] 07:57:53 MSK 3 days ago homelab-rotating-boot-drill.timer homelab-rotating-boot-drill.service +Mon [PRIVATE_IP] 00:10:37 MSK 4 days Mon [PRIVATE_IP] 00:08:52 MSK 2 days ago homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 00:30:41 MSK 4 days Mon [PRIVATE_IP] 00:39:53 MSK 2 days ago fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +RUNTIME_MANIFEST_ID=df[PRIVATE_IP]ac9b5abd[PRIVATE_IP]b[PRIVATE_IP]d89496fb2bde[PRIVATE_IP] +EXPERIMENT_ID=5462ee[PRIVATE_IP]ebe[PRIVATE_IP]feb2ad[PRIVATE_IP]1ad87bbac0b8108 +COLLECTION_START_AT=[PRIVATE_IP]T[PRIVATE_IP]:00 +FIRST_COMPLETE_D1_CLOSE=[PRIVATE_IP]T[PRIVATE_IP]:00 +PRODUCTION_LAUNCH_ALLOWED=False +EXECUTION_AUTHORITY=False +RISK_AUTHORITY=False +STAGE_A_HEALTH=AWAITING_PRIMARY_FINALITY +FORENSIC_PREVIOUS_EPOCH_PRESERVED=YES + +## NEWFI_TASK6_AUTH_CHECKPOINT_V[PRIVATE_IP] +- Scope: historical accepted AUTH test, not a current SMTP connection test. +- Newfi approved SMTP account/sender: aleisaev@yandex.ru. +- Endpoint used by accepted test: smtp.yandex.ru:465 with certificate verification; single PLAIN initial response accepted with code 235. +- Evidence: incident ledger ### NEWFI_TASK6_YANDEX_AUTH_V2_OBSERVATION and ### NEWFI_TASK6_AUTH_PROOF_CLOSE_V1. +- No password file written, no application configuration changed, no mail sent by the accepted AUTH test. +- Persistent transport installation and application delivery are not proven by this checkpoint. Task6 is not complete. +- AUTH challenge and missing-file incidents closed; launch/session incident remains OPEN with original cause unproven. +- This update does not change VM211, VM160, routing, board state or Git. +- Other incidents and infrastructure health were not assessed. + + +## NEWFI_PRIVATE_STRUCTURE92_WRONG_MARKER_SCOPE_[PRIVATE_IP] CLOSURE +- Status: CLOSED +- RCA: NEWFI92 inspected the pve01 NEWFI90 attempt marker, which had not been finalized because the outer shell exited immediately after the guest returned RC3 following its successful rollback. The guest marker contained the true final rollback state. +- Correction: NEWFI93 required both the guest FINISHED/ROLLED_BACK record and a fresh exact demo-state readback before reconciling the outer NEWFI90 marker. NEWFI92 itself never reserved an attempt or mutated state. + + +## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] +- Status: OPEN +- Command: NEWFI95 +- Symptom: after the content-structure precheck passed, the pve03 Python wrapper failed to parse at the PHP line beginning with $root. No Portal discovery or application mutation was reached. +- RCA: an outer raw triple-single-quoted guest Python payload contained an inner raw triple-single-quoted PHP payload. The inner delimiter terminated the outer Python string, causing PHP source to be parsed as Python. +- Safety: NEWFI95 was read-only, created no attempt marker, and did not reach the intended nested guest execution. Do not replay NEWFI95. + + +## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] CLOSURE +- Status: CLOSED +- RCA: an inner triple-single-quoted PHP literal terminated the outer triple-single-quoted Python guest payload in NEWFI95. The wrapper therefore failed parsing before the intended Portal discovery executed. +- Correction: NEWFI96 removed the nested Python payload layer entirely and passed one Python program directly to VM211 through qm guest exec stdin. The read-only Portal contract completed with QGA exit 0 and the implementation worktree remained unchanged. +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index 9470183d..f52a22de 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,38 +1 @@ -{ - "schema_version": 1, - "channel": "homelab-runtime", - "command_id": "SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-AUDIT-085R2", - "status": "FAIL", - "rc": 3, - "host": "pve01", - "mode": "read-only", - "component": "gram-support-fleet-footer-ui-readonly-audit-r2", - "started_at_utc": "2026-09-09T16:02:25Z", - "finished_at_utc": "2026-09-09T16:02:37Z", - "reference_register_checked": true, - "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", - "error_register_checked": true, - "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "8dcee3ee82375b43608e16025232e1a2f9b20cec49465145bfb5820a53a98f3f", - "duplicate_failed_command_blocked": false, - "block_reason": null, - "execution_started": true, - "change_declared": false, - "result_contract_valid": true, - "result_contract_status": null, - "result_contract_error": null, - "command_rc": 3, - "changes_made": false, - "rollback_started": false, - "rollback_restored": null, - "mutation_outcome": "NO_MUTATION", - "sanitized": true, - "secrets_included": false, - "private_addresses_included": false, - "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "09d495acea9116d2bbc3431d7af60e65d81c1198066db419f2c86acd054ca8ca", - "sanitized_output_sha256": "09d495acea9116d2bbc3431d7af60e65d81c1198066db419f2c86acd054ca8ca", - "output_truncated_in_json": false, - "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "GRAM_FOOTER_AUDIT_BEGIN\nCOMMAND_ID=SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-AUDIT-085R2\nGRAM_FOOTER_SOURCE={\"addon_candidates\":[],\"branch\":\"main\",\"clean\":true,\"exists\":true,\"git\":true,\"head\":\"0910c8f60796a783ca11af69b1c5ed775ae79ee5\",\"repo\":\"/root/gram-support\",\"selected_addon_dir\":null,\"tracked_count\":3,\"tracked_relevant\":[\"release/FIX4_SHA256.txt\",\"release/GRAM_SUPPORT_FIX4_FINAL.zip\"],\"ui_hits\":[]}\nGRAM_FOOTER_CLUSTER={\"160\":{\"name\":\"forum-prod\",\"node\":\"pve02\",\"status\":\"running\"},\"210\":{\"name\":\"newfi-prod\",\"node\":\"pve01\",\"status\":\"running\"},\"211\":{\"name\":\"newfi-staging\",\"node\":\"pve03\",\"status\":\"running\"}}\nGRAM_FOOTER_VM160={\"host\":\"forum-prod\",\"sites\":[{\"name\":\"codevipe\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/codevipe/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u0424\\u043e\\u0440\\u0443\\u043c CodeVipe\",\"boardUrl\":\"https://codevipe.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/codevipe/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"dsmods\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/dsmods/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u0421\\u0435\\u043a\\u0440\\u0435\\u0442\\u044b \\u0438 \\u043c\\u043e\\u0434\\u044b Doom\",\"boardUrl\":\"https://dsmods.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/dsmods/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"gamevipe\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/gamevipe/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u0424\\u043e\\u0440\\u0443\\u043c GameVipe\",\"boardUrl\":\"https://gamevipe.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/gamevipe/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"hkmods\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/hkmods/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":10,\"max_id\":12},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u041c\\u043e\\u0434\\u044b \\u0434\\u043b\\u044f Hollow Knight\",\"boardUrl\":\"https://hkmods.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/hkmods/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"kingofwolk\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/kingofwolk/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"KingOfWolk\",\"boardUrl\":\"https://kingofwolk.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/kingofwolk/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":1},{\"parent_id\":1,\"style_id\":2,\"title\":\"KingOfWolk Dark\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}},{\"name\":\"zakrutim\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/zakrutim/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"1\",\"boardTitle\":\"\\u041a\\u043e\\u043d\\u0441\\u0435\\u0440\\u0432\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435 \\u0438 \\u0437\\u0430\\u043a\\u0440\\u0443\\u0442\\u043a\\u0438\",\"boardUrl\":\"https://zakrutim.ru\",\"defaultStyleId\":\"2\"},\"root\":\"/var/www/forums/zakrutim/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":0},{\"parent_id\":1,\"style_id\":2,\"title\":\"Default style 2\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}}]}\nGRAM_FOOTER_VM210={\"host\":\"newfi-prod\",\"sites\":[{\"name\":\"newfi-prod\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/newfi/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":0,\"max_id\":0},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"0\",\"boardTitle\":\"\\u041d\\u044c\\u044e\\u0444\\u0414\\u043e\\u043c\",\"boardUrl\":\"https://newfi.ru\",\"defaultStyleId\":\"4\"},\"root\":\"/var/www/forums/newfi/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":1},{\"parent_id\":1,\"style_id\":4,\"title\":\"\\u041d\\u044c\\u044e\\u0444\\u0414\\u043e\\u043c\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}}]}\nGRAM_FOOTER_VM211={\"host\":\"newfi-staging\",\"sites\":[{\"name\":\"newfi-staging\",\"php_rc\":0,\"php_stderr\":\"\",\"root\":\"/var/www/forums/newfi/public\",\"services\":{\"mariadb\":true,\"nginx\":true,\"php8.3-fpm\":true},\"state\":{\"addon\":{\"active\":1,\"addon_id\":\"Gram/Support\",\"is_processing\":0,\"last_pending_action\":null,\"title\":\"Gram Support\",\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"addon_schema\":[\"addon_id\",\"title\",\"version_string\",\"version_id\",\"json_hash\",\"active\",\"is_legacy\",\"is_processing\",\"last_pending_action\"],\"errors\":{\"count\":14,\"max_id\":46},\"extra_less_support_hits\":[],\"ok\":true,\"options\":{\"boardActive\":\"0\",\"boardTitle\":\"Newfi Staging\",\"boardUrl\":\"http://newfi-staging.gram1.ru\",\"defaultStyleId\":\"4\"},\"root\":\"/var/www/forums/newfi/public\",\"styles\":[{\"parent_id\":0,\"style_id\":1,\"title\":\"Default style\",\"user_selectable\":1},{\"parent_id\":1,\"style_id\":4,\"title\":\"Newfi Staging\",\"user_selectable\":1}],\"template_inventory\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"sha256\":\"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad\",\"style_id\":0,\"title\":\"gram_support_staff_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1542,\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}],\"template_mod_schema\":[\"modification_id\",\"addon_id\",\"type\",\"template\",\"modification_key\",\"description\",\"execution_order\",\"enabled\",\"action\",\"find\",\"replace\"],\"template_mods\":[{\"addon_id\":\"Gram/Support\",\"enabled\":1,\"execution_order\":100,\"find\":{\"bytes\":7,\"sample\":\"\",\"sha256\":\"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083\"},\"modification_key\":\"gram_support_launcher\",\"replace\":{\"bytes\":55,\"sample\":\"\\n\",\"sha256\":\"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214\"},\"template\":\"PAGE_CONTAINER\",\"type\":\"public\"}],\"template_schema\":[\"template_id\",\"type\",\"title\",\"style_id\",\"template\",\"template_parsed\",\"addon_id\",\"version_id\",\"version_string\",\"last_edit_date\"],\"ui_templates\":[{\"addon_id\":\"Gram/Support\",\"bytes\":136,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_alert_ticket_event', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_alert_ticket_event', {\\n\\t\\t'public_ref': $alert.extra_data.public_ref\\n\\t}) }}\\n\\n\",\"sha256\":\"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29\",\"style_id\":0,\"title\":\"alert_user_gram_support_evt\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":530,\"hit_lines\":[{\"line\":1,\"text\":\".gramSupport-launcher\"},{\"line\":11,\"text\":\".gramSupport-messageMeta\"},{\"line\":18,\"text\":\".gramSupport-message--internal\"},{\"line\":26,\"text\":\".gramSupport-launcher\"},{\"line\":34,\"text\":\".gramSupport-messageBody\"}],\"sample\":\".gramSupport-launcher\\n{\\n\\tposition: fixed;\\n\\tright: 18px;\\n\\tbottom: 18px;\\n\\tz-index: 500;\\n\\tborder-radius: 999px;\\n\\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\\n}\\n\\n.gramSupport-messageMeta\\n{\\n\\tfont-size: 12px;\\n\\topacity: .7;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.gramSupport-message--internal\\n{\\n\\tborder-left: 4px solid currentColor;\\n\\topacity: .9;\\n}\\n\\n@media (max-width: 650px)\\n{\\n\\t.gramSupport-launcher\\n\\t{\\n\\t\\tright: 12px;\\n\\t\\tbottom: 12px;\\n\\t\\tmax-width: calc(100vw - 24px);\\n\\t}\\n}\\n\\n.gramSupport-messageBody\\n{\\n\\twhite-space: pre-wrap;\\n\\toverflow-wrap: anywhere;\\n}\\n\",\"sha256\":\"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed\",\"style_id\":0,\"title\":\"gram_support.less\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":493,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_access_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":7,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_access_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969\",\"style_id\":0,\"title\":\"gram_support_access\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":601,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_my_tickets') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"\"},{\"line\":15,\"text\":\"
{{ phrase('gram_support_no_tickets') }}
\"}],\"sample\":\"{{ phrase('gram_support_my_tickets') }}\\n\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ phrase('gram_support_no_tickets') }}
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a\",\"style_id\":0,\"title\":\"gram_support_account\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1488,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_create_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":4,\"text\":\"\"},{\"line\":12,\"text\":\"label=\\\"{{ phrase('gram_support_category') }}\\\">\"},{\"line\":13,\"text\":\"{{ phrase('gram_support_category_technical') }}\"},{\"line\":14,\"text\":\"{{ phrase('gram_support_category_account') }}\"},{\"line\":15,\"text\":\"{{ phrase('gram_support_category_content') }}\"},{\"line\":16,\"text\":\"{{ phrase('gram_support_category_other') }}\"},{\"line\":19,\"text\":\"label=\\\"{{ phrase('gram_support_subject') }}\\\" />\"},{\"line\":21,\"text\":\"label=\\\"{{ phrase('gram_support_description') }}\\\" />\"},{\"line\":23,\"text\":\"label=\\\"{{ phrase('gram_support_screenshot_optional') }}\\\" />\"},{\"line\":29,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_create_title') }}\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t{{ phrase('gram_support_category_technical') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_account') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_content') }}\\n\\t\\t\\t\\t{{ phrase('gram_support_category_other') }}\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t\\n\\t
\\n
\\n\",\"sha256\":\"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287\",\"style_id\":0,\"title\":\"gram_support_create\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":707,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_created_title') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":9,\"text\":\"

{{ phrase('gram_support_save_access_code') }}

\"},{\"line\":17,\"text\":\"{{ phrase('gram_support_open_ticket') }}\"}],\"sample\":\"{{ phrase('gram_support_created_title') }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{ phrase('gram_support_save_access_code') }}

\\n\\t\\t\\t\\t{{ $accessCode }}\\n\\t\\t\\t\\t{{ phrase('copy') }}\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_open_ticket') }}\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4\",\"style_id\":0,\"title\":\"gram_support_created_guest\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":254,\"hit_lines\":[{\"line\":1,\"text\":\"\"},{\"line\":2,\"text\":\"\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_open_support') }}\"}],\"sample\":\"\\n\\t\\n\\t\\t{{ phrase('gram_support_open_support') }}\\n\\t\\n\\n\",\"sha256\":\"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20\",\"style_id\":0,\"title\":\"gram_support_launcher\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":768,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_queue') }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"\"}],\"sample\":\"{{ phrase('gram_support_staff_queue') }}\\n\\n\\n\\n\\n\\n\",\"sha256\":\"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56\",\"style_id\":0,\"title\":\"gram_support_staff_queue\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":1914,\"hit_lines\":[{\"line\":3,\"text\":\"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\"},{\"line\":4,\"text\":\"const STATIC_CACHE = 'gram-support-staff-static-v1';\"},{\"line\":18,\"text\":\".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\"},{\"line\":36,\"text\":\"// SECURITY: all support/ticket/account/admin-like content is network-only.\"},{\"line\":40,\"text\":\"url.pathname.startsWith('/support/') ||\"}],\"sample\":\"'use strict';\\n\\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\\n\\nself.addEventListener('install', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.open(STATIC_CACHE)\\n\\t\\t\\t.then(cache => cache.addAll([OFFLINE_URL]))\\n\\t\\t\\t.then(() => self.skipWaiting())\\n\\t);\\n});\\n\\nself.addEventListener('activate', event => {\\n\\tevent.waitUntil(\\n\\t\\tcaches.keys().then(keys =>\\n\\t\\t\\tPromise.all(keys\\n\\t\\t\\t\\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\\n\\t\\t\\t\\t.map(key => caches.delete(key))\\n\\t\\t\\t)\\n\\t\\t).then(() => self.clients.claim())\\n\\t);\\n});\\n\\nself.addEventListener('fetch', event => {\\n\\tconst request = event.request;\\n\\tif (request.method !== 'GET') {\\n\\t\\treturn;\\n\\t}\\n\\n\\tconst url = new URL(request.url);\\n\\tif (url.origin !== self.location.origin) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// SECURITY: all support/ticket/account/admin-like content is network-only.\\n\\t// Never cache HTML/API responses that can contain ticket data, identities,\\n\\t// access state, internal notes, attachments or staff-only information.\\n\\tconst sensitive =\\n\\t\\turl.pathname.startsWith('/support/') ||\\n\\t\\turl.pathname.startsWith('/account/') ||\\n\\t\\turl.pathname.startsWith('/admin.php') ||\\n\\t\\trequest.headers.get('accept')?.includes('text/html');\\n\\n\\tif (sensitive) {\\n\\t\\tevent.respondWith(\\n\\t\\t\\tfetch(request, {cache: 'no-store'}).catch(() => {\\n\\t\\t\\t\\tif (request.mode === 'navigate') {\\n\\t\\t\\t\\t\\treturn caches.match(OFFLINE_URL);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tthrow new Error('OFFLINE_NETWORK_ONLY');\\n\\t\\t\\t})\\n\\t\\t);\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Same-origin static assets only; stale-while-revalidate.\\n\\tevent.respondWith(\\n\\t\\tcaches.open(STATIC_CACHE).then(cache =>\\n\\t\\t\\tcache.match(request).then(cached => {\\n\\t\\t\\t\\tconst network = fetch(request).then(response => {\\n\\t\\t\\t\\t\\tif (response.ok && response.type === 'basic') {\\n\\t\\t\\t\\t\\t\\tcache.put\",\"sha256\":\"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844\",\"style_id\":0,\"title\":\"gram_support_staff_service_worker\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":2704,\"hit_lines\":[{\"line\":1,\"text\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\"},{\"line\":2,\"text\":\"\"},{\"line\":3,\"text\":\"\"},{\"line\":6,\"text\":\"\"},{\"line\":13,\"text\":\"
\"},{\"line\":14,\"text\":\"
\"},{\"line\":16,\"text\":\" \\u00b7 {{ phrase('gram_support_internal_note') }}\"},{\"line\":18,\"text\":\"
{$message.message}
\"},{\"line\":29,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":41,\"text\":\"\"},{\"line\":44,\"text\":\"\"},{\"line\":45,\"text\":\"\"},{\"line\":47,\"text\":\"{{ phrase('gram_support_internal_note') }}\"},{\"line\":51,\"text\":\"\"},{\"line\":55,\"text\":\"\"},{\"line\":58,\"text\":\"\"},{\"line\":64,\"text\":\"label=\\\"{{ phrase('gram_support_assigned_user_id') }}\\\" />\"}],\"sample\":\"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{ date_time($message.message_date) }}\\n\\t\\t\\t\\t\\t\\t \\u00b7 {{ phrase('gram_support_internal_note') }}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\"},{\"line\":9,\"text\":\"{{ phrase('gram_support_status') }}: {{ $ticket.status }}\"},{\"line\":12,\"text\":\"
\"},{\"line\":13,\"text\":\"
{{ date_time($message.message_date) }}
\"},{\"line\":14,\"text\":\"
{$message.message}
\"},{\"line\":25,\"text\":\"

{{ phrase('gram_support_attachments') }}

\"},{\"line\":38,\"text\":\"\"},{\"line\":42,\"text\":\"label=\\\"{{ phrase('gram_support_reply') }}\\\" />\"},{\"line\":44,\"text\":\"\"}],\"sample\":\"{{ $ticket.public_ref }} \\u2014 {{ $ticket.subject }}\\n\\n\\n
\\n\\t
\\n\\t\\t

{{ $ticket.public_ref }}

\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{ date_time($message.message_date) }}
\\n\\t\\t\\t\\t\\t
{$message.message}
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{ phrase('gram_support_attachments') }}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{$attachment.filename}\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\",\"sha256\":\"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805\",\"style_id\":0,\"title\":\"gram_support_ticket\",\"type\":\"public\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":228,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_registered', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_registered', {\\n\\t'public_ref': $ticket.public_ref\\n}) }}\\n\",\"sha256\":\"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd\",\"style_id\":0,\"title\":\"gram_support_ticket_event\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"},{\"addon_id\":\"Gram/Support\",\"bytes\":250,\"hit_lines\":[{\"line\":2,\"text\":\"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\"},{\"line\":5,\"text\":\"{{ phrase('gram_support_email_ticket_event_body_guest', {\"}],\"sample\":\"\\n\\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\\n\\n\\n{{ phrase('gram_support_email_ticket_event_body_guest', {\\n\\t'public_ref': $ticket.public_ref,\\n\\t'access_url': $accessUrl\\n}) }}\\n\",\"sha256\":\"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176\",\"style_id\":0,\"title\":\"gram_support_ticket_event_guest\",\"type\":\"email\",\"version_id\":1000050,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 3\"}]}}]}\nGRAM_FOOTER_PUBLIC_UI=[{\"board_url\":\"https://codevipe.ru\",\"name\":\"codevipe\",\"root\":{\"bytes\":47231,\"ok\":true,\"sha256\":\"70fe60d06d2f8b745036c16610537b9d04080eefe5c3b4de80f15814fc277bfb\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29161,\"ok\":true,\"status\":200}},{\"board_url\":\"https://dsmods.ru\",\"name\":\"dsmods\",\"root\":{\"bytes\":176072,\"ok\":true,\"sha256\":\"10e1cd2c905f8b7f671fc613b5d2ae3996b3724f1fd9c7593c4b8bf8b70bb192\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29193,\"ok\":true,\"status\":200}},{\"board_url\":\"https://gamevipe.ru\",\"name\":\"gamevipe\",\"root\":{\"bytes\":77668,\"ok\":true,\"sha256\":\"31a4130a1c74a18dc7d1c46b61ae40a43572f47e81856337838a410167732244\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29178,\"ok\":true,\"status\":200}},{\"board_url\":\"https://hkmods.ru\",\"name\":\"hkmods\",\"root\":{\"bytes\":114631,\"ok\":true,\"sha256\":\"eb33809b6b777183ae1d3fb53c0543e25cc9ee8af4bbf4dd64d2ef989777fadf\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29214,\"ok\":true,\"status\":200}},{\"board_url\":\"https://kingofwolk.ru\",\"name\":\"kingofwolk\",\"root\":{\"bytes\":70149,\"ok\":true,\"sha256\":\"403d4ec72a21719e423df2df8fcdb3e32246746b225f01354a4126deed960331\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":30524,\"ok\":true,\"status\":200}},{\"board_url\":\"https://zakrutim.ru\",\"name\":\"zakrutim\",\"root\":{\"bytes\":149970,\"ok\":true,\"sha256\":\"29d3885312dd61d05d492debc034c969e8d7b70b59974298202e2a6339d559dc\",\"status\":200,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":29384,\"ok\":true,\"status\":200}},{\"board_url\":\"https://newfi.ru\",\"name\":\"newfi-prod\",\"root\":{\"bytes\":25076,\"ok\":false,\"sha256\":\"1bdb3ca1ac68e06f1d2bf95fe3b475b399dbe9ca01f0fe51ab24b15976b9a2ad\",\"status\":503,\"truncated\":false},\"support_anchors\":[{\"ancestor_chain\":[{\"class\":\"has-no-js template-error\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"}],\"support_page\":{\"bytes\":25084,\"ok\":false,\"status\":503}}]\nGRAM_FOOTER_VERSION_MAP={\"codevipe\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"dsmods\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"gamevipe\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"hkmods\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"kingofwolk\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"newfi-prod\":{\"active\":1,\"default_style_id\":\"4\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"newfi-staging\":{\"active\":1,\"default_style_id\":\"4\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"},\"zakrutim\":{\"active\":1,\"default_style_id\":\"2\",\"processing\":0,\"version_id\":1000060,\"version_string\":\"1.0.0 Alpha 3 Unified Fix 4\"}}\nGRAM_FOOTER_UI_DRIFT=[{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"codevipe\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"dsmods\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"gamevipe\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"hkmods\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"kingofwolk\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-forum_list\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"zakrutim\"},{\"anchor\":{\"ancestor_chain\":[{\"class\":\"has-no-js template-error\",\"tag\":\"html\"},{\"class\":\"\",\"tag\":\"body\"}],\"class\":\"gramSupport-launcher button button--primary\",\"href_path\":\"/support/create\",\"id\":\"\",\"tag\":\"a\",\"text\":\"\\u041f\\u043e\\u0434\\u0434\\u0435\\u0440\\u0436\\u043a\\u0430\"},\"issue\":\"SUPPORT_ANCHOR_FACT\",\"site\":\"newfi-prod\"}]\nGRAM_FOOTER_COLLECTION_HOLDS=[\"ROOT_HTTP:newfi-prod:503\",\"SUPPORT_HTTP:newfi-prod:503\"]\nGRAM_FOOTER_SOURCE_LAYOUT={\"addon_candidates\":[],\"selected_addon_dir\":null,\"tracked_count\":3,\"tracked_relevant\":[\"release/FIX4_SHA256.txt\",\"release/GRAM_SUPPORT_FIX4_FINAL.zip\"]}\nGRAM_FOOTER_MUTATION_SCOPE=NONE_READ_ONLY\nGRAM_FOOTER_DECISION=HOLD_COLLECTION_INCOMPLETE\n" -} +{"schema_version":1,"channel":"homelab-runtime","command_id":"CONTEXT-AUTO-20260909T161701Z","status":"OK","rc":0,"host":"pve01","mode":"read-only","component":"cluster-context","started_at_utc":"2026-09-09T16:17:01Z","finished_at_utc":"2026-09-09T16:17:03Z","reference_register_checked":true,"reference_sha256":"5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66","error_register_checked":true,"error_register_sha256":"3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0","changes_made":false,"sanitized":true,"secrets_included":false,"private_addresses_included":false,"output":"AUTOMATIC_CLUSTER_CONTEXT_REFRESH=OK"} diff --git a/runtime/latest.txt b/runtime/latest.txt index 8d60ec67..7ddc6cd3 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,46 +1,162 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-AUDIT-085R2 -STATUS=FAIL -RC=3 +COMMAND_ID=CONTEXT-AUTO-[PRIVATE_IP]701Z +STATUS=OK +RC=0 HOST=pve01 -MODE=read-only -COMPONENT=gram-support-fleet-footer-ui-readonly-audit-r2 -REFERENCE_REGISTER_CHECK=OK -REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 -ERROR_REGISTER_CHECK=OK -ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=8dcee3ee82375b43608e16025232e1a2f9b20cec49465145bfb5820a53a98f3f -DUPLICATE_FAILED_COMMAND_BLOCKED=false -EXECUTION_STARTED=true -CHANGE_DECLARED=false -RESULT_CONTRACT_VALID=true -RESULT_CONTRACT_STATUS=NOT_APPLICABLE -RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=3 -CHANGES_MADE=false -ROLLBACK_STARTED=false -ROLLBACK_RESTORED=null -MUTATION_OUTCOME=NO_MUTATION -SANITIZED=yes -SECRETS_INCLUDED=no -PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=09d495acea9116d2bbc3431d7af60e65d81c1198066db419f2c86acd054ca8ca -SANITIZED_OUTPUT_SHA256=09d495acea9116d2bbc3431d7af60e65d81c1198066db419f2c86acd054ca8ca +COMPONENT=cluster-context +REFERENCE_SHA[PRIVATE_IP]e5154c41cb[PRIVATE_IP]aca68090be[PRIVATE_IP]bf[PRIVATE_IP]df[PRIVATE_IP] +ERROR_REGISTER_SHA[PRIVATE_IP]ec0f527ed3afeed[PRIVATE_IP]ee[PRIVATE_IP]bbfb[PRIVATE_IP]af4ba7ba0 OUTPUT_BEGIN -GRAM_FOOTER_AUDIT_BEGIN -COMMAND_ID=SUPPORT-260909-GRAM-XF-FLEET-FOOTER-UI-AUDIT-085R2 -GRAM_FOOTER_SOURCE={"addon_candidates":[],"branch":"main","clean":true,"exists":true,"git":true,"head":"0910c8f60796a783ca11af69b1c5ed775ae79ee5","repo":"/root/gram-support","selected_addon_dir":null,"tracked_count":3,"tracked_relevant":["release/FIX4_SHA256.txt","release/GRAM_SUPPORT_FIX4_FINAL.zip"],"ui_hits":[]} -GRAM_FOOTER_CLUSTER={"160":{"name":"forum-prod","node":"pve02","status":"running"},"210":{"name":"newfi-prod","node":"pve01","status":"running"},"211":{"name":"newfi-staging","node":"pve03","status":"running"}} -GRAM_FOOTER_VM160={"host":"forum-prod","sites":[{"name":"codevipe","php_rc":0,"php_stderr":"","root":"/var/www/forums/codevipe/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":0,"max_id":0},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"1","boardTitle":"\u0424\u043e\u0440\u0443\u043c CodeVipe","boardUrl":"https://codevipe.ru","defaultStyleId":"2"},"root":"/var/www/forums/codevipe/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":0},{"parent_id":1,"style_id":2,"title":"Default style 2","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}},{"name":"dsmods","php_rc":0,"php_stderr":"","root":"/var/www/forums/dsmods/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":0,"max_id":0},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"1","boardTitle":"\u0421\u0435\u043a\u0440\u0435\u0442\u044b \u0438 \u043c\u043e\u0434\u044b Doom","boardUrl":"https://dsmods.ru","defaultStyleId":"2"},"root":"/var/www/forums/dsmods/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":0},{"parent_id":1,"style_id":2,"title":"Default style 2","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}},{"name":"gamevipe","php_rc":0,"php_stderr":"","root":"/var/www/forums/gamevipe/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":0,"max_id":0},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"1","boardTitle":"\u0424\u043e\u0440\u0443\u043c GameVipe","boardUrl":"https://gamevipe.ru","defaultStyleId":"2"},"root":"/var/www/forums/gamevipe/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":0},{"parent_id":1,"style_id":2,"title":"Default style 2","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}},{"name":"hkmods","php_rc":0,"php_stderr":"","root":"/var/www/forums/hkmods/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":10,"max_id":12},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"1","boardTitle":"\u041c\u043e\u0434\u044b \u0434\u043b\u044f Hollow Knight","boardUrl":"https://hkmods.ru","defaultStyleId":"2"},"root":"/var/www/forums/hkmods/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":0},{"parent_id":1,"style_id":2,"title":"Default style 2","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}},{"name":"kingofwolk","php_rc":0,"php_stderr":"","root":"/var/www/forums/kingofwolk/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":0,"max_id":0},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"1","boardTitle":"KingOfWolk","boardUrl":"https://kingofwolk.ru","defaultStyleId":"2"},"root":"/var/www/forums/kingofwolk/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":1},{"parent_id":1,"style_id":2,"title":"KingOfWolk Dark","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}},{"name":"zakrutim","php_rc":0,"php_stderr":"","root":"/var/www/forums/zakrutim/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":0,"max_id":0},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"1","boardTitle":"\u041a\u043e\u043d\u0441\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u043a\u0440\u0443\u0442\u043a\u0438","boardUrl":"https://zakrutim.ru","defaultStyleId":"2"},"root":"/var/www/forums/zakrutim/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":0},{"parent_id":1,"style_id":2,"title":"Default style 2","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}}]} -GRAM_FOOTER_VM210={"host":"newfi-prod","sites":[{"name":"newfi-prod","php_rc":0,"php_stderr":"","root":"/var/www/forums/newfi/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":0,"max_id":0},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"0","boardTitle":"\u041d\u044c\u044e\u0444\u0414\u043e\u043c","boardUrl":"https://newfi.ru","defaultStyleId":"4"},"root":"/var/www/forums/newfi/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":1},{"parent_id":1,"style_id":4,"title":"\u041d\u044c\u044e\u0444\u0414\u043e\u043c","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}}]} -GRAM_FOOTER_VM211={"host":"newfi-staging","sites":[{"name":"newfi-staging","php_rc":0,"php_stderr":"","root":"/var/www/forums/newfi/public","services":{"mariadb":true,"nginx":true,"php8.3-fpm":true},"state":{"addon":{"active":1,"addon_id":"Gram/Support","is_processing":0,"last_pending_action":null,"title":"Gram Support","version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"addon_schema":["addon_id","title","version_string","version_id","json_hash","active","is_legacy","is_processing","last_pending_action"],"errors":{"count":14,"max_id":46},"extra_less_support_hits":[],"ok":true,"options":{"boardActive":"0","boardTitle":"Newfi Staging","boardUrl":"http://newfi-staging.gram1.ru","defaultStyleId":"4"},"root":"/var/www/forums/newfi/public","styles":[{"parent_id":0,"style_id":1,"title":"Default style","user_selectable":1},{"parent_id":1,"style_id":4,"title":"Newfi Staging","user_selectable":1}],"template_inventory":[{"addon_id":"Gram/Support","bytes":136,"sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"sha256":"fa9dc6b120c7a8c38910493d4d49ab847d2f88ecff63f7aadd3f5f45f6809aad","style_id":0,"title":"gram_support_staff_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1542,"sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}],"template_mod_schema":["modification_id","addon_id","type","template","modification_key","description","execution_order","enabled","action","find","replace"],"template_mods":[{"addon_id":"Gram/Support","enabled":1,"execution_order":100,"find":{"bytes":7,"sample":"","sha256":"124207d84bdc8a107cbcc04212a091e85157e09d7bf208f7afb4839498fef083"},"modification_key":"gram_support_launcher","replace":{"bytes":55,"sample":"\n","sha256":"076cbf5ada30272d9b9bb748bd2faf7fe8849cbcd0c4da698939e21cb1f8e214"},"template":"PAGE_CONTAINER","type":"public"}],"template_schema":["template_id","type","title","style_id","template","template_parsed","addon_id","version_id","version_string","last_edit_date"],"ui_templates":[{"addon_id":"Gram/Support","bytes":136,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_alert_ticket_event', {"}],"sample":"\n\t{{ phrase('gram_support_alert_ticket_event', {\n\t\t'public_ref': $alert.extra_data.public_ref\n\t}) }}\n\n","sha256":"cf73ad1b787e1bcb03c160a491ee7f714a4e73b72a118bcaf71bd6396e1e6a29","style_id":0,"title":"alert_user_gram_support_evt","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":530,"hit_lines":[{"line":1,"text":".gramSupport-launcher"},{"line":11,"text":".gramSupport-messageMeta"},{"line":18,"text":".gramSupport-message--internal"},{"line":26,"text":".gramSupport-launcher"},{"line":34,"text":".gramSupport-messageBody"}],"sample":".gramSupport-launcher\n{\n\tposition: fixed;\n\tright: 18px;\n\tbottom: 18px;\n\tz-index: 500;\n\tborder-radius: 999px;\n\tbox-shadow: 0 6px 24px rgba(0, 0, 0, .22);\n}\n\n.gramSupport-messageMeta\n{\n\tfont-size: 12px;\n\topacity: .7;\n\tmargin-bottom: 6px;\n}\n\n.gramSupport-message--internal\n{\n\tborder-left: 4px solid currentColor;\n\topacity: .9;\n}\n\n@media (max-width: 650px)\n{\n\t.gramSupport-launcher\n\t{\n\t\tright: 12px;\n\t\tbottom: 12px;\n\t\tmax-width: calc(100vw - 24px);\n\t}\n}\n\n.gramSupport-messageBody\n{\n\twhite-space: pre-wrap;\n\toverflow-wrap: anywhere;\n}\n","sha256":"1b16b3ea2f1b6d8e382cbaa8875e42b389054527a160c771de2e1675917882ed","style_id":0,"title":"gram_support.less","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":493,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_access_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":7,"text":""}],"sample":"{{ phrase('gram_support_access_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"78a1fd4a1ce75f196f78d04f92e8b2f578531daca66a285fb29aaa50ae757969","style_id":0,"title":"gram_support_access","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":601,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_my_tickets') }}"},{"line":2,"text":""},{"line":9,"text":""},{"line":15,"text":"
{{ phrase('gram_support_no_tickets') }}
"}],"sample":"{{ phrase('gram_support_my_tickets') }}\n\n\n
\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\t
{{ phrase('gram_support_no_tickets') }}
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"75f6f9c1a2e4b61ad4340c0ce00cc40171be17729675116ca4e619acef8cc52a","style_id":0,"title":"gram_support_account","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1488,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_create_title') }}"},{"line":2,"text":""},{"line":4,"text":""},{"line":12,"text":"label=\"{{ phrase('gram_support_category') }}\">"},{"line":13,"text":"{{ phrase('gram_support_category_technical') }}"},{"line":14,"text":"{{ phrase('gram_support_category_account') }}"},{"line":15,"text":"{{ phrase('gram_support_category_content') }}"},{"line":16,"text":"{{ phrase('gram_support_category_other') }}"},{"line":19,"text":"label=\"{{ phrase('gram_support_subject') }}\" />"},{"line":21,"text":"label=\"{{ phrase('gram_support_description') }}\" />"},{"line":23,"text":"label=\"{{ phrase('gram_support_screenshot_optional') }}\" />"},{"line":29,"text":""}],"sample":"{{ phrase('gram_support_create_title') }}\n\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{{ phrase('gram_support_category_technical') }}\n\t\t\t\t{{ phrase('gram_support_category_account') }}\n\t\t\t\t{{ phrase('gram_support_category_content') }}\n\t\t\t\t{{ phrase('gram_support_category_other') }}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
\n
\n","sha256":"28cc5674de9d83ab0ae468e0fd789b44b2b88a0fab9f959e75f26d7508e87287","style_id":0,"title":"gram_support_create","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":707,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_created_title') }}"},{"line":2,"text":""},{"line":9,"text":"

{{ phrase('gram_support_save_access_code') }}

"},{"line":17,"text":"{{ phrase('gram_support_open_ticket') }}"}],"sample":"{{ phrase('gram_support_created_title') }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t

{{ phrase('gram_support_save_access_code') }}

\n\t\t\t\t{{ $accessCode }}\n\t\t\t\t{{ phrase('copy') }}\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"59f4609e245c125cf2a39a03d325c0faef6dfe0517824bd2eeee5a0a11b260c4","style_id":0,"title":"gram_support_created_guest","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":254,"hit_lines":[{"line":1,"text":""},{"line":2,"text":""},{"line":5,"text":"{{ phrase('gram_support_open_support') }}"}],"sample":"\n\t\n\t\t{{ phrase('gram_support_open_support') }}\n\t\n\n","sha256":"19dd8429e2ad0dfce31d69b33b310d349a408558c1ce05dda6ee64b4b834ef20","style_id":0,"title":"gram_support_launcher","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":768,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_queue') }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":""}],"sample":"{{ phrase('gram_support_staff_queue') }}\n\n\n\n\n\n","sha256":"de77a6c2043e3db3d0f8fe00bd705e4b269b201ce63a2e47c144f875ea600c56","style_id":0,"title":"gram_support_staff_queue","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":1914,"hit_lines":[{"line":3,"text":"const OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';"},{"line":4,"text":"const STATIC_CACHE = 'gram-support-staff-static-v1';"},{"line":18,"text":".filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)"},{"line":36,"text":"// SECURITY: all support/ticket/account/admin-like content is network-only."},{"line":40,"text":"url.pathname.startsWith('/support/') ||"}],"sample":"'use strict';\n\nconst OFFLINE_URL = '{{ base_url('js/gram/support/pwa/offline.html')|escape('js') }}';\nconst STATIC_CACHE = 'gram-support-staff-static-v1';\n\nself.addEventListener('install', event => {\n\tevent.waitUntil(\n\t\tcaches.open(STATIC_CACHE)\n\t\t\t.then(cache => cache.addAll([OFFLINE_URL]))\n\t\t\t.then(() => self.skipWaiting())\n\t);\n});\n\nself.addEventListener('activate', event => {\n\tevent.waitUntil(\n\t\tcaches.keys().then(keys =>\n\t\t\tPromise.all(keys\n\t\t\t\t.filter(key => key.startsWith('gram-support-staff-static-') && key !== STATIC_CACHE)\n\t\t\t\t.map(key => caches.delete(key))\n\t\t\t)\n\t\t).then(() => self.clients.claim())\n\t);\n});\n\nself.addEventListener('fetch', event => {\n\tconst request = event.request;\n\tif (request.method !== 'GET') {\n\t\treturn;\n\t}\n\n\tconst url = new URL(request.url);\n\tif (url.origin !== self.location.origin) {\n\t\treturn;\n\t}\n\n\t// SECURITY: all support/ticket/account/admin-like content is network-only.\n\t// Never cache HTML/API responses that can contain ticket data, identities,\n\t// access state, internal notes, attachments or staff-only information.\n\tconst sensitive =\n\t\turl.pathname.startsWith('/support/') ||\n\t\turl.pathname.startsWith('/account/') ||\n\t\turl.pathname.startsWith('/admin.php') ||\n\t\trequest.headers.get('accept')?.includes('text/html');\n\n\tif (sensitive) {\n\t\tevent.respondWith(\n\t\t\tfetch(request, {cache: 'no-store'}).catch(() => {\n\t\t\t\tif (request.mode === 'navigate') {\n\t\t\t\t\treturn caches.match(OFFLINE_URL);\n\t\t\t\t}\n\t\t\t\tthrow new Error('OFFLINE_NETWORK_ONLY');\n\t\t\t})\n\t\t);\n\t\treturn;\n\t}\n\n\t// Same-origin static assets only; stale-while-revalidate.\n\tevent.respondWith(\n\t\tcaches.open(STATIC_CACHE).then(cache =>\n\t\t\tcache.match(request).then(cached => {\n\t\t\t\tconst network = fetch(request).then(response => {\n\t\t\t\t\tif (response.ok && response.type === 'basic') {\n\t\t\t\t\t\tcache.put","sha256":"c3cbc44db9be7b95f470a25b0d783ac7ba8778b643662957cba4e197c4267844","style_id":0,"title":"gram_support_staff_service_worker","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":2704,"hit_lines":[{"line":1,"text":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}"},{"line":2,"text":""},{"line":3,"text":""},{"line":6,"text":""},{"line":13,"text":"
"},{"line":14,"text":"
"},{"line":16,"text":" \u00b7 {{ phrase('gram_support_internal_note') }}"},{"line":18,"text":"
{$message.message}
"},{"line":29,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":41,"text":""},{"line":44,"text":""},{"line":45,"text":""},{"line":47,"text":"{{ phrase('gram_support_internal_note') }}"},{"line":51,"text":""},{"line":55,"text":""},{"line":58,"text":""},{"line":64,"text":"label=\"{{ phrase('gram_support_assigned_user_id') }}\" />"}],"sample":"{{ phrase('gram_support_staff_ticket') }} {{ $ticket.public_ref }}\n\n\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}

\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{{ date_time($message.message_date) }}\n\t\t\t\t\t\t \u00b7 {{ phrase('gram_support_internal_note') }}\n\t\t\t\t\t
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t
\n\t\t
\n\t\t\t\n\t\t\t"},{"line":9,"text":"{{ phrase('gram_support_status') }}: {{ $ticket.status }}"},{"line":12,"text":"
"},{"line":13,"text":"
{{ date_time($message.message_date) }}
"},{"line":14,"text":"
{$message.message}
"},{"line":25,"text":"

{{ phrase('gram_support_attachments') }}

"},{"line":38,"text":""},{"line":42,"text":"label=\"{{ phrase('gram_support_reply') }}\" />"},{"line":44,"text":""}],"sample":"{{ $ticket.public_ref }} \u2014 {{ $ticket.subject }}\n\n\n
\n\t
\n\t\t

{{ $ticket.public_ref }}

\n\t\t
\n\t\t\t
\n\t\t\t\t{{ phrase('gram_support_status') }}: {{ $ticket.status }}\n\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
{{ date_time($message.message_date) }}
\n\t\t\t\t\t
{$message.message}
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\n\t
\n\t\t
\n\t\t\t

{{ phrase('gram_support_attachments') }}

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{$attachment.filename}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n\n\n\t\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t
\n\t
\n
\n","sha256":"f13d36c71242adcc12b2ec218d5a0673704245495b3982dc98ad7d7ee8a93805","style_id":0,"title":"gram_support_ticket","type":"public","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":228,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_registered', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_registered', {\n\t'public_ref': $ticket.public_ref\n}) }}\n","sha256":"1292c840ac8d65f2531d6af31df0381ad1e864023f61472f7581693f1f13b6cd","style_id":0,"title":"gram_support_ticket_event","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"},{"addon_id":"Gram/Support","bytes":250,"hit_lines":[{"line":2,"text":"{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}"},{"line":5,"text":"{{ phrase('gram_support_email_ticket_event_body_guest', {"}],"sample":"\n\t{{ phrase('gram_support_email_ticket_event_subject', {'public_ref': $ticket.public_ref}) }}\n\n\n{{ phrase('gram_support_email_ticket_event_body_guest', {\n\t'public_ref': $ticket.public_ref,\n\t'access_url': $accessUrl\n}) }}\n","sha256":"a427ce1da80b82bac28abc99150975c41f146163ea8a6728e3dacc290a078176","style_id":0,"title":"gram_support_ticket_event_guest","type":"email","version_id":1000050,"version_string":"1.0.0 Alpha 3 Unified Fix 3"}]}}]} -GRAM_FOOTER_PUBLIC_UI=[{"board_url":"https://codevipe.ru","name":"codevipe","root":{"bytes":47231,"ok":true,"sha256":"70fe60d06d2f8b745036c16610537b9d04080eefe5c3b4de80f15814fc277bfb","status":200,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":29161,"ok":true,"status":200}},{"board_url":"https://dsmods.ru","name":"dsmods","root":{"bytes":176072,"ok":true,"sha256":"10e1cd2c905f8b7f671fc613b5d2ae3996b3724f1fd9c7593c4b8bf8b70bb192","status":200,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":29193,"ok":true,"status":200}},{"board_url":"https://gamevipe.ru","name":"gamevipe","root":{"bytes":77668,"ok":true,"sha256":"31a4130a1c74a18dc7d1c46b61ae40a43572f47e81856337838a410167732244","status":200,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":29178,"ok":true,"status":200}},{"board_url":"https://hkmods.ru","name":"hkmods","root":{"bytes":114631,"ok":true,"sha256":"eb33809b6b777183ae1d3fb53c0543e25cc9ee8af4bbf4dd64d2ef989777fadf","status":200,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":29214,"ok":true,"status":200}},{"board_url":"https://kingofwolk.ru","name":"kingofwolk","root":{"bytes":70149,"ok":true,"sha256":"403d4ec72a21719e423df2df8fcdb3e32246746b225f01354a4126deed960331","status":200,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":30524,"ok":true,"status":200}},{"board_url":"https://zakrutim.ru","name":"zakrutim","root":{"bytes":149970,"ok":true,"sha256":"29d3885312dd61d05d492debc034c969e8d7b70b59974298202e2a6339d559dc","status":200,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":29384,"ok":true,"status":200}},{"board_url":"https://newfi.ru","name":"newfi-prod","root":{"bytes":25076,"ok":false,"sha256":"1bdb3ca1ac68e06f1d2bf95fe3b475b399dbe9ca01f0fe51ab24b15976b9a2ad","status":503,"truncated":false},"support_anchors":[{"ancestor_chain":[{"class":"has-no-js template-error","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"}],"support_page":{"bytes":25084,"ok":false,"status":503}}] -GRAM_FOOTER_VERSION_MAP={"codevipe":{"active":1,"default_style_id":"2","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"dsmods":{"active":1,"default_style_id":"2","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"gamevipe":{"active":1,"default_style_id":"2","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"hkmods":{"active":1,"default_style_id":"2","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"kingofwolk":{"active":1,"default_style_id":"2","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"newfi-prod":{"active":1,"default_style_id":"4","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"newfi-staging":{"active":1,"default_style_id":"4","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"},"zakrutim":{"active":1,"default_style_id":"2","processing":0,"version_id":1000060,"version_string":"1.0.0 Alpha 3 Unified Fix 4"}} -GRAM_FOOTER_UI_DRIFT=[{"anchor":{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"codevipe"},{"anchor":{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"dsmods"},{"anchor":{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"gamevipe"},{"anchor":{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"hkmods"},{"anchor":{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"kingofwolk"},{"anchor":{"ancestor_chain":[{"class":"has-no-js template-forum_list","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"zakrutim"},{"anchor":{"ancestor_chain":[{"class":"has-no-js template-error","tag":"html"},{"class":"","tag":"body"}],"class":"gramSupport-launcher button button--primary","href_path":"/support/create","id":"","tag":"a","text":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430"},"issue":"SUPPORT_ANCHOR_FACT","site":"newfi-prod"}] -GRAM_FOOTER_COLLECTION_HOLDS=["ROOT_HTTP:newfi-prod:503","SUPPORT_HTTP:newfi-prod:503"] -GRAM_FOOTER_SOURCE_LAYOUT={"addon_candidates":[],"selected_addon_dir":null,"tracked_count":3,"tracked_relevant":["release/FIX4_SHA256.txt","release/GRAM_SUPPORT_FIX4_FINAL.zip"]} -GRAM_FOOTER_MUTATION_SCOPE=NONE_READ_ONLY -GRAM_FOOTER_DECISION=HOLD_COLLECTION_INCOMPLETE +GENERATED_AT_UTC=[PRIVATE_IP]T16:17:01Z +Cluster information +------------------- +Name: homelab +Config Version: 3 +Transport: knet +Secure auth: on +Quorum information +------------------ +Date: Wed Sep [PRIVATE_IP] 2026 +Quorum provider: corosync_votequorum +Nodes: 3 +Node ID: [PRIVATE_IP] +Ring ID: 1.130 +Quorate: Yes + +Votequorum information +---------------------- +Expected votes: 3 +Highest expected: 3 +Total votes: 3 +Quorum: 2 +Flags: Quorate + +Membership information +---------------------- + Nodeid Votes Name +[PRIVATE_IP] [PRIVATE_IP].11 (local) +[PRIVATE_IP] [PRIVATE_IP].13 +[PRIVATE_IP] [PRIVATE_IP].12 + +Membership information +---------------------- + Nodeid Votes Name + 1 1 pve01 (local) + 2 1 pve03 + 3 1 pve02 +[{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/110","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":110},{"cpu":[PRIVATE_IP][PRIVATE_IP],"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/111","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"dns2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":111},{"cpu":[PRIVATE_IP]722e-05,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/112","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound1","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":112},{"cpu":0,"disk":[PRIVATE_IP],"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"lxc/113","maxcpu":1,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":0,"name":"unbound2","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"lxc","uptime":[PRIVATE_IP],"vmid":113},{"cpu":[PRIVATE_IP]14531,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"edge-vm","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":130},{"cpu":[PRIVATE_IP]223593,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/150","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"snikket","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":150},{"cpu":[PRIVATE_IP]483347,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/160","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"forum-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve02","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":160},{"cpu":[PRIVATE_IP]90386,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/170","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"core-apps","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":170},{"cpu":[PRIVATE_IP]89817,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/171","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"monitoring","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":171},{"cpu":[PRIVATE_IP]011178,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/190","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"homelab-ops-worker","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":[PRIVATE_IP],"vmid":190},{"cpu":[PRIVATE_IP]890576,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/210","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-prod","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve01","status":"running","template":0,"type":"qemu","uptime":235166,"vmid":210},{"cpu":[PRIVATE_IP]23961,"disk":0,"diskread":[PRIVATE_IP],"diskwrite":[PRIVATE_IP],"id":"qemu/211","maxcpu":2,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"memhost":[PRIVATE_IP],"name":"newfi-staging","netin":[PRIVATE_IP],"netout":[PRIVATE_IP],"node":"pve03","status":"running","template":0,"type":"qemu","uptime":431092,"vmid":211},{"cpu":0,"disk":0,"diskread":0,"diskwrite":0,"id":"qemu/9130","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":0,"memhost":0,"name":"edge-cold-standby","netin":0,"netout":0,"node":"pve02","status":"stopped","template":0,"type":"qemu","uptime":0,"vmid":9130},{"cgroup-mode":2,"cpu":[PRIVATE_IP]67886,"disk":[PRIVATE_IP],"id":"node/pve03","level":"","maxcpu":8,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve03","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]57895,"disk":[PRIVATE_IP],"id":"node/pve02","level":"","maxcpu":4,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve02","status":"online","type":"node","uptime":[PRIVATE_IP]},{"cgroup-mode":2,"cpu":[PRIVATE_IP]79604,"disk":[PRIVATE_IP],"id":"node/pve01","level":"","maxcpu":24,"maxdisk":[PRIVATE_IP],"maxmem":[PRIVATE_IP],"mem":[PRIVATE_IP],"node":"pve01","status":"online","type":"node","uptime":[PRIVATE_IP]},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve03/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve02/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"rootdir,images","disk":[PRIVATE_IP],"id":"storage/pve01/local-lvm","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"lvmthin","shared":0,"status":"available","storage":"local-lvm","type":"storage"},{"content":"backup,vztmpl,import,iso","disk":[PRIVATE_IP],"id":"storage/pve03/local","maxdisk":[PRIVATE_IP],"node":"pve03","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"backup,vztmpl,import,iso","disk":[PRIVATE_IP],"id":"storage/pve02/local","maxdisk":[PRIVATE_IP],"node":"pve02","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"content":"backup,vztmpl,import,iso","disk":[PRIVATE_IP],"id":"storage/pve01/local","maxdisk":[PRIVATE_IP],"node":"pve01","plugintype":"dir","shared":0,"status":"available","storage":"local","type":"storage"},{"id":"network/pve03/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve03","status":"ok","type":"network"},{"id":"network/pve02/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve02","status":"ok","type":"network"},{"id":"network/pve01/zone/localnetwork","network":"localnetwork","network-type":"zone","node":"pve01","status":"ok","type":"network"}] +Name Type Status Total (KiB) Used (KiB) Available (KiB) % +local dir active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 20.59% +local-lvm lvmthin active [PRIVATE_IP] [PRIVATE_IP] [PRIVATE_IP] 9.49% + UNIT LOAD ACTIVE SUB DESCRIPTION +● homelab-backup-retention-gc.service loaded failed failed Homelab owner-aware cloud retention GC + +Legend: LOAD → Reflects whether the unit definition was properly loaded. + ACTIVE → The high-level unit activation state, i.e. generalization of SUB. + SUB → The low-level unit activation state, values depend on unit type. + +1 loaded units listed. +NEXT LEFT LAST PASSED UNIT ACTIVATES +Wed [PRIVATE_IP] 19:17:16 MSK 13s Wed [PRIVATE_IP] 19:16:16 MSK 46s ago homelab-private-vpn-hosts-health.timer homelab-private-vpn-hosts-health.service +Wed [PRIVATE_IP] 19:17:16 MSK 13s Wed [PRIVATE_IP] 19:12:16 MSK 4min 46s ago homelab-smartctl-textfile.timer homelab-smartctl-textfile.service +Wed [PRIVATE_IP] 19:17:16 MSK 13s Wed [PRIVATE_IP] 19:12:16 MSK 4min 46s ago netbird-peers-health.timer netbird-peers-health.service +Wed [PRIVATE_IP] 19:17:36 MSK 33s Wed [PRIVATE_IP] 19:16:32 MSK 30s ago homelab-router-watchdog.timer homelab-router-watchdog.service +Wed [PRIVATE_IP] 19:18:13 MSK 1min 10s Wed [PRIVATE_IP] 19:12:54 MSK 4min 8s ago homelab-health-metrics.timer homelab-health-metrics.service +Wed [PRIVATE_IP] 19:18:54 MSK 1min 51s Wed [PRIVATE_IP] 19:03:54 MSK 13min ago homelab-pve03-staging-capacity-health.timer homelab-pve03-staging-capacity-health.service +Wed [PRIVATE_IP] 19:21:38 MSK 4min 35s Wed [PRIVATE_IP] 18:49:32 MSK 27min ago homelab-reference-refresh.timer homelab-reference-refresh.service +Wed [PRIVATE_IP] 19:23:16 MSK 6min Wed [PRIVATE_IP] 19:13:16 MSK 3min 46s ago skladchik-reports-monitor-supervisor.timer skladchik-reports-monitor-supervisor.service +Wed [PRIVATE_IP] 19:25:54 MSK 8min Wed [PRIVATE_IP] 19:10:54 MSK 6min ago prometheus-node-exporter-apt.timer prometheus-node-exporter-apt.service +Wed [PRIVATE_IP] 19:25:54 MSK 8min Wed [PRIVATE_IP] 19:10:54 MSK 6min ago prometheus-node-exporter-nvme.timer prometheus-node-exporter-nvme.service +Wed [PRIVATE_IP] 19:30:00 MSK 12min Wed [PRIVATE_IP] 17:30:07 MSK 1h 46min ago homelab-app-cloud-quorum-queue.timer homelab-app-cloud-quorum-queue.service +Wed [PRIVATE_IP] 19:30:00 MSK 12min Wed [PRIVATE_IP] 19:15:07 MSK 1min 55s ago homelab-incident-journal.timer homelab-incident-journal.service +Wed [PRIVATE_IP] 19:30:32 MSK 13min Wed [PRIVATE_IP] 19:15:32 MSK 1min 30s ago homelab-disk-space-health.timer homelab-disk-space-health.service +Wed [PRIVATE_IP] 19:30:44 MSK 13min Wed [PRIVATE_IP] 19:15:07 MSK 1min 55s ago homelab-duty-admin-v2.timer homelab-duty-admin-v2.service +Wed [PRIVATE_IP] 19:30:59 MSK 13min Wed [PRIVATE_IP] 19:15:32 MSK 1min 30s ago homelab-forum-snuffleupagus-health.timer homelab-forum-snuffleupagus-health.service +Wed [PRIVATE_IP] 19:31:14 MSK 14min Wed [PRIVATE_IP] 19:15:54 MSK 1min 8s ago homelab-external-probe-vps-health.timer homelab-external-probe-vps-health.service +Wed [PRIVATE_IP] 19:32:39 MSK 15min Wed [PRIVATE_IP] 19:02:54 MSK 14min ago homelab-mkdocs-auto-refresh.timer homelab-mkdocs-auto-refresh.service +Wed [PRIVATE_IP] 19:35:30 MSK 18min Wed [PRIVATE_IP] 19:06:54 MSK 10min ago homelab-backup-audit.timer homelab-backup-audit.service +Wed [PRIVATE_IP] 20:07:08 MSK 50min Wed [PRIVATE_IP] 19:02:25 MSK 14min ago homelab-control-backup.timer homelab-control-backup.service +Wed [PRIVATE_IP] 20:30:41 MSK 1h 13min Wed [PRIVATE_IP] 16:32:54 MSK 2h 44min ago homelab-vm-cloud-quorum-queue.timer homelab-vm-cloud-quorum-queue.service +Wed [PRIVATE_IP] 22:35:54 MSK 3h 18min Wed [PRIVATE_IP] 16:35:54 MSK 2h 41min ago homelab-vps-identity-audit.timer homelab-vps-identity-audit.service +Wed [PRIVATE_IP] 23:18:35 MSK 4h 1min Wed [PRIVATE_IP] 17:13:16 MSK 2h 3min ago homelab-evidence-root.timer homelab-evidence-root.service +Thu [PRIVATE_IP] 00:00:00 MSK 4h 42min Wed [PRIVATE_IP] 00:00:07 MSK 19h ago dpkg-db-backup.timer dpkg-db-backup.service +Thu [PRIVATE_IP] 00:12:22 MSK 4h 55min Wed [PRIVATE_IP] 00:41:12 MSK 18h ago logrotate.timer logrotate.service +Thu [PRIVATE_IP] 00:14:17 MSK 4h 57min Wed [PRIVATE_IP] 00:08:54 MSK 19h ago homelab-storage-capacity.timer homelab-storage-capacity.service +Thu [PRIVATE_IP] 00:15:12 MSK 4h 58min Wed [PRIVATE_IP] 00:11:32 MSK 19h ago homelab-evidence-catalog.timer homelab-evidence-catalog.service +Thu [PRIVATE_IP] 00:16:01 MSK 4h 58min Wed [PRIVATE_IP] 00:06:07 MSK 19h ago homelab-docker-health.timer homelab-docker-health.service +Thu [PRIVATE_IP] 00:16:50 MSK 4h 59min Wed [PRIVATE_IP] 00:14:16 MSK 19h ago homelab-quality-gate.timer homelab-quality-gate.service +Thu [PRIVATE_IP] 00:42:12 MSK 5h 25min Wed [PRIVATE_IP] 18:38:32 MSK 38min ago homelab-mailru-trash-gc.timer homelab-mailru-trash-gc.service +Thu [PRIVATE_IP] 01:22:35 MSK 6h Wed [PRIVATE_IP] 05:22:58 MSK 13h ago pve-daily-update.timer pve-daily-update.service +Thu [PRIVATE_IP] 03:19:46 MSK 8h Wed [PRIVATE_IP] 15:18:54 MSK 3h 58min ago apt-daily.timer apt-daily.service +Thu [PRIVATE_IP] 03:21:39 MSK 8h Wed [PRIVATE_IP] 03:34:04 MSK 15h ago homelab-backup-retention-gc.timer homelab-backup-retention-gc.service +Thu [PRIVATE_IP] 05:54:58 MSK 10h Wed [PRIVATE_IP] 07:54:16 MSK 11h ago man-db.timer man-db.service +Thu [PRIVATE_IP] 06:36:17 MSK 11h Wed [PRIVATE_IP] 06:54:42 MSK 12h ago apt-daily-upgrade.timer apt-daily-upgrade.service +Thu [PRIVATE_IP] 07:01:18 MSK 11h Wed [PRIVATE_IP] 07:04:54 MSK 12h ago homelab-drift-check.timer homelab-drift-check.service +Thu [PRIVATE_IP] 07:29:10 MSK 12h Wed [PRIVATE_IP] 07:35:42 MSK 11h ago homelab-service-registry-check.timer homelab-service-registry-check.service +Thu [PRIVATE_IP] 07:44:09 MSK 12h Wed [PRIVATE_IP] 07:48:02 MSK 11h ago homelab-runbook-generate.timer homelab-runbook-generate.service +Thu [PRIVATE_IP] 07:55:04 MSK 12h Wed [PRIVATE_IP] 07:51:32 MSK 11h ago homelab-alerting-health.timer homelab-alerting-health.service +Thu [PRIVATE_IP] 07:56:50 MSK 12h Wed [PRIVATE_IP] 07:52:32 MSK 11h ago homelab-dependency-map-check.timer homelab-dependency-map-check.service +Thu [PRIVATE_IP] 08:00:02 MSK 12h Wed [PRIVATE_IP] 07:55:16 MSK 11h ago homelab-desired-state-sync.timer homelab-desired-state-sync.service +Thu [PRIVATE_IP] 08:01:45 MSK 12h Wed [PRIVATE_IP] 08:14:24 MSK 11h ago homelab-overall-health.timer homelab-overall-health.service +Thu [PRIVATE_IP] 08:02:41 MSK 12h Wed [PRIVATE_IP] 08:05:54 MSK 11h ago homelab-duty-admin-report.timer homelab-duty-admin-report.service +Thu [PRIVATE_IP] 08:13:09 MSK 12h Wed [PRIVATE_IP] 08:24:08 MSK 10h ago homelab-final-readiness-gate.timer homelab-final-readiness-gate.service +Thu [PRIVATE_IP] 08:24:32 MSK 13h Wed [PRIVATE_IP] 08:12:08 MSK 11h ago homelab-kuma-monitor-policy.timer homelab-kuma-monitor-policy.service +Thu [PRIVATE_IP] 08:31:30 MSK 13h Wed [PRIVATE_IP] 08:40:33 MSK 10h ago homelab-secret-exposure-guard.timer homelab-secret-exposure-guard.service +Thu [PRIVATE_IP] 08:37:17 MSK 13h Wed [PRIVATE_IP] 08:27:54 MSK 10h ago homelab-capacity-risk.timer homelab-capacity-risk.service +Thu [PRIVATE_IP] 08:38:48 MSK 13h Wed [PRIVATE_IP] 08:46:15 MSK 10h ago homelab-cluster-passport.timer homelab-cluster-passport.service +Thu [PRIVATE_IP] 08:59:12 MSK 13h Wed [PRIVATE_IP] 08:55:16 MSK 10h ago homelab-golden-state-index.timer homelab-golden-state-index.service +Thu [PRIVATE_IP] 10:15:00 MSK 14h Wed [PRIVATE_IP] 10:15:08 MSK 9h ago skladchik-reports-monitor-monthly-selftest-watch.timer skladchik-reports-monitor-monthly-selftest-watch.service +Thu [PRIVATE_IP] 16:47:42 MSK 21h Wed [PRIVATE_IP] 16:47:42 MSK 2h 29min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service +Sun [PRIVATE_IP] 03:10:21 MSK 3 days Sun [PRIVATE_IP] 03:11:16 MSK 3 days ago e2scrub_all.timer e2scrub_all.service +Sun [PRIVATE_IP] 03:10:35 MSK 3 days Sun [PRIVATE_IP] 03:10:50 MSK 3 days ago xfs_scrub_all.timer xfs_scrub_all.service +Sun [PRIVATE_IP] 07:35:54 MSK 3 days Sun [PRIVATE_IP] 07:57:53 MSK 3 days ago homelab-rotating-boot-drill.timer homelab-rotating-boot-drill.service +Mon [PRIVATE_IP] 00:10:37 MSK 4 days Mon [PRIVATE_IP] 00:08:52 MSK 2 days ago homelab-secret-sanity.timer homelab-secret-sanity.service +Mon [PRIVATE_IP] 00:30:41 MSK 4 days Mon [PRIVATE_IP] 00:39:53 MSK 2 days ago fstrim.timer fstrim.service +- - - - prometheus-node-exporter-ipmitool-sensor.timer prometheus-node-exporter-ipmitool-sensor.service +- - - - prometheus-node-exporter-mellanox-hca-temp.timer prometheus-node-exporter-mellanox-hca-temp.service +- - - - prometheus-node-exporter-smartmon.timer prometheus-node-exporter-smartmon.service + +58 timers listed. +RUNTIME_MANIFEST_ID=df[PRIVATE_IP]ac9b5abd[PRIVATE_IP]b[PRIVATE_IP]d89496fb2bde[PRIVATE_IP] +EXPERIMENT_ID=5462ee[PRIVATE_IP]ebe[PRIVATE_IP]feb2ad[PRIVATE_IP]1ad87bbac0b8108 +COLLECTION_START_AT=[PRIVATE_IP]T[PRIVATE_IP]:00 +FIRST_COMPLETE_D1_CLOSE=[PRIVATE_IP]T[PRIVATE_IP]:00 +PRODUCTION_LAUNCH_ALLOWED=False +EXECUTION_AUTHORITY=False +RISK_AUTHORITY=False +STAGE_A_HEALTH=AWAITING_PRIMARY_FINALITY +FORENSIC_PREVIOUS_EPOCH_PRESERVED=YES + +## NEWFI_TASK6_AUTH_CHECKPOINT_V[PRIVATE_IP] +- Scope: historical accepted AUTH test, not a current SMTP connection test. +- Newfi approved SMTP account/sender: aleisaev@yandex.ru. +- Endpoint used by accepted test: smtp.yandex.ru:465 with certificate verification; single PLAIN initial response accepted with code 235. +- Evidence: incident ledger ### NEWFI_TASK6_YANDEX_AUTH_V2_OBSERVATION and ### NEWFI_TASK6_AUTH_PROOF_CLOSE_V1. +- No password file written, no application configuration changed, no mail sent by the accepted AUTH test. +- Persistent transport installation and application delivery are not proven by this checkpoint. Task6 is not complete. +- AUTH challenge and missing-file incidents closed; launch/session incident remains OPEN with original cause unproven. +- This update does not change VM211, VM160, routing, board state or Git. +- Other incidents and infrastructure health were not assessed. + + +## NEWFI_PRIVATE_STRUCTURE92_WRONG_MARKER_SCOPE_[PRIVATE_IP] CLOSURE +- Status: CLOSED +- RCA: NEWFI92 inspected the pve01 NEWFI90 attempt marker, which had not been finalized because the outer shell exited immediately after the guest returned RC3 following its successful rollback. The guest marker contained the true final rollback state. +- Correction: NEWFI93 required both the guest FINISHED/ROLLED_BACK record and a fresh exact demo-state readback before reconciling the outer NEWFI90 marker. NEWFI92 itself never reserved an attempt or mutated state. + + +## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] +- Status: OPEN +- Command: NEWFI95 +- Symptom: after the content-structure precheck passed, the pve03 Python wrapper failed to parse at the PHP line beginning with $root. No Portal discovery or application mutation was reached. +- RCA: an outer raw triple-single-quoted guest Python payload contained an inner raw triple-single-quoted PHP payload. The inner delimiter terminated the outer Python string, causing PHP source to be parsed as Python. +- Safety: NEWFI95 was read-only, created no attempt marker, and did not reach the intended nested guest execution. Do not replay NEWFI95. + + +## NEWFI_PRIVATE_NEWFI95_NESTED_TRIPLE_QUOTE_PARSE_[PRIVATE_IP] CLOSURE +- Status: CLOSED +- RCA: an inner triple-single-quoted PHP literal terminated the outer triple-single-quoted Python guest payload in NEWFI95. The wrapper therefore failed parsing before the intended Portal discovery executed. +- Correction: NEWFI96 removed the nested Python payload layer entirely and passed one Python program directly to VM211 through qm guest exec stdin. The read-only Portal contract completed with QGA exit 0 and the implementation worktree remained unchanged. OUTPUT_END CHAT_OUTPUT_END