@evomap/evolver 1.89.12 → 1.89.14
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/CONTRIBUTING.md +19 -0
- package/README.md +537 -90
- package/assets/cover.png +0 -0
- package/index.js +24 -11
- package/package.json +18 -6
- package/scripts/a2a_export.js +63 -0
- package/scripts/a2a_ingest.js +79 -0
- package/scripts/a2a_promote.js +118 -0
- package/scripts/analyze_by_skill.js +121 -0
- package/scripts/build_binaries.js +479 -0
- package/scripts/check-changelog.js +166 -0
- package/scripts/extract_log.js +85 -0
- package/scripts/generate_history.js +75 -0
- package/scripts/gep_append_event.js +96 -0
- package/scripts/gep_personality_report.js +234 -0
- package/scripts/human_report.js +147 -0
- package/scripts/recall-verify-report.js +234 -0
- package/scripts/recover_loop.js +61 -0
- package/scripts/refresh_stars_badge.js +168 -0
- package/scripts/seed-merchants.js +91 -0
- package/scripts/suggest_version.js +89 -0
- package/scripts/validate-modules.js +38 -0
- package/scripts/validate-suite.js +78 -0
- package/skills/index.json +14 -0
- package/src/evolve/guards.js +1 -721
- package/src/evolve/pipeline/collect.js +1 -1283
- package/src/evolve/pipeline/dispatch.js +1 -421
- package/src/evolve/pipeline/enrich.js +1 -440
- package/src/evolve/pipeline/hub.js +1 -319
- package/src/evolve/pipeline/select.js +1 -274
- package/src/evolve/pipeline/signals.js +1 -206
- package/src/evolve/utils.js +1 -264
- package/src/evolve.js +1 -350
- package/src/gep/a2aProtocol.js +1 -4463
- package/src/gep/antiAbuseTelemetry.js +1 -233
- package/src/gep/autoDistillConv.js +1 -205
- package/src/gep/autoDistillLlm.js +1 -315
- package/src/gep/candidateEval.js +1 -92
- package/src/gep/candidates.js +1 -198
- package/src/gep/contentHash.js +1 -30
- package/src/gep/conversationDistiller.js +1 -270
- package/src/gep/conversationSniffer.js +1 -266
- package/src/gep/crypto.js +1 -89
- package/src/gep/curriculum.js +1 -163
- package/src/gep/deviceId.js +1 -218
- package/src/gep/envFingerprint.js +1 -118
- package/src/gep/epigenetics.js +1 -31
- package/src/gep/execBridge.js +1 -712
- package/src/gep/explore.js +1 -289
- package/src/gep/hash.js +1 -15
- package/src/gep/hubFetch.js +1 -608
- package/src/gep/hubReview.js +1 -207
- package/src/gep/hubSearch.js +1 -526
- package/src/gep/hubVerify.js +1 -306
- package/src/gep/learningSignals.js +1 -89
- package/src/gep/memoryGraph.js +1 -1449
- package/src/gep/memoryGraphAdapter.js +1 -203
- package/src/gep/mutation.js +1 -203
- package/src/gep/narrativeMemory.js +1 -108
- package/src/gep/openPRRegistry.js +1 -205
- package/src/gep/personality.js +1 -423
- package/src/gep/policyCheck.js +1 -599
- package/src/gep/prompt.js +1 -836
- package/src/gep/recallInject.js +1 -409
- package/src/gep/recallVerifier.js +1 -318
- package/src/gep/reflection.js +1 -177
- package/src/gep/savingsCore.js +1 -112
- package/src/gep/selector.js +1 -602
- package/src/gep/skillDistiller.js +1 -1294
- package/src/gep/solidify.js +1 -1699
- package/src/gep/strategy.js +1 -136
- package/src/gep/tokenSavings.js +1 -95
- package/src/gep/workspaceKeychain.js +1 -174
- package/src/proxy/extensions/traceControl.js +1 -109
- package/src/proxy/index.js +50 -0
- package/src/proxy/inject.js +1 -52
- package/src/proxy/lifecycle/manager.js +40 -1
- package/src/proxy/server/routes.js +10 -0
- package/src/proxy/sync/outbound.js +1 -1
- package/src/proxy/trace/extractor.js +1 -1403
- package/src/proxy/trace/usage.js +1 -105
- package/.cursor/BUGBOT.md +0 -182
- package/.env.example +0 -68
- package/.git-commit-guard-token +0 -1
- package/.github/CODEOWNERS +0 -63
- package/.github/ISSUE_TEMPLATE/good_first_issue.md +0 -23
- package/.github/pull_request_template.md +0 -45
- package/.github/workflows/test.yml +0 -75
- package/CHANGELOG.md +0 -1367
- package/README.public.md +0 -578
- package/SECURITY.md +0 -108
- package/assets/gep/events.jsonl +0 -3
- package/examples/atp-consumer-quickstart.md +0 -100
- package/examples/hello-world.md +0 -38
- package/proxy-package.json +0 -39
- package/public.manifest.json +0 -145
- /package/assets/gep/{genes.json → genes.seed.json} +0 -0
- /package/{bundled-skills → skills}/_meta/SKILL.md +0 -0
|
@@ -1,109 +1 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const crypto = require('crypto');
|
|
4
|
-
|
|
5
|
-
function canonicalTraceConfigPayload(payload = {}) {
|
|
6
|
-
const clean = {};
|
|
7
|
-
for (const key of Object.keys(payload).sort()) {
|
|
8
|
-
if (key === 'signature' || key === 'trace_config_signature' || key === 'signature_algorithm') continue;
|
|
9
|
-
if (key === 'hub_public_key') continue;
|
|
10
|
-
const value = payload[key];
|
|
11
|
-
if (value !== undefined) clean[key] = value;
|
|
12
|
-
}
|
|
13
|
-
return JSON.stringify(clean);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function verifyTraceConfigSignature(payload = {}, env = process.env) {
|
|
17
|
-
const publicKey = String(
|
|
18
|
-
env.EVOMAP_TRACE_CONFIG_SIGNING_PUBLIC_KEY
|
|
19
|
-
|| env.EVOMAP_PROXY_TRACE_CONFIG_SIGNING_PUBLIC_KEY
|
|
20
|
-
|| ''
|
|
21
|
-
).trim();
|
|
22
|
-
const signature = String(payload.signature || payload.trace_config_signature || '').trim();
|
|
23
|
-
if (!publicKey || !signature) return false;
|
|
24
|
-
try {
|
|
25
|
-
return crypto.verify(
|
|
26
|
-
'sha256',
|
|
27
|
-
Buffer.from(canonicalTraceConfigPayload(payload), 'utf8'),
|
|
28
|
-
publicKey,
|
|
29
|
-
Buffer.from(signature, 'base64')
|
|
30
|
-
);
|
|
31
|
-
} catch {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
class TraceControl {
|
|
37
|
-
constructor({ store, logger } = {}) {
|
|
38
|
-
this.store = store;
|
|
39
|
-
this.logger = logger || console;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
process(message) {
|
|
43
|
-
const payload = message && message.payload ? message.payload : message;
|
|
44
|
-
const enabled = payload && (
|
|
45
|
-
payload.enabled ??
|
|
46
|
-
payload.trace_collection_enabled ??
|
|
47
|
-
payload.proxy_trace_collection_enabled
|
|
48
|
-
);
|
|
49
|
-
if (typeof enabled !== 'boolean') {
|
|
50
|
-
this.logger.warn?.('[trace-control] ignoring config without boolean enabled');
|
|
51
|
-
return { ack: true, applied: false };
|
|
52
|
-
}
|
|
53
|
-
let profileEnabled = payload.profile_analysis_enabled ?? payload.trace_profile_analysis_enabled;
|
|
54
|
-
const signed = verifyTraceConfigSignature(payload);
|
|
55
|
-
const unsafeEnable = enabled === true;
|
|
56
|
-
const unsafeProfile = profileEnabled === true;
|
|
57
|
-
const hasRuntimeHubKey = typeof payload.hub_public_key === 'string' && payload.hub_public_key.trim();
|
|
58
|
-
if (!signed && unsafeEnable) {
|
|
59
|
-
this.logger.warn?.('[trace-control] rejected unsigned trace config that could enable collection/profile analysis');
|
|
60
|
-
return { ack: true, applied: false };
|
|
61
|
-
}
|
|
62
|
-
if (!signed && unsafeProfile) {
|
|
63
|
-
this.logger.warn?.('[trace-control] ignored unsigned profile analysis enable while applying trace disable');
|
|
64
|
-
profileEnabled = false;
|
|
65
|
-
}
|
|
66
|
-
this.store.setState('trace_collection_enabled', enabled ? 'true' : 'false');
|
|
67
|
-
if (typeof profileEnabled === 'boolean') {
|
|
68
|
-
this.store.setState('trace_profile_analysis_enabled', profileEnabled ? 'true' : 'false');
|
|
69
|
-
}
|
|
70
|
-
// trace_hub_public_key is part of the SIGNED canonical payload (unlike the legacy runtime hub_public_key,
|
|
71
|
-
// which stays excluded + ignored). Persist it only from a verified-signed config, so the hub can distribute
|
|
72
|
-
// its trace-encryption public key centrally without a per-node env, while a forged/unsigned config still
|
|
73
|
-
// cannot inject a key. extractor.readTraceProfileConfig reads this as a fallback to the pinned env var.
|
|
74
|
-
const signedHubKey = typeof payload.trace_hub_public_key === 'string' && payload.trace_hub_public_key.trim();
|
|
75
|
-
if (signed && signedHubKey && payload.trace_hub_public_key.includes('PUBLIC KEY')) {
|
|
76
|
-
this.store.setState('trace_hub_public_key', payload.trace_hub_public_key.trim());
|
|
77
|
-
} else if (!signed && signedHubKey) {
|
|
78
|
-
this.logger.warn?.('[trace-control] ignored trace_hub_public_key from an unsigned config');
|
|
79
|
-
}
|
|
80
|
-
if (hasRuntimeHubKey) {
|
|
81
|
-
this.logger.warn?.('[trace-control] ignored runtime hub_public_key; use pinned EVOMAP_PROXY_TRACE_HUB_PUBLIC_KEY or signed trace_hub_public_key');
|
|
82
|
-
}
|
|
83
|
-
this.store.setState('trace_collection_updated_at', new Date().toISOString());
|
|
84
|
-
this.logger.log?.('[trace-control] trace collection ' + (enabled ? 'enabled' : 'disabled'));
|
|
85
|
-
return { ack: true, applied: true };
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
pollAndApply() {
|
|
89
|
-
const messages = [
|
|
90
|
-
...this.store.poll({ type: 'trace_collection_config', limit: 50 }),
|
|
91
|
-
...this.store.poll({ type: 'proxy_trace_config', limit: 50 }),
|
|
92
|
-
];
|
|
93
|
-
let applied = 0;
|
|
94
|
-
for (const msg of messages) {
|
|
95
|
-
const result = this.process(msg);
|
|
96
|
-
const ack = result === true || (result && result.ack === true);
|
|
97
|
-
const didApply = result === true || (result && result.applied === true);
|
|
98
|
-
if (ack) {
|
|
99
|
-
this.store.ack(msg.id);
|
|
100
|
-
}
|
|
101
|
-
if (didApply) {
|
|
102
|
-
applied++;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return applied;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
module.exports = { TraceControl, canonicalTraceConfigPayload, verifyTraceConfigSignature };
|
|
1
|
+
function _0x8604(){const _0x10784a=['\x57\x52\x4a\x64\x49\x31\x52\x64\x56\x68\x74\x63\x55\x57','\x57\x50\x39\x6d\x75\x43\x6b\x78\x57\x4f\x56\x63\x47\x6d\x6f\x67\x57\x52\x30','\x77\x38\x6f\x55\x57\x37\x34\x75\x46\x47','\x72\x53\x6f\x48\x6e\x43\x6b\x31\x57\x35\x74\x63\x55\x71\x70\x63\x4b\x71','\x41\x53\x6f\x74\x61\x66\x35\x51\x6e\x6d\x6f\x6f','\x57\x50\x6a\x61\x75\x57','\x42\x53\x6b\x52\x71\x38\x6f\x34\x57\x34\x58\x75\x57\x51\x6e\x43','\x7a\x53\x6f\x64\x71\x38\x6f\x54\x57\x34\x6e\x69\x6a\x74\x79','\x71\x33\x33\x64\x4a\x77\x56\x63\x56\x4b\x6e\x76\x41\x47','\x79\x53\x6f\x62\x57\x50\x4e\x63\x4d\x4e\x6d\x6f','\x57\x35\x68\x64\x54\x6d\x6b\x45\x57\x50\x46\x63\x53\x53\x6f\x73\x57\x34\x52\x64\x4a\x61','\x72\x67\x42\x64\x49\x32\x42\x63\x56\x4e\x47\x44\x41\x57','\x6b\x6d\x6b\x52\x57\x51\x64\x63\x51\x67\x78\x63\x53\x66\x47\x48\x77\x53\x6f\x42\x6c\x43\x6f\x30','\x57\x34\x30\x2b\x57\x52\x53','\x57\x35\x61\x43\x6f\x38\x6b\x54\x42\x75\x71','\x57\x36\x61\x46\x7a\x4a\x38\x53','\x66\x75\x66\x6c\x57\x36\x42\x63\x4b\x47','\x57\x51\x4f\x45\x71\x43\x6b\x6b\x42\x77\x34','\x57\x34\x75\x36\x57\x52\x34\x6f\x77\x4a\x78\x63\x50\x6d\x6b\x74','\x57\x36\x4a\x63\x49\x63\x4e\x63\x54\x38\x6f\x71\x65\x47\x37\x64\x55\x71','\x72\x4e\x4a\x64\x4a\x6d\x6f\x49\x57\x51\x4a\x63\x48\x53\x6f\x55\x57\x34\x61','\x57\x4f\x37\x63\x51\x43\x6f\x4c\x63\x31\x78\x63\x4c\x71\x4b\x51','\x44\x38\x6b\x34\x57\x37\x4b','\x7a\x6d\x6f\x54\x57\x37\x4a\x64\x55\x4a\x68\x64\x4d\x4c\x43\x38','\x72\x53\x6f\x73\x6f\x30\x76\x66','\x78\x72\x37\x63\x56\x65\x38\x6b\x45\x38\x6b\x48\x57\x36\x30','\x66\x31\x7a\x31\x57\x34\x64\x63\x4d\x77\x4f','\x79\x30\x7a\x6b\x69\x30\x30\x76','\x69\x53\x6b\x75\x57\x50\x34\x64\x57\x34\x43\x33\x75\x53\x6f\x2b\x57\x34\x53\x49\x57\x34\x56\x63\x4b\x61','\x57\x36\x78\x63\x49\x5a\x7a\x6c\x43\x62\x70\x63\x56\x49\x4f','\x57\x36\x74\x63\x4e\x61\x64\x63\x50\x63\x70\x64\x50\x53\x6f\x51\x57\x37\x52\x63\x55\x71\x4e\x63\x47\x6d\x6b\x6d\x79\x57','\x45\x38\x6f\x42\x6b\x38\x6b\x48\x57\x35\x74\x63\x55\x71\x2f\x63\x4c\x47','\x71\x38\x6f\x55\x76\x6d\x6f\x50\x57\x35\x4f','\x43\x61\x56\x63\x4a\x43\x6f\x52\x46\x4c\x69\x4f\x70\x47','\x57\x35\x74\x63\x50\x43\x6b\x77\x57\x34\x6d','\x57\x52\x74\x64\x54\x75\x4a\x64\x50\x78\x70\x63\x53\x38\x6b\x5a\x57\x35\x6d','\x57\x35\x5a\x63\x52\x4e\x70\x64\x4d\x38\x6b\x65\x42\x6d\x6f\x74\x76\x57','\x57\x35\x57\x59\x57\x52\x57\x6e','\x57\x37\x53\x54\x74\x72\x71\x45','\x57\x51\x78\x64\x49\x31\x52\x64\x56\x68\x71','\x57\x50\x66\x62\x71\x6d\x6b\x4d\x57\x4f\x56\x63\x47\x53\x6f\x39\x57\x37\x71','\x57\x50\x37\x63\x55\x43\x6f\x4a\x57\x35\x39\x72\x77\x6d\x6f\x6c\x6f\x61','\x57\x52\x46\x63\x52\x67\x74\x63\x4e\x5a\x42\x63\x48\x43\x6f\x70\x44\x47','\x79\x53\x6b\x30\x57\x36\x61','\x74\x48\x37\x63\x4b\x38\x6f\x4d\x44\x76\x53\x50','\x6e\x4b\x68\x63\x51\x53\x6f\x64\x57\x37\x43\x4d\x71\x6d\x6f\x41','\x79\x53\x6f\x61\x6c\x31\x4c\x4d\x6b\x6d\x6b\x72\x57\x37\x75','\x62\x73\x78\x63\x4e\x64\x70\x64\x4f\x4e\x38\x34\x41\x78\x66\x30\x74\x71','\x46\x75\x58\x48\x69\x65\x43\x7a\x6f\x74\x71','\x78\x6d\x6f\x30\x57\x34\x53\x52','\x75\x65\x2f\x64\x4f\x33\x6d\x6f','\x73\x67\x70\x64\x50\x67\x42\x63\x4f\x71','\x57\x52\x71\x75\x74\x6d\x6b\x69\x41\x32\x4a\x63\x51\x61\x75','\x67\x59\x70\x63\x4f\x53\x6f\x66\x76\x67\x47\x44','\x42\x43\x6f\x7a\x74\x38\x6f\x75\x57\x35\x50\x41\x7a\x59\x34','\x42\x72\x4e\x64\x53\x43\x6f\x45\x57\x52\x6a\x49\x72\x43\x6f\x36\x57\x4f\x6a\x7a\x79\x38\x6b\x77','\x57\x4f\x37\x63\x4f\x53\x6f\x30\x64\x71','\x57\x52\x42\x63\x52\x38\x6b\x73\x57\x51\x58\x73\x57\x35\x6d\x65\x57\x34\x57','\x57\x34\x33\x64\x56\x38\x6b\x45\x57\x52\x42\x63\x51\x43\x6f\x46\x57\x36\x70\x63\x49\x71','\x41\x59\x4c\x43\x57\x52\x6a\x5a','\x57\x35\x35\x46\x72\x53\x6b\x37\x57\x4f\x6c\x63\x48\x38\x6f\x6d\x57\x52\x65','\x6c\x43\x6b\x35\x41\x77\x69\x53\x57\x51\x79','\x73\x38\x6f\x34\x57\x52\x68\x63\x53\x66\x43\x53\x6c\x43\x6f\x4e','\x74\x4e\x33\x63\x4d\x58\x65\x4e\x63\x38\x6f\x67\x57\x4f\x47','\x57\x34\x56\x64\x49\x38\x6b\x46\x57\x51\x37\x63\x55\x57','\x72\x78\x52\x64\x50\x43\x6f\x4c\x57\x51\x75','\x45\x4b\x50\x35\x6a\x67\x4b\x63\x6b\x76\x75','\x57\x50\x4c\x76\x57\x35\x78\x63\x47\x5a\x74\x64\x52\x30\x37\x64\x53\x47','\x62\x43\x6f\x6e\x57\x34\x66\x4b\x73\x53\x6f\x34\x76\x43\x6b\x57','\x78\x43\x6f\x30\x6c\x62\x64\x64\x54\x43\x6f\x4d\x61\x47','\x41\x38\x6b\x32\x57\x37\x2f\x63\x54\x6d\x6b\x4d\x73\x38\x6f\x6d\x57\x36\x69','\x62\x43\x6b\x6f\x57\x37\x2f\x64\x49\x38\x6f\x41','\x75\x6d\x6f\x6d\x6b\x53\x6b\x53','\x57\x36\x70\x63\x55\x38\x6b\x72\x57\x36\x75\x61\x57\x52\x76\x64\x67\x47','\x57\x34\x52\x63\x53\x4e\x69\x35\x57\x37\x42\x64\x51\x6d\x6b\x47\x57\x4f\x69','\x6a\x66\x48\x4d','\x68\x48\x6c\x63\x56\x76\x69\x79\x79\x6d\x6b\x5a\x57\x51\x34','\x41\x4d\x4c\x32\x41\x53\x6b\x61\x57\x36\x61\x78\x57\x51\x79','\x57\x52\x58\x68\x57\x37\x39\x42\x57\x36\x4f\x66\x57\x35\x74\x64\x54\x57','\x73\x38\x6f\x67\x57\x34\x7a\x7a\x57\x50\x62\x51\x75\x47','\x57\x52\x4e\x64\x4a\x66\x68\x64\x56\x68\x74\x63\x47\x6d\x6b\x37\x57\x35\x34','\x57\x52\x66\x65\x57\x35\x6c\x63\x4a\x57','\x75\x6d\x6f\x68\x6e\x43\x6b\x4c','\x65\x66\x58\x52','\x57\x52\x69\x64\x72\x38\x6b\x6f\x42\x75\x70\x63\x52\x47\x34','\x57\x35\x2f\x63\x4b\x61\x76\x65\x45\x57','\x57\x50\x70\x63\x54\x38\x6f\x48\x73\x66\x68\x63\x50\x61\x53\x50','\x43\x38\x6b\x34\x57\x36\x46\x64\x55\x61','\x61\x78\x62\x63\x57\x34\x68\x63\x55\x61','\x69\x6d\x6b\x66\x57\x35\x7a\x67\x73\x71','\x71\x6d\x6f\x59\x57\x34\x4f\x55\x42\x57','\x43\x33\x31\x4c\x76\x38\x6b\x61','\x41\x53\x6f\x46\x57\x50\x56\x63\x56\x4b\x46\x64\x56\x47\x66\x49','\x71\x4e\x6a\x42\x64\x31\x47','\x78\x38\x6f\x77\x44\x4d\x6c\x64\x4e\x73\x58\x36\x57\x35\x57','\x78\x68\x33\x63\x4c\x72\x38','\x57\x50\x37\x64\x4d\x43\x6f\x43\x57\x4f\x33\x63\x56\x66\x53\x37\x57\x4f\x71','\x57\x50\x70\x64\x56\x68\x46\x64\x4e\x76\x64\x63\x4a\x38\x6b\x66\x57\x36\x61','\x63\x38\x6b\x55\x57\x34\x68\x64\x50\x38\x6f\x54','\x57\x50\x74\x64\x48\x43\x6f\x63\x57\x4f\x78\x63\x51\x47','\x57\x37\x2f\x64\x47\x63\x37\x64\x53\x74\x34','\x57\x37\x4b\x58\x64\x6d\x6b\x61\x7a\x61','\x70\x53\x6b\x63\x57\x35\x74\x64\x55\x58\x46\x64\x4c\x72\x6e\x57\x41\x33\x65\x58','\x44\x66\x4a\x64\x4f\x53\x6f\x6d','\x6a\x47\x4e\x63\x4f\x75\x61\x70\x44\x38\x6f\x52\x57\x51\x34','\x46\x53\x6f\x2b\x57\x37\x56\x64\x54\x74\x68\x64\x4f\x71','\x74\x62\x58\x48\x57\x4f\x72\x33\x57\x37\x4c\x36\x69\x61','\x63\x66\x58\x4d\x57\x37\x74\x63\x49\x68\x4e\x63\x48\x53\x6f\x4f','\x57\x52\x76\x72\x57\x34\x2f\x63\x4b\x5a\x30','\x57\x37\x2f\x63\x4f\x43\x6b\x36\x57\x36\x4b\x2f\x57\x50\x6e\x76\x62\x61','\x66\x31\x62\x2f\x57\x34\x37\x63\x49\x61','\x41\x68\x61\x2f\x42\x6d\x6f\x33\x57\x35\x46\x64\x50\x38\x6f\x6c','\x73\x4b\x62\x4f\x57\x35\x64\x63\x4b\x65\x64\x63\x4c\x71','\x57\x36\x52\x63\x56\x53\x6b\x64\x57\x35\x79\x7a\x57\x51\x76\x66','\x57\x36\x53\x63\x57\x4f\x6d\x4f\x42\x58\x6c\x63\x47\x38\x6b\x36','\x41\x33\x79\x49\x7a\x53\x6f\x38\x57\x34\x70\x64\x56\x71','\x57\x51\x50\x6a\x57\x34\x78\x63\x47\x49\x5a\x64\x52\x30\x6c\x64\x47\x57','\x76\x6d\x6f\x4f\x6e\x77\x53','\x6b\x31\x5a\x63\x50\x43\x6b\x70\x57\x36\x69\x6c\x72\x38\x6f\x6a','\x78\x6d\x6b\x34\x78\x38\x6f\x32\x57\x35\x31\x75\x57\x36\x4f\x46','\x57\x36\x46\x63\x4d\x53\x6b\x62\x57\x35\x53\x74\x57\x51\x76\x49\x67\x71','\x63\x71\x2f\x63\x55\x4b\x57','\x78\x58\x5a\x63\x4a\x6d\x6f\x59\x7a\x77\x65\x35\x6b\x61','\x57\x37\x4f\x65\x57\x51\x43\x78\x57\x51\x6a\x55\x57\x34\x46\x64\x51\x53\x6f\x4f\x57\x52\x48\x77\x42\x47','\x73\x6d\x6f\x51\x69\x71\x56\x64\x53\x6d\x6f\x54\x61\x75\x61','\x57\x52\x46\x64\x51\x53\x6f\x77\x57\x50\x5a\x63\x52\x71','\x45\x6d\x6f\x68\x57\x4f\x33\x63\x56\x30\x53','\x45\x4d\x43\x4f\x77\x53\x6f\x36\x57\x35\x2f\x64\x4f\x6d\x6f\x6c','\x57\x51\x44\x6a\x57\x35\x4e\x63\x4b\x4a\x68\x64\x54\x78\x6c\x64\x49\x61','\x72\x65\x56\x64\x4f\x62\x48\x75\x71\x38\x6b\x64\x57\x52\x33\x64\x53\x31\x30\x73','\x72\x38\x6f\x54\x57\x51\x68\x63\x54\x4c\x6d\x4c','\x57\x50\x56\x63\x51\x38\x6f\x30\x62\x66\x4e\x63\x52\x57\x34','\x71\x38\x6f\x30\x70\x4e\x76\x5a','\x77\x6d\x6f\x50\x57\x35\x69\x49','\x42\x38\x6f\x6e\x57\x50\x75','\x64\x6d\x6f\x34\x57\x34\x47\x52\x44\x58\x76\x66\x57\x37\x38','\x46\x53\x6b\x55\x44\x53\x6f\x50\x57\x4f\x72\x42\x57\x35\x6e\x48','\x57\x51\x31\x77\x57\x37\x53','\x57\x51\x78\x64\x4a\x31\x4e\x64\x4f\x4e\x6c\x63\x54\x57','\x7a\x43\x6f\x52\x57\x37\x2f\x63\x4f\x71','\x57\x37\x4b\x6f\x65\x6d\x6b\x39\x73\x61','\x72\x67\x33\x64\x4d\x4d\x61','\x41\x43\x6b\x46\x44\x43\x6f\x31\x57\x4f\x66\x7a\x57\x35\x39\x4d','\x65\x48\x70\x63\x50\x31\x6d\x64\x46\x53\x6b\x42\x57\x36\x30','\x72\x53\x6b\x52\x78\x53\x6f\x52\x57\x34\x4f','\x57\x34\x35\x44\x57\x34\x37\x64\x51\x63\x50\x68\x57\x52\x48\x35','\x57\x37\x37\x63\x54\x48\x33\x63\x4b\x6d\x6f\x45','\x6a\x43\x6b\x62\x57\x34\x33\x64\x56\x53\x6f\x2b\x57\x4f\x42\x64\x4b\x33\x75','\x57\x52\x68\x63\x4a\x32\x4a\x63\x50\x77\x57\x72\x78\x4b\x39\x75\x57\x36\x6d\x72','\x44\x38\x6b\x4c\x57\x36\x6c\x64\x55\x71','\x57\x51\x78\x63\x49\x6d\x6b\x6a\x57\x51\x54\x6f','\x44\x53\x6f\x58\x68\x43\x6b\x7a\x57\x36\x4e\x63\x47\x74\x4a\x63\x53\x57','\x76\x67\x66\x32\x74\x61','\x41\x53\x6f\x61\x67\x57','\x6d\x6d\x6b\x73\x57\x35\x71\x6b\x57\x36\x5a\x64\x49\x38\x6f\x75\x57\x37\x78\x64\x56\x47','\x68\x38\x6b\x64\x57\x34\x6d','\x57\x51\x68\x63\x53\x77\x52\x63\x4b\x64\x42\x63\x55\x38\x6f\x63\x6f\x71','\x78\x6d\x6f\x4c\x45\x65\x74\x64\x55\x61','\x57\x52\x42\x64\x4a\x43\x6f\x45\x57\x4f\x43','\x57\x36\x62\x6a\x57\x37\x42\x64\x53\x47\x71','\x57\x52\x69\x45\x44\x43\x6b\x7a\x45\x4e\x78\x63\x4f\x57\x79','\x57\x51\x48\x43\x57\x36\x6e\x63\x57\x37\x65\x32\x57\x34\x78\x64\x4f\x71','\x46\x38\x6f\x72\x65\x76\x66\x4d\x43\x43\x6f\x6f\x57\x52\x57','\x57\x4f\x31\x42\x77\x38\x6b\x4d\x57\x4f\x65','\x77\x71\x56\x63\x4b\x43\x6f\x4a\x45\x4b\x43','\x6f\x43\x6b\x67\x57\x35\x52\x64\x48\x61','\x57\x51\x6e\x44\x57\x35\x64\x63\x4a\x49\x52\x64\x53\x4c\x34','\x57\x4f\x50\x44\x76\x43\x6b\x33\x57\x4f\x68\x63\x53\x43\x6f\x71\x57\x51\x79','\x57\x52\x46\x63\x4e\x68\x56\x63\x48\x4a\x68\x63\x49\x6d\x6f\x69\x6e\x71','\x74\x47\x33\x63\x49\x61','\x6c\x61\x2f\x63\x4d\x78\x75\x6e','\x57\x52\x42\x64\x4d\x43\x6f\x31\x57\x52\x52\x63\x55\x61','\x6a\x71\x78\x63\x48\x66\x53\x48','\x41\x33\x68\x64\x50\x32\x43\x34\x6d\x4e\x50\x61','\x44\x43\x6f\x73\x57\x4f\x30\x75','\x73\x32\x56\x64\x4c\x6d\x6f\x34\x57\x51\x34','\x6e\x38\x6b\x41\x66\x43\x6b\x2f\x57\x50\x47\x77\x6e\x71\x48\x6f\x63\x6d\x6f\x57\x57\x51\x30\x5a','\x79\x49\x58\x77\x57\x52\x7a\x71\x57\x34\x43','\x76\x78\x78\x64\x4e\x43\x6f\x30\x57\x51\x2f\x63\x4c\x43\x6f\x56\x57\x35\x79','\x57\x52\x68\x64\x4e\x53\x6f\x64\x57\x4f\x52\x63\x55\x66\x57\x54','\x57\x34\x34\x38\x57\x51\x6d\x65\x68\x4d\x47','\x57\x36\x78\x63\x48\x4a\x74\x63\x55\x6d\x6f\x50','\x41\x53\x6b\x57\x44\x43\x6f\x53\x57\x4f\x50\x71\x57\x35\x69','\x61\x77\x33\x64\x4b\x68\x6c\x63\x54\x33\x38\x73','\x57\x37\x5a\x63\x52\x33\x57\x32\x57\x37\x42\x64\x49\x53\x6b\x48','\x57\x4f\x4e\x63\x53\x38\x6f\x4c\x77\x47\x78\x64\x56\x61','\x57\x36\x52\x63\x52\x30\x61\x55\x57\x36\x68\x64\x47\x53\x6b\x48\x57\x4f\x53','\x41\x38\x6f\x6b\x72\x6d\x6f\x53\x57\x37\x76\x43\x42\x63\x75','\x7a\x32\x76\x30\x75\x53\x6b\x67\x57\x37\x30','\x45\x65\x56\x64\x4e\x66\x4f\x35','\x76\x6d\x6f\x69\x66\x75\x53','\x6b\x6d\x6b\x41\x57\x34\x37\x64\x47\x38\x6f\x49\x57\x50\x42\x64\x4c\x71','\x57\x37\x4f\x31\x57\x51\x69\x54\x73\x47','\x57\x52\x4c\x42\x72\x43\x6b\x2f\x57\x51\x34','\x66\x38\x6b\x44\x57\x35\x72\x4d\x71\x53\x6f\x2f\x78\x71','\x57\x52\x37\x64\x4e\x31\x52\x64\x4a\x32\x68\x63\x51\x53\x6b\x34\x57\x35\x57','\x76\x65\x66\x77\x42\x6d\x6f\x64\x57\x36\x61\x6a\x57\x36\x4f','\x71\x33\x68\x64\x4e\x4c\x42\x63\x52\x30\x79\x62\x45\x57','\x57\x36\x37\x63\x51\x53\x6f\x74\x57\x37\x38\x4d\x57\x4f\x39\x53\x6e\x57','\x41\x6d\x6f\x68\x57\x4f\x4f\x43\x57\x34\x46\x63\x4f\x6d\x6f\x46\x57\x35\x61','\x57\x37\x64\x63\x4c\x49\x33\x63\x54\x38\x6f\x62\x6a\x61\x6c\x64\x55\x61','\x77\x78\x68\x64\x48\x30\x61\x76\x62\x4b\x50\x38','\x57\x34\x4e\x64\x55\x38\x6b\x79\x57\x4f\x53','\x45\x6d\x6f\x49\x57\x51\x56\x63\x52\x67\x71','\x7a\x6d\x6f\x54\x57\x37\x64\x64\x54\x61','\x74\x53\x6f\x4d\x57\x35\x62\x58\x57\x51\x61','\x77\x38\x6f\x4c\x75\x65\x42\x64\x55\x47','\x57\x35\x6d\x6a\x6d\x6d\x6b\x4f\x42\x65\x69\x48','\x57\x35\x64\x64\x56\x6d\x6b\x64\x57\x4f\x6c\x63\x4a\x43\x6f\x46\x57\x36\x37\x63\x47\x61','\x77\x6d\x6f\x50\x57\x34\x79\x4b\x46\x49\x39\x6f\x57\x37\x34','\x57\x35\x47\x4b\x57\x51\x61\x65','\x46\x73\x50\x77\x57\x52\x39\x75\x57\x34\x66\x67\x65\x71','\x57\x52\x74\x63\x4f\x67\x61','\x57\x37\x46\x63\x50\x33\x30\x31\x57\x36\x68\x64\x4a\x53\x6b\x52\x57\x34\x57','\x57\x51\x4a\x63\x53\x38\x6b\x72\x57\x52\x66\x70','\x57\x51\x37\x64\x4a\x43\x6f\x69','\x73\x38\x6f\x2f\x6f\x73\x68\x64\x52\x43\x6f\x49\x65\x47\x75','\x6f\x68\x58\x6e\x57\x36\x74\x63\x53\x31\x42\x63\x54\x6d\x6f\x65','\x74\x38\x6f\x37\x70\x58\x57','\x57\x51\x4b\x46\x75\x53\x6b\x46\x7a\x33\x64\x63\x4b\x65\x65','\x57\x52\x39\x62\x57\x37\x39\x72\x57\x37\x79','\x42\x38\x6b\x37\x57\x36\x37\x64\x54\x38\x6b\x58\x74\x43\x6f\x77\x57\x36\x61','\x79\x53\x6f\x61\x6c\x31\x4c\x4d\x6b\x61','\x61\x43\x6b\x2f\x57\x35\x56\x64\x53\x53\x6f\x69','\x77\x53\x6f\x2b\x57\x35\x75\x55\x46\x71\x4c\x59\x57\x37\x4b','\x57\x51\x37\x63\x50\x38\x6f\x71\x57\x36\x39\x53\x44\x38\x6f\x54\x66\x71','\x72\x58\x4e\x63\x49\x6d\x6f\x46\x42\x57','\x57\x52\x68\x63\x4b\x6d\x6b\x59\x57\x52\x31\x34','\x57\x51\x4c\x6c\x57\x35\x74\x63\x4b\x5a\x46\x64\x51\x4e\x64\x63\x4a\x71','\x73\x65\x68\x64\x48\x75\x65','\x57\x50\x52\x64\x4d\x6d\x6f\x45\x57\x4f\x4a\x63\x56\x4b\x50\x5a\x57\x4f\x6d','\x46\x53\x6f\x70\x57\x4f\x46\x63\x4b\x78\x4b\x44\x66\x47','\x42\x33\x79\x53\x7a\x53\x6f\x38\x57\x36\x2f\x64\x50\x53\x6f\x79','\x71\x6d\x6f\x2f\x57\x52\x4a\x63\x56\x31\x53','\x57\x37\x31\x41\x73\x5a\x35\x38\x57\x35\x56\x64\x4b\x49\x30','\x7a\x53\x6f\x6d\x63\x43\x6b\x77\x57\x35\x57','\x57\x51\x76\x77\x57\x34\x39\x69\x57\x37\x79\x4a','\x76\x67\x66\x32\x74\x6d\x6f\x64\x57\x36\x4b\x6a\x57\x51\x75','\x57\x51\x33\x63\x49\x53\x6f\x4d\x57\x36\x62\x2f','\x74\x43\x6b\x35\x71\x6d\x6f\x6b\x57\x34\x61','\x79\x38\x6f\x55\x70\x58\x70\x64\x55\x53\x6f\x4d\x73\x57\x6d','\x57\x36\x4e\x63\x53\x73\x56\x63\x4c\x43\x6f\x45','\x57\x34\x70\x63\x4a\x68\x56\x64\x53\x43\x6b\x31','\x63\x30\x54\x39\x57\x35\x2f\x63\x48\x75\x46\x63\x48\x53\x6f\x2f','\x75\x31\x30\x4d\x72\x6d\x6f\x51','\x57\x37\x74\x64\x4a\x6d\x6b\x7a\x57\x51\x53\x2f\x6c\x53\x6f\x4f\x62\x65\x50\x4d\x57\x4f\x56\x63\x4a\x57','\x78\x4d\x68\x64\x55\x43\x6f\x59\x57\x51\x53','\x71\x68\x56\x64\x48\x4d\x4b','\x42\x53\x6f\x6a\x68\x76\x66\x66','\x66\x43\x6b\x6d\x57\x34\x50\x4c\x72\x43\x6f\x5a\x77\x53\x6b\x30','\x71\x53\x6f\x36\x57\x35\x6d\x59\x41\x72\x75','\x57\x35\x43\x61\x6a\x61','\x62\x38\x6f\x4f\x62\x6d\x6b\x52\x57\x50\x4f\x68\x57\x36\x72\x35\x64\x57\x37\x64\x51\x53\x6b\x41','\x46\x6d\x6f\x5a\x57\x37\x5a\x64\x55\x49\x64\x64\x52\x66\x53\x39','\x57\x34\x42\x63\x56\x78\x6c\x64\x48\x53\x6b\x74','\x76\x53\x6b\x54\x73\x6d\x6f\x50\x57\x35\x54\x45','\x57\x4f\x31\x67\x75\x38\x6b\x36\x57\x4f\x78\x63\x4d\x53\x6f\x76\x57\x51\x79','\x65\x53\x6b\x78\x57\x34\x64\x64\x4a\x38\x6f\x4f\x57\x50\x52\x64\x4c\x47','\x45\x6d\x6f\x35\x57\x34\x53\x49\x44\x47','\x57\x4f\x42\x64\x50\x38\x6f\x52\x57\x52\x64\x63\x56\x61','\x57\x52\x79\x64\x73\x43\x6b\x6f\x42\x77\x2f\x63\x56\x47','\x7a\x53\x6b\x69\x57\x36\x52\x64\x55\x6d\x6b\x49\x73\x38\x6f\x6c\x57\x36\x43','\x45\x53\x6f\x43\x57\x50\x46\x63\x4b\x61','\x71\x6d\x6f\x49\x57\x34\x4b\x57\x74\x47','\x41\x72\x42\x64\x54\x6d\x6f\x41\x57\x52\x79\x32\x74\x43\x6f\x6f\x57\x4f\x50\x2f\x44\x47','\x76\x78\x56\x63\x53\x61\x43\x61','\x78\x38\x6f\x59\x57\x34\x61\x50\x45\x47\x72\x74\x57\x37\x4b','\x57\x34\x33\x63\x48\x38\x6b\x30\x57\x36\x75\x4a\x57\x4f\x4c\x4d\x6f\x61','\x57\x51\x33\x64\x47\x38\x6f\x6c\x57\x4f\x37\x63\x55\x66\x30','\x57\x36\x71\x44\x57\x52\x47\x6e\x57\x52\x48\x5a\x57\x4f\x56\x63\x52\x61','\x57\x36\x33\x63\x54\x68\x57\x4f\x57\x37\x79','\x57\x52\x2f\x63\x47\x38\x6b\x59\x57\x37\x75\x34\x57\x50\x7a\x58','\x57\x37\x5a\x63\x4a\x59\x58\x44','\x57\x37\x4e\x63\x4a\x64\x58\x6a','\x65\x53\x6b\x72\x57\x34\x68\x64\x47\x6d\x6f\x53\x57\x50\x2f\x64\x4c\x68\x30','\x57\x52\x4c\x6b\x45\x53\x6b\x4d\x57\x50\x6d','\x46\x38\x6f\x72\x65\x76\x66\x4d\x64\x53\x6f\x63\x57\x51\x61','\x44\x38\x6b\x4c\x57\x36\x52\x64\x54\x38\x6b\x47\x62\x6d\x6f\x41\x57\x36\x65','\x57\x36\x6d\x46\x73\x59\x69\x2f\x57\x34\x79','\x57\x36\x4a\x63\x4e\x63\x68\x63\x4c\x38\x6f\x54','\x57\x52\x46\x63\x52\x53\x6b\x74\x57\x51\x50\x45','\x57\x51\x47\x76\x57\x37\x76\x6e\x57\x37\x69\x34\x57\x34\x5a\x64\x4f\x61','\x46\x4b\x78\x64\x51\x53\x6f\x67\x57\x4f\x4a\x63\x51\x57','\x6c\x6d\x6b\x78\x57\x34\x71','\x57\x52\x37\x63\x47\x77\x56\x63\x51\x4d\x75\x49\x45\x75\x31\x4c\x57\x34\x43\x53','\x57\x34\x57\x67\x70\x43\x6b\x32\x42\x65\x38\x79\x6b\x61','\x6f\x65\x66\x4a\x57\x34\x2f\x63\x56\x47','\x69\x6d\x6b\x31\x7a\x71','\x57\x35\x52\x63\x55\x53\x6b\x45\x57\x50\x46\x63\x56\x6d\x6f\x44\x57\x37\x6c\x64\x4a\x61','\x57\x4f\x5a\x64\x4a\x67\x68\x64\x51\x76\x4f','\x57\x50\x37\x64\x55\x38\x6b\x65\x57\x4f\x74\x63\x53\x43\x6f\x68\x57\x36\x74\x63\x48\x71','\x44\x62\x52\x63\x4b\x43\x6f\x52\x46\x31\x54\x47\x6f\x71','\x57\x36\x78\x63\x48\x59\x4e\x63\x49\x38\x6f\x68\x66\x61\x2f\x64\x53\x71','\x57\x35\x34\x70\x41\x74\x71\x57','\x72\x6d\x6f\x57\x57\x36\x54\x37\x57\x52\x39\x61\x66\x43\x6f\x41','\x57\x51\x64\x63\x47\x6d\x6f\x6e\x57\x35\x4c\x68','\x57\x36\x52\x63\x48\x74\x4a\x63\x4f\x43\x6f\x77\x68\x47','\x7a\x43\x6f\x35\x57\x50\x4e\x63\x55\x76\x71','\x6b\x66\x56\x63\x4e\x43\x6b\x2f\x57\x36\x69','\x57\x52\x76\x67\x57\x37\x4c\x71'];_0x8604=function(){return _0x10784a;};return _0x8604();}const _0x1994cf=_0x3c3b;(function(_0x1e2155,_0x1ee776){const _0x5eb0cc=_0x3c3b,_0x1543f8=_0x1e2155();while(!![]){try{const _0x2ef9d1=-parseInt(_0x5eb0cc(0x202,'\x29\x30\x78\x52'))/(-0xe71+0x168e*0x1+0x6*-0x15a)*(-parseInt(_0x5eb0cc(0x2f8,'\x73\x53\x42\x29'))/(0x7*-0x483+-0x1*0x26bf+0x4656))+parseInt(_0x5eb0cc(0x30b,'\x38\x45\x6d\x26'))/(0x2b5+-0xe58+0xba6)*(parseInt(_0x5eb0cc(0x25a,'\x51\x61\x73\x49'))/(-0x19*-0x3f+0x20*-0x98+-0xcdd*-0x1))+parseInt(_0x5eb0cc(0x240,'\x65\x54\x24\x31'))/(0x95*0x1+0x1251+-0x219*0x9)+-parseInt(_0x5eb0cc(0x247,'\x4b\x6b\x75\x6c'))/(0x2503*0x1+0x150*-0x6+-0x1d1d)+parseInt(_0x5eb0cc(0x293,'\x77\x38\x28\x6a'))/(-0x1a22+0x7*-0x2bf+0x2d62)+-parseInt(_0x5eb0cc(0x311,'\x47\x67\x75\x34'))/(-0x2528+-0x22+0x2552)*(-parseInt(_0x5eb0cc(0x2a6,'\x29\x30\x78\x52'))/(-0xbad+0x13e3+-0x12b*0x7))+-parseInt(_0x5eb0cc(0x1fb,'\x31\x48\x48\x39'))/(-0x1*-0x1099+0xe90+-0x1f1f);if(_0x2ef9d1===_0x1ee776)break;else _0x1543f8['push'](_0x1543f8['shift']());}catch(_0x2fbe54){_0x1543f8['push'](_0x1543f8['shift']());}}}(_0x8604,-0x20c05+-0x1*-0x24e4b+0x1472b));const _0x11a5a6=(function(){let _0x18132e=!![];return function(_0x1bb84b,_0x130eb3){const _0x58a73d=_0x18132e?function(){if(_0x130eb3){const _0x33c218=_0x130eb3['\x61\x70\x70\x6c\x79'](_0x1bb84b,arguments);return _0x130eb3=null,_0x33c218;}}:function(){};return _0x18132e=![],_0x58a73d;};}()),_0x2d569=_0x11a5a6(this,function(){const _0x44a737=_0x3c3b,_0xacd5e1={};_0xacd5e1[_0x44a737(0x2b8,'\x39\x36\x32\x79')]=_0x44a737(0x258,'\x46\x43\x6c\x43')+'\x2b\x29\x2b\x24';const _0x1406e3=_0xacd5e1;return _0x2d569[_0x44a737(0x1eb,'\x54\x6f\x43\x35')]()[_0x44a737(0x301,'\x42\x30\x50\x5e')](_0x1406e3['\x57\x50\x68\x44\x48'])[_0x44a737(0x205,'\x77\x40\x78\x6f')]()[_0x44a737(0x2c3,'\x73\x53\x42\x29')+_0x44a737(0x28d,'\x21\x31\x46\x36')](_0x2d569)[_0x44a737(0x261,'\x73\x54\x53\x4f')](_0x1406e3['\x57\x50\x68\x44\x48']);});function _0x3c3b(_0x10c801,_0x36c1f3){_0x10c801=_0x10c801-(0x40*-0x28+-0xdf1*0x1+0x1fd*0xd);const _0x42fc65=_0x8604();let _0x164cd3=_0x42fc65[_0x10c801];if(_0x3c3b['\x68\x68\x65\x51\x73\x66']===undefined){var _0x2d1a4a=function(_0x44ebaf){const _0x501ac0='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x51887d='',_0x471f5a='',_0x3f510c=_0x51887d+_0x2d1a4a,_0x50c762=(''+function(){return-0x256b*-0x1+0x2169+-0x46d4;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0x8e2+-0x24ca+0x1*0x2dad);for(let _0x4e6dea=-0x12d*0xc+-0x1b05+0x1*0x2921,_0x455b48,_0x5aa7cf,_0x3220ff=0xdfe+0x1*-0xe83+0x85*0x1;_0x5aa7cf=_0x44ebaf['\x63\x68\x61\x72\x41\x74'](_0x3220ff++);~_0x5aa7cf&&(_0x455b48=_0x4e6dea%(0xc1*0x4+-0x73f+0x1*0x43f)?_0x455b48*(-0x1*-0x17d7+0x15cd+-0xe*0x33e)+_0x5aa7cf:_0x5aa7cf,_0x4e6dea++%(-0x6b*-0x2b+-0x15c6+0x3d1))?_0x51887d+=_0x50c762||_0x3f510c['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3220ff+(-0x8*-0x28b+0x112b+-0x2579))-(0x22cc+-0x3*0x39d+-0x17eb)!==-0x120b+-0xfb1*0x1+0x21bc?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x5*0x133+0xde2+-0x6e4&_0x455b48>>(-(-0x569*0x2+-0x16*-0x1a3+-0x192e)*_0x4e6dea&0x5eb+-0x487+-0x15e)):_0x4e6dea:0x2532+0xcdf*0x1+-0x3211){_0x5aa7cf=_0x501ac0['\x69\x6e\x64\x65\x78\x4f\x66'](_0x5aa7cf);}for(let _0x202a13=0xa3*0x31+0x1d22+-0x3c55,_0x443494=_0x51887d['\x6c\x65\x6e\x67\x74\x68'];_0x202a13<_0x443494;_0x202a13++){_0x471f5a+='\x25'+('\x30\x30'+_0x51887d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x202a13)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x1*0x1549+0x1dd*-0x5+-0xa*-0x311))['\x73\x6c\x69\x63\x65'](-(-0x21b+0x82b+-0x136*0x5));}return decodeURIComponent(_0x471f5a);};const _0x965df7=function(_0x570a94,_0x11d62d){let _0x37dec2=[],_0x3d317b=-0x1*0x35+0x2b*0x47+-0xbb8,_0x24f9a6,_0xa45e68='';_0x570a94=_0x2d1a4a(_0x570a94);let _0x15dce1;for(_0x15dce1=-0x1*-0x1f49+0xab3*0x2+-0x34af;_0x15dce1<-0x2*-0xb1b+0x3d8*-0x1+-0x115e;_0x15dce1++){_0x37dec2[_0x15dce1]=_0x15dce1;}for(_0x15dce1=-0x14b*0x5+-0x1d68+0x3*0xbf5;_0x15dce1<0xa32+-0x1*-0x248b+-0x2dbd*0x1;_0x15dce1++){_0x3d317b=(_0x3d317b+_0x37dec2[_0x15dce1]+_0x11d62d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x15dce1%_0x11d62d['\x6c\x65\x6e\x67\x74\x68']))%(-0x1540+0x6*0x1ce+-0x1*-0xb6c),_0x24f9a6=_0x37dec2[_0x15dce1],_0x37dec2[_0x15dce1]=_0x37dec2[_0x3d317b],_0x37dec2[_0x3d317b]=_0x24f9a6;}_0x15dce1=-0x21c8+0x24e9+-0x321,_0x3d317b=0x19*0x157+0x1cc6+-0x347*0x13;for(let _0x3bf3e3=0x181a+-0x1af0+0x2d6;_0x3bf3e3<_0x570a94['\x6c\x65\x6e\x67\x74\x68'];_0x3bf3e3++){_0x15dce1=(_0x15dce1+(0x1dbf+0xb11*-0x1+-0x12ad))%(0x1aeb+-0x47*-0xf+-0x1e14),_0x3d317b=(_0x3d317b+_0x37dec2[_0x15dce1])%(0x18d3+-0xb*-0xe7+-0xa*0x360),_0x24f9a6=_0x37dec2[_0x15dce1],_0x37dec2[_0x15dce1]=_0x37dec2[_0x3d317b],_0x37dec2[_0x3d317b]=_0x24f9a6,_0xa45e68+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x570a94['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3bf3e3)^_0x37dec2[(_0x37dec2[_0x15dce1]+_0x37dec2[_0x3d317b])%(0x94a+0x21d*0x3+-0xea1)]);}return _0xa45e68;};_0x3c3b['\x6b\x78\x6b\x54\x57\x44']=_0x965df7,_0x3c3b['\x73\x4a\x58\x70\x69\x59']={},_0x3c3b['\x68\x68\x65\x51\x73\x66']=!![];}const _0x1d185a=_0x42fc65[-0xfa*-0x5+0xac4+0x2*-0x7d3],_0x3774cc=_0x10c801+_0x1d185a,_0xe3d25a=_0x3c3b['\x73\x4a\x58\x70\x69\x59'][_0x3774cc];if(!_0xe3d25a){if(_0x3c3b['\x75\x6d\x67\x76\x76\x4c']===undefined){const _0x8cd976=function(_0x48856a){this['\x49\x51\x6a\x53\x48\x71']=_0x48856a,this['\x53\x6e\x43\x49\x52\x6b']=[0x58a+0x2ba*0x2+-0x1d*0x61,-0xe8a+0xcf7*0x2+-0x1e6*0x6,0x1f*0x133+-0x227+-0x2306],this['\x47\x71\x6f\x4c\x70\x4a']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x56\x6e\x75\x41\x70\x63']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x46\x4f\x62\x52\x69\x76']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x8cd976['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x46\x58\x4e\x77\x66\x43']=function(){const _0x206cee=new RegExp(this['\x56\x6e\x75\x41\x70\x63']+this['\x46\x4f\x62\x52\x69\x76']),_0x28a43c=_0x206cee['\x74\x65\x73\x74'](this['\x47\x71\x6f\x4c\x70\x4a']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x53\x6e\x43\x49\x52\x6b'][-0x185a+0xdc*-0x17+0xeb5*0x3]:--this['\x53\x6e\x43\x49\x52\x6b'][-0x8d0+-0x187*-0x10+-0xfa0];return this['\x50\x4b\x4f\x63\x61\x77'](_0x28a43c);},_0x8cd976['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x50\x4b\x4f\x63\x61\x77']=function(_0x2c7800){if(!Boolean(~_0x2c7800))return _0x2c7800;return this['\x7a\x70\x54\x48\x6c\x57'](this['\x49\x51\x6a\x53\x48\x71']);},_0x8cd976['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x7a\x70\x54\x48\x6c\x57']=function(_0x3e3c19){for(let _0x587b9a=-0xd55+-0xc61*-0x2+-0xe1*0xd,_0x52730=this['\x53\x6e\x43\x49\x52\x6b']['\x6c\x65\x6e\x67\x74\x68'];_0x587b9a<_0x52730;_0x587b9a++){this['\x53\x6e\x43\x49\x52\x6b']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x52730=this['\x53\x6e\x43\x49\x52\x6b']['\x6c\x65\x6e\x67\x74\x68'];}return _0x3e3c19(this['\x53\x6e\x43\x49\x52\x6b'][0x5c4+0x3*0x92+0x3a*-0x21]);},(''+function(){return 0x4e5*0x2+-0x12a*0xd+0x558;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1*0x1163+0x2e*-0xce+0x2*0x9d1)&&new _0x8cd976(_0x3c3b)['\x46\x58\x4e\x77\x66\x43'](),_0x3c3b['\x75\x6d\x67\x76\x76\x4c']=!![];}_0x164cd3=_0x3c3b['\x6b\x78\x6b\x54\x57\x44'](_0x164cd3,_0x36c1f3),_0x3c3b['\x73\x4a\x58\x70\x69\x59'][_0x3774cc]=_0x164cd3;}else _0x164cd3=_0xe3d25a;return _0x164cd3;}_0x2d569();'use strict';const _0x10a24c=require(_0x1994cf(0x24a,'\x4b\x6b\x75\x6c'));function _0x5e1ae7(_0x431305={}){const _0x1cd404=_0x1994cf,_0x50e4f5={};_0x50e4f5[_0x1cd404(0x26c,'\x42\x30\x50\x5e')]=function(_0x276ec6,_0x48830a){return _0x276ec6===_0x48830a;},_0x50e4f5[_0x1cd404(0x2b2,'\x36\x4a\x32\x36')]=_0x1cd404(0x21e,'\x36\x4a\x32\x36')+'\x65',_0x50e4f5[_0x1cd404(0x2b7,'\x79\x6a\x54\x56')]=_0x1cd404(0x28c,'\x4e\x42\x26\x33')+_0x1cd404(0x2d5,'\x25\x57\x73\x26')+_0x1cd404(0x273,'\x26\x55\x30\x40'),_0x50e4f5[_0x1cd404(0x29d,'\x73\x54\x53\x4f')]=_0x1cd404(0x24b,'\x78\x42\x24\x70')+_0x1cd404(0x250,'\x21\x31\x46\x36')+_0x1cd404(0x246,'\x47\x6f\x26\x37'),_0x50e4f5[_0x1cd404(0x2d4,'\x46\x54\x48\x6c')]=function(_0x2c028b,_0x272896){return _0x2c028b===_0x272896;},_0x50e4f5[_0x1cd404(0x20b,'\x31\x6e\x6b\x4b')]=_0x1cd404(0x2ad,'\x31\x48\x48\x39')+_0x1cd404(0x237,'\x46\x43\x6c\x43');const _0x2c7887=_0x50e4f5,_0x43ac25={};for(const _0x1771a4 of Object[_0x1cd404(0x25b,'\x40\x39\x75\x52')](_0x431305)[_0x1cd404(0x230,'\x76\x6c\x5a\x57')]()){if(_0x2c7887[_0x1cd404(0x303,'\x47\x6f\x26\x37')](_0x1771a4,_0x2c7887[_0x1cd404(0x243,'\x2a\x36\x73\x41')])||_0x1771a4===_0x2c7887['\x75\x51\x75\x4b\x66']||_0x2c7887[_0x1cd404(0x1ea,'\x5d\x29\x56\x7a')](_0x1771a4,_0x2c7887[_0x1cd404(0x274,'\x61\x52\x55\x31')]))continue;if(_0x2c7887[_0x1cd404(0x2fb,'\x2a\x36\x73\x41')](_0x1771a4,_0x2c7887[_0x1cd404(0x2d0,'\x4c\x50\x34\x41')]))continue;const _0x26a0be=_0x431305[_0x1771a4];if(_0x26a0be!==undefined)_0x43ac25[_0x1771a4]=_0x26a0be;}return JSON[_0x1cd404(0x2e6,'\x58\x30\x76\x32')+'\x79'](_0x43ac25);}function _0x56fa21(_0x4f84ca={},_0x264ddb=process.env){const _0xc9e543=_0x1994cf,_0x58d3c4={'\x42\x72\x4c\x56\x6a':function(_0x51ee78,_0x122585){return _0x51ee78(_0x122585);},'\x47\x65\x4e\x72\x77':function(_0x3e54e0,_0x4aefcb){return _0x3e54e0||_0x4aefcb;},'\x61\x62\x78\x6c\x4d':function(_0x25cdc7,_0xbe8e3d){return _0x25cdc7!==_0xbe8e3d;},'\x78\x77\x76\x62\x63':_0xc9e543(0x216,'\x61\x52\x55\x31'),'\x6e\x78\x59\x41\x6e':_0xc9e543(0x204,'\x4e\x42\x26\x33'),'\x6b\x61\x54\x46\x79':function(_0x1a099b,_0x5d98e3){return _0x1a099b(_0x5d98e3);},'\x6f\x74\x4a\x75\x42':_0xc9e543(0x302,'\x65\x4f\x40\x24'),'\x75\x4a\x4e\x65\x43':_0xc9e543(0x1ff,'\x31\x6e\x6b\x4b')},_0x3a6d59=String(_0x264ddb[_0xc9e543(0x2b5,'\x61\x52\x55\x31')+_0xc9e543(0x2a0,'\x65\x54\x24\x31')+_0xc9e543(0x256,'\x51\x61\x73\x49')+'\x49\x4e\x47\x5f\x50\x55\x42\x4c'+_0xc9e543(0x2f9,'\x61\x52\x55\x31')]||_0x264ddb[_0xc9e543(0x2d8,'\x42\x30\x50\x5e')+_0xc9e543(0x30e,'\x73\x79\x69\x57')+_0xc9e543(0x224,'\x7a\x4c\x7a\x47')+_0xc9e543(0x2e9,'\x31\x6e\x6b\x4b')+_0xc9e543(0x1fd,'\x39\x36\x32\x79')+_0xc9e543(0x2ec,'\x2a\x36\x73\x41')]||'')[_0xc9e543(0x217,'\x65\x4f\x40\x24')](),_0x1f0098=_0x58d3c4[_0xc9e543(0x236,'\x73\x79\x69\x57')](String,_0x4f84ca[_0xc9e543(0x255,'\x57\x37\x6e\x26')+'\x65']||_0x4f84ca[_0xc9e543(0x213,'\x26\x55\x30\x40')+_0xc9e543(0x206,'\x31\x48\x48\x39')+_0xc9e543(0x245,'\x57\x37\x6e\x26')]||'')[_0xc9e543(0x30c,'\x21\x31\x46\x36')]();if(_0x58d3c4[_0xc9e543(0x25e,'\x78\x42\x24\x70')](!_0x3a6d59,!_0x1f0098))return![];try{return _0x58d3c4[_0xc9e543(0x200,'\x26\x55\x30\x40')](_0x58d3c4[_0xc9e543(0x2d2,'\x6f\x45\x67\x47')],_0x58d3c4[_0xc9e543(0x2db,'\x38\x45\x6d\x26')])?![]:_0x10a24c[_0xc9e543(0x1ef,'\x42\x74\x30\x66')](_0x58d3c4[_0xc9e543(0x287,'\x7a\x4c\x7a\x47')],Buffer[_0xc9e543(0x2d6,'\x2a\x46\x40\x53')](_0x58d3c4[_0xc9e543(0x2a9,'\x76\x6c\x5a\x57')](_0x5e1ae7,_0x4f84ca),_0x58d3c4[_0xc9e543(0x254,'\x2a\x46\x40\x53')]),_0x3a6d59,Buffer[_0xc9e543(0x2de,'\x39\x36\x32\x79')](_0x1f0098,_0x58d3c4[_0xc9e543(0x22e,'\x24\x77\x59\x68')]));}catch{return![];}}class _0x32d280{constructor({store:_0xbc9f02,logger:_0x599c9e}={}){const _0x396229=_0x1994cf;this[_0x396229(0x2e3,'\x61\x56\x61\x6f')]=_0xbc9f02,this[_0x396229(0x2b4,'\x66\x5a\x4b\x32')]=_0x599c9e||console;}['\x70\x72\x6f\x63\x65\x73\x73'](_0xb566e9){const _0x1e9338=_0x1994cf,_0x586511={'\x4c\x4b\x74\x53\x46':'\x5b\x74\x72\x61\x63\x65\x2d\x63'+_0x1e9338(0x22f,'\x61\x56\x61\x6f')+_0x1e9338(0x2ee,'\x4b\x6b\x75\x6c')+_0x1e9338(0x233,'\x58\x30\x76\x32')+_0x1e9338(0x214,'\x76\x6c\x5a\x57')+_0x1e9338(0x238,'\x6f\x45\x67\x47')+_0x1e9338(0x235,'\x73\x54\x53\x4f')+_0x1e9338(0x212,'\x47\x67\x75\x34')+_0x1e9338(0x25c,'\x40\x39\x75\x52'),'\x7a\x49\x50\x66\x44':_0x1e9338(0x313,'\x30\x53\x5a\x6c')+_0x1e9338(0x248,'\x65\x4f\x40\x24')+_0x1e9338(0x24c,'\x6e\x37\x4b\x70'),'\x7a\x52\x51\x44\x7a':_0x1e9338(0x23e,'\x7a\x4c\x7a\x47')+_0x1e9338(0x2f6,'\x58\x30\x76\x32')+'\x69\x67','\x4b\x4c\x5a\x72\x75':function(_0x4ce61a,_0x43e065){return _0x4ce61a===_0x43e065;},'\x59\x41\x59\x59\x43':function(_0x4b9cca,_0x41d6db){return _0x4b9cca===_0x41d6db;},'\x46\x42\x79\x62\x70':function(_0x5e8465,_0xfbd4f9){return _0x5e8465===_0xfbd4f9;},'\x77\x75\x59\x53\x65':function(_0x588654,_0x52a8f5){return _0x588654!==_0x52a8f5;},'\x6c\x78\x6d\x43\x49':_0x1e9338(0x203,'\x77\x40\x78\x6f'),'\x78\x77\x4e\x63\x7a':'\x48\x49\x78\x56\x48','\x46\x45\x72\x62\x78':_0x1e9338(0x219,'\x25\x57\x73\x26'),'\x48\x59\x6b\x41\x73':_0x1e9338(0x26e,'\x42\x74\x30\x66')+_0x1e9338(0x268,'\x47\x6f\x26\x37')+_0x1e9338(0x289,'\x31\x6e\x6b\x4b')+_0x1e9338(0x290,'\x73\x53\x42\x29')+_0x1e9338(0x2a7,'\x46\x54\x48\x6c')+_0x1e9338(0x2a1,'\x30\x53\x5a\x6c')+_0x1e9338(0x2bc,'\x30\x43\x40\x29'),'\x76\x46\x7a\x75\x70':function(_0x22cb83,_0x52a6aa){return _0x22cb83(_0x52a6aa);},'\x43\x78\x71\x68\x42':function(_0xe083eb,_0x512f7b){return _0xe083eb&&_0x512f7b;},'\x78\x66\x71\x53\x6f':function(_0x102d48,_0x3d8228){return _0x102d48&&_0x3d8228;},'\x76\x45\x66\x45\x43':_0x1e9338(0x23b,'\x30\x43\x40\x29')+_0x1e9338(0x306,'\x73\x53\x42\x29')+_0x1e9338(0x29b,'\x6f\x5d\x4a\x55')+_0x1e9338(0x2ff,'\x63\x42\x54\x44')+_0x1e9338(0x2b3,'\x78\x42\x24\x70')+_0x1e9338(0x26d,'\x79\x6a\x54\x56')+_0x1e9338(0x2bb,'\x4c\x50\x34\x41')+'\x20\x77\x68\x69\x6c\x65\x20\x61'+_0x1e9338(0x2f3,'\x30\x43\x40\x29')+_0x1e9338(0x1ed,'\x2a\x36\x73\x41')+_0x1e9338(0x29e,'\x42\x30\x50\x5e'),'\x54\x62\x6c\x65\x6d':_0x1e9338(0x2b6,'\x2a\x46\x40\x53')+_0x1e9338(0x2eb,'\x61\x56\x61\x6f')+_0x1e9338(0x25d,'\x6e\x37\x4b\x70'),'\x5a\x43\x79\x46\x56':_0x1e9338(0x2fc,'\x57\x37\x6e\x26'),'\x48\x7a\x50\x6a\x54':'\x66\x61\x6c\x73\x65','\x70\x65\x4c\x6f\x70':function(_0x3497fe,_0x16fc70){return _0x3497fe===_0x16fc70;},'\x58\x78\x57\x7a\x4d':'\x71\x55\x5a\x67\x76','\x46\x5a\x6e\x46\x63':_0x1e9338(0x1f2,'\x78\x42\x24\x70')+_0x1e9338(0x2c7,'\x42\x30\x50\x5e')+_0x1e9338(0x2f7,'\x61\x56\x61\x6f')+_0x1e9338(0x277,'\x42\x30\x50\x5e'),'\x68\x77\x6b\x55\x73':function(_0x58fe2c,_0x28fde0){return _0x58fe2c===_0x28fde0;},'\x5a\x59\x45\x44\x67':_0x1e9338(0x285,'\x47\x6f\x26\x37'),'\x61\x52\x75\x73\x75':_0x1e9338(0x271,'\x77\x38\x28\x6a')+'\x45\x59','\x4d\x71\x4b\x77\x46':_0x1e9338(0x270,'\x73\x54\x53\x4f'),'\x6c\x79\x6e\x77\x55':_0x1e9338(0x25f,'\x2a\x36\x73\x41')+_0x1e9338(0x29a,'\x42\x30\x50\x5e')+_0x1e9338(0x209,'\x2a\x36\x73\x41'),'\x43\x65\x6b\x6f\x4e':_0x1e9338(0x231,'\x75\x43\x24\x36')+_0x1e9338(0x226,'\x54\x6f\x43\x35')+_0x1e9338(0x220,'\x77\x40\x78\x6f')+_0x1e9338(0x2b0,'\x24\x77\x59\x68')+_0x1e9338(0x2c0,'\x51\x61\x73\x49')+_0x1e9338(0x2a5,'\x2a\x36\x73\x41')+'\x75\x73\x65\x20\x70\x69\x6e\x6e'+_0x1e9338(0x211,'\x51\x61\x73\x49')+_0x1e9338(0x1f8,'\x76\x6c\x5a\x57')+_0x1e9338(0x28b,'\x39\x36\x32\x79')+_0x1e9338(0x2e1,'\x36\x4a\x32\x36')+_0x1e9338(0x20f,'\x6f\x45\x67\x47')+_0x1e9338(0x27f,'\x29\x30\x78\x52')+_0x1e9338(0x294,'\x40\x39\x75\x52')+_0x1e9338(0x2ba,'\x61\x56\x61\x6f')+_0x1e9338(0x2ca,'\x7a\x4c\x7a\x47'),'\x61\x72\x46\x7a\x71':_0x1e9338(0x308,'\x5d\x29\x56\x7a')+_0x1e9338(0x228,'\x21\x31\x46\x36')+_0x1e9338(0x2d7,'\x75\x43\x24\x36')+_0x1e9338(0x2c2,'\x7a\x4c\x7a\x47'),'\x47\x74\x71\x6b\x4a':function(_0x1541bc,_0x23b187){return _0x1541bc+_0x23b187;},'\x52\x6c\x6b\x41\x5a':_0x1e9338(0x27d,'\x4b\x6b\x75\x6c')+_0x1e9338(0x29f,'\x78\x42\x24\x70')+_0x1e9338(0x260,'\x21\x31\x46\x36')+_0x1e9338(0x28a,'\x26\x55\x30\x40')+'\x20','\x55\x69\x6e\x6c\x77':'\x65\x6e\x61\x62\x6c\x65\x64','\x51\x72\x4a\x54\x61':_0x1e9338(0x1ec,'\x46\x43\x6c\x43')},_0x169ece=_0xb566e9&&_0xb566e9[_0x1e9338(0x21a,'\x47\x6f\x26\x37')]?_0xb566e9[_0x1e9338(0x232,'\x61\x52\x55\x31')]:_0xb566e9,_0x18f34b=_0x169ece&&(_0x169ece[_0x1e9338(0x20a,'\x6e\x37\x4b\x70')]??_0x169ece[_0x1e9338(0x2cb,'\x54\x6f\x43\x35')+'\x6c\x6c\x65\x63\x74\x69\x6f\x6e'+_0x1e9338(0x298,'\x42\x74\x30\x66')]??_0x169ece[_0x1e9338(0x2c5,'\x46\x43\x6c\x43')+_0x1e9338(0x2c4,'\x6f\x45\x67\x47')+'\x65\x63\x74\x69\x6f\x6e\x5f\x65'+'\x6e\x61\x62\x6c\x65\x64']);if(_0x586511[_0x1e9338(0x279,'\x57\x37\x6e\x26')](typeof _0x18f34b,_0x586511[_0x1e9338(0x272,'\x65\x54\x24\x31')])){if(_0x586511[_0x1e9338(0x275,'\x5a\x5d\x6e\x40')](_0x586511[_0x1e9338(0x2aa,'\x29\x30\x78\x52')],_0x586511['\x46\x45\x72\x62\x78'])){this[_0x1e9338(0x207,'\x6f\x45\x67\x47')][_0x1e9338(0x225,'\x30\x43\x40\x29')]?.(_0x586511[_0x1e9338(0x23f,'\x58\x30\x76\x32')]);const _0x467ce4={};return _0x467ce4[_0x1e9338(0x2fd,'\x61\x52\x55\x31')]=!![],_0x467ce4[_0x1e9338(0x20d,'\x4c\x50\x34\x41')]=![],_0x467ce4;}else this[_0x1e9338(0x1fc,'\x36\x4a\x32\x36')][_0x1e9338(0x215,'\x79\x6a\x54\x56')]?.(_0x586511[_0x1e9338(0x241,'\x39\x36\x32\x79')]);}let _0x258524=_0x169ece['\x70\x72\x6f\x66\x69\x6c\x65\x5f'+'\x61\x6e\x61\x6c\x79\x73\x69\x73'+_0x1e9338(0x296,'\x73\x79\x69\x57')]??_0x169ece[_0x1e9338(0x1f2,'\x78\x42\x24\x70')+_0x1e9338(0x2c7,'\x42\x30\x50\x5e')+_0x1e9338(0x2d3,'\x6d\x54\x31\x28')+_0x1e9338(0x2e0,'\x65\x4f\x40\x24')];const _0x2f153c=_0x586511[_0x1e9338(0x2f4,'\x75\x43\x24\x36')](_0x56fa21,_0x169ece),_0x815ff5=_0x18f34b===!![],_0x2ac324=_0x586511[_0x1e9338(0x297,'\x31\x48\x48\x39')](_0x258524,!![]),_0x71283b=typeof _0x169ece[_0x1e9338(0x20e,'\x42\x30\x50\x5e')+_0x1e9338(0x292,'\x46\x54\x48\x6c')]==='\x73\x74\x72\x69\x6e\x67'&&_0x169ece[_0x1e9338(0x30a,'\x6e\x37\x4b\x70')+_0x1e9338(0x229,'\x2a\x36\x73\x41')][_0x1e9338(0x251,'\x61\x52\x55\x31')]();if(_0x586511[_0x1e9338(0x269,'\x7a\x4c\x7a\x47')](!_0x2f153c,_0x815ff5)){this[_0x1e9338(0x257,'\x75\x43\x24\x36')][_0x1e9338(0x1e9,'\x75\x43\x24\x36')]?.(_0x1e9338(0x2df,'\x73\x53\x42\x29')+_0x1e9338(0x281,'\x79\x6a\x54\x56')+_0x1e9338(0x2ab,'\x54\x6f\x43\x35')+'\x20\x75\x6e\x73\x69\x67\x6e\x65'+_0x1e9338(0x26b,'\x79\x6a\x54\x56')+_0x1e9338(0x27e,'\x31\x48\x48\x39')+_0x1e9338(0x2bd,'\x21\x31\x46\x36')+_0x1e9338(0x264,'\x46\x43\x6c\x43')+_0x1e9338(0x2fe,'\x57\x37\x6e\x26')+_0x1e9338(0x2a4,'\x5a\x5d\x6e\x40')+_0x1e9338(0x2cd,'\x4e\x42\x26\x33')+_0x1e9338(0x276,'\x46\x43\x6c\x43'));const _0x48825d={};return _0x48825d[_0x1e9338(0x2a2,'\x21\x31\x46\x36')]=!![],_0x48825d[_0x1e9338(0x2e8,'\x51\x61\x73\x49')]=![],_0x48825d;}_0x586511[_0x1e9338(0x23a,'\x4b\x6b\x75\x6c')](!_0x2f153c,_0x2ac324)&&(this[_0x1e9338(0x291,'\x7a\x4c\x7a\x47')]['\x77\x61\x72\x6e']?.(_0x586511[_0x1e9338(0x23d,'\x6f\x5d\x4a\x55')]),_0x258524=![]);this['\x73\x74\x6f\x72\x65'][_0x1e9338(0x2e2,'\x7a\x4c\x7a\x47')](_0x586511[_0x1e9338(0x24d,'\x57\x37\x6e\x26')],_0x18f34b?_0x586511[_0x1e9338(0x218,'\x77\x38\x28\x6a')]:_0x586511[_0x1e9338(0x2be,'\x6e\x37\x4b\x70')]);if(_0x586511[_0x1e9338(0x286,'\x73\x54\x53\x4f')](typeof _0x258524,_0x586511[_0x1e9338(0x262,'\x26\x55\x30\x40')])){if(_0x586511[_0x1e9338(0x1f6,'\x75\x43\x24\x36')](_0x586511[_0x1e9338(0x1f7,'\x73\x53\x42\x29')],_0x586511[_0x1e9338(0x1f7,'\x73\x53\x42\x29')])){const _0x45be60={};_0x45be60[_0x1e9338(0x21d,'\x31\x6e\x6b\x4b')]=_0x586511[_0x1e9338(0x2cf,'\x7a\x4c\x7a\x47')],_0x45be60['\x6c\x69\x6d\x69\x74']=0x32;const _0xfbe24={};_0xfbe24[_0x1e9338(0x2af,'\x4e\x42\x26\x33')]=_0x586511[_0x1e9338(0x309,'\x26\x55\x30\x40')],_0xfbe24[_0x1e9338(0x2d1,'\x57\x37\x6e\x26')]=0x32;const _0x5e3121=[...this[_0x1e9338(0x2e3,'\x61\x56\x61\x6f')][_0x1e9338(0x242,'\x29\x30\x78\x52')](_0x45be60),...this[_0x1e9338(0x1ee,'\x78\x42\x24\x70')][_0x1e9338(0x2a8,'\x57\x37\x6e\x26')](_0xfbe24)];let _0x57b89c=-0x117+-0xd5d+-0x4a*-0x32;for(const _0x219a5b of _0x5e3121){const _0x2dfd02=this[_0x1e9338(0x24f,'\x54\x6f\x43\x35')](_0x219a5b),_0x1a44cf=_0x2dfd02===!![]||_0x2dfd02&&_0x2dfd02[_0x1e9338(0x300,'\x46\x43\x6c\x43')]===!![],_0x18a901=_0x586511[_0x1e9338(0x234,'\x6d\x54\x31\x28')](_0x2dfd02,!![])||_0x2dfd02&&_0x2dfd02[_0x1e9338(0x27b,'\x2a\x36\x73\x41')]===!![];_0x1a44cf&&this[_0x1e9338(0x2f5,'\x6d\x54\x31\x28')][_0x1e9338(0x310,'\x2a\x36\x73\x41')](_0x219a5b['\x69\x64']),_0x18a901&&_0x57b89c++;}return _0x57b89c;}else this[_0x1e9338(0x307,'\x4b\x6b\x75\x6c')][_0x1e9338(0x210,'\x29\x30\x78\x52')](_0x586511[_0x1e9338(0x2d9,'\x6e\x37\x4b\x70')],_0x258524?_0x1e9338(0x1f0,'\x6e\x37\x4b\x70'):_0x586511[_0x1e9338(0x2cc,'\x40\x39\x75\x52')]);}const _0x288fe7=_0x586511[_0x1e9338(0x22d,'\x42\x74\x30\x66')](typeof _0x169ece[_0x1e9338(0x2ed,'\x5a\x5d\x6e\x40')+_0x1e9338(0x305,'\x63\x42\x54\x44')+_0x1e9338(0x299,'\x51\x61\x73\x49')],_0x586511[_0x1e9338(0x2dc,'\x47\x6f\x26\x37')])&&_0x169ece[_0x1e9338(0x282,'\x29\x30\x78\x52')+_0x1e9338(0x22c,'\x65\x54\x24\x31')+_0x1e9338(0x30f,'\x6f\x45\x67\x47')][_0x1e9338(0x1f9,'\x47\x67\x75\x34')]();if(_0x586511['\x43\x78\x71\x68\x42'](_0x2f153c,_0x288fe7)&&_0x169ece[_0x1e9338(0x21c,'\x57\x37\x6e\x26')+_0x1e9338(0x1f3,'\x30\x53\x5a\x6c')+'\x5f\x6b\x65\x79']['\x69\x6e\x63\x6c\x75\x64\x65\x73'](_0x586511[_0x1e9338(0x30d,'\x24\x77\x59\x68')])){if(_0x1e9338(0x24e,'\x75\x43\x24\x36')!==_0x586511[_0x1e9338(0x28f,'\x2a\x36\x73\x41')])this[_0x1e9338(0x263,'\x24\x77\x59\x68')][_0x1e9338(0x2b1,'\x79\x6a\x54\x56')](_0x586511[_0x1e9338(0x252,'\x57\x37\x6e\x26')],_0x169ece['\x74\x72\x61\x63\x65\x5f\x68\x75'+_0x1e9338(0x27a,'\x73\x79\x69\x57')+'\x5f\x6b\x65\x79'][_0x1e9338(0x2f0,'\x73\x53\x42\x29')]());else{const _0x779367=this[_0x1e9338(0x1fe,'\x75\x43\x24\x36')](_0x8204f9),_0x2a8ff8=_0x586511[_0x1e9338(0x1fa,'\x39\x36\x32\x79')](_0x779367,!![])||_0x779367&&_0x779367[_0x1e9338(0x284,'\x31\x6e\x6b\x4b')]===!![],_0x4bfcc0=_0x586511['\x46\x42\x79\x62\x70'](_0x779367,!![])||_0x779367&&_0x779367[_0x1e9338(0x2a3,'\x42\x74\x30\x66')]===!![];_0x2a8ff8&&this[_0x1e9338(0x249,'\x6f\x5d\x4a\x55')][_0x1e9338(0x26a,'\x66\x5a\x4b\x32')](_0x256718['\x69\x64']),_0x4bfcc0&&_0x36e8f7++;}}else!_0x2f153c&&_0x288fe7&&this[_0x1e9338(0x288,'\x54\x6f\x43\x35')]['\x77\x61\x72\x6e']?.(_0x586511[_0x1e9338(0x22a,'\x6e\x37\x4b\x70')]);_0x71283b&&this[_0x1e9338(0x265,'\x39\x36\x32\x79')][_0x1e9338(0x2c8,'\x61\x56\x61\x6f')]?.(_0x586511[_0x1e9338(0x208,'\x76\x6c\x5a\x57')]);this[_0x1e9338(0x259,'\x77\x40\x78\x6f')][_0x1e9338(0x223,'\x30\x43\x40\x29')](_0x586511[_0x1e9338(0x239,'\x65\x54\x24\x31')],new Date()[_0x1e9338(0x2e4,'\x51\x61\x73\x49')+_0x1e9338(0x312,'\x4c\x50\x34\x41')]()),this[_0x1e9338(0x280,'\x61\x52\x55\x31')][_0x1e9338(0x27c,'\x78\x42\x24\x70')]?.(_0x586511[_0x1e9338(0x20c,'\x78\x42\x24\x70')](_0x586511['\x52\x6c\x6b\x41\x5a'],_0x18f34b?_0x586511[_0x1e9338(0x2da,'\x75\x43\x24\x36')]:_0x586511[_0x1e9338(0x1f5,'\x73\x53\x42\x29')]));const _0x68a4a1={};return _0x68a4a1[_0x1e9338(0x21f,'\x30\x53\x5a\x6c')]=!![],_0x68a4a1[_0x1e9338(0x2fa,'\x4e\x42\x26\x33')]=!![],_0x68a4a1;}[_0x1994cf(0x2b9,'\x46\x54\x48\x6c')+'\x70\x70\x6c\x79'](){const _0xa0cc9=_0x1994cf,_0x11c116={};_0x11c116[_0xa0cc9(0x23c,'\x26\x55\x30\x40')]=_0xa0cc9(0x28e,'\x65\x4f\x40\x24')+'\x6c\x6c\x65\x63\x74\x69\x6f\x6e'+_0xa0cc9(0x2c6,'\x77\x38\x28\x6a');const _0xd440e0=_0x11c116,_0xf8884b={};_0xf8884b[_0xa0cc9(0x2c9,'\x73\x79\x69\x57')]=_0xd440e0[_0xa0cc9(0x1e8,'\x25\x57\x73\x26')],_0xf8884b[_0xa0cc9(0x2e5,'\x7a\x4c\x7a\x47')]=0x32;const _0x44aefe={};_0x44aefe[_0xa0cc9(0x304,'\x29\x30\x78\x52')]=_0xa0cc9(0x2f1,'\x42\x74\x30\x66')+_0xa0cc9(0x26f,'\x26\x55\x30\x40')+'\x69\x67',_0x44aefe[_0xa0cc9(0x221,'\x24\x77\x59\x68')]=0x32;const _0x2f0c05=[...this[_0xa0cc9(0x227,'\x46\x43\x6c\x43')][_0xa0cc9(0x2ce,'\x21\x31\x46\x36')](_0xf8884b),...this[_0xa0cc9(0x307,'\x4b\x6b\x75\x6c')][_0xa0cc9(0x29c,'\x31\x6e\x6b\x4b')](_0x44aefe)];let _0x4ca626=0x12b*-0xd+0x1501+-0x5d2;for(const _0x3100b1 of _0x2f0c05){const _0x3f7d9e=this[_0xa0cc9(0x2ea,'\x58\x30\x76\x32')](_0x3100b1),_0x9501ad=_0x3f7d9e===!![]||_0x3f7d9e&&_0x3f7d9e[_0xa0cc9(0x1f4,'\x42\x74\x30\x66')]===!![],_0x33a30a=_0x3f7d9e===!![]||_0x3f7d9e&&_0x3f7d9e[_0xa0cc9(0x201,'\x63\x42\x54\x44')]===!![];_0x9501ad&&this[_0xa0cc9(0x263,'\x24\x77\x59\x68')][_0xa0cc9(0x266,'\x6e\x37\x4b\x70')](_0x3100b1['\x69\x64']),_0x33a30a&&_0x4ca626++;}return _0x4ca626;}}const _0x3e1e32={};_0x3e1e32[_0x1994cf(0x2c1,'\x77\x40\x78\x6f')+_0x1994cf(0x2bf,'\x73\x79\x69\x57')]=_0x32d280,_0x3e1e32[_0x1994cf(0x244,'\x4c\x50\x34\x41')+_0x1994cf(0x2ef,'\x51\x61\x73\x49')+_0x1994cf(0x21b,'\x79\x6a\x54\x56')+_0x1994cf(0x222,'\x75\x43\x24\x36')]=_0x5e1ae7,_0x3e1e32[_0x1994cf(0x22b,'\x57\x37\x6e\x26')+_0x1994cf(0x278,'\x78\x42\x24\x70')+'\x67\x53\x69\x67\x6e\x61\x74\x75'+'\x72\x65']=_0x56fa21,module[_0x1994cf(0x1f1,'\x61\x56\x61\x6f')]=_0x3e1e32;
|
package/src/proxy/index.js
CHANGED
|
@@ -284,6 +284,11 @@ class EvoMapProxy {
|
|
|
284
284
|
assetSearch: (body) => this._assetSearch(body),
|
|
285
285
|
assetValidate: (body) => this._proxyHttp('/a2a/validate', this._wrapA2a('validate', body)),
|
|
286
286
|
assetPublish: (body) => this._assetPublish(body),
|
|
287
|
+
// Reuse-attribution report -> hub /a2a/memory/record. FLAT body (not an
|
|
288
|
+
// envelope): the record endpoint reads sender_id/signals/used_asset_ids at
|
|
289
|
+
// the top level, so this goes through _reportReuse (like the lenient REST
|
|
290
|
+
// search path), not _wrapA2a.
|
|
291
|
+
reportReuse: (body) => this._reportReuse(body),
|
|
287
292
|
// ATP passthrough (#460 Bug 2): merchant/consumer flows that used to call
|
|
288
293
|
// hub directly via src/atp/hubClient.js must route through the proxy when
|
|
289
294
|
// EVOMAP_PROXY=1 so proxy sees the transaction (for audit + offline queue).
|
|
@@ -613,6 +618,51 @@ class EvoMapProxy {
|
|
|
613
618
|
// dedup, and Retry-After-aware cooldown. Preserves the original return shape
|
|
614
619
|
// and the 429 error contract so existing callers (and their "proceed on local
|
|
615
620
|
// evidence" fallback) are unaffected.
|
|
621
|
+
// Report which fetched assets the agent reused, so the hub credits their
|
|
622
|
+
// authors (reuse-reward attribution). Unlike fetch/validate (strict GEP-A2A
|
|
623
|
+
// envelopes), the hub's /a2a/memory/record reads a FLAT top-level body
|
|
624
|
+
// ({sender_id, signals, status, used_asset_ids}); envelope-wrapping would bury
|
|
625
|
+
// those under .payload and the record would 400. The proxy reports as its OWN
|
|
626
|
+
// node -- the same node that fetched the asset -- so the hub's buildAttribution
|
|
627
|
+
// finds the matching AssetFetcher row (cross-owner + GDI verified hub-side).
|
|
628
|
+
// Declaration model, never server-inferred. Best-effort: a report failure
|
|
629
|
+
// (insufficient credits, hub error) must never break the agent's session.
|
|
630
|
+
// Kill-switch: EVOLVER_PROXY_REPORT_REUSE=0.
|
|
631
|
+
async _reportReuse(body) {
|
|
632
|
+
if (process.env.EVOLVER_PROXY_REPORT_REUSE === '0') {
|
|
633
|
+
return { ok: false, reason: 'report_reuse_disabled' };
|
|
634
|
+
}
|
|
635
|
+
const nodeId = this.store.getState('node_id');
|
|
636
|
+
if (!nodeId) return { ok: false, reason: 'no_node_id' };
|
|
637
|
+
|
|
638
|
+
const b = body || {};
|
|
639
|
+
const used = Array.isArray(b.used_asset_ids)
|
|
640
|
+
? b.used_asset_ids.filter((x) => typeof x === 'string' && x.length > 0 && x.length <= 200).slice(0, 50)
|
|
641
|
+
: [];
|
|
642
|
+
if (used.length === 0) return { ok: false, reason: 'no_used_asset_ids' };
|
|
643
|
+
|
|
644
|
+
let signals = Array.isArray(b.signals)
|
|
645
|
+
? b.signals.filter((s) => typeof s === 'string' && s.length > 0).slice(0, 32)
|
|
646
|
+
: [];
|
|
647
|
+
if (signals.length === 0) signals = ['reused_via_mcp'];
|
|
648
|
+
|
|
649
|
+
const flat = {
|
|
650
|
+
sender_id: nodeId,
|
|
651
|
+
signals,
|
|
652
|
+
status: b.status === 'failed' ? 'failed' : 'success',
|
|
653
|
+
used_asset_ids: used,
|
|
654
|
+
...(typeof b.score === 'number' ? { score: b.score } : {}),
|
|
655
|
+
};
|
|
656
|
+
|
|
657
|
+
try {
|
|
658
|
+
const res = await this._proxyHttp('/a2a/memory/record', flat);
|
|
659
|
+
return { ok: true, recorded: res && res.recorded, used_asset_ids: used };
|
|
660
|
+
} catch (err) {
|
|
661
|
+
this.logger?.warn?.(`[proxy] report-reuse failed: ${err.message}`);
|
|
662
|
+
return { ok: false, reason: err.message, statusCode: err.statusCode };
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
616
666
|
async _assetSearch(body) {
|
|
617
667
|
const plan = this._planAssetSearchWithNode(body);
|
|
618
668
|
const key = this._assetSearchCacheKey(plan);
|
package/src/proxy/inject.js
CHANGED
|
@@ -1,52 +1 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { getProxyToken, getProxyUrl } = require('./server/settings');
|
|
4
|
-
|
|
5
|
-
function isDisabled(env = process.env) {
|
|
6
|
-
const raw = String(env.EVOMAP_PROXY_AUTO_INJECT || '').trim().toLowerCase();
|
|
7
|
-
return raw === '0' || raw === 'false' || raw === 'off' || raw === 'none' || raw === 'no';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function injectProxyEnv(info = {}, env = process.env) {
|
|
11
|
-
if (isDisabled(env)) {
|
|
12
|
-
return { injected: false, reason: 'disabled' };
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const useSettingsFallback = env === process.env && info.useSettings !== false;
|
|
16
|
-
const url = String(info.url || (useSettingsFallback ? getProxyUrl() : '') || '').replace(/\/+$/, '');
|
|
17
|
-
const token = String(info.token || (useSettingsFallback ? getProxyToken() : '') || '');
|
|
18
|
-
if (!url || !token) {
|
|
19
|
-
return { injected: false, reason: 'missing_proxy_settings' };
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const currentBase = String(env.ANTHROPIC_BASE_URL || '').trim().replace(/\/+$/, '');
|
|
23
|
-
if (currentBase && currentBase !== url && !env.EVOMAP_ANTHROPIC_BASE_URL) {
|
|
24
|
-
env.EVOMAP_ANTHROPIC_BASE_URL = currentBase;
|
|
25
|
-
}
|
|
26
|
-
const currentAuthToken = String(env.ANTHROPIC_AUTH_TOKEN || '').trim();
|
|
27
|
-
if (currentAuthToken && currentAuthToken !== token && !env.EVOMAP_ANTHROPIC_AUTH_TOKEN) {
|
|
28
|
-
env.EVOMAP_ANTHROPIC_AUTH_TOKEN = currentAuthToken;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
env.ANTHROPIC_BASE_URL = url;
|
|
32
|
-
env.ANTHROPIC_AUTH_TOKEN = token;
|
|
33
|
-
env.CUSTOM_API_KEY = token;
|
|
34
|
-
env.EVOMAP_PROXY_URL = url;
|
|
35
|
-
env.EVOMAP_PROXY_AUTO_INJECTED = '1';
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
injected: true,
|
|
39
|
-
url,
|
|
40
|
-
vars: [
|
|
41
|
-
'ANTHROPIC_BASE_URL',
|
|
42
|
-
'ANTHROPIC_AUTH_TOKEN',
|
|
43
|
-
'CUSTOM_API_KEY',
|
|
44
|
-
'EVOMAP_PROXY_URL',
|
|
45
|
-
],
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
module.exports = {
|
|
50
|
-
injectProxyEnv,
|
|
51
|
-
isDisabled,
|
|
52
|
-
};
|
|
1
|
+
const _0x1a55b6=_0x41f8;(function(_0x489a57,_0x5306df){const _0x423563=_0x41f8,_0x4a4f3d=_0x489a57();while(!![]){try{const _0x468497=-parseInt(_0x423563(0x145,'\x58\x6f\x48\x5e'))/(-0x6*0x16d+0x2411+-0x3ee*0x7)+parseInt(_0x423563(0x17e,'\x64\x77\x28\x38'))/(-0xe6a+-0x1607+0x2473)*(parseInt(_0x423563(0x14f,'\x48\x40\x71\x33'))/(-0x16b+-0x1*-0x22c+0x1*-0xbe))+-parseInt(_0x423563(0x150,'\x49\x6f\x5d\x61'))/(-0x2cf*-0x1+0x9e6+-0xcb1)+-parseInt(_0x423563(0x193,'\x4f\x29\x67\x57'))/(-0x21*-0x7a+0x90d*-0x4+0x147f)*(-parseInt(_0x423563(0x190,'\x63\x59\x75\x4f'))/(0x1c14+0x1*0xec3+-0x71*0x61))+-parseInt(_0x423563(0x146,'\x49\x6f\x5d\x61'))/(-0x4c*0x46+0x93*0x31+-0x754)+-parseInt(_0x423563(0x18f,'\x66\x6d\x4c\x35'))/(0x61e+0xb40+-0x1156)+-parseInt(_0x423563(0x152,'\x45\x69\x33\x6b'))/(0x27b+0x114a+-0x1*0x13bc)*(-parseInt(_0x423563(0x165,'\x4d\x24\x40\x33'))/(0xb1*-0x33+0x1d*0x57+-0x2*-0xcb9));if(_0x468497===_0x5306df)break;else _0x4a4f3d['push'](_0x4a4f3d['shift']());}catch(_0x224de1){_0x4a4f3d['push'](_0x4a4f3d['shift']());}}}(_0x2b8d,-0x29835+-0x47*0x21+0x6d57c));const _0x424c51=(function(){const _0x145dd4=_0x41f8,_0x4f889f={};_0x4f889f[_0x145dd4(0x14c,'\x4b\x25\x26\x75')]=function(_0x49b257,_0x5899c5){return _0x49b257!==_0x5899c5;},_0x4f889f['\x54\x6f\x62\x57\x71']=_0x145dd4(0x17d,'\x35\x47\x28\x46'),_0x4f889f[_0x145dd4(0x183,'\x66\x36\x4f\x61')]='\x6d\x69\x73\x73\x69\x6e\x67\x5f'+_0x145dd4(0x188,'\x48\x40\x71\x33')+_0x145dd4(0x157,'\x49\x6f\x5d\x61');const _0x2478a2=_0x4f889f;let _0x23a6aa=!![];return function(_0x506545,_0x3073d2){const _0x3f21f5=_0x145dd4,_0x424373={};_0x424373[_0x3f21f5(0x180,'\x4b\x38\x47\x56')]=_0x2478a2[_0x3f21f5(0x199,'\x4e\x51\x4e\x32')];const _0x346cdc=_0x424373,_0x574a14=_0x23a6aa?function(){const _0x4e4d28=_0x3f21f5;if(_0x3073d2){if(_0x2478a2[_0x4e4d28(0x18d,'\x25\x24\x46\x68')](_0x4e4d28(0x170,'\x54\x34\x37\x5d'),_0x2478a2[_0x4e4d28(0x17b,'\x66\x36\x4f\x61')])){const _0x4efdf8=_0x3073d2['\x61\x70\x70\x6c\x79'](_0x506545,arguments);return _0x3073d2=null,_0x4efdf8;}else{const _0x19bc3c={};return _0x19bc3c[_0x4e4d28(0x142,'\x58\x6f\x48\x5e')]=![],_0x19bc3c[_0x4e4d28(0x18e,'\x78\x38\x39\x67')]=_0x346cdc[_0x4e4d28(0x178,'\x41\x76\x54\x31')],_0x19bc3c;}}}:function(){};return _0x23a6aa=![],_0x574a14;};}()),_0x1c7691=_0x424c51(this,function(){const _0x37ab83=_0x41f8,_0x2d5998={};_0x2d5998[_0x37ab83(0x1a2,'\x4d\x69\x56\x56')]=_0x37ab83(0x15c,'\x79\x61\x39\x49')+_0x37ab83(0x19e,'\x4e\x51\x4e\x32');const _0x48c736=_0x2d5998;return _0x1c7691[_0x37ab83(0x148,'\x25\x39\x2a\x53')]()[_0x37ab83(0x13e,'\x6b\x5b\x49\x6e')](_0x37ab83(0x159,'\x58\x6f\x48\x5e')+'\x2b\x29\x2b\x24')['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x37ab83(0x198,'\x57\x6e\x6d\x54')+_0x37ab83(0x168,'\x53\x68\x77\x59')](_0x1c7691)['\x73\x65\x61\x72\x63\x68'](_0x48c736['\x46\x70\x62\x53\x43']);});_0x1c7691();'use strict';const {getProxyToken:_0x1a0107,getProxyUrl:_0x45cfee}=require(_0x1a55b6(0x179,'\x51\x76\x62\x4f')+_0x1a55b6(0x174,'\x5a\x45\x4e\x71')+'\x73');function _0x329288(_0xd909d0=process.env){const _0x4df19a=_0x1a55b6,_0x275835={'\x64\x52\x77\x7a\x54':function(_0x5a2321,_0x2b7090){return _0x5a2321(_0x2b7090);},'\x4c\x59\x68\x6d\x47':function(_0xa13615,_0x4bb105){return _0xa13615===_0x4bb105;},'\x52\x71\x7a\x6c\x4f':_0x4df19a(0x1a9,'\x69\x6d\x6c\x70'),'\x48\x55\x49\x79\x4e':'\x6f\x66\x66','\x6e\x5a\x48\x50\x4d':function(_0x46cb43,_0x342f27){return _0x46cb43===_0x342f27;},'\x71\x6c\x55\x78\x45':_0x4df19a(0x1b5,'\x53\x21\x4e\x29')},_0x2e2af0=_0x275835[_0x4df19a(0x15d,'\x45\x69\x33\x6b')](String,_0xd909d0[_0x4df19a(0x1b1,'\x78\x38\x39\x67')+_0x4df19a(0x1a0,'\x32\x41\x45\x49')+'\x4f\x5f\x49\x4e\x4a\x45\x43\x54']||'')[_0x4df19a(0x194,'\x5a\x50\x40\x4f')]()[_0x4df19a(0x195,'\x66\x75\x71\x61')+'\x61\x73\x65']();return _0x2e2af0==='\x30'||_0x275835['\x4c\x59\x68\x6d\x47'](_0x2e2af0,_0x275835[_0x4df19a(0x13d,'\x53\x76\x30\x38')])||_0x275835['\x4c\x59\x68\x6d\x47'](_0x2e2af0,_0x275835[_0x4df19a(0x176,'\x66\x75\x71\x61')])||_0x275835[_0x4df19a(0x1a1,'\x25\x24\x46\x68')](_0x2e2af0,_0x275835[_0x4df19a(0x196,'\x58\x6f\x48\x5e')])||_0x275835[_0x4df19a(0x14a,'\x66\x36\x4f\x61')](_0x2e2af0,'\x6e\x6f');}function _0x41f8(_0x448499,_0x9aa68){_0x448499=_0x448499-(0x68b*-0x4+-0x1*0x24cb+0x1c*0x24b);const _0xcfb7b5=_0x2b8d();let _0xf642cc=_0xcfb7b5[_0x448499];if(_0x41f8['\x50\x59\x58\x45\x65\x5a']===undefined){var _0x34888f=function(_0xe7c855){const _0x2fd14b='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x48f180='',_0x2e2022='',_0x1bae1d=_0x48f180+_0x34888f,_0x15207d=(''+function(){return-0x15cb+-0x1975+0x18*0x1f8;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(-0xa4b+-0x6b0+0x10fc);for(let _0x587f3b=0xaf3*-0x2+0x2395+-0xdaf,_0x5b080c,_0x3fbe3a,_0x422504=0x1*0x27b+-0x249d*-0x1+-0x48*0x8b;_0x3fbe3a=_0xe7c855['\x63\x68\x61\x72\x41\x74'](_0x422504++);~_0x3fbe3a&&(_0x5b080c=_0x587f3b%(0x27b*-0x1+0x1*0x27b+0x1*0x4)?_0x5b080c*(0x2*-0xfaf+-0xecb+-0x6d*-0x6d)+_0x3fbe3a:_0x3fbe3a,_0x587f3b++%(-0x191*-0x7+-0x938*-0x2+-0x1d63))?_0x48f180+=_0x15207d||_0x1bae1d['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x422504+(0x9*0xc5+0x15ff+-0x1ce2))-(0xc9*0x1f+0x87b*-0x2+-0x757)!==0x3*-0x711+0x68c*-0x4+0x2f63?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x1f7e+-0x20cc+0x24d&_0x5b080c>>(-(0x1*-0x16f1+0x1*-0x47+0x173a)*_0x587f3b&0x2b*-0xd6+0xb71+0xa1*0x27)):_0x587f3b:-0x137b+-0x1312+0x8b*0x47){_0x3fbe3a=_0x2fd14b['\x69\x6e\x64\x65\x78\x4f\x66'](_0x3fbe3a);}for(let _0x36052b=-0x2*-0x1239+0x1ae4+-0x79*0x86,_0x344beb=_0x48f180['\x6c\x65\x6e\x67\x74\x68'];_0x36052b<_0x344beb;_0x36052b++){_0x2e2022+='\x25'+('\x30\x30'+_0x48f180['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x36052b)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](-0x2471+0x116*0x1f+0x2d7))['\x73\x6c\x69\x63\x65'](-(-0xf08*0x1+-0x1593+-0x7*-0x53b));}return decodeURIComponent(_0x2e2022);};const _0x2ecf12=function(_0x4ca0e3,_0x465e52){let _0x15d38d=[],_0x32cd9f=0xcb*-0x1d+-0x5*-0x27b+-0x2*-0x54c,_0x20fb78,_0x12bf84='';_0x4ca0e3=_0x34888f(_0x4ca0e3);let _0x2f79d2;for(_0x2f79d2=-0xfe*0x25+0x3*-0x97b+0x4127;_0x2f79d2<0x2f5*0x8+-0x1ffa*0x1+-0x2*-0x4a9;_0x2f79d2++){_0x15d38d[_0x2f79d2]=_0x2f79d2;}for(_0x2f79d2=0x77f*-0x5+0x1c87+-0x23d*-0x4;_0x2f79d2<0x127*-0x1f+0x26aa+-0x1f1;_0x2f79d2++){_0x32cd9f=(_0x32cd9f+_0x15d38d[_0x2f79d2]+_0x465e52['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2f79d2%_0x465e52['\x6c\x65\x6e\x67\x74\x68']))%(-0x3*-0xa0f+-0x2213+0x1*0x4e6),_0x20fb78=_0x15d38d[_0x2f79d2],_0x15d38d[_0x2f79d2]=_0x15d38d[_0x32cd9f],_0x15d38d[_0x32cd9f]=_0x20fb78;}_0x2f79d2=-0x2660+0x2*-0x709+-0x62*-0x89,_0x32cd9f=0x1cac*-0x1+-0x1e99+0x3b45;for(let _0x3cd133=0x9e7+-0x6*0x3a6+0xbfd;_0x3cd133<_0x4ca0e3['\x6c\x65\x6e\x67\x74\x68'];_0x3cd133++){_0x2f79d2=(_0x2f79d2+(-0xb2d*0x2+-0x4*-0x573+0x8f))%(-0x1*-0xbd9+-0x1*-0x1e3b+-0x2c*0xef),_0x32cd9f=(_0x32cd9f+_0x15d38d[_0x2f79d2])%(0x14*0x1eb+0x2*0x556+-0x3008),_0x20fb78=_0x15d38d[_0x2f79d2],_0x15d38d[_0x2f79d2]=_0x15d38d[_0x32cd9f],_0x15d38d[_0x32cd9f]=_0x20fb78,_0x12bf84+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x4ca0e3['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3cd133)^_0x15d38d[(_0x15d38d[_0x2f79d2]+_0x15d38d[_0x32cd9f])%(-0x15c3+0x2f*0xab+-0x8a2)]);}return _0x12bf84;};_0x41f8['\x7a\x6a\x74\x63\x4b\x4f']=_0x2ecf12,_0x41f8['\x6e\x7a\x46\x48\x58\x51']={},_0x41f8['\x50\x59\x58\x45\x65\x5a']=!![];}const _0x26977a=_0xcfb7b5[0x18c+-0x1f57*-0x1+-0x20e3*0x1],_0x5656ed=_0x448499+_0x26977a,_0x4e2237=_0x41f8['\x6e\x7a\x46\x48\x58\x51'][_0x5656ed];if(!_0x4e2237){if(_0x41f8['\x45\x5a\x6e\x61\x6a\x67']===undefined){const _0x4a254b=function(_0x3773bc){this['\x42\x7a\x6e\x50\x78\x73']=_0x3773bc,this['\x5a\x73\x72\x53\x56\x51']=[0x3*0xabd+0x12df*-0x1+-0x5*0x2ab,0x10*0xa+-0x1856+0x17b6,-0xbd*0x3+-0x15ed+0xa*0x26a],this['\x74\x7a\x55\x68\x42\x61']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x67\x66\x6f\x66\x56\x79']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x79\x4d\x56\x78\x5a\x63']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x4a254b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x78\x4d\x61\x6a\x46\x56']=function(){const _0x25f940=new RegExp(this['\x67\x66\x6f\x66\x56\x79']+this['\x79\x4d\x56\x78\x5a\x63']),_0x5265c4=_0x25f940['\x74\x65\x73\x74'](this['\x74\x7a\x55\x68\x42\x61']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x5a\x73\x72\x53\x56\x51'][-0x1*0xfd1+-0x1c51+0x2c23*0x1]:--this['\x5a\x73\x72\x53\x56\x51'][0xcd4+0xfbe*0x2+0xb14*-0x4];return this['\x4f\x69\x47\x71\x62\x69'](_0x5265c4);},_0x4a254b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x4f\x69\x47\x71\x62\x69']=function(_0x2e55e7){if(!Boolean(~_0x2e55e7))return _0x2e55e7;return this['\x6c\x4e\x48\x7a\x69\x65'](this['\x42\x7a\x6e\x50\x78\x73']);},_0x4a254b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x6c\x4e\x48\x7a\x69\x65']=function(_0x2b3ae6){for(let _0x49e06b=0x16*-0x8f+0x7f0+-0x2*-0x22d,_0x52647e=this['\x5a\x73\x72\x53\x56\x51']['\x6c\x65\x6e\x67\x74\x68'];_0x49e06b<_0x52647e;_0x49e06b++){this['\x5a\x73\x72\x53\x56\x51']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x52647e=this['\x5a\x73\x72\x53\x56\x51']['\x6c\x65\x6e\x67\x74\x68'];}return _0x2b3ae6(this['\x5a\x73\x72\x53\x56\x51'][0x25dc+-0x277*0xd+0x1*-0x5d1]);},(''+function(){return 0x3*0x713+-0x78f*0x1+-0x1*0xdaa;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(-0x3a*-0x1c+0x2527*0x1+-0x1*0x2b7e)&&new _0x4a254b(_0x41f8)['\x78\x4d\x61\x6a\x46\x56'](),_0x41f8['\x45\x5a\x6e\x61\x6a\x67']=!![];}_0xf642cc=_0x41f8['\x7a\x6a\x74\x63\x4b\x4f'](_0xf642cc,_0x9aa68),_0x41f8['\x6e\x7a\x46\x48\x58\x51'][_0x5656ed]=_0xf642cc;}else _0xf642cc=_0x4e2237;return _0xf642cc;}function _0x19e13d(_0x37a328={},_0x39f480=process.env){const _0x10653f=_0x1a55b6,_0x10d512={'\x41\x6a\x58\x4e\x63':_0x10653f(0x18b,'\x47\x4e\x44\x68'),'\x48\x70\x68\x42\x72':function(_0x35c4a5,_0x17ef46){return _0x35c4a5(_0x17ef46);},'\x69\x51\x59\x4e\x54':function(_0x23e803,_0x4c5a6e){return _0x23e803===_0x4c5a6e;},'\x43\x4a\x72\x55\x71':function(_0x444c6f,_0x27816c){return _0x444c6f!==_0x27816c;},'\x6b\x51\x41\x4f\x75':function(_0x2f0e35,_0x2c49aa){return _0x2f0e35(_0x2c49aa);},'\x4b\x79\x4c\x61\x68':function(_0x333ba4){return _0x333ba4();},'\x51\x7a\x68\x41\x4e':function(_0x471df2,_0x4d4ea3){return _0x471df2||_0x4d4ea3;},'\x43\x50\x4d\x6c\x42':'\x6d\x69\x73\x73\x69\x6e\x67\x5f'+_0x10653f(0x173,'\x4f\x29\x67\x57')+'\x74\x74\x69\x6e\x67\x73','\x4f\x45\x75\x53\x62':function(_0x22be9b,_0x2c61f5){return _0x22be9b(_0x2c61f5);},'\x75\x73\x62\x4d\x62':function(_0xa16948,_0x485d62){return _0xa16948!==_0x485d62;},'\x45\x68\x4f\x4d\x44':_0x10653f(0x17c,'\x66\x6d\x4c\x35')+_0x10653f(0x161,'\x79\x61\x39\x49')+_0x10653f(0x16d,'\x6e\x38\x39\x37'),'\x72\x77\x57\x44\x75':_0x10653f(0x169,'\x79\x61\x39\x49')+'\x50\x49\x5f\x4b\x45\x59','\x69\x6c\x46\x77\x44':_0x10653f(0x144,'\x25\x39\x2a\x53')+_0x10653f(0x1aa,'\x57\x6e\x6d\x54')};if(_0x10d512[_0x10653f(0x16e,'\x66\x6d\x4c\x35')](_0x329288,_0x39f480)){const _0x4aab4={};return _0x4aab4[_0x10653f(0x15b,'\x51\x76\x62\x4f')]=![],_0x4aab4[_0x10653f(0x19b,'\x5a\x50\x40\x4f')]=_0x10653f(0x1ac,'\x4b\x38\x47\x56'),_0x4aab4;}const _0xac1aa7=_0x10d512[_0x10653f(0x182,'\x4d\x69\x56\x56')](_0x39f480,process.env)&&_0x10d512['\x43\x4a\x72\x55\x71'](_0x37a328[_0x10653f(0x172,'\x66\x36\x4f\x61')+'\x6e\x67\x73'],![]),_0x33cb07=_0x10d512[_0x10653f(0x141,'\x53\x68\x77\x59')](String,_0x37a328[_0x10653f(0x1a6,'\x61\x62\x31\x51')]||(_0xac1aa7?_0x45cfee():'')||'')[_0x10653f(0x18c,'\x6b\x37\x40\x78')](/\/+$/,''),_0x54d3d7=String(_0x37a328[_0x10653f(0x158,'\x5a\x50\x40\x4f')]||(_0xac1aa7?_0x10d512[_0x10653f(0x184,'\x32\x41\x45\x49')](_0x1a0107):'')||'');if(_0x10d512[_0x10653f(0x19f,'\x64\x77\x28\x38')](!_0x33cb07,!_0x54d3d7)){if(_0x10d512[_0x10653f(0x16c,'\x78\x38\x39\x67')](_0x10653f(0x163,'\x55\x24\x70\x40'),_0x10653f(0x186,'\x4f\x29\x67\x57'))){const _0x1b48c4={};return _0x1b48c4[_0x10653f(0x143,'\x79\x4c\x31\x35')]=![],_0x1b48c4[_0x10653f(0x160,'\x53\x68\x77\x59')]=_0x10d512[_0x10653f(0x151,'\x32\x41\x45\x49')],_0x1b48c4;}else{const _0x5b06d3={};return _0x5b06d3[_0x10653f(0x177,'\x53\x76\x30\x38')]=![],_0x5b06d3[_0x10653f(0x15e,'\x24\x5b\x74\x64')]=_0x10d512[_0x10653f(0x154,'\x53\x76\x30\x38')],_0x5b06d3;}}const _0xa02382=_0x10d512[_0x10653f(0x15f,'\x58\x6f\x6f\x28')](String,_0x39f480[_0x10653f(0x164,'\x47\x4e\x44\x68')+_0x10653f(0x14b,'\x78\x38\x39\x67')+'\x52\x4c']||'')['\x74\x72\x69\x6d']()[_0x10653f(0x1b2,'\x4a\x71\x21\x40')](/\/+$/,'');_0xa02382&&_0x10d512[_0x10653f(0x15a,'\x76\x37\x4d\x75')](_0xa02382,_0x33cb07)&&!_0x39f480[_0x10653f(0x1a5,'\x63\x59\x75\x4f')+_0x10653f(0x153,'\x63\x59\x75\x4f')+'\x5f\x42\x41\x53\x45\x5f\x55\x52'+'\x4c']&&(_0x39f480['\x45\x56\x4f\x4d\x41\x50\x5f\x41'+_0x10653f(0x1b3,'\x25\x39\x2a\x53')+_0x10653f(0x1a7,'\x5e\x69\x4f\x4a')+'\x4c']=_0xa02382);const _0x2a4888=_0x10d512[_0x10653f(0x185,'\x47\x7a\x68\x30')](String,_0x39f480[_0x10653f(0x140,'\x6c\x5b\x67\x2a')+_0x10653f(0x156,'\x66\x6d\x4c\x35')+_0x10653f(0x155,'\x4d\x69\x56\x56')]||'')[_0x10653f(0x1b6,'\x5a\x45\x4e\x71')]();_0x2a4888&&_0x10d512['\x75\x73\x62\x4d\x62'](_0x2a4888,_0x54d3d7)&&!_0x39f480[_0x10653f(0x166,'\x54\x34\x37\x5d')+_0x10653f(0x181,'\x58\x6f\x48\x5e')+_0x10653f(0x19c,'\x6e\x38\x39\x37')+'\x4b\x45\x4e']&&(_0x39f480[_0x10653f(0x1a4,'\x78\x38\x39\x67')+_0x10653f(0x1b0,'\x69\x6d\x6c\x70')+_0x10653f(0x1a3,'\x61\x62\x31\x51')+_0x10653f(0x1ae,'\x49\x6f\x5d\x61')]=_0x2a4888);_0x39f480[_0x10653f(0x16f,'\x68\x4f\x5b\x75')+_0x10653f(0x189,'\x66\x36\x4f\x61')+'\x52\x4c']=_0x33cb07,_0x39f480['\x41\x4e\x54\x48\x52\x4f\x50\x49'+_0x10653f(0x1b4,'\x5a\x50\x40\x4f')+_0x10653f(0x18a,'\x78\x38\x39\x67')]=_0x54d3d7,_0x39f480[_0x10653f(0x16a,'\x4b\x38\x47\x56')+'\x50\x49\x5f\x4b\x45\x59']=_0x54d3d7,_0x39f480[_0x10653f(0x162,'\x61\x62\x31\x51')+_0x10653f(0x1af,'\x69\x6d\x6c\x70')]=_0x33cb07,_0x39f480[_0x10653f(0x14e,'\x25\x24\x46\x68')+_0x10653f(0x1b7,'\x66\x6d\x4c\x35')+_0x10653f(0x147,'\x24\x5b\x74\x64')+'\x45\x44']='\x31';const _0x305181={};return _0x305181[_0x10653f(0x19d,'\x54\x34\x37\x5d')]=!![],_0x305181['\x75\x72\x6c']=_0x33cb07,_0x305181[_0x10653f(0x167,'\x45\x69\x33\x6b')]=[_0x10653f(0x14d,'\x58\x6f\x6f\x28')+_0x10653f(0x171,'\x73\x5a\x5d\x4e')+'\x52\x4c',_0x10d512[_0x10653f(0x13f,'\x53\x21\x4e\x29')],_0x10d512[_0x10653f(0x1ab,'\x47\x4e\x44\x68')],_0x10d512[_0x10653f(0x192,'\x69\x6d\x6c\x70')]],_0x305181;}const _0x5f511b={};function _0x2b8d(){const _0x164bb3=['\x74\x53\x6f\x7a\x57\x34\x31\x41\x75\x71','\x6f\x6d\x6f\x4e\x63\x53\x6f\x63\x57\x52\x74\x63\x4b\x43\x6f\x71\x57\x35\x61','\x77\x43\x6f\x61\x57\x52\x34\x76\x71\x47','\x57\x51\x70\x63\x52\x38\x6b\x47\x6a\x65\x68\x63\x4f\x43\x6f\x69\x57\x51\x75','\x6b\x77\x61\x78\x71\x72\x57\x6e\x74\x77\x65','\x57\x35\x4f\x76\x6e\x59\x46\x63\x52\x4c\x78\x63\x47\x6d\x6b\x42','\x57\x37\x4e\x64\x54\x38\x6f\x36\x45\x62\x6c\x64\x4f\x43\x6f\x4c\x57\x4f\x4c\x46\x64\x38\x6f\x4d\x57\x37\x47','\x57\x50\x61\x54\x57\x50\x4a\x63\x4a\x6d\x6b\x6a\x41\x38\x6f\x74\x43\x6d\x6b\x38\x57\x34\x57\x62\x57\x52\x65','\x57\x35\x7a\x56\x64\x76\x7a\x30\x57\x4f\x62\x4c\x57\x37\x65','\x57\x36\x53\x53\x6b\x58\x37\x63\x4e\x77\x5a\x63\x53\x43\x6b\x53','\x41\x53\x6b\x79\x57\x36\x74\x64\x53\x64\x46\x63\x52\x61','\x57\x34\x33\x63\x51\x59\x48\x36\x57\x51\x30','\x45\x73\x66\x6c\x64\x65\x78\x63\x48\x6d\x6f\x66\x64\x57','\x6d\x43\x6f\x73\x57\x35\x79\x54\x57\x52\x43','\x57\x34\x50\x76\x46\x53\x6b\x2f\x6e\x59\x57\x31\x6a\x71','\x57\x34\x74\x64\x52\x53\x6b\x77\x57\x35\x56\x64\x4a\x71\x42\x63\x55\x38\x6f\x50','\x41\x43\x6b\x6f\x57\x34\x74\x64\x4b\x5a\x4e\x64\x51\x63\x61','\x57\x50\x6d\x4b\x57\x50\x4e\x63\x4a\x6d\x6b\x70\x41\x38\x6b\x70\x76\x6d\x6b\x30\x57\x35\x61\x4d\x57\x52\x4f\x6c','\x57\x51\x35\x61\x6e\x43\x6b\x38\x57\x34\x38','\x6f\x6d\x6f\x5a\x61\x77\x42\x64\x53\x53\x6f\x75\x57\x50\x70\x64\x4a\x38\x6b\x52\x57\x37\x66\x4c\x77\x48\x46\x64\x4b\x57','\x68\x72\x37\x63\x50\x38\x6b\x43\x57\x37\x6d\x49\x6b\x71\x61','\x65\x53\x6b\x32\x76\x76\x31\x6e','\x67\x38\x6f\x42\x57\x4f\x65\x76','\x6a\x72\x70\x64\x48\x38\x6f\x55\x57\x51\x6c\x63\x52\x6d\x6b\x71\x77\x57','\x57\x35\x76\x47\x57\x34\x4e\x64\x4b\x53\x6f\x42\x69\x61','\x72\x6d\x6f\x5a\x69\x53\x6b\x7a\x69\x57','\x57\x36\x6c\x64\x51\x43\x6f\x49\x42\x57\x4e\x64\x56\x6d\x6b\x67\x57\x36\x47','\x6d\x6d\x6b\x2f\x57\x4f\x79\x6a\x74\x47','\x57\x50\x74\x64\x53\x4a\x56\x63\x49\x43\x6f\x6c\x6a\x43\x6b\x61\x57\x50\x65','\x57\x50\x33\x64\x4c\x62\x46\x64\x51\x53\x6b\x79\x57\x37\x35\x41\x6a\x71','\x42\x43\x6b\x72\x72\x73\x5a\x63\x4b\x47','\x57\x36\x54\x76\x6a\x77\x54\x72\x57\x51\x53','\x57\x34\x72\x45\x78\x38\x6b\x4b\x62\x57','\x71\x6d\x6f\x30\x57\x50\x34\x50\x77\x65\x47','\x57\x37\x42\x63\x4f\x33\x37\x63\x4b\x43\x6f\x4e\x57\x50\x38\x55\x77\x61','\x72\x53\x6b\x49\x75\x33\x76\x72\x57\x37\x34\x51\x7a\x71','\x71\x6d\x6b\x56\x57\x34\x33\x64\x56\x4a\x30','\x57\x34\x6c\x64\x49\x38\x6f\x70\x6b\x6d\x6f\x63\x57\x34\x76\x52\x45\x57','\x72\x6d\x6f\x36\x57\x34\x64\x64\x53\x78\x31\x69\x57\x50\x70\x63\x4e\x61','\x74\x6d\x6b\x63\x68\x75\x2f\x64\x52\x57\x6d\x46\x6c\x71','\x46\x38\x6b\x49\x71\x63\x75','\x72\x53\x6f\x2b\x57\x4f\x30','\x57\x37\x42\x63\x51\x77\x5a\x63\x4b\x6d\x6f\x38\x57\x50\x4f\x55\x74\x71','\x57\x34\x5a\x64\x47\x43\x6f\x36\x71\x53\x6b\x52\x44\x31\x39\x67','\x57\x37\x66\x43\x57\x35\x46\x63\x4e\x61\x4c\x59\x57\x50\x4a\x64\x56\x57','\x45\x74\x72\x37\x67\x67\x43','\x72\x6d\x6b\x51\x57\x52\x56\x63\x52\x57','\x6c\x4a\x5a\x64\x52\x53\x6f\x35\x57\x4f\x71','\x78\x38\x6b\x36\x6d\x38\x6b\x53\x79\x53\x6b\x77\x57\x37\x5a\x64\x51\x71','\x73\x38\x6b\x7a\x63\x30\x37\x64\x52\x71','\x76\x58\x78\x63\x4d\x43\x6f\x69\x57\x51\x61\x36\x6e\x38\x6f\x2b','\x57\x35\x42\x63\x47\x47\x76\x35\x57\x4f\x75\x34\x57\x35\x44\x63','\x57\x34\x54\x53\x42\x4d\x33\x63\x4f\x38\x6f\x42\x6a\x53\x6b\x33','\x57\x37\x5a\x63\x4f\x73\x34\x74\x57\x37\x74\x63\x53\x53\x6f\x52\x57\x37\x79','\x57\x37\x79\x54\x65\x47\x2f\x63\x4a\x68\x68\x63\x4a\x38\x6b\x35','\x57\x34\x6c\x64\x51\x43\x6b\x6a\x57\x36\x4a\x64\x51\x61','\x6f\x53\x6b\x59\x7a\x33\x7a\x6e\x57\x37\x57\x62\x74\x61','\x77\x38\x6b\x53\x44\x65\x78\x63\x50\x47','\x57\x35\x70\x63\x53\x59\x6c\x63\x49\x43\x6f\x41\x6a\x38\x6b\x61\x57\x4f\x43','\x62\x43\x6b\x55\x45\x6d\x6f\x6e\x46\x53\x6f\x53\x57\x34\x54\x43\x6d\x4b\x35\x78\x66\x47','\x57\x37\x46\x63\x4e\x47\x6a\x39\x57\x50\x65','\x6a\x57\x6c\x64\x4b\x53\x6f\x5a\x57\x51\x74\x63\x51\x38\x6b\x46\x72\x47','\x57\x52\x47\x56\x77\x43\x6b\x67\x62\x71','\x77\x68\x4f\x4d\x42\x75\x2f\x63\x49\x4a\x52\x63\x4c\x43\x6f\x7a\x57\x50\x33\x63\x52\x72\x4b','\x6f\x53\x6f\x31\x61\x4d\x2f\x64\x54\x53\x6f\x79\x57\x36\x4e\x63\x56\x53\x6b\x45\x57\x36\x6e\x53\x75\x57','\x57\x36\x74\x64\x52\x53\x6f\x39\x76\x38\x6b\x31','\x57\x4f\x74\x63\x4c\x43\x6b\x63\x65\x32\x33\x63\x48\x43\x6f\x4b\x57\x4f\x69','\x70\x43\x6f\x62\x57\x50\x30\x76\x57\x52\x65','\x57\x36\x6c\x63\x48\x61\x54\x4a\x57\x52\x4f','\x57\x51\x7a\x50\x6e\x6d\x6b\x58\x57\x36\x75','\x57\x36\x4e\x64\x50\x6d\x6b\x72\x57\x50\x37\x64\x4d\x61','\x57\x34\x4c\x70\x42\x4c\x68\x63\x49\x71','\x43\x74\x6c\x63\x51\x38\x6f\x4d\x57\x4f\x65\x6c\x67\x57','\x6b\x53\x6b\x7a\x57\x34\x4e\x64\x56\x58\x4a\x64\x50\x73\x56\x64\x4a\x57','\x57\x36\x64\x63\x52\x49\x6a\x52\x57\x52\x6d\x6a\x57\x37\x58\x2b','\x44\x74\x76\x6d\x61\x57','\x57\x36\x46\x64\x52\x6d\x6f\x4f\x61\x43\x6f\x59\x57\x36\x7a\x45\x76\x47','\x6a\x43\x6f\x46\x57\x35\x56\x64\x4b\x64\x72\x49\x57\x34\x38','\x57\x36\x37\x64\x51\x53\x6b\x78\x57\x34\x2f\x64\x4e\x47','\x73\x62\x54\x4f\x70\x4e\x4e\x63\x52\x57','\x75\x4e\x33\x63\x54\x43\x6b\x70\x57\x34\x37\x64\x4c\x38\x6f\x39\x44\x53\x6b\x65\x57\x34\x79\x2b\x57\x50\x6d\x50','\x79\x68\x52\x63\x51\x53\x6b\x32\x57\x36\x30\x43\x6a\x5a\x53','\x6f\x53\x6b\x58\x6d\x66\x42\x64\x54\x47\x65\x34','\x57\x34\x2f\x64\x56\x43\x6b\x79\x57\x35\x33\x64\x4d\x61','\x57\x4f\x4b\x4e\x6f\x73\x64\x64\x4f\x38\x6b\x30\x6f\x43\x6b\x36\x57\x34\x58\x37\x57\x36\x72\x79','\x72\x6d\x6f\x55\x69\x6d\x6b\x72','\x57\x37\x37\x64\x4b\x38\x6b\x6d\x57\x37\x37\x64\x4b\x75\x66\x58\x57\x36\x30','\x57\x52\x56\x63\x52\x43\x6b\x46\x6f\x77\x43','\x57\x50\x57\x41\x71\x53\x6f\x65\x46\x4c\x4a\x63\x4f\x53\x6f\x62\x57\x50\x75\x62\x42\x78\x70\x64\x56\x58\x38','\x6a\x48\x31\x50\x65\x32\x72\x4f\x79\x6d\x6f\x2b','\x57\x50\x54\x54\x57\x52\x70\x64\x47\x43\x6b\x31','\x57\x51\x4f\x61\x61\x77\x62\x56\x57\x51\x54\x48\x57\x35\x30','\x71\x53\x6f\x35\x6b\x6d\x6b\x70\x69\x53\x6b\x57','\x76\x6d\x6b\x47\x57\x51\x56\x63\x54\x73\x64\x64\x55\x64\x44\x78','\x79\x6d\x6b\x36\x6f\x67\x46\x64\x4a\x73\x43\x4c\x63\x61','\x57\x37\x65\x58\x57\x37\x70\x63\x52\x61','\x70\x64\x6a\x2f\x68\x74\x69','\x57\x52\x39\x46\x69\x6d\x6b\x6a\x57\x35\x69\x48\x57\x34\x70\x64\x4c\x61','\x57\x36\x2f\x64\x4f\x53\x6b\x72\x57\x34\x42\x64\x47\x71','\x65\x53\x6f\x47\x57\x51\x79\x69\x57\x51\x79','\x78\x6d\x6b\x31\x73\x77\x58\x79\x57\x37\x65\x48\x45\x47','\x46\x59\x48\x67\x61\x66\x46\x63\x4b\x43\x6f\x66\x67\x57','\x66\x48\x5a\x63\x4f\x6d\x6b\x64\x57\x37\x30\x49\x70\x57\x69','\x44\x53\x6b\x67\x43\x61','\x57\x51\x4f\x68\x57\x37\x2f\x63\x50\x32\x57\x30\x57\x4f\x33\x63\x4b\x71','\x6a\x4e\x52\x64\x4f\x53\x6b\x35\x57\x34\x62\x68\x75\x6d\x6f\x62\x41\x57\x2f\x64\x54\x43\x6b\x58\x57\x51\x69','\x57\x34\x64\x64\x53\x6d\x6b\x59\x57\x35\x4e\x64\x55\x71','\x66\x5a\x31\x46\x6f\x75\x39\x70\x72\x38\x6f\x72','\x57\x37\x68\x64\x53\x53\x6f\x6d\x6a\x6d\x6f\x4c','\x57\x36\x56\x64\x56\x43\x6f\x41\x44\x38\x6b\x67\x76\x4d\x76\x4a','\x6e\x38\x6f\x7a\x57\x51\x78\x63\x47\x67\x64\x64\x51\x53\x6f\x7a\x57\x4f\x7a\x49\x57\x51\x33\x64\x49\x5a\x79','\x57\x36\x50\x72\x57\x36\x34','\x57\x37\x74\x64\x4e\x53\x6b\x67\x57\x37\x70\x64\x47\x32\x70\x63\x50\x38\x6b\x4d','\x57\x36\x4a\x64\x48\x43\x6b\x77\x57\x37\x4a\x64\x4b\x32\x42\x63\x56\x6d\x6b\x50','\x46\x59\x48\x67\x61\x66\x46\x63\x4b\x43\x6f\x66\x63\x47','\x57\x50\x44\x35\x57\x4f\x4b\x75\x57\x37\x38\x69\x57\x36\x43','\x57\x35\x65\x78\x6d\x64\x4a\x63\x4f\x66\x78\x63\x4c\x53\x6b\x69','\x43\x38\x6f\x64\x63\x6d\x6b\x50\x67\x43\x6b\x77\x57\x34\x35\x65','\x7a\x43\x6f\x45\x57\x36\x58\x59','\x57\x51\x46\x63\x4f\x63\x69\x6b','\x6e\x61\x70\x64\x4e\x53\x6f\x49\x57\x51\x4e\x63\x50\x43\x6b\x41\x77\x57','\x61\x43\x6b\x54\x44\x33\x39\x48','\x57\x52\x6d\x6a\x57\x34\x37\x63\x54\x64\x50\x7a'];_0x2b8d=function(){return _0x164bb3;};return _0x2b8d();}_0x5f511b[_0x1a55b6(0x175,'\x25\x39\x2a\x53')+_0x1a55b6(0x149,'\x55\x24\x70\x40')]=_0x19e13d,_0x5f511b['\x69\x73\x44\x69\x73\x61\x62\x6c'+'\x65\x64']=_0x329288,module[_0x1a55b6(0x187,'\x73\x5a\x5d\x4e')]=_0x5f511b;
|
|
@@ -362,6 +362,11 @@ class AuthError extends Error {
|
|
|
362
362
|
}
|
|
363
363
|
}
|
|
364
364
|
|
|
365
|
+
function parseNodeSecretVersion(value) {
|
|
366
|
+
const n = Number(value);
|
|
367
|
+
return Number.isInteger(n) && n > 0 ? n : null;
|
|
368
|
+
}
|
|
369
|
+
|
|
365
370
|
class LifecycleManager {
|
|
366
371
|
constructor({ hubUrl, store, logger, getTaskMeta } = {}) {
|
|
367
372
|
this.hubUrl = (hubUrl || process.env.A2A_HUB_URL || '').replace(/\/+$/, '');
|
|
@@ -433,6 +438,24 @@ class LifecycleManager {
|
|
|
433
438
|
return this._resolveNodeSecret();
|
|
434
439
|
}
|
|
435
440
|
|
|
441
|
+
get nodeSecretVersion() {
|
|
442
|
+
const storeVersion = parseNodeSecretVersion(this.store.getState('node_secret_version'));
|
|
443
|
+
const storeSecret = this.store.getState('node_secret') || null;
|
|
444
|
+
const storeSource = this.store.getState('node_secret_source') || null;
|
|
445
|
+
const envSecret = this._suppressEnvSecret
|
|
446
|
+
? null
|
|
447
|
+
: ((process.env.A2A_NODE_SECRET || process.env.EVOMAP_NODE_SECRET || '').trim() || null);
|
|
448
|
+
const envVersion = parseNodeSecretVersion(process.env.A2A_NODE_SECRET_VERSION || process.env.EVOMAP_NODE_SECRET_VERSION);
|
|
449
|
+
const validStoreSecret = typeof storeSecret === 'string' && /^[a-f0-9]{64}$/i.test(storeSecret);
|
|
450
|
+
if (this._suppressEnvSecret) return validStoreSecret ? storeVersion : null;
|
|
451
|
+
if (storeSource === 'hub_rotate' && validStoreSecret) return storeVersion;
|
|
452
|
+
if (envSecret) {
|
|
453
|
+
if (envVersion) return envVersion;
|
|
454
|
+
return storeSecret === envSecret ? storeVersion : null;
|
|
455
|
+
}
|
|
456
|
+
return validStoreSecret ? storeVersion : null;
|
|
457
|
+
}
|
|
458
|
+
|
|
436
459
|
/**
|
|
437
460
|
* Resolve the active node_secret with conflict reconciliation between the
|
|
438
461
|
* persistent MailboxStore and `process.env.A2A_NODE_SECRET`.
|
|
@@ -466,7 +489,7 @@ class LifecycleManager {
|
|
|
466
489
|
_resolveNodeSecret() {
|
|
467
490
|
const envSecret = this._suppressEnvSecret
|
|
468
491
|
? null
|
|
469
|
-
: ((process.env.A2A_NODE_SECRET || '').trim() || null);
|
|
492
|
+
: ((process.env.A2A_NODE_SECRET || process.env.EVOMAP_NODE_SECRET || '').trim() || null);
|
|
470
493
|
const storeSecret = this.store.getState('node_secret') || null;
|
|
471
494
|
const storeSource = this.store.getState('node_secret_source') || null;
|
|
472
495
|
const valid = (s) => typeof s === 'string' && /^[a-f0-9]{64}$/i.test(s);
|
|
@@ -489,7 +512,9 @@ class LifecycleManager {
|
|
|
489
512
|
return storeSecret;
|
|
490
513
|
}
|
|
491
514
|
if (valid(envSecret)) {
|
|
515
|
+
const envVersion = parseNodeSecretVersion(process.env.A2A_NODE_SECRET_VERSION || process.env.EVOMAP_NODE_SECRET_VERSION);
|
|
492
516
|
this.store.setState('node_secret', envSecret);
|
|
517
|
+
this.store.setState('node_secret_version', envVersion ? String(envVersion) : '');
|
|
493
518
|
// Mark the new store value as env-seeded so a future rotation can
|
|
494
519
|
// distinguish "operator pasted this in" from "hub returned this".
|
|
495
520
|
this.store.setState('node_secret_source', 'env_seed');
|
|
@@ -513,6 +538,8 @@ class LifecycleManager {
|
|
|
513
538
|
const headers = { 'Content-Type': 'application/json' };
|
|
514
539
|
const secret = this.nodeSecret;
|
|
515
540
|
if (secret) headers['Authorization'] = 'Bearer ' + secret;
|
|
541
|
+
const secretVersion = this.nodeSecretVersion;
|
|
542
|
+
if (secretVersion) headers['X-EvoMap-Node-Secret-Version'] = String(secretVersion);
|
|
516
543
|
headers['x-correlation-id'] = crypto.randomUUID();
|
|
517
544
|
return headers;
|
|
518
545
|
}
|
|
@@ -600,6 +627,7 @@ class LifecycleManager {
|
|
|
600
627
|
}
|
|
601
628
|
|
|
602
629
|
const secret = data?.payload?.node_secret || data?.node_secret || null;
|
|
630
|
+
const secretVersion = parseNodeSecretVersion(data?.payload?.node_secret_version || data?.node_secret_version);
|
|
603
631
|
if (secret && /^[a-f0-9]{64}$/i.test(secret)) {
|
|
604
632
|
this.store.setState('node_secret', secret);
|
|
605
633
|
// Tag the store entry so the next process that boots into a stale
|
|
@@ -618,6 +646,11 @@ class LifecycleManager {
|
|
|
618
646
|
this._suppressEnvSecret = true;
|
|
619
647
|
this.logger.log('[lifecycle] new node_secret stored from hello response');
|
|
620
648
|
}
|
|
649
|
+
if (secretVersion) {
|
|
650
|
+
this.store.setState('node_secret_version', String(secretVersion));
|
|
651
|
+
} else {
|
|
652
|
+
this.store.setState('node_secret_version', '');
|
|
653
|
+
}
|
|
621
654
|
|
|
622
655
|
this.store.setState('node_id', nodeId);
|
|
623
656
|
// Unify proxy node_id with the legacy GEP file. Without this, the
|
|
@@ -770,6 +803,7 @@ class LifecycleManager {
|
|
|
770
803
|
_dropLocalSecret(reason) {
|
|
771
804
|
this.logger.warn(`[lifecycle] dropping cached node_secret (reason=${reason}); next hello will run unauthenticated`);
|
|
772
805
|
try { this.store.setState('node_secret', ''); } catch { /* best-effort */ }
|
|
806
|
+
try { this.store.setState('node_secret_version', ''); } catch { /* best-effort */ }
|
|
773
807
|
// Clear the source tag too -- nothing is stored, nothing to attribute.
|
|
774
808
|
try { this.store.setState('node_secret_source', ''); } catch { /* best-effort */ }
|
|
775
809
|
try { this.store.setState('node_secret_env_suppressed', 'true'); } catch { /* best-effort */ }
|
|
@@ -824,6 +858,7 @@ class LifecycleManager {
|
|
|
824
858
|
const endpoint = `${this.hubUrl}/a2a/heartbeat`;
|
|
825
859
|
const taskMeta = typeof this.getTaskMeta === 'function' ? this.getTaskMeta() : {};
|
|
826
860
|
const fp = _getEnvFingerprint();
|
|
861
|
+
const secretVersion = this.nodeSecretVersion;
|
|
827
862
|
const body = {
|
|
828
863
|
node_id: this.nodeId,
|
|
829
864
|
sender_id: this.nodeId,
|
|
@@ -837,6 +872,10 @@ class LifecycleManager {
|
|
|
837
872
|
...taskMeta,
|
|
838
873
|
},
|
|
839
874
|
};
|
|
875
|
+
if (secretVersion) {
|
|
876
|
+
body.node_secret_version = secretVersion;
|
|
877
|
+
body.meta.node_secret_version = secretVersion;
|
|
878
|
+
}
|
|
840
879
|
|
|
841
880
|
try {
|
|
842
881
|
const cfg = require('../../config');
|
|
@@ -80,6 +80,16 @@ function buildRoutes(store, proxyHandlers, taskMonitor, extensions) {
|
|
|
80
80
|
return { body: result };
|
|
81
81
|
},
|
|
82
82
|
|
|
83
|
+
// Reuse-attribution report: the agent declares which fetched assets it
|
|
84
|
+
// actually reused. Forwarded flat (not enveloped) to the hub's
|
|
85
|
+
// /a2a/memory/record; the proxy stamps its own node as sender_id and the
|
|
86
|
+
// hub cross-verifies against AssetFetcher. Best-effort — never throws on a
|
|
87
|
+
// hub error so a report failure can't break the calling agent.
|
|
88
|
+
'POST /asset/report-reuse': async ({ body }) => {
|
|
89
|
+
const result = await proxyHandlers.reportReuse(body || {});
|
|
90
|
+
return { body: result };
|
|
91
|
+
},
|
|
92
|
+
|
|
83
93
|
'POST /asset/search': async ({ body }) => {
|
|
84
94
|
const result = await proxyHandlers.assetSearch(body);
|
|
85
95
|
return { body: result };
|
|
@@ -66,7 +66,7 @@ class OutboundSync {
|
|
|
66
66
|
if (m.type !== 'proxy_trace') continue;
|
|
67
67
|
if (!traceUploadEnabled) {
|
|
68
68
|
rejectedTraceUploads.push({ id: m.id, error: 'proxy trace upload disabled' });
|
|
69
|
-
} else if (!isProxyTraceUploadPayloadAllowed(m.payload, process.env)) {
|
|
69
|
+
} else if (!isProxyTraceUploadPayloadAllowed(m.payload, process.env, { store: this.store })) {
|
|
70
70
|
rejectedTraceUploads.push({ id: m.id, error: 'proxy trace payload rejected' });
|
|
71
71
|
}
|
|
72
72
|
}
|