@routinecrew/routinecode 2.31.31 → 2.31.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/prompt-vault.js +1 -1
- package/bin/setup.js +1 -1
- package/hooks/pending-drainer.sh +254 -0
- package/hooks/post-tool-universal.sh +23 -0
- package/hooks/pre-agent-spawn.mjs +1 -1
- package/hooks/session-start.sh +25 -0
- package/hooks/stop-usage-metrics.sh +27 -0
- package/mcp-db-manager/dist/analyzers/duplicate-detector.js +1 -1
- package/mcp-db-manager/dist/core/model-parser.js +1 -1
- package/mcp-db-manager/dist/core/schema-reader.js +1 -1
- package/mcp-db-manager/dist/executors/migration-executor.js +1 -1
- package/mcp-db-manager/dist/generators/migration-generator.js +1 -1
- package/mcp-db-manager/dist/index.js +1 -1
- package/mcp-db-manager/dist/validators/schema-validator.js +1 -1
- package/mcp-dev-tester/dist/analyzers/auth-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/analyzers/backend-analyzer.js +1 -1
- package/mcp-dev-tester/dist/analyzers/endpoint-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/analyzers/frontend-analyzer.js +1 -1
- package/mcp-dev-tester/dist/analyzers/runtime-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/analyzers/type-comparator.js +1 -1
- package/mcp-dev-tester/dist/analyzers/validation-diagnoser.js +1 -1
- package/mcp-dev-tester/dist/browser/playwright-manager.js +1 -1
- package/mcp-dev-tester/dist/browser/ui-tester.js +1 -1
- package/mcp-dev-tester/dist/config/project-config.js +1 -1
- package/mcp-dev-tester/dist/index.js +1 -1
- package/mcp-dev-tester/dist/testers/api-tester.js +1 -1
- package/mcp-doc-fetcher/dist/index.js +1 -1
- package/mcp-html-renderer/dist/index.js +1 -1
- package/mcp-html-renderer/dist/preview.js +1 -1
- package/mcp-html-renderer/dist/template-engine.js +1 -1
- package/mcp-intelligence/dist/concept-catalog.js +1 -1
- package/mcp-intelligence/dist/concept-server-proxy.js +1 -1
- package/mcp-intelligence/dist/config-auth.js +1 -1
- package/mcp-intelligence/dist/contracts.generated.js +1 -1
- package/mcp-intelligence/dist/domain-templates.js +1 -1
- package/mcp-intelligence/dist/grounding.js +1 -1
- package/mcp-intelligence/dist/handlers.js +1 -1
- package/mcp-intelligence/dist/index.js +1 -1
- package/mcp-intelligence/dist/intelligence-file.js +1 -1
- package/mcp-intelligence/dist/knowledge-critic.js +1 -1
- package/mcp-intelligence/dist/knowledge-handlers.d.ts.map +1 -1
- package/mcp-intelligence/dist/knowledge-handlers.js +1 -1
- package/mcp-intelligence/dist/mention-extractor.js +1 -1
- package/mcp-intelligence/dist/provenance.js +1 -1
- package/mcp-intelligence/dist/semantic-embedder.js +1 -1
- package/mcp-log-watcher/dist/config-auth.js +1 -1
- package/mcp-log-watcher/dist/file-watcher.js +1 -1
- package/mcp-log-watcher/dist/index.js +1 -1
- package/mcp-log-watcher/dist/known-solutions.js +1 -1
- package/mcp-log-watcher/dist/log-store.js +1 -1
- package/mcp-log-watcher/dist/websocket-server.js +1 -1
- package/mcp-plan-manager/dist/__tests__/plan-parser.test.js +1 -1
- package/mcp-plan-manager/dist/file-ops.js +1 -1
- package/mcp-plan-manager/dist/index.js +1 -1
- package/mcp-plan-manager/dist/plan-parser.js +1 -1
- package/mcp-project-context/dist/git-ops.js +1 -1
- package/mcp-project-context/dist/index.js +1 -1
- package/mcp-project-context/dist/project-analysis.js +1 -1
- package/mcp-routinecode/dist/agent-tracker.js +1 -1
- package/mcp-routinecode/dist/blast-radius.js +1 -1
- package/mcp-routinecode/dist/config-auth.js +1 -1
- package/mcp-routinecode/dist/contracts.generated.js +1 -1
- package/mcp-routinecode/dist/explorer-advisor.js +1 -1
- package/mcp-routinecode/dist/failure-tracker.js +1 -1
- package/mcp-routinecode/dist/file-lock-registry.js +1 -1
- package/mcp-routinecode/dist/file-risk-scorer.js +1 -1
- package/mcp-routinecode/dist/index.js +1 -1
- package/mcp-routinecode/dist/known-solutions.js +1 -1
- package/mcp-routinecode/dist/ledger-miner.js +1 -1
- package/mcp-routinecode/dist/observed-draft.js +1 -1
- package/mcp-routinecode/dist/pattern-matcher.js +1 -1
- package/mcp-routinecode/dist/routines.d.ts +18 -0
- package/mcp-routinecode/dist/routines.js +1 -1
- package/mcp-routinecode/dist/rule-engine.js +1 -1
- package/mcp-routinecode/dist/rule-promoter.js +1 -1
- package/mcp-routinecode/dist/telemetry-analyzer.js +1 -1
- package/mcp-routinecode/dist/verification.js +0 -0
- package/mcp-routinecode/dist/viral-loop.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# pending-drainer — pending-sync.jsonl 을 서버로 주기 백필. **MCP 비의존**(cwd 무관).
|
|
3
|
+
# session-start 훅이 백그라운드(nohup)로 기동. post-tool-universal 이 6h 안전망으로 재기동.
|
|
4
|
+
# 목표: 각 사용자 pending 이 세션 경계를 넘겨 쌓이지 않게 하고, 유실 0(실패=pending 또는 dead-letter).
|
|
5
|
+
#
|
|
6
|
+
# 설계 L5 (교차검증 97):
|
|
7
|
+
# - config.json(serverUrl/apiKey/tenantId/userId/machineId) 직접 읽어 Bearer POST
|
|
8
|
+
# ${serverUrl}/api/v1/ingest/${endpoint}.
|
|
9
|
+
# - payload body 엔벌로프는 sendToServer 와 **동일** 재구성:
|
|
10
|
+
# {...item.data, tenantId, userId, contributorHash: userId ? 'p:'+userId : machineId}
|
|
11
|
+
# (헤더만으론 서버 dedup/귀속이 깨짐 — body 의 contributorHash 사용)
|
|
12
|
+
# - 디바운스: .last-drain mtime <1h 면 skip. 성공 후 touch.
|
|
13
|
+
# - rate: 요청 간 >=2.5s(<=24/min). 429 는 지수 백오프.
|
|
14
|
+
# - nextAttemptAt(L4 백오프) 존중. 멱등(서버 dedup). claim-rename 으로 동시실행 방지.
|
|
15
|
+
# - 실패 분류/재큐/dead-letter 는 L4(knowledge-handlers) 와 동일 규칙.
|
|
16
|
+
set -u
|
|
17
|
+
|
|
18
|
+
KN="${ROUTINECODE_KNOWLEDGE_DIR:-${ROUTINECODE_DIR:-$HOME/.routinecode}/knowledge}"
|
|
19
|
+
CONFIG="${ROUTINECODE_CONFIG_PATH:-${ROUTINECODE_DIR:-$HOME/.routinecode}/config.json}"
|
|
20
|
+
PENDING="$KN/pending-sync.jsonl"
|
|
21
|
+
DEADLETTER="$KN/pending-sync.deadletter.jsonl"
|
|
22
|
+
MARKER="$KN/.last-drain"
|
|
23
|
+
|
|
24
|
+
# recorder 자신의 세션에서는 돌지 않음(불필요한 중첩 방지)
|
|
25
|
+
[ "${ROUTINECODE_RECORDER:-}" = "1" ] && exit 0
|
|
26
|
+
[ -f "$CONFIG" ] || exit 0
|
|
27
|
+
[ -f "$PENDING" ] || exit 0
|
|
28
|
+
|
|
29
|
+
# ── 디바운스: .last-drain mtime 이 1시간 이내면 skip ──────────────
|
|
30
|
+
# ROUTINECODE_DRAIN_FORCE=1 이면 무시(테스트/수동 트리거용).
|
|
31
|
+
if [ "${ROUTINECODE_DRAIN_FORCE:-}" != "1" ] && [ -f "$MARKER" ]; then
|
|
32
|
+
now_epoch=$(date +%s)
|
|
33
|
+
marker_epoch=$(python3 -c "import os,sys;print(int(os.path.getmtime('$MARKER')))" 2>/dev/null || echo 0)
|
|
34
|
+
if [ "$marker_epoch" -gt 0 ] && [ $((now_epoch - marker_epoch)) -lt 3600 ]; then
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# ── 원자적 claim (동시 실행 방지) ────────────────────────────────
|
|
40
|
+
# recorder-runner.sh 선례: mv 가 실패하면 다른 프로세스가 이미 claim 한 것 → 종료.
|
|
41
|
+
CLAIM="$PENDING.processing.$$"
|
|
42
|
+
mv "$PENDING" "$CLAIM" 2>/dev/null || exit 0
|
|
43
|
+
|
|
44
|
+
# ── drain (python3: 엔벌로프 재구성·분류·백오프·rate·dead-letter) ─
|
|
45
|
+
ROUTINECODE_DRAIN_CONFIG="$CONFIG" \
|
|
46
|
+
ROUTINECODE_DRAIN_CLAIM="$CLAIM" \
|
|
47
|
+
ROUTINECODE_DRAIN_PENDING="$PENDING" \
|
|
48
|
+
ROUTINECODE_DRAIN_DEADLETTER="$DEADLETTER" \
|
|
49
|
+
ROUTINECODE_DRAIN_MARKER="$MARKER" \
|
|
50
|
+
ROUTINECODE_DRAIN_DRY="${ROUTINECODE_DRAIN_DRY:-}" \
|
|
51
|
+
python3 - <<'PYEOF'
|
|
52
|
+
import json, os, sys, time, urllib.request, urllib.error
|
|
53
|
+
|
|
54
|
+
CONFIG = os.environ['ROUTINECODE_DRAIN_CONFIG']
|
|
55
|
+
CLAIM = os.environ['ROUTINECODE_DRAIN_CLAIM']
|
|
56
|
+
PENDING = os.environ['ROUTINECODE_DRAIN_PENDING']
|
|
57
|
+
DEADLETTER = os.environ['ROUTINECODE_DRAIN_DEADLETTER']
|
|
58
|
+
MARKER = os.environ['ROUTINECODE_DRAIN_MARKER']
|
|
59
|
+
DRY = os.environ.get('ROUTINECODE_DRAIN_DRY') == '1'
|
|
60
|
+
|
|
61
|
+
MAX_RETRIES = 10
|
|
62
|
+
BACKOFF_BASE = 5000 # ms
|
|
63
|
+
BACKOFF_CAP = 60*60*1000 # 1h ms
|
|
64
|
+
RATE_WINDOW = 60*1000 # 429 최소 백오프 ms
|
|
65
|
+
MIN_INTERVAL = 2.5 # 요청 간 최소 간격(초) → <=24/min
|
|
66
|
+
MAX_BATCH = 50 # 한 번 drain 상한 (초과분은 CLAIM→pending 로 이월)
|
|
67
|
+
|
|
68
|
+
def now_ms():
|
|
69
|
+
return int(time.time()*1000)
|
|
70
|
+
|
|
71
|
+
def read_config():
|
|
72
|
+
try:
|
|
73
|
+
with open(CONFIG, 'r') as f:
|
|
74
|
+
return json.load(f)
|
|
75
|
+
except Exception:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
def load_claim():
|
|
79
|
+
items = []
|
|
80
|
+
try:
|
|
81
|
+
with open(CLAIM, 'r') as f:
|
|
82
|
+
for line in f:
|
|
83
|
+
line = line.strip()
|
|
84
|
+
if not line:
|
|
85
|
+
continue
|
|
86
|
+
try:
|
|
87
|
+
items.append(json.loads(line))
|
|
88
|
+
except Exception:
|
|
89
|
+
pass # malformed line skip
|
|
90
|
+
except Exception:
|
|
91
|
+
pass
|
|
92
|
+
return items
|
|
93
|
+
|
|
94
|
+
def append_jsonl(path, obj):
|
|
95
|
+
try:
|
|
96
|
+
with open(path, 'a') as f:
|
|
97
|
+
f.write(json.dumps(obj, ensure_ascii=False) + '\n')
|
|
98
|
+
except Exception:
|
|
99
|
+
pass
|
|
100
|
+
|
|
101
|
+
def requeue(items):
|
|
102
|
+
# CLAIM 소비분 중 미전송/미도래 항목을 pending 으로 되돌림(append, 유실 방지).
|
|
103
|
+
for it in items:
|
|
104
|
+
append_jsonl(PENDING, it)
|
|
105
|
+
|
|
106
|
+
def restore_all_and_exit(items, code=0):
|
|
107
|
+
requeue(items)
|
|
108
|
+
try:
|
|
109
|
+
os.remove(CLAIM)
|
|
110
|
+
except Exception:
|
|
111
|
+
pass
|
|
112
|
+
sys.exit(code)
|
|
113
|
+
|
|
114
|
+
cfg = read_config()
|
|
115
|
+
if not cfg or not cfg.get('syncEnabled') or not cfg.get('serverUrl') or not cfg.get('apiKey'):
|
|
116
|
+
# sync 불가 → claim 원복(유실 금지)
|
|
117
|
+
restore_all_and_exit(load_claim(), 0)
|
|
118
|
+
|
|
119
|
+
server_url = cfg['serverUrl'].rstrip('/')
|
|
120
|
+
api_key = cfg['apiKey']
|
|
121
|
+
tenant_id = cfg.get('tenantId')
|
|
122
|
+
user_id = cfg.get('userId')
|
|
123
|
+
machine_id = cfg.get('machineId')
|
|
124
|
+
contributor = ('p:' + str(user_id)) if user_id else machine_id
|
|
125
|
+
|
|
126
|
+
items = load_claim()
|
|
127
|
+
leftover = [] # 이번 패스에서 전송하지 않고 pending 으로 되돌릴 항목(미도래/백오프/상한초과)
|
|
128
|
+
processed = 0
|
|
129
|
+
last_req_ts = 0.0
|
|
130
|
+
|
|
131
|
+
def classify(status):
|
|
132
|
+
# status 0 = 네트워크/타임아웃 → transient (L4 sendToServer catch 와 동일)
|
|
133
|
+
if status == 0:
|
|
134
|
+
return 'transient'
|
|
135
|
+
if status == 401:
|
|
136
|
+
return 'auth'
|
|
137
|
+
if status >= 500 or status == 429:
|
|
138
|
+
return 'transient'
|
|
139
|
+
return 'permanent' # 그 외 4xx(400/422 등)
|
|
140
|
+
|
|
141
|
+
def compute_next_attempt(retries, status):
|
|
142
|
+
delay = min(BACKOFF_BASE * (2 ** retries), BACKOFF_CAP)
|
|
143
|
+
if status == 429:
|
|
144
|
+
delay = max(delay, RATE_WINDOW)
|
|
145
|
+
return now_ms() + delay
|
|
146
|
+
|
|
147
|
+
def send(endpoint, data):
|
|
148
|
+
# 엔벌로프: sendToServer(:511-518) 와 동일. 헤더만으론 부족.
|
|
149
|
+
body = dict(data)
|
|
150
|
+
body['tenantId'] = tenant_id if tenant_id is not None else None
|
|
151
|
+
body['userId'] = user_id if user_id is not None else None
|
|
152
|
+
body['contributorHash'] = contributor
|
|
153
|
+
if endpoint.startswith('ontology/'):
|
|
154
|
+
url = server_url + '/api/v1/' + endpoint
|
|
155
|
+
else:
|
|
156
|
+
url = server_url + '/api/v1/ingest/' + endpoint
|
|
157
|
+
payload = json.dumps(body).encode('utf-8')
|
|
158
|
+
req = urllib.request.Request(url, data=payload, method='POST')
|
|
159
|
+
req.add_header('Content-Type', 'application/json')
|
|
160
|
+
req.add_header('Authorization', 'Bearer ' + str(api_key))
|
|
161
|
+
try:
|
|
162
|
+
with urllib.request.urlopen(req, timeout=5) as resp:
|
|
163
|
+
return resp.getcode(), ''
|
|
164
|
+
except urllib.error.HTTPError as e:
|
|
165
|
+
try:
|
|
166
|
+
rbody = e.read().decode('utf-8', 'replace')[:2000]
|
|
167
|
+
except Exception:
|
|
168
|
+
rbody = ''
|
|
169
|
+
return e.code, rbody
|
|
170
|
+
except Exception:
|
|
171
|
+
return 0, '' # 네트워크/타임아웃 → transient
|
|
172
|
+
|
|
173
|
+
cur = now_ms()
|
|
174
|
+
for idx, item in enumerate(items):
|
|
175
|
+
# 상한 초과 → 남은 항목 전부 pending 으로 이월
|
|
176
|
+
if processed >= MAX_BATCH:
|
|
177
|
+
leftover.append(item)
|
|
178
|
+
continue
|
|
179
|
+
# L4 백오프 존중: 미도래 항목은 전송하지 않고 되돌림
|
|
180
|
+
next_at = item.get('nextAttemptAt') or 0
|
|
181
|
+
if next_at > cur:
|
|
182
|
+
leftover.append(item)
|
|
183
|
+
continue
|
|
184
|
+
|
|
185
|
+
# DRY 모드: 전송하지 않고 재구성된 엔벌로프를 stderr 로 출력(검증용), 항목은 보존
|
|
186
|
+
if DRY:
|
|
187
|
+
body = dict(item.get('data', {}))
|
|
188
|
+
body['tenantId'] = tenant_id if tenant_id is not None else None
|
|
189
|
+
body['userId'] = user_id if user_id is not None else None
|
|
190
|
+
body['contributorHash'] = contributor
|
|
191
|
+
sys.stderr.write('[drain-dry] endpoint=%s envelope=%s\n'
|
|
192
|
+
% (item.get('endpoint'), json.dumps(body, ensure_ascii=False)))
|
|
193
|
+
leftover.append(item)
|
|
194
|
+
continue
|
|
195
|
+
|
|
196
|
+
# rate: 요청 간 >= MIN_INTERVAL
|
|
197
|
+
wait = MIN_INTERVAL - (time.time() - last_req_ts)
|
|
198
|
+
if wait > 0:
|
|
199
|
+
time.sleep(wait)
|
|
200
|
+
|
|
201
|
+
status, rbody = send(item.get('endpoint', ''), item.get('data', {}))
|
|
202
|
+
last_req_ts = time.time()
|
|
203
|
+
processed += 1
|
|
204
|
+
|
|
205
|
+
if 200 <= status < 300:
|
|
206
|
+
continue # 성공 → 소비(요건: pending/claim 어디에도 남기지 않음)
|
|
207
|
+
|
|
208
|
+
kind = classify(status)
|
|
209
|
+
if kind == 'permanent':
|
|
210
|
+
append_jsonl(DEADLETTER, {
|
|
211
|
+
'endpoint': item.get('endpoint'),
|
|
212
|
+
'data': item.get('data'),
|
|
213
|
+
'ts': item.get('ts'),
|
|
214
|
+
'retries': item.get('retries', 0),
|
|
215
|
+
'reason': 'permanent_4xx',
|
|
216
|
+
'status': status,
|
|
217
|
+
'body': rbody[:2000],
|
|
218
|
+
'deadLetteredAt': time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime()),
|
|
219
|
+
})
|
|
220
|
+
continue
|
|
221
|
+
|
|
222
|
+
# transient | auth → 백오프 재큐, MAX_RETRIES 초과 시 dead-letter(드롭 금지)
|
|
223
|
+
item['retries'] = int(item.get('retries', 0)) + 1
|
|
224
|
+
if item['retries'] >= MAX_RETRIES:
|
|
225
|
+
append_jsonl(DEADLETTER, {
|
|
226
|
+
'endpoint': item.get('endpoint'),
|
|
227
|
+
'data': item.get('data'),
|
|
228
|
+
'ts': item.get('ts'),
|
|
229
|
+
'retries': item['retries'],
|
|
230
|
+
'reason': 'max_retries_exceeded',
|
|
231
|
+
'status': status,
|
|
232
|
+
'body': rbody[:2000],
|
|
233
|
+
'deadLetteredAt': time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime()),
|
|
234
|
+
})
|
|
235
|
+
continue
|
|
236
|
+
item['nextAttemptAt'] = compute_next_attempt(item['retries'], status)
|
|
237
|
+
leftover.append(item)
|
|
238
|
+
|
|
239
|
+
# 미전송/재큐 항목을 pending 으로 되돌림
|
|
240
|
+
requeue(leftover)
|
|
241
|
+
try:
|
|
242
|
+
os.remove(CLAIM)
|
|
243
|
+
except Exception:
|
|
244
|
+
pass
|
|
245
|
+
|
|
246
|
+
# 디바운스 마커 갱신(이번 drain 완료 표시). DRY 모드에서도 갱신 않음(실제 drain 아님).
|
|
247
|
+
if not DRY:
|
|
248
|
+
try:
|
|
249
|
+
with open(MARKER, 'a'):
|
|
250
|
+
pass
|
|
251
|
+
os.utime(MARKER, None)
|
|
252
|
+
except Exception:
|
|
253
|
+
pass
|
|
254
|
+
PYEOF
|
|
@@ -151,3 +151,26 @@ if is_mcp_tool:
|
|
|
151
151
|
|
|
152
152
|
print('{"continue":true}')
|
|
153
153
|
PYEOF
|
|
154
|
+
|
|
155
|
+
# --- L5 안전망: 장수 세션에서 drainer 재기동 (경량 stat 1회) ---
|
|
156
|
+
# session-start 가 유일 트리거면 장시간 열린 세션에서 drain 이 안 돈다.
|
|
157
|
+
# .last-drain mtime > 6h 일 때만 drainer 를 nohup 재기동한다(평소 비용 ~0).
|
|
158
|
+
# drainer 내부 디바운스(1h)가 중복 실행을 다시 막으므로 과기동해도 무해.
|
|
159
|
+
if [ "${ROUTINECODE_RECORDER:-}" != "1" ]; then
|
|
160
|
+
_RC_HOOKS_DIR="$(cd "$(dirname "$0")" 2>/dev/null && pwd)"
|
|
161
|
+
_RC_KN="${ROUTINECODE_KNOWLEDGE_DIR:-$HOME/.routinecode/knowledge}"
|
|
162
|
+
_RC_DRAINER="$_RC_HOOKS_DIR/pending-drainer.sh"
|
|
163
|
+
_RC_MARKER="$_RC_KN/.last-drain"
|
|
164
|
+
if [ -f "$_RC_DRAINER" ] && [ -f "$_RC_KN/pending-sync.jsonl" ]; then
|
|
165
|
+
# 마커 없음 OR mtime > 6h(21600s) → 재기동
|
|
166
|
+
_RC_STALE=1
|
|
167
|
+
if [ -f "$_RC_MARKER" ]; then
|
|
168
|
+
_RC_NOW=$(date +%s)
|
|
169
|
+
_RC_MT=$(python3 -c "import os;print(int(os.path.getmtime('$_RC_MARKER')))" 2>/dev/null || echo 0)
|
|
170
|
+
if [ "$_RC_MT" -gt 0 ] && [ $((_RC_NOW - _RC_MT)) -le 21600 ]; then _RC_STALE=0; fi
|
|
171
|
+
fi
|
|
172
|
+
if [ "$_RC_STALE" = "1" ]; then
|
|
173
|
+
nohup bash "$_RC_DRAINER" >/dev/null 2>&1 &
|
|
174
|
+
fi
|
|
175
|
+
fi
|
|
176
|
+
fi
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x36a0a2=a0_0x5a03;(function(_0x184650,_0x5929f8){const _0x1446b6=a0_0x5a03,_0x415e1c=_0x184650();while(!![]){try{const _0x4ede90=-parseInt(_0x1446b6(0x22c,'J@65'))/(0x3*0xb1+-0x11*0x6b+0x509)+-parseInt(_0x1446b6(0x193,'FEp['))/(-0x4f*0x76+0x631+0x1e3b)+parseInt(_0x1446b6(0x245,'n!41'))/(-0x172c*0x1+0x22fa+-0xbcb)+parseInt(_0x1446b6(0x1cc,'FEp['))/(-0x1*0x5e3+-0x2a1+0x888)*(parseInt(_0x1446b6(0x254,'N[02'))/(0x80b+-0xa41+-0x23b*-0x1))+-parseInt(_0x1446b6(0x22b,'ZKUo'))/(0x968+-0x2340+0x2b*0x9a)*(-parseInt(_0x1446b6(0x1db,'J@65'))/(0x1*-0x1d05+-0x1*0xf67+-0x1*-0x2c73))+parseInt(_0x1446b6(0x198,'ZoEg'))/(0x20e9+-0x22a9+-0x1c8*-0x1)*(-parseInt(_0x1446b6(0x262,'efmn'))/(-0x389+-0x918+-0x2*-0x655))+-parseInt(_0x1446b6(0x1c5,'n!41'))/(-0x777+-0x3ab*0x5+0x19d8);if(_0x4ede90===_0x5929f8)break;else _0x415e1c['push'](_0x415e1c['shift']());}catch(_0x3c9464){_0x415e1c['push'](_0x415e1c['shift']());}}}(a0_0x3739,0x2e493+0x95b*-0x3d+0x22ecc));function a0_0x5a03(_0x5cd638,_0x36f345){_0x5cd638=_0x5cd638-(0x224e*0x1+-0x3*0xcaf+0x52b);const _0x27d316=a0_0x3739();let _0x39be82=_0x27d316[_0x5cd638];if(a0_0x5a03['TyuIGn']===undefined){var _0x10f632=function(_0x2a220c){const _0x18b61a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x488a75='',_0x36575e='';for(let _0x3abdc4=-0x207f+-0x3*-0x3b3+0x1566,_0x32ad54,_0x212463,_0x5c2881=-0x1198+0x1026+0x172;_0x212463=_0x2a220c['charAt'](_0x5c2881++);~_0x212463&&(_0x32ad54=_0x3abdc4%(0x1be3+0x1610+0x1*-0x31ef)?_0x32ad54*(0xbd9+-0xfd4+0x43b)+_0x212463:_0x212463,_0x3abdc4++%(0xc83+0x1a4d+-0x1a*0x17e))?_0x488a75+=String['fromCharCode'](-0x2d*-0x82+-0x184d+0x272&_0x32ad54>>(-(0xe7a+0x9d5+-0x1*0x184d)*_0x3abdc4&-0x9e2+-0xe4c+0x1834)):-0x18a8+-0x2115+0x27*0x17b){_0x212463=_0x18b61a['indexOf'](_0x212463);}for(let _0x5c62ed=-0xb*-0x101+0xe13*-0x1+0x308,_0x4fcd3d=_0x488a75['length'];_0x5c62ed<_0x4fcd3d;_0x5c62ed++){_0x36575e+='%'+('00'+_0x488a75['charCodeAt'](_0x5c62ed)['toString'](-0x1932+-0x1788+-0xa*-0x4e1))['slice'](-(0xd36+0x56d*0x1+-0x12a1*0x1));}return decodeURIComponent(_0x36575e);};const _0x18fd4e=function(_0x411232,_0x1a8f99){let _0x1e74d2=[],_0x48d710=-0xd4d+-0x20e1+0x2e2e,_0x465b3b,_0x481d63='';_0x411232=_0x10f632(_0x411232);let _0x5cc132;for(_0x5cc132=-0x780+-0x1*-0x20b6+-0x1936;_0x5cc132<0x1ca5*0x1+-0x8c+0x1*-0x1b19;_0x5cc132++){_0x1e74d2[_0x5cc132]=_0x5cc132;}for(_0x5cc132=0x24a4+-0x1*0xeef+0x15b5*-0x1;_0x5cc132<0x1*-0x2f9+0x2291+0x4*-0x7a6;_0x5cc132++){_0x48d710=(_0x48d710+_0x1e74d2[_0x5cc132]+_0x1a8f99['charCodeAt'](_0x5cc132%_0x1a8f99['length']))%(-0x1*0x216e+-0xc6f*0x3+0x47bb*0x1),_0x465b3b=_0x1e74d2[_0x5cc132],_0x1e74d2[_0x5cc132]=_0x1e74d2[_0x48d710],_0x1e74d2[_0x48d710]=_0x465b3b;}_0x5cc132=-0x5f0+-0x4a*-0x2c+-0x6c8,_0x48d710=-0x23c9*0x1+-0x1e3f+-0x2*-0x2104;for(let _0x20d35b=0x1*0x19dc+0x61d+-0x1ff9;_0x20d35b<_0x411232['length'];_0x20d35b++){_0x5cc132=(_0x5cc132+(0x22d3+-0x381+-0x1f51))%(-0x188f+-0x1c*-0x15d+0xc9d*-0x1),_0x48d710=(_0x48d710+_0x1e74d2[_0x5cc132])%(-0x165e+0x1*0x18e5+-0x187),_0x465b3b=_0x1e74d2[_0x5cc132],_0x1e74d2[_0x5cc132]=_0x1e74d2[_0x48d710],_0x1e74d2[_0x48d710]=_0x465b3b,_0x481d63+=String['fromCharCode'](_0x411232['charCodeAt'](_0x20d35b)^_0x1e74d2[(_0x1e74d2[_0x5cc132]+_0x1e74d2[_0x48d710])%(0x17*0x8b+-0x960+-0x21d*0x1)]);}return _0x481d63;};a0_0x5a03['aPJJEQ']=_0x18fd4e,a0_0x5a03['osmXiH']={},a0_0x5a03['TyuIGn']=!![];}const _0x423dcf=_0x27d316[-0x1925*-0x1+0x1b01+-0x6*0x8b1],_0x1083a2=_0x5cd638+_0x423dcf,_0x34b7fd=a0_0x5a03['osmXiH'][_0x1083a2];return!_0x34b7fd?(a0_0x5a03['qlYMDm']===undefined&&(a0_0x5a03['qlYMDm']=!![]),_0x39be82=a0_0x5a03['aPJJEQ'](_0x39be82,_0x36f345),a0_0x5a03['osmXiH'][_0x1083a2]=_0x39be82):_0x39be82=_0x34b7fd,_0x39be82;}import{fileURLToPath}from'node:url';import{dirname,resolve}from'node:path';import{existsSync}from'node:fs';async function readStdin(){const _0x190883=a0_0x5a03;let _0x52f4ac='';for await(const _0x4f483f of process[_0x190883(0x1a5,'o2sJ')])_0x52f4ac+=_0x4f483f;return _0x52f4ac;}function emit(_0x4c98ab){const _0x4611f4=a0_0x5a03;process[_0x4611f4(0x18e,'ar2b')+'t'][_0x4611f4(0x220,'jhNE')](JSON[_0x4611f4(0x175,'d*VC')+_0x4611f4(0x1a0,'KlV0')](_0x4c98ab)),process[_0x4611f4(0x21c,'VxYo')](-0x29e+-0x7c5+0xa63);}async function main(){const _0xe1dc0a=a0_0x5a03,_0x229b8b={'sWYpj':function(_0xff509b){return _0xff509b();},'WoIDm':function(_0x20e1b2,_0x480c59){return _0x20e1b2||_0x480c59;},'brerr':function(_0x571632,_0x1cbced){return _0x571632(_0x1cbced);},'VlRyx':_0xe1dc0a(0x236,')hgD')+_0xe1dc0a(0x253,'ZoEg'),'YTeUA':_0xe1dc0a(0x268,'U6oF'),'OSyXK':function(_0x57b32a,_0x5d877f){return _0x57b32a===_0x5d877f;},'VEdbO':_0xe1dc0a(0x182,'Q^6W')+'g','CWwIg':_0xe1dc0a(0x187,'Q^6W')+_0xe1dc0a(0x257,'aCe@')+'r','ycfYa':_0xe1dc0a(0x1b8,'JiBe')+_0xe1dc0a(0x17b,'Q9RV')+_0xe1dc0a(0x24c,'r1C&')+_0xe1dc0a(0x183,'q)Pe')+_0xe1dc0a(0x1fb,'o2sJ'),'jZjDn':_0xe1dc0a(0x1d7,'u*uq'),'lQkDL':_0xe1dc0a(0x229,'(XAn')+'fs','tYHkN':_0xe1dc0a(0x265,'Q9RV')+_0xe1dc0a(0x24a,'JiBe'),'RBgmM':_0xe1dc0a(0x20c,'r1C&')+'os','DvFjK':function(_0x2f053a,_0xbed69,_0x487439,_0x4a7502,_0x28dee0){return _0x2f053a(_0xbed69,_0x487439,_0x4a7502,_0x28dee0);},'nwnND':function(_0x580982){return _0x580982();},'sYYRc':_0xe1dc0a(0x25c,'Q9RV')+_0xe1dc0a(0x211,'7RvH')+'de','NMNYr':_0xe1dc0a(0x1ff,'gh$K')+_0xe1dc0a(0x22d,'o2sJ'),'MPYAZ':_0xe1dc0a(0x1e8,'W$X4')+_0xe1dc0a(0x1e9,'aCe@')+'on','NBswA':function(_0x5491d7){return _0x5491d7();},'AzbqY':_0xe1dc0a(0x1b7,'J@65')+_0xe1dc0a(0x1ad,'u*uq')+_0xe1dc0a(0x179,'Q9RV'),'hJmPA':function(_0x346c9f,_0x28b220,_0x165f0c){return _0x346c9f(_0x28b220,_0x165f0c);},'DxgPI':_0xe1dc0a(0x22f,'tRgI')+_0xe1dc0a(0x21a,'gh$K'),'PyuRQ':function(_0x579878,_0x5a503a){return _0x579878(_0x5a503a);},'CxgWd':_0xe1dc0a(0x1f7,'ar2b'),'MDALP':function(_0x51bda8,_0x2b2cfe){return _0x51bda8!==_0x2b2cfe;},'XEKca':_0xe1dc0a(0x196,'jhNE'),'BrTue':function(_0x10b008,_0x3cc573){return _0x10b008(_0x3cc573);},'KaIEf':function(_0x2aadf2,_0xdb5b5b){return _0x2aadf2<_0xdb5b5b;},'GBfuS':_0xe1dc0a(0x23d,'U6oF')+_0xe1dc0a(0x24e,'9A7]'),'NXEbC':_0xe1dc0a(0x184,'i#11')+'re','ODnwS':function(_0xa87e0,_0x5e7a90){return _0xa87e0(_0x5e7a90);},'xQKRE':function(_0x84265b,_0x19b172,_0x6ab962,_0x5ea1e3,_0x166fb4,_0x50842c){return _0x84265b(_0x19b172,_0x6ab962,_0x5ea1e3,_0x166fb4,_0x50842c);},'RgFlu':_0xe1dc0a(0x1f4,'N[02')+_0xe1dc0a(0x16e,'FEp[')+_0xe1dc0a(0x190,'Q9RV'),'VInVw':_0xe1dc0a(0x197,'jhNE'),'aqYRC':_0xe1dc0a(0x1e6,'a92*')+_0xe1dc0a(0x170,'DMyy')+_0xe1dc0a(0x1dc,'ZKUo')+'s','hlWIy':function(_0x21376c,_0x587e08){return _0x21376c(_0x587e08);},'SwkcV':_0xe1dc0a(0x20d,'c]F8')+_0xe1dc0a(0x227,'Rx&b'),'ycJtU':_0xe1dc0a(0x205,'i#11')+'wn','upgsm':function(_0x132a63,_0x4a62c){return _0x132a63(_0x4a62c);}};let _0x3406b3;try{const _0x49567f=await _0x229b8b[_0xe1dc0a(0x1f9,'(XAn')](readStdin);_0x3406b3=JSON[_0xe1dc0a(0x213,'U5Hd')](_0x229b8b[_0xe1dc0a(0x1ca,'t1@[')](_0x49567f,'{}'));}catch{_0x229b8b[_0xe1dc0a(0x216,'KlV0')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x25a,'U5Hd')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x243,'ZKUo')]}});}const _0x1e455d=_0x3406b3[_0xe1dc0a(0x246,'VZxa')+_0xe1dc0a(0x209,'VZxa')]??{},_0x4e57b0=_0x1e455d[_0xe1dc0a(0x1f3,'U5Hd')+_0xe1dc0a(0x1d0,'SlnN')+_0xe1dc0a(0x1f2,'u*uq')]??'',_0x302338=_0x229b8b[_0xe1dc0a(0x210,'JiBe')](typeof _0x1e455d[_0xe1dc0a(0x1c4,'a92*')+'t'],_0x229b8b[_0xe1dc0a(0x1b0,'VxYo')])?_0x1e455d[_0xe1dc0a(0x1d5,'tRgI')+'t']:'',_0x4a1580=new Set([_0x229b8b[_0xe1dc0a(0x185,'U5Hd')],_0x229b8b[_0xe1dc0a(0x20b,'FEp[')]]);if(_0x4a1580[_0xe1dc0a(0x1ea,'GGfE')](_0x4e57b0)){const _0x55c4f6=[/taskId[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/task_id[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/TASK_ID[:\s]+['"]?([a-zA-Z0-9_-]+)/,/task[:\s]+['"]?(\d+[a-zA-Z0-9_-]*)/i];let _0x10aeaf=null;for(const _0x4b8281 of _0x55c4f6){const _0x564b5c=_0x4b8281[_0xe1dc0a(0x20e,'E!8Z')](_0x302338);if(_0x564b5c?.[0x14bc+0x152b*-0x1+0x70]){_0x10aeaf=_0x564b5c[0x4*-0x287+-0x1*0x2121+-0xcd*-0x36];break;}}!_0x10aeaf&&_0x229b8b[_0xe1dc0a(0x172,'a92*')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x1bc,'GGfE')],'reason':_0xe1dc0a(0x251,'efmn')+_0xe1dc0a(0x1a6,'o2sJ')+_0xe1dc0a(0x219,'q)Pe')+_0xe1dc0a(0x17c,'oc51')+_0xe1dc0a(0x1b3,'U6oF')+_0xe1dc0a(0x240,'U6oF')+_0xe1dc0a(0x1b1,'oc51')+_0xe1dc0a(0x1c7,'KlV0')+_0xe1dc0a(0x194,'ZoEg')+_0xe1dc0a(0x1df,'DMyy')+_0xe1dc0a(0x1d3,'N[02')+_0xe1dc0a(0x217,'u*uq')+_0xe1dc0a(0x26a,'KlV0')+_0xe1dc0a(0x181,'gh$K')+_0xe1dc0a(0x191,'SlnN')+_0xe1dc0a(0x1b4,'!c6l')+_0xe1dc0a(0x223,'GfYe')+_0xe1dc0a(0x263,'VZxa')+_0xe1dc0a(0x1ed,'9A7]')+_0xe1dc0a(0x1c2,'02j!')+_0xe1dc0a(0x1d2,'L]Rc')+_0xe1dc0a(0x1c6,'Ge@p')});if(_0x10aeaf){const {existsSync:_0x4b997d,readFileSync:_0x20ed7e}=await import(_0x229b8b[_0xe1dc0a(0x212,'JiBe')]),{join:_0x2afaef}=await import(_0x229b8b[_0xe1dc0a(0x18a,'IuD%')]),{homedir:_0x21126d}=await import(_0x229b8b[_0xe1dc0a(0x186,'u*uq')]),_0x40d891=_0x229b8b[_0xe1dc0a(0x19c,'N[02')](_0x2afaef,_0x229b8b[_0xe1dc0a(0x224,'J@65')](_0x21126d),_0x229b8b[_0xe1dc0a(0x177,'GGfE')],_0x229b8b[_0xe1dc0a(0x21d,'ZKUo')],_0x229b8b[_0xe1dc0a(0x228,'02j!')]),_0x156d40=_0x229b8b[_0xe1dc0a(0x258,'(XAn')](_0x2afaef,_0x229b8b[_0xe1dc0a(0x1c3,'[vF^')](_0x21126d),_0x229b8b[_0xe1dc0a(0x177,'GGfE')],_0x229b8b[_0xe1dc0a(0x171,'N[02')],_0x229b8b[_0xe1dc0a(0x1cd,'ZKUo')]),_0x3994d0=_0x229b8b[_0xe1dc0a(0x1da,'oc51')](_0x2afaef,_0x40d891,_0xe1dc0a(0x23b,'i#11')+'n-'+_0x10aeaf+_0xe1dc0a(0x24b,'txX1')),_0xb3eab=_0x229b8b[_0xe1dc0a(0x1c0,'J@65')](_0x2afaef,_0x156d40,_0x10aeaf+_0xe1dc0a(0x1ce,'gh$K'));let _0xc28cb2=_0x229b8b[_0xe1dc0a(0x173,'E!8Z')];if(_0x229b8b[_0xe1dc0a(0x1f5,'(XAn')](_0x4b997d,_0xb3eab))try{_0xc28cb2=JSON[_0xe1dc0a(0x1a8,'o2sJ')](_0x229b8b[_0xe1dc0a(0x1bd,'SlnN')](_0x20ed7e,_0xb3eab,_0x229b8b[_0xe1dc0a(0x1f8,'a92*')]))[_0xe1dc0a(0x1b2,'J@65')]||_0x229b8b[_0xe1dc0a(0x25f,'W$X4')];}catch{}if(_0x229b8b[_0xe1dc0a(0x188,'q)Pe')](_0xc28cb2,_0x229b8b[_0xe1dc0a(0x18d,'SlnN')])){if(_0x229b8b[_0xe1dc0a(0x1f1,'FEp[')](_0x4b997d,_0x3994d0))try{const _0x2667a4=JSON[_0xe1dc0a(0x256,'n!41')](_0x229b8b[_0xe1dc0a(0x180,'u*uq')](_0x20ed7e,_0x3994d0,_0x229b8b[_0xe1dc0a(0x21e,'IuD%')])),_0x48de4f=_0x2667a4[_0xe1dc0a(0x1af,'L]Rc')+_0xe1dc0a(0x1e1,'[vF^')+_0xe1dc0a(0x1cb,'U5Hd')]??_0x2667a4[_0xe1dc0a(0x23a,'FEp[')+_0xe1dc0a(0x19a,'02j!')+'re']??0x1*0x183b+0x1*0x210d+-0x3948*0x1;_0x229b8b[_0xe1dc0a(0x1a1,'VZxa')](_0x48de4f,-0x1*-0x2523+-0x706+0x191*-0x13)&&_0x229b8b[_0xe1dc0a(0x1be,'tRgI')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x207,'W$X4')],'reason':_0xe1dc0a(0x1e0,'o2sJ')+_0xe1dc0a(0x1a3,'r1C&')+_0xe1dc0a(0x1b6,'ZoEg')+_0xe1dc0a(0x21b,'SlnN')+_0xe1dc0a(0x23c,'Rx&b')+_0xe1dc0a(0x259,'u*uq')+_0xe1dc0a(0x215,'J@65')+_0xe1dc0a(0x25d,'Q^6W')+_0x48de4f+(_0xe1dc0a(0x1d8,'Ge@p')+_0xe1dc0a(0x176,'VxYo')+_0xe1dc0a(0x214,'ar2b')+_0xe1dc0a(0x1a9,'gh$K'))+_0x10aeaf+(_0xe1dc0a(0x178,'Rx&b')+_0xe1dc0a(0x20a,'Q9RV')+_0xe1dc0a(0x25e,'d*VC')+_0xe1dc0a(0x1fa,'d*VC')+_0xe1dc0a(0x250,'VZxa')+_0xe1dc0a(0x17d,'J@65')+_0xe1dc0a(0x199,'N[02')+_0xe1dc0a(0x266,'*nq1')+_0xe1dc0a(0x22a,'JiBe')+_0xe1dc0a(0x231,'*nq1')+_0xe1dc0a(0x1e4,'!c6l')+_0xe1dc0a(0x16c,'n!41')+_0xe1dc0a(0x264,'(XAn')+_0xe1dc0a(0x255,'7RvH')+_0xe1dc0a(0x1f0,'GGfE')+_0xe1dc0a(0x1f6,'c]F8')+_0xe1dc0a(0x232,'efmn')+'.')});}catch{}else _0x229b8b[_0xe1dc0a(0x204,')hgD')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x1d1,'7RvH')],'reason':_0xe1dc0a(0x208,'n!41')+_0xe1dc0a(0x1a6,'o2sJ')+_0xe1dc0a(0x248,'Ge@p')+_0xe1dc0a(0x269,'7RvH')+_0xe1dc0a(0x1c9,'7RvH')+_0xe1dc0a(0x19f,'N[02')+_0xe1dc0a(0x174,'c]F8')+_0xe1dc0a(0x1fc,'q)Pe')+_0xe1dc0a(0x261,'E!8Z')+_0xe1dc0a(0x230,'KlV0')+_0xe1dc0a(0x1a4,'Ge@p')+'k\x20'+_0x10aeaf+(_0xe1dc0a(0x237,'VZxa')+'r=')+_0xc28cb2+(_0xe1dc0a(0x17a,'KlV0')+_0xe1dc0a(0x1ab,'U6oF')+_0xe1dc0a(0x17e,'Rx&b')+_0xe1dc0a(0x225,'J@65')+_0xe1dc0a(0x1fe,'Q^6W')+_0xe1dc0a(0x1ae,'q)Pe')+_0xe1dc0a(0x206,'*nq1')+_0xe1dc0a(0x1de,'02j!')+_0xe1dc0a(0x202,'a92*')+_0xe1dc0a(0x23e,'G2t#')+_0xe1dc0a(0x1ee,'W$X4')+_0xe1dc0a(0x1cf,'IuD%')+_0xe1dc0a(0x233,'Ge@p')+_0xe1dc0a(0x19d,'ar2b'))});}}}const _0x3b163c=new Set([_0x229b8b[_0xe1dc0a(0x1c8,'Rx&b')],_0x229b8b[_0xe1dc0a(0x1ec,'(XAn')]]);!_0x3b163c[_0xe1dc0a(0x1b9,'t1@[')](_0x4e57b0)&&_0x229b8b[_0xe1dc0a(0x1ac,'Ge@p')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1b5,'oc51')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x222,'i#11')]}});const _0x24a8b9=_0x229b8b[_0xe1dc0a(0x244,'ZKUo')](dirname,_0x229b8b[_0xe1dc0a(0x24f,'t1@[')](fileURLToPath,import.meta.url)),_0x14d1d2=_0x229b8b[_0xe1dc0a(0x21f,'efmn')](resolve,_0x24a8b9,'..',_0x229b8b[_0xe1dc0a(0x249,'J@65')],_0x229b8b[_0xe1dc0a(0x26b,'ar2b')],_0x229b8b[_0xe1dc0a(0x1aa,'G2t#')]);!_0x229b8b[_0xe1dc0a(0x172,'a92*')](existsSync,_0x14d1d2)&&_0x229b8b[_0xe1dc0a(0x195,'VxYo')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1d4,'ar2b')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x189,')hgD')]}});let _0x40c8cd;try{({trackSpawn:_0x40c8cd}=await import(_0x14d1d2));}catch{_0x229b8b[_0xe1dc0a(0x221,'ZKUo')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1fd,'tRgI')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x1a2,'o2sJ')]}});}const _0x54b9eb=/JUSTIFICATION:\s*([\s\S]+?)(?=\n[A-Z_]+:|$)/i[_0xe1dc0a(0x19b,'GGfE')](_0x302338),_0x17d0a2=_0x54b9eb?.[0xb38*0x1+0xbe4+-0x171b]?.[_0xe1dc0a(0x17f,'N[02')](),_0x8fe467=/INVOCATION_MODE:\s*(sequential|parallel)/i[_0xe1dc0a(0x1c1,'02j!')](_0x302338),_0x4b9001=_0x8fe467?.[0x1b9+0xe86+-0x103e]?.[_0xe1dc0a(0x260,'7RvH')+_0xe1dc0a(0x1eb,')hgD')+'e']()??_0x229b8b[_0xe1dc0a(0x247,'VxYo')];let _0xb9a4ea;try{_0xb9a4ea=_0x229b8b[_0xe1dc0a(0x22e,'KlV0')](_0x40c8cd,{'agentType':_0x4e57b0,'parentAgent':_0x229b8b[_0xe1dc0a(0x23f,'L]Rc')],'prompt':_0x302338,'invocationMode':_0x4b9001,'justification':_0x17d0a2});}catch{_0x229b8b[_0xe1dc0a(0x19e,'FEp[')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x1d6,'VxYo')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x1ba,'!c6l')]}});}if(!_0xb9a4ea[_0xe1dc0a(0x1bf,'DMyy')+_0xe1dc0a(0x239,')hgD')]){const _0x124174=[_0xe1dc0a(0x1dd,'i#11')+_0xe1dc0a(0x242,'txX1')+_0xe1dc0a(0x25b,'i#11')+_0xe1dc0a(0x200,'ar2b')+_0xe1dc0a(0x234,'U5Hd')+_0xb9a4ea[_0xe1dc0a(0x238,'jhNE')+'n'],_0xb9a4ea[_0xe1dc0a(0x1ef,'tRgI')+_0xe1dc0a(0x1bb,'!c6l')]?'\x0a'+_0xb9a4ea[_0xe1dc0a(0x218,'IuD%')+_0xe1dc0a(0x18b,'Ge@p')]:''][_0xe1dc0a(0x16f,'o2sJ')]('');_0x229b8b[_0xe1dc0a(0x20f,'GfYe')](emit,{'decision':_0x229b8b[_0xe1dc0a(0x201,'(XAn')],'reason':_0x124174});}_0x229b8b[_0xe1dc0a(0x1a7,'jhNE')](emit,{'hookSpecificOutput':{'hookEventName':_0x229b8b[_0xe1dc0a(0x252,'ZKUo')],'permissionDecision':_0x229b8b[_0xe1dc0a(0x235,'t1@[')]}});}function a0_0x3739(){const _0x3bb5ef=['W6RcTSkdAuu','WQiPsqhcHG','WPJcTelcVqG','W5JdNCodWPVcIa','W4BcON7dR8ot','W4VcL8kVqhS','W5qee8kwCW','WR9jWO/dING','WRmAWRHQW74','WQRdR8kKFgXiWQ3dV8k+W5L3DG','F8ong3VcMG','suaeW55Y','jeCQzSoIWOxdG1ZcLmoqsZZdGW','eSoUWOJcGSkc','uSoSntJdMq','W5m1WQxcGSkivCktW7b3WPjQW50','WPddNeVcNmkQWRRdG8kLybblWPK','WOxcUSkoWPRdQW','W6FcISkcuYu','W7xcMXvwW4a','W73cMWfk','WPtdRCooW4lcTmorWQ0HW5VcRJvJkW','pZiZW4BcIG','AmoPWPrRhG','WOn1W7BdKG','fwquW4lcPq','tLSsWP8','W4FcLHJdNCoR','ohu8WOJcMa','W6HlyCoq','W5jZgdfu','mcf8WQNcIG','uSofcSoehq','WRjoWQvKW6m','gGf9WPxcPq','uXf8WO/cOG','W6ZcGHvnW5K','grrRWO/cRG','aSkxjNq','W5RcTdxcPb4','WOhdHCobW4RcNW','WPaxWQrxW4e','W6pdUConWPxcPa','W7xcSmkbFKi','effiqu8','W5NcO8kXEbm','mg5kmSow','WPJcQCoBW70','WO3dM8odW4dcNW','WR4Nf0zZ','b2fSA8oA','W4lcSSorWPldPW','WO/cRmoFW7ZcTG','FJNdLmkDAG','WRRcISk8','WPmsaxH7','WRKYduju','WOXxW7NdTCov','t8ocpuJcUG','WORcJWLxFa','W6JcJY0MWR4','WOtcISotW5/cHa','y8oLWQjR','uSoyWP9Cuq','WPJcKSkqoI4','WQBdICkRWPf/','g1/cVq/cHSkdp8kjpmkIW6RdRa','WQ8aW78','W65rBmoGW5O','tr7dRg/dHW','hKPzy8kP','WOxcHmkgewC','WRtcKva','WPFdKKxdI8oSW4ldR8k3EG','xK/dLSkaWPm','tCkopJVdSG','WQWWWQ7dJey','qSoMjeFcJW','gZbxqSk0','aLbbqfu','nh83W4BcMG','BfGYW4H/','WQRcHbnOxq','W5NcISkhyYq','W6JdS8olWPxcRG','W69FW6e1WRa','WO/dLmozW4ZcGW','ouDtqSoJ','W5VcH8oWW6xcGhGj','DfddHSoFWQa','WRWzDIlcOG','o8k9W744wa','WQNcHsmZWQi','mJ1wWRpcGa','WQlcTCkhhGW','W57cG8kvW4VcNMO7W6es','W5BcOCklweq','WQrMfevB','W5JcG8kBWPBdNXaFW58WW70qW5y','WRFdNmkHWPj7','WPtdNaJdVmolW73dMCkU','W6NcU8oMjdW','WPFcPCklaq4','WO5SW6a','W6GInCkIqq','W7LzosRdLq','WPZdUfHSWRy','W77cQCo6jdq','WQNcGXTIsa','WO9JW7tcKCos','W6FcLINdMSo8','W7pdR8ob','WQJcLLFcLqG','pheIWOxcNa','W6D4crRdHW','h8kqESk7ha','t0agWPW/','WPxdG8kJWQTR','W4rwjtJdVa','WQNdMLdcH8o5','hrPR','W6xcSSkAzuq','WOZcMI58vq','W4FcRN3dPSkw','cmkkiIpdSa','f0CqW5bW','W51BfGZdUa','W7BdMCkHWPPG','pMhcLSoAnHxcGSoBnmk0W6C','W48IiSk2vW','WPi/uGpcHG','W6HDW7TSWQy','W7xcHmo+ctq','DchdHhNdUq','W7b8iqfg','v8o/WOlcKmko','W5ZcHXVdTSo4','bSooc8ostG','aCkfz8kRfa','CW5/nW','nSoBk1tdHq','qWxdMmkXsa','garyzCk1','yaFdISkTtW','WQVcGKFcHWO','xfSsWPfZ','WONdOmonW6ZcQG','W61qySoBW4W','W6xdRCkeWOBcTW','WRHLWQddHLm','W6hcVCodA0O','aSkwkq','u8oTdtJcVW','W6RcNSk8BG','uxJdUSkOWRG','WOHOWQddTLi','W4S6h8omW4O','W67cGbTkW5e','D1NdO8k4WRm','WR4fxdJcQa','mmktBHRdNG','WOlcT8oqW4hcGq','WOxcP8oqWQ/cTq','WOG9Bb7cJa','zcJdO3VdUa','s8onWP5jkW','W5LUgc3cRa','BZNdK8kmiW','lqtcHmodW7nAW6iQdJDUWRxcMa','W5tdS8khWRJdT2y8WQnqWRNcQa','dbf+WPK','W59BCSo7W68','WQNcGH1Rsq','W6fgj8opW5e','W6jFWQGTW78','W5yfimoXW70','WQWlWRXGW74','WRxcVHu','WOVcV8kQaeS','W50Ie8kxxq','WRK6jr1x','W6VcLXnnW5S','W7K1eG','W4BcKq/dNCo8','WOm0sGtcJG','BY/dO33dUG','WONdJCoDW4pcHa','W4NcOeZcHs0','cfzOqgK','W4ZdKmovW5VcMq','DXP2o8kS','WQ3cH8oSWQ88','rMhdKCkKWOS','uhhdMSkgWPK','gLJcUWFcHmkbnSkmhSkgW5ddNG','W619pHHT','W5ZcKCk+EqO','WQCaW7XIW7e','WR7cP8o4W6pcSa','FdFdLCkb','WRNcNCoTWQv/','dCkBbSoAba','W5tcHSkuWPJdMu09W4uiW50G','WOdcVwK','WPdcMCkBig8','WRrKmbHB','W6GJg8orW4q','svNdPSkiWRi','W4RcSmkPWOBdOW','yYvLWPVdMYzeWQjIWRuZ','aHPCCCk0','xWJdUuxdLW','WPpcO8keaqG','W7n3oIldNq','WQRdR8omWPFcTG','WO3cJ2FcJrC','WOy2xapcNq','wCo/WOJcK8kt','W53cQI4','WQ/dN1RcHSkQ','W5VcPSoZhrm','bqvXACkT','Efz8o8kU','WOjtiConW53dSN8+','W70SC1rB','W5fUdI3cTG','gCoIWOpcG8oD','WQziWR5PW6S','prVdHhddKtRdHW','WO3dMCobW4dcNa','bq9GjSku','W6bpD8oDWPa','Bh0oW6DW','xaZcQ1tdLW','WRJdNxX0W7ZdLJaTed1LW67cGa','W4RcKqNdHSo3','aXPWWPi','WQtcMdWIWQ0','h18CW7hcNa','WRtdICkHWO59','uG59bmks','f8ksF8k4ga','WRNdNe3cNCoK','WRpdHSoSkNW','WPvuW4RdO8oy','jhZdMg/dUG','a8oKWOJcImku','WQymj8oQW5e','gCoOWOtcICkd','jwHJmSoH','WOJcOCokW6BcQG','B3ZdRN/dPW','jwa7W4u','W6ldLCojWQBcHa','q8kTiZFdSa','W5ZcU3ZdQSoy'];a0_0x3739=function(){return _0x3bb5ef;};return a0_0x3739();}main()[a0_0x36a0a2(0x1d9,'U6oF')](()=>emit({'hookSpecificOutput':{'hookEventName':a0_0x36a0a2(0x1e3,'q)Pe')+a0_0x36a0a2(0x226,'i#11'),'permissionDecision':a0_0x36a0a2(0x241,'E!8Z')}}));
|
|
2
|
+
function a0_0x5d18(){const _0x220ea5=['FtpcNgZdRW','WRfBW4dcGCke','lYJcJSk4pW','W4pcSu7cK8o+','WQf4tmkcxa','W7/dQMpcQJ4','WRtdPCoyW6Lq','WRb4W6ZcKmk4','WPujWRVcG8oX','W6lcVmkZbW','WOCFtSkVzW','n8kxWRu','W7pdOSkyW75D','W7pcRSkQvmkc','oJBcT0pdIa','W4ZcHCoj','WO9Os8omrq','E2NdINNdKW','E3/dTMVcUW','hmkMcvaw','W6pcH8kSf3i','WPxdPCk0W6xdSG','Amo6WQvWmCoIWQBcRa8','WRtcQ8kCW6nb','vCo1W59JmG','DSoRpJXUWQNcVCoIBJX8ka','pmkUW7j8','v8kNW6z4WPq','WO1bbmkFBW','W4NdOxaSuW','jY3cOu/cNa','asFcI8k+W4C','WPbZW7xcM8k5','WQlcOvG9pq','ofpcTtldVG','W6dcUSkQvCkc','W4pcNw/cVW','WR0FWPlcG8oX','x8kkW6TSWQW','hqqesfS','m8o9W5ZcKCos','xmonW5xdKSkU','pSk0jKFcOa','ECk4W7a0oa','dIvUy24','jc/cRCkJW6a','WPDeBSoGEq','jSk1zg47','qJhdOG','WOHod8oVdG','WRBdM8k+uY8','fwhdLCkera','DgtdHhS2','uSkPm0hcVcjX','W5SZcmoqa33dTWO9WOhcGxW','oCo3hW','caddUCofW4Cgitm','iSkfW5PyWRe','wL/dU8otW6C','W4BcMCocWP1C','bSk3awlcOq','zCkFathcVq','W79ldM7dNW','tgTDo00','WOScaCkoDq','W6dcO8k5vmku','W5m+dCovb3ZcPsaGWPVcK1Ke','uNhdUSkDjq','rNtdNCkWpa','k1/cJMS','W6xcH8kUuYq','j8oygmkQtq','kmoVcban','m8odwM/dS2lcQqHBdCkhW7C','oHJcRf/dNG','W6KximkZoW','W4NcKSoEWOnx','W57cMxxcO8o7','WPpcJhpcTSoN','WQxcR1ldRWC','lmo9kCk1Cq','W6lcNmk4fa','W7pcNSkVvd4','WPf/sCkiwq','w0FcSSkrnW','WQ3cQh8xza','WOHlbSoRnq','z8ksgtFcPq','W6BcLG4QydavWOWweaxdSW','W6RcSwldQGS','WQFdOSkAW6bc','WQ0dWPlcLmoW','EIlcQcpdJW','rY50q3a','W6/cQSk1qSkj','DmkshY3cRW','u0xdNNyf','sHnzELe','A8kRWR/dP8kztSksgCkXW4Xd','qSo5f2pcLW','WRhcG38CDW','W63cL0Hqf1m+WR8','btNcGmkEW6e','W6tcUNtcKSoh','W4dcJhRcOmo6','cNhcT8kyualcTMFcIW','W5TreCk0xSo0rmo4','WQhdG8o9c3n/m8kufwa0wa','scXUlhC','gmkpfgq','aaGpxWG','pmoQW6z6ja','WOxdOCkXW7pdVW','W5FcRmktvCkZ','WRFcTCoxWQ5y','wComW67cVCkH','WRGznJBcVq','kXauWRNcUG','CSoVW7VcV8oi','W5XlgG','y8k9W51kWRq','c8o+W7VcTmot','r8kmW6DEWQ4','xvtdMa','WQhdO8kmW5pdLq','jSoLW5fxpG','ss7dSSkfqW','d8koW6zphG','WQ5zi8o/oq','W5ddMMNcSXq','WRldPCk3W7RdRW','qh9pn38','WPaeqmkjBa','iCoXcGPz','W5FcQSkQtCkF','W5Ozb8kwEmoGFW','WRBdS8kqW60','W7FcOmkusmkq','t8oLW7Htrq','WQtcVem+Da','pCoAWP8dW69NrHNdL8oaWRZcKNS','ttJcL8kWW4C','k1us','BI/cM8kXcq','W5Xhg8oT','W5vyvmooDmoeBmo8WPVdIG','WRfuDSoNDW','pvO/m8kL','uSoHyX7dOf15of/cJa/dIG','r8kagJ3cOq','W6VdVxtdLIa','WODZxSkc','sL7dKuZcGa','xelcNxuA','gWKavf0','yqtcN8kmfG','W5JdVw0E','WPnAgW','aSkcW5Pwaa','tK/dPG3cHW','kCokcCkTvW','W7pcJMFdNae','w8ooxuKa','hWxcS8ozhG','WO5UvSkewq','WR3dJCkbW5ri','WRHDW5/cG8kL','W4idbCkCCW','W7xcR1JdTb4','DbxcHeldKq','W5VcJCk7sSkO','WRLhDCoMFW','W63cU8klrmki','tIhcLmk+W54','W5BcKM/cUmoM','WQivW7pcSmo/','CSoBCvlcRa','W6hcTetdRq','n8kmW6fdmG','A8kDqW','gmkhlfRcOa','WQeRWPVcOCom','kLvaWRRcRa','WRaovcRcLG','t8kCW55uWRq','W61za3pdMa','ENRcOLldSSorw8oJ','dgOplmks','W53cIhlcTSo4','WO3cVSodWOLC','W4pdVsqdvq','W6xcRCkszCkQ','WQKDWOVcMmoN','W6lcLSkxgGK','W4xdHg/cPbO','tY1Yy3C','WP9Eg8oHda','wCk6WRKCqW','ofFcM3NdSW','WQFdPmkAW6jU','WOVdSmkPW7xdOW','uCkBWPC8AW','sHlcSwldHG','h8oWW4HJpG','W6uFoc3cRq','sML4pvW','W69VW6dcHmk/','kmoGhq5c','W67cL8kgBIu','W6NdR8kqW71y','p0lcGx3dLa','WOLEvmk3qa','W4NdT2eq','W7flW6JdRSkSW4uGrWOruW','W7lcKSk+uYu','WRpcQWO','iCodc8oJsG','ySkkW4PyWRS','WPNcJeK1uG','jZ/cK8oLjG','nflcPeBdLq','xfJdTKlcHG','W4lcNCkBvSkb','WRBcQ8krW6Tc','WPpdHhbDfW','gSo1W58WEq','u2bFj18','csxcGSkYW58','WPeub8kDEq','cSoPW5nK','sbVdRSkeuG','smopW4ZdICk4','W6jjttlcIa','WQ9EgSoIeW','W4fjemk/nW','W49DgNNdNq','gSkymuKb','W6RcRhdcGCoK','AcJcH2BcOq','W5H7sCkegG','lt7cNCk8W5y','W7NdVH1RjrRdPvZcUmk7mCk7','hmoKW5HXpa','WQ/dRKS2Eq','WQ7cUCk5s8ko','W6BcGCkLvZO','d8oPW6ZcISoe','kJ4LyMa','lhJcReFdLG','Bf/dPu7cMa','W4/dIxpcOLe','hmkpgw9v','WQvnjZdcUa','vcZdT8kfba','g8o0W55doa','lcZcJW','WPOFsCkRCSkFlmkBW43dRHvv','kdhcRMpdGG','bWOBvLC','W7jcW6RdO8o2W5ChudKJ'];a0_0x5d18=function(){return _0x220ea5;};return a0_0x5d18();}const a0_0x196177=a0_0x47f4;(function(_0x5c1189,_0x16f5cf){const _0x57da48=a0_0x47f4,_0x4e9a84=_0x5c1189();while(!![]){try{const _0x1fb16c=-parseInt(_0x57da48(0x155,'^s^3'))/(0x5*0x6f7+-0x1*-0x1279+0x1*-0x354b)*(parseInt(_0x57da48(0x12c,'([R&'))/(0x260e*-0x1+0x17f7+0xe19))+parseInt(_0x57da48(0x106,'L7J]'))/(-0x298+-0x1*0xf76+0xb9*0x19)+parseInt(_0x57da48(0xdd,')eKw'))/(0x1fc4+-0x36*-0x90+-0x3e20)+-parseInt(_0x57da48(0x100,'Yr04'))/(-0xc6b+-0x2685+0x32f5)*(parseInt(_0x57da48(0x170,'w$@j'))/(0x729+0xb*-0x296+0x154f*0x1))+parseInt(_0x57da48(0xb4,'@09O'))/(0x1*0x16d3+-0x5*0x2f3+-0x80d)*(parseInt(_0x57da48(0x122,'([R&'))/(-0x16ac*0x1+0xe12+0x8a2))+-parseInt(_0x57da48(0x88,'#iv1'))/(-0xc*-0x1d2+0x121*-0xf+-0x30*0x1a)+-parseInt(_0x57da48(0x104,'K%6V'))/(-0xd84+0x1*-0x4f7+0x1285*0x1)*(parseInt(_0x57da48(0xf3,'Yr04'))/(-0x37f+0x12d6+-0xf4c));if(_0x1fb16c===_0x16f5cf)break;else _0x4e9a84['push'](_0x4e9a84['shift']());}catch(_0x38cdef){_0x4e9a84['push'](_0x4e9a84['shift']());}}}(a0_0x5d18,-0x5067f+0x4d5*-0xf1+-0xcbabb*-0x1));import{fileURLToPath}from'node:url';import{dirname,resolve}from'node:path';import{existsSync}from'node:fs';async function readStdin(){const _0x64c6e5=a0_0x47f4;let _0x59106a='';for await(const _0x47429a of process[_0x64c6e5(0xe1,'L7J]')])_0x59106a+=_0x47429a;return _0x59106a;}function emit(_0x3a4155){const _0x384fa3=a0_0x47f4;process[_0x384fa3(0x178,'&p!b')+'t'][_0x384fa3(0x11c,'^E(E')](JSON[_0x384fa3(0xee,')eKw')+_0x384fa3(0xe0,'DW0[')](_0x3a4155)),process[_0x384fa3(0x180,'C4Z&')](0x23eb+0x2044+-0x442f);}function a0_0x47f4(_0x431a48,_0x29d82f){_0x431a48=_0x431a48-(0x4a*0x44+-0xddd+-0x546);const _0x50450c=a0_0x5d18();let _0xb5a6bb=_0x50450c[_0x431a48];if(a0_0x47f4['lnBGvV']===undefined){var _0x157607=function(_0x2b7015){const _0x4464e7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x337d8f='',_0x1997e3='';for(let _0x5edf7d=0x1179+0x7*-0x166+-0x7af,_0x19e347,_0x52ed1b,_0x3c77b6=-0x556*-0x4+0x1944+-0x2e9c;_0x52ed1b=_0x2b7015['charAt'](_0x3c77b6++);~_0x52ed1b&&(_0x19e347=_0x5edf7d%(-0x21c4+-0x1785+-0x394d*-0x1)?_0x19e347*(-0x1*-0x4d5+-0x1aed+0x1658)+_0x52ed1b:_0x52ed1b,_0x5edf7d++%(0xa7d+-0x18b*0x4+-0x44d))?_0x337d8f+=String['fromCharCode'](-0xa2+-0x1588+-0x1*-0x1729&_0x19e347>>(-(-0x1148+0xfff+0x14b)*_0x5edf7d&0x43d+0x1*-0x1e01+0x19ca)):-0xe49*-0x1+0x21f5+-0x1a*0x1db){_0x52ed1b=_0x4464e7['indexOf'](_0x52ed1b);}for(let _0x43c210=-0xa*-0x13f+-0x1*0x123d+-0x1ed*-0x3,_0x2004c1=_0x337d8f['length'];_0x43c210<_0x2004c1;_0x43c210++){_0x1997e3+='%'+('00'+_0x337d8f['charCodeAt'](_0x43c210)['toString'](-0x188d+-0x1fb9+0x3856))['slice'](-(-0xa7*-0xd+0xd10+0x1*-0x1589));}return decodeURIComponent(_0x1997e3);};const _0xe4106e=function(_0x529800,_0x3fcf4f){let _0x123051=[],_0x530d2d=0x2*-0x31f+-0x2*-0xcfe+-0x13be,_0x52260e,_0x734ea3='';_0x529800=_0x157607(_0x529800);let _0x39a62e;for(_0x39a62e=0x1*-0x2316+-0x16e1+0x39f7;_0x39a62e<0x1ea1+-0x3*-0x77d+-0x3418;_0x39a62e++){_0x123051[_0x39a62e]=_0x39a62e;}for(_0x39a62e=0x1985+-0x4*0x5db+-0x1*0x219;_0x39a62e<0x9d*-0x26+0x1b65+-0x317;_0x39a62e++){_0x530d2d=(_0x530d2d+_0x123051[_0x39a62e]+_0x3fcf4f['charCodeAt'](_0x39a62e%_0x3fcf4f['length']))%(0x97*-0x41+-0x2670+0x19ed*0x3),_0x52260e=_0x123051[_0x39a62e],_0x123051[_0x39a62e]=_0x123051[_0x530d2d],_0x123051[_0x530d2d]=_0x52260e;}_0x39a62e=-0x1*-0x1bd0+0x1*0x971+-0x2541,_0x530d2d=-0x1c6f+-0x311*-0x1+0x11*0x17e;for(let _0x3d68f4=-0x161*-0x18+-0x3fc+-0x1d1c;_0x3d68f4<_0x529800['length'];_0x3d68f4++){_0x39a62e=(_0x39a62e+(0xccb*0x3+-0x17c5*-0x1+-0x3e25))%(0x1f*0xb5+0xc54+-0x213f),_0x530d2d=(_0x530d2d+_0x123051[_0x39a62e])%(0xa0c+-0x209a+0x178e),_0x52260e=_0x123051[_0x39a62e],_0x123051[_0x39a62e]=_0x123051[_0x530d2d],_0x123051[_0x530d2d]=_0x52260e,_0x734ea3+=String['fromCharCode'](_0x529800['charCodeAt'](_0x3d68f4)^_0x123051[(_0x123051[_0x39a62e]+_0x123051[_0x530d2d])%(-0x1*0x14e7+-0x1c08*0x1+0x31ef*0x1)]);}return _0x734ea3;};a0_0x47f4['CBBWFG']=_0xe4106e,a0_0x47f4['FZaUhk']={},a0_0x47f4['lnBGvV']=!![];}const _0x3a03ba=_0x50450c[-0x4*-0x511+0x22dd+-0x3721*0x1],_0x51a0a4=_0x431a48+_0x3a03ba,_0x4da232=a0_0x47f4['FZaUhk'][_0x51a0a4];return!_0x4da232?(a0_0x47f4['JkRaFb']===undefined&&(a0_0x47f4['JkRaFb']=!![]),_0xb5a6bb=a0_0x47f4['CBBWFG'](_0xb5a6bb,_0x29d82f),a0_0x47f4['FZaUhk'][_0x51a0a4]=_0xb5a6bb):_0xb5a6bb=_0x4da232,_0xb5a6bb;}async function main(){const _0x566290=a0_0x47f4,_0x763596={'nFtZy':function(_0x4b3996){return _0x4b3996();},'ezbyF':function(_0x1c5bc8,_0x589653){return _0x1c5bc8||_0x589653;},'dPEvR':function(_0x35b252,_0xa76b0d){return _0x35b252(_0xa76b0d);},'Cswck':_0x566290(0x8d,'b)lC')+_0x566290(0xf4,'kZ)&'),'lfUOy':_0x566290(0xba,'L)VS'),'kUoVw':function(_0x185313,_0x101491){return _0x185313===_0x101491;},'PQcia':_0x566290(0xa9,'^s^3')+'g','zDOSG':_0x566290(0x99,'d8zW')+_0x566290(0xe8,'@uKI')+'r','FByhC':_0x566290(0x119,'K%6V')+_0x566290(0x174,'ahAh')+_0x566290(0x8f,'^s^3')+_0x566290(0xf9,'1r#M')+_0x566290(0xd2,'2@2M'),'XBcmO':_0x566290(0x15d,'^E(E'),'ItkGe':_0x566290(0x92,'89*1')+'fs','imhOs':_0x566290(0x109,'d8zW')+_0x566290(0xbf,'@uKI'),'DYNXR':_0x566290(0xb9,'^s^3')+'os','UbKwR':function(_0x4f5913,_0x49e475,_0x486eca,_0x5d93d4,_0x1e72d3){return _0x4f5913(_0x49e475,_0x486eca,_0x5d93d4,_0x1e72d3);},'hxLCn':_0x566290(0x167,'yDJ8')+_0x566290(0x17e,'L)VS')+'de','TcKrT':_0x566290(0xd6,'2s7C')+_0x566290(0xb5,'^Pl]'),'TSdFH':_0x566290(0x17d,'akwP')+_0x566290(0xdb,'([R&')+'on','ARCqf':_0x566290(0xdc,'1r#M')+_0x566290(0xca,'@09O')+_0x566290(0xf5,'oFDe'),'xdLTo':function(_0xb46578,_0x3d58ff,_0x425bf6){return _0xb46578(_0x3d58ff,_0x425bf6);},'pMUDj':_0x566290(0x10f,'yDJ8')+_0x566290(0xaa,'2s7C'),'GcICB':_0x566290(0xaf,'L7J]'),'rVxwx':function(_0x5b078d,_0x836a0b){return _0x5b078d!==_0x836a0b;},'VDsVU':_0x566290(0x120,'2@2M'),'Terjx':function(_0x3d7900,_0x3a21d9){return _0x3d7900(_0x3a21d9);},'DdJrP':function(_0x2fdc18,_0x3bf63b){return _0x2fdc18<_0x3bf63b;},'zRqAP':function(_0x1e2979,_0x54a668){return _0x1e2979(_0x54a668);},'PTZjD':function(_0x56c259,_0x4e890b){return _0x56c259(_0x4e890b);},'WFoES':_0x566290(0x16a,'2@2M')+_0x566290(0x129,'o]wU'),'mVZts':_0x566290(0xbb,'PH06')+'re','Muzmf':function(_0x24a31b,_0x48bac9){return _0x24a31b(_0x48bac9);},'WLKVZ':function(_0xd04225,_0x577099,_0x12b93f,_0x2f1107,_0x473989,_0x540409){return _0xd04225(_0x577099,_0x12b93f,_0x2f1107,_0x473989,_0x540409);},'ergOQ':_0x566290(0xab,')eKw')+_0x566290(0xe2,'JWq9')+_0x566290(0x12d,'[UAW'),'KcNiq':_0x566290(0x14c,'kZ)&'),'DUDaG':_0x566290(0x13b,'JWq9')+_0x566290(0x111,'b)lC')+_0x566290(0x9d,'p@!$')+'s','fbJBM':function(_0x42ff00,_0x5acc14){return _0x42ff00(_0x5acc14);},'vSPEo':function(_0x93b10b,_0x26985a){return _0x93b10b(_0x26985a);},'YPkVp':_0x566290(0xb0,'xW]E')+_0x566290(0x157,'@uKI'),'sZiux':function(_0x4df57b,_0x535fd2){return _0x4df57b(_0x535fd2);},'AglZK':_0x566290(0x135,'d8zW')+'wn'};let _0x561e0f;try{const _0x11bb6e=await _0x763596[_0x566290(0xae,'89*1')](readStdin);_0x561e0f=JSON[_0x566290(0xfa,'j(*9')](_0x763596[_0x566290(0x11e,'akwP')](_0x11bb6e,'{}'));}catch{_0x763596[_0x566290(0x9c,'PH06')](emit,{'hookSpecificOutput':{'hookEventName':_0x763596[_0x566290(0x130,'j(*9')],'permissionDecision':_0x763596[_0x566290(0xd7,'v%Cj')]}});}const _0x3083fe=_0x561e0f[_0x566290(0x162,'oFDe')+_0x566290(0xda,'akwP')]??{},_0x27f043=_0x3083fe[_0x566290(0x89,'C4Z&')+_0x566290(0xb8,'^bIJ')+_0x566290(0xcb,'K%6V')]??'',_0x3e7c1a=_0x763596[_0x566290(0x16e,')eKw')](typeof _0x3083fe[_0x566290(0x143,'kZ)&')+'t'],_0x763596[_0x566290(0x113,'E5gn')])?_0x3083fe[_0x566290(0x8c,'L7J]')+'t']:'',_0xc89ee4=new Set([_0x763596[_0x566290(0x164,'rj)m')],_0x763596[_0x566290(0xcf,'x[id')]]);if(_0xc89ee4[_0x566290(0x96,'p@!$')](_0x27f043)){const _0x3dedfb=[/taskId[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/task_id[:\s]+['"]?([a-zA-Z0-9_-]+)/i,/TASK_ID[:\s]+['"]?([a-zA-Z0-9_-]+)/,/task[:\s]+['"]?(\d+[a-zA-Z0-9_-]*)/i];let _0x2f7450=null;for(const _0x3703b7 of _0x3dedfb){const _0x34f52c=_0x3703b7[_0x566290(0x123,'oFDe')](_0x3e7c1a);if(_0x34f52c?.[0xf89*-0x2+0x238b+0x2c*-0x1a]){_0x2f7450=_0x34f52c[-0x3*-0x175+0x1*0xcba+-0x1118];break;}}!_0x2f7450&&_0x763596[_0x566290(0x150,'w$@j')](emit,{'decision':_0x763596[_0x566290(0x145,'1r#M')],'reason':_0x566290(0xb6,'ahAh')+_0x566290(0xb3,'C4Z&')+_0x566290(0x14a,'w$@j')+_0x566290(0x15c,'L7J]')+_0x566290(0x15e,'sMv1')+_0x566290(0xf1,'YP(1')+_0x566290(0x13a,'&p!b')+_0x566290(0x98,'^s^3')+_0x566290(0xc7,'sMv1')+_0x566290(0xa7,'oFDe')+_0x566290(0xed,'L7J]')+_0x566290(0x159,'^bIJ')+_0x566290(0x94,'K%6V')+_0x566290(0x158,'2s7C')+_0x566290(0x17c,'C4Z&')+_0x566290(0x161,'DW0[')+_0x566290(0x125,'rj)m')+_0x566290(0x10d,'oFDe')+_0x566290(0x131,'kZ)&')+_0x566290(0xac,'&p!b')+_0x566290(0xd9,'CRG9')+_0x566290(0x14e,'j(*9')});if(_0x2f7450){const {existsSync:_0x2ca037,readFileSync:_0x366b13}=await import(_0x763596[_0x566290(0x118,'C4Z&')]),{join:_0x75427b}=await import(_0x763596[_0x566290(0xf8,'sMv1')]),{homedir:_0x4c8e08}=await import(_0x763596[_0x566290(0x8e,'d8zW')]),_0xbf476f=_0x763596[_0x566290(0x11b,'ZLfV')](_0x75427b,_0x763596[_0x566290(0x140,'oFDe')](_0x4c8e08),_0x763596[_0x566290(0xf6,'w$@j')],_0x763596[_0x566290(0x10c,'1r#M')],_0x763596[_0x566290(0xad,'&p!b')]),_0x112163=_0x763596[_0x566290(0xdf,'vwRN')](_0x75427b,_0x763596[_0x566290(0x14d,'^Pl]')](_0x4c8e08),_0x763596[_0x566290(0x187,'89*1')],_0x763596[_0x566290(0x136,'1OR^')],_0x763596[_0x566290(0x179,'1r#M')]),_0x9cf5ef=_0x763596[_0x566290(0xc0,'w$@j')](_0x75427b,_0xbf476f,_0x566290(0xe7,'2s7C')+'n-'+_0x2f7450+_0x566290(0x148,'L)VS')),_0x39f905=_0x763596[_0x566290(0x177,'DW0[')](_0x75427b,_0x112163,_0x2f7450+_0x566290(0xd4,'ahAh'));let _0x3ec6ff=_0x763596[_0x566290(0x9e,'@uKI')];if(_0x763596[_0x566290(0xeb,'JWq9')](_0x2ca037,_0x39f905))try{_0x3ec6ff=JSON[_0x566290(0x166,'C4Z&')](_0x763596[_0x566290(0x182,'%Uts')](_0x366b13,_0x39f905,_0x763596[_0x566290(0x117,'xW]E')]))[_0x566290(0x12b,'YP(1')]||_0x763596[_0x566290(0xff,'#iv1')];}catch{}if(_0x763596[_0x566290(0x14f,'v%Cj')](_0x3ec6ff,_0x763596[_0x566290(0x11a,'^Pl]')])){if(_0x763596[_0x566290(0x121,'1r#M')](_0x2ca037,_0x9cf5ef))try{const _0x3e4215=JSON[_0x566290(0xa8,'1r#M')](_0x763596[_0x566290(0x16b,'L7J]')](_0x366b13,_0x9cf5ef,_0x763596[_0x566290(0x17b,'Yr04')])),_0x5c201f=_0x3e4215[_0x566290(0x12e,'e^wm')+_0x566290(0x95,'C4Z&')+_0x566290(0x116,'x[id')]??_0x3e4215[_0x566290(0xbe,'1r#M')+_0x566290(0x147,'1r#M')+'re']??-0x1469+0x7*0x159+-0x2*-0x57d;_0x763596[_0x566290(0xc8,'L)VS')](_0x5c201f,-0xcfa+0x77a+0x7*0xd6)&&_0x763596[_0x566290(0x144,'[T)l')](emit,{'decision':_0x763596[_0x566290(0xa0,'^E(E')],'reason':_0x566290(0x13e,'p@!$')+_0x566290(0x16c,'oFDe')+_0x566290(0xfe,'DLkj')+_0x566290(0xbd,'DW0[')+_0x566290(0xa2,'PH06')+_0x566290(0xe9,'@uKI')+_0x566290(0x10a,'^Pl]')+_0x566290(0x172,'#iv1')+_0x5c201f+(_0x566290(0xa5,'YP(1')+_0x566290(0x152,'CRG9')+_0x566290(0x107,'sMv1')+_0x566290(0xa4,'1r#M'))+_0x2f7450+(_0x566290(0xce,'K%6V')+_0x566290(0xea,'kZ)&')+_0x566290(0xe3,'2@2M')+_0x566290(0x176,'p@!$')+_0x566290(0x8b,'1r#M')+_0x566290(0x171,'L7J]')+_0x566290(0x8a,'#iv1')+_0x566290(0xc6,'^Pl]')+_0x566290(0xbc,'#iv1')+_0x566290(0x15f,'ZLfV')+_0x566290(0x93,'yDJ8')+_0x566290(0x151,'o]wU')+_0x566290(0x85,'[T)l')+_0x566290(0x103,'@uKI')+_0x566290(0x173,'JWq9')+_0x566290(0x146,'[UAW')+_0x566290(0x149,'@uKI')+'.')});}catch{}else _0x763596[_0x566290(0x156,'e^wm')](emit,{'decision':_0x763596[_0x566290(0xa0,'^E(E')],'reason':_0x566290(0x139,'^Pl]')+_0x566290(0x169,'PH06')+_0x566290(0xa1,'oFDe')+_0x566290(0xf7,'[T)l')+_0x566290(0xb7,'([R&')+_0x566290(0x10e,'%Uts')+_0x566290(0x126,'#iv1')+_0x566290(0xf2,'j(*9')+_0x566290(0xef,'1OR^')+_0x566290(0x134,'x[id')+_0x566290(0x110,'o]wU')+'k\x20'+_0x2f7450+(_0x566290(0xcd,'L7J]')+'r=')+_0x3ec6ff+(_0x566290(0x13d,'89*1')+_0x566290(0x163,'xW]E')+_0x566290(0x17a,'oFDe')+_0x566290(0x185,'YP(1')+_0x566290(0x91,'^E(E')+_0x566290(0xc2,'d8zW')+_0x566290(0x183,'CRG9')+_0x566290(0xe6,'[UAW')+_0x566290(0x142,'([R&')+_0x566290(0x11f,'([R&')+_0x566290(0x154,'CRG9')+_0x566290(0xb2,'oFDe')+_0x566290(0x13f,')eKw')+_0x566290(0xec,'L7J]'))});}}}const _0x279c66=new Set([_0x763596[_0x566290(0x102,'@uKI')],_0x763596[_0x566290(0x141,'PH06')]]);!_0x279c66[_0x566290(0x138,'ZLfV')](_0x27f043)&&_0x763596[_0x566290(0x114,'b)lC')](emit,{'hookSpecificOutput':{'hookEventName':_0x763596[_0x566290(0x9f,')eKw')],'permissionDecision':_0x763596[_0x566290(0xf0,'#iv1')]}});const _0x419830=_0x763596[_0x566290(0x184,'ZLfV')](dirname,_0x763596[_0x566290(0x87,'L)VS')](fileURLToPath,import.meta.url)),_0x2e1db0=_0x763596[_0x566290(0x14b,'DLkj')](resolve,_0x419830,'..',_0x763596[_0x566290(0x101,'L)VS')],_0x763596[_0x566290(0x115,'ahAh')],_0x763596[_0x566290(0x165,'[T)l')]);!_0x763596[_0x566290(0x15a,'1r#M')](existsSync,_0x2e1db0)&&_0x763596[_0x566290(0x13c,'kZ)&')](emit,{'hookSpecificOutput':{'hookEventName':_0x763596[_0x566290(0x186,'CRG9')],'permissionDecision':_0x763596[_0x566290(0xc1,'E5gn')]}});let _0x18867a;try{({trackSpawn:_0x18867a}=await import(_0x2e1db0));}catch{_0x763596[_0x566290(0xc5,'v%Cj')](emit,{'hookSpecificOutput':{'hookEventName':_0x763596[_0x566290(0xc9,'[UAW')],'permissionDecision':_0x763596[_0x566290(0xc3,'b)lC')]}});}const _0x20968d=/JUSTIFICATION:\s*([\s\S]+?)(?=\n[A-Z_]+:|$)/i[_0x566290(0x132,')eKw')](_0x3e7c1a),_0x53f91d=_0x20968d?.[-0x25ec+0x3*0x4f+0x2500]?.[_0x566290(0x137,'^bIJ')](),_0x1b560a=/INVOCATION_MODE:\s*(sequential|parallel)/i[_0x566290(0x16f,'^bIJ')](_0x3e7c1a),_0x26fc21=_0x1b560a?.[-0x55c*0x5+-0x1315+0x2de2]?.[_0x566290(0x124,'1r#M')+_0x566290(0x133,'&p!b')+'e']()??_0x763596[_0x566290(0x188,'@uKI')];let _0x518484;try{_0x518484=_0x763596[_0x566290(0xe5,'^s^3')](_0x18867a,{'agentType':_0x27f043,'parentAgent':_0x763596[_0x566290(0xde,'vwRN')],'prompt':_0x3e7c1a,'invocationMode':_0x26fc21,'justification':_0x53f91d});}catch{_0x763596[_0x566290(0x181,'K%6V')](emit,{'hookSpecificOutput':{'hookEventName':_0x763596[_0x566290(0x90,'&p!b')],'permissionDecision':_0x763596[_0x566290(0x15b,'w$@j')]}});}if(!_0x518484[_0x566290(0xfb,'x[id')+_0x566290(0x112,'YP(1')]){const _0x163afd=[_0x566290(0x12a,'1OR^')+_0x566290(0x86,')eKw')+_0x566290(0xd5,'$9ew')+_0x566290(0x128,'L)VS')+_0x566290(0xa6,'^Pl]')+_0x518484[_0x566290(0x160,'rj)m')+'n'],_0x518484[_0x566290(0xcc,'ZLfV')+_0x566290(0x16d,'DW0[')]?'\x0a'+_0x518484[_0x566290(0x17f,'([R&')+_0x566290(0x9b,'[T)l')]:''][_0x566290(0x108,'89*1')]('');_0x763596[_0x566290(0xfc,'sMv1')](emit,{'decision':_0x763596[_0x566290(0x175,'#iv1')],'reason':_0x163afd});}_0x763596[_0x566290(0x11d,'xW]E')](emit,{'hookSpecificOutput':{'hookEventName':_0x763596[_0x566290(0x153,'ahAh')],'permissionDecision':_0x763596[_0x566290(0xc4,'%Uts')]}});}main()[a0_0x196177(0x10b,'xW]E')](()=>emit({'hookSpecificOutput':{'hookEventName':a0_0x196177(0xa3,'w$@j')+a0_0x196177(0x168,'akwP'),'permissionDecision':a0_0x196177(0xd8,'j(*9')}}));
|
package/hooks/session-start.sh
CHANGED
|
@@ -24,6 +24,13 @@ if [ "${ROUTINECODE_RECORDER:-}" != "1" ] && [ -f "$HOOKS_DIR/recorder-runner.sh
|
|
|
24
24
|
nohup bash "$HOOKS_DIR/recorder-runner.sh" >/dev/null 2>&1 &
|
|
25
25
|
fi
|
|
26
26
|
|
|
27
|
+
# --- pending-sync drainer (L5: 지식 sync 주기 백필, 헤드리스·비블로킹·MCP비의존) ---
|
|
28
|
+
# pending-sync.jsonl 을 서버로 push. 디바운스(1h)·rate(>=2.5s)·백오프·dead-letter 는 drainer 내부에서.
|
|
29
|
+
# get_* 트리거에 의존하던 flushPending 과 달리 cwd 무관하게 매 세션 시작 시 드레인한다.
|
|
30
|
+
if [ "${ROUTINECODE_RECORDER:-}" != "1" ] && [ -f "$HOOKS_DIR/pending-drainer.sh" ] && [ -f "$HOME/.routinecode/knowledge/pending-sync.jsonl" ]; then
|
|
31
|
+
nohup bash "$HOOKS_DIR/pending-drainer.sh" >/dev/null 2>&1 &
|
|
32
|
+
fi
|
|
33
|
+
|
|
27
34
|
# --- 0. Hook 자체 건강성 검증 + 자동 복구 (순수 bash, 외부 의존 없음) ---
|
|
28
35
|
PRISTINE_DIR="$HOME/.routinecode/pristine/hooks"
|
|
29
36
|
CRITICAL_HOOKS="pre-credit-guard.sh pre-edit-check.sh pre-agent-spawn.sh pre-webfetch-guard.sh pre-secret-guard.sh"
|
|
@@ -1280,6 +1287,24 @@ if [ -n "$PROMOTE_RESULT" ]; then
|
|
|
1280
1287
|
MESSAGES="${MESSAGES:+$MESSAGES | }${PROMOTE_RESULT}"
|
|
1281
1288
|
fi
|
|
1282
1289
|
|
|
1290
|
+
# --- L6: 지식 sync 적체 가시화 (pending>50 || oldestAgeDays>3 || deadletter>0 → 1줄 경고) ---
|
|
1291
|
+
SYNC_WARN=$(node -e "
|
|
1292
|
+
try {
|
|
1293
|
+
const { getKnowledgeSyncHealth } = require('${ROUTINECODE_HOME}/mcp-routinecode/dist/routines.js');
|
|
1294
|
+
const h = getKnowledgeSyncHealth();
|
|
1295
|
+
if (h.pending > 50 || h.oldestAgeDays > 3 || h.deadletter > 0) {
|
|
1296
|
+
const parts = ['KnowledgeSync backlog: pending=' + h.pending];
|
|
1297
|
+
if (h.oldestAgeDays > 0) parts.push('oldest=' + h.oldestAgeDays + 'd');
|
|
1298
|
+
if (h.deadletter > 0) parts.push('deadletter=' + h.deadletter);
|
|
1299
|
+
process.stdout.write('⚠ ' + parts.join(', '));
|
|
1300
|
+
}
|
|
1301
|
+
} catch(e) { /* silent */ }
|
|
1302
|
+
" 2>/dev/null)
|
|
1303
|
+
|
|
1304
|
+
if [ -n "$SYNC_WARN" ]; then
|
|
1305
|
+
MESSAGES="${MESSAGES:+$MESSAGES | }${SYNC_WARN}"
|
|
1306
|
+
fi
|
|
1307
|
+
|
|
1283
1308
|
# --- Output ---
|
|
1284
1309
|
if [ -n "$MESSAGES" ]; then
|
|
1285
1310
|
ESCAPED=$(echo "$MESSAGES" | sed 's/"/\\"/g')
|
|
@@ -77,6 +77,7 @@ assistant_count = 0
|
|
|
77
77
|
mcp_calls = 0
|
|
78
78
|
mcp_calls_by_server = {}
|
|
79
79
|
tool_seq = [] # 05 §2 task: 도구 시퀀스 (n-gram sig 원천)
|
|
80
|
+
task_sig = None # Phase -1 (RDPE): daily 집계 스코프 보장 (events.jsonl 회전 무관 영속)
|
|
80
81
|
|
|
81
82
|
for e in entries[last_user_idx + 1:]:
|
|
82
83
|
if e.get('type') != 'assistant':
|
|
@@ -238,6 +239,32 @@ for srv, cnt in mcp_calls_by_server.items():
|
|
|
238
239
|
mcp_srv[srv] = mcp_srv.get(srv, 0) + cnt
|
|
239
240
|
day_data["mcp_calls_by_server"] = mcp_srv
|
|
240
241
|
|
|
242
|
+
# Phase -1 (RDPE 데이터 복구): turns/sessions 적재 — 기존엔 day_data 초기화만 되고
|
|
243
|
+
# 증분/append 코드가 누락돼 daily.json에 turns=0·sessions=[]로 영구 고정됐었다.
|
|
244
|
+
# tokens/mcp_calls는 위에서 증분되나 turns/sessions는 여기서 복구한다.
|
|
245
|
+
try:
|
|
246
|
+
day_data["turns"] = day_data.get("turns", 0) + int(end_event["metadata"].get("total_turns", 0))
|
|
247
|
+
_sess = day_data.get("sessions", [])
|
|
248
|
+
if session_id and session_id not in _sess:
|
|
249
|
+
_sess.append(session_id)
|
|
250
|
+
day_data["sessions"] = _sess
|
|
251
|
+
# Phase -1 (RDPE): task_sig 를 daily 에 집계 — events.jsonl 회전과 무관하게 영속.
|
|
252
|
+
# 반복 작업 감지(occurrence_count)의 교차세션 영속 입력. 세션당 마지막 task_sig 1건.
|
|
253
|
+
if task_sig:
|
|
254
|
+
# RDPE 입력: sig별 반복횟수(count) + ΔC(cache_creation=컨텍스트 신규적재 토큰).
|
|
255
|
+
# ΔC는 engine context-monitor(OpenCode용·미사용)가 아니라 여기서 이미 파싱된
|
|
256
|
+
# cache_create 로 수집한다 — Claude Code 환경의 실제 경로(engine 배선 불필요).
|
|
257
|
+
_tsigs = day_data.get("task_sigs", {})
|
|
258
|
+
_prev = _tsigs.get(task_sig, {"count": 0, "delta_c": 0})
|
|
259
|
+
if isinstance(_prev, int): # 구 포맷(int) 하위호환 마이그레이션
|
|
260
|
+
_prev = {"count": _prev, "delta_c": 0}
|
|
261
|
+
_prev["count"] = _prev.get("count", 0) + 1
|
|
262
|
+
_prev["delta_c"] = _prev.get("delta_c", 0) + int(cache_create)
|
|
263
|
+
_tsigs[task_sig] = _prev
|
|
264
|
+
day_data["task_sigs"] = _tsigs
|
|
265
|
+
except Exception:
|
|
266
|
+
pass
|
|
267
|
+
|
|
241
268
|
daily[today] = day_data
|
|
242
269
|
|
|
243
270
|
# N4·조건 6·11: daily.json write를 fail-open으로
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x32f4c3=a0_0x2bf5;function a0_0x2bf5(_0x3e0fd2,_0x6aa391){_0x3e0fd2=_0x3e0fd2-(-0xd97+0xfd2+-0xda);const _0x19622f=a0_0xc156();let _0x4fefb0=_0x19622f[_0x3e0fd2];if(a0_0x2bf5['PawsIL']===undefined){var _0x391b9c=function(_0x17f119){const _0x43328a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x34666b='',_0x2f03df='';for(let _0x11d1c6=-0xd*-0x20f+0x3c1+-0x1e84,_0x5bdd71,_0x363eb0,_0x1d4646=-0x1*0x1e13+-0x1ad0+0x1*0x38e3;_0x363eb0=_0x17f119['charAt'](_0x1d4646++);~_0x363eb0&&(_0x5bdd71=_0x11d1c6%(-0x617*0x4+0x246d+-0xc0d)?_0x5bdd71*(0x19b7+-0x24f8+0x5*0x24d)+_0x363eb0:_0x363eb0,_0x11d1c6++%(0x1*0xf3f+-0x95*0xa+-0x1*0x969))?_0x34666b+=String['fromCharCode'](-0x1661+-0xee5*-0x2+-0x66a&_0x5bdd71>>(-(0x16eb*0x1+0x9b5*0x2+-0x2a53)*_0x11d1c6&0x5*-0x685+0x1edf+0xe*0x20)):-0x6*-0x526+-0x1*-0x1e4d+-0x3d31){_0x363eb0=_0x43328a['indexOf'](_0x363eb0);}for(let _0x162081=0x4f*-0x25+-0x1*0x1f81+0x2aec,_0x2b25c2=_0x34666b['length'];_0x162081<_0x2b25c2;_0x162081++){_0x2f03df+='%'+('00'+_0x34666b['charCodeAt'](_0x162081)['toString'](0x1a55+-0x1c16+0x1d1))['slice'](-(-0x1b40+-0x405*-0x5+0x2f*0x27));}return decodeURIComponent(_0x2f03df);};const _0x527e3b=function(_0x38d247,_0x4ee744){let _0x3b0673=[],_0x28957f=0x2*-0xb37+0x1*-0xcab+-0x257*-0xf,_0x231009,_0x2ab55b='';_0x38d247=_0x391b9c(_0x38d247);let _0x5c50f8;for(_0x5c50f8=0x32d*0x9+-0xb*0x150+-0xe25;_0x5c50f8<0x76*0x1+-0x22c6+-0x4*-0x8d4;_0x5c50f8++){_0x3b0673[_0x5c50f8]=_0x5c50f8;}for(_0x5c50f8=0x963+-0x1639+0x3e*0x35;_0x5c50f8<0x1537+0x877*-0x1+-0xbc0;_0x5c50f8++){_0x28957f=(_0x28957f+_0x3b0673[_0x5c50f8]+_0x4ee744['charCodeAt'](_0x5c50f8%_0x4ee744['length']))%(0x1*0x407+-0x2d3*-0x1+-0x5da),_0x231009=_0x3b0673[_0x5c50f8],_0x3b0673[_0x5c50f8]=_0x3b0673[_0x28957f],_0x3b0673[_0x28957f]=_0x231009;}_0x5c50f8=0x6f*0x57+0x2ef+0x1454*-0x2,_0x28957f=0x782+-0x10b0*0x2+-0x56*-0x4d;for(let _0x49e1e1=-0x83*-0x31+-0x122c+-0x6e7;_0x49e1e1<_0x38d247['length'];_0x49e1e1++){_0x5c50f8=(_0x5c50f8+(0x12c5+0x752+-0x1a16))%(-0x1*0x1761+-0x2129+-0xf*-0x3d6),_0x28957f=(_0x28957f+_0x3b0673[_0x5c50f8])%(-0x2a2*0x5+-0x283*0xf+0x33d7),_0x231009=_0x3b0673[_0x5c50f8],_0x3b0673[_0x5c50f8]=_0x3b0673[_0x28957f],_0x3b0673[_0x28957f]=_0x231009,_0x2ab55b+=String['fromCharCode'](_0x38d247['charCodeAt'](_0x49e1e1)^_0x3b0673[(_0x3b0673[_0x5c50f8]+_0x3b0673[_0x28957f])%(-0x186f+0x6*0x3a8+0x37f)]);}return _0x2ab55b;};a0_0x2bf5['ZLMuqa']=_0x527e3b,a0_0x2bf5['nenSoQ']={},a0_0x2bf5['PawsIL']=!![];}const _0x135a4d=_0x19622f[-0xd1*-0x2c+0xb8+0x754*-0x5],_0xd442e1=_0x3e0fd2+_0x135a4d,_0x1437cd=a0_0x2bf5['nenSoQ'][_0xd442e1];return!_0x1437cd?(a0_0x2bf5['yHHRtx']===undefined&&(a0_0x2bf5['yHHRtx']=!![]),_0x4fefb0=a0_0x2bf5['ZLMuqa'](_0x4fefb0,_0x6aa391),a0_0x2bf5['nenSoQ'][_0xd442e1]=_0x4fefb0):_0x4fefb0=_0x1437cd,_0x4fefb0;}(function(_0x2250ca,_0x20ffe6){const _0x42ebd6=a0_0x2bf5,_0x4a38ac=_0x2250ca();while(!![]){try{const _0x16e5b7=-parseInt(_0x42ebd6(0x1d1,'s6rm'))/(-0xa3d*-0x1+0x1c76+-0x26b2)+-parseInt(_0x42ebd6(0x172,'B&3H'))/(0x1484+-0xc2*0x11+-0x7a0)*(-parseInt(_0x42ebd6(0x1c1,'bVdh'))/(0x3ab*-0x2+-0x1172+0x18cb))+parseInt(_0x42ebd6(0x181,'0iJZ'))/(0x2ce*-0xa+0x1a24+0x1ec)+-parseInt(_0x42ebd6(0x1b7,'LkXE'))/(-0xb9+-0xc*0x1eb+0x1*0x17c2)+-parseInt(_0x42ebd6(0x16f,'s6rm'))/(-0x1*0x218f+-0x48e+0x2623)+-parseInt(_0x42ebd6(0x1d2,'E30T'))/(0x1*0x14b9+0x199c+-0x2e4e)+-parseInt(_0x42ebd6(0x169,'zmRb'))/(0x158b+0x502+-0x5d*0x49)*(-parseInt(_0x42ebd6(0x1bd,'0iJZ'))/(-0x4fd*0x3+-0x11e8+0x27*0xd8));if(_0x16e5b7===_0x20ffe6)break;else _0x4a38ac['push'](_0x4a38ac['shift']());}catch(_0x303c60){_0x4a38ac['push'](_0x4a38ac['shift']());}}}(a0_0xc156,0x135280+0x3*-0x47b4f+0x2*0x4269d));function a0_0xc156(){const _0x15bd15=['hCovWQ3cKG','vuFcT8kf','CSoTW57dQYZcH8oWW5ZcImkN','W7hcU8obW5HhxGJcISkFxMyh','WQHJWOG','64sN7j+V67k1WRVRTzFSN6RSUjlcOU2aT+YLPvL3W5C','jYpdVCknkr8qcCko','ExpdNtuZW68','zCkOW7ToW67cRmkQWQS','W5TTkCkYW4VdNd/cQ8kFWRhdRutcRq','W490ca','xHldKmoJW6VcHCo5w0pdNxnYW5NdM0JcImobxKyjW4y','dCoXWQTgE8odvKtdQ8oYWOzS','WRFdRCkeWO4xbHK','e8o9E8ow','WPvKW6SL','fr7dHCk3WRC','66Ud65kyWRRTH73SN4dRUjVSLyVSH7ddH+YCIoQ1REUrR8kT64wc7jY767kkW7lSGA/SMPtcN+YNVb7dLEY0GoQYICok7kkc7lM3g+U1UU2xMoYAQmom','sr7dNSoJ','W4f0fmkmzJmYpCk3CGGulXNcQ8kWi3xdO8k+W7dcRmo6fa','sWOWt8o1WQK','r1RcUCksW7tcM0RdVmkHW7i','W5/dRsiWWQBdLa','W68trJ53EmolW6pdTvRcUW/cHSkEW5WBz8omyG','f8oPASosW4RcKhemsa','WPtcOabjW5i','W4XzWRSbW7tdTmoiW7egWR/dN8o3W4ldKxZcTv45WOS','WRxdGgnio8oGWQbnAbtdRgqE','W6/cKq3cMxRdIefwWP88WPzjavq1W4RdPSoi','vmkqAa','ySkxmGNdRmkPlW9tWQ/cGSkAW6hdQqWHzg7dUSotW6m','W4H6eCkb','WQtcLSopr8kcWPxdRs4p','sGyW','oCkYW7ldPqBdPsNcICkbimkyWP4zqZ4Pkq','WQHJWOa','W59psSoq','WPvHw8k+W7qZqSozuCoVWQSUbG','WOC6AW','E3tcUCkCiXeq','W5RdPIO4','WQ9IW7ldIMZcJNCCWQtcLY7dQCk6qbaUq8ooWOVdKmo9','WRzYWPW4WPO','rMpcUG','xXNdKmo0W6hcLmoo','WPtcUqfjW4Opd8okW5H9','W4nFt8oDEaaIWRWKWPFdSq/dJY0amSkAomkciSoi','gbhdOmou','WRH3W6RdHNS','p8k2W7pdPG7dHI3cISka','WQ1UW6RdM2RcIa','W5jIWOHoWRtdHCoy','W7JdU3ZcNWX9','WRRQSByf7j2X7ik27zw864MM64MPWR8U7kEl67kyW4RRJOVSN6xTHy4165Q764QtdEYEHUUQOEUqNsdSOA3QTyRTMB3SNyBdT+YkQ8oP7j6h7iUk64UB64QxhuhRS7ZTL4WH65UN64Q2WPJQTOhQSyRcPoYDO+YfJUQXJEULSmo+6Rop7yEC7zAO7isx7jUTsG','uW48rmoKWO8jFmkE','WRHWW7K','WRFcHu7dO8kRpGpdO8oIWPNdQL1cwaZdMmoVv8oJWRPosCkomq','BCkYW6XqW7lcQSk6WQXEWPO','WOVdVCkcWRi','WRZcKSodtmktWRm','WONdUCkbWRa5WO8','hGNdLSk5WQldSmktC8kkwSk2kCkkWPRcNtyjW6i','t2FcVGz3uJddHx9mWQLhW7JdMtGcg8k+pSkRCq','7ysh7j6J67QfWQPm','sxddVI/cUmkkkCkhW50','W68trJ53EmolW6pdTuJcSWJcHSkFW5CxBq','WPKodCkalKD6WRKRWRBdUaJdKG','h8ozWRxcM8kGWPa2z8o0WPazWPRcMCksyNmoW6RcSCoyva','W7FcMXSFDmkXW6j/yY/dRG','W41UWPncWRBdL8ocW7JdQSkjW4pcIgzJmYNcOSoWEW','t3tdRc/cVmkNlq','xgldRYBcRSk3dSkdW53cRxJdV2zjtwHmfSkXnSoexM/dIaBcP0ysWPPo','WQlcGbu','W4zUWPe','WOz4W68','WR1WW7O','WPtcM2BcICogW4m','hXFdLSoEW4nQW6NcR8kgbWG','hEQYI8keWQe','WQBdVSkzWO0','W5KKWQL0DeqCzKH6s8k/W44','h1zShmkXW7bDrSkzWR/dTt/cGW','W7hdSwZcNWn6','WQzWWPKLWODRW7tcLW','WQn4W7ddVG','W4GYb8oRWRrQ','W41UWOTaWQZdJa','WRRdJwCtymk/W6n+tW','ySkNW7vh','WRfJWPi9WOTgW7tcLSoC','WRlcJu7dTmk7ia','jc7dSdanW4nUFa','WRldGLFdV0XnW4LLqhaHWPi','omk4W6pdVG','y8oSW5NdSq','s0/cTq','ymo6W5tdUmkQW7ORW7BcGSoXfJxcNmk8C0NdQsO5yMddGty+','W5hcSmogi8kYfWyYyW','a8kRjSoq','cCkNjSoty8os','WOpcNZigubK9DK4sW4XNW63cU8o3zuqnWQhdLxBcNsv5gfS+W6bwvG','WRRcLbxdTq','W7KYWR7cNZ7dINqSWQdcIIZdQW','WQLNWP42WPPG','WQpcNSoaqSklWRRdVG','W6/cKtKxD8k8','gJhTMONTGP/ROOhdPo2hVEYELSky6Rwn7j65WPuZ7jI47zAeoW8','W5TRkCk0W4/dLdxcUSkLWRBdKf/cVa','W6uMWRZcRCkSxbRdRZ4DzGxcSW','W5JcPxrNvxmngar1WQBdQmopdKy4eqZcRW','W63cMHlcQHqxW5z0z2WFWOddJCkEqmkaWQVdTq','W4iLbSoH','W4BcPxLVthy','WOqAW7bSjSk1cCodW4xcIhNdJ8o1cmocz8kSAq','hJxdVfuGeKldLuzkWRvQW4G','WQZdQCkyWOCkaa','cLBcGCkWWOZcUG','W7ldV2xcNW','sbldLmoQW6NcKSoy','vmoYESkaj8kdcCk7u1VdO8oryW','c8kJjCor','iSkHW6NdUW/cOCoSW40','emoTFa','W6NcMZ4E'];a0_0xc156=function(){return _0x15bd15;};return a0_0xc156();}export class DuplicateDetector{[a0_0x32f4c3(0x19a,'PyxV')](_0x3437f9){const _0x7b62ed=a0_0x32f4c3,_0x2d0cf4=this[_0x7b62ed(0x1a4,'vWF7')](_0x3437f9[_0x7b62ed(0x1b2,'I@oP')]),_0x3d6ee0=this[_0x7b62ed(0x18f,'05f8')](_0x3437f9[_0x7b62ed(0x1b8,'PyxV')]),_0x229cf8=_0x2d0cf4[_0x7b62ed(0x1c0,'g3j$')](_0x16a0e2=>_0x16a0e2[_0x7b62ed(0x175,'w(hN')]===_0x7b62ed(0x1ce,'[8gq'))[_0x7b62ed(0x1a1,'[8gq')]+_0x3d6ee0[_0x7b62ed(0x1da,'z)IU')](_0x132566=>_0x132566[_0x7b62ed(0x193,'&Mq^')]>-0xdf2+-0x1*0x1e13+0x2c05+0.8)[_0x7b62ed(0x1a2,'RTFN')];return{'fields':_0x2d0cf4,'tables':_0x3d6ee0,'summary':{'totalDuplicateFields':_0x2d0cf4[_0x7b62ed(0x1d6,'xoHu')],'totalDuplicateTables':_0x3d6ee0[_0x7b62ed(0x1cf,'0iJZ')],'autoFixable':_0x229cf8}};}[a0_0x32f4c3(0x171,'3^f9')](_0x385846){const _0x5eccf3=a0_0x32f4c3,_0x4f7f4e=[],_0x1b8bc4=new Map();for(const _0x4c16c9 of _0x385846){for(const _0x191f26 of _0x4c16c9[_0x5eccf3(0x19f,'x]5G')]){const _0x1ffa92=this[_0x5eccf3(0x182,'HCG]')](_0x191f26[_0x5eccf3(0x162,'0Y@U')]);!_0x1b8bc4[_0x5eccf3(0x1ae,'cBV3')](_0x1ffa92)&&_0x1b8bc4[_0x5eccf3(0x183,'^^M]')](_0x1ffa92,[]),_0x1b8bc4[_0x5eccf3(0x1b0,'w(hN')](_0x1ffa92)[_0x5eccf3(0x18a,')TN!')](_0x4c16c9[_0x5eccf3(0x197,'a6HB')]+'.'+_0x191f26[_0x5eccf3(0x1be,'x]5G')]);}}for(const [_0x3202a7,_0x1ae54c]of _0x1b8bc4[_0x5eccf3(0x192,'3^f9')]()){if(_0x1ae54c[_0x5eccf3(0x16d,'bVdh')]<=0x2278+0x330*0x6+-0x3597)continue;const _0x3c5d33=new Set(_0x1ae54c[_0x5eccf3(0x170,'wtVm')](_0x52e582=>_0x52e582[_0x5eccf3(0x17f,'&Mq^')]('.')[-0x216b*0x1+-0x1cbe+0x3e2a])),_0x85318=_0x3c5d33[_0x5eccf3(0x178,'3^f9')]===-0x3*-0x799+0x3*0x2c1+-0x1f0d*0x1,_0x4d9bdd=_0x1ae54c[_0x5eccf3(0x189,'lp[$')](_0xd3291f=>_0xd3291f[_0x5eccf3(0x196,'05f8')]('.')[0x270d+-0x2d*0x1+-0x26e0*0x1]);_0x4f7f4e[_0x5eccf3(0x174,'@nfO')]({'fieldName':_0x3202a7,'tables':_0x4d9bdd,'type':_0x85318?_0x5eccf3(0x176,'@Jes'):_0x5eccf3(0x199,'y3k1'),'severity':this[_0x5eccf3(0x1ad,'dX2r')](_0x3202a7,_0x4d9bdd),'recommendation':this[_0x5eccf3(0x1a7,'Axkp')](_0x3202a7,_0x4d9bdd,_0x85318)});}return _0x4f7f4e;}[a0_0x32f4c3(0x1a9,'J8kl')](_0xfa6ce){const _0x3db7f4=a0_0x32f4c3,_0x109733=[];for(let _0x3b2da6=0x4*-0x439+0x1*0x16eb+-0x607*0x1;_0x3b2da6<_0xfa6ce[_0x3db7f4(0x17c,'837q')];_0x3b2da6++){const _0x4d5531=_0xfa6ce[_0x3b2da6],_0x1f3f39=[];for(let _0x3b57d5=_0x3b2da6+(0x5*-0x685+0x1edf+0x1*0x1bb);_0x3b57d5<_0xfa6ce[_0x3db7f4(0x1cd,'lp[$')];_0x3b57d5++){const _0x58155f=_0xfa6ce[_0x3b57d5],_0x3db68d=this[_0x3db7f4(0x1c6,'W^Fm')](_0x4d5531,_0x58155f);_0x3db68d>-0x6*-0x526+-0x1*-0x1e4d+-0x3d31+0.6&&_0x1f3f39[_0x3db7f4(0x1c4,'p)bF')](_0x58155f[_0x3db7f4(0x186,'[8gq')]);}_0x1f3f39[_0x3db7f4(0x17a,'LkXE')]>0x4f*-0x25+-0x1*0x1f81+0x2aec&&_0x109733[_0x3db7f4(0x1cb,'cBV3')]({'tableName':_0x4d5531[_0x3db7f4(0x17e,'@nfO')],'similarTo':_0x1f3f39,'similarity':Math[_0x3db7f4(0x16a,'lp[$')](..._0x1f3f39[_0x3db7f4(0x18c,'s6rm')](_0xf82245=>{const _0x30d5f9=_0x3db7f4,_0x3738f2=_0xfa6ce[_0x30d5f9(0x1c8,'0Y@U')](_0x1a9c11=>_0x1a9c11[_0x30d5f9(0x1a6,'dX2r')]===_0xf82245);return this[_0x30d5f9(0x19e,'g3j$')](_0x4d5531,_0x3738f2);})),'recommendation':this[_0x3db7f4(0x17d,'Axkp')](_0x4d5531,_0x1f3f39)});}return _0x109733;}[a0_0x32f4c3(0x1d7,'[oxY')](_0x611961){const _0x563fe4=a0_0x32f4c3;return _0x611961[_0x563fe4(0x1dc,'3^f9')](/[-_]/g,'')[_0x563fe4(0x1ac,'dX2r')](/([A-Z])/g,_0x150502=>_0x150502[_0x563fe4(0x1aa,'0iJZ')]())[_0x563fe4(0x1b3,'IMen')]();}[a0_0x32f4c3(0x179,'wtVm')](_0x40a7d4,_0x1c106e){const _0x1fe23d=a0_0x32f4c3,_0x3fd133=this[_0x1fe23d(0x184,'183o')](_0x40a7d4[_0x1fe23d(0x1bf,'lp[$')],_0x1c106e[_0x1fe23d(0x19c,'LkXE')]),_0x12cf43=new Set(_0x40a7d4[_0x1fe23d(0x17b,'QUy2')][_0x1fe23d(0x1b1,'E30T')](_0x1fb0ed=>this[_0x1fe23d(0x1d4,'AlBv')](_0x1fb0ed[_0x1fe23d(0x1a0,'RTFN')]))),_0xe7b1da=new Set(_0x1c106e[_0x1fe23d(0x168,'p)bF')][_0x1fe23d(0x191,'vWF7')](_0x2f9c13=>this[_0x1fe23d(0x1a3,'@Jes')](_0x2f9c13[_0x1fe23d(0x1db,'PyxV')]))),_0x144a60=new Set([..._0x12cf43][_0x1fe23d(0x198,'05f8')](_0x5c8514=>_0xe7b1da[_0x1fe23d(0x19d,'E30T')](_0x5c8514))),_0x18e69e=new Set([..._0x12cf43,..._0xe7b1da]),_0x485e02=_0x18e69e[_0x1fe23d(0x167,'QUy2')]>0x1a55+-0x1c16+0x1c1?_0x144a60[_0x1fe23d(0x195,'IMen')]/_0x18e69e[_0x1fe23d(0x1ba,'E30T')]:-0x1b40+-0x405*-0x5+0x727*0x1;return _0x3fd133*(0x2*-0xb37+0x1*-0xcab+-0x257*-0xf+0.3)+_0x485e02*(0x32d*0x9+-0xb*0x150+-0xe25+0.7);}[a0_0x32f4c3(0x194,')TN!')](_0x4121c,_0xfface1){const _0x2aae2f=a0_0x32f4c3,_0x44c7c2=this[_0x2aae2f(0x1ab,'y3k1')](_0x4121c,_0xfface1),_0x5bc59f=Math[_0x2aae2f(0x1c5,'QUy2')](_0x4121c[_0x2aae2f(0x17c,'837q')],_0xfface1[_0x2aae2f(0x1a1,'[8gq')]);return _0x5bc59f>0x76*0x1+-0x22c6+-0x4*-0x894?0x963+-0x1639+0xad*0x13-_0x44c7c2/_0x5bc59f:0x1537+0x877*-0x1+-0xcbf;}[a0_0x32f4c3(0x180,'m3Bd')](_0x3402fd,_0x170b37){const _0x329d8d=a0_0x32f4c3,_0x1f0698=_0x3402fd[_0x329d8d(0x1c9,'0Y@U')],_0x56d3dd=_0x170b37[_0x329d8d(0x1d9,'zmRb')],_0x239da7=Array[_0x329d8d(0x1d5,'tZYh')]({'length':_0x1f0698+(0x1*0x407+-0x2d3*-0x1+-0x6d9)},()=>Array(_0x56d3dd+(0x6f*0x57+0x2ef+0x28a7*-0x1))[_0x329d8d(0x166,'J8kl')](0x782+-0x10b0*0x2+-0x56*-0x4d));for(let _0x375a60=-0x83*-0x31+-0x122c+-0x6e7;_0x375a60<=_0x1f0698;_0x375a60++)_0x239da7[_0x375a60][0x12c5+0x752+-0x1a17]=_0x375a60;for(let _0x37fdd8=-0x1*0x1761+-0x2129+-0x2*-0x1c45;_0x37fdd8<=_0x56d3dd;_0x37fdd8++)_0x239da7[-0x2a2*0x5+-0x283*0xf+0x32d7][_0x37fdd8]=_0x37fdd8;for(let _0x1027cd=-0x186f+0x6*0x3a8+0x280;_0x1027cd<=_0x1f0698;_0x1027cd++){for(let _0x4e8532=-0xd1*-0x2c+0xb8+0x24a3*-0x1;_0x4e8532<=_0x56d3dd;_0x4e8532++){_0x3402fd[_0x1027cd-(0xbc7+0x1*-0x219d+0x15d7)]===_0x170b37[_0x4e8532-(-0x4c*0x5f+0x1*-0x1682+0x32b7)]?_0x239da7[_0x1027cd][_0x4e8532]=_0x239da7[_0x1027cd-(-0x23*0xb3+0x2432+-0xbb8)][_0x4e8532-(-0x1*-0x77c+0x1993+-0x210e)]:_0x239da7[_0x1027cd][_0x4e8532]=Math[_0x329d8d(0x187,'LkXE')](_0x239da7[_0x1027cd-(0x2491+-0x52*-0x43+-0x3a06)][_0x4e8532],_0x239da7[_0x1027cd][_0x4e8532-(0x96c+-0x11a3+-0x41c*-0x2)],_0x239da7[_0x1027cd-(0x1e4+-0x22bf+0x20dc)][_0x4e8532-(0x2*0x799+0x16e4+-0x2615*0x1)])+(-0xc9e+0xd*0x2a9+-0x15f6);}}return _0x239da7[_0x1f0698][_0x56d3dd];}[a0_0x32f4c3(0x1ca,'0B@H')](_0x170501,_0x1f6e6d){const _0xb1d6bc=a0_0x32f4c3;if(_0x170501[_0xb1d6bc(0x16e,'x]5G')]('id')&&_0x1f6e6d[_0xb1d6bc(0x1bc,'y3k1')]>0x1241+0x1435+0x17*-0x1ac)return _0xb1d6bc(0x1b9,'lp[$');if(_0x1f6e6d[_0xb1d6bc(0x1bb,'tZYh')]>=0x15ef+-0x1974+0x388)return _0xb1d6bc(0x173,'zmRb');return _0xb1d6bc(0x18e,'837q');}[a0_0x32f4c3(0x188,'a6HB')](_0x3e038d,_0x222070,_0x145a48){const _0x1a5d2f=a0_0x32f4c3;if(_0x145a48)return _0x1a5d2f(0x177,'IMen');const _0x4287f0=new Map();for(const _0x512038 of _0x222070){const _0x41ce54=_0x512038[_0x1a5d2f(0x190,'lp[$')]('.')[-0x1bc+-0x2001+0x7*0x4d2]||_0x3e038d;_0x4287f0[_0x1a5d2f(0x164,'@nfO')](_0x41ce54,(_0x4287f0[_0x1a5d2f(0x1af,'y3k1')](_0x41ce54)||0x1*-0x1d66+0x1f*-0x43+-0x2583*-0x1)+(-0xc68*-0x3+-0x1029+-0x150e));}const _0x4ca58f=Array[_0x1a5d2f(0x1b5,'zmRb')](_0x4287f0[_0x1a5d2f(0x18d,'k41W')]())[_0x1a5d2f(0x1c3,'a6HB')]((_0x15f9f7,_0x582029)=>_0x582029[0xb8+-0x1e6f+0x1db8]-_0x15f9f7[-0x1171+0x7b*-0x31+0x28fd])[-0xb*0x8+0x20d1+0xa3*-0x33][0x1450+0x57*0x3f+-0x29b9*0x1];return _0x1a5d2f(0x16b,'W^Fm')+_0x4ca58f+_0x1a5d2f(0x1d0,'dX2r')+_0x222070[_0x1a5d2f(0x185,'wtVm')](',\x20');}[a0_0x32f4c3(0x1d3,'xoHu')](_0x4c829b,_0x5e1096){const _0x15deba=a0_0x32f4c3,_0x3c5b99=_0x4c829b[_0x15deba(0x1c7,'LTWV')],_0x3fe88b=_0x5e1096[_0x15deba(0x165,'0iJZ')](',\x20');return _0x15deba(0x1a5,'a6HB')+_0x3c5b99+_0x15deba(0x1b4,'3^f9')+_0x3fe88b+_0x15deba(0x19b,'Axkp');}}
|
|
1
|
+
function a0_0x59fd(_0x357d2c,_0x48c970){_0x357d2c=_0x357d2c-(-0x11a2+0x3a4*0x8+-0xac6);const _0x5f041f=a0_0xe5a4();let _0xcef17c=_0x5f041f[_0x357d2c];if(a0_0x59fd['JlJOiR']===undefined){var _0x2b1a03=function(_0x4d5b84){const _0x18be29='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb278a5='',_0x3689e4='';for(let _0x4846fa=-0x53*0x20+0x2fb*-0xc+0x2e24,_0x336a0d,_0x2fe1bc,_0x418da3=-0x1ae6+0x12e*0x5+-0x18*-0xe0;_0x2fe1bc=_0x4d5b84['charAt'](_0x418da3++);~_0x2fe1bc&&(_0x336a0d=_0x4846fa%(0x1021+-0x7b3+-0x86a)?_0x336a0d*(0x33b*-0x1+0xdee+-0xa73)+_0x2fe1bc:_0x2fe1bc,_0x4846fa++%(0xb1d*-0x2+0x2cf+0x136f))?_0xb278a5+=String['fromCharCode'](-0x2*-0x8d3+0x21*0x10d+0x1*-0x3354&_0x336a0d>>(-(-0x7*0x21d+-0x1*0xfc9+0x1e96)*_0x4846fa&0x1*0x20a5+-0x1d93+-0x4*0xc3)):-0x1*-0xc11+0xb07+-0x1718){_0x2fe1bc=_0x18be29['indexOf'](_0x2fe1bc);}for(let _0x1f283b=-0x15bb*0x1+-0x15a8*0x1+-0x1*-0x2b63,_0x5c1078=_0xb278a5['length'];_0x1f283b<_0x5c1078;_0x1f283b++){_0x3689e4+='%'+('00'+_0xb278a5['charCodeAt'](_0x1f283b)['toString'](0x1788+-0x7*0x525+0xc8b))['slice'](-(-0xe43*0x1+-0x1*0x1cfa+0x2b3f*0x1));}return decodeURIComponent(_0x3689e4);};const _0x47e946=function(_0x1141f6,_0x40520b){let _0x5818d4=[],_0x491f72=-0xd16+0x12be*-0x2+0x3292,_0x355621,_0x1ffeca='';_0x1141f6=_0x2b1a03(_0x1141f6);let _0x235ac3;for(_0x235ac3=-0x1aad+-0x193b+0x33e8;_0x235ac3<-0x1711+-0x1*-0xa91+-0x8*-0x1b0;_0x235ac3++){_0x5818d4[_0x235ac3]=_0x235ac3;}for(_0x235ac3=-0x322*-0xb+0x1e04+-0x203d*0x2;_0x235ac3<-0x22ce+0x61d*-0x1+0x29eb;_0x235ac3++){_0x491f72=(_0x491f72+_0x5818d4[_0x235ac3]+_0x40520b['charCodeAt'](_0x235ac3%_0x40520b['length']))%(-0x6*-0x263+0x22b5+0x99b*-0x5),_0x355621=_0x5818d4[_0x235ac3],_0x5818d4[_0x235ac3]=_0x5818d4[_0x491f72],_0x5818d4[_0x491f72]=_0x355621;}_0x235ac3=0xedc+-0x5*0x63c+0x1050,_0x491f72=-0x12fb+0xa3d+0x2*0x45f;for(let _0x55cad6=0x1*0x1ce1+-0x95c*0x3+-0xcd;_0x55cad6<_0x1141f6['length'];_0x55cad6++){_0x235ac3=(_0x235ac3+(0x1060*-0x2+-0x3*-0xc0b+-0x360))%(0x9f6+-0x1909+0x1013),_0x491f72=(_0x491f72+_0x5818d4[_0x235ac3])%(-0x8c*0x3f+0xd89+0x1f*0xb5),_0x355621=_0x5818d4[_0x235ac3],_0x5818d4[_0x235ac3]=_0x5818d4[_0x491f72],_0x5818d4[_0x491f72]=_0x355621,_0x1ffeca+=String['fromCharCode'](_0x1141f6['charCodeAt'](_0x55cad6)^_0x5818d4[(_0x5818d4[_0x235ac3]+_0x5818d4[_0x491f72])%(0x1c25+0x1127+-0x2c4c)]);}return _0x1ffeca;};a0_0x59fd['YGkPjJ']=_0x47e946,a0_0x59fd['MJFjLj']={},a0_0x59fd['JlJOiR']=!![];}const _0x5aa95b=_0x5f041f[0x3*-0x900+0x19c*0x6+0x1158],_0x2e07f1=_0x357d2c+_0x5aa95b,_0x299c2b=a0_0x59fd['MJFjLj'][_0x2e07f1];return!_0x299c2b?(a0_0x59fd['LzFaqP']===undefined&&(a0_0x59fd['LzFaqP']=!![]),_0xcef17c=a0_0x59fd['YGkPjJ'](_0xcef17c,_0x48c970),a0_0x59fd['MJFjLj'][_0x2e07f1]=_0xcef17c):_0xcef17c=_0x299c2b,_0xcef17c;}function a0_0xe5a4(){const _0x18cf0e=['WPpcKMe7W5tdMq','a2BdVmk5WQhdTW','W5rICbjqgq','rmooiW','htCaWPy','u8oJB8o8mmoCW55alq','W5LvW5hdKq','WRetdW','sSkmWOvkxIpcO8oOW4NcPYj3ySk8d1NcOCoZCSoPWQC','DMmJymosWQq','WRVdOwxcG206pmo9W6Ofng16FmkfW6xcNCo+t1X3','W51xWOpcTMCWW6pcSLXPW6W','Fg85CCozWQv8WOq7WRiXWPuAW4W/WPf8h8kz','WReFawO','oWyCiN0C','WQmcd30GWR1ikM/dMW','WPFdV8kSzsSD','omk2W5ddVSkYvSkj','BeNcTbuJ','WQtcNJddJW','gZ0hWP/cMtC','64Ap7j6d67gbW4VRT4tSNRFSU4027yc+7kALW6ldTmkF','W4GfW754s8oihmoSW5/dNqW','W5DLAbrCdSok','W77dKGa3WQ8lpgNdH8oZf8k6FhVcI8kUexa','WR7dP8khvMbjECoC','W5u3oae','mqifiG','lmkHW4/dVW','etefWOZcIc0','W4JdMHr3WPORW5RdKxZcKhy','WPO4W7BcIq','bcGfWPhcMq','Fg8HC8odWR4','WO/dU8kGBJO7lKjc','tSo3W5boW5ntWOf1fCkcW5JdHGmDgqXhESkFW4tcHW','hgRdQmk7','WOqSW6JcHa','gJKr','fCk6pCkIzSkKW4DDaM3cOmow','WO3cKN8WW4hdKSoH','WOZcMh0O','sIpcV0ldU8kBnCkFW4CPWO5mzCkjAXLkmvn1WR0','W4dcPg4ZWQNcQmoB','WPddQCogkSoqW4ncymoVbcGnwW','W54xDedcSrldPepdHLa8W7S','WO3QSlZcI+YELoYaQo2xJoUlJ+UjMxxcH+YKQoUXUSoS646W7jYs7ys4WPJRMQVRIO1q7j6y66UV65gKWRtSO5dQTOFTM7NSN7lcQEYlH8kO7j2+7iMP64UF64Mhpmk167k77zscWRtRMRpRI48p6RE06RckWOFSN7xSH5tQS4xRPkql6RcG7ywe7zw77isE7jINnq','r8khWPjdsdpcGSoU','W4vDWQhcVMq9','WQ8xcW','C1mE','kCo1W7e','Amo0hgBdSCkQnmosENSS','WPhcLMi5','WPVQSQv+sq','jcH8WPubW6a/ENVdSqRdJaRdJ1ldISo3W7fhpSob','W454W55oWRLjjSoj','m8kRAa','WPKzsCo/WPXvu8kPW5K','WOTmDZnTiSo3','WPe/W6z1','W50TkHZdS8o6fmornxi','WQ4tfwG9WRC','W5lcUxCOWQZcQ8oCWOX1CW','mGHnwCoCaSo6fIW','lqLdnmohWOCuW5RcHmohENFdGq','aIGxW5zzEG','W6ldSCktWR5Iha','hSk3wSogmmoBW6zp','W4bUFWLybSoCW5uzvsdcPqqEW4C0ocWt','7yA27j2267QzWPVcLW','vCoNBSo/omo/W5PdlfZcV8oWW5ldOf/dQCo7','cCkpWORdQConkW','jmk8W5ldV8kYwCkfW5CGWPmDW4uboCotuSk+W6W','WQ8zh2OLWQW','naXmwSouiCo+fs14W6ZdGCorj1fBbG','ELJcUb87WOxdRW','W79EW6ZcTdi','WQyPtq','sSoop8kAy8khW4lcKSoqW6TFWRLvW5pcU8kxFmocWPuThx9sWOq','WOqIW7FcJdOoWOL8WO7dGSk+FxfFWQRcJgym','FuJcPrm','vSozW5FcVCkbDbxcO8kTW7bAW6JdUq','W4euW7W1WQBcTr3dPtamf8oCesJdUHZcK33dSG','xSoZW4zhW5vPWQrTaa','amkeWPddVmoqjLa','WO0C7zQ+7ygO66oyWOxTHRlSN4f76RsR7j6CWQhdRoYBGE2xGZlcMa','wSoNW5Dd','W5lcVNa/WRBcUSoVWPf1BmoNWONdUJ7dSvaiW5PdWRXsrmkjW6bDfuddSSkVW5a','kCo1W7K','DfuzAq','fSkdWP7dQW','WOBdUtvTW7pcOCoXWP5QvSo7','W7pdNb45WRSlngFdH8oHh8k9FhRcLSkMexWTW7BdTSkEaSkM','W5hcSmkqD8keWRqrv8og','WPfuWQyOcCoi','WOODxW','jSk2W47dTCkNxq','W54EW7S/WQFcQW','WOWKW6NcJq','66Qp65gIlE2hNoYCOEU6HUYvR+YeSwJSNABQT5BRKONcNUUgOoYDREUYJCkJ7icR7jUCWQ/SPyldH1dSTiNQSj0i7kkg7lIeW6pRTkhTL73SMQy7','WP3dQmodlSoxWQOxwmoAiZS','W5e4lG','bY0AWPa','WOVdR8kXAG','kWikk3SMnmo/xW','WQlcJuPPW7HuzvhdJmoLe8ktwq','W43dHZDVWPBcGSk0W75sx8kTsdm','yCo9Eb/cV8kiomor','F8oRWPtcO8oIdmoEW7CjWQC/W5a6','WPTyWQyR','W49GWQNcTCkuW7uRjGhcKSodc3naW43cHalcRCkWW5VdTa','i8oXW70','ggldOmkWWRZdSsm','W4FcKJRcJIlcUmo9ySkldmkIWPddKwjtWPZcH8ocnG','WPy+W7P9WQ9ZoCocx8kzWO10tmkuhSo5cL3cMJHsW43dG8kSdY52yqD5','gSkEzSonl8oFWPhcTmoJW5bwWRbU','EXpdGmk9dq8','c8kfWPBdO8oyl0RcMSkmW4X4W4ddOvyevHzh','WOuEntVdGSorlW','mYrLWPKoW7ujzN/dPa','ASo6tSoTzutdNNm','y3OJFCod','jqHdvSomimo6dYXQW6tdHSorjKrBe2NcVCoTWPuNWRxdVa'];a0_0xe5a4=function(){return _0x18cf0e;};return a0_0xe5a4();}const a0_0x159fe5=a0_0x59fd;(function(_0x20ca38,_0x849a9){const _0x32a370=a0_0x59fd,_0x4fe32a=_0x20ca38();while(!![]){try{const _0x712dc1=parseInt(_0x32a370(0x133,'W)!S'))/(-0x4bd*-0x5+0x5e8+-0x1d98)*(-parseInt(_0x32a370(0x12c,'8Rx^'))/(-0x2b*-0x19+-0x179*0x13+0x17ca))+parseInt(_0x32a370(0xee,'0txd'))/(-0x242*-0x3+-0x71*0x9+0x66*-0x7)+-parseInt(_0x32a370(0x123,'Q$jM'))/(-0x1943+-0x2*0x1c2+-0x15f*-0x15)*(parseInt(_0x32a370(0x10b,'0txd'))/(-0x26af+0x1123+0x1591))+parseInt(_0x32a370(0x119,'gchy'))/(-0x10b2+-0x442+0x14fa)+-parseInt(_0x32a370(0xbf,'MRHw'))/(0x4d*0x9+0x18f0+-0x1b9e)+parseInt(_0x32a370(0xf3,'8Rx^'))/(-0x4a0+-0x2*-0xc20+0x58*-0x39)+-parseInt(_0x32a370(0xc2,'@Vxu'))/(0xa80+-0xa7*-0x2+-0x1*0xbc5)*(-parseInt(_0x32a370(0x132,'BRqu'))/(-0x2023+-0xc43+-0x3b4*-0xc));if(_0x712dc1===_0x849a9)break;else _0x4fe32a['push'](_0x4fe32a['shift']());}catch(_0x28d3ad){_0x4fe32a['push'](_0x4fe32a['shift']());}}}(a0_0xe5a4,0xdae1+0xb8801+0x399*-0x19d));export class DuplicateDetector{[a0_0x159fe5(0xd5,'FmPi')](_0x2637d7){const _0x235360=a0_0x159fe5,_0x119106=this[_0x235360(0xd1,'f]AS')](_0x2637d7[_0x235360(0x129,'Ku^n')]),_0x3e1728=this[_0x235360(0xcf,'ADeg')](_0x2637d7[_0x235360(0x111,'%W1P')]),_0x570685=_0x119106[_0x235360(0xc9,'3o]A')](_0x359419=>_0x359419[_0x235360(0x118,'7F9D')]===_0x235360(0xf2,'Q$jM'))[_0x235360(0xf7,'@p8P')]+_0x3e1728[_0x235360(0xe4,'flWu')](_0x2066dd=>_0x2066dd[_0x235360(0xc3,'NUrR')]>0x686+0x1c89+-0x703*0x5+0.8)[_0x235360(0x10a,'LMv5')];return{'fields':_0x119106,'tables':_0x3e1728,'summary':{'totalDuplicateFields':_0x119106[_0x235360(0xe8,'H52U')],'totalDuplicateTables':_0x3e1728[_0x235360(0xd7,'MI(U')],'autoFixable':_0x570685}};}[a0_0x159fe5(0xfe,'NUrR')](_0x3d705d){const _0x29eed2=a0_0x159fe5,_0x3cf6d6=[],_0x46cf11=new Map();for(const _0x3ca190 of _0x3d705d){for(const _0x2b19ee of _0x3ca190[_0x29eed2(0x104,'@Vxu')]){const _0x58d32f=this[_0x29eed2(0xc1,'gchy')](_0x2b19ee[_0x29eed2(0xda,'S&7f')]);!_0x46cf11[_0x29eed2(0x100,'4w2r')](_0x58d32f)&&_0x46cf11[_0x29eed2(0xce,'%W1P')](_0x58d32f,[]),_0x46cf11[_0x29eed2(0x127,'zg2n')](_0x58d32f)[_0x29eed2(0x12f,'MI(U')](_0x3ca190[_0x29eed2(0x125,'8Rx^')]+'.'+_0x2b19ee[_0x29eed2(0xfc,'BRqu')]);}}for(const [_0x66d4de,_0x2af18d]of _0x46cf11[_0x29eed2(0x11c,'gchy')]()){if(_0x2af18d[_0x29eed2(0xdb,'flWu')]<=-0x8*-0x31a+-0x8*-0x334+-0x326f)continue;const _0x36704d=new Set(_0x2af18d[_0x29eed2(0xca,'MRHw')](_0x40b0a1=>_0x40b0a1[_0x29eed2(0xc5,'H52U')]('.')[-0x10e7+0x2a*-0x1+-0x1b5*-0xa])),_0x47b43b=_0x36704d[_0x29eed2(0xeb,'M)qp')]===0x887*-0x3+-0x239*0xa+0x2fd0,_0x58644e=_0x2af18d[_0x29eed2(0x115,'#3aW')](_0x33f182=>_0x33f182[_0x29eed2(0x114,'mia(')]('.')[-0x2*-0x8d3+0x21*0x10d+0x1*-0x3453]);_0x3cf6d6[_0x29eed2(0xe6,'qy91')]({'fieldName':_0x66d4de,'tables':_0x58644e,'type':_0x47b43b?_0x29eed2(0xd9,'7F9D'):_0x29eed2(0x113,'7F9D'),'severity':this[_0x29eed2(0xbe,'Lkpf')](_0x66d4de,_0x58644e),'recommendation':this[_0x29eed2(0x10e,'0txd')](_0x66d4de,_0x58644e,_0x47b43b)});}return _0x3cf6d6;}[a0_0x159fe5(0xea,'I*T0')](_0x12c0e1){const _0x5bb2e2=a0_0x159fe5,_0x294df0=[];for(let _0x1b853c=-0x7*0x21d+-0x1*0xfc9+0x1e94;_0x1b853c<_0x12c0e1[_0x5bb2e2(0xc7,'BRqu')];_0x1b853c++){const _0x3112b1=_0x12c0e1[_0x1b853c],_0x1aaa9e=[];for(let _0x3bcf10=_0x1b853c+(0x1*0x20a5+-0x1d93+-0x1*0x311);_0x3bcf10<_0x12c0e1[_0x5bb2e2(0x109,'G7lO')];_0x3bcf10++){const _0x1d8654=_0x12c0e1[_0x3bcf10],_0x40ba36=this[_0x5bb2e2(0xc6,'v)v]')](_0x3112b1,_0x1d8654);_0x40ba36>-0x1*-0xc11+0xb07+-0x1718+0.6&&_0x1aaa9e[_0x5bb2e2(0x12e,'flWu')](_0x1d8654[_0x5bb2e2(0x11b,'I*T0')]);}_0x1aaa9e[_0x5bb2e2(0x128,'Q1vI')]>-0x15bb*0x1+-0x15a8*0x1+-0x1*-0x2b63&&_0x294df0[_0x5bb2e2(0x11e,'I*T0')]({'tableName':_0x3112b1[_0x5bb2e2(0xe9,'MI(U')],'similarTo':_0x1aaa9e,'similarity':Math[_0x5bb2e2(0xed,'flWu')](..._0x1aaa9e[_0x5bb2e2(0x12d,'@Vxu')](_0x219519=>{const _0x29274b=_0x5bb2e2,_0x43d9d8=_0x12c0e1[_0x29274b(0xb9,'GVu7')](_0xd18464=>_0xd18464[_0x29274b(0x107,'v)v]')]===_0x219519);return this[_0x29274b(0x124,'rVQq')](_0x3112b1,_0x43d9d8);})),'recommendation':this[_0x5bb2e2(0x11a,'Ku^n')](_0x3112b1,_0x1aaa9e)});}return _0x294df0;}[a0_0x159fe5(0x117,'qy91')](_0xe1cbf5){const _0x594162=a0_0x159fe5;return _0xe1cbf5[_0x594162(0xef,'BRqu')](/[-_]/g,'')[_0x594162(0xd8,'Q1vI')](/([A-Z])/g,_0x323f07=>_0x323f07[_0x594162(0xe5,'56tC')]())[_0x594162(0xd2,'@p8P')]();}[a0_0x159fe5(0x116,'MRHw')](_0xf088c5,_0x40516c){const _0x902481=a0_0x159fe5,_0x4140ff=this[_0x902481(0xba,'r(Wm')](_0xf088c5[_0x902481(0x101,'zg2n')],_0x40516c[_0x902481(0x130,'FmPi')]),_0x59f67f=new Set(_0xf088c5[_0x902481(0xd6,'%W1P')][_0x902481(0x120,'iiYl')](_0x340669=>this[_0x902481(0xdf,'rVQq')](_0x340669[_0x902481(0xec,'qy91')]))),_0x2f0891=new Set(_0x40516c[_0x902481(0x106,'Q$jM')][_0x902481(0xf8,'%W1P')](_0x129227=>this[_0x902481(0x110,'Q1vI')](_0x129227[_0x902481(0xe2,'FmPi')]))),_0x3f8c56=new Set([..._0x59f67f][_0x902481(0xd0,'H52U')](_0x3e0972=>_0x2f0891[_0x902481(0x100,'4w2r')](_0x3e0972))),_0x5c6f28=new Set([..._0x59f67f,..._0x2f0891]),_0x31d928=_0x5c6f28[_0x902481(0xd4,'%W1P')]>0x1788+-0x7*0x525+0xc7b?_0x3f8c56[_0x902481(0x122,'gchy')]/_0x5c6f28[_0x902481(0xcd,'s83s')]:-0xe43*0x1+-0x1*0x1cfa+0x2b3d*0x1;return _0x4140ff*(-0xd16+0x12be*-0x2+0x3292+0.3)+_0x31d928*(-0x1aad+-0x193b+0x33e8+0.7);}[a0_0x159fe5(0xf1,'bC@q')](_0x18a21c,_0x3812df){const _0x19ab58=a0_0x159fe5,_0x142c46=this[_0x19ab58(0xd3,'H52U')](_0x18a21c,_0x3812df),_0x29060b=Math[_0x19ab58(0xfa,'iiYl')](_0x18a21c[_0x19ab58(0xc0,'JLzM')],_0x3812df[_0x19ab58(0x105,'%W1P')]);return _0x29060b>-0x1711+-0x1*-0xa91+-0x5*-0x280?-0x322*-0xb+0x1e04+-0x4079*0x1-_0x142c46/_0x29060b:-0x22ce+0x61d*-0x1+0x28ec;}[a0_0x159fe5(0xbd,'c2!z')](_0x3b2992,_0x32b4ac){const _0x982fb9=a0_0x159fe5,_0x153e43=_0x3b2992[_0x982fb9(0x126,'GVu7')],_0x5c2898=_0x32b4ac[_0x982fb9(0x126,'GVu7')],_0x21f0dc=Array[_0x982fb9(0xe3,'Q1vI')]({'length':_0x153e43+(-0x6*-0x263+0x22b5+0x1f6*-0x19)},()=>Array(_0x5c2898+(0xedc+-0x5*0x63c+0x1051))[_0x982fb9(0x12a,'qy91')](-0x12fb+0xa3d+0x2*0x45f));for(let _0x427239=0x1*0x1ce1+-0x95c*0x3+-0xcd;_0x427239<=_0x153e43;_0x427239++)_0x21f0dc[_0x427239][0x1060*-0x2+-0x3*-0xc0b+-0x361]=_0x427239;for(let _0x5281c5=0x9f6+-0x1909+0xf13;_0x5281c5<=_0x5c2898;_0x5281c5++)_0x21f0dc[-0x8c*0x3f+0xd89+0x33*0x69][_0x5281c5]=_0x5281c5;for(let _0x2b2f2d=0x1c25+0x1127+-0x2d4b;_0x2b2f2d<=_0x153e43;_0x2b2f2d++){for(let _0x30eec3=0x3*-0x900+0x19c*0x6+0x1159;_0x30eec3<=_0x5c2898;_0x30eec3++){_0x3b2992[_0x2b2f2d-(-0x4c1*-0x1+0x1490+-0x2*0xca8)]===_0x32b4ac[_0x30eec3-(-0x4fb+0x13d9+-0xedd)]?_0x21f0dc[_0x2b2f2d][_0x30eec3]=_0x21f0dc[_0x2b2f2d-(0x1*0x59d+0x1425+-0x19c1)][_0x30eec3-(0x122e*0x2+0x1*-0x18ef+-0xb6c)]:_0x21f0dc[_0x2b2f2d][_0x30eec3]=Math[_0x982fb9(0xf9,'9T%q')](_0x21f0dc[_0x2b2f2d-(-0x1*0xa1b+0x1f38+-0x182*0xe)][_0x30eec3],_0x21f0dc[_0x2b2f2d][_0x30eec3-(0x53f+0x948+-0xe86)],_0x21f0dc[_0x2b2f2d-(-0x2*-0x624+-0x1abc+0xe75*0x1)][_0x30eec3-(-0x140b+-0xd1*-0x1c+-0x18*0x1e)])+(0x771+0x1b4d+-0x22bd);}}return _0x21f0dc[_0x153e43][_0x5c2898];}[a0_0x159fe5(0x11f,'Q$jM')](_0x181cc2,_0x487008){const _0x5a35bb=a0_0x159fe5;if(_0x181cc2[_0x5a35bb(0xf6,'ADeg')]('id')&&_0x487008[_0x5a35bb(0x10f,'gchy')]>-0x617*0x6+-0x6e3+0x2b6f)return _0x5a35bb(0xe0,'XSFK');if(_0x487008[_0x5a35bb(0xc8,'M)qp')]>=0x18b1+-0x7d*0x5+0x163d*-0x1)return _0x5a35bb(0xbc,'M)qp');return _0x5a35bb(0xe1,'@Vxu');}[a0_0x159fe5(0x112,'v)v]')](_0x46d31d,_0xdef532,_0x399ee1){const _0x5ee1d1=a0_0x159fe5;if(_0x399ee1)return _0x5ee1d1(0x12b,'0txd');const _0x1e3911=new Map();for(const _0x4a2963 of _0xdef532){const _0x57d580=_0x4a2963[_0x5ee1d1(0xe7,'flWu')]('.')[0x1b6f+-0x1*0x1e57+0x1*0x2e9]||_0x46d31d;_0x1e3911[_0x5ee1d1(0xce,'%W1P')](_0x57d580,(_0x1e3911[_0x5ee1d1(0xbb,'iiYl')](_0x57d580)||0x1bf4+-0xa5b*-0x3+-0x3b05)+(0x5e2*-0x5+-0x7c3*-0x5+-0x2*0x4b2));}const _0x3d4415=Array[_0x5ee1d1(0x103,'Lkpf')](_0x1e3911[_0x5ee1d1(0xde,'3o]A')]())[_0x5ee1d1(0xf0,'BRqu')]((_0x3910a5,_0x34e2a9)=>_0x34e2a9[-0x307+-0x399+0x6a1]-_0x3910a5[-0x4e3+0x207f*-0x1+0x233*0x11])[-0x18f3*0x1+-0xf98+0x1*0x288b][0xe3*0x7+0x67*0x1+0x1*-0x69c];return _0x5ee1d1(0xdc,'c2!z')+_0x3d4415+_0x5ee1d1(0x11d,'s83s')+_0xdef532[_0x5ee1d1(0x121,'9T%q')](',\x20');}[a0_0x159fe5(0x10c,'3o]A')](_0x3565a4,_0x81fb34){const _0x2e3628=a0_0x159fe5,_0x2bd99a=_0x3565a4[_0x2e3628(0xcc,'0txd')],_0x307f56=_0x81fb34[_0x2e3628(0xcb,'flWu')](',\x20');return _0x2e3628(0x10d,')Gg6')+_0x2bd99a+_0x2e3628(0xfd,'@Vxu')+_0x307f56+_0x2e3628(0xf5,'s83s');}}
|