@evomap/evolver 1.89.11 → 1.89.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.cursor/BUGBOT.md +182 -0
  2. package/.env.example +68 -0
  3. package/.git-commit-guard-token +1 -0
  4. package/.github/CODEOWNERS +63 -0
  5. package/.github/ISSUE_TEMPLATE/good_first_issue.md +23 -0
  6. package/.github/pull_request_template.md +45 -0
  7. package/.github/workflows/test.yml +75 -0
  8. package/CHANGELOG.md +1367 -0
  9. package/README.md +90 -537
  10. package/README.public.md +578 -0
  11. package/SECURITY.md +108 -0
  12. package/assets/gep/events.jsonl +3 -0
  13. package/examples/atp-consumer-quickstart.md +100 -0
  14. package/examples/hello-world.md +38 -0
  15. package/package.json +6 -18
  16. package/proxy-package.json +39 -0
  17. package/public.manifest.json +145 -0
  18. package/src/evolve/guards.js +721 -1
  19. package/src/evolve/pipeline/collect.js +1283 -1
  20. package/src/evolve/pipeline/dispatch.js +421 -1
  21. package/src/evolve/pipeline/enrich.js +440 -1
  22. package/src/evolve/pipeline/hub.js +319 -1
  23. package/src/evolve/pipeline/select.js +274 -1
  24. package/src/evolve/pipeline/signals.js +206 -1
  25. package/src/evolve/utils.js +264 -1
  26. package/src/evolve.js +350 -1
  27. package/src/gep/a2aProtocol.js +4463 -1
  28. package/src/gep/antiAbuseTelemetry.js +233 -1
  29. package/src/gep/autoDistillConv.js +205 -1
  30. package/src/gep/autoDistillLlm.js +315 -1
  31. package/src/gep/candidateEval.js +92 -1
  32. package/src/gep/candidates.js +198 -1
  33. package/src/gep/contentHash.js +30 -1
  34. package/src/gep/conversationDistiller.js +270 -0
  35. package/src/gep/conversationSniffer.js +266 -1
  36. package/src/gep/crypto.js +89 -1
  37. package/src/gep/curriculum.js +163 -1
  38. package/src/gep/deviceId.js +218 -1
  39. package/src/gep/envFingerprint.js +118 -1
  40. package/src/gep/epigenetics.js +31 -1
  41. package/src/gep/execBridge.js +712 -1
  42. package/src/gep/explore.js +289 -1
  43. package/src/gep/hash.js +15 -1
  44. package/src/gep/hubFetch.js +608 -1
  45. package/src/gep/hubReview.js +207 -1
  46. package/src/gep/hubSearch.js +526 -1
  47. package/src/gep/hubVerify.js +306 -1
  48. package/src/gep/learningSignals.js +89 -1
  49. package/src/gep/memoryGraph.js +1449 -1
  50. package/src/gep/memoryGraphAdapter.js +203 -1
  51. package/src/gep/mutation.js +203 -1
  52. package/src/gep/narrativeMemory.js +108 -1
  53. package/src/gep/openPRRegistry.js +205 -1
  54. package/src/gep/personality.js +423 -1
  55. package/src/gep/policyCheck.js +599 -1
  56. package/src/gep/prompt.js +836 -1
  57. package/src/gep/questionGenerator.js +103 -0
  58. package/src/gep/recallInject.js +409 -1
  59. package/src/gep/recallVerifier.js +318 -1
  60. package/src/gep/reflection.js +177 -1
  61. package/src/gep/savingsCore.js +112 -1
  62. package/src/gep/selector.js +602 -1
  63. package/src/gep/skillDistiller.js +1294 -1
  64. package/src/gep/solidify.js +1699 -1
  65. package/src/gep/strategy.js +136 -1
  66. package/src/gep/tokenSavings.js +95 -1
  67. package/src/gep/workspaceKeychain.js +174 -1
  68. package/src/proxy/extensions/traceControl.js +109 -1
  69. package/src/proxy/inject.js +52 -1
  70. package/src/proxy/lifecycle/manager.js +108 -7
  71. package/src/proxy/server/routes.js +31 -0
  72. package/src/proxy/server/settings.js +6 -2
  73. package/src/proxy/sync/engine.js +31 -15
  74. package/src/proxy/sync/inbound.js +87 -9
  75. package/src/proxy/sync/outbound.js +57 -4
  76. package/src/proxy/trace/extractor.js +1403 -1
  77. package/src/proxy/trace/usage.js +105 -1
  78. package/CONTRIBUTING.md +0 -19
  79. package/assets/cover.png +0 -0
  80. package/scripts/a2a_export.js +0 -63
  81. package/scripts/a2a_ingest.js +0 -79
  82. package/scripts/a2a_promote.js +0 -118
  83. package/scripts/analyze_by_skill.js +0 -121
  84. package/scripts/build_binaries.js +0 -479
  85. package/scripts/check-changelog.js +0 -166
  86. package/scripts/extract_log.js +0 -85
  87. package/scripts/generate_history.js +0 -75
  88. package/scripts/gep_append_event.js +0 -96
  89. package/scripts/gep_personality_report.js +0 -234
  90. package/scripts/human_report.js +0 -147
  91. package/scripts/recall-verify-report.js +0 -234
  92. package/scripts/recover_loop.js +0 -61
  93. package/scripts/refresh_stars_badge.js +0 -168
  94. package/scripts/seed-merchants.js +0 -91
  95. package/scripts/suggest_version.js +0 -89
  96. package/scripts/validate-modules.js +0 -38
  97. package/scripts/validate-suite.js +0 -78
  98. package/skills/index.json +0 -14
  99. /package/assets/gep/{genes.seed.json → genes.json} +0 -0
  100. /package/{skills → bundled-skills}/_meta/SKILL.md +0 -0
@@ -1 +1,205 @@
1
- var _0x4d3d79=_0x1653;(function(_0x26e16b,_0x22dd49){var _0x2e959d=_0x1653,_0x3bb92b=_0x26e16b();while(!![]){try{var _0x124ee8=parseInt(_0x2e959d(0x1ef,'\x36\x59\x47\x55'))/(-0xbe*-0x11+-0x270f+-0x54a*-0x5)*(parseInt(_0x2e959d(0x1fb,'\x53\x45\x71\x5e'))/(-0xd11+0x1a91+-0xd7e))+parseInt(_0x2e959d(0x1da,'\x6f\x32\x46\x73'))/(0xa*-0x121+-0x1*-0x2ef+-0x33*-0x2a)*(parseInt(_0x2e959d(0x25d,'\x31\x57\x28\x6e'))/(0x1*0x1a3d+0x635*-0x1+-0x1404))+parseInt(_0x2e959d(0x241,'\x40\x66\x5e\x6f'))/(0xbc*-0xd+-0x1*0x11d1+-0xa*-0x2bd)*(-parseInt(_0x2e959d(0x17b,'\x58\x47\x58\x62'))/(-0x883+-0x979+0x1202*0x1))+parseInt(_0x2e959d(0x253,'\x6f\x5b\x45\x4d'))/(0x25*-0xb0+-0x13f9+0x10*0x2d7)+parseInt(_0x2e959d(0x14a,'\x7a\x69\x40\x79'))/(-0x1f8e+-0x35f+0x9d*0x39)+-parseInt(_0x2e959d(0x219,'\x66\x61\x55\x69'))/(0x2571+0x58*-0x1f+-0x1ac0)+-parseInt(_0x2e959d(0x1bb,'\x6b\x34\x48\x28'))/(-0x227*-0x3+-0x33*-0x39+0xe*-0x145)*(parseInt(_0x2e959d(0x242,'\x6e\x47\x51\x55'))/(0xfcb+0x329*0x3+-0x193b));if(_0x124ee8===_0x22dd49)break;else _0x3bb92b['push'](_0x3bb92b['shift']());}catch(_0xfc4cb2){_0x3bb92b['push'](_0x3bb92b['shift']());}}}(_0x1c43,0x31d8c+-0x65452+0x112dba));var _0x1390d3=(function(){var _0x139a2a=_0x1653,_0x22a544={};_0x22a544[_0x139a2a(0x1e4,'\x39\x49\x23\x56')]=_0x139a2a(0x171,'\x6e\x61\x6e\x4b')+_0x139a2a(0x1c5,'\x74\x2a\x5b\x37')+'\x6e\x6f\x74\x20\x61\x76\x61\x69'+_0x139a2a(0x24b,'\x6f\x5b\x45\x4d')+_0x139a2a(0x15c,'\x6d\x70\x41\x32')+_0x139a2a(0x1e5,'\x65\x73\x6e\x4b')+_0x139a2a(0x1d9,'\x58\x47\x58\x62')+_0x139a2a(0x1b5,'\x57\x5b\x77\x54')+_0x139a2a(0x24d,'\x6e\x57\x56\x51')+'\x20\x49\x6e\x73\x74\x61\x6c\x6c'+_0x139a2a(0x1d0,'\x48\x21\x37\x6b')+_0x139a2a(0x216,'\x53\x45\x71\x5e')+_0x139a2a(0x1d5,'\x35\x69\x4f\x79')+_0x139a2a(0x25e,'\x6e\x61\x6e\x4b')+_0x139a2a(0x266,'\x58\x47\x58\x62')+_0x139a2a(0x211,'\x6e\x61\x6e\x4b');var _0x31461b=_0x22a544,_0x4435a8=!![];return function(_0x4e86cf,_0x494758){var _0x389614=_0x139a2a,_0x4fb3fa={};_0x4fb3fa[_0x389614(0x1c7,'\x56\x45\x69\x78')]=_0x31461b[_0x389614(0x1b3,'\x7a\x69\x40\x79')],_0x4fb3fa[_0x389614(0x23d,'\x62\x43\x29\x26')]=_0x389614(0x1b6,'\x50\x41\x7a\x48');var _0x3ce659=_0x4fb3fa,_0x85840c=_0x4435a8?function(){var _0x5b12b5=_0x389614;if(_0x494758){if(_0x5b12b5(0x159,'\x70\x75\x6a\x26')!==_0x3ce659[_0x5b12b5(0x21c,'\x42\x39\x39\x37')]){var _0x40ac20=_0x494758[_0x5b12b5(0x1ae,'\x25\x30\x53\x74')](_0x4e86cf,arguments);return _0x494758=null,_0x40ac20;}else _0x474927=!![],_0x46235c[_0x5b12b5(0x208,'\x62\x43\x29\x26')](_0x3ce659[_0x5b12b5(0x274,'\x33\x5e\x25\x6e')]);}}:function(){};return _0x4435a8=![],_0x85840c;};}()),_0x28fbde=_0x1390d3(this,function(){var _0x15152a=_0x1653,_0x52b4ed={};_0x52b4ed[_0x15152a(0x167,'\x65\x24\x6b\x54')]=_0x15152a(0x248,'\x4f\x31\x52\x68')+_0x15152a(0x1fc,'\x6e\x47\x51\x55');var _0x4d9d19=_0x52b4ed;return _0x28fbde['\x74\x6f\x53\x74\x72\x69\x6e\x67']()[_0x15152a(0x172,'\x58\x47\x58\x62')](_0x4d9d19[_0x15152a(0x19d,'\x40\x66\x5e\x6f')])[_0x15152a(0x178,'\x50\x41\x7a\x48')]()[_0x15152a(0x260,'\x6f\x32\x46\x73')+_0x15152a(0x197,'\x4f\x31\x52\x68')](_0x28fbde)[_0x15152a(0x163,'\x4f\x31\x52\x68')](_0x4d9d19[_0x15152a(0x22f,'\x6e\x61\x6e\x4b')]);});_0x28fbde();'use strict';const {envInt:_0x51b3e1}=require(_0x4d3d79(0x165,'\x56\x57\x69\x24')+'\x67'),_0x136ad6=(0x3c*0x4e+-0x2*0x41+0x5*-0x38c)*(0x1059+0x39*0xf+-0xfb0)*(-0x1ad8+-0xbf6*-0x1+0x1*0x12e2),_0x62aec0=0xe9b*0x1+-0x19*0x42+-0x29*-0x47;let _0x32b259=null,_0x51a8e6=-0xb58+0x278+0x20*0x47,_0x41ff39=null,_0x23978b=![];function _0x174f79(){var _0x3c02d2=_0x4d3d79;return Date[_0x3c02d2(0x23b,'\x70\x75\x6a\x26')]();}function _0x57f186(){var _0x437c87=_0x4d3d79,_0x5be79c={'\x71\x76\x69\x71\x75':function(_0x1460ef,_0x5b5c0f){return _0x1460ef(_0x5b5c0f);}};return _0x5be79c[_0x437c87(0x25b,'\x65\x24\x6b\x54')](String,process.env.EVOLVE_OPEN_PR_DEDUP||'\x31')!=='\x30';}function _0x1c43(){var _0xb6a759=['\x63\x59\x6c\x63\x56\x38\x6b\x6e\x57\x36\x53','\x57\x37\x37\x64\x50\x59\x64\x63\x4b\x6d\x6b\x6f\x42\x4d\x7a\x68\x68\x6d\x6b\x70','\x57\x50\x6e\x56\x57\x51\x6c\x64\x4c\x71','\x73\x38\x6b\x68\x57\x52\x71\x75\x67\x71','\x57\x4f\x66\x75\x79\x53\x6f\x55\x57\x36\x75','\x62\x53\x6f\x43\x57\x52\x72\x79\x62\x6d\x6f\x79\x6b\x32\x75','\x57\x37\x56\x64\x4a\x67\x69\x51\x78\x61','\x42\x4e\x68\x63\x4e\x67\x46\x63\x54\x6d\x6f\x72\x41\x77\x43','\x42\x6d\x6f\x61\x6c\x43\x6f\x46\x7a\x71','\x7a\x75\x79\x77\x57\x37\x71','\x45\x43\x6f\x6a\x57\x52\x68\x64\x4f\x64\x7a\x62\x6a\x47','\x42\x38\x6b\x31\x57\x37\x4c\x6f\x78\x38\x6f\x33','\x41\x4c\x79\x78\x6d\x53\x6b\x62','\x57\x35\x5a\x64\x4f\x4e\x43\x65\x79\x71','\x46\x38\x6b\x43\x77\x30\x43','\x63\x43\x6f\x35\x43\x6d\x6f\x77','\x57\x37\x5a\x64\x4f\x49\x4a\x63\x4c\x6d\x6f\x31\x6f\x74\x65\x67\x68\x43\x6b\x46\x57\x34\x46\x64\x49\x67\x2f\x63\x55\x61','\x64\x38\x6b\x48\x6b\x43\x6b\x58\x57\x37\x74\x63\x4a\x6d\x6b\x30','\x57\x35\x78\x64\x55\x4c\x6c\x64\x54\x49\x65','\x57\x35\x71\x4a\x57\x36\x46\x63\x4c\x4c\x43\x30','\x57\x52\x52\x64\x4a\x38\x6f\x75\x57\x52\x4c\x38','\x57\x50\x64\x64\x55\x68\x68\x64\x4f\x59\x68\x64\x55\x38\x6b\x33\x69\x61','\x76\x4d\x38\x73\x66\x6d\x6b\x69\x41\x38\x6b\x58','\x6e\x67\x4a\x64\x52\x53\x6b\x54\x45\x47','\x79\x68\x68\x63\x4d\x57','\x57\x34\x5a\x63\x49\x6d\x6f\x53\x57\x52\x71\x39','\x57\x4f\x5a\x63\x50\x72\x6c\x63\x4b\x76\x34','\x66\x31\x6e\x72\x6f\x38\x6f\x79','\x57\x51\x4a\x63\x50\x4a\x68\x64\x4f\x38\x6b\x76\x74\x4b\x58\x50','\x6f\x68\x78\x64\x49\x38\x6b\x48\x6f\x53\x6f\x76\x44\x74\x6d','\x57\x50\x37\x64\x48\x4d\x70\x64\x4f\x47\x61','\x57\x37\x2f\x63\x49\x38\x6b\x62\x57\x34\x79\x35\x57\x51\x48\x61\x57\x37\x74\x64\x52\x62\x35\x6b\x44\x43\x6f\x46\x6a\x57','\x67\x53\x6f\x71\x57\x51\x66\x71\x6d\x57','\x57\x4f\x70\x63\x54\x53\x6f\x47\x64\x43\x6b\x4b','\x57\x52\x78\x64\x4b\x43\x6f\x32\x57\x50\x72\x51','\x76\x66\x5a\x63\x4f\x62\x68\x63\x4e\x57','\x57\x37\x70\x64\x54\x4b\x69\x44\x7a\x77\x34\x35','\x6e\x43\x6f\x37\x69\x53\x6f\x55\x6e\x61','\x57\x50\x78\x63\x52\x43\x6f\x36\x63\x43\x6b\x55\x57\x36\x65','\x45\x43\x6f\x77\x57\x50\x78\x64\x4f\x71','\x57\x37\x37\x64\x51\x6d\x6b\x33\x57\x34\x74\x64\x48\x47','\x68\x33\x53\x37\x72\x53\x6b\x76\x45\x6d\x6f\x4f\x57\x52\x4f','\x57\x4f\x68\x63\x4b\x76\x5a\x64\x50\x6d\x6b\x58','\x57\x52\x6c\x63\x4a\x38\x6f\x38\x67\x38\x6b\x4f','\x6f\x43\x6b\x30\x57\x37\x64\x64\x49\x43\x6b\x6b\x46\x6d\x6f\x43\x57\x37\x56\x63\x4d\x47','\x57\x37\x37\x64\x54\x53\x6b\x7a\x57\x37\x56\x64\x55\x71','\x57\x36\x4c\x46\x62\x38\x6b\x74\x71\x38\x6f\x4d\x71\x71','\x79\x43\x6b\x72\x74\x66\x4f','\x45\x6d\x6b\x69\x77\x4b\x65','\x57\x51\x56\x63\x4d\x53\x6b\x64\x46\x4d\x69','\x66\x43\x6f\x32\x6b\x53\x6f\x58\x71\x47','\x46\x4b\x68\x63\x4c\x38\x6f\x4c\x57\x51\x4a\x64\x4f\x38\x6b\x4c','\x67\x65\x70\x63\x52\x43\x6f\x65\x57\x4f\x47','\x6e\x30\x68\x64\x48\x43\x6b\x57\x64\x61','\x65\x65\x50\x6a\x57\x35\x74\x63\x4b\x31\x44\x48','\x74\x6d\x6f\x62\x46\x38\x6f\x6a','\x70\x32\x4e\x64\x55\x43\x6f\x4f\x6e\x43\x6f\x6b\x79\x64\x38','\x44\x38\x6f\x78\x67\x47','\x6c\x61\x4e\x63\x4d\x53\x6b\x66\x57\x35\x75','\x70\x43\x6f\x61\x44\x53\x6f\x61\x57\x52\x43','\x57\x50\x46\x63\x53\x63\x37\x63\x49\x31\x74\x63\x53\x72\x65','\x57\x37\x37\x63\x4d\x38\x6f\x6d\x57\x50\x53\x56\x57\x36\x6d\x79\x57\x51\x65','\x6a\x38\x6b\x45\x6d\x43\x6b\x78\x57\x34\x38','\x77\x75\x6c\x63\x4c\x6d\x6b\x37\x63\x72\x47\x79','\x57\x4f\x68\x64\x55\x4c\x4a\x64\x4e\x64\x4b','\x78\x38\x6b\x5a\x79\x47','\x65\x53\x6b\x4d\x62\x6d\x6b\x6f\x57\x37\x75','\x79\x38\x6b\x37\x7a\x4d\x64\x63\x4a\x57','\x57\x36\x53\x53\x57\x35\x56\x63\x47\x33\x79','\x44\x53\x6f\x76\x57\x4f\x6c\x64\x4c\x59\x76\x64\x6e\x57','\x70\x30\x44\x64','\x67\x38\x6f\x51\x57\x35\x66\x74\x77\x6d\x6b\x6b\x57\x51\x42\x63\x54\x38\x6b\x34\x57\x52\x72\x30\x57\x36\x4f','\x57\x4f\x39\x58\x57\x34\x42\x63\x47\x77\x30\x32\x76\x38\x6f\x75','\x72\x43\x6b\x31\x79\x43\x6f\x46\x57\x34\x53','\x7a\x43\x6f\x78\x57\x50\x6c\x64\x54\x5a\x79\x6d\x6b\x38\x6b\x59','\x75\x6d\x6f\x63\x63\x53\x6f\x75\x41\x57','\x7a\x43\x6b\x30\x73\x53\x6f\x72\x57\x4f\x6a\x78\x57\x35\x30','\x57\x51\x62\x6c\x6c\x53\x6f\x62\x43\x53\x6f\x6c\x43\x43\x6b\x66','\x57\x35\x56\x64\x52\x6d\x6b\x2b\x75\x38\x6f\x47\x57\x52\x50\x54\x6d\x57','\x62\x68\x6a\x7a\x57\x34\x4e\x63\x56\x61','\x43\x4c\x4e\x63\x4d\x4c\x78\x63\x49\x71','\x46\x4b\x50\x42\x6e\x53\x6f\x65\x68\x45\x6b\x62\x55\x4a\x34','\x57\x4f\x42\x63\x55\x53\x6b\x73\x6c\x4e\x58\x74\x57\x34\x46\x64\x48\x57','\x57\x36\x52\x64\x54\x32\x57\x6d\x43\x4e\x57\x5a\x57\x50\x4b','\x57\x34\x38\x2f\x57\x35\x37\x63\x56\x4d\x38','\x7a\x38\x6b\x50\x57\x37\x48\x6a\x73\x71','\x61\x38\x6b\x6f\x64\x4a\x4e\x64\x51\x61','\x72\x77\x66\x46\x61\x65\x48\x38\x68\x47','\x57\x36\x37\x64\x53\x6d\x6b\x59\x57\x34\x68\x64\x4c\x53\x6f\x31\x57\x34\x42\x64\x4a\x57','\x6b\x48\x6d\x69\x41\x6d\x6b\x74\x64\x4c\x35\x79\x65\x6d\x6f\x4d\x57\x35\x61\x68\x57\x36\x79','\x57\x50\x6c\x63\x4f\x68\x74\x64\x4c\x43\x6b\x4d\x44\x75\x7a\x71','\x43\x53\x6f\x6a\x57\x51\x64\x64\x47\x63\x61','\x44\x31\x4f\x45\x57\x36\x4b\x4e\x42\x76\x58\x6e','\x62\x4c\x62\x69\x57\x37\x4b','\x42\x6d\x6b\x6d\x42\x65\x5a\x63\x4f\x71','\x79\x6d\x6b\x49\x7a\x43\x6f\x65\x57\x4f\x72\x45','\x7a\x53\x6f\x42\x63\x38\x6f\x79','\x6b\x57\x33\x63\x4b\x6d\x6b\x7a\x57\x36\x53','\x57\x50\x56\x63\x4f\x43\x6f\x33\x67\x43\x6b\x7a\x57\x37\x79\x47\x76\x61','\x6e\x71\x76\x69\x57\x51\x6e\x58\x70\x59\x6a\x52\x57\x50\x74\x63\x47\x68\x4b\x55\x57\x52\x75','\x61\x31\x4e\x64\x49\x43\x6b\x6e\x65\x6d\x6f\x50\x75\x77\x53','\x57\x4f\x46\x63\x52\x43\x6f\x49\x65\x43\x6b\x55','\x69\x65\x4b\x4c\x70\x43\x6b\x4e\x6f\x30\x4c\x48','\x41\x43\x6f\x50\x57\x51\x57','\x57\x4f\x33\x64\x50\x66\x5a\x64\x52\x59\x68\x64\x4e\x43\x6b\x31\x69\x61','\x57\x35\x56\x63\x49\x43\x6f\x4a\x57\x52\x75\x7a','\x57\x51\x5a\x64\x49\x6d\x6f\x4f\x57\x51\x7a\x52','\x75\x53\x6b\x4f\x57\x50\x65\x56\x66\x61','\x45\x63\x78\x63\x55\x53\x6f\x34\x57\x35\x4a\x64\x47\x38\x6b\x50\x65\x71','\x57\x35\x76\x4d\x66\x53\x6f\x76\x57\x50\x69','\x62\x4c\x76\x45','\x57\x4f\x48\x2f\x74\x43\x6f\x6f\x57\x35\x62\x4e','\x57\x4f\x52\x63\x53\x43\x6b\x77\x79\x77\x48\x67\x57\x35\x30','\x57\x51\x5a\x64\x55\x38\x6f\x79\x57\x51\x30','\x57\x35\x53\x2f\x57\x35\x56\x63\x47\x72\x58\x5a\x57\x4f\x58\x64','\x6f\x43\x6b\x73\x6e\x49\x71','\x68\x4b\x7a\x45','\x74\x43\x6b\x4e\x57\x37\x62\x70\x75\x57','\x76\x33\x4b\x59\x61\x53\x6b\x4f\x42\x38\x6b\x55\x57\x4f\x43','\x79\x6d\x6b\x53\x57\x35\x58\x66\x76\x6d\x6f\x58\x57\x36\x4f','\x65\x53\x6f\x30\x76\x53\x6f\x48\x57\x4f\x69','\x44\x43\x6b\x4f\x57\x36\x7a\x6a\x73\x43\x6f\x54\x57\x37\x42\x63\x51\x57','\x57\x50\x56\x63\x51\x53\x6b\x66\x76\x32\x34','\x57\x37\x5a\x64\x4b\x6d\x6f\x57\x44\x49\x2f\x64\x54\x53\x6f\x48\x57\x35\x69','\x69\x77\x2f\x64\x56\x43\x6b\x54','\x6a\x4b\x48\x35\x57\x35\x74\x63\x4f\x57','\x46\x4e\x75\x39\x57\x34\x4b\x72','\x57\x52\x6e\x71\x44\x6d\x6b\x44\x62\x38\x6f\x37\x64\x43\x6f\x7a','\x57\x50\x2f\x63\x53\x48\x64\x63\x56\x4b\x43','\x66\x73\x44\x50\x57\x37\x4a\x64\x55\x43\x6b\x34\x6d\x38\x6b\x35\x62\x74\x5a\x64\x4e\x49\x5a\x64\x52\x57','\x57\x36\x2f\x64\x49\x74\x62\x70\x57\x52\x69\x39\x43\x57','\x57\x36\x68\x64\x56\x43\x6b\x4f','\x43\x77\x6a\x65\x62\x43\x6b\x6a','\x57\x51\x5a\x63\x56\x33\x71','\x6a\x38\x6f\x76\x61\x53\x6f\x6b\x6f\x61','\x46\x38\x6f\x6d\x57\x50\x78\x64\x4f\x63\x48\x62\x6c\x57','\x6b\x43\x6f\x57\x44\x38\x6f\x4f\x57\x50\x61\x53\x75\x58\x79','\x57\x52\x50\x41\x57\x52\x46\x64\x52\x4b\x52\x63\x4b\x76\x4a\x64\x4c\x6d\x6b\x66\x57\x50\x4a\x63\x47\x72\x71','\x68\x43\x6b\x49\x42\x4e\x53\x39','\x63\x6d\x6f\x35\x45\x6d\x6f\x66\x57\x50\x71','\x45\x38\x6b\x75\x74\x4b\x46\x63\x4c\x57\x4c\x78','\x57\x4f\x56\x63\x49\x6d\x6b\x77\x73\x75\x47','\x57\x50\x4a\x64\x52\x31\x6d','\x69\x6d\x6f\x39\x68\x43\x6f\x42\x69\x57','\x46\x53\x6b\x75\x77\x53\x6f\x4b\x57\x37\x30','\x57\x37\x42\x64\x4f\x67\x30\x69\x79\x32\x43','\x6f\x4d\x64\x63\x56\x53\x6f\x37\x57\x50\x4e\x64\x4b\x38\x6b\x4c','\x7a\x4c\x76\x6c\x6f\x38\x6f\x57\x57\x35\x44\x50\x71\x47','\x68\x32\x66\x6d\x6b\x6d\x6f\x73','\x6d\x43\x6f\x64\x66\x43\x6f\x36\x74\x6d\x6b\x72\x66\x57','\x43\x68\x4e\x63\x49\x6d\x6b\x57\x62\x61','\x45\x58\x35\x36\x46\x6d\x6f\x48\x45\x47\x58\x65\x79\x38\x6b\x49\x57\x35\x33\x63\x50\x48\x6d','\x61\x6d\x6f\x6d\x57\x52\x48\x45\x6d\x38\x6f\x70','\x42\x6d\x6f\x58\x71\x53\x6f\x2b\x68\x63\x37\x63\x4e\x67\x79','\x57\x4f\x64\x63\x4f\x43\x6f\x33\x64\x38\x6b\x4f\x57\x37\x53','\x78\x4d\x31\x7a\x63\x4e\x54\x31\x63\x38\x6b\x74','\x6f\x6d\x6b\x75\x75\x6d\x6f\x74\x74\x63\x52\x63\x51\x6d\x6f\x70','\x7a\x75\x62\x61\x6d\x53\x6b\x50\x57\x36\x38','\x70\x64\x5a\x63\x53\x43\x6b\x71\x57\x34\x79','\x41\x38\x6b\x6b\x45\x6d\x6f\x4e\x57\x36\x57','\x61\x43\x6b\x36\x73\x6d\x6b\x5a\x57\x37\x74\x64\x4a\x43\x6b\x48\x78\x47','\x57\x35\x4a\x63\x51\x6d\x6f\x71\x57\x52\x43\x35\x72\x53\x6b\x46','\x57\x50\x46\x63\x52\x43\x6f\x4c\x68\x6d\x6b\x50\x57\x37\x38\x4a\x46\x47','\x71\x68\x53\x30','\x67\x43\x6f\x41\x71\x38\x6f\x58\x57\x50\x47','\x6c\x75\x7a\x70\x6c\x43\x6f\x75','\x62\x53\x6f\x63\x61\x6d\x6f\x55\x69\x61','\x57\x4f\x66\x48\x57\x52\x5a\x64\x4b\x65\x75\x4b\x57\x35\x50\x72\x57\x34\x6c\x64\x50\x49\x56\x64\x4d\x6d\x6f\x71','\x63\x4b\x4e\x64\x56\x43\x6b\x54\x6f\x53\x6f\x53\x75\x57\x53','\x6f\x32\x64\x63\x52\x38\x6f\x4c\x57\x50\x56\x64\x4d\x61','\x6b\x47\x4e\x63\x54\x38\x6b\x44\x57\x37\x6d\x61\x6e\x38\x6f\x57','\x67\x73\x39\x47\x57\x37\x4e\x64\x55\x6d\x6f\x6e\x7a\x43\x6b\x69\x6c\x64\x33\x64\x54\x71','\x57\x36\x6c\x64\x48\x43\x6b\x47','\x6a\x32\x42\x63\x51\x38\x6f\x4b\x57\x4f\x53','\x57\x4f\x6a\x5a\x74\x38\x6f\x6d\x57\x35\x43','\x64\x38\x6f\x36\x71\x53\x6f\x73\x57\x4f\x6d\x4f\x77\x66\x30','\x77\x6d\x6b\x56\x76\x6d\x6f\x62\x57\x35\x58\x4a\x57\x34\x47','\x70\x53\x6b\x79\x45\x74\x2f\x64\x53\x4b\x37\x64\x51\x58\x61','\x45\x74\x5a\x64\x54\x53\x6f\x4a\x57\x51\x4a\x64\x4d\x6d\x6b\x71\x67\x66\x43','\x44\x4d\x35\x78\x69\x38\x6f\x64','\x57\x51\x56\x63\x55\x33\x33\x64\x47\x38\x6b\x57','\x57\x35\x70\x63\x4f\x38\x6f\x2b\x78\x43\x6b\x37\x57\x36\x66\x4d\x44\x47','\x7a\x53\x6f\x49\x57\x50\x46\x64\x4b\x53\x6b\x51\x43\x43\x6f\x49\x57\x34\x65','\x65\x75\x62\x70\x57\x35\x37\x63\x47\x4c\x66\x4e\x57\x36\x75','\x7a\x6d\x6f\x76\x57\x50\x56\x64\x54\x59\x50\x56\x6b\x43\x6b\x2b','\x45\x38\x6f\x42\x64\x57','\x57\x35\x69\x2b\x57\x34\x56\x63\x49\x58\x34','\x57\x50\x6c\x63\x51\x43\x6f\x5a','\x65\x53\x6f\x4e\x77\x43\x6f\x2b\x57\x51\x53','\x74\x53\x6f\x57\x57\x52\x54\x70\x69\x53\x6f\x43\x69\x75\x43','\x7a\x6d\x6b\x79\x72\x30\x37\x63\x47\x47\x30','\x57\x52\x33\x63\x4c\x53\x6b\x49\x73\x31\x35\x4e\x57\x37\x37\x63\x4c\x47','\x79\x68\x78\x63\x49\x77\x6c\x63\x49\x53\x6b\x44\x6e\x71\x4b','\x63\x53\x6b\x4a\x67\x76\x75\x33\x57\x52\x69\x79\x6a\x61','\x43\x43\x6f\x45\x57\x50\x71','\x6a\x4b\x69\x75\x6b\x6d\x6b\x36\x6a\x76\x4c\x58','\x70\x32\x74\x63\x56\x6d\x6f\x35','\x68\x65\x4e\x63\x4b\x43\x6f\x41\x57\x51\x53','\x76\x38\x6b\x69\x45\x38\x6f\x67\x57\x50\x35\x4d\x57\x37\x42\x64\x4e\x47','\x72\x6d\x6b\x52\x57\x4f\x4f\x63\x62\x43\x6f\x6e','\x70\x62\x6c\x63\x4c\x43\x6b\x6e\x57\x36\x30','\x63\x61\x37\x63\x4e\x43\x6b\x37\x57\x37\x38','\x45\x38\x6f\x4f\x57\x51\x56\x64\x49\x43\x6b\x5a\x45\x38\x6f\x49','\x57\x4f\x52\x63\x50\x59\x34','\x57\x36\x64\x64\x4b\x53\x6b\x31\x6b\x77\x37\x64\x50\x6d\x6f\x4c\x57\x36\x65','\x77\x53\x6f\x44\x79\x6d\x6f\x65\x70\x57','\x57\x4f\x46\x63\x51\x38\x6f\x4b','\x69\x4b\x53\x55','\x6e\x48\x37\x63\x4c\x38\x6b\x70\x57\x36\x4f\x6b','\x77\x6d\x6b\x37\x57\x4f\x79\x74\x64\x38\x6f\x72','\x78\x77\x42\x63\x49\x64\x4a\x63\x50\x61','\x69\x4c\x75\x55','\x74\x6d\x6b\x7a\x57\x51\x38\x79\x6f\x61','\x57\x37\x74\x64\x4c\x48\x62\x6e','\x41\x77\x61\x63\x57\x50\x2f\x63\x48\x57','\x57\x37\x74\x64\x4d\x75\x46\x64\x4a\x62\x6e\x6b\x65\x53\x6b\x59','\x71\x43\x6b\x55\x71\x43\x6f\x41\x57\x35\x50\x55\x57\x35\x71','\x63\x4a\x37\x63\x54\x38\x6b\x33\x57\x34\x34\x57\x64\x43\x6f\x77','\x70\x58\x78\x63\x4d\x53\x6b\x6e\x57\x52\x61','\x70\x4a\x52\x63\x49\x43\x6b\x56\x57\x34\x57','\x62\x33\x50\x53\x67\x6d\x6f\x44','\x6b\x38\x6f\x56\x70\x43\x6f\x2f\x6e\x6d\x6f\x56','\x6f\x38\x6b\x50\x68\x47\x74\x64\x48\x57','\x57\x4f\x64\x63\x56\x38\x6b\x64\x46\x68\x7a\x74\x57\x35\x37\x64\x55\x71','\x76\x33\x5a\x63\x51\x47\x42\x63\x47\x71','\x57\x50\x37\x63\x4f\x75\x6c\x64\x4b\x38\x6b\x4c','\x6d\x4b\x39\x69\x6b\x43\x6f\x66\x57\x36\x47','\x57\x35\x61\x48\x57\x37\x68\x63\x55\x62\x5a\x64\x54\x65\x70\x64\x50\x61','\x62\x68\x66\x45\x57\x36\x6c\x63\x48\x4c\x31\x4e\x57\x35\x69','\x70\x31\x50\x77\x69\x53\x6f\x69','\x6d\x53\x6b\x66\x68\x47\x52\x64\x49\x61','\x66\x30\x48\x45','\x67\x30\x7a\x44','\x66\x53\x6f\x42\x57\x50\x39\x5a\x70\x57','\x74\x30\x71\x65\x57\x50\x33\x63\x51\x71','\x77\x53\x6f\x72\x42\x43\x6f\x76\x6f\x71\x37\x63\x50\x4d\x30','\x67\x76\x75\x6e\x57\x52\x4e\x64\x4f\x53\x6f\x53\x70\x38\x6b\x77','\x63\x6d\x6f\x56\x43\x38\x6f\x2f\x57\x52\x57','\x63\x43\x6b\x4b\x64\x43\x6b\x58\x57\x36\x52\x63\x4a\x6d\x6b\x39','\x45\x31\x48\x2f\x6d\x38\x6f\x70\x76\x62\x50\x37','\x57\x35\x46\x63\x4f\x6d\x6f\x6d\x57\x50\x30\x51\x71\x61','\x44\x66\x56\x63\x49\x48\x70\x63\x55\x57','\x6d\x6d\x6b\x30\x57\x37\x4e\x63\x4a\x53\x6f\x51\x76\x38\x6f\x49\x57\x35\x52\x63\x4d\x61\x6e\x44','\x44\x65\x6a\x76\x70\x38\x6f\x73','\x46\x4c\x43\x7a\x57\x37\x71\x4d','\x43\x43\x6f\x75\x57\x52\x4e\x64\x52\x53\x6b\x4f','\x57\x52\x33\x63\x4a\x38\x6b\x74\x7a\x31\x61','\x57\x35\x78\x64\x48\x43\x6b\x61\x6f\x78\x75','\x46\x38\x6f\x6a\x70\x53\x6f\x63\x75\x73\x78\x63\x54\x57','\x57\x35\x64\x63\x53\x53\x6f\x70\x57\x50\x61\x39\x76\x57','\x45\x67\x6c\x63\x4d\x57','\x46\x38\x6f\x6b\x57\x50\x78\x64\x56\x67\x4c\x57\x64\x43\x6f\x37','\x57\x51\x42\x64\x4e\x72\x4b\x44\x57\x4f\x6d\x71\x71\x38\x6f\x53','\x71\x53\x6b\x2f\x57\x50\x71','\x45\x6d\x6b\x4b\x41\x6d\x6f\x36\x57\x4f\x71','\x57\x37\x4e\x64\x53\x43\x6b\x56\x57\x34\x68\x64\x4c\x57','\x57\x51\x64\x63\x4e\x73\x56\x63\x56\x68\x53','\x42\x38\x6b\x62\x57\x51\x47\x57\x6a\x43\x6f\x58\x57\x52\x64\x63\x49\x47','\x6c\x48\x74\x63\x4b\x53\x6b\x6e\x57\x37\x61\x54\x6a\x6d\x6f\x4e','\x6f\x68\x46\x63\x56\x71','\x57\x34\x6c\x64\x52\x4d\x52\x64\x52\x63\x62\x52\x42\x43\x6b\x42','\x57\x50\x56\x64\x47\x43\x6f\x32\x57\x50\x66\x66\x7a\x59\x53\x4d','\x65\x65\x58\x78\x57\x37\x74\x63\x47\x71','\x76\x4b\x6a\x74\x57\x52\x68\x63\x4e\x75\x79\x50\x57\x34\x79','\x57\x50\x56\x63\x4f\x6d\x6b\x73\x79\x4e\x38','\x46\x6d\x6f\x46\x57\x50\x37\x64\x54\x74\x62\x69','\x72\x77\x66\x63\x63\x57','\x43\x38\x6b\x53\x57\x37\x76\x43','\x69\x6d\x6b\x6f\x44\x4e\x65\x41\x57\x50\x75\x30\x76\x61','\x70\x67\x5a\x63\x55\x53\x6f\x37\x57\x50\x30','\x57\x50\x2f\x63\x4f\x43\x6f\x34\x67\x53\x6b\x2f\x57\x37\x53','\x6c\x48\x46\x63\x4e\x6d\x6f\x65\x57\x37\x79\x68\x6d\x38\x6f\x4d','\x6f\x32\x74\x63\x52\x6d\x6f\x37\x57\x50\x33\x64\x4c\x6d\x6f\x47\x67\x57','\x44\x77\x69\x73\x70\x6d\x6b\x64\x67\x4c\x4b','\x57\x37\x53\x52\x57\x34\x5a\x63\x53\x64\x47','\x62\x53\x6b\x35\x77\x65\x38\x34\x57\x52\x34\x70\x71\x47','\x57\x52\x33\x64\x49\x38\x6f\x75\x57\x50\x31\x37','\x45\x6d\x6b\x70\x72\x4b\x52\x63\x4b\x58\x7a\x78\x57\x36\x47','\x42\x6d\x6b\x57\x57\x51\x65\x68\x6e\x57','\x69\x77\x4b\x7a\x67\x43\x6b\x36','\x57\x50\x68\x63\x48\x61\x33\x63\x54\x68\x4b','\x57\x37\x33\x64\x49\x66\x43\x68\x77\x61','\x77\x75\x74\x63\x49\x53\x6b\x6b\x64\x71\x4b','\x57\x50\x74\x63\x48\x57\x4a\x63\x52\x31\x71','\x61\x53\x6b\x33\x64\x6d\x6b\x32\x57\x37\x42\x64\x4a\x43\x6b\x50\x78\x47','\x75\x30\x5a\x63\x48\x6d\x6b\x73\x64\x76\x56\x49\x47\x41\x71\x55','\x57\x4f\x52\x64\x55\x31\x56\x64\x4f\x5a\x53','\x75\x68\x34\x47\x57\x35\x79\x72','\x57\x36\x53\x53\x57\x34\x78\x63\x55\x33\x61','\x57\x51\x56\x64\x47\x38\x6f\x44\x57\x50\x44\x43\x57\x36\x4b\x46\x57\x51\x34','\x57\x35\x62\x34\x63\x43\x6b\x77\x71\x57','\x57\x35\x30\x31\x57\x36\x78\x63\x48\x49\x7a\x33\x57\x4f\x72\x51','\x62\x38\x6b\x32\x64\x61','\x43\x6d\x6f\x56\x57\x4f\x6c\x64\x53\x53\x6b\x5a','\x64\x53\x6b\x64\x6f\x38\x6f\x55\x61\x49\x37\x63\x4a\x78\x57\x4b','\x43\x31\x50\x2f\x6d\x53\x6f\x47\x6e\x71\x35\x2b','\x57\x50\x78\x64\x52\x4c\x4e\x64\x52\x74\x56\x64\x55\x47','\x77\x43\x6f\x71\x6c\x6d\x6b\x6a\x69\x48\x70\x63\x52\x72\x38','\x72\x77\x43\x75\x57\x51\x2f\x63\x4e\x57','\x6f\x77\x70\x64\x52\x6d\x6b\x53\x62\x53\x6f\x7a\x7a\x58\x47','\x70\x4d\x62\x38\x57\x52\x4e\x64\x4b\x61','\x57\x52\x2f\x63\x52\x38\x6f\x53\x57\x36\x6c\x64\x56\x6d\x6f\x34\x57\x37\x4a\x64\x53\x38\x6f\x52','\x64\x53\x6f\x48\x44\x38\x6b\x45','\x79\x4c\x53\x74\x57\x37\x34\x58','\x6b\x72\x6c\x63\x47\x38\x6b\x6e'];_0x1c43=function(){return _0xb6a759;};return _0x1c43();}function _0x1653(_0x536146,_0x69878d){_0x536146=_0x536146-(-0x1*-0x1643+-0x4f9+-0x1000);var _0x5efe71=_0x1c43();var _0x971f18=_0x5efe71[_0x536146];if(_0x1653['\x55\x65\x7a\x5a\x42\x6f']===undefined){var _0x26741c=function(_0x293007){var _0x1af965='\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';var _0x297349='',_0x2e3a41='',_0x3c1ce6=_0x297349+_0x26741c,_0x31c517=(''+function(){return-0x14c8+-0x1a0+0x8*0x2cd;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')!==-(0x1*-0x12b3+-0x9fe+-0xe59*-0x2);for(var _0x5092bf=0x1*-0x70+0x36d+0x5*-0x99,_0x50bd9b,_0x27ba8,_0x5c0e61=-0x2ba*-0xa+-0x1bb*-0x8+0x1*-0x291c;_0x27ba8=_0x293007['\x63\x68\x61\x72\x41\x74'](_0x5c0e61++);~_0x27ba8&&(_0x50bd9b=_0x5092bf%(0xe63+0x1*0x1cb1+0xd4*-0x34)?_0x50bd9b*(0x1967*0x1+-0x10c5*0x1+0x2*-0x431)+_0x27ba8:_0x27ba8,_0x5092bf++%(-0x26a1+-0x1*0x1387+0x3a2c))?_0x297349+=_0x31c517||_0x3c1ce6['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5c0e61+(-0xe0d*-0x1+0x169d+0x494*-0x8))-(-0xe*-0x17d+-0x2236+-0x11*-0xca)!==-0x1f13+0x1da5+0x16e?String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0xe97*0x2+-0x12*-0xac+0x1*0x1215&_0x50bd9b>>(-(-0x9*0x11+-0x189e+0x1939)*_0x5092bf&-0x4bc+-0x2207*-0x1+-0x1d45*0x1)):_0x5092bf:0x1f11+-0x1a90+-0x481){_0x27ba8=_0x1af965['\x69\x6e\x64\x65\x78\x4f\x66'](_0x27ba8);}for(var _0x527c70=-0x1f34*-0x1+-0x2db*0x3+-0x131*0x13,_0x23b8ab=_0x297349['\x6c\x65\x6e\x67\x74\x68'];_0x527c70<_0x23b8ab;_0x527c70++){_0x2e3a41+='\x25'+('\x30\x30'+_0x297349['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x527c70)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x8a4+0x177e+0x335*-0xa))['\x73\x6c\x69\x63\x65'](-(0x1355+0x1265+-0x25b8));}return decodeURIComponent(_0x2e3a41);};var _0x11f1ec=function(_0x2d8154,_0x3b6ff6){var _0x1827e7=[],_0x4a2374=0x49*-0x73+0x30*0x54+0x1*0x110b,_0x4ac455,_0x1212cb='';_0x2d8154=_0x26741c(_0x2d8154);var _0x5ed3ad;for(_0x5ed3ad=-0x6*0x346+0x1*-0x8cd+0x1c71;_0x5ed3ad<0xb2*0x22+0x399+-0x1a3d;_0x5ed3ad++){_0x1827e7[_0x5ed3ad]=_0x5ed3ad;}for(_0x5ed3ad=-0x16ba*0x1+0x917+-0xda3*-0x1;_0x5ed3ad<-0x1*-0x161b+0x20d1+0x1ed*-0x1c;_0x5ed3ad++){_0x4a2374=(_0x4a2374+_0x1827e7[_0x5ed3ad]+_0x3b6ff6['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x5ed3ad%_0x3b6ff6['\x6c\x65\x6e\x67\x74\x68']))%(-0x28*0xa6+0xa*-0xb1+-0x21da*-0x1),_0x4ac455=_0x1827e7[_0x5ed3ad],_0x1827e7[_0x5ed3ad]=_0x1827e7[_0x4a2374],_0x1827e7[_0x4a2374]=_0x4ac455;}_0x5ed3ad=0xc7c+0x611+-0x128d,_0x4a2374=0x3d3*-0x9+-0x24dc+0x4747*0x1;for(var _0x3e524d=0x1c5c+0x30d*0x2+0x16*-0x191;_0x3e524d<_0x2d8154['\x6c\x65\x6e\x67\x74\x68'];_0x3e524d++){_0x5ed3ad=(_0x5ed3ad+(-0xde5*-0x1+0x3e9+-0x1f*0x93))%(-0x18a6+0x1*0x13ed+0x5b9),_0x4a2374=(_0x4a2374+_0x1827e7[_0x5ed3ad])%(-0x12d9*0x1+0xf9d+0x1*0x43c),_0x4ac455=_0x1827e7[_0x5ed3ad],_0x1827e7[_0x5ed3ad]=_0x1827e7[_0x4a2374],_0x1827e7[_0x4a2374]=_0x4ac455,_0x1212cb+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2d8154['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3e524d)^_0x1827e7[(_0x1827e7[_0x5ed3ad]+_0x1827e7[_0x4a2374])%(0x5b5*0x4+-0xde1+0xb*-0xb9)]);}return _0x1212cb;};_0x1653['\x77\x49\x48\x76\x78\x73']=_0x11f1ec,_0x1653['\x6a\x58\x56\x55\x5a\x4f']={},_0x1653['\x55\x65\x7a\x5a\x42\x6f']=!![];}var _0x3831b4=_0x5efe71[-0x1*-0x10af+-0x240c+0x135d*0x1],_0x4965eb=_0x536146+_0x3831b4,_0x5e7a26=_0x1653['\x6a\x58\x56\x55\x5a\x4f'][_0x4965eb];if(!_0x5e7a26){if(_0x1653['\x54\x66\x47\x49\x53\x78']===undefined){var _0x26ed1b=function(_0x3642ca){this['\x70\x72\x47\x6c\x73\x47']=_0x3642ca,this['\x4e\x43\x59\x51\x74\x77']=[0xc*0x1c1+0x228c+-0x3797,0x14*-0x7f+-0x99*-0x25+-0xc31,0x471*0x7+0x564+0x1*-0x247b],this['\x78\x77\x49\x42\x4c\x75']=function(){return'\x6e\x65\x77\x53\x74\x61\x74\x65';},this['\x79\x75\x55\x43\x4e\x4a']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['\x68\x75\x74\x4d\x6a\x48']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};_0x26ed1b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x68\x4c\x50\x50\x70\x6a']=function(){var _0x48b5cb=new RegExp(this['\x79\x75\x55\x43\x4e\x4a']+this['\x68\x75\x74\x4d\x6a\x48']),_0x39400f=_0x48b5cb['\x74\x65\x73\x74'](this['\x78\x77\x49\x42\x4c\x75']['\x74\x6f\x53\x74\x72\x69\x6e\x67']())?--this['\x4e\x43\x59\x51\x74\x77'][0x1eb*0x9+-0x17cb+0x689]:--this['\x4e\x43\x59\x51\x74\x77'][0x1*-0x5f3+0x16e+-0x59*-0xd];return this['\x52\x4a\x64\x6d\x47\x61'](_0x39400f);},_0x26ed1b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x52\x4a\x64\x6d\x47\x61']=function(_0x55077d){if(!Boolean(~_0x55077d))return _0x55077d;return this['\x46\x6e\x51\x59\x58\x76'](this['\x70\x72\x47\x6c\x73\x47']);},_0x26ed1b['\x70\x72\x6f\x74\x6f\x74\x79\x70\x65']['\x46\x6e\x51\x59\x58\x76']=function(_0xb55177){for(var _0xa8e3f5=-0x25dd+0x95*0x2b+0xcd6,_0x3916f1=this['\x4e\x43\x59\x51\x74\x77']['\x6c\x65\x6e\x67\x74\x68'];_0xa8e3f5<_0x3916f1;_0xa8e3f5++){this['\x4e\x43\x59\x51\x74\x77']['\x70\x75\x73\x68'](Math['\x72\x6f\x75\x6e\x64'](Math['\x72\x61\x6e\x64\x6f\x6d']())),_0x3916f1=this['\x4e\x43\x59\x51\x74\x77']['\x6c\x65\x6e\x67\x74\x68'];}return _0xb55177(this['\x4e\x43\x59\x51\x74\x77'][0x24fc+-0x37*0x5f+-0x1093]);},(''+function(){return-0xac8+0xf*-0xd7+0x357*0x7;})['\x69\x6e\x64\x65\x78\x4f\x66']('\x0a')===-(0x1b78+-0xbd7+0x32*-0x50)&&new _0x26ed1b(_0x1653)['\x68\x4c\x50\x50\x70\x6a'](),_0x1653['\x54\x66\x47\x49\x53\x78']=!![];}_0x971f18=_0x1653['\x77\x49\x48\x76\x78\x73'](_0x971f18,_0x69878d),_0x1653['\x6a\x58\x56\x55\x5a\x4f'][_0x4965eb]=_0x971f18;}else _0x971f18=_0x5e7a26;return _0x971f18;}function _0x379166(){var _0x372d87=_0x4d3d79,_0x5809aa={};_0x5809aa[_0x372d87(0x21d,'\x50\x48\x70\x71')]=_0x372d87(0x1cd,'\x72\x33\x66\x5e')+_0x372d87(0x162,'\x36\x59\x47\x55')+_0x372d87(0x1e8,'\x31\x57\x28\x6e');var _0x4e5801=_0x5809aa;return _0x51b3e1(_0x4e5801[_0x372d87(0x1df,'\x40\x66\x5e\x6f')],0x1c8d7*-0x1+0x2*-0x457a+0x33e2b);}function _0x5cef5e(){var _0x64d261=_0x4d3d79,_0x51f7b6={'\x41\x4b\x6a\x66\x63':function(_0x37b434){return _0x37b434();},'\x64\x45\x6e\x79\x62':function(_0x5067f8,_0x510de7){return _0x5067f8<_0x510de7;},'\x78\x71\x6f\x56\x76':function(_0x27963f,_0x411b71){return _0x27963f!==_0x411b71;},'\x5a\x61\x50\x62\x77':_0x64d261(0x278,'\x31\x57\x28\x6e'),'\x7a\x66\x59\x4f\x66':_0x64d261(0x1fd,'\x40\x66\x5e\x6f'),'\x59\x50\x4a\x56\x6c':function(_0x11a9d3,_0x49f305){return _0x11a9d3(_0x49f305);},'\x46\x78\x75\x64\x48':function(_0x1b4009,_0x23e50e){return _0x1b4009-_0x23e50e;},'\x4c\x6a\x68\x6d\x4c':function(_0x568a99,_0x52d553){return _0x568a99===_0x52d553;},'\x72\x57\x62\x58\x4e':_0x64d261(0x1c9,'\x39\x49\x23\x56'),'\x73\x6e\x42\x56\x4b':_0x64d261(0x252,'\x43\x77\x4f\x64')+_0x64d261(0x176,'\x58\x47\x58\x62'),'\x48\x47\x51\x74\x5a':_0x64d261(0x1f7,'\x50\x41\x7a\x48'),'\x78\x76\x76\x4f\x74':_0x64d261(0x1b9,'\x33\x79\x78\x58'),'\x62\x73\x50\x52\x64':_0x64d261(0x276,'\x6e\x61\x6e\x4b'),'\x43\x58\x50\x73\x71':function(_0x45b02a,_0x187017){return _0x45b02a||_0x187017;},'\x45\x4e\x4c\x70\x49':function(_0x107c9b,_0x30eb82){return _0x107c9b!==_0x30eb82;},'\x47\x71\x66\x4d\x44':_0x64d261(0x22e,'\x58\x47\x58\x62'),'\x49\x50\x4c\x78\x6f':function(_0xa512e2,_0x5ab240){return _0xa512e2(_0x5ab240);},'\x72\x4f\x4e\x46\x65':'\x78\x45\x4f\x67\x53','\x67\x51\x45\x4a\x64':_0x64d261(0x1ac,'\x4f\x6d\x41\x69')+_0x64d261(0x247,'\x79\x32\x4d\x79')+_0x64d261(0x232,'\x6e\x61\x6e\x4b')+_0x64d261(0x1e6,'\x66\x44\x64\x59')+_0x64d261(0x1c4,'\x6d\x52\x7a\x62')+'\x64\x65\x64\x75\x70\x20\x64\x69'+_0x64d261(0x1a0,'\x72\x33\x66\x5e')+_0x64d261(0x18a,'\x35\x69\x4f\x79')+_0x64d261(0x1de,'\x62\x43\x29\x26')+_0x64d261(0x186,'\x54\x43\x63\x50')+_0x64d261(0x223,'\x4d\x28\x4b\x42')+_0x64d261(0x216,'\x53\x45\x71\x5e')+_0x64d261(0x1ca,'\x40\x66\x5e\x6f')+_0x64d261(0x188,'\x33\x5e\x25\x6e')+_0x64d261(0x237,'\x66\x61\x55\x69')+_0x64d261(0x1a3,'\x65\x24\x6b\x54'),'\x52\x75\x64\x53\x61':function(_0x1dcdea,_0xa7196b){return _0x1dcdea+_0xa7196b;},'\x76\x70\x4f\x69\x6b':_0x64d261(0x18f,'\x56\x45\x69\x78')+_0x64d261(0x17e,'\x4f\x31\x52\x68')+_0x64d261(0x24c,'\x33\x5e\x25\x6e')+_0x64d261(0x1f2,'\x36\x59\x47\x55')+_0x64d261(0x201,'\x79\x78\x70\x4d')};try{if(_0x51f7b6['\x4c\x6a\x68\x6d\x4c'](_0x51f7b6[_0x64d261(0x249,'\x48\x21\x37\x6b')],_0x64d261(0x235,'\x50\x41\x7a\x48')))_0x44c5ef[_0x64d261(0x1ed,'\x65\x73\x6e\x4b')](_0x19a824);else{const _0xb934de=_0x51f7b6[_0x64d261(0x183,'\x4f\x6d\x41\x69')](require,_0x51f7b6[_0x64d261(0x227,'\x43\x77\x4f\x64')])[_0x64d261(0x1ea,'\x66\x61\x55\x69')](_0x64d261(0x169,'\x65\x73\x6e\x4b')+_0x64d261(0x275,'\x79\x50\x38\x56')+_0x64d261(0x17a,'\x5a\x21\x71\x24')+'\x2d\x2d\x6a\x73\x6f\x6e\x20\x6e'+_0x64d261(0x244,'\x6d\x52\x7a\x62')+_0x64d261(0x1d8,'\x65\x24\x6b\x54')+_0x64d261(0x151,'\x50\x41\x7a\x48')+'\x66\x69\x6c\x65\x73\x20\x2d\x2d'+'\x6c\x69\x6d\x69\x74\x20\x35\x30',{'\x65\x6e\x63\x6f\x64\x69\x6e\x67':_0x51f7b6[_0x64d261(0x1f5,'\x57\x5b\x77\x54')],'\x74\x69\x6d\x65\x6f\x75\x74':_0x62aec0,'\x73\x74\x64\x69\x6f':[_0x51f7b6[_0x64d261(0x265,'\x40\x66\x5e\x6f')],_0x51f7b6[_0x64d261(0x255,'\x6d\x52\x7a\x62')],_0x51f7b6[_0x64d261(0x264,'\x66\x61\x55\x69')]],'\x6d\x61\x78\x42\x75\x66\x66\x65\x72':_0x136ad6}),_0x564ef1=JSON[_0x64d261(0x21f,'\x63\x46\x59\x5d')](_0x51f7b6[_0x64d261(0x16f,'\x63\x46\x59\x5d')](_0xb934de,'\x5b\x5d'));if(!Array[_0x64d261(0x210,'\x4d\x28\x4b\x42')](_0x564ef1))return[];return _0x564ef1[_0x64d261(0x175,'\x79\x50\x38\x56')](function(_0x549b87){var _0x4ba79b=_0x64d261;return{'\x6e\x75\x6d\x62\x65\x72':_0x549b87[_0x4ba79b(0x190,'\x40\x66\x5e\x6f')],'\x74\x69\x74\x6c\x65':_0x51f7b6[_0x4ba79b(0x1a5,'\x25\x30\x53\x74')](String,_0x549b87[_0x4ba79b(0x1d1,'\x33\x5e\x25\x6e')]||''),'\x68\x65\x61\x64\x52\x65\x66\x4e\x61\x6d\x65':String(_0x549b87[_0x4ba79b(0x270,'\x4d\x28\x4b\x42')+_0x4ba79b(0x16c,'\x7a\x69\x40\x79')]||''),'\x66\x69\x6c\x65\x73':Array[_0x4ba79b(0x21e,'\x6e\x57\x56\x51')](_0x549b87[_0x4ba79b(0x17d,'\x53\x45\x71\x5e')])?_0x549b87[_0x4ba79b(0x1ba,'\x50\x48\x70\x71')][_0x4ba79b(0x1b1,'\x57\x5b\x77\x54')](function(_0x1e83a6){var _0x40b320=_0x4ba79b,_0x196c40={'\x62\x4f\x52\x57\x69':function(_0x3f30a8){var _0x5d1f15=_0x1653;return _0x51f7b6[_0x5d1f15(0x15d,'\x25\x30\x53\x74')](_0x3f30a8);},'\x61\x49\x61\x45\x4b':function(_0x4b262c){var _0x7a8c2c=_0x1653;return _0x51f7b6[_0x7a8c2c(0x225,'\x4f\x31\x52\x68')](_0x4b262c);},'\x41\x4c\x59\x54\x49':function(_0x457490,_0x22531c){var _0x2c5639=_0x1653;return _0x51f7b6[_0x2c5639(0x17c,'\x6f\x5b\x45\x4d')](_0x457490,_0x22531c);}};if(_0x51f7b6[_0x40b320(0x23a,'\x62\x4f\x4c\x67')](_0x51f7b6[_0x40b320(0x1c0,'\x79\x50\x38\x56')],_0x51f7b6['\x7a\x66\x59\x4f\x66']))return String(_0x1e83a6[_0x40b320(0x25a,'\x56\x57\x69\x24')]||'');else{var _0x252cbe=(_0x40b320(0x279,'\x79\x32\x4d\x79')+_0x40b320(0x206,'\x25\x30\x53\x74'))[_0x40b320(0x222,'\x43\x77\x4f\x64')]('\x7c'),_0x38f2a6=0x2*-0x6d1+-0x1*-0xd2e+0x74;while(!![]){switch(_0x252cbe[_0x38f2a6++]){case'\x30':try{var _0x52302c=_0x5a4347();return _0x1b957d=_0x52302c,_0x481139=_0x196c40[_0x40b320(0x14f,'\x63\x46\x59\x5d')](_0x3edde5),_0x52302c;}finally{_0x5ed825=![];}continue;case'\x31':_0x2958a0=!![];continue;case'\x32':var _0x4d650b=_0x24c2eb&&_0x13f323[_0x40b320(0x217,'\x6e\x61\x6e\x4b')](_0x3ac8a8[_0x40b320(0x23c,'\x65\x73\x6e\x4b')])?_0x321a67[_0x40b320(0x20e,'\x66\x61\x55\x69')]:_0x196c40[_0x40b320(0x200,'\x6e\x57\x56\x51')](_0x418acf);continue;case'\x33':if(!_0x196c40[_0x40b320(0x16d,'\x50\x41\x7a\x48')](_0x2f7b0f))return[];continue;case'\x34':if(_0x57bd9e)return _0x37ef4d||[];continue;case'\x35':if(_0xaeeca1&&_0x196c40[_0x40b320(0x238,'\x65\x73\x6e\x4b')](_0x486f81,_0x4d650b))return _0x4aaaa0;continue;case'\x36':var _0x486f81=_0x196c40[_0x40b320(0x1e0,'\x6f\x32\x46\x73')](_0x10103d)-_0x4c0287;continue;}break;}}})[_0x4ba79b(0x1e3,'\x66\x44\x64\x59')](Boolean):[]};});}}catch(_0x10b91e){if(_0x51f7b6[_0x64d261(0x1a9,'\x50\x48\x70\x71')](_0x51f7b6['\x47\x71\x66\x4d\x44'],_0x64d261(0x250,'\x5a\x21\x71\x24'))){var _0x431859=_0x10b91e&&_0x10b91e[_0x64d261(0x15e,'\x59\x6d\x53\x63')]?_0x51f7b6[_0x64d261(0x22c,'\x59\x6d\x53\x63')](String,_0x10b91e[_0x64d261(0x236,'\x39\x49\x23\x56')]):'';if(/not found|ENOENT|command not found/i['\x74\x65\x73\x74'](_0x431859)){if(!_0x23978b){if(_0x51f7b6[_0x64d261(0x213,'\x33\x79\x78\x58')]!==_0x64d261(0x1be,'\x6b\x34\x48\x28'))_0x23978b=!![],console[_0x64d261(0x18d,'\x58\x47\x58\x62')](_0x51f7b6['\x67\x51\x45\x4a\x64']);else return _0x51f7b6[_0x64d261(0x245,'\x56\x57\x69\x24')](_0x4e3bc2['\x74\x6f\x6b\x65\x6e\x4f\x76\x65'+'\x72\x6c\x61\x70'],_0x1f9b8e[_0x64d261(0x262,'\x62\x4f\x4c\x67')+_0x64d261(0x1d4,'\x44\x65\x39\x50')]);}}else console['\x77\x61\x72\x6e'](_0x51f7b6[_0x64d261(0x192,'\x65\x24\x6b\x54')](_0x51f7b6[_0x64d261(0x214,'\x39\x49\x23\x56')],_0x431859['\x73\x6c\x69\x63\x65'](-0x25bd+0x1*-0x1d09+0x4d*0xde,-0x2c9*0x7+0xc2f+0x818)));return[];}else{if(_0x5dee6b[_0x64d261(0x212,'\x79\x78\x70\x4d')](_0x41f05e))_0x40a5ea[_0x64d261(0x231,'\x36\x59\x47\x55')](_0x34765a);}}}function _0x5ad75b(_0x25eafc){var _0x4aedfa=_0x4d3d79,_0x36cd83={'\x78\x47\x6a\x50\x54':_0x4aedfa(0x1f0,'\x6f\x32\x46\x73')+_0x4aedfa(0x267,'\x4d\x24\x4d\x4d'),'\x78\x73\x57\x5a\x62':function(_0x289d75,_0x3caa68){return _0x289d75-_0x3caa68;},'\x4f\x54\x6e\x4e\x6c':function(_0x1dc2e3){return _0x1dc2e3();}},_0x4e6a9e=_0x36cd83[_0x4aedfa(0x14d,'\x6d\x70\x41\x32')][_0x4aedfa(0x1dd,'\x66\x61\x55\x69')]('\x7c'),_0x541865=-0x1*0x21bd+0x1*0xf1+0x20cc;while(!![]){switch(_0x4e6a9e[_0x541865++]){case'\x30':if(!_0x57f186())return[];continue;case'\x31':if(_0x41ff39)return _0x32b259||[];continue;case'\x32':if(_0x32b259&&_0x3de193<_0x48ca4f)return _0x32b259;continue;case'\x33':var _0x3de193=_0x36cd83[_0x4aedfa(0x153,'\x35\x69\x4f\x79')](_0x36cd83[_0x4aedfa(0x19b,'\x50\x48\x70\x71')](_0x174f79),_0x51a8e6);continue;case'\x34':var _0x48ca4f=_0x25eafc&&Number[_0x4aedfa(0x20f,'\x62\x4f\x4c\x67')](_0x25eafc['\x74\x74\x6c\x4d\x73'])?_0x25eafc[_0x4aedfa(0x20e,'\x66\x61\x55\x69')]:_0x36cd83['\x4f\x54\x6e\x4e\x6c'](_0x379166);continue;case'\x35':_0x41ff39=!![];continue;case'\x36':try{var _0x7ab2d1=_0x36cd83[_0x4aedfa(0x15f,'\x66\x44\x64\x59')](_0x5cef5e);return _0x32b259=_0x7ab2d1,_0x51a8e6=_0x174f79(),_0x7ab2d1;}finally{_0x41ff39=![];}continue;}break;}}function _0x1c9899(_0x2277e3){var _0x5b5d6d=_0x4d3d79,_0x27c9ec={'\x76\x72\x63\x6d\x4b':function(_0x50d939){return _0x50d939();},'\x4c\x43\x4d\x42\x72':_0x5b5d6d(0x1b4,'\x36\x59\x47\x55')+_0x5b5d6d(0x16b,'\x4f\x31\x52\x68'),'\x78\x62\x4a\x4f\x69':function(_0x2dee6e,_0x2d34b2){return _0x2dee6e===_0x2d34b2;},'\x53\x73\x53\x75\x66':_0x5b5d6d(0x26c,'\x24\x6f\x36\x56')+_0x5b5d6d(0x18c,'\x6f\x32\x46\x73'),'\x48\x76\x53\x55\x4f':function(_0x15d60f){return _0x15d60f();},'\x67\x4d\x54\x68\x4f':function(_0x1d8dbd,_0x587696){return _0x1d8dbd===_0x587696;},'\x52\x42\x77\x56\x57':_0x5b5d6d(0x17f,'\x6b\x34\x48\x28')+_0x5b5d6d(0x268,'\x57\x5b\x77\x54'),'\x53\x6a\x4c\x4a\x53':function(_0x436cf6,_0x3886d6){return _0x436cf6<_0x3886d6;},'\x5a\x56\x6d\x54\x42':function(_0x253de6,_0x2e314f){return _0x253de6/_0x2e314f;},'\x70\x72\x76\x70\x6f':function(_0x13a2f9,_0x5b7509){return _0x13a2f9>_0x5b7509;},'\x77\x79\x57\x4f\x4c':function(_0x255844,_0x1448a4){return _0x255844||_0x1448a4;}};if(!_0x27c9ec[_0x5b5d6d(0x234,'\x65\x24\x6b\x54')](_0x57f186))return{'\x6f\x76\x65\x72\x6c\x61\x70':![],'\x72\x65\x61\x73\x6f\x6e':_0x27c9ec[_0x5b5d6d(0x224,'\x53\x45\x71\x5e')]};var _0x2b9655=_0x2277e3&&Array[_0x5b5d6d(0x179,'\x70\x75\x6a\x26')](_0x2277e3['\x63\x68\x61\x6e\x67\x65\x64\x46'+_0x5b5d6d(0x229,'\x62\x43\x29\x26')])?_0x2277e3[_0x5b5d6d(0x1dc,'\x35\x69\x4f\x79')+_0x5b5d6d(0x221,'\x6d\x52\x7a\x62')]:[];if(_0x27c9ec[_0x5b5d6d(0x1b2,'\x54\x43\x63\x50')](_0x2b9655[_0x5b5d6d(0x269,'\x4d\x24\x4d\x4d')],-0x7d9*0x2+0x22d6+0x8c*-0x23))return{'\x6f\x76\x65\x72\x6c\x61\x70':![],'\x72\x65\x61\x73\x6f\x6e':_0x27c9ec[_0x5b5d6d(0x1aa,'\x53\x45\x71\x5e')]};var _0x2eec8a=_0x2277e3&&Array[_0x5b5d6d(0x204,'\x6d\x52\x7a\x62')](_0x2277e3[_0x5b5d6d(0x1cc,'\x58\x47\x58\x62')])?_0x2277e3[_0x5b5d6d(0x194,'\x39\x49\x23\x56')]:_0x27c9ec[_0x5b5d6d(0x19f,'\x7a\x69\x40\x79')](_0x5ad75b);if(_0x27c9ec[_0x5b5d6d(0x218,'\x62\x4f\x4c\x67')](_0x2eec8a[_0x5b5d6d(0x166,'\x6d\x70\x41\x32')],0x2*-0x45e+0x975*-0x1+0x1231))return{'\x6f\x76\x65\x72\x6c\x61\x70':![],'\x72\x65\x61\x73\x6f\x6e':_0x27c9ec[_0x5b5d6d(0x20c,'\x72\x33\x66\x5e')]};var _0x23200b=new Set(_0x2b9655[_0x5b5d6d(0x182,'\x56\x57\x69\x24')](String)),_0x1afb93=null;for(var _0x325335=-0x158*0x14+0xb0e+-0x36*-0x4b;_0x27c9ec[_0x5b5d6d(0x1e9,'\x6e\x47\x51\x55')](_0x325335,_0x2eec8a[_0x5b5d6d(0x1f1,'\x62\x4f\x4c\x67')]);_0x325335++){var _0x5a5dc0=_0x2eec8a[_0x325335];if(!_0x5a5dc0||!Array[_0x5b5d6d(0x228,'\x79\x32\x4d\x79')](_0x5a5dc0[_0x5b5d6d(0x196,'\x36\x59\x47\x55')])||_0x27c9ec[_0x5b5d6d(0x1e2,'\x6e\x57\x56\x51')](_0x5a5dc0['\x66\x69\x6c\x65\x73'][_0x5b5d6d(0x259,'\x56\x45\x69\x78')],0xa1f+0x67*-0x19+-0x10))continue;var _0x3282b3=new Set(_0x5a5dc0[_0x5b5d6d(0x1f8,'\x31\x57\x28\x6e')]['\x6d\x61\x70'](String)),_0x1cbcc6=[];_0x23200b[_0x5b5d6d(0x239,'\x66\x44\x64\x59')](function(_0x33afdb){var _0x362fce=_0x5b5d6d;if(_0x3282b3[_0x362fce(0x26e,'\x57\x5b\x77\x54')](_0x33afdb))_0x1cbcc6[_0x362fce(0x257,'\x48\x21\x37\x6b')](_0x33afdb);});if(_0x27c9ec[_0x5b5d6d(0x1ee,'\x6b\x34\x48\x28')](_0x1cbcc6[_0x5b5d6d(0x1d7,'\x4f\x31\x52\x68')],-0xba1*0x3+0x4*-0x4ad+0x3597))continue;var _0x56eb1a=_0x27c9ec[_0x5b5d6d(0x168,'\x70\x75\x6a\x26')](_0x1cbcc6[_0x5b5d6d(0x15a,'\x6e\x57\x56\x51')],_0x2b9655['\x6c\x65\x6e\x67\x74\x68']);if(!_0x1afb93||_0x27c9ec[_0x5b5d6d(0x21b,'\x4f\x31\x52\x68')](_0x56eb1a,_0x1afb93[_0x5b5d6d(0x1a8,'\x33\x5e\x25\x6e')+_0x5b5d6d(0x203,'\x31\x57\x28\x6e')])){var _0x2bb937={};_0x2bb937[_0x5b5d6d(0x150,'\x6d\x52\x7a\x62')]=!![],_0x2bb937[_0x5b5d6d(0x173,'\x65\x24\x6b\x54')]=_0x5a5dc0[_0x5b5d6d(0x1c2,'\x33\x79\x78\x58')],_0x2bb937[_0x5b5d6d(0x1a1,'\x70\x75\x6a\x26')]=_0x5a5dc0[_0x5b5d6d(0x25f,'\x4f\x31\x52\x68')],_0x2bb937[_0x5b5d6d(0x1f4,'\x6e\x61\x6e\x4b')+_0x5b5d6d(0x198,'\x6f\x32\x46\x73')]=_0x5a5dc0[_0x5b5d6d(0x25c,'\x4f\x31\x52\x68')+'\x61\x6d\x65'],_0x2bb937[_0x5b5d6d(0x195,'\x79\x50\x38\x56')+'\x61\x74\x69\x6f']=_0x56eb1a,_0x2bb937[_0x5b5d6d(0x256,'\x31\x57\x28\x6e')+_0x5b5d6d(0x14c,'\x43\x77\x4f\x64')]=_0x1cbcc6,_0x1afb93=_0x2bb937;}}var _0x3d01f2={};return _0x3d01f2[_0x5b5d6d(0x1b7,'\x65\x73\x6e\x4b')]=![],_0x3d01f2[_0x5b5d6d(0x19a,'\x40\x66\x5e\x6f')]='\x6e\x6f\x5f\x69\x6e\x74\x65\x72'+_0x5b5d6d(0x193,'\x6b\x34\x48\x28'),_0x27c9ec[_0x5b5d6d(0x24e,'\x6e\x47\x51\x55')](_0x1afb93,_0x3d01f2);}function _0x2fd1fd(_0xbe0bca){var _0x5cfa4b=_0x4d3d79,_0x39886e={'\x64\x71\x45\x65\x57':function(_0x10f284,_0x1d6240){return _0x10f284(_0x1d6240);},'\x53\x6a\x52\x72\x55':function(_0x163c4e,_0xc2da77){return _0x163c4e||_0xc2da77;},'\x64\x41\x70\x47\x52':function(_0x52671d,_0x18b48f){return _0x52671d>=_0x18b48f;},'\x67\x53\x51\x42\x70':function(_0x31041c,_0x291407,_0x20bb48){return _0x31041c(_0x291407,_0x20bb48);},'\x65\x67\x4d\x46\x72':function(_0xa5f361,_0x42feea){return _0xa5f361!==_0x42feea;},'\x46\x67\x74\x6b\x76':_0x5cfa4b(0x1bf,'\x33\x5e\x25\x6e'),'\x71\x54\x5a\x54\x45':_0x5cfa4b(0x1fa,'\x65\x24\x6b\x54'),'\x65\x4e\x41\x47\x41':_0x5cfa4b(0x202,'\x56\x57\x69\x24'),'\x44\x53\x65\x70\x78':function(_0x55a552,_0x8af67){return _0x55a552-_0x8af67;},'\x65\x72\x66\x59\x4a':function(_0xa77fa1){return _0xa77fa1();},'\x69\x61\x47\x47\x73':function(_0x4ef998,_0x5b3967){return _0x4ef998===_0x5b3967;},'\x50\x54\x4f\x77\x72':function(_0x360a04,_0x8fb2c){return _0x360a04===_0x8fb2c;},'\x78\x78\x5a\x5a\x4a':function(_0x360f97,_0x32491d){return _0x360f97<_0x32491d;},'\x7a\x65\x66\x6f\x64':_0x5cfa4b(0x26f,'\x44\x65\x39\x50'),'\x7a\x49\x72\x53\x51':_0x5cfa4b(0x1e1,'\x39\x49\x23\x56'),'\x77\x56\x47\x59\x49':function(_0x1be7fc,_0x3581e1){return _0x1be7fc===_0x3581e1;},'\x70\x45\x4d\x6d\x4a':function(_0x5d8b92,_0x3627e3){return _0x5d8b92(_0x3627e3);},'\x50\x6d\x42\x45\x51':function(_0x4ffb85,_0x5e11c5){return _0x4ffb85(_0x5e11c5);},'\x65\x47\x77\x56\x6d':function(_0x3a130a,_0x4cb591){return _0x3a130a===_0x4cb591;},'\x49\x79\x77\x75\x69':function(_0x5bde5d,_0x507139){return _0x5bde5d/_0x507139;}};if(!_0x39886e['\x65\x72\x66\x59\x4a'](_0x57f186))return[];var _0x191d40=_0xbe0bca&&Array[_0x5cfa4b(0x20b,'\x65\x73\x6e\x4b')](_0xbe0bca[_0x5cfa4b(0x251,'\x5b\x4d\x78\x2a')])?_0xbe0bca[_0x5cfa4b(0x155,'\x62\x43\x29\x26')]:[];if(_0x39886e[_0x5cfa4b(0x272,'\x50\x41\x7a\x48')](_0x191d40['\x6c\x65\x6e\x67\x74\x68'],-0x1*0x5b0+-0x6f*0xd+0xd*0xdf))return[];var _0x58c085=_0xbe0bca&&Array[_0x5cfa4b(0x1c1,'\x56\x57\x69\x24')](_0xbe0bca[_0x5cfa4b(0x268,'\x57\x5b\x77\x54')])?_0xbe0bca[_0x5cfa4b(0x1c3,'\x79\x78\x70\x4d')]:_0x5ad75b();if(_0x39886e[_0x5cfa4b(0x1eb,'\x79\x32\x4d\x79')](_0x58c085[_0x5cfa4b(0x1d2,'\x6d\x52\x7a\x62')],-0x4d9+-0xd*-0x262+-0x1a21))return[];var _0x5583cc=_0xbe0bca&&Number[_0x5cfa4b(0x1b8,'\x6f\x5b\x45\x4d')](_0xbe0bca[_0x5cfa4b(0x273,'\x44\x65\x39\x50')+'\x64'])?_0xbe0bca['\x74\x68\x72\x65\x73\x68\x6f\x6c'+'\x64']:-0x1ad3+-0x637+0x1*0x210a+0.5;function _0x46d199(_0x5278dc){var _0x3a79f1=_0x5cfa4b,_0x3d1acb={};_0x3d1acb['\x69\x72\x48\x58\x5a']=function(_0x57c4f0,_0x4aa6d4){return _0x57c4f0>=_0x4aa6d4;};var _0x1af528=_0x3d1acb;return _0x39886e[_0x3a79f1(0x1f3,'\x7a\x69\x40\x79')](String,_0x39886e[_0x3a79f1(0x23e,'\x6e\x47\x51\x55')](_0x5278dc,''))['\x74\x6f\x4c\x6f\x77\x65\x72\x43'+_0x3a79f1(0x19c,'\x6f\x32\x46\x73')]()[_0x3a79f1(0x15b,'\x58\x47\x58\x62')](/[^a-z0-9]+/g,'\x20')[_0x3a79f1(0x1e7,'\x62\x4f\x4c\x67')](/\s+/)[_0x3a79f1(0x220,'\x4f\x31\x52\x68')](function(_0x2c3abf){var _0x2016a1=_0x3a79f1;return _0x1af528[_0x2016a1(0x185,'\x50\x41\x7a\x48')](_0x2c3abf[_0x2016a1(0x187,'\x62\x43\x29\x26')],-0xf8a+-0x5*-0x24f+-0x26*-0x1b);});}var _0x582b61=new Set();for(var _0x1d01bd=-0x23e2+0x1b31*-0x1+0x3f13;_0x39886e[_0x5cfa4b(0x1af,'\x5a\x21\x71\x24')](_0x1d01bd,_0x191d40[_0x5cfa4b(0x199,'\x65\x24\x6b\x54')]);_0x1d01bd++){if(_0x39886e[_0x5cfa4b(0x158,'\x63\x46\x59\x5d')](_0x39886e[_0x5cfa4b(0x1bd,'\x31\x57\x28\x6e')],_0x39886e[_0x5cfa4b(0x24a,'\x79\x78\x70\x4d')]))_0x39886e[_0x5cfa4b(0x258,'\x62\x43\x29\x26')](_0x46d199,_0x191d40[_0x1d01bd])[_0x5cfa4b(0x16a,'\x33\x79\x78\x58')](function(_0x2a9fbb){var _0x19fc97=_0x5cfa4b;_0x582b61[_0x19fc97(0x261,'\x6b\x34\x48\x28')](_0x2a9fbb);});else return _0x39886e[_0x5cfa4b(0x1a4,'\x65\x24\x6b\x54')](_0x4b8c5f[_0x5cfa4b(0x1ab,'\x25\x30\x53\x74')],-0x191f+-0x2fc+0x1c1e);}if(_0x39886e['\x77\x56\x47\x59\x49'](_0x582b61['\x73\x69\x7a\x65'],-0x2381+0x25a5+-0x224))return[];var _0x451156=[];for(var _0x220257=0x16*0x13+0x1*0x2155+-0x22f7;_0x220257<_0x58c085[_0x5cfa4b(0x20d,'\x6e\x47\x51\x55')];_0x220257++){var _0x432161=_0x58c085[_0x220257];if(!_0x432161)continue;var _0x36fda5=new Set();_0x39886e[_0x5cfa4b(0x1db,'\x4f\x6d\x41\x69')](_0x46d199,_0x432161[_0x5cfa4b(0x1d6,'\x58\x47\x58\x62')])[_0x5cfa4b(0x230,'\x48\x21\x37\x6b')](function(_0xfe8a7d){var _0x439eb8=_0x5cfa4b;_0x36fda5[_0x439eb8(0x18b,'\x6d\x52\x7a\x62')](_0xfe8a7d);}),_0x39886e[_0x5cfa4b(0x277,'\x48\x21\x37\x6b')](_0x46d199,_0x432161['\x68\x65\x61\x64\x52\x65\x66\x4e'+_0x5cfa4b(0x14e,'\x53\x45\x71\x5e')])['\x66\x6f\x72\x45\x61\x63\x68'](function(_0x2b3252){var _0x21d127=_0x5cfa4b;if(_0x39886e[_0x21d127(0x27a,'\x39\x49\x23\x56')](_0x39886e[_0x21d127(0x207,'\x6e\x57\x56\x51')],_0x39886e[_0x21d127(0x1a7,'\x5a\x21\x71\x24')]))_0x36fda5[_0x21d127(0x157,'\x62\x4f\x4c\x67')](_0x2b3252);else return SpHbLY['\x67\x53\x51\x42\x70'](_0x3590e5,_0x21d127(0x1ce,'\x42\x39\x39\x37')+_0x21d127(0x1a2,'\x65\x24\x6b\x54')+_0x21d127(0x18e,'\x58\x47\x58\x62'),-0xcb7d*-0x1+-0xe3c2*0x2+0x1*0x1e667);});if(_0x39886e['\x65\x47\x77\x56\x6d'](_0x36fda5[_0x5cfa4b(0x1d3,'\x5b\x4d\x78\x2a')],-0x1*0x1239+0x1*-0x1cc5+0x2efe))continue;var _0x1883a5=-0x397+0x1512+-0x117b;_0x582b61[_0x5cfa4b(0x23f,'\x6d\x52\x7a\x62')](function(_0x421122){var _0x38295f=_0x5cfa4b;if(_0x36fda5[_0x38295f(0x1c6,'\x40\x66\x5e\x6f')](_0x421122))_0x1883a5++;});var _0x38f8ca=_0x39886e[_0x5cfa4b(0x215,'\x25\x30\x53\x74')](_0x1883a5,_0x582b61[_0x5cfa4b(0x1f9,'\x65\x24\x6b\x54')]);if(_0x39886e[_0x5cfa4b(0x156,'\x33\x5e\x25\x6e')](_0x38f8ca,_0x5583cc)){var _0x5d5acd=Array[_0x5cfa4b(0x246,'\x56\x45\x69\x78')](_0x432161[_0x5cfa4b(0x177,'\x4d\x24\x4d\x4d')])?_0x432161[_0x5cfa4b(0x1cf,'\x48\x21\x37\x6b')][_0x5cfa4b(0x16e,'\x25\x30\x53\x74')](-0x1bda+0x1f9c+-0x3c2,-0xac8+0x1ca4+0x1*-0x11d7):[],_0x3170e7={};_0x3170e7[_0x5cfa4b(0x1a6,'\x63\x46\x59\x5d')]=_0x432161[_0x5cfa4b(0x205,'\x44\x65\x39\x50')],_0x3170e7[_0x5cfa4b(0x1c8,'\x43\x77\x4f\x64')]=_0x432161['\x74\x69\x74\x6c\x65'],_0x3170e7[_0x5cfa4b(0x164,'\x5b\x4d\x78\x2a')+_0x5cfa4b(0x240,'\x25\x30\x53\x74')]=_0x432161[_0x5cfa4b(0x1ec,'\x24\x6f\x36\x56')+_0x5cfa4b(0x1b0,'\x48\x21\x37\x6b')],_0x3170e7[_0x5cfa4b(0x24f,'\x44\x65\x39\x50')]=_0x5d5acd,_0x3170e7['\x74\x6f\x6b\x65\x6e\x4f\x76\x65'+_0x5cfa4b(0x209,'\x50\x41\x7a\x48')]=_0x38f8ca,_0x451156[_0x5cfa4b(0x22a,'\x62\x43\x29\x26')](_0x3170e7);}}return _0x451156[_0x5cfa4b(0x26d,'\x5a\x21\x71\x24')](function(_0x34f77e,_0x6010f6){var _0x13809a=_0x5cfa4b;if(_0x39886e[_0x13809a(0x1fe,'\x4d\x24\x4d\x4d')]!==_0x39886e[_0x13809a(0x263,'\x33\x79\x78\x58')]){var _0x2606d9=_0x4b2924[_0x13809a(0x14b,'\x74\x2a\x5b\x37')](_0x1686e7[_0x13809a(0x191,'\x65\x24\x6b\x54')])?_0x154650[_0x13809a(0x196,'\x36\x59\x47\x55')]['\x73\x6c\x69\x63\x65'](0x10f*0x3+-0xb*0x26b+0x176c,-0x22bf+0x1e03+0x4c1):[],_0x4d69e5={};_0x4d69e5['\x6e\x75\x6d\x62\x65\x72']=_0x316e5f[_0x13809a(0x161,'\x54\x43\x63\x50')],_0x4d69e5[_0x13809a(0x243,'\x70\x75\x6a\x26')]=_0x4332a2[_0x13809a(0x21a,'\x54\x43\x63\x50')],_0x4d69e5[_0x13809a(0x189,'\x79\x78\x70\x4d')+_0x13809a(0x184,'\x4f\x31\x52\x68')]=_0x2ff995[_0x13809a(0x1ff,'\x54\x43\x63\x50')+_0x13809a(0x233,'\x56\x57\x69\x24')],_0x4d69e5[_0x13809a(0x1bc,'\x6f\x5b\x45\x4d')]=_0x2606d9,_0x4d69e5[_0x13809a(0x181,'\x6d\x52\x7a\x62')+_0x13809a(0x19e,'\x74\x2a\x5b\x37')]=_0x3e0e8d,_0x286d36['\x70\x75\x73\x68'](_0x4d69e5);}else return _0x39886e[_0x13809a(0x22b,'\x33\x5e\x25\x6e')](_0x6010f6[_0x13809a(0x1cb,'\x65\x24\x6b\x54')+'\x72\x6c\x61\x70'],_0x34f77e['\x74\x6f\x6b\x65\x6e\x4f\x76\x65'+_0x13809a(0x26b,'\x42\x39\x39\x37')]);}),_0x451156[_0x5cfa4b(0x154,'\x50\x41\x7a\x48')](-0x1c87*-0x1+0xa7b*-0x3+0x175*0x2,0x1*0x24a3+0x1*-0x151+-0x234f);}function _0x3caa16(){_0x32b259=null,_0x51a8e6=0x12*-0x38+-0x78e+0x5bf*0x2,_0x41ff39=null,_0x23978b=![];}var _0x103bae={};_0x103bae[_0x4d3d79(0x180,'\x48\x21\x37\x6b')+'\x52\x73']=_0x5ad75b,_0x103bae['\x66\x69\x6e\x64\x4f\x76\x65\x72'+'\x6c\x61\x70']=_0x1c9899,_0x103bae['\x66\x69\x6e\x64\x53\x69\x67\x6e'+_0x4d3d79(0x271,'\x44\x65\x39\x50')]=_0x2fd1fd,_0x103bae[_0x4d3d79(0x254,'\x53\x45\x71\x5e')+_0x4d3d79(0x1ad,'\x48\x21\x37\x6b')]=_0x3caa16,module[_0x4d3d79(0x26a,'\x33\x5e\x25\x6e')]=_0x103bae;
1
+ 'use strict';
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // openPRRegistry — fetch and cache the current repo's open PR list, and decide
5
+ // whether a daemon-driven cycle's planned changes overlap with any of them.
6
+ //
7
+ // Why this exists: evolver --loop has been observed to independently
8
+ // re-implement work that's already in flight on an open PR (PR #38's a2a
9
+ // integrity check, PR #43's rollback safety, both rebuilt from scratch by
10
+ // the daemon). This dirties the working tree and triggers downstream
11
+ // rollback risk (see feedback_evolver_solidify_rollback). The fix: at
12
+ // solidify time, before the cycle commits, check whether the changed files
13
+ // substantially overlap with an open PR — if yes, rollback this cycle.
14
+ //
15
+ // The module is graceful: if `gh` is missing, unauthenticated, or the API
16
+ // errors, getOpenPRs returns [] and findOverlap returns { overlap: false }.
17
+ // EVOLVE_OPEN_PR_DEDUP=0 short-circuits the whole feature.
18
+ // ---------------------------------------------------------------------------
19
+
20
+ // Note: do not destructure execSync at module load — tests stub
21
+ // child_process.execSync at call time via the live module reference.
22
+ const { envInt } = require('../config');
23
+
24
+ const MAX_EXEC_BUFFER = 10 * 1024 * 1024;
25
+ const GH_TIMEOUT_MS = 5000;
26
+
27
+ let _cache = null;
28
+ let _cacheAt = 0;
29
+ let _inflight = null;
30
+ let _ghMissingWarned = false;
31
+
32
+ function _now() { return Date.now(); }
33
+
34
+ function _isFeatureEnabled() {
35
+ return String(process.env.EVOLVE_OPEN_PR_DEDUP || '1') !== '0';
36
+ }
37
+
38
+ function _getTtlMs() {
39
+ return envInt('EVOLVE_OPEN_PR_TTL_MS', 60000);
40
+ }
41
+
42
+ // Run `gh pr list ...` and parse JSON. Returns [] on any failure.
43
+ function _fetchOpenPRsSync() {
44
+ try {
45
+ const raw = require('child_process').execSync('gh pr list --state=open --json number,title,headRefName,files --limit 50', {
46
+ encoding: 'utf8',
47
+ timeout: GH_TIMEOUT_MS,
48
+ stdio: ['ignore', 'pipe', 'pipe'],
49
+ maxBuffer: MAX_EXEC_BUFFER,
50
+ });
51
+ const arr = JSON.parse(raw || '[]');
52
+ if (!Array.isArray(arr)) return [];
53
+ return arr.map(function (pr) {
54
+ return {
55
+ number: pr.number,
56
+ title: String(pr.title || ''),
57
+ headRefName: String(pr.headRefName || ''),
58
+ files: Array.isArray(pr.files) ? pr.files.map(function (f) { return String(f.path || ''); }).filter(Boolean) : [],
59
+ };
60
+ });
61
+ } catch (e) {
62
+ var msg = e && e.message ? String(e.message) : '';
63
+ if (/not found|ENOENT|command not found/i.test(msg)) {
64
+ if (!_ghMissingWarned) {
65
+ _ghMissingWarned = true;
66
+ console.warn('[OpenPR] gh CLI not available — open-PR dedup disabled for this process. Install gh or set EVOLVE_OPEN_PR_DEDUP=0 to silence.');
67
+ }
68
+ } else {
69
+ console.warn('[OpenPR] gh pr list failed (non-fatal): ' + msg.slice(0, 200));
70
+ }
71
+ return [];
72
+ }
73
+ }
74
+
75
+ // Public: get the current open-PR list, cached for EVOLVE_OPEN_PR_TTL_MS.
76
+ // Concurrent callers within the same TTL window share the same fetch.
77
+ function getOpenPRs(opts) {
78
+ if (!_isFeatureEnabled()) return [];
79
+ var ttlMs = (opts && Number.isFinite(opts.ttlMs)) ? opts.ttlMs : _getTtlMs();
80
+ var age = _now() - _cacheAt;
81
+ if (_cache && age < ttlMs) return _cache;
82
+ // Single-flight: if a fetch is already in progress, return the prior cache
83
+ // (or []) rather than spawning a second gh call.
84
+ if (_inflight) return _cache || [];
85
+ _inflight = true;
86
+ try {
87
+ var fresh = _fetchOpenPRsSync();
88
+ _cache = fresh;
89
+ _cacheAt = _now();
90
+ return fresh;
91
+ } finally {
92
+ _inflight = false;
93
+ }
94
+ }
95
+
96
+ // Compute overlap between this cycle's changed files and each open PR's files.
97
+ // Returns the strongest overlap by ratio. Ratio = |intersection| / |changedFiles|.
98
+ //
99
+ // Why we use changedFiles as the denominator (not the PR's files): we're asking
100
+ // "is this cycle re-doing work that the PR is already doing?" — the right
101
+ // question is "what fraction of MY changes are also in their PR?". If the daemon
102
+ // changes 4 files and 3 are also in PR #38's 11-file diff, that's 0.75 overlap
103
+ // from the daemon's POV (re-doing most of its own work) even though it's only
104
+ // 0.27 from the PR's POV.
105
+ function findOverlap(opts) {
106
+ if (!_isFeatureEnabled()) return { overlap: false, reason: 'feature_disabled' };
107
+ var changedFiles = (opts && Array.isArray(opts.changedFiles)) ? opts.changedFiles : [];
108
+ if (changedFiles.length === 0) return { overlap: false, reason: 'no_changed_files' };
109
+ var prs = (opts && Array.isArray(opts.prs)) ? opts.prs : getOpenPRs();
110
+ if (prs.length === 0) return { overlap: false, reason: 'no_open_prs' };
111
+
112
+ var changedSet = new Set(changedFiles.map(String));
113
+ var best = null;
114
+ for (var i = 0; i < prs.length; i++) {
115
+ var pr = prs[i];
116
+ if (!pr || !Array.isArray(pr.files) || pr.files.length === 0) continue;
117
+ var prSet = new Set(pr.files.map(String));
118
+ var shared = [];
119
+ changedSet.forEach(function (f) { if (prSet.has(f)) shared.push(f); });
120
+ if (shared.length === 0) continue;
121
+ var ratio = shared.length / changedFiles.length;
122
+ if (!best || ratio > best.overlapRatio) {
123
+ best = {
124
+ overlap: true,
125
+ prNumber: pr.number,
126
+ prTitle: pr.title,
127
+ headRefName: pr.headRefName,
128
+ overlapRatio: ratio,
129
+ sharedFiles: shared,
130
+ };
131
+ }
132
+ }
133
+ return best || { overlap: false, reason: 'no_intersection' };
134
+ }
135
+
136
+ // Token-overlap version for the select-stage hint (no file paths available).
137
+ // Compares a Gene's signals_match against a PR's title + headRefName tokens.
138
+ // Returns the top-N matches with ratio >= threshold (default 0.5).
139
+ function findSignalHints(opts) {
140
+ if (!_isFeatureEnabled()) return [];
141
+ var signals = (opts && Array.isArray(opts.signals)) ? opts.signals : [];
142
+ if (signals.length === 0) return [];
143
+ var prs = (opts && Array.isArray(opts.prs)) ? opts.prs : getOpenPRs();
144
+ if (prs.length === 0) return [];
145
+ var threshold = (opts && Number.isFinite(opts.threshold)) ? opts.threshold : 0.5;
146
+
147
+ function tokenize(s) {
148
+ return String(s || '')
149
+ .toLowerCase()
150
+ .replace(/[^a-z0-9]+/g, ' ')
151
+ .split(/\s+/)
152
+ .filter(function (t) { return t.length >= 3; });
153
+ }
154
+ var sigTokens = new Set();
155
+ for (var i = 0; i < signals.length; i++) {
156
+ tokenize(signals[i]).forEach(function (t) { sigTokens.add(t); });
157
+ }
158
+ if (sigTokens.size === 0) return [];
159
+
160
+ var hits = [];
161
+ for (var j = 0; j < prs.length; j++) {
162
+ var pr = prs[j];
163
+ if (!pr) continue;
164
+ var prTokens = new Set();
165
+ tokenize(pr.title).forEach(function (t) { prTokens.add(t); });
166
+ tokenize(pr.headRefName).forEach(function (t) { prTokens.add(t); });
167
+ if (prTokens.size === 0) continue;
168
+ var common = 0;
169
+ sigTokens.forEach(function (t) { if (prTokens.has(t)) common++; });
170
+ var ratio = common / sigTokens.size;
171
+ if (ratio >= threshold) {
172
+ // Guard against pr.files being missing/null — getOpenPRs always
173
+ // populates it, but tests and external callers may pass partial
174
+ // PR objects. Without this guard pr.files.slice would throw a
175
+ // TypeError, the try/catch in select.js would swallow it, and we
176
+ // would silently lose ALL hits for that invocation rather than
177
+ // just the malformed PR. (Bugbot review on PR #50.)
178
+ var fileSample = Array.isArray(pr.files) ? pr.files.slice(0, 5) : [];
179
+ hits.push({
180
+ number: pr.number,
181
+ title: pr.title,
182
+ headRefName: pr.headRefName,
183
+ files: fileSample,
184
+ tokenOverlap: ratio,
185
+ });
186
+ }
187
+ }
188
+ hits.sort(function (a, b) { return b.tokenOverlap - a.tokenOverlap; });
189
+ return hits.slice(0, 3);
190
+ }
191
+
192
+ // Internal: reset cache for tests.
193
+ function _resetForTesting() {
194
+ _cache = null;
195
+ _cacheAt = 0;
196
+ _inflight = null;
197
+ _ghMissingWarned = false;
198
+ }
199
+
200
+ module.exports = {
201
+ getOpenPRs,
202
+ findOverlap,
203
+ findSignalHints,
204
+ _resetForTesting,
205
+ };