@sparrowai/sparrow-mcp 1.1.11 → 1.1.13

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 (53) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/scripts/mcp-test/mcp-client.js +1 -1
  3. package/dist/scripts/test-runner/check-failed-tests.js +1 -1
  4. package/dist/scripts/test-runner/compare-responses.js +1 -1
  5. package/dist/scripts/test-runner/standalone-test-fixed-header.js +1 -1
  6. package/dist/scripts/test-runner/standalone-test.js +1 -1
  7. package/dist/src/config/appConfig.js +1 -1
  8. package/dist/src/config/constants.js +1 -1
  9. package/dist/src/controllers/__tests__/analysis.controller.test.js +1 -1
  10. package/dist/src/controllers/__tests__/sast.controller.test.js +1 -1
  11. package/dist/src/controllers/__tests__/sca.controller.test.js +1 -1
  12. package/dist/src/controllers/__tests__/security.controller.test.js +1 -1
  13. package/dist/src/controllers/__tests__/system.controller.test.js +1 -1
  14. package/dist/src/controllers/analysis.controller.js +1 -1
  15. package/dist/src/controllers/sast.controller.js +1 -1
  16. package/dist/src/controllers/sca.controller.js +1 -1
  17. package/dist/src/controllers/security.controller.js +1 -1
  18. package/dist/src/controllers/system.controller.js +1 -1
  19. package/dist/src/schemas/tool.schemas.js +1 -1
  20. package/dist/src/server.js +1 -1
  21. package/dist/src/services/__tests__/analysis.remediation.spec.d.ts +1 -0
  22. package/dist/src/services/__tests__/analysis.remediation.spec.js +1 -0
  23. package/dist/src/services/__tests__/analysis.remediation.test.js +1 -1
  24. package/dist/src/services/__tests__/analysis.service.sca.test.js +1 -1
  25. package/dist/src/services/__tests__/analysis.service.test.js +1 -1
  26. package/dist/src/services/__tests__/checker.service.test.js +1 -1
  27. package/dist/src/services/__tests__/llm.service.test.js +1 -1
  28. package/dist/src/services/__tests__/s3.service.test.js +1 -1
  29. package/dist/src/services/__tests__/sparrow.service.test.js +1 -1
  30. package/dist/src/services/analysis.service.js +1 -1
  31. package/dist/src/services/checker.service.js +1 -1
  32. package/dist/src/services/llm/AnthropicProvider.js +1 -1
  33. package/dist/src/services/llm/BedrockProvider.js +1 -1
  34. package/dist/src/services/llm/GeminiProvider.js +1 -1
  35. package/dist/src/services/llm/LLMFactory.js +1 -1
  36. package/dist/src/services/llm/LLMProvider.js +1 -1
  37. package/dist/src/services/llm/OllamaProvider.js +1 -1
  38. package/dist/src/services/llm/OpenAIProvider.js +1 -1
  39. package/dist/src/services/llm.service.js +1 -1
  40. package/dist/src/services/s3.service.js +1 -1
  41. package/dist/src/services/sparrow.service.js +1 -1
  42. package/dist/src/types/types.js +1 -1
  43. package/dist/src/utils/__tests__/crypto.util.test.js +1 -1
  44. package/dist/src/utils/__tests__/diff.util.test.js +1 -1
  45. package/dist/src/utils/__tests__/fileManager.test.js +1 -1
  46. package/dist/src/utils/__tests__/fileManagerSecure.test.js +1 -1
  47. package/dist/src/utils/__tests__/logger.test.js +1 -1
  48. package/dist/src/utils/crypto.util.js +1 -1
  49. package/dist/src/utils/diff.util.js +1 -1
  50. package/dist/src/utils/fileManager.js +1 -1
  51. package/dist/src/utils/fileManagerSecure.js +1 -1
  52. package/dist/src/utils/logger.js +1 -1
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- const a4_0x6f20f1=a4_0x3c5a;(function(_0x8ed269,_0x9a08f8){const _0x1f82e9=a4_0x3c5a,_0xf787e6=_0x8ed269();while(!![]){try{const _0xde2870=-parseInt(_0x1f82e9(0x3b0))/0x1+-parseInt(_0x1f82e9(0x323))/0x2+-parseInt(_0x1f82e9(0x36e))/0x3+-parseInt(_0x1f82e9(0x2b5))/0x4+parseInt(_0x1f82e9(0x20c))/0x5*(-parseInt(_0x1f82e9(0x21a))/0x6)+-parseInt(_0x1f82e9(0x293))/0x7*(-parseInt(_0x1f82e9(0x202))/0x8)+-parseInt(_0x1f82e9(0x289))/0x9*(-parseInt(_0x1f82e9(0x3d5))/0xa);if(_0xde2870===_0x9a08f8)break;else _0xf787e6['push'](_0xf787e6['shift']());}catch(_0x1f3d90){_0xf787e6['push'](_0xf787e6['shift']());}}}(a4_0x2857,0x951f1));const a4_0x1d1e94=(function(){let _0x339288=!![];return function(_0xd9e1d7,_0x1361e1){const _0x4cfc55=_0x339288?function(){if(_0x1361e1){const _0x39ca36=_0x1361e1['apply'](_0xd9e1d7,arguments);return _0x1361e1=null,_0x39ca36;}}:function(){};return _0x339288=![],_0x4cfc55;};}()),a4_0x59383c=a4_0x1d1e94(this,function(){const _0x534e53=a4_0x3c5a,_0x50a939={};_0x50a939['xRoRV']='(((.+)+)+)'+'+$';const _0x102038=_0x50a939;return a4_0x59383c[_0x534e53(0x358)]()[_0x534e53(0x2b2)](_0x102038[_0x534e53(0x3a2)])[_0x534e53(0x358)]()[_0x534e53(0x3a9)+'r'](a4_0x59383c)['search'](_0x534e53(0x411)+'+$');});a4_0x59383c();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x432715 from'fs';function a4_0x3c5a(_0x4e73e6,_0x392f65){_0x4e73e6=_0x4e73e6-0x1ec;const _0x55513d=a4_0x2857();let _0x59383c=_0x55513d[_0x4e73e6];return _0x59383c;}import a4_0x90c6c4 from'path';import{fileURLToPath}from'url';import a4_0x5d2c55 from'adm-zip';import a4_0x4e6465 from'os';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x90c6c4[a4_0x6f20f1(0x2ca)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||'https://on'+a4_0x6f20f1(0x207)+a4_0x6f20f1(0x419)+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8,QA_TC_ROOT=a4_0x90c6c4[a4_0x6f20f1(0x379)](process[a4_0x6f20f1(0x32f)](),a4_0x6f20f1(0x3f9)+a4_0x6f20f1(0x253));function createTempZip(_0x189182,_0x21c538){const _0x166446=a4_0x6f20f1,_0x48a88a=new a4_0x5d2c55();_0x48a88a[_0x166446(0x32a)+'lder'](_0x189182);const _0x5b8f16=a4_0x4e6465[_0x166446(0x2b7)](),_0x20a020=a4_0x90c6c4[_0x166446(0x41c)](_0x5b8f16,_0x21c538);return _0x48a88a[_0x166446(0x2dd)](_0x20a020),_0x20a020;}function getAnalysisLink(_0x3ad564){const _0x33834a=a4_0x6f20f1;return SPARROW_BASE_URL+(_0x33834a(0x2d3)+_0x33834a(0x33f)+_0x33834a(0x37f))+_0x3ad564;}async function pollUntilComplete(_0xca4918,_0x1caf48){const _0x293746=a4_0x6f20f1;let _0x47b555=0x0;while(_0x47b555<MAX_POLL_ATTEMPTS){const _0x408d25={};_0x408d25[_0x293746(0x2e7)]=_0x1caf48;const _0x34baf7={};_0x34baf7[_0x293746(0x2ef)]='get_analys'+_0x293746(0x244),_0x34baf7[_0x293746(0x220)]=_0x408d25;const _0x171c18=await _0xca4918['request']('tools/call',_0x34baf7),_0x1ddd8b=String(_0x171c18[_0x293746(0x2b0)][0x0][_0x293746(0x3ca)])[_0x293746(0x279)+'e']();if(_0x1ddd8b[_0x293746(0x2ac)](_0x293746(0x3b9))||_0x1ddd8b['includes'](_0x293746(0x283))||_0x1ddd8b[_0x293746(0x2ac)](_0x293746(0x39d))||_0x1ddd8b[_0x293746(0x2ac)]('STOP')){const _0x17a1d7={};return _0x17a1d7['status']=_0x293746(0x3b9),_0x17a1d7[_0x293746(0x43d)]=_0x171c18[_0x293746(0x2b0)][0x0][_0x293746(0x3ca)],_0x17a1d7;}await new Promise(_0x5e50f3=>setTimeout(_0x5e50f3,POLL_INTERVAL_MS)),_0x47b555++;}throw new Error('Polling\x20ti'+_0x293746(0x373)+'r\x20'+_0x47b555+_0x293746(0x21e));}function isErrorResponse(_0x16ff09){const _0x577517=a4_0x6f20f1,_0x1f303d={};_0x1f303d[_0x577517(0x3fa)]=_0x577517(0x2f7);const _0x3440c6=_0x1f303d;if(_0x16ff09['isError']===!![])return!![];if(_0x16ff09[_0x577517(0x211)+_0x577517(0x34a)]?.[_0x577517(0x401)])return!![];const _0x70384f=_0x16ff09['content']?.[0x0]?.['text']?.[_0x577517(0x2e0)+'e']()||'';return _0x70384f[_0x577517(0x2ac)]('error')||_0x70384f[_0x577517(0x2ac)](_0x3440c6[_0x577517(0x3fa)]);}function a4_0x2857(){const _0x25848a=['TC073','QnAdF','values','ysisId\x20반환','zip','vGtfZ','전체\x20워크플로우\x20테','\x20→\x20결과\x20→\x20코드','priority','\x22index.js\x22','석\x20검증됨\x20(Moc','❌\x20테스트\x20실행\x20실','TC065','XqWQL','ync','완료된\x20분석\x20결과\x20','n\x20포함','TC011','\x20추적\x20시도','\x20(Real)','p_sca','sca/yarnpk','대용량\x20ZIP\x20분석','미완료\x20SCA\x20분석','bAphW','ZIP\x20파일\x20SAS','류\x20반환됨','\x20ID','RROW_API_K','ZIP\x20파일\x20없음\x20','1.\x20분석\x20완료\x0a2','\x20경로\x0a2.\x20도구\x20','정상\x20동작','전체\x20워크플로우\x20E','/타임아웃','\x20상태가\x20반환됨','fileName','nt.zip','.\x20결과\x20조회','831204WvgecD','utf-8','t]\x20Package','LLM\x20서비스\x20장애','검증됨','jWDon','경로\x20입력\x0a2.\x20도','addLocalFo','TC040','SCA\x20분석\x20','on\x20SCA\x20분석','Client)\x20\x20\x20','cwd','Diff\x20형식\x20검증','get_sca_an','테스트\x20폴더(sas','1.\x20SPARROW','\x20ZIP\x20경로','S\x20단계\x20진입\x0a2.','단일\x20파일\x20분석\x20(','existsSync','N/A','1.\x20여러\x20파일\x20경','is_results','writeFileS','m:\x20','method','k\x20-\x20No\x20QA\x20','tList/anal','fileConten','TC031','rom\x20result','object','TC032','Hello\x20Worl','\x20처리\x20검증됨','검증됨\x20(Mock)','선스\x20정보','테스트데이터','Content','nfjfM','+\x20username','지원하지\x20않는\x20언어','memo','안전한\x20코드\x20생성\x20','category','Failed\x20to\x20','\x20직접\x20설정:','TC020','Xpems','N/A\x20-\x20수동\x20테','EST_FORGER','취약점\x20없는\x20분석\x20','toString','계\x20진행률\x20업데이트','match','word)\x20{\x0a\x20\x20','s\x20WHERE\x20us','TC074','1.\x20잘못된\x20ana','TC046','N/A\x20-\x20의존성\x20','약점\x20정보','대용량\x20ZIP\x20파일','오류\x20처리','\x20분석\x20시도','\x20경로\x20입력\x0a2.\x20','xport\x20SPAR','\x20\x20\x20\x20\x20\x20-\x20Li','.id;\x0a\x20\x20\x20\x20c','.\x20상태\x20조회로\x20진',']\x20ERROR\x20(','exit','기\x0a2.\x20상태\x20확인','0개\x20컴포넌트\x20또는','642315qmZQBG','alysis_res','analyze_fo','설정\x0a2.\x20도구\x20실','fileName에\x20','meout\x20afte','n(String\x20u','length','\x20\x20\x20통과:\x20','rolAzure.j','TC082','resolve','존재하지\x20않는\x20폴더','TC001','p-test-res','ss\x20UserCon','\x20추적이\x20수락됨','ysis/','TC066','\x20조회가\x20수락됨','../../','Y_TestCase','\x20병렬\x20실행\x20완료\x20','get','AYDTU','TC033','결과\x20조회','(MCP):\x20분석\x20','unlinkSync','\x22your-key\x22','처리\x20검증됨','...','분석\x20상태\x20조회\x20성','분석\x20상태\x20확인됨:','━━━━━━━━━━','toFixed','이\x20수락되었거나\x20오','IAcsQ','TC069','(MCP):\x20Jav','lVlPQ','TC064','test_sca.z','\x20정보','SCA\x20취약점\x20세부','\x20=\x20\x22SELECT','1.\x20대용량\x20ZIP','FAIL','\x20\x20\x20\x20\x20\x20Stri','여러\x20파일\x20SCA\x20','단계별\x20알림\x20검증됨','package.js','xRoRV','테스트절차','1.\x20대용량\x20분석\x20','GMqXd','API\x20키\x20없음\x20오','오류\x20또는\x20경고','\x0a2.\x20결과\x20조회','constructo','\x20테스트\x20(MCP\x20','TC070','ETTest.asp','TC060','크기\x20제한\x20검증:\x20','.\x20즉시\x20결과\x20조회','905179BxpOev','\x20\x20\x20\x20\x20\x20\x20║','TC077','track_anal','✅\x20테스트\x20완료','[MCP\x20Clien','결\x20성공\x0a','1.\x20진행\x20추적\x20시','TC042','COMPLETE','정상동작','\x20-\x20','전체\x20흐름\x20성공','1.\x20빈\x20fileC','사전조건','p_sast','══════════','A\x20분석\x20조회','.\x20Analysis','bdpmM','미완료\x20분석\x20상태\x20','expected','lder_sca','러리만\x20사용','1.\x20존재하지\x20않는','파일명\x20입력\x0a2.\x20','text','_SITE_REQU','1.\x20여러\x20의존성\x20','ZIP\x20SAST\x20분','1.\x20빈\x20경로\x20입력','node','ANALYSIS\x20단',']\x20Running:','짧은\x20확인\x20간격\x20(','params','ess\x20=\x20requ','4510nadCbG','status','폴더\x20전체\x20SCA\x20','ess','1.\x20여러\x20파일\x20분','binary_tc.','get_analys','lder_sast','\x20req.query','==========','분석\x20실패\x20상태\x20조','\x20진행률\x20확인','오류\x20메시지','TC021','개\x20취약점','filePaths','석\x20→\x20결과','개\x20취약점\x20발견.','ller.java\x20','TC062','analyze_fi','TC061','TC049','analyze_zi','ndows:\x20$en','력\x0a2.\x20도구\x20실행','rationale','ZIP\x20파일\x20SCA','\x20검증됨\x20(Mock','ZIP\x20SCA\x20분석','Name에\x20.js\x20','argv','.java','progress\x20값','╔═════════','preconditi','test-files','ctHEy','\x20생성','1.\x20분석\x20진행\x20중','\x20void\x20logi','웃\x20처리)','연결\x20종료','nt/file.ja','error','기대결과','.txt\x20파일\x20분석','SCA\x20결과\x20조회\x20','Unified\x20Di','\x20\x20\x202.\x20환경변수','ser\x27,\x20(req','\x20\x20\x20설정\x20방법:','파일\x20경로\x20입력\x0a2','2.\x20도구\x20실행','TC078','files)','오류가\x20예상되었으나','all_langua','오류처리','sparrow-mc','(((.+)+)+)','data','\x20장애\x20시뮬레이션','TC081','le_sast','의존성\x20파일\x20자동\x20','1.\x20대용량\x20폴더\x20','테스트\x20파일을\x20찾을','rrowcloud.','\x20\x20}\x0a}','크플로우','join','\x0a2.\x20도구\x20실행','로\x20입력','빈\x20취약점\x20목록','를\x20찾을\x20수\x20없어\x20','tools/call','오류/경고\x20반환됨:','passed','replace','1.\x20LLM\x20서비스','Y=\x22your-ke','\x20또는\x20크기\x20오류','\x20\x20\x20\x20public','TC004','sca','진행률\x20업데이트\x20검','오류로\x20분석\x20실패\x20','ery);\x0a});','InIDP','건너뜀','/nonexiste','취약점\x20정보\x20확인','t\x20userId\x20=','미완료\x20분석\x20코드\x20','폴더\x20분석\x20','1.\x20안전한\x20코드\x20','../../../','상태\x20조회\x20성공:\x20','컴포넌트\x20정보\x20확인','ifhtB','ZIP\x20크기\x20초과\x20','message','진행\x20추적\x20검증됨','result','(MCP):\x20다중\x20','\x20-\x20No\x20QA\x20f','TC044','Memo]\x20Adde','UserContro','║\x20\x20\x20\x20\x20\x20\x20\x20\x20','1.\x20빈\x20배열\x20입력','파일\x20없는\x20프로젝트','OW_API_KEY','1.\x20의존성\x20파일\x20','워크플로우\x20검증\x20완','\x20반환\x0astatus','\x20MCP\x20-\x20자동화','SCA용\x20ZIP\x20크','\x20\x22SELECT\x20*','유도)','스트\x20필요\x20(LLM','Error\x20dete','입력\x0a2.\x20file','1.\x20ANALYSI','테스트명','press();\x0aa','════╗','ZIP\x20파일\x20없음','y\x22\x0a','\x20ID:\x20','도구\x20실행','\x20files\x20fro','big_files/','\x20+\x20\x22\x27\x22;\x0a\x20\x20','API_KEY\x20=\x20','aAzay','split','\x20오류','타임아웃\x20처리','스트\x20필요\x20(안전한','712xekcSX','now','대용량\x20테스트\x20폴더','\x0a\x0a---\x20Tool','```diff','demand.spa','nux/Mac:\x20e','procedure','999999999','zipFilePat','87355XutzHC','탐색\x20및\x20분석\x20완료','cted','t\x20app\x20=\x20ex','빈\x20파일\x20경로\x20배열','structured','을\x20찾을\x20수\x20없어\x20','판단근거','다중\x20파일\x20E2E\x20','1.\x20코드\x20생성\x0a2','Using\x20test','TC023','존재하지\x20않는\x20SC','1.\x20SCA\x20분석\x20','18uYUOys','테스트ID','배열\x201개)','n\x20사용)','\x20attempts','테스트분류','arguments','gGAii','ectionASPN','task','폴더\x20전체\x20SAST','\x20시작\x0a','T\x20분석\x20성공','SCA','dvOtX','ROW_API_KE','됨\x20(Mock)','\x0a2.\x20코드\x20생성\x20','MCP\x20서버:\x20','════╝\x0a','TC030','tring\x20pass','zYvoE','COMPLETE\x20반','NullReturn','\x20파일','제한\x20오류','MCP\x20자동\x20테스트','빈\x20파일\x20내용\x20분석','여러\x20파일\x20전체\x20워','\x20확인','DY\x20→\x20PRE_P','ckage.json','태\x20조회','EY\x20설정을\x20해제하','╚═════════','alysisId\x20f','1.\x20폴더에서\x20자동','TC084','SCA\x20테스트\x20폴더','ZIP\x20크기\x20검증\x20','컴포넌트\x20및\x20취약점','is_status','TC063','🧪\x20Sparrow\x20','폴더\x20경로\x20없음','ults.tsv','TC005','취약점\x20목록\x20반환','✅\x20MCP\x20서버\x20연','경계조건','Diff\x20형식\x20확인','ire(\x27expre','\x20조회','로\x20코드\x20생성','스\x20사용','folderPath','/qa_tc','CSRF.java','구\x20실행','L\x20injectio','스트\x20필요:\x20SPA','sast','generate_s','ff\x20형식','test_sast.','iles)','TfBxn','오류\x20또는\x20즉시\x20반','t)를\x20찾을\x20수\x20없','ecure_code','입력\x0a3.\x20도구\x20실','severity,\x20','analysisLi','확장자\x20사용','JsgSp','\x20코드\x20입력\x0a2.\x20','TC045','EY가\x20설정되지\x20않','았습니다.','ng\x20query\x20=','E2E','.\x20도구\x20실행','\x20반환\x20또는\x20크기\x20','server.js','request','aQwxI','de\x20with\x20SQ','eRkrM','TC013','CymxX','ss\x27);\x0acons','readFileSy','log','INIT\x20→\x20REA','toUpperCas','행률\x20확인','1.\x20분석\x20시작\x0a2','1.\x20분석\x20→\x20추적','1초)','\x20분석이\x20수락됨','(big_files','lysisId','1.\x20fileCon','로\x20배열\x20입력\x0a2.','SUCCESS','1.\x20ZIP\x20파일\x20','\x20분석\x20','v:SPARROW_','TC041','\x20파일\x20경로\x20입력\x0a','30042PvHzbL','드\x20생성','개만\x20배열에\x20입력\x0a','le_sca','TC043','isError','단일\x20Java\x20파일','Vulnerable','확인됨','1.\x20JavaScr','69559jGuhKC','\x20수\x20없어\x20건너뜀','sast/CROSS','warn','담당자','\x20증가','실행\x20오류:\x20','=\x20병렬\x20실행\x20시작','\x0a━━━━━━━━━','\x20완료.','CSRF_Diff.','xFkuN','find','\x20완료\x20(Real)','안전한\x20코드\x20분석\x20','확장자\x20없는\x20파일명','les_sca','\x20생성:\x20SPARR','src','\x20Output\x20--','\x0a✅\x20MCP\x20서버\x20','nt/folder','취약점\x20없는\x20코드\x20','실제\x20실행\x20검증됨\x20','ontent\x20입력','includes','ROCESS\x20→\x20A','존재하지\x20않는\x20분석','우선순위','content','생성\x20오류\x20처리\x20검','search','Id로\x20상태\x20조회','분석\x20진행\x20추적\x20성','766924AAajSu','Empty.java','tmpdir','컴포넌트\x20세부정보\x20','분석\x0a2.\x20코드\x20생','=your-key','tent에\x20Java','yarnpkg/pa','\x20*\x20FROM\x20us','Test.java','TC002','오류\x20메시지\x20반환','ults','aScript\x20파일','trim','descriptio','OzsvA','\x20반환','TC068','1.\x20폴더\x20경로\x20입','les_sast','dirname','미완료\x20분석\x20결과\x20','toolOutput','완료:\x20','{\x0a\x20\x20\x20\x20cons','단계별\x20알림\x20확인','NALYSIS\x20→\x20','ID\x20','public\x20cla','/ko/reques','WvKVJ','../../test','취약점\x20세부정보\x20확','2E\x20검증\x20완료','존재하지\x20않는\x20파일','\x20분석\x20성공','1.\x20취약점\x20있는\x20','단일\x20항목\x20배열\x20분','TC091','writeZip',',\x20res)\x20=>\x20','aHyLb','toLowerCas','stringify','TC090','rId;\x0a\x20\x20\x20\x20r','프로젝트','map','기\x20제한\x20검증됨','analysisId','\x20도구\x20실행','내장\x20테스트\x20케이스','stop','TC006','FbxQU','\x20완료.\x20','startsWith','name','\x0a=========','파일\x20분석\x20','ysis_progr','TC080','수정된\x20코드\x20반환','완료.\x20ID:\x20','\x20포함','validation','스트\x20필요\x20(코드\x20','예상된\x20오류\x20반환됨','분석\x20성공','도구명'];a4_0x2857=function(){return _0x25848a;};return a4_0x2857();}function escapeTsvField(_0x38a6ea,_0x1a2116=![]){const _0x35f551=a4_0x6f20f1;if(!_0x38a6ea)return'\x22\x22';let _0x23fdf1=_0x38a6ea;return _0x1a2116?(_0x23fdf1=_0x23fdf1['replace'](/\r\n/g,'\x0a'),_0x23fdf1=_0x23fdf1[_0x35f551(0x424)](/\t/g,'\x20')):(_0x23fdf1=_0x23fdf1[_0x35f551(0x424)](/\r?\n/g,'\x20'),_0x23fdf1=_0x23fdf1[_0x35f551(0x424)](/\t/g,'\x20'),_0x23fdf1=_0x23fdf1['replace'](/\s+/g,'\x20'),_0x23fdf1=_0x23fdf1[_0x35f551(0x2c3)]()),_0x23fdf1=_0x23fdf1[_0x35f551(0x424)](/"/g,'\x22\x22'),'\x22'+_0x23fdf1+'\x22';}function saveTsv(_0x4880fd,_0x95028a){const _0x119338=a4_0x6f20f1,_0x39df60={};_0x39df60['eRkrM']=_0x119338(0x2af),_0x39df60['TfBxn']=_0x119338(0x338);const _0x1841ab=_0x39df60,_0x4fa229=[_0x119338(0x21b),_0x119338(0x2fb),_0x119338(0x21f),_0x119338(0x1f2),_0x119338(0x3be),_0x119338(0x3a3),_0x119338(0x402),_0x119338(0x349),_0x1841ab[_0x119338(0x272)],'상태',_0x119338(0x297),'결과',_0x119338(0x213),'분석\x20링크','비고'],_0x4c7011=[_0x4fa229['map'](_0x1af35a=>escapeTsvField(_0x1af35a))[_0x119338(0x41c)]('\x09')],_0x4608ae=Object['entries'](_0x4880fd)['sort']((_0x10991c,_0x2b3c5b)=>{const _0xfc4495=_0x119338,_0x1a1e74=parseInt(_0x10991c[0x0][_0xfc4495(0x424)]('TC','')),_0x19407a=parseInt(_0x2b3c5b[0x0][_0xfc4495(0x424)]('TC',''));return _0x1a1e74-_0x19407a;});for(const [_0x115e6d,_0x20f432]of _0x4608ae){const _0x4adcf0=BUILTIN_TESTS[_0x119338(0x29f)](_0xe91d85=>_0xe91d85['id']===_0x115e6d);if(!_0x4adcf0)continue;let _0x1ea99f=_0x20f432[_0x119338(0x3d6)];_0x20f432[_0x119338(0x3ef)][_0x119338(0x2ee)](_0x1841ab[_0x119338(0x25d)])&&(_0x1ea99f=_0x1841ab[_0x119338(0x25d)]);let _0x184baf=_0x20f432[_0x119338(0x3ef)];_0x20f432[_0x119338(0x2cc)]&&(_0x184baf+=_0x119338(0x205)+_0x119338(0x2a6)+'-\x0a'+_0x20f432[_0x119338(0x2cc)]);const _0x59399a=[_0x115e6d,_0x4adcf0['tool'],_0x4adcf0[_0x119338(0x350)],_0x4adcf0[_0x119338(0x2ef)],_0x4adcf0[_0x119338(0x3f8)+'on']||'',_0x4adcf0[_0x119338(0x209)],_0x4adcf0[_0x119338(0x3c5)],_0x4adcf0[_0x119338(0x412)]||'',_0x4adcf0[_0x119338(0x304)],'완료','Antigravit'+'y',_0x1ea99f,_0x184baf,_0x20f432[_0x119338(0x263)+'nk']||'',''];_0x4c7011['push'](_0x59399a[_0x119338(0x2e5)]((_0x5e9683,_0x482c6a)=>escapeTsvField(_0x5e9683,_0x482c6a===0x5||_0x482c6a===0xc))['join']('\x09'));}a4_0x432715[_0x119338(0x33b)+_0x119338(0x30a)](_0x95028a,_0x4c7011[_0x119338(0x41c)]('\x0a'),_0x119338(0x324));}const args=process[a4_0x6f20f1(0x3f4)]['slice'](0x2),customPath=args[0x0],qaTcDir=customPath?a4_0x90c6c4[a4_0x6f20f1(0x379)](process[a4_0x6f20f1(0x32f)](),customPath):a4_0x90c6c4[a4_0x6f20f1(0x379)](__dirname,a4_0x6f20f1(0x2d5)+'-files/qa_'+'tc');console[a4_0x6f20f1(0x277)](a4_0x6f20f1(0x216)+a4_0x6f20f1(0x1f9)+a4_0x6f20f1(0x33c)+qaTcDir);const sastDir=a4_0x90c6c4[a4_0x6f20f1(0x379)](qaTcDir,a4_0x6f20f1(0x258)),scaDir=a4_0x90c6c4[a4_0x6f20f1(0x379)](qaTcDir,a4_0x6f20f1(0x42a)),sastAllLanguageDir=a4_0x90c6c4['resolve'](sastDir,a4_0x6f20f1(0x40e)+'ge'),javaFile=a4_0x90c6c4['resolve'](sastAllLanguageDir,a4_0x6f20f1(0x232)+a4_0x6f20f1(0x3f5)),jsFile=a4_0x90c6c4['resolve'](sastAllLanguageDir,'AccessCont'+a4_0x6f20f1(0x377)+'s'),safeJavaFile=a4_0x90c6c4[a4_0x6f20f1(0x379)](sastAllLanguageDir,'CommandInj'+a4_0x6f20f1(0x222)+a4_0x6f20f1(0x3ac)+'x'),javaContent=a4_0x432715[a4_0x6f20f1(0x337)](javaFile)?a4_0x432715[a4_0x6f20f1(0x276)+'nc'](javaFile,'utf-8'):'',jsContent=a4_0x432715['existsSync'](jsFile)?a4_0x432715[a4_0x6f20f1(0x276)+'nc'](jsFile,a4_0x6f20f1(0x324)):'',safeJavaContent=a4_0x432715['existsSync'](safeJavaFile)?a4_0x432715[a4_0x6f20f1(0x276)+'nc'](safeJavaFile,a4_0x6f20f1(0x324)):'',sastTestFolder=sastDir,scaTestFolder=scaDir,packageJsonFile=a4_0x90c6c4['resolve'](scaTestFolder,a4_0x6f20f1(0x2bc)+a4_0x6f20f1(0x23a)),packageJsonContent=a4_0x432715[a4_0x6f20f1(0x337)](packageJsonFile)?a4_0x432715[a4_0x6f20f1(0x276)+'nc'](packageJsonFile,a4_0x6f20f1(0x324)):'',largeZipPath=a4_0x90c6c4[a4_0x6f20f1(0x379)](qaTcDir,a4_0x6f20f1(0x1fa)+a4_0x6f20f1(0x3da)+a4_0x6f20f1(0x300)),largeFolderPath=a4_0x90c6c4[a4_0x6f20f1(0x379)](qaTcDir,'big_files/'+'androidx'),BUILTIN_JAVA_CODE=a4_0x6f20f1(0x2d2)+a4_0x6f20f1(0x37d)+'troller\x20{\x0a'+a4_0x6f20f1(0x428)+a4_0x6f20f1(0x3fd)+a4_0x6f20f1(0x374)+'sername,\x20S'+a4_0x6f20f1(0x22f)+a4_0x6f20f1(0x35b)+a4_0x6f20f1(0x39e)+a4_0x6f20f1(0x26a)+a4_0x6f20f1(0x1ec)+'\x20FROM\x20user'+a4_0x6f20f1(0x35c)+'ername=\x27\x22\x20'+a4_0x6f20f1(0x34c)+a4_0x6f20f1(0x1fb)+a4_0x6f20f1(0x41a),BUILTIN_JS_CODE='const\x20expr'+a4_0x6f20f1(0x3d4)+a4_0x6f20f1(0x24e)+a4_0x6f20f1(0x275)+a4_0x6f20f1(0x20f)+a4_0x6f20f1(0x1f3)+'pp.get(\x27/u'+a4_0x6f20f1(0x407)+a4_0x6f20f1(0x2de)+a4_0x6f20f1(0x2ce)+a4_0x6f20f1(0x432)+a4_0x6f20f1(0x3dd)+a4_0x6f20f1(0x368)+'onst\x20query'+a4_0x6f20f1(0x39b)+a4_0x6f20f1(0x2bd)+'ers\x20WHERE\x20'+'id=\x22\x20+\x20use'+a4_0x6f20f1(0x2e3)+'es.send(qu'+a4_0x6f20f1(0x42d);function extractAnalysisId(_0x39bed2){const _0xb57648=a4_0x6f20f1;if(_0x39bed2[_0xb57648(0x211)+_0xb57648(0x34a)]&&_0x39bed2[_0xb57648(0x211)+'Content'][_0xb57648(0x2e7)])return String(_0x39bed2[_0xb57648(0x211)+_0xb57648(0x34a)][_0xb57648(0x2e7)]);const _0x29a18b=_0x39bed2[_0xb57648(0x2b0)][0x0]['text'],_0x441518=_0x29a18b['match'](/Analysis ID:\s*(\d+)/i)||_0x29a18b[_0xb57648(0x35a)](/분석 ID:\s*(\d+)/i);if(!_0x441518){if(_0xb57648(0x354)!==_0xb57648(0x354))return{'passed':!![],'rationale':_0xb57648(0x2f9)+':\x20'+(_0x5a17d0[_0xb57648(0x2b0)]?.[0x0]?.[_0xb57648(0x3ca)]||_0xb57648(0x1ef)+_0xb57648(0x20e)),'toolOutput':_0x16a792['stringify'](_0x34897c,null,0x2)};else throw new Error(_0xb57648(0x351)+'extract\x20an'+_0xb57648(0x23e)+_0xb57648(0x342)+':\x20'+_0x29a18b);}return _0x441518[0x1];}const BUILTIN_TESTS=[{'id':a4_0x6f20f1(0x37b),'tool':a4_0x6f20f1(0x3e9)+'le_sast','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x28f)+'\x20SAST\x20분석\x20성'+'공','procedure':a4_0x6f20f1(0x281)+a4_0x6f20f1(0x2bb)+a4_0x6f20f1(0x266)+a4_0x6f20f1(0x372)+a4_0x6f20f1(0x442)+a4_0x6f20f1(0x3e7)+a4_0x6f20f1(0x261)+'행','expected':a4_0x6f20f1(0x2e7)+a4_0x6f20f1(0x449)+':\x20INIT','data':a4_0x6f20f1(0x340)+'t:\x20Java\x20co'+a4_0x6f20f1(0x271)+a4_0x6f20f1(0x256)+'n','priority':'높음','task':async _0x25b99f=>{const _0x503028=a4_0x6f20f1,_0x32842b=javaContent||BUILTIN_JAVA_CODE,_0xb537e7={};_0xb537e7['fileConten'+'t']=_0x32842b,_0xb537e7[_0x503028(0x320)]=_0x503028(0x290)+_0x503028(0x3f5);const _0x2e56bc={};_0x2e56bc[_0x503028(0x2ef)]='analyze_fi'+_0x503028(0x415),_0x2e56bc[_0x503028(0x220)]=_0xb537e7;const _0x29e0fb=await _0x25b99f['request']('tools/call',_0x2e56bc),_0x4cfa2e=extractAnalysisId(_0x29e0fb);await pollUntilComplete(_0x25b99f,_0x4cfa2e);const _0x16c611={};_0x16c611[_0x503028(0x2e7)]=_0x4cfa2e;const _0x4dd1c4={};_0x4dd1c4[_0x503028(0x2ef)]=_0x503028(0x3db)+'is_results',_0x4dd1c4[_0x503028(0x220)]=_0x16c611;const _0x531d82=await _0x25b99f[_0x503028(0x26f)]('tools/call',_0x4dd1c4),_0x4b9c04=_0x531d82[_0x503028(0x2b0)][0x0]['text'],_0x5273b7=_0x4b9c04[_0x503028(0x35a)](/(\d+)\s*vulnerabilities/i),_0x1367ea=_0x5273b7?_0x5273b7[0x1]:'0';return{'passed':!![],'rationale':_0x503028(0x2aa)+_0x503028(0x389)+_0x503028(0x2d1)+_0x4cfa2e+_0x503028(0x2ed)+_0x1367ea+_0x503028(0x3e6),'analysisLink':getAnalysisLink(_0x4cfa2e),'toolOutput':JSON[_0x503028(0x2e1)](_0x29e0fb,null,0x2)};}},{'id':a4_0x6f20f1(0x2bf),'tool':'analyze_fi'+a4_0x6f20f1(0x415),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x3a6)+'류','procedure':a4_0x6f20f1(0x333)+'_API_KEY\x20미'+a4_0x6f20f1(0x371)+'행','expected':a4_0x6f20f1(0x2c0),'priority':'높음','task':async _0x4ac41a=>{const _0x5f315a=a4_0x6f20f1,_0x20a9cf={};return _0x20a9cf[_0x5f315a(0x423)]=!![],_0x20a9cf[_0x5f315a(0x3ef)]='N/A\x20-\x20수동\x20테'+_0x5f315a(0x257)+_0x5f315a(0x318)+_0x5f315a(0x23c)+'고\x20오류\x20확인\x20필요',_0x20a9cf;}},{'id':'TC003','tool':'analyze_fi'+a4_0x6f20f1(0x415),'category':a4_0x6f20f1(0x3ba),'name':'지원\x20언어\x20확인\x20-'+'\x20JavaScrip'+'t','procedure':a4_0x6f20f1(0x292)+'ipt\x20파일\x20내용\x20'+a4_0x6f20f1(0x1f0)+a4_0x6f20f1(0x3f3)+a4_0x6f20f1(0x264),'expected':'정상적으로\x20anal'+a4_0x6f20f1(0x2ff),'data':'fileName:\x20'+a4_0x6f20f1(0x305),'priority':'중간','task':async _0xdf97b6=>{const _0x1c6679=a4_0x6f20f1,_0x3cd456={};_0x3cd456[_0x1c6679(0x265)]=function(_0xe7c5b0,_0x6c3fc5){return _0xe7c5b0||_0x6c3fc5;};const _0x26e36c=_0x3cd456,_0x55872e=_0x26e36c[_0x1c6679(0x265)](jsContent,BUILTIN_JS_CODE),_0x449a8c={};_0x449a8c[_0x1c6679(0x340)+'t']=_0x55872e,_0x449a8c[_0x1c6679(0x320)]='index.js';const _0x3993bd={};_0x3993bd[_0x1c6679(0x2ef)]=_0x1c6679(0x3e9)+'le_sast',_0x3993bd['arguments']=_0x449a8c;const _0x26a0fa=await _0xdf97b6[_0x1c6679(0x26f)]('tools/call',_0x3993bd),_0x1268df=extractAnalysisId(_0x26a0fa);return{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x1c6679(0x395)+_0x1c6679(0x2c2)+_0x1c6679(0x285)+_0x1268df+'\x20시작됨.','analysisLink':getAnalysisLink(_0x1268df),'toolOutput':JSON['stringify'](_0x26a0fa,null,0x2)};}},{'id':a4_0x6f20f1(0x429),'tool':a4_0x6f20f1(0x3e9)+a4_0x6f20f1(0x415),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x2a2),'procedure':'1.\x20확장자\x20없는\x20'+a4_0x6f20f1(0x3c9)+a4_0x6f20f1(0x1f8),'expected':'오류\x20메시지\x20반환','priority':'낮음','task':async _0x1de724=>{const _0x2ebe26=a4_0x6f20f1,_0x1f97f0={};_0x1f97f0[_0x2ebe26(0x340)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x1f97f0['fileName']=_0x2ebe26(0x442)+'ller';const _0x1fd5e1={};_0x1fd5e1['name']=_0x2ebe26(0x3e9)+'le_sast',_0x1fd5e1[_0x2ebe26(0x220)]=_0x1f97f0;const _0x55d7ea=await _0x1de724[_0x2ebe26(0x26f)]('tools/call',_0x1fd5e1);if(_0x55d7ea[_0x2ebe26(0x28e)]||_0x55d7ea[_0x2ebe26(0x2b0)]?.[0x0]?.[_0x2ebe26(0x3ca)]?.['includes']('error'))return{'passed':!![],'rationale':_0x2ebe26(0x2f9)+':\x20'+(_0x55d7ea[_0x2ebe26(0x2b0)]?.[0x0]?.['text']||_0x2ebe26(0x1ef)+_0x2ebe26(0x20e)),'toolOutput':JSON['stringify'](_0x55d7ea,null,0x2)};return{'passed':![],'rationale':_0x2ebe26(0x40d)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x2ebe26(0x2e1)](_0x55d7ea,null,0x2)};}},{'id':a4_0x6f20f1(0x249),'tool':a4_0x6f20f1(0x3e9)+a4_0x6f20f1(0x415),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x236),'procedure':a4_0x6f20f1(0x3bd)+a4_0x6f20f1(0x2ab),'expected':a4_0x6f20f1(0x3e1),'priority':'낮음','task':async _0x1198c2=>{const _0x51ebb=a4_0x6f20f1,_0x4a3e73={};_0x4a3e73['fileConten'+'t']='',_0x4a3e73[_0x51ebb(0x320)]=_0x51ebb(0x2b6);const _0x1d9a82={};_0x1d9a82['name']='analyze_fi'+_0x51ebb(0x415),_0x1d9a82[_0x51ebb(0x220)]=_0x4a3e73;const _0xa42fef=await _0x1198c2[_0x51ebb(0x26f)](_0x51ebb(0x421),_0x1d9a82);if(isErrorResponse(_0xa42fef))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xa42fef[_0x51ebb(0x2b0)]?.[0x0]?.[_0x51ebb(0x3ca)]||_0x51ebb(0x1ef)+_0x51ebb(0x20e)),'toolOutput':JSON[_0x51ebb(0x2e1)](_0xa42fef,null,0x2)};return{'passed':![],'rationale':_0x51ebb(0x40d)+_0x51ebb(0x27e),'toolOutput':JSON['stringify'](_0xa42fef,null,0x2)};}},{'id':a4_0x6f20f1(0x2eb),'tool':a4_0x6f20f1(0x3e9)+a4_0x6f20f1(0x415),'category':a4_0x6f20f1(0x24c),'name':a4_0x6f20f1(0x34d),'procedure':'1.\x20.txt\x20파일'+a4_0x6f20f1(0x364),'expected':a4_0x6f20f1(0x3a7),'priority':'낮음','task':async _0x4c465a=>{const _0x2f7fcf=a4_0x6f20f1;try{const _0x253093={};_0x253093[_0x2f7fcf(0x340)+'t']=_0x2f7fcf(0x345)+'d',_0x253093[_0x2f7fcf(0x320)]='readme.txt';const _0x44a32a={};_0x44a32a[_0x2f7fcf(0x2ef)]=_0x2f7fcf(0x3e9)+_0x2f7fcf(0x415),_0x44a32a['arguments']=_0x253093;const _0x262434=await _0x4c465a[_0x2f7fcf(0x26f)](_0x2f7fcf(0x421),_0x44a32a);return{'passed':!![],'rationale':_0x2f7fcf(0x403)+_0x2f7fcf(0x392)+_0x2f7fcf(0x316),'toolOutput':JSON[_0x2f7fcf(0x2e1)](_0x262434,null,0x2)};}catch(_0x40768d){const _0x7f7cec={};return _0x7f7cec[_0x2f7fcf(0x423)]=!![],_0x7f7cec[_0x2f7fcf(0x3ef)]=_0x2f7fcf(0x422)+'\x20'+_0x40768d['message'],_0x7f7cec;}}},{'id':'TC010','tool':a4_0x6f20f1(0x3e9)+a4_0x6f20f1(0x2c9),'category':a4_0x6f20f1(0x3ba),'name':'여러\x20파일\x20SAST'+'\x20분석\x20성공','procedure':a4_0x6f20f1(0x339)+a4_0x6f20f1(0x282)+a4_0x6f20f1(0x2e8),'expected':'analysisId'+a4_0x6f20f1(0x2c6),'priority':'높음','task':async _0x4a9388=>{const _0x152c06=a4_0x6f20f1;if(!javaContent||!jsContent){const _0x2b7022={};return _0x2b7022[_0x152c06(0x423)]=!![],_0x2b7022[_0x152c06(0x3ef)]='테스트\x20파일을\x20찾을'+'\x20수\x20없어\x20건너뜀',_0x2b7022;}const _0x36a56e={};_0x36a56e['filePaths']=[javaFile,jsFile];const _0x219316={};_0x219316[_0x152c06(0x2ef)]=_0x152c06(0x3e9)+_0x152c06(0x2c9),_0x219316['arguments']=_0x36a56e;const _0xd38fa=await _0x4a9388['request'](_0x152c06(0x421),_0x219316),_0x4f1be7=extractAnalysisId(_0xd38fa);return await pollUntilComplete(_0x4a9388,_0x4f1be7),{'passed':!![],'rationale':_0x152c06(0x2aa)+_0x152c06(0x43e)+_0x152c06(0x2f1)+_0x4f1be7+'\x20완료.','analysisLink':getAnalysisLink(_0x4f1be7),'toolOutput':JSON['stringify'](_0xd38fa,null,0x2)};}},{'id':a4_0x6f20f1(0x30d),'tool':'analyze_fi'+'les_sast','category':'정상동작','name':a4_0x6f20f1(0x336)+a4_0x6f20f1(0x21c),'procedure':'1.\x20파일\x20경로\x201'+a4_0x6f20f1(0x28b)+'2.\x20도구\x20실행','expected':a4_0x6f20f1(0x2e7)+a4_0x6f20f1(0x2c6),'priority':'낮음','task':async _0x2b78b4=>{const _0x51095f=a4_0x6f20f1;if(!javaContent){const _0x2a3a31={};return _0x2a3a31[_0x51095f(0x423)]=!![],_0x2a3a31['rationale']=_0x51095f(0x418)+_0x51095f(0x294),_0x2a3a31;}const _0x38f519={};_0x38f519['filePaths']=[javaFile];const _0x5b8339={};_0x5b8339[_0x51095f(0x2ef)]=_0x51095f(0x3e9)+_0x51095f(0x2c9),_0x5b8339['arguments']=_0x38f519;const _0x43caa0=await _0x2b78b4[_0x51095f(0x26f)](_0x51095f(0x421),_0x5b8339),_0x44dab4=extractAnalysisId(_0x43caa0);return{'passed':!![],'rationale':_0x51095f(0x2db)+'석\x20수락됨.\x20ID:'+'\x20'+_0x44dab4,'analysisLink':getAnalysisLink(_0x44dab4),'toolOutput':JSON['stringify'](_0x43caa0,null,0x2)};}},{'id':'TC012','tool':a4_0x6f20f1(0x3e9)+a4_0x6f20f1(0x2c9),'category':a4_0x6f20f1(0x40f),'name':'빈\x20파일\x20경로\x20배열','procedure':'1.\x20빈\x20배열\x20입력'+a4_0x6f20f1(0x41d),'expected':'오류\x20메시지\x20반환','priority':'중간','task':async _0xf2183b=>{const _0x45fd90=a4_0x6f20f1,_0xfbb5c7={};_0xfbb5c7['filePaths']=[];const _0x74acc9={};_0x74acc9['name']=_0x45fd90(0x3e9)+_0x45fd90(0x2c9),_0x74acc9[_0x45fd90(0x220)]=_0xfbb5c7;const _0x88b41f=await _0xf2183b['request']('tools/call',_0x74acc9);if(isErrorResponse(_0x88b41f))return{'passed':!![],'rationale':_0x45fd90(0x2f9)+':\x20'+(_0x88b41f['content']?.[0x0]?.[_0x45fd90(0x3ca)]||_0x45fd90(0x1ef)+_0x45fd90(0x20e)),'toolOutput':JSON[_0x45fd90(0x2e1)](_0x88b41f,null,0x2)};return{'passed':![],'rationale':_0x45fd90(0x40d)+_0x45fd90(0x27e),'toolOutput':JSON[_0x45fd90(0x2e1)](_0x88b41f,null,0x2)};}},{'id':a4_0x6f20f1(0x273),'tool':a4_0x6f20f1(0x3e9)+'les_sast','category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x2d8)+'\x20경로','procedure':'1.\x20존재하지\x20않는'+a4_0x6f20f1(0x365)+'도구\x20실행','expected':a4_0x6f20f1(0x2c0),'priority':'중간','task':async _0xee95f2=>{const _0xd2950b=a4_0x6f20f1,_0x6562d0={};_0x6562d0[_0xd2950b(0x3e4)]=[_0xd2950b(0x430)+_0xd2950b(0x400)+'va'];const _0x4136b3={};_0x4136b3[_0xd2950b(0x2ef)]=_0xd2950b(0x3e9)+'les_sast',_0x4136b3['arguments']=_0x6562d0;const _0x24aebd=await _0xee95f2[_0xd2950b(0x26f)]('tools/call',_0x4136b3);if(isErrorResponse(_0x24aebd))return{'passed':!![],'rationale':_0xd2950b(0x2f9)+':\x20'+(_0x24aebd[_0xd2950b(0x2b0)]?.[0x0]?.['text']||_0xd2950b(0x1ef)+_0xd2950b(0x20e)),'toolOutput':JSON[_0xd2950b(0x2e1)](_0x24aebd,null,0x2)};return{'passed':![],'rationale':_0xd2950b(0x40d)+_0xd2950b(0x27e),'toolOutput':JSON['stringify'](_0x24aebd,null,0x2)};}},{'id':a4_0x6f20f1(0x353),'tool':a4_0x6f20f1(0x370)+a4_0x6f20f1(0x3dc),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x224)+a4_0x6f20f1(0x2d9),'procedure':a4_0x6f20f1(0x2c8)+a4_0x6f20f1(0x3ee),'expected':a4_0x6f20f1(0x2e7)+a4_0x6f20f1(0x2c6),'priority':'높음','task':async _0x59362e=>{const _0x1835e8=a4_0x6f20f1,_0xfe8879={'bAphW':function(_0x4e49e3,_0x412b72){return _0x4e49e3(_0x412b72);}};if(!a4_0x432715[_0x1835e8(0x337)](sastTestFolder)){const _0x40710f={};return _0x40710f[_0x1835e8(0x423)]=!![],_0x40710f[_0x1835e8(0x3ef)]=_0x1835e8(0x332)+_0x1835e8(0x25f)+'어\x20건너뜀',_0x40710f;}const _0x71c7f0={};_0x71c7f0[_0x1835e8(0x252)]=sastTestFolder;const _0x4919ef={};_0x4919ef['name']=_0x1835e8(0x370)+'lder_sast',_0x4919ef[_0x1835e8(0x220)]=_0x71c7f0;const _0x2f492f=await _0x59362e[_0x1835e8(0x26f)]('tools/call',_0x4919ef),_0x1a8369=extractAnalysisId(_0x2f492f);return await pollUntilComplete(_0x59362e,_0x1a8369),{'passed':!![],'rationale':_0x1835e8(0x434)+_0x1a8369+_0x1835e8(0x29c),'analysisLink':_0xfe8879[_0x1835e8(0x314)](getAnalysisLink,_0x1a8369),'toolOutput':JSON[_0x1835e8(0x2e1)](_0x2f492f,null,0x2)};}},{'id':a4_0x6f20f1(0x3e2),'tool':a4_0x6f20f1(0x370)+a4_0x6f20f1(0x3dc),'category':'정상동작','name':'대용량\x20폴더\x20ZIP'+a4_0x6f20f1(0x3fb),'procedure':a4_0x6f20f1(0x417)+'분석','expected':a4_0x6f20f1(0x2e7)+a4_0x6f20f1(0x26d)+'제한','priority':'낮음','task':async _0x532baf=>{const _0x100406=a4_0x6f20f1,_0xbe6d4c={'gGAii':_0x100406(0x204)+_0x100406(0x27f)+'/androidx)'+'를\x20찾을\x20수\x20없어\x20'+'건너뜀','nfjfM':'analyze_fo'+_0x100406(0x3dc),'aQwxI':function(_0xcc3151,_0x102fa4){return _0xcc3151(_0x102fa4);}};if(!a4_0x432715['existsSync'](largeFolderPath)){const _0x583578={};return _0x583578[_0x100406(0x423)]=!![],_0x583578['rationale']=_0xbe6d4c[_0x100406(0x221)],_0x583578;}const _0x1e86a5={};_0x1e86a5['folderPath']=largeFolderPath;const _0x44077b={};_0x44077b['name']=_0xbe6d4c[_0x100406(0x34b)],_0x44077b[_0x100406(0x220)]=_0x1e86a5;const _0x1b3d0e=await _0x532baf['request'](_0x100406(0x421),_0x44077b),_0x54a955=extractAnalysisId(_0x1b3d0e);return await pollUntilComplete(_0x532baf,_0x54a955),{'passed':!![],'rationale':'대용량\x20폴더\x20분석\x20'+_0x100406(0x2f5)+_0x54a955,'analysisLink':_0xbe6d4c[_0x100406(0x270)](getAnalysisLink,_0x54a955),'toolOutput':JSON[_0x100406(0x2e1)](_0x1b3d0e,null,0x2)};}},{'id':'TC022','tool':'analyze_fo'+a4_0x6f20f1(0x3dc),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x247),'procedure':a4_0x6f20f1(0x3ce)+a4_0x6f20f1(0x41d),'expected':a4_0x6f20f1(0x3e1),'priority':'중간','task':async _0x1de84c=>{const _0x132211=a4_0x6f20f1,_0x492c02={};_0x492c02[_0x132211(0x252)]='';const _0x46f278={};_0x46f278[_0x132211(0x2ef)]='analyze_fo'+_0x132211(0x3dc),_0x46f278[_0x132211(0x220)]=_0x492c02;const _0x386cc5=await _0x1de84c['request'](_0x132211(0x421),_0x46f278);if(isErrorResponse(_0x386cc5))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x386cc5[_0x132211(0x2b0)]?.[0x0]?.[_0x132211(0x3ca)]||'Error\x20dete'+_0x132211(0x20e)),'toolOutput':JSON[_0x132211(0x2e1)](_0x386cc5,null,0x2)};return{'passed':![],'rationale':_0x132211(0x40d)+_0x132211(0x27e),'toolOutput':JSON[_0x132211(0x2e1)](_0x386cc5,null,0x2)};}},{'id':a4_0x6f20f1(0x217),'tool':a4_0x6f20f1(0x370)+a4_0x6f20f1(0x3dc),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x37a),'procedure':a4_0x6f20f1(0x3c8)+a4_0x6f20f1(0x31b)+'실행','expected':a4_0x6f20f1(0x3e1),'priority':'중간','task':async _0x1a495d=>{const _0x3fa538=a4_0x6f20f1,_0x3b050a={'FbxQU':function(_0x2a060a,_0xf29179){return _0x2a060a(_0xf29179);}},_0x67076d={};_0x67076d[_0x3fa538(0x252)]=_0x3fa538(0x430)+_0x3fa538(0x2a8);const _0x483f89={};_0x483f89[_0x3fa538(0x2ef)]=_0x3fa538(0x370)+_0x3fa538(0x3dc),_0x483f89['arguments']=_0x67076d;const _0xbfec3a=await _0x1a495d[_0x3fa538(0x26f)](_0x3fa538(0x421),_0x483f89);if(_0x3b050a[_0x3fa538(0x2ec)](isErrorResponse,_0xbfec3a))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xbfec3a[_0x3fa538(0x2b0)]?.[0x0]?.[_0x3fa538(0x3ca)]||_0x3fa538(0x1ef)+'cted'),'toolOutput':JSON[_0x3fa538(0x2e1)](_0xbfec3a,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x3fa538(0x27e),'toolOutput':JSON[_0x3fa538(0x2e1)](_0xbfec3a,null,0x2)};}},{'id':a4_0x6f20f1(0x22e),'tool':a4_0x6f20f1(0x3ec)+a4_0x6f20f1(0x3bf),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x315)+a4_0x6f20f1(0x226),'procedure':a4_0x6f20f1(0x284)+a4_0x6f20f1(0x329)+a4_0x6f20f1(0x255),'expected':a4_0x6f20f1(0x2e7)+'\x20반환','priority':'높음','task':async _0x366784=>{const _0x28a714=a4_0x6f20f1,_0x50773a=a4_0x90c6c4[_0x28a714(0x41c)](QA_TC_ROOT,_0x28a714(0x258));if(a4_0x432715['existsSync'](_0x50773a)){const _0x5f2c6a=createTempZip(_0x50773a,_0x28a714(0x25b)+_0x28a714(0x300));try{const _0x33dd31={};_0x33dd31['zipFilePat'+'h']=_0x5f2c6a;const _0x207e63={};_0x207e63[_0x28a714(0x2ef)]=_0x28a714(0x3ec)+_0x28a714(0x3bf),_0x207e63[_0x28a714(0x220)]=_0x33dd31;const _0x419b75=await _0x366784[_0x28a714(0x26f)](_0x28a714(0x421),_0x207e63),_0xf13e7e=extractAnalysisId(_0x419b75);return await pollUntilComplete(_0x366784,_0xf13e7e),{'passed':!![],'rationale':_0x28a714(0x3cd)+'석\x20'+_0xf13e7e+_0x28a714(0x2a0),'analysisLink':getAnalysisLink(_0xf13e7e),'toolOutput':JSON[_0x28a714(0x2e1)](_0x419b75,null,0x2)};}finally{try{if(a4_0x432715['existsSync'](_0x5f2c6a))a4_0x432715[_0x28a714(0x38a)](_0x5f2c6a);}catch(_0xdc21c1){}}}const _0x192ada={};return _0x192ada[_0x28a714(0x423)]=!![],_0x192ada[_0x28a714(0x3ef)]=_0x28a714(0x3cd)+_0x28a714(0x306)+_0x28a714(0x33e)+_0x28a714(0x40c),_0x192ada;}},{'id':a4_0x6f20f1(0x341),'tool':a4_0x6f20f1(0x3ec)+a4_0x6f20f1(0x3bf),'category':'정상동작','name':a4_0x6f20f1(0x362)+'\x20분석','procedure':'1.\x20대용량\x20ZIP'+a4_0x6f20f1(0x288)+a4_0x6f20f1(0x40a),'expected':a4_0x6f20f1(0x2e7)+a4_0x6f20f1(0x26d)+a4_0x6f20f1(0x234),'priority':'중간','task':async _0x3b1ac2=>{const _0x434c3f=a4_0x6f20f1,_0x11e561={'OzsvA':_0x434c3f(0x421),'hiAXD':function(_0x1ce6eb,_0x387080){return _0x1ce6eb(_0x387080);}};if(!a4_0x432715[_0x434c3f(0x337)](largeZipPath)){const _0x2fc2ad={};return _0x2fc2ad[_0x434c3f(0x423)]=!![],_0x2fc2ad[_0x434c3f(0x3ef)]=_0x434c3f(0x362)+_0x434c3f(0x212)+_0x434c3f(0x42f),_0x2fc2ad;}try{const _0x453f20={};_0x453f20[_0x434c3f(0x20b)+'h']=largeZipPath;const _0x4ed7bc={};_0x4ed7bc[_0x434c3f(0x2ef)]=_0x434c3f(0x3ec)+_0x434c3f(0x3bf),_0x4ed7bc[_0x434c3f(0x220)]=_0x453f20;const _0x356241=await _0x3b1ac2[_0x434c3f(0x26f)](_0x11e561[_0x434c3f(0x2c5)],_0x4ed7bc),_0x5c5ea3=_0x11e561['hiAXD'](extractAnalysisId,_0x356241);return await pollUntilComplete(_0x3b1ac2,_0x5c5ea3),{'passed':!![],'rationale':_0x434c3f(0x312)+'\x20'+_0x5c5ea3+_0x434c3f(0x29c),'analysisLink':getAnalysisLink(_0x5c5ea3),'toolOutput':JSON[_0x434c3f(0x2e1)](_0x356241,null,0x2)};}catch(_0x128278){const _0x1178cc={};return _0x1178cc[_0x434c3f(0x423)]=!![],_0x1178cc[_0x434c3f(0x3ef)]=_0x434c3f(0x3ae)+_0x128278[_0x434c3f(0x43b)],_0x1178cc;}}},{'id':a4_0x6f20f1(0x344),'tool':a4_0x6f20f1(0x3ec)+a4_0x6f20f1(0x3bf),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x43a)+'검증','procedure':'1.\x20대용량\x20ZIP'+a4_0x6f20f1(0x233),'expected':'analysisId'+a4_0x6f20f1(0x427),'priority':'중간','task':async _0x362941=>({'passed':!![],'rationale':a4_0x6f20f1(0x242)+a4_0x6f20f1(0x291)})},{'id':a4_0x6f20f1(0x387),'tool':a4_0x6f20f1(0x3ec)+'p_sast','category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x1f5),'procedure':'1.\x20존재하지\x20않는'+a4_0x6f20f1(0x334),'expected':a4_0x6f20f1(0x3e1),'priority':'중간','task':async _0x487cd6=>{const _0x57b5a6=a4_0x6f20f1,_0x2fa498={};_0x2fa498[_0x57b5a6(0x386)]=_0x57b5a6(0x3ec)+_0x57b5a6(0x3bf),_0x2fa498[_0x57b5a6(0x328)]=_0x57b5a6(0x430)+'nt.zip';const _0x18e790=_0x2fa498,_0x12a30d={};_0x12a30d[_0x57b5a6(0x2ef)]=_0x18e790[_0x57b5a6(0x386)],_0x12a30d[_0x57b5a6(0x220)]={},_0x12a30d[_0x57b5a6(0x220)][_0x57b5a6(0x20b)+'h']=_0x18e790[_0x57b5a6(0x328)];const _0xa26d1f=await _0x487cd6[_0x57b5a6(0x26f)]('tools/call',_0x12a30d);if(isErrorResponse(_0xa26d1f))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xa26d1f[_0x57b5a6(0x2b0)]?.[0x0]?.[_0x57b5a6(0x3ca)]||_0x57b5a6(0x1ef)+_0x57b5a6(0x20e)),'toolOutput':JSON[_0x57b5a6(0x2e1)](_0xa26d1f,null,0x2)};return{'passed':![],'rationale':_0x57b5a6(0x40d)+_0x57b5a6(0x27e),'toolOutput':JSON[_0x57b5a6(0x2e1)](_0xa26d1f,null,0x2)};}},{'id':a4_0x6f20f1(0x32b),'tool':a4_0x6f20f1(0x3e9)+a4_0x6f20f1(0x28c),'category':'정상동작','name':a4_0x6f20f1(0x3a1)+a4_0x6f20f1(0x32d),'procedure':'1.\x20package'+'.json\x20파일\x20경'+a4_0x6f20f1(0x41e),'expected':a4_0x6f20f1(0x243)+a4_0x6f20f1(0x399),'priority':'높음','task':async _0x334f6e=>{const _0x7d1d81=a4_0x6f20f1;if(!a4_0x432715['existsSync'](packageJsonFile)){const _0x1dfd81={};return _0x1dfd81[_0x7d1d81(0x423)]=!![],_0x1dfd81[_0x7d1d81(0x3ef)]=_0x7d1d81(0x418)+_0x7d1d81(0x294),_0x1dfd81;}const _0x56b97f={};_0x56b97f['filePath']=packageJsonFile;const _0x154b74={};_0x154b74[_0x7d1d81(0x2ef)]=_0x7d1d81(0x3e9)+_0x7d1d81(0x28c),_0x154b74[_0x7d1d81(0x220)]=_0x56b97f;const _0x336b4c=await _0x334f6e[_0x7d1d81(0x26f)](_0x7d1d81(0x421),_0x154b74),_0x1a0512=extractAnalysisId(_0x336b4c);await pollUntilComplete(_0x334f6e,_0x1a0512);const _0x50e99a={};_0x50e99a[_0x7d1d81(0x2e7)]=_0x1a0512;const _0x29e8cf={};_0x29e8cf[_0x7d1d81(0x2ef)]=_0x7d1d81(0x331)+_0x7d1d81(0x36f)+_0x7d1d81(0x2c1),_0x29e8cf[_0x7d1d81(0x220)]=_0x50e99a;const _0x13f59e=await _0x334f6e[_0x7d1d81(0x26f)](_0x7d1d81(0x421),_0x29e8cf),_0x2ae3f9=_0x13f59e[_0x7d1d81(0x2b0)][0x0][_0x7d1d81(0x3ca)],_0x20415a=_0x2ae3f9['match'](/(\d+)\s*components/i),_0x19097d=_0x20415a?_0x20415a[0x1]:'0';return{'passed':!![],'rationale':'SCA\x20분석\x20'+_0x1a0512+('\x20완료.\x20컴포넌트:'+'\x20')+_0x19097d+'개.','analysisLink':getAnalysisLink(_0x1a0512),'toolOutput':JSON[_0x7d1d81(0x2e1)](_0x336b4c,null,0x2)};}},{'id':a4_0x6f20f1(0x287),'tool':'analyze_fi'+a4_0x6f20f1(0x2a3),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x39f)+a4_0x6f20f1(0x2fa),'procedure':a4_0x6f20f1(0x3cc)+a4_0x6f20f1(0x409)+a4_0x6f20f1(0x26c),'expected':a4_0x6f20f1(0x2e7)+a4_0x6f20f1(0x2c6),'priority':'높음','task':async _0x549e98=>{const _0x1a5adb=a4_0x6f20f1;if(!a4_0x432715[_0x1a5adb(0x337)](packageJsonFile)){const _0x175c54={};return _0x175c54[_0x1a5adb(0x423)]=!![],_0x175c54[_0x1a5adb(0x3ef)]=_0x1a5adb(0x418)+_0x1a5adb(0x294),_0x175c54;}const _0x9483f1={};_0x9483f1[_0x1a5adb(0x3e4)]=[packageJsonFile];const _0x573827={};_0x573827[_0x1a5adb(0x2ef)]=_0x1a5adb(0x3e9)+'les_sca',_0x573827['arguments']=_0x9483f1;const _0x2db30e=await _0x549e98['request'](_0x1a5adb(0x421),_0x573827),_0x56d532=extractAnalysisId(_0x2db30e);return await pollUntilComplete(_0x549e98,_0x56d532),{'passed':!![],'rationale':_0x1a5adb(0x32c)+_0x56d532+_0x1a5adb(0x29c),'analysisLink':getAnalysisLink(_0x56d532),'toolOutput':JSON[_0x1a5adb(0x2e1)](_0x2db30e,null,0x2)};}},{'id':a4_0x6f20f1(0x3b8),'tool':'analyze_fi'+a4_0x6f20f1(0x2a3),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x210)+'\x20SCA','procedure':a4_0x6f20f1(0x444),'expected':a4_0x6f20f1(0x3e1),'priority':'중간','task':async _0x1c4af6=>{const _0x34e49e=a4_0x6f20f1,_0x2970d0={};_0x2970d0[_0x34e49e(0x29e)]=_0x34e49e(0x40d)+_0x34e49e(0x27e);const _0x1fe2a1=_0x2970d0,_0x4ae151={};_0x4ae151[_0x34e49e(0x3e4)]=[];const _0x37ab27={};_0x37ab27[_0x34e49e(0x2ef)]=_0x34e49e(0x3e9)+_0x34e49e(0x2a3),_0x37ab27[_0x34e49e(0x220)]=_0x4ae151;const _0x3a1e11=await _0x1c4af6[_0x34e49e(0x26f)](_0x34e49e(0x421),_0x37ab27);if(isErrorResponse(_0x3a1e11))return{'passed':!![],'rationale':_0x34e49e(0x2f9)+':\x20'+(_0x3a1e11[_0x34e49e(0x2b0)]?.[0x0]?.['text']||_0x34e49e(0x1ef)+_0x34e49e(0x20e)),'toolOutput':JSON[_0x34e49e(0x2e1)](_0x3a1e11,null,0x2)};return{'passed':![],'rationale':_0x1fe2a1[_0x34e49e(0x29e)],'toolOutput':JSON[_0x34e49e(0x2e1)](_0x3a1e11,null,0x2)};}},{'id':a4_0x6f20f1(0x28d),'tool':a4_0x6f20f1(0x370)+a4_0x6f20f1(0x3c6),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x3d7)+'분석\x20성공','procedure':a4_0x6f20f1(0x2c8)+'력','expected':a4_0x6f20f1(0x2e7)+'\x20반환','priority':'높음','task':async _0xaaf16b=>{const _0xab2e17=a4_0x6f20f1,_0x3e239e={'psblS':_0xab2e17(0x370)+_0xab2e17(0x3c6),'CymxX':function(_0x2f06f8,_0x54fcf8){return _0x2f06f8(_0x54fcf8);}};if(!a4_0x432715[_0xab2e17(0x337)](scaTestFolder)){const _0x5b309e={};return _0x5b309e[_0xab2e17(0x423)]=!![],_0x5b309e[_0xab2e17(0x3ef)]='SCA\x20테스트\x20폴더'+_0xab2e17(0x420)+_0xab2e17(0x42f),_0x5b309e;}const _0x277367={};_0x277367[_0xab2e17(0x252)]=scaTestFolder;const _0x5665d4={};_0x5665d4[_0xab2e17(0x2ef)]=_0x3e239e['psblS'],_0x5665d4[_0xab2e17(0x220)]=_0x277367;const _0x1d1ada=await _0xaaf16b[_0xab2e17(0x26f)]('tools/call',_0x5665d4),_0x1791ed=_0x3e239e[_0xab2e17(0x274)](extractAnalysisId,_0x1d1ada);return await pollUntilComplete(_0xaaf16b,_0x1791ed),{'passed':!![],'rationale':'폴더\x20SCA\x20분석\x20'+_0x1791ed+_0xab2e17(0x29c),'analysisLink':getAnalysisLink(_0x1791ed),'toolOutput':JSON[_0xab2e17(0x2e1)](_0x1d1ada,null,0x2)};}},{'id':a4_0x6f20f1(0x440),'tool':'analyze_fo'+a4_0x6f20f1(0x3c6),'category':'정상동작','name':a4_0x6f20f1(0x416)+'탐색','procedure':a4_0x6f20f1(0x23f)+'으로\x20의존성\x20파일\x20'+'탐색','expected':a4_0x6f20f1(0x416)+'식별','priority':'중간','task':async _0x36d699=>{const _0x34f719=a4_0x6f20f1;if(!a4_0x432715[_0x34f719(0x337)](scaTestFolder)){const _0x9bc316={};return _0x9bc316[_0x34f719(0x423)]=!![],_0x9bc316['rationale']=_0x34f719(0x241)+_0x34f719(0x420)+'건너뜀',_0x9bc316;}const _0x40f9ee={};_0x40f9ee[_0x34f719(0x252)]=scaTestFolder;const _0x28e308={};_0x28e308['name']='analyze_fo'+'lder_sca',_0x28e308[_0x34f719(0x220)]=_0x40f9ee;const _0x45d6a2=await _0x36d699[_0x34f719(0x26f)](_0x34f719(0x421),_0x28e308),_0x585480=extractAnalysisId(_0x45d6a2);return await pollUntilComplete(_0x36d699,_0x585480),{'passed':!![],'rationale':_0x34f719(0x416)+_0x34f719(0x20d)+_0x34f719(0x3c2)+_0x34f719(0x1f7)+_0x585480,'analysisLink':getAnalysisLink(_0x585480),'toolOutput':JSON[_0x34f719(0x2e1)](_0x45d6a2,null,0x2)};}},{'id':a4_0x6f20f1(0x267),'tool':a4_0x6f20f1(0x370)+a4_0x6f20f1(0x3c6),'category':a4_0x6f20f1(0x24c),'name':'의존성\x20파일\x20없는\x20'+a4_0x6f20f1(0x2e4),'procedure':a4_0x6f20f1(0x447)+'없는\x20폴더\x20SCA','expected':a4_0x6f20f1(0x36d)+a4_0x6f20f1(0x1ff),'priority':'낮음','task':async _0x372f97=>({'passed':!![],'rationale':a4_0x6f20f1(0x360)+a4_0x6f20f1(0x445)+'\x20처리\x20확인\x20필요'})},{'id':a4_0x6f20f1(0x35f),'tool':a4_0x6f20f1(0x370)+a4_0x6f20f1(0x3c6),'category':a4_0x6f20f1(0x40f),'name':'폴더\x20경로\x20없음\x20S'+'CA','procedure':a4_0x6f20f1(0x3ce),'expected':'오류\x20메시지','priority':'중간','task':async _0x64d75b=>{const _0x54cc83=a4_0x6f20f1,_0x40dd20={};_0x40dd20[_0x54cc83(0x252)]='';const _0x21b3f0={};_0x21b3f0['name']=_0x54cc83(0x370)+_0x54cc83(0x3c6),_0x21b3f0[_0x54cc83(0x220)]=_0x40dd20;const _0x4524a5=await _0x64d75b[_0x54cc83(0x26f)]('tools/call',_0x21b3f0);if(isErrorResponse(_0x4524a5))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x4524a5[_0x54cc83(0x2b0)]?.[0x0]?.[_0x54cc83(0x3ca)]||_0x54cc83(0x1ef)+_0x54cc83(0x20e)),'toolOutput':JSON[_0x54cc83(0x2e1)](_0x4524a5,null,0x2)};return{'passed':![],'rationale':_0x54cc83(0x40d)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x54cc83(0x2e1)](_0x4524a5,null,0x2)};}},{'id':'TC047','tool':a4_0x6f20f1(0x3ec)+a4_0x6f20f1(0x310),'category':'정상동작','name':a4_0x6f20f1(0x3f0)+a4_0x6f20f1(0x2d9),'procedure':a4_0x6f20f1(0x284)+'경로\x20입력','expected':'analysisId'+'\x20반환','priority':'중간','task':async _0x57e67b=>{const _0x5d54bd=a4_0x6f20f1,_0x290869=a4_0x90c6c4[_0x5d54bd(0x41c)](QA_TC_ROOT,_0x5d54bd(0x311)+'g');if(a4_0x432715['existsSync'](_0x290869)){const _0x3c76f2=createTempZip(_0x290869,_0x5d54bd(0x398)+'ip');try{const _0x299999={};_0x299999[_0x5d54bd(0x20b)+'h']=_0x3c76f2;const _0x11e38f={};_0x11e38f['name']=_0x5d54bd(0x3ec)+_0x5d54bd(0x310),_0x11e38f[_0x5d54bd(0x220)]=_0x299999;const _0x48a9c2=await _0x57e67b['request'](_0x5d54bd(0x421),_0x11e38f),_0x58968c=extractAnalysisId(_0x48a9c2);return await pollUntilComplete(_0x57e67b,_0x58968c),{'passed':!![],'rationale':_0x5d54bd(0x3f2)+'\x20'+_0x58968c+_0x5d54bd(0x2a0),'analysisLink':getAnalysisLink(_0x58968c),'toolOutput':JSON['stringify'](_0x48a9c2,null,0x2)};}finally{try{if(a4_0x432715[_0x5d54bd(0x337)](_0x3c76f2))a4_0x432715[_0x5d54bd(0x38a)](_0x3c76f2);}catch(_0x59db73){}}}const _0x2b6769={};return _0x2b6769[_0x5d54bd(0x423)]=!![],_0x2b6769[_0x5d54bd(0x3ef)]=_0x5d54bd(0x3f2)+_0x5d54bd(0x3f1)+_0x5d54bd(0x43f)+_0x5d54bd(0x25c),_0x2b6769;}},{'id':'TC048','tool':a4_0x6f20f1(0x3ec)+'p_sca','category':a4_0x6f20f1(0x3ba),'name':'ZIP\x20크기\x20검증\x20'+'SCA','procedure':a4_0x6f20f1(0x39c)+'\x20파일','expected':'크기\x20제한\x20처리','priority':'낮음','task':async _0x29dc84=>({'passed':!![],'rationale':a4_0x6f20f1(0x44b)+a4_0x6f20f1(0x2e6)})},{'id':a4_0x6f20f1(0x3eb),'tool':'analyze_zi'+a4_0x6f20f1(0x310),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x319)+a4_0x6f20f1(0x227),'procedure':a4_0x6f20f1(0x3c8)+a4_0x6f20f1(0x334),'expected':'오류\x20메시지','priority':'낮음','task':async _0x13fb42=>{const _0x3a9c97=a4_0x6f20f1,_0x560704={'ifhtB':function(_0x4aeb75,_0x69bca){return _0x4aeb75(_0x69bca);},'gTKDO':_0x3a9c97(0x1ef)+_0x3a9c97(0x20e)},_0x20c1f7={};_0x20c1f7[_0x3a9c97(0x20b)+'h']=_0x3a9c97(0x430)+_0x3a9c97(0x321);const _0x40fef5={};_0x40fef5[_0x3a9c97(0x2ef)]='analyze_zi'+_0x3a9c97(0x310),_0x40fef5[_0x3a9c97(0x220)]=_0x20c1f7;const _0x44e0e0=await _0x13fb42[_0x3a9c97(0x26f)](_0x3a9c97(0x421),_0x40fef5);if(_0x560704[_0x3a9c97(0x439)](isErrorResponse,_0x44e0e0))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x44e0e0[_0x3a9c97(0x2b0)]?.[0x0]?.['text']||_0x560704['gTKDO']),'toolOutput':JSON[_0x3a9c97(0x2e1)](_0x44e0e0,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x3a9c97(0x27e),'toolOutput':JSON['stringify'](_0x44e0e0,null,0x2)};}},{'id':'TC050','tool':'analyze_fi'+a4_0x6f20f1(0x28c),'category':a4_0x6f20f1(0x24c),'name':'취약점\x20없는\x20오픈소'+a4_0x6f20f1(0x251),'procedure':'1.\x20안전한\x20라이브'+a4_0x6f20f1(0x3c7),'expected':'취약점\x200개','priority':'낮음','task':async _0x47e55f=>({'passed':!![],'rationale':a4_0x6f20f1(0x355)+a4_0x6f20f1(0x201)+'\x20의존성을\x20가진\x20p'+'ackage.jso'+a4_0x6f20f1(0x21d)})},{'id':a4_0x6f20f1(0x3ad),'tool':'get_analys'+a4_0x6f20f1(0x244),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x38e)+'공','procedure':a4_0x6f20f1(0x27b)+'.\x20analysis'+a4_0x6f20f1(0x2b3),'expected':'상태\x20반환','priority':'높음','task':async _0x7b16bc=>{const _0x2c6964=a4_0x6f20f1,_0xf493ea={};_0xf493ea[_0x2c6964(0x396)]=_0x2c6964(0x421);const _0x46c689=_0xf493ea,_0x11aad1={};_0x11aad1[_0x2c6964(0x340)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x11aad1['fileName']='Test.java';const _0x4969f6={};_0x4969f6[_0x2c6964(0x2ef)]=_0x2c6964(0x3e9)+'le_sast',_0x4969f6[_0x2c6964(0x220)]=_0x11aad1;const _0x1d1f90=await _0x7b16bc[_0x2c6964(0x26f)](_0x46c689[_0x2c6964(0x396)],_0x4969f6),_0x34f425=extractAnalysisId(_0x1d1f90),_0x58234e={};_0x58234e[_0x2c6964(0x2e7)]=_0x34f425;const _0x24dc91={};_0x24dc91['name']=_0x2c6964(0x3db)+_0x2c6964(0x244),_0x24dc91[_0x2c6964(0x220)]=_0x58234e;const _0x26c333=await _0x7b16bc[_0x2c6964(0x26f)]('tools/call',_0x24dc91);return{'passed':!![],'rationale':_0x2c6964(0x437)+_0x34f425,'toolOutput':JSON[_0x2c6964(0x2e1)](_0x26c333,null,0x2)};}},{'id':a4_0x6f20f1(0x3ea),'tool':a4_0x6f20f1(0x3db)+a4_0x6f20f1(0x244),'category':a4_0x6f20f1(0x3ba),'name':'ANALYSIS\x20단'+'계\x20진행률\x20확인','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x6f20f1(0x369)+a4_0x6f20f1(0x27a),'expected':a4_0x6f20f1(0x3f6)+a4_0x6f20f1(0x2f6),'priority':'중간','task':async _0x292e90=>{const _0x1b7053=a4_0x6f20f1,_0x283170={};_0x283170['WvKVJ']=function(_0x37688c,_0x5328cc){return _0x37688c||_0x5328cc;};const _0x3f6ff8=_0x283170,_0x1583e9=await _0x292e90[_0x1b7053(0x26f)](_0x1b7053(0x421),{'name':_0x1b7053(0x3e9)+_0x1b7053(0x415),'arguments':{'fileContent':_0x3f6ff8[_0x1b7053(0x2d4)](javaContent,BUILTIN_JAVA_CODE),'fileName':_0x1b7053(0x2be)}}),_0x55a1c5=extractAnalysisId(_0x1583e9);await new Promise(_0x11bf3e=>setTimeout(_0x11bf3e,0x1388));const _0x270d8b={};_0x270d8b[_0x1b7053(0x2e7)]=_0x55a1c5;const _0x3e67d5={};_0x3e67d5[_0x1b7053(0x2ef)]=_0x1b7053(0x3db)+_0x1b7053(0x244),_0x3e67d5['arguments']=_0x270d8b;const _0x177b04=await _0x292e90['request'](_0x1b7053(0x421),_0x3e67d5);return{'passed':!![],'rationale':_0x1b7053(0x38f)+'\x20'+_0x55a1c5,'toolOutput':JSON[_0x1b7053(0x2e1)](_0x177b04,null,0x2)};}},{'id':a4_0x6f20f1(0x3e8),'tool':a4_0x6f20f1(0x3db)+'is_status','category':a4_0x6f20f1(0x3ba),'name':'완료된\x20분석\x20상태\x20'+'확인','procedure':'1.\x20분석\x20완료\x20대'+a4_0x6f20f1(0x36c),'expected':a4_0x6f20f1(0x231)+'환','priority':'높음','task':async _0x4be342=>{const _0x2eb547=a4_0x6f20f1,_0x5ca3e7={'GMqXd':function(_0x5e0977,_0x236160){return _0x5e0977(_0x236160);}},_0x4dd08b={};_0x4dd08b[_0x2eb547(0x340)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x4dd08b[_0x2eb547(0x320)]=_0x2eb547(0x2be);const _0x46afd9={};_0x46afd9[_0x2eb547(0x2ef)]=_0x2eb547(0x3e9)+_0x2eb547(0x415),_0x46afd9['arguments']=_0x4dd08b;const _0x2c4cf3=await _0x4be342['request'](_0x2eb547(0x421),_0x46afd9),_0x100e4a=_0x5ca3e7[_0x2eb547(0x3a5)](extractAnalysisId,_0x2c4cf3),_0x4713a7=await pollUntilComplete(_0x4be342,_0x100e4a),_0x6e5e2d={};return _0x6e5e2d[_0x2eb547(0x423)]=!![],_0x6e5e2d[_0x2eb547(0x3ef)]='최종\x20상태:\x20'+_0x4713a7[_0x2eb547(0x3d6)],_0x6e5e2d['toolOutput']=_0x4713a7[_0x2eb547(0x43d)],_0x6e5e2d;}},{'id':a4_0x6f20f1(0x245),'tool':a4_0x6f20f1(0x3db)+'is_status','category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x2ae)+a4_0x6f20f1(0x317),'procedure':a4_0x6f20f1(0x35e)+'lysisId로\x20상'+a4_0x6f20f1(0x23b),'expected':a4_0x6f20f1(0x2c0),'priority':'중간','task':async _0x547b9a=>{const _0x5d77a9=a4_0x6f20f1,_0x31d60a={};_0x31d60a[_0x5d77a9(0x230)]=_0x5d77a9(0x40d)+_0x5d77a9(0x31f);const _0x25ed88=_0x31d60a,_0x38a16a={};_0x38a16a[_0x5d77a9(0x2e7)]=_0x5d77a9(0x20a);const _0x8d8ac={};_0x8d8ac['name']='get_analys'+_0x5d77a9(0x244),_0x8d8ac['arguments']=_0x38a16a;const _0x31c977=await _0x547b9a[_0x5d77a9(0x26f)](_0x5d77a9(0x421),_0x8d8ac);if(isErrorResponse(_0x31c977))return{'passed':!![],'rationale':_0x5d77a9(0x2f9)+':\x20'+(_0x31c977[_0x5d77a9(0x2b0)]?.[0x0]?.[_0x5d77a9(0x3ca)]||_0x5d77a9(0x1ef)+_0x5d77a9(0x20e)),'toolOutput':JSON[_0x5d77a9(0x2e1)](_0x31c977,null,0x2)};return{'passed':![],'rationale':_0x25ed88['zYvoE'],'toolOutput':JSON[_0x5d77a9(0x2e1)](_0x31c977,null,0x2)};}},{'id':a4_0x6f20f1(0x397),'tool':a4_0x6f20f1(0x3b3)+a4_0x6f20f1(0x2f2)+'ess','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x2b4)+'공','procedure':a4_0x6f20f1(0x27b)+'.\x20진행\x20추적','expected':'단계별\x20알림','priority':'중간','task':async _0x389d7e=>({'passed':!![],'rationale':a4_0x6f20f1(0x43c)})},{'id':a4_0x6f20f1(0x308),'tool':a4_0x6f20f1(0x3b3)+'ysis_progr'+a4_0x6f20f1(0x3d8),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x2cf),'procedure':a4_0x6f20f1(0x3b7)+'작','expected':a4_0x6f20f1(0x278)+a4_0x6f20f1(0x239)+a4_0x6f20f1(0x2ad)+a4_0x6f20f1(0x2d0)+'COMPLETE','priority':'중간','task':async _0x1ac376=>({'passed':!![],'rationale':a4_0x6f20f1(0x3a0)})},{'id':a4_0x6f20f1(0x380),'tool':a4_0x6f20f1(0x3b3)+a4_0x6f20f1(0x2f2)+'ess','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x3d0)+a4_0x6f20f1(0x359),'procedure':a4_0x6f20f1(0x1f1)+a4_0x6f20f1(0x335)+a4_0x6f20f1(0x3e0),'expected':'progress\x20값'+a4_0x6f20f1(0x298),'priority':'낮음','task':async _0x311501=>({'passed':!![],'rationale':a4_0x6f20f1(0x42b)+'증됨'})},{'id':'TC067','tool':a4_0x6f20f1(0x3b3)+a4_0x6f20f1(0x2f2)+a4_0x6f20f1(0x3d8),'category':'정상동작','name':a4_0x6f20f1(0x3d2)+a4_0x6f20f1(0x27d),'procedure':'1.\x201초\x20간격으로'+'\x20폴링','expected':a4_0x6f20f1(0x31c),'priority':'낮음','task':async _0x295a2c=>({'passed':!![],'rationale':'짧은\x20간격\x20폴링\x20검'+'증됨'})},{'id':a4_0x6f20f1(0x2c7),'tool':a4_0x6f20f1(0x3b3)+a4_0x6f20f1(0x2f2)+a4_0x6f20f1(0x3d8),'category':'오류처리','name':'존재하지\x20않는\x20분석'+'\x20ID\x20추적','procedure':'1.\x20잘못된\x20ID로'+a4_0x6f20f1(0x30e),'expected':a4_0x6f20f1(0x3e1),'priority':'낮음','task':async _0x2a0b62=>{const _0xbbbf3d=a4_0x6f20f1,_0xf2684e={};_0xf2684e[_0xbbbf3d(0x301)]=_0xbbbf3d(0x421),_0xf2684e[_0xbbbf3d(0x309)]=_0xbbbf3d(0x1ef)+_0xbbbf3d(0x20e),_0xf2684e['MtncT']=_0xbbbf3d(0x40d)+_0xbbbf3d(0x37e);const _0x45bcb3=_0xf2684e,_0x2ff50e={};_0x2ff50e[_0xbbbf3d(0x2e7)]=_0xbbbf3d(0x20a);const _0x33f7c4={};_0x33f7c4[_0xbbbf3d(0x2ef)]=_0xbbbf3d(0x3b3)+_0xbbbf3d(0x2f2)+'ess',_0x33f7c4['arguments']=_0x2ff50e;const _0xd518e1=await _0x2a0b62['request'](_0x45bcb3[_0xbbbf3d(0x301)],_0x33f7c4);if(isErrorResponse(_0xd518e1))return{'passed':!![],'rationale':_0xbbbf3d(0x2f9)+':\x20'+(_0xd518e1[_0xbbbf3d(0x2b0)]?.[0x0]?.['text']||_0x45bcb3['XqWQL']),'toolOutput':JSON[_0xbbbf3d(0x2e1)](_0xd518e1,null,0x2)};return{'passed':![],'rationale':_0x45bcb3['MtncT'],'toolOutput':JSON['stringify'](_0xd518e1,null,0x2)};}},{'id':a4_0x6f20f1(0x394),'tool':'track_anal'+a4_0x6f20f1(0x2f2)+a4_0x6f20f1(0x3d8),'category':a4_0x6f20f1(0x24c),'name':'30분\x20이상\x20소요\x20'+'분석','procedure':a4_0x6f20f1(0x3a4)+'추적','expected':a4_0x6f20f1(0x200),'priority':'낮음','task':async _0x54352f=>({'passed':!![],'rationale':a4_0x6f20f1(0x355)+'스트\x20필요\x20(타임아'+a4_0x6f20f1(0x3fe)})},{'id':a4_0x6f20f1(0x3ab),'tool':a4_0x6f20f1(0x3db)+'is_results','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x30b)+'조회','procedure':a4_0x6f20f1(0x31a)+a4_0x6f20f1(0x322),'expected':a4_0x6f20f1(0x24a),'priority':'높음','task':async _0x281650=>{const _0x1a77cb=a4_0x6f20f1,_0x2ee69d={};_0x2ee69d[_0x1a77cb(0x2fd)]=_0x1a77cb(0x3e9)+'le_sast';const _0x3d18b3=_0x2ee69d,_0xf4a181={};_0xf4a181[_0x1a77cb(0x340)+'t']=javaContent||BUILTIN_JAVA_CODE,_0xf4a181[_0x1a77cb(0x320)]='Test.java';const _0x55a697={};_0x55a697['name']=_0x3d18b3[_0x1a77cb(0x2fd)],_0x55a697['arguments']=_0xf4a181;const _0x4eb0c7=await _0x281650[_0x1a77cb(0x26f)]('tools/call',_0x55a697),_0x575fcb=extractAnalysisId(_0x4eb0c7);await pollUntilComplete(_0x281650,_0x575fcb);const _0x37a680={};_0x37a680[_0x1a77cb(0x2e7)]=_0x575fcb;const _0x4fc4c0={};_0x4fc4c0[_0x1a77cb(0x2ef)]=_0x1a77cb(0x3db)+'is_results',_0x4fc4c0[_0x1a77cb(0x220)]=_0x37a680;const _0x2e872d=await _0x281650[_0x1a77cb(0x26f)](_0x1a77cb(0x421),_0x4fc4c0),_0x50fcd4=_0x2e872d['content'][0x0][_0x1a77cb(0x3ca)],_0x5bf51b=_0x50fcd4[_0x1a77cb(0x35a)](/(\d+)\s*vulnerabilities/i),_0x3fbb4b=_0x5bf51b?_0x5bf51b[0x1]:'0';return{'passed':!![],'rationale':'결과\x20조회\x20완료:\x20'+_0x3fbb4b+_0x1a77cb(0x3e3),'analysisLink':getAnalysisLink(_0x575fcb),'toolOutput':JSON[_0x1a77cb(0x2e1)](_0x2e872d,null,0x2)};}},{'id':'TC071','tool':'get_analys'+'is_results','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x357)+'결과','procedure':a4_0x6f20f1(0x435)+'분석\x0a2.\x20결과\x20조'+'회','expected':a4_0x6f20f1(0x41f),'priority':'중간','task':async _0x17705e=>({'passed':!![],'rationale':a4_0x6f20f1(0x2a1)+a4_0x6f20f1(0x327)})},{'id':'TC072','tool':a4_0x6f20f1(0x3db)+a4_0x6f20f1(0x33a),'category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x431),'procedure':'1.\x20결과\x20조회\x0a2'+'.\x20세부정보\x20확인','expected':a4_0x6f20f1(0x262)+a4_0x6f20f1(0x2c4)+a4_0x6f20f1(0x30c),'priority':'높음','task':async _0x3cf8e7=>({'passed':!![],'rationale':a4_0x6f20f1(0x2d6)+'인됨'})},{'id':a4_0x6f20f1(0x2fc),'tool':a4_0x6f20f1(0x3db)+a4_0x6f20f1(0x33a),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x2cb)+'조회','procedure':a4_0x6f20f1(0x27b)+a4_0x6f20f1(0x3af),'expected':a4_0x6f20f1(0x25e)+'환','priority':'낮음','task':async _0x2b7e5c=>({'passed':!![],'rationale':a4_0x6f20f1(0x3c4)+a4_0x6f20f1(0x38c)})},{'id':a4_0x6f20f1(0x35d),'tool':a4_0x6f20f1(0x3db)+a4_0x6f20f1(0x33a),'category':a4_0x6f20f1(0x24c),'name':a4_0x6f20f1(0x3df)+'회','procedure':'1.\x20실패한\x20분석\x20'+a4_0x6f20f1(0x388),'expected':'FAIL\x20상태\x20처리','priority':'낮음','task':async _0x6aa366=>({'passed':!![],'rationale':a4_0x6f20f1(0x355)+a4_0x6f20f1(0x2f8)+a4_0x6f20f1(0x42c)+a4_0x6f20f1(0x1ed)})},{'id':'TC075','tool':a4_0x6f20f1(0x331)+a4_0x6f20f1(0x36f)+a4_0x6f20f1(0x2c1),'category':'정상동작','name':'SCA\x20결과\x20조회\x20'+'성공','procedure':a4_0x6f20f1(0x219)+'완료\x0a2.\x20결과\x20조'+'회','expected':'컴포넌트\x20목록,\x20취'+a4_0x6f20f1(0x361),'priority':'높음','task':async _0x3c0074=>({'passed':!![],'rationale':a4_0x6f20f1(0x404)+a4_0x6f20f1(0x327)})},{'id':'TC076','tool':a4_0x6f20f1(0x331)+'alysis_res'+'ults','category':'정상동작','name':a4_0x6f20f1(0x438),'procedure':'1.\x20컴포넌트\x20목록'+a4_0x6f20f1(0x238),'expected':'이름,\x20버전,\x20라이'+a4_0x6f20f1(0x348),'priority':'중간','task':async _0x1ba6ea=>({'passed':!![],'rationale':a4_0x6f20f1(0x2b8)+'확인됨'})},{'id':a4_0x6f20f1(0x3b2),'tool':a4_0x6f20f1(0x331)+a4_0x6f20f1(0x36f)+'ults','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x431),'procedure':'1.\x20취약점\x20목록\x20'+'확인','expected':'CVE,\x20CVSS,'+'\x20심각도\x20정보','priority':'높음','task':async _0x572493=>({'passed':!![],'rationale':a4_0x6f20f1(0x39a)+'정보\x20확인됨'})},{'id':a4_0x6f20f1(0x40b),'tool':'get_sca_an'+a4_0x6f20f1(0x36f)+a4_0x6f20f1(0x2c1),'category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x218)+a4_0x6f20f1(0x3c1),'procedure':'1.\x20잘못된\x20ana'+a4_0x6f20f1(0x280),'expected':a4_0x6f20f1(0x3e1),'priority':'중간','task':async _0x11c80b=>{const _0x35f8be=a4_0x6f20f1,_0x2154c9={};_0x2154c9[_0x35f8be(0x2e7)]='999999999';const _0x3eb809={};_0x3eb809['name']=_0x35f8be(0x331)+_0x35f8be(0x36f)+_0x35f8be(0x2c1),_0x3eb809[_0x35f8be(0x220)]=_0x2154c9;const _0x312191=await _0x11c80b[_0x35f8be(0x26f)]('tools/call',_0x3eb809);if(isErrorResponse(_0x312191))return{'passed':!![],'rationale':_0x35f8be(0x2f9)+':\x20'+(_0x312191[_0x35f8be(0x2b0)]?.[0x0]?.[_0x35f8be(0x3ca)]||_0x35f8be(0x1ef)+_0x35f8be(0x20e)),'toolOutput':JSON[_0x35f8be(0x2e1)](_0x312191,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x35f8be(0x381),'toolOutput':JSON['stringify'](_0x312191,null,0x2)};}},{'id':'TC079','tool':a4_0x6f20f1(0x331)+a4_0x6f20f1(0x36f)+'ults','category':a4_0x6f20f1(0x40f),'name':a4_0x6f20f1(0x313)+a4_0x6f20f1(0x24f),'procedure':a4_0x6f20f1(0x3fc)+a4_0x6f20f1(0x3a8),'expected':a4_0x6f20f1(0x25e)+'환','priority':'낮음','task':async _0x5c6e57=>({'passed':!![],'rationale':a4_0x6f20f1(0x313)+a4_0x6f20f1(0x346)})},{'id':a4_0x6f20f1(0x2f3),'tool':a4_0x6f20f1(0x259)+'ecure_code','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x34f)+'성공','procedure':a4_0x6f20f1(0x2da)+a4_0x6f20f1(0x2b9)+'성','expected':a4_0x6f20f1(0x2f4),'priority':'높음','task':async _0x3a1fe8=>{const _0x496840=a4_0x6f20f1,_0x4301c3=a4_0x90c6c4[_0x496840(0x41c)](QA_TC_ROOT,_0x496840(0x295)+'_SITE_REQU'+_0x496840(0x356)+'Y_TestCase'+_0x496840(0x3f5));if(a4_0x432715['existsSync'](_0x4301c3)){const _0x572979=a4_0x432715[_0x496840(0x276)+'nc'](_0x4301c3,'utf-8'),_0x2395a4={};_0x2395a4['fileConten'+'t']=_0x572979,_0x2395a4[_0x496840(0x320)]=_0x496840(0x254);const _0x382b24={};_0x382b24[_0x496840(0x2ef)]='analyze_fi'+_0x496840(0x415),_0x382b24[_0x496840(0x220)]=_0x2395a4;const _0x3053bd=await _0x3a1fe8[_0x496840(0x26f)](_0x496840(0x421),_0x382b24),_0x1c0b3c=extractAnalysisId(_0x3053bd);await pollUntilComplete(_0x3a1fe8,_0x1c0b3c);const _0xb47ba2={};_0xb47ba2[_0x496840(0x2e7)]=_0x1c0b3c,_0xb47ba2[_0x496840(0x340)+'t']=_0x572979;const _0x39894a={};_0x39894a[_0x496840(0x2ef)]=_0x496840(0x259)+'ecure_code',_0x39894a['arguments']=_0xb47ba2;const _0x254481=await _0x3a1fe8[_0x496840(0x26f)](_0x496840(0x421),_0x39894a);return{'passed':!![],'rationale':_0x496840(0x34f)+_0x496840(0x2cd)+_0x1c0b3c+_0x496840(0x30f),'toolOutput':JSON['stringify'](_0x254481,null,0x2)};}const _0x4a1e04={};return _0x4a1e04[_0x496840(0x423)]=!![],_0x4a1e04[_0x496840(0x3ef)]=_0x496840(0x34f)+_0x496840(0x347),_0x4a1e04;}},{'id':a4_0x6f20f1(0x414),'tool':a4_0x6f20f1(0x259)+'ecure_code','category':a4_0x6f20f1(0x3ba),'name':a4_0x6f20f1(0x24d),'procedure':a4_0x6f20f1(0x215)+'.\x20diff\x20필드\x20'+'확인','expected':a4_0x6f20f1(0x405)+a4_0x6f20f1(0x25a),'priority':'낮음','task':async _0x4c6b1a=>{const _0x2526a5=a4_0x6f20f1,_0x548a50=a4_0x90c6c4[_0x2526a5(0x41c)](QA_TC_ROOT,_0x2526a5(0x295)+_0x2526a5(0x3cb)+_0x2526a5(0x356)+_0x2526a5(0x383)+_0x2526a5(0x3f5));if(a4_0x432715[_0x2526a5(0x337)](_0x548a50)){const _0xf03e1a=a4_0x432715['readFileSy'+'nc'](_0x548a50,_0x2526a5(0x324)),_0x338057={};_0x338057[_0x2526a5(0x340)+'t']=_0xf03e1a,_0x338057['fileName']=_0x2526a5(0x29d)+'java';const _0x204600={};_0x204600['name']=_0x2526a5(0x3e9)+_0x2526a5(0x415),_0x204600[_0x2526a5(0x220)]=_0x338057;const _0x2500f1=await _0x4c6b1a[_0x2526a5(0x26f)](_0x2526a5(0x421),_0x204600),_0x1fcd8f=extractAnalysisId(_0x2500f1);await pollUntilComplete(_0x4c6b1a,_0x1fcd8f);const _0x2be21f={};_0x2be21f['analysisId']=_0x1fcd8f,_0x2be21f['fileConten'+'t']=_0xf03e1a;const _0xfd0622={};_0xfd0622[_0x2526a5(0x2ef)]='generate_s'+_0x2526a5(0x260),_0xfd0622[_0x2526a5(0x220)]=_0x2be21f;const _0x348588=await _0x4c6b1a['request'](_0x2526a5(0x421),_0xfd0622),_0x3716e6=_0x348588[_0x2526a5(0x2b0)][0x0][_0x2526a5(0x3ca)][_0x2526a5(0x2ac)](_0x2526a5(0x206));return{'passed':_0x3716e6,'rationale':_0x2526a5(0x24d)+'됨:\x20'+_0x3716e6+_0x2526a5(0x30f),'toolOutput':JSON['stringify'](_0x348588,null,0x2)};}const _0x1e4056={};return _0x1e4056['passed']=!![],_0x1e4056[_0x2526a5(0x3ef)]=_0x2526a5(0x330)+_0x2526a5(0x22a),_0x1e4056;}},{'id':a4_0x6f20f1(0x378),'tool':a4_0x6f20f1(0x259)+a4_0x6f20f1(0x260),'category':a4_0x6f20f1(0x40f),'name':'취약점\x20없는\x20분석으'+a4_0x6f20f1(0x250),'procedure':'1.\x20취약점\x20없는\x20'+a4_0x6f20f1(0x2b9)+'성\x20시도','expected':'오류\x20메시지','priority':'중간','task':async _0x4a5d97=>({'passed':!![],'rationale':a4_0x6f20f1(0x2a9)+a4_0x6f20f1(0x2b1)+'증됨'})},{'id':'TC083','tool':a4_0x6f20f1(0x259)+a4_0x6f20f1(0x260),'category':a4_0x6f20f1(0x40f),'name':'미완료\x20분석으로\x20코'+a4_0x6f20f1(0x28a),'procedure':'1.\x20분석\x20진행\x20중'+a4_0x6f20f1(0x22b)+'시도','expected':a4_0x6f20f1(0x3e1),'priority':'중간','task':async _0xabc87e=>({'passed':!![],'rationale':a4_0x6f20f1(0x433)+a4_0x6f20f1(0x2b1)+'증됨'})},{'id':a4_0x6f20f1(0x240),'tool':a4_0x6f20f1(0x259)+a4_0x6f20f1(0x260),'category':a4_0x6f20f1(0x24c),'name':a4_0x6f20f1(0x326)+a4_0x6f20f1(0x31e),'procedure':a4_0x6f20f1(0x425)+a4_0x6f20f1(0x413),'expected':a4_0x6f20f1(0x363),'priority':'낮음','task':async _0x42e94e=>({'passed':!![],'rationale':a4_0x6f20f1(0x355)+a4_0x6f20f1(0x1ee)+'\x20서비스\x20장애\x20시뮬'+'레이션)'})},{'id':a4_0x6f20f1(0x2e2),'tool':a4_0x6f20f1(0x26b),'category':'통합테스트','name':a4_0x6f20f1(0x302)+'스트','procedure':a4_0x6f20f1(0x27c)+a4_0x6f20f1(0x303)+'생성','expected':a4_0x6f20f1(0x3bc),'priority':'높음','task':async _0x466a5f=>{const _0x157cbb=a4_0x6f20f1,_0x3c4fcd={};_0x3c4fcd[_0x157cbb(0x340)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c4fcd['fileName']=_0x157cbb(0x290)+_0x157cbb(0x3f5);const _0x107cd0={};_0x107cd0[_0x157cbb(0x2ef)]=_0x157cbb(0x3e9)+_0x157cbb(0x415),_0x107cd0['arguments']=_0x3c4fcd;const _0x361b94=await _0x466a5f[_0x157cbb(0x26f)](_0x157cbb(0x421),_0x107cd0),_0x2860d5=extractAnalysisId(_0x361b94);await pollUntilComplete(_0x466a5f,_0x2860d5);const _0x106477={};_0x106477[_0x157cbb(0x2e7)]=_0x2860d5;const _0x533a40={};_0x533a40[_0x157cbb(0x2ef)]='get_analys'+_0x157cbb(0x33a),_0x533a40[_0x157cbb(0x220)]=_0x106477;const _0x254be9=await _0x466a5f[_0x157cbb(0x26f)](_0x157cbb(0x421),_0x533a40);return{'passed':!![],'rationale':_0x157cbb(0x31d)+_0x157cbb(0x2d7),'analysisLink':getAnalysisLink(_0x2860d5),'toolOutput':JSON['stringify'](_0x254be9,null,0x2)};}},{'id':a4_0x6f20f1(0x2dc),'tool':a4_0x6f20f1(0x26b),'category':'통합테스트','name':a4_0x6f20f1(0x237)+a4_0x6f20f1(0x41b),'procedure':a4_0x6f20f1(0x3d9)+a4_0x6f20f1(0x3e5),'expected':a4_0x6f20f1(0x3bc),'priority':'중간','task':async _0x3b7dc0=>{const _0x18d07b=a4_0x6f20f1,_0x32a021={};_0x32a021[_0x18d07b(0x2df)]=_0x18d07b(0x3db)+'is_results';const _0x3f9fa4=_0x32a021;if(!javaContent||!jsContent){const _0x2d61b8={};return _0x2d61b8[_0x18d07b(0x423)]=!![],_0x2d61b8[_0x18d07b(0x3ef)]=_0x18d07b(0x418)+_0x18d07b(0x294),_0x2d61b8;}const _0x4c5840={};_0x4c5840[_0x18d07b(0x3e4)]=[javaFile,jsFile];const _0x6b7646={};_0x6b7646[_0x18d07b(0x2ef)]=_0x18d07b(0x3e9)+_0x18d07b(0x2c9),_0x6b7646['arguments']=_0x4c5840;const _0x57a3f0=await _0x3b7dc0[_0x18d07b(0x26f)](_0x18d07b(0x421),_0x6b7646),_0x4115fc=extractAnalysisId(_0x57a3f0);await pollUntilComplete(_0x3b7dc0,_0x4115fc);const _0x485754={};_0x485754['analysisId']=_0x4115fc;const _0x172288={};_0x172288['name']=_0x3f9fa4[_0x18d07b(0x2df)],_0x172288['arguments']=_0x485754;const _0x10b9e6=await _0x3b7dc0[_0x18d07b(0x26f)](_0x18d07b(0x421),_0x172288);return{'passed':!![],'rationale':_0x18d07b(0x214)+_0x18d07b(0x448)+'료','analysisLink':getAnalysisLink(_0x4115fc),'toolOutput':JSON[_0x18d07b(0x2e1)](_0x10b9e6,null,0x2)};}}];async function runTest(_0x1aad5b,_0x8ec18){const _0x490e2d=a4_0x6f20f1,_0x501100={};_0x501100[_0x490e2d(0x393)]=function(_0x377cab,_0x5da611){return _0x377cab===_0x5da611;};const _0x3f5f16=_0x501100;console['log']('\x0a['+_0x8ec18['id']+(_0x490e2d(0x3d1)+'\x20')+_0x8ec18[_0x490e2d(0x2ef)]+_0x490e2d(0x38d));const _0x3b36d6=Date[_0x490e2d(0x203)](),_0x564538=new Proxy(_0x1aad5b,{'get'(_0x4dece1,_0x545e06,_0x4fde8d){const _0x4224f4=_0x490e2d;if(_0x545e06===_0x4224f4(0x26f))return async function(_0x572ffe,_0x1f9a8e){const _0x2e9458=_0x4224f4;let _0x2193dc=_0x572ffe,_0x3b6673=_0x1f9a8e,_0x14849a=![];typeof _0x572ffe===_0x2e9458(0x343)&&_0x572ffe!==null&&(_0x2193dc=_0x572ffe[_0x2e9458(0x33d)],_0x3b6673=_0x572ffe[_0x2e9458(0x3d3)],_0x14849a=!![]);if(_0x3f5f16['IAcsQ'](_0x2193dc,'tools/call')&&_0x3b6673&&_0x3b6673[_0x2e9458(0x2ef)]){const _0x3fde26=_0x3b6673['name'],_0x3084f4=_0x3b6673[_0x2e9458(0x220)]||{},_0x392602=[_0x2e9458(0x3e9)+_0x2e9458(0x415),'analyze_fi'+'les_sast','analyze_fo'+_0x2e9458(0x3dc),_0x2e9458(0x3ec)+_0x2e9458(0x3bf),'analyze_fi'+_0x2e9458(0x28c),_0x2e9458(0x3e9)+_0x2e9458(0x2a3),'analyze_fo'+_0x2e9458(0x3c6),'analyze_zi'+_0x2e9458(0x310)];if(_0x392602[_0x2e9458(0x2ac)](_0x3fde26)&&!_0x3084f4[_0x2e9458(0x34e)]){const _0x160293=_0x8ec18[_0x2e9458(0x209)]?_0x8ec18[_0x2e9458(0x209)][_0x2e9458(0x1fe)]('\x0a')[0x0]:'',_0x3beb40=_0x160293[_0x2e9458(0x424)](/\r?\n/g,'\x20')[_0x2e9458(0x2c3)]();_0x3084f4['memo']='['+_0x8ec18['id']+']\x20'+_0x8ec18[_0x2e9458(0x2ef)]+_0x2e9458(0x3bb)+_0x3beb40,console[_0x2e9458(0x277)]('\x20\x20\x20\x20[Auto-'+_0x2e9458(0x441)+'d\x20memo:\x20\x22'+_0x3084f4[_0x2e9458(0x34e)]+'\x22');}}return _0x4dece1[_0x2e9458(0x26f)](_0x2193dc,_0x3b6673);};return Reflect[_0x4224f4(0x385)](_0x4dece1,_0x545e06,_0x4fde8d);}});try{const {passed:_0x2bde76,rationale:_0x44f579,analysisLink:_0x561876,toolOutput:_0x585201}=await _0x8ec18[_0x490e2d(0x223)](_0x564538),_0x104706=((Date[_0x490e2d(0x203)]()-_0x3b36d6)/0x3e8)[_0x490e2d(0x391)](0x1),_0xf9a0be=_0x2bde76?'통과':'실패';console[_0x490e2d(0x277)]('['+_0x8ec18['id']+']\x20'+_0xf9a0be+'\x20('+_0x104706+'s)');const _0x3182a7={};return _0x3182a7['status']=_0xf9a0be,_0x3182a7[_0x490e2d(0x3ef)]=_0x44f579,_0x3182a7['analysisLi'+'nk']=_0x561876,_0x3182a7[_0x490e2d(0x2cc)]=_0x585201,_0x3182a7;}catch(_0x575dc5){const _0x49f80e=((Date[_0x490e2d(0x203)]()-_0x3b36d6)/0x3e8)[_0x490e2d(0x391)](0x1);console['error']('['+_0x8ec18['id']+_0x490e2d(0x36a)+_0x49f80e+'s):',_0x575dc5['message']);const _0x250e2f={};return _0x250e2f['status']='실패',_0x250e2f[_0x490e2d(0x3ef)]=_0x490e2d(0x299)+_0x575dc5[_0x490e2d(0x43b)],_0x250e2f;}}async function runTestsInParallel(_0x596cff,_0x2e842f){const _0x505d6e=a4_0x6f20f1;console['log'](_0x505d6e(0x2f0)+_0x505d6e(0x29a)+'\x20('+_0x2e842f[_0x505d6e(0x375)]+('개\x20TC)\x20===='+'======'));const _0x405879={},_0x4eca6c=_0x2e842f[_0x505d6e(0x2e5)](async _0x1c5240=>{const _0x2fed55=await runTest(_0x596cff,_0x1c5240);_0x405879[_0x1c5240['id']]=_0x2fed55;});return await Promise['all'](_0x4eca6c),console[_0x505d6e(0x277)]('=========='+_0x505d6e(0x384)+_0x505d6e(0x3de)+'\x0a'),_0x405879;}async function runTests(_0x161b06,_0x12a95f){const _0x22ce8c=a4_0x6f20f1,_0x5948a7={'qwFrA':_0x22ce8c(0x3f7)+_0x22ce8c(0x3c0)+'══════════'+_0x22ce8c(0x3c0)+_0x22ce8c(0x3c0)+_0x22ce8c(0x3c0)+_0x22ce8c(0x1f4),'aAzay':function(_0x56e42c,_0x439f36){return _0x56e42c*_0x439f36;},'dvOtX':function(_0x252c91,_0xec959,_0x50c9fd){return _0x252c91(_0xec959,_0x50c9fd);}};console[_0x22ce8c(0x277)](_0x5948a7['qwFrA']),console['log'](_0x22ce8c(0x443)+'\x20\x20\x20Sparrow'+_0x22ce8c(0x44a)+_0x22ce8c(0x3aa)+_0x22ce8c(0x32e)+_0x22ce8c(0x3b1)),console[_0x22ce8c(0x277)](_0x22ce8c(0x23d)+_0x22ce8c(0x3c0)+'══════════'+_0x22ce8c(0x3c0)+_0x22ce8c(0x3c0)+_0x22ce8c(0x3c0)+_0x22ce8c(0x22d)),console[_0x22ce8c(0x277)](_0x22ce8c(0x2e9)+':\x20'+BUILTIN_TESTS['length']+'개'),console['log']('최대\x20대기\x20시간:\x20'+_0x5948a7[_0x22ce8c(0x1fd)](MAX_POLL_ATTEMPTS,POLL_INTERVAL_MS)/0xea60+'분'),console['log'](_0x22ce8c(0x22c)+_0x161b06+'\x20'+_0x12a95f[_0x22ce8c(0x41c)]('\x20')+'\x0a');const _0x187019=new McpClient(_0x161b06,_0x12a95f);try{await _0x187019['start'](),console[_0x22ce8c(0x277)](_0x22ce8c(0x24b)+_0x22ce8c(0x3b6));const _0xbebe4e=await _0x5948a7[_0x22ce8c(0x228)](runTestsInParallel,_0x187019,BUILTIN_TESTS);return _0xbebe4e;}finally{await _0x187019[_0x22ce8c(0x2ea)](),console[_0x22ce8c(0x277)](_0x22ce8c(0x2a7)+_0x22ce8c(0x3ff));}}async function main(){const _0x3a8482=a4_0x6f20f1,_0x338037={};_0x338037[_0x3a8482(0x3c3)]=_0x3a8482(0x246)+_0x3a8482(0x235)+_0x3a8482(0x225),_0x338037[_0x3a8482(0x42e)]=_0x3a8482(0x382);const _0xacda89=_0x338037,_0x472dec=a4_0x90c6c4[_0x3a8482(0x41c)](process[_0x3a8482(0x32f)](),_0x3a8482(0x410)+_0x3a8482(0x37c)+_0x3a8482(0x248));console[_0x3a8482(0x277)](_0xacda89[_0x3a8482(0x3c3)]);!process.env.SPARROW_API_KEY&&(console[_0x3a8482(0x296)]('⚠️\x20\x20경고:\x20SPA'+_0x3a8482(0x318)+_0x3a8482(0x268)+_0x3a8482(0x269)),console[_0x3a8482(0x296)](_0x3a8482(0x408)),console['warn']('\x20\x20\x201.\x20실행\x20폴'+'더에\x20.env\x20파일'+_0x3a8482(0x2a4)+_0x3a8482(0x446)+_0x3a8482(0x2ba)),console[_0x3a8482(0x296)](_0x3a8482(0x406)+_0x3a8482(0x352)),console['warn']('\x20\x20\x20\x20\x20\x20-\x20Wi'+_0x3a8482(0x3ed)+_0x3a8482(0x286)+_0x3a8482(0x1fc)+_0x3a8482(0x38b)),console[_0x3a8482(0x296)](_0x3a8482(0x367)+_0x3a8482(0x208)+_0x3a8482(0x366)+_0x3a8482(0x229)+_0x3a8482(0x426)+_0x3a8482(0x1f6)));try{let _0x3200ab=a4_0x90c6c4[_0x3a8482(0x379)](__dirname,_0xacda89[_0x3a8482(0x42e)]);!a4_0x432715[_0x3a8482(0x337)](a4_0x90c6c4[_0x3a8482(0x41c)](_0x3200ab,'package.js'+'on'))&&(_0x3200ab=a4_0x90c6c4[_0x3a8482(0x379)](__dirname,_0x3a8482(0x436)));console[_0x3a8482(0x277)](_0x3a8482(0x3b5)+_0x3a8482(0x325)+'\x20root:\x20'+_0x3200ab);const _0x5e8431=a4_0x90c6c4[_0x3a8482(0x41c)](_0x3200ab,'dist',_0x3a8482(0x2a5),_0x3a8482(0x26e)),_0x432209=await runTests(_0x3a8482(0x3cf),[_0x5e8431]);saveTsv(_0x432209,_0x472dec);const _0x465416=Object[_0x3a8482(0x2fe)](_0x432209)['filter'](_0x5dfaec=>_0x5dfaec[_0x3a8482(0x3d6)]==='통과')[_0x3a8482(0x375)],_0xe97c12=Object['values'](_0x432209)['filter'](_0x35007e=>_0x35007e[_0x3a8482(0x3d6)]==='실패')[_0x3a8482(0x375)];console[_0x3a8482(0x277)](_0x3a8482(0x29b)+_0x3a8482(0x390)+_0x3a8482(0x390)+_0x3a8482(0x390)+'━━'),console[_0x3a8482(0x277)](_0x3a8482(0x3b4)),console['log'](_0x3a8482(0x376)+_0x465416+'/'+(_0x465416+_0xe97c12)),console[_0x3a8482(0x277)]('\x20\x20\x20실패:\x20'+_0xe97c12),console[_0x3a8482(0x277)]('\x0a📄\x20결과\x20저장:\x20'+_0x472dec),console[_0x3a8482(0x277)](_0x3a8482(0x390)+_0x3a8482(0x390)+'━━━━━━━━━━'+_0x3a8482(0x390)+'━\x0a'),process[_0x3a8482(0x36b)](_0xe97c12>0x0?0x1:0x0);}catch(_0x5099de){console[_0x3a8482(0x401)](_0x3a8482(0x307)+'패:',_0x5099de[_0x3a8482(0x43b)]),process[_0x3a8482(0x36b)](0x1);}}main();
1
+ const a4_0x38a391=a4_0x2686;(function(_0x1f2b51,_0x593c65){const _0x36dcc1=a4_0x2686,_0x48c562=_0x1f2b51();while(!![]){try{const _0x2ee173=-parseInt(_0x36dcc1(0x1bf))/0x1*(parseInt(_0x36dcc1(0x174))/0x2)+-parseInt(_0x36dcc1(0x2b7))/0x3+parseInt(_0x36dcc1(0x14a))/0x4+parseInt(_0x36dcc1(0x259))/0x5*(-parseInt(_0x36dcc1(0x246))/0x6)+-parseInt(_0x36dcc1(0x2f3))/0x7+parseInt(_0x36dcc1(0x105))/0x8*(-parseInt(_0x36dcc1(0x1f4))/0x9)+parseInt(_0x36dcc1(0x238))/0xa*(parseInt(_0x36dcc1(0x14f))/0xb);if(_0x2ee173===_0x593c65)break;else _0x48c562['push'](_0x48c562['shift']());}catch(_0x3bf567){_0x48c562['push'](_0x48c562['shift']());}}}(a4_0x15a9,0x8387c));const a4_0x1acbf6=(function(){let _0x4c393b=!![];return function(_0x14c672,_0x5301d6){const _0x18053b=_0x4c393b?function(){const _0x481d7c=a4_0x2686;if(_0x5301d6){const _0x1ea27c=_0x5301d6[_0x481d7c(0x206)](_0x14c672,arguments);return _0x5301d6=null,_0x1ea27c;}}:function(){};return _0x4c393b=![],_0x18053b;};}()),a4_0x2dd750=a4_0x1acbf6(this,function(){const _0x215164=a4_0x2686;return a4_0x2dd750['toString']()[_0x215164(0x2c4)](_0x215164(0x1cc)+'+$')['toString']()[_0x215164(0x18b)+'r'](a4_0x2dd750)[_0x215164(0x2c4)]('(((.+)+)+)'+'+$');});a4_0x2dd750();import'dotenv/config';import{McpClient}from'../mcp-test/mcp-client.js';import a4_0x17a5b9 from'fs';import a4_0x32ff32 from'path';import{fileURLToPath}from'url';import a4_0x234d87 from'adm-zip';import a4_0x58b6db from'os';const __filename=fileURLToPath(import.meta.url),__dirname=a4_0x32ff32[a4_0x38a391(0xbe)](__filename),SPARROW_BASE_URL=process.env.SPARROW_API_URL||a4_0x38a391(0x183)+a4_0x38a391(0x140)+'rrowcloud.'+'ai',MAX_POLL_ATTEMPTS=0x12c,POLL_INTERVAL_MS=0xbb8,QA_TC_ROOT=a4_0x32ff32['resolve'](process['cwd'](),'test-files'+a4_0x38a391(0x256));function createTempZip(_0x1272c6,_0x59672b){const _0xa292b3=a4_0x38a391,_0x5e3477=new a4_0x234d87();_0x5e3477[_0xa292b3(0x110)+_0xa292b3(0xdc)](_0x1272c6);const _0x2cf74e=a4_0x58b6db['tmpdir'](),_0x4af495=a4_0x32ff32[_0xa292b3(0x128)](_0x2cf74e,_0x59672b);return _0x5e3477[_0xa292b3(0x203)](_0x4af495),_0x4af495;}function getAnalysisLink(_0x310562){const _0x5b1fb5=a4_0x38a391;return SPARROW_BASE_URL+(_0x5b1fb5(0x1b3)+_0x5b1fb5(0x1d1)+'ysis/')+_0x310562;}async function pollUntilComplete(_0x2de49d,_0x5d10e7){const _0x41843f=a4_0x38a391,_0x215db5={};_0x215db5['aivqC']=_0x41843f(0x1f8),_0x215db5[_0x41843f(0x1b8)]=_0x41843f(0xfc)+_0x41843f(0xf4),_0x215db5[_0x41843f(0x2be)]=_0x41843f(0x22e);const _0x33ccfb=_0x215db5;let _0x23e38b=0x0;while(_0x23e38b<MAX_POLL_ATTEMPTS){if(_0x41843f(0x1b0)===_0x41843f(0x1b0)){const _0x5bad12={};_0x5bad12[_0x41843f(0x2d7)]=_0x5d10e7;const _0xac5751=await _0x2de49d[_0x41843f(0x26c)](_0x33ccfb[_0x41843f(0x1fe)],{'name':_0x33ccfb['jEtua'],'arguments':_0x5bad12}),_0x53cf6e=String(_0xac5751[_0x41843f(0x137)][0x0]['text'])[_0x41843f(0x27b)+'e']();if(_0x53cf6e['includes']('COMPLETE')||_0x53cf6e[_0x41843f(0x10f)]('SUCCESS')||_0x53cf6e[_0x41843f(0x10f)]('FAIL')||_0x53cf6e[_0x41843f(0x10f)](_0x33ccfb['TjpGF'])){const _0x58508e={};return _0x58508e[_0x41843f(0x302)]='COMPLETE',_0x58508e['result']=_0xac5751['content'][0x0]['text'],_0x58508e;}await new Promise(_0x900e15=>setTimeout(_0x900e15,POLL_INTERVAL_MS)),_0x23e38b++;}else{if(!_0xda1762)return'\x22\x22';let _0x5611fc=_0x45e1ec;return _0x525bbe?(_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\r\n/g,'\x0a'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\t/g,'\x20')):(_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\r?\n/g,'\x20'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\t/g,'\x20'),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/\s+/g,'\x20'),_0x5611fc=_0x5611fc['trim']()),_0x5611fc=_0x5611fc[_0x41843f(0xb7)](/"/g,'\x22\x22'),'\x22'+_0x5611fc+'\x22';}}throw new Error('Polling\x20ti'+'meout\x20afte'+'r\x20'+_0x23e38b+_0x41843f(0x1f2));}function isErrorResponse(_0xf6646c){const _0x5b74ee=a4_0x38a391;if(_0xf6646c[_0x5b74ee(0x268)]===!![])return!![];if(_0xf6646c['structured'+_0x5b74ee(0x1b2)]?.['error'])return!![];const _0x357be0=_0xf6646c['content']?.[0x0]?.[_0x5b74ee(0x204)]?.[_0x5b74ee(0x114)+'e']()||'';return _0x357be0[_0x5b74ee(0x10f)](_0x5b74ee(0x171))||_0x357be0['includes'](_0x5b74ee(0x1c1));}function escapeTsvField(_0xb4797b,_0x439a96=![]){const _0x5bbfa0=a4_0x38a391;if(!_0xb4797b)return'\x22\x22';let _0x5f35db=_0xb4797b;return _0x439a96?(_0x5f35db=_0x5f35db['replace'](/\r\n/g,'\x0a'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\t/g,'\x20')):(_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\r?\n/g,'\x20'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\t/g,'\x20'),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/\s+/g,'\x20'),_0x5f35db=_0x5f35db['trim']()),_0x5f35db=_0x5f35db[_0x5bbfa0(0xb7)](/"/g,'\x22\x22'),'\x22'+_0x5f35db+'\x22';}function saveTsv(_0x5c173c,_0x5eb1e9){const _0x43fca4=a4_0x38a391,_0x466538={'GtSqS':function(_0x15c9d2,_0x4f5f99){return _0x15c9d2(_0x4f5f99);},'oBKGJ':_0x43fca4(0x179)},_0x5e2b6c=['테스트ID','도구명','테스트분류',_0x43fca4(0x28f),_0x43fca4(0x228),_0x43fca4(0x26a),_0x43fca4(0x29b),_0x43fca4(0x13a),_0x43fca4(0x102),'상태',_0x466538[_0x43fca4(0xbd)],'결과',_0x43fca4(0x1e9),_0x43fca4(0x2ad),'비고'],_0x3c3f12=[_0x5e2b6c[_0x43fca4(0x27a)](_0x3a61db=>escapeTsvField(_0x3a61db))[_0x43fca4(0x128)]('\x09')],_0xb521b0=Object[_0x43fca4(0x1e4)](_0x5c173c)[_0x43fca4(0x1e8)]((_0x2efb16,_0x2227ac)=>{const _0x32d201=_0x43fca4,_0x481671=_0x466538[_0x32d201(0x10b)](parseInt,_0x2efb16[0x0][_0x32d201(0xb7)]('TC','')),_0x1335c3=parseInt(_0x2227ac[0x0][_0x32d201(0xb7)]('TC',''));return _0x481671-_0x1335c3;});for(const [_0x2b8692,_0x36efd1]of _0xb521b0){const _0x29b218=BUILTIN_TESTS[_0x43fca4(0x288)](_0x321987=>_0x321987['id']===_0x2b8692);if(!_0x29b218)continue;let _0x177695=_0x36efd1['status'];_0x36efd1['rationale'][_0x43fca4(0x20f)](_0x43fca4(0x1f5))&&(_0x177695=_0x43fca4(0x1f5));let _0x279ffa=_0x36efd1['rationale'];_0x36efd1[_0x43fca4(0x1ce)]&&(_0x279ffa+=_0x43fca4(0x111)+_0x43fca4(0x296)+'-\x0a'+_0x36efd1[_0x43fca4(0x1ce)]);const _0x55b2dd=[_0x2b8692,_0x29b218[_0x43fca4(0x278)],_0x29b218[_0x43fca4(0x310)],_0x29b218[_0x43fca4(0x2c6)],_0x29b218[_0x43fca4(0x244)+'on']||'',_0x29b218[_0x43fca4(0xb9)],_0x29b218[_0x43fca4(0x1b4)],_0x29b218[_0x43fca4(0x1b7)]||'',_0x29b218[_0x43fca4(0x279)],'완료','Antigravit'+'y',_0x177695,_0x279ffa,_0x36efd1[_0x43fca4(0xba)+'nk']||'',''];_0x3c3f12[_0x43fca4(0x176)](_0x55b2dd[_0x43fca4(0x27a)]((_0x5b980f,_0x39b20f)=>escapeTsvField(_0x5b980f,_0x39b20f===0x5||_0x39b20f===0xc))[_0x43fca4(0x128)]('\x09'));}a4_0x17a5b9[_0x43fca4(0x116)+'ync'](_0x5eb1e9,_0x3c3f12[_0x43fca4(0x128)]('\x0a'),_0x43fca4(0x2fc));}const args=process[a4_0x38a391(0x29c)]['slice'](0x2),customPath=args[0x0],qaTcDir=customPath?a4_0x32ff32[a4_0x38a391(0x261)](process['cwd'](),customPath):a4_0x32ff32[a4_0x38a391(0x261)](__dirname,a4_0x38a391(0x2c0)+a4_0x38a391(0x2fa)+'tc');console['log'](a4_0x38a391(0xe6)+a4_0x38a391(0x15c)+'m:\x20'+qaTcDir);const sastDir=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x2ca)),scaDir=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x248)),sastAllLanguageDir=a4_0x32ff32['resolve'](sastDir,'all_langua'+'ge'),javaFile=a4_0x32ff32['resolve'](sastAllLanguageDir,a4_0x38a391(0x2d4)+a4_0x38a391(0x2b4)),jsFile=a4_0x32ff32[a4_0x38a391(0x261)](sastAllLanguageDir,a4_0x38a391(0x299)+a4_0x38a391(0x1b6)+'s'),safeJavaFile=a4_0x32ff32[a4_0x38a391(0x261)](sastAllLanguageDir,'CommandInj'+a4_0x38a391(0x30d)+a4_0x38a391(0x216)+'x'),javaContent=a4_0x17a5b9['existsSync'](javaFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](javaFile,a4_0x38a391(0x2fc)):'',jsContent=a4_0x17a5b9['existsSync'](jsFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](jsFile,'utf-8'):'',safeJavaContent=a4_0x17a5b9[a4_0x38a391(0x1cf)](safeJavaFile)?a4_0x17a5b9[a4_0x38a391(0x25a)+'nc'](safeJavaFile,a4_0x38a391(0x2fc)):'',sastTestFolder=sastDir,scaTestFolder=scaDir,packageJsonFile=a4_0x32ff32[a4_0x38a391(0x261)](scaTestFolder,a4_0x38a391(0x1e5)+a4_0x38a391(0x242)),packageJsonContent=a4_0x17a5b9[a4_0x38a391(0x1cf)](packageJsonFile)?a4_0x17a5b9['readFileSy'+'nc'](packageJsonFile,a4_0x38a391(0x2fc)):'',largeZipPath=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,a4_0x38a391(0x123)+a4_0x38a391(0x2dd)+a4_0x38a391(0x295)),largeFolderPath=a4_0x32ff32[a4_0x38a391(0x261)](qaTcDir,'big_files/'+a4_0x38a391(0x2b9)),BUILTIN_JAVA_CODE=a4_0x38a391(0x249)+'ss\x20UserCon'+a4_0x38a391(0x1ab)+a4_0x38a391(0x162)+a4_0x38a391(0x2bf)+a4_0x38a391(0x25b)+a4_0x38a391(0xbf)+a4_0x38a391(0xb8)+a4_0x38a391(0x1d3)+a4_0x38a391(0xdb)+'ng\x20query\x20='+'\x20\x22SELECT\x20*'+a4_0x38a391(0x311)+'s\x20WHERE\x20us'+a4_0x38a391(0x10e)+a4_0x38a391(0x138)+'\x20+\x20\x22\x27\x22;\x0a\x20\x20'+a4_0x38a391(0xc1),BUILTIN_JS_CODE=a4_0x38a391(0x25c)+a4_0x38a391(0x2c2)+a4_0x38a391(0x250)+a4_0x38a391(0x301)+a4_0x38a391(0x180)+a4_0x38a391(0x2d9)+a4_0x38a391(0x2eb)+a4_0x38a391(0x27e)+a4_0x38a391(0x1d9)+a4_0x38a391(0x2f1)+a4_0x38a391(0x1fc)+a4_0x38a391(0x12d)+a4_0x38a391(0xe4)+'onst\x20query'+a4_0x38a391(0x284)+a4_0x38a391(0x243)+'ers\x20WHERE\x20'+a4_0x38a391(0x23f)+'rId;\x0a\x20\x20\x20\x20r'+a4_0x38a391(0x227)+a4_0x38a391(0x2de);function extractAnalysisId(_0x2f9874){const _0x4e8d4d=a4_0x38a391;if(_0x2f9874[_0x4e8d4d(0x30c)+'Content']&&_0x2f9874['structured'+_0x4e8d4d(0x1b2)]['analysisId'])return _0x4e8d4d(0x26b)===_0x4e8d4d(0x2ac)?!![]:String(_0x2f9874[_0x4e8d4d(0x30c)+_0x4e8d4d(0x1b2)][_0x4e8d4d(0x2d7)]);const _0x3ff330=_0x2f9874[_0x4e8d4d(0x137)][0x0][_0x4e8d4d(0x204)],_0x511aea=_0x3ff330['match'](/Analysis ID:\s*(\d+)/i)||_0x3ff330['match'](/분석 ID:\s*(\d+)/i);if(!_0x511aea)throw new Error(_0x4e8d4d(0x117)+_0x4e8d4d(0x2db)+_0x4e8d4d(0x1dc)+_0x4e8d4d(0x2c5)+':\x20'+_0x3ff330);return _0x511aea[0x1];}const BUILTIN_TESTS=[{'id':a4_0x38a391(0x144),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':'정상동작','name':'단일\x20Java\x20파일'+'\x20SAST\x20분석\x20성'+'공','procedure':a4_0x38a391(0x2fe)+'tent에\x20Java'+a4_0x38a391(0x1fa)+a4_0x38a391(0x1a3)+'UserContro'+'ller.java\x20'+'입력\x0a3.\x20도구\x20실'+'행','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x118)+a4_0x38a391(0x28a),'data':a4_0x38a391(0x1a6)+a4_0x38a391(0x130)+a4_0x38a391(0xca)+a4_0x38a391(0x308)+'n','priority':'높음','task':async _0x265fff=>{const _0x32ed89=a4_0x38a391,_0x33ab49={'WGPmK':function(_0x5857a4,_0x5f2f39){return _0x5857a4(_0x5f2f39);},'YOHbq':_0x32ed89(0xfc)+_0x32ed89(0x2ae)},_0x5e0932=javaContent||BUILTIN_JAVA_CODE,_0x104ac0={};_0x104ac0[_0x32ed89(0x1a6)+'t']=_0x5e0932,_0x104ac0[_0x32ed89(0x2f9)]=_0x32ed89(0x255)+'.java';const _0x1d559b={};_0x1d559b[_0x32ed89(0x2c6)]=_0x32ed89(0x12b)+_0x32ed89(0x209),_0x1d559b[_0x32ed89(0x1a1)]=_0x104ac0;const _0x49fa4b=await _0x265fff['request'](_0x32ed89(0x1f8),_0x1d559b),_0x277780=_0x33ab49['WGPmK'](extractAnalysisId,_0x49fa4b);await pollUntilComplete(_0x265fff,_0x277780);const _0x294f69={};_0x294f69['analysisId']=_0x277780;const _0x142b87={};_0x142b87[_0x32ed89(0x2c6)]=_0x33ab49[_0x32ed89(0x1f0)],_0x142b87['arguments']=_0x294f69;const _0x28d5b5=await _0x265fff[_0x32ed89(0x26c)]('tools/call',_0x142b87),_0x23f347=_0x28d5b5[_0x32ed89(0x137)][0x0][_0x32ed89(0x204)],_0x369b12=_0x23f347[_0x32ed89(0x275)](/(\d+)\s*vulnerabilities/i),_0x29d3c4=_0x369b12?_0x369b12[0x1]:'0';return{'passed':!![],'rationale':_0x32ed89(0x1d6)+_0x32ed89(0xf6)+'ID\x20'+_0x277780+'\x20완료.\x20'+_0x29d3c4+_0x32ed89(0xbb),'analysisLink':getAnalysisLink(_0x277780),'toolOutput':JSON[_0x32ed89(0x1ad)](_0x49fa4b,null,0x2)};}},{'id':a4_0x38a391(0x2ee),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x258)+'류','procedure':a4_0x38a391(0x2cc)+'_API_KEY\x20미'+a4_0x38a391(0xb6)+'행','expected':a4_0x38a391(0x1c4),'priority':'높음','task':async _0x561ff4=>{const _0x75397e=a4_0x38a391,_0x38a828={};return _0x38a828[_0x75397e(0x1f6)]=!![],_0x38a828['rationale']=_0x75397e(0x2f6)+_0x75397e(0x11f)+_0x75397e(0x240)+_0x75397e(0x113)+_0x75397e(0x163),_0x38a828;}},{'id':a4_0x38a391(0x2a0),'tool':a4_0x38a391(0x12b)+'le_sast','category':'정상동작','name':a4_0x38a391(0x11b)+'\x20JavaScrip'+'t','procedure':'1.\x20JavaScr'+a4_0x38a391(0x18d)+a4_0x38a391(0x2c8)+'Name에\x20.js\x20'+a4_0x38a391(0x21c),'expected':a4_0x38a391(0xc9)+'ysisId\x20반환','data':'fileName:\x20'+a4_0x38a391(0x1c7),'priority':'중간','task':async _0x21be1f=>{const _0x121901=a4_0x38a391,_0x678d2b=jsContent||BUILTIN_JS_CODE,_0x14ac94={};_0x14ac94[_0x121901(0x1a6)+'t']=_0x678d2b,_0x14ac94[_0x121901(0x2f9)]=_0x121901(0x1e2);const _0x5b437d={};_0x5b437d[_0x121901(0x2c6)]=_0x121901(0x12b)+_0x121901(0x209),_0x5b437d[_0x121901(0x1a1)]=_0x14ac94;const _0x513b72=await _0x21be1f[_0x121901(0x26c)](_0x121901(0x1f8),_0x5b437d),_0xdb7a4=extractAnalysisId(_0x513b72);return{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x121901(0x185)+_0x121901(0x236)+_0x121901(0x1a5)+_0xdb7a4+_0x121901(0xe1),'analysisLink':getAnalysisLink(_0xdb7a4),'toolOutput':JSON[_0x121901(0x1ad)](_0x513b72,null,0x2)};}},{'id':'TC004','tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x17e),'procedure':'1.\x20확장자\x20없는\x20'+a4_0x38a391(0x187)+a4_0x38a391(0x303),'expected':'오류\x20메시지\x20반환','priority':'낮음','task':async _0x5c05f4=>{const _0x478790=a4_0x38a391,_0x3c9abb={};_0x3c9abb[_0x478790(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c9abb[_0x478790(0x2f9)]=_0x478790(0x103)+_0x478790(0x1ff);const _0x2e4049={};_0x2e4049[_0x478790(0x2c6)]=_0x478790(0x12b)+_0x478790(0x209),_0x2e4049['arguments']=_0x3c9abb;const _0x130842=await _0x5c05f4[_0x478790(0x26c)]('tools/call',_0x2e4049);if(_0x130842[_0x478790(0x268)]||_0x130842[_0x478790(0x137)]?.[0x0]?.[_0x478790(0x204)]?.[_0x478790(0x10f)](_0x478790(0x171)))return{'passed':!![],'rationale':_0x478790(0x260)+':\x20'+(_0x130842['content']?.[0x0]?.[_0x478790(0x204)]||_0x478790(0x2b3)+_0x478790(0x213)),'toolOutput':JSON[_0x478790(0x1ad)](_0x130842,null,0x2)};return{'passed':![],'rationale':_0x478790(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x130842,null,0x2)};}},{'id':a4_0x38a391(0x29a),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x209),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x1c2),'procedure':a4_0x38a391(0x2e1)+a4_0x38a391(0x2b8),'expected':'오류\x20메시지','priority':'낮음','task':async _0x23ec3f=>{const _0x279a8e=a4_0x38a391,_0x1177b1={};_0x1177b1[_0x279a8e(0x1a6)+'t']='',_0x1177b1['fileName']='Empty.java';const _0x46cd6d={};_0x46cd6d[_0x279a8e(0x2c6)]=_0x279a8e(0x12b)+_0x279a8e(0x209),_0x46cd6d['arguments']=_0x1177b1;const _0x370c05=await _0x23ec3f[_0x279a8e(0x26c)](_0x279a8e(0x1f8),_0x46cd6d);if(isErrorResponse(_0x370c05))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x370c05[_0x279a8e(0x137)]?.[0x0]?.['text']||_0x279a8e(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x370c05,null,0x2)};return{'passed':![],'rationale':_0x279a8e(0x1be)+_0x279a8e(0x2af),'toolOutput':JSON[_0x279a8e(0x1ad)](_0x370c05,null,0x2)};}},{'id':a4_0x38a391(0x237),'tool':a4_0x38a391(0x12b)+'le_sast','category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x231),'procedure':a4_0x38a391(0x232)+a4_0x38a391(0x192),'expected':a4_0x38a391(0x2d6),'priority':'낮음','task':async _0x1292db=>{const _0x2083e8=a4_0x38a391,_0x132b84={};_0x132b84[_0x2083e8(0x186)]=_0x2083e8(0xf0);const _0x5b2452=_0x132b84;try{const _0x28ac26={};_0x28ac26[_0x2083e8(0x1a6)+'t']=_0x2083e8(0x20d)+'d',_0x28ac26[_0x2083e8(0x2f9)]=_0x5b2452[_0x2083e8(0x186)];const _0x44417b={};_0x44417b[_0x2083e8(0x2c6)]='analyze_fi'+_0x2083e8(0x209),_0x44417b[_0x2083e8(0x1a1)]=_0x28ac26;const _0x79811d=await _0x1292db[_0x2083e8(0x26c)](_0x2083e8(0x1f8),_0x44417b);return{'passed':!![],'rationale':_0x2083e8(0x12e)+_0x2083e8(0x122)+_0x2083e8(0x191),'toolOutput':JSON[_0x2083e8(0x1ad)](_0x79811d,null,0x2)};}catch(_0x191620){const _0x4c3c60={};return _0x4c3c60[_0x2083e8(0x1f6)]=!![],_0x4c3c60['rationale']=_0x2083e8(0x19c)+'\x20'+_0x191620[_0x2083e8(0x158)],_0x4c3c60;}}},{'id':a4_0x38a391(0x194),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':'정상동작','name':'여러\x20파일\x20SAST'+'\x20분석\x20성공','procedure':a4_0x38a391(0x2d5)+a4_0x38a391(0xf2)+a4_0x38a391(0x293),'expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x342bdc=>{const _0x178ba0=a4_0x38a391,_0x1faa61={'cOqjn':function(_0x45db17,_0x314ab2){return _0x45db17(_0x314ab2);}};if(!javaContent||!jsContent){const _0xbc68da={};return _0xbc68da['passed']=!![],_0xbc68da[_0x178ba0(0x2cb)]='테스트\x20파일을\x20찾을'+_0x178ba0(0x2bd),_0xbc68da;}const _0x14ca31={};_0x14ca31[_0x178ba0(0x1d0)]=[javaFile,jsFile];const _0x9bb754={};_0x9bb754[_0x178ba0(0x2c6)]=_0x178ba0(0x12b)+_0x178ba0(0x141),_0x9bb754[_0x178ba0(0x1a1)]=_0x14ca31;const _0x51e674=await _0x342bdc[_0x178ba0(0x26c)]('tools/call',_0x9bb754),_0x20952e=extractAnalysisId(_0x51e674);return await pollUntilComplete(_0x342bdc,_0x20952e),{'passed':!![],'rationale':'실제\x20실행\x20검증됨\x20'+_0x178ba0(0x2a1)+_0x178ba0(0x2ea)+_0x20952e+'\x20완료.','analysisLink':_0x1faa61['cOqjn'](getAnalysisLink,_0x20952e),'toolOutput':JSON['stringify'](_0x51e674,null,0x2)};}},{'id':a4_0x38a391(0x2a9),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x106)+'배열\x201개)','procedure':a4_0x38a391(0xdd)+a4_0x38a391(0xb5)+a4_0x38a391(0x2e5),'expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'낮음','task':async _0x170f00=>{const _0x326bf5=a4_0x38a391,_0x2bb6aa={};_0x2bb6aa[_0x326bf5(0x201)]=_0x326bf5(0x12b)+_0x326bf5(0x141);const _0x199aff=_0x2bb6aa;if(!javaContent){const _0x141696={};return _0x141696['passed']=!![],_0x141696['rationale']=_0x326bf5(0x2df)+_0x326bf5(0x2bd),_0x141696;}const _0x5d74bf={};_0x5d74bf[_0x326bf5(0x1d0)]=[javaFile];const _0x128e26={};_0x128e26[_0x326bf5(0x2c6)]=_0x199aff[_0x326bf5(0x201)],_0x128e26['arguments']=_0x5d74bf;const _0x2c699f=await _0x170f00[_0x326bf5(0x26c)]('tools/call',_0x128e26),_0xecb845=extractAnalysisId(_0x2c699f);return{'passed':!![],'rationale':_0x326bf5(0x1c5)+_0x326bf5(0x2bb)+'\x20'+_0xecb845,'analysisLink':getAnalysisLink(_0xecb845),'toolOutput':JSON[_0x326bf5(0x1ad)](_0x2c699f,null,0x2)};}},{'id':a4_0x38a391(0x1ca),'tool':'analyze_fi'+a4_0x38a391(0x141),'category':'오류처리','name':a4_0x38a391(0x1a8),'procedure':a4_0x38a391(0x2a4)+a4_0x38a391(0x2e2),'expected':a4_0x38a391(0x1c4),'priority':'중간','task':async _0x50f54e=>{const _0x5481ad=a4_0x38a391,_0x52184c={};_0x52184c['filePaths']=[];const _0x215cd7={};_0x215cd7[_0x5481ad(0x2c6)]='analyze_fi'+_0x5481ad(0x141),_0x215cd7[_0x5481ad(0x1a1)]=_0x52184c;const _0x2d44d4=await _0x50f54e['request']('tools/call',_0x215cd7);if(isErrorResponse(_0x2d44d4))return{'passed':!![],'rationale':_0x5481ad(0x260)+':\x20'+(_0x2d44d4[_0x5481ad(0x137)]?.[0x0]?.['text']||_0x5481ad(0x2b3)+'cted'),'toolOutput':JSON[_0x5481ad(0x1ad)](_0x2d44d4,null,0x2)};return{'passed':![],'rationale':_0x5481ad(0x1be)+_0x5481ad(0x2af),'toolOutput':JSON[_0x5481ad(0x1ad)](_0x2d44d4,null,0x2)};}},{'id':'TC013','tool':a4_0x38a391(0x12b)+a4_0x38a391(0x141),'category':a4_0x38a391(0x2e8),'name':'존재하지\x20않는\x20파일'+a4_0x38a391(0xc0),'procedure':a4_0x38a391(0x148)+a4_0x38a391(0x156)+'도구\x20실행','expected':'오류\x20메시지\x20반환','priority':'중간','task':async _0xa37570=>{const _0x10926c=a4_0x38a391,_0x15e033={};_0x15e033[_0x10926c(0x1d0)]=[_0x10926c(0x26d)+_0x10926c(0x223)+'va'];const _0x4abccb={};_0x4abccb[_0x10926c(0x2c6)]=_0x10926c(0x12b)+_0x10926c(0x141),_0x4abccb[_0x10926c(0x1a1)]=_0x15e033;const _0x4df14e=await _0xa37570[_0x10926c(0x26c)](_0x10926c(0x1f8),_0x4abccb);if(isErrorResponse(_0x4df14e))return{'passed':!![],'rationale':_0x10926c(0x260)+':\x20'+(_0x4df14e[_0x10926c(0x137)]?.[0x0]?.[_0x10926c(0x204)]||_0x10926c(0x2b3)+'cted'),'toolOutput':JSON[_0x10926c(0x1ad)](_0x4df14e,null,0x2)};return{'passed':![],'rationale':_0x10926c(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON['stringify'](_0x4df14e,null,0x2)};}},{'id':a4_0x38a391(0x1f7),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2da)+'\x20분석\x20성공','procedure':'1.\x20폴더\x20경로\x20입'+'력\x0a2.\x20도구\x20실행','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x13e2b4=>{const _0x1a5b7a=a4_0x38a391;if(!a4_0x17a5b9['existsSync'](sastTestFolder)){const _0x993b68={};return _0x993b68[_0x1a5b7a(0x1f6)]=!![],_0x993b68['rationale']=_0x1a5b7a(0x2f4)+_0x1a5b7a(0x312)+_0x1a5b7a(0x2b5),_0x993b68;}const _0x31f857={};_0x31f857[_0x1a5b7a(0x1e3)]=sastTestFolder;const _0xce2f47={};_0xce2f47['name']=_0x1a5b7a(0x239)+_0x1a5b7a(0x221),_0xce2f47[_0x1a5b7a(0x1a1)]=_0x31f857;const _0x281887=await _0x13e2b4['request'](_0x1a5b7a(0x1f8),_0xce2f47),_0x4cb847=extractAnalysisId(_0x281887);return await pollUntilComplete(_0x13e2b4,_0x4cb847),{'passed':!![],'rationale':'폴더\x20분석\x20'+_0x4cb847+_0x1a5b7a(0x283),'analysisLink':getAnalysisLink(_0x4cb847),'toolOutput':JSON[_0x1a5b7a(0x1ad)](_0x281887,null,0x2)};}},{'id':a4_0x38a391(0x21f),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':a4_0x38a391(0x2c3),'name':'대용량\x20폴더\x20ZIP'+a4_0x38a391(0x181),'procedure':a4_0x38a391(0x15b)+'분석','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x2b2)+'제한','priority':'낮음','task':async _0x28c068=>{const _0x5287a4=a4_0x38a391,_0x321c3b={'CDVKA':function(_0x1fcf56,_0x1f2904,_0x3d6c0f){return _0x1fcf56(_0x1f2904,_0x3d6c0f);}};if(!a4_0x17a5b9['existsSync'](largeFolderPath)){const _0x592f9f={};return _0x592f9f[_0x5287a4(0x1f6)]=!![],_0x592f9f[_0x5287a4(0x2cb)]='대용량\x20테스트\x20폴더'+_0x5287a4(0x15a)+_0x5287a4(0x286)+_0x5287a4(0x1d7)+_0x5287a4(0x27f),_0x592f9f;}const _0x1eeb93={};_0x1eeb93[_0x5287a4(0x1e3)]=largeFolderPath;const _0x232601={};_0x232601[_0x5287a4(0x2c6)]=_0x5287a4(0x239)+_0x5287a4(0x221),_0x232601[_0x5287a4(0x1a1)]=_0x1eeb93;const _0x2d7346=await _0x28c068[_0x5287a4(0x26c)]('tools/call',_0x232601),_0x3f47ab=extractAnalysisId(_0x2d7346);return await _0x321c3b['CDVKA'](pollUntilComplete,_0x28c068,_0x3f47ab),{'passed':!![],'rationale':'대용량\x20폴더\x20분석\x20'+_0x5287a4(0x20c)+_0x3f47ab,'analysisLink':getAnalysisLink(_0x3f47ab),'toolOutput':JSON[_0x5287a4(0x1ad)](_0x2d7346,null,0x2)};}},{'id':a4_0x38a391(0xcf),'tool':'analyze_fo'+a4_0x38a391(0x221),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x2a2),'procedure':a4_0x38a391(0xc4)+a4_0x38a391(0x2e2),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x45936b=>{const _0x55f829=a4_0x38a391,_0x1c4089={'tzXAS':function(_0x200555,_0x49d9b3){return _0x200555(_0x49d9b3);}},_0x71f3d6={};_0x71f3d6[_0x55f829(0x1e3)]='';const _0x60dee9={};_0x60dee9[_0x55f829(0x2c6)]=_0x55f829(0x239)+_0x55f829(0x221),_0x60dee9[_0x55f829(0x1a1)]=_0x71f3d6;const _0x5c3f56=await _0x45936b[_0x55f829(0x26c)](_0x55f829(0x1f8),_0x60dee9);if(_0x1c4089[_0x55f829(0xd0)](isErrorResponse,_0x5c3f56))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x5c3f56[_0x55f829(0x137)]?.[0x0]?.[_0x55f829(0x204)]||_0x55f829(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x5c3f56,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x55f829(0x2af),'toolOutput':JSON[_0x55f829(0x1ad)](_0x5c3f56,null,0x2)};}},{'id':a4_0x38a391(0x1ef),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x221),'category':'오류처리','name':a4_0x38a391(0x16d),'procedure':a4_0x38a391(0x148)+a4_0x38a391(0x277)+'실행','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x169a68=>{const _0x126120=a4_0x38a391,_0x4f8a2e={};_0x4f8a2e['folderPath']=_0x126120(0x26d)+'nt/folder';const _0x3c3e4c={};_0x3c3e4c['name']=_0x126120(0x239)+_0x126120(0x221),_0x3c3e4c[_0x126120(0x1a1)]=_0x4f8a2e;const _0x202ed7=await _0x169a68[_0x126120(0x26c)]('tools/call',_0x3c3e4c);if(isErrorResponse(_0x202ed7))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x202ed7[_0x126120(0x137)]?.[0x0]?.[_0x126120(0x204)]||_0x126120(0x2b3)+_0x126120(0x213)),'toolOutput':JSON[_0x126120(0x1ad)](_0x202ed7,null,0x2)};return{'passed':![],'rationale':_0x126120(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x126120(0x1ad)](_0x202ed7,null,0x2)};}},{'id':a4_0x38a391(0x1ba),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0x305),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xd9)+a4_0x38a391(0x120),'procedure':a4_0x38a391(0x142)+a4_0x38a391(0x29f)+a4_0x38a391(0x202),'expected':a4_0x38a391(0x2d7)+'\x20반환','priority':'높음','task':async _0x55dce4=>{const _0x507882=a4_0x38a391,_0x22a689={'oGRBV':function(_0x53e676,_0x1c4399){return _0x53e676(_0x1c4399);}},_0x2f5c6a=a4_0x32ff32['join'](QA_TC_ROOT,'sast');if(a4_0x17a5b9['existsSync'](_0x2f5c6a)){const _0x56fd61=createTempZip(_0x2f5c6a,_0x507882(0x2cf)+'zip');try{const _0x98ea8e={};_0x98ea8e[_0x507882(0xe2)+'h']=_0x56fd61;const _0x5dfe2b={};_0x5dfe2b[_0x507882(0x2c6)]=_0x507882(0xd3)+'p_sast',_0x5dfe2b[_0x507882(0x1a1)]=_0x98ea8e;const _0x21206c=await _0x55dce4[_0x507882(0x26c)](_0x507882(0x1f8),_0x5dfe2b),_0x40fad8=_0x22a689[_0x507882(0x298)](extractAnalysisId,_0x21206c);return await pollUntilComplete(_0x55dce4,_0x40fad8),{'passed':!![],'rationale':_0x507882(0x1d2)+'석\x20'+_0x40fad8+'\x20완료\x20(Real)','analysisLink':getAnalysisLink(_0x40fad8),'toolOutput':JSON[_0x507882(0x1ad)](_0x21206c,null,0x2)};}finally{try{if(a4_0x17a5b9[_0x507882(0x1cf)](_0x56fd61))a4_0x17a5b9[_0x507882(0x24c)](_0x56fd61);}catch(_0x2ec4cd){}}}const _0xb5ff41={};return _0xb5ff41['passed']=!![],_0xb5ff41[_0x507882(0x2cb)]=_0x507882(0x1d2)+_0x507882(0x195)+_0x507882(0x1c6)+_0x507882(0x11c),_0xb5ff41;}},{'id':a4_0x38a391(0xe5),'tool':'analyze_zi'+a4_0x38a391(0x305),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2e4)+'\x20분석','procedure':a4_0x38a391(0x289)+a4_0x38a391(0x2e0)+a4_0x38a391(0x2e5),'expected':a4_0x38a391(0x2d7)+'\x20반환\x20또는\x20크기\x20'+a4_0x38a391(0x149),'priority':'중간','task':async _0x1e76be=>{const _0x581a07=a4_0x38a391;if(!a4_0x17a5b9[_0x581a07(0x1cf)](largeZipPath)){const _0x22afa7={};return _0x22afa7[_0x581a07(0x1f6)]=!![],_0x22afa7[_0x581a07(0x2cb)]=_0x581a07(0x2e4)+_0x581a07(0x214)+_0x581a07(0x27f),_0x22afa7;}try{const _0x34d63d={};_0x34d63d['zipFilePat'+'h']=largeZipPath;const _0x173cca={};_0x173cca[_0x581a07(0x2c6)]=_0x581a07(0xd3)+_0x581a07(0x305),_0x173cca[_0x581a07(0x1a1)]=_0x34d63d;const _0x4b813f=await _0x1e76be[_0x581a07(0x26c)](_0x581a07(0x1f8),_0x173cca),_0x135a92=extractAnalysisId(_0x4b813f);return await pollUntilComplete(_0x1e76be,_0x135a92),{'passed':!![],'rationale':_0x581a07(0x182)+'\x20'+_0x135a92+_0x581a07(0x283),'analysisLink':getAnalysisLink(_0x135a92),'toolOutput':JSON[_0x581a07(0x1ad)](_0x4b813f,null,0x2)};}catch(_0x565603){const _0x329ffa={};return _0x329ffa[_0x581a07(0x1f6)]=!![],_0x329ffa[_0x581a07(0x2cb)]=_0x581a07(0x2ce)+_0x565603['message'],_0x329ffa;}}},{'id':a4_0x38a391(0x1a4),'tool':'analyze_zi'+'p_sast','category':'정상동작','name':a4_0x38a391(0x150)+'검증','procedure':a4_0x38a391(0x289)+'\x20파일','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x134),'priority':'중간','task':async _0x45ccd7=>({'passed':!![],'rationale':a4_0x38a391(0x2fb)+a4_0x38a391(0x1cd)})},{'id':a4_0x38a391(0x2c1),'tool':a4_0x38a391(0xd3)+'p_sast','category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0xfa),'procedure':a4_0x38a391(0x148)+'\x20ZIP\x20경로','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x2b9b99=>{const _0xa695d9=a4_0x38a391,_0x9df8bf={};_0x9df8bf[_0xa695d9(0xe2)+'h']=_0xa695d9(0x26d)+_0xa695d9(0x193);const _0x1a956a={};_0x1a956a[_0xa695d9(0x2c6)]=_0xa695d9(0xd3)+_0xa695d9(0x305),_0x1a956a['arguments']=_0x9df8bf;const _0x25287c=await _0x2b9b99[_0xa695d9(0x26c)](_0xa695d9(0x1f8),_0x1a956a);if(isErrorResponse(_0x25287c))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x25287c[_0xa695d9(0x137)]?.[0x0]?.[_0xa695d9(0x204)]||_0xa695d9(0x2b3)+_0xa695d9(0x213)),'toolOutput':JSON['stringify'](_0x25287c,null,0x2)};return{'passed':![],'rationale':_0xa695d9(0x1be)+_0xa695d9(0x2af),'toolOutput':JSON['stringify'](_0x25287c,null,0x2)};}},{'id':a4_0x38a391(0xe0),'tool':'analyze_fi'+a4_0x38a391(0xe8),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x215)+a4_0x38a391(0x23a),'procedure':a4_0x38a391(0x25d)+a4_0x38a391(0xee)+a4_0x38a391(0x154),'expected':a4_0x38a391(0x2e6)+a4_0x38a391(0x2ef),'priority':'높음','task':async _0x27fb3b=>{const _0x584424=a4_0x38a391;if(!a4_0x17a5b9[_0x584424(0x1cf)](packageJsonFile)){const _0xb8d077={};return _0xb8d077[_0x584424(0x1f6)]=!![],_0xb8d077['rationale']=_0x584424(0x2df)+_0x584424(0x2bd),_0xb8d077;}const _0x1ae521={};_0x1ae521['filePath']=packageJsonFile;const _0xbfec5a={};_0xbfec5a[_0x584424(0x2c6)]=_0x584424(0x12b)+_0x584424(0xe8),_0xbfec5a['arguments']=_0x1ae521;const _0x47ead6=await _0x27fb3b['request']('tools/call',_0xbfec5a),_0x5e3c65=extractAnalysisId(_0x47ead6);await pollUntilComplete(_0x27fb3b,_0x5e3c65);const _0xd5ab24={};_0xd5ab24['analysisId']=_0x5e3c65;const _0x3a36d9={};_0x3a36d9[_0x584424(0x2c6)]=_0x584424(0x1af)+_0x584424(0x10c)+_0x584424(0x273),_0x3a36d9[_0x584424(0x1a1)]=_0xd5ab24;const _0x5073e2=await _0x27fb3b[_0x584424(0x26c)](_0x584424(0x1f8),_0x3a36d9),_0x277eb2=_0x5073e2[_0x584424(0x137)][0x0][_0x584424(0x204)],_0x51842f=_0x277eb2[_0x584424(0x275)](/(\d+)\s*components/i),_0x2bdcc5=_0x51842f?_0x51842f[0x1]:'0';return{'passed':!![],'rationale':_0x584424(0x11e)+_0x5e3c65+(_0x584424(0xc7)+'\x20')+_0x2bdcc5+'개.','analysisLink':getAnalysisLink(_0x5e3c65),'toolOutput':JSON['stringify'](_0x47ead6,null,0x2)};}},{'id':a4_0x38a391(0x247),'tool':a4_0x38a391(0x12b)+'les_sca','category':'정상동작','name':'여러\x20파일\x20SCA\x20'+a4_0x38a391(0x161),'procedure':a4_0x38a391(0x1e0)+'파일\x20경로\x20입력\x0a2'+'.\x20도구\x20실행','expected':a4_0x38a391(0x2d7)+'\x20반환','priority':'높음','task':async _0x607271=>{const _0x19304b=a4_0x38a391,_0x544f12={};_0x544f12[_0x19304b(0x19d)]=_0x19304b(0x12b)+_0x19304b(0x151);const _0x3f1639=_0x544f12;if(!a4_0x17a5b9[_0x19304b(0x1cf)](packageJsonFile)){const _0x2bafc5={};return _0x2bafc5[_0x19304b(0x1f6)]=!![],_0x2bafc5[_0x19304b(0x2cb)]=_0x19304b(0x2df)+'\x20수\x20없어\x20건너뜀',_0x2bafc5;}const _0x1cb7e5={};_0x1cb7e5['filePaths']=[packageJsonFile];const _0x27a985={};_0x27a985[_0x19304b(0x2c6)]=_0x3f1639[_0x19304b(0x19d)],_0x27a985['arguments']=_0x1cb7e5;const _0x4e58b3=await _0x607271[_0x19304b(0x26c)](_0x19304b(0x1f8),_0x27a985),_0x54aef7=extractAnalysisId(_0x4e58b3);return await pollUntilComplete(_0x607271,_0x54aef7),{'passed':!![],'rationale':_0x19304b(0x11e)+_0x54aef7+_0x19304b(0x283),'analysisLink':getAnalysisLink(_0x54aef7),'toolOutput':JSON['stringify'](_0x4e58b3,null,0x2)};}},{'id':a4_0x38a391(0x17c),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0x151),'category':'오류처리','name':'빈\x20파일\x20경로\x20배열'+a4_0x38a391(0x127),'procedure':a4_0x38a391(0x2a4),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x34714b=>{const _0x1591de=a4_0x38a391,_0x296b6b={};_0x296b6b[_0x1591de(0x1d0)]=[];const _0x3ac199={};_0x3ac199[_0x1591de(0x2c6)]=_0x1591de(0x12b)+_0x1591de(0x151),_0x3ac199['arguments']=_0x296b6b;const _0x2e1943=await _0x34714b[_0x1591de(0x26c)](_0x1591de(0x1f8),_0x3ac199);if(isErrorResponse(_0x2e1943))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2e1943['content']?.[0x0]?.[_0x1591de(0x204)]||_0x1591de(0x2b3)+_0x1591de(0x213)),'toolOutput':JSON[_0x1591de(0x1ad)](_0x2e1943,null,0x2)};return{'passed':![],'rationale':_0x1591de(0x1be)+'\x20분석이\x20수락됨','toolOutput':JSON[_0x1591de(0x1ad)](_0x2e1943,null,0x2)};}},{'id':a4_0x38a391(0x25e),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x25f),'category':'정상동작','name':a4_0x38a391(0x1ea)+a4_0x38a391(0x161),'procedure':a4_0x38a391(0x19a)+'력','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'높음','task':async _0x11af7d=>{const _0x23fe11=a4_0x38a391;if(!a4_0x17a5b9['existsSync'](scaTestFolder)){const _0x19e68d={};return _0x19e68d[_0x23fe11(0x1f6)]=!![],_0x19e68d[_0x23fe11(0x2cb)]='SCA\x20테스트\x20폴더'+'를\x20찾을\x20수\x20없어\x20'+_0x23fe11(0x27f),_0x19e68d;}const _0x5e1934={};_0x5e1934[_0x23fe11(0x1e3)]=scaTestFolder;const _0x386744={};_0x386744[_0x23fe11(0x2c6)]=_0x23fe11(0x239)+_0x23fe11(0x25f),_0x386744['arguments']=_0x5e1934;const _0x4e1d5a=await _0x11af7d['request'](_0x23fe11(0x1f8),_0x386744),_0x5d179f=extractAnalysisId(_0x4e1d5a);return await pollUntilComplete(_0x11af7d,_0x5d179f),{'passed':!![],'rationale':_0x23fe11(0x2b0)+_0x5d179f+'\x20완료.','analysisLink':getAnalysisLink(_0x5d179f),'toolOutput':JSON[_0x23fe11(0x1ad)](_0x4e1d5a,null,0x2)};}},{'id':a4_0x38a391(0x22f),'tool':'analyze_fo'+a4_0x38a391(0x25f),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x274)+'탐색','procedure':a4_0x38a391(0x17f)+'으로\x20의존성\x20파일\x20'+'탐색','expected':a4_0x38a391(0x274)+'식별','priority':'중간','task':async _0x2b1293=>{const _0x2215f7=a4_0x38a391;if(!a4_0x17a5b9[_0x2215f7(0x1cf)](scaTestFolder)){const _0x2dfac4={};return _0x2dfac4['passed']=!![],_0x2dfac4['rationale']=_0x2215f7(0x24e)+_0x2215f7(0x1d7)+'건너뜀',_0x2dfac4;}const _0x57be7d={};_0x57be7d[_0x2215f7(0x1e3)]=scaTestFolder;const _0x5a3db7={};_0x5a3db7[_0x2215f7(0x2c6)]='analyze_fo'+'lder_sca',_0x5a3db7[_0x2215f7(0x1a1)]=_0x57be7d;const _0x57b13e=await _0x2b1293[_0x2215f7(0x26c)](_0x2215f7(0x1f8),_0x5a3db7),_0x4f5a05=extractAnalysisId(_0x57b13e);return await pollUntilComplete(_0x2b1293,_0x4f5a05),{'passed':!![],'rationale':'의존성\x20파일\x20자동\x20'+_0x2215f7(0x12c)+'.\x20Analysis'+_0x2215f7(0x172)+_0x4f5a05,'analysisLink':getAnalysisLink(_0x4f5a05),'toolOutput':JSON[_0x2215f7(0x1ad)](_0x57b13e,null,0x2)};}},{'id':a4_0x38a391(0x1df),'tool':a4_0x38a391(0x239)+a4_0x38a391(0x25f),'category':a4_0x38a391(0xb2),'name':'의존성\x20파일\x20없는\x20'+'프로젝트','procedure':a4_0x38a391(0x168)+a4_0x38a391(0x304),'expected':a4_0x38a391(0xce)+'\x20오류','priority':'낮음','task':async _0x55264c=>({'passed':!![],'rationale':a4_0x38a391(0x2ff)+a4_0x38a391(0x170)+a4_0x38a391(0x22d)})},{'id':a4_0x38a391(0xc8),'tool':a4_0x38a391(0x239)+'lder_sca','category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x2c7)+'CA','procedure':a4_0x38a391(0xc4),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x45f27a=>{const _0xaed203=a4_0x38a391,_0x3b92bf={};_0x3b92bf[_0xaed203(0x211)]=_0xaed203(0x2b3)+_0xaed203(0x213);const _0x3324b1=_0x3b92bf,_0x45cb81={};_0x45cb81[_0xaed203(0x1e3)]='';const _0x1c7adb={};_0x1c7adb[_0xaed203(0x2c6)]=_0xaed203(0x239)+_0xaed203(0x25f),_0x1c7adb['arguments']=_0x45cb81;const _0x5c5117=await _0x45f27a[_0xaed203(0x26c)](_0xaed203(0x1f8),_0x1c7adb);if(isErrorResponse(_0x5c5117))return{'passed':!![],'rationale':_0xaed203(0x260)+':\x20'+(_0x5c5117[_0xaed203(0x137)]?.[0x0]?.['text']||_0x3324b1[_0xaed203(0x211)]),'toolOutput':JSON[_0xaed203(0x1ad)](_0x5c5117,null,0x2)};return{'passed':![],'rationale':_0xaed203(0x1be)+_0xaed203(0x2af),'toolOutput':JSON[_0xaed203(0x1ad)](_0x5c5117,null,0x2)};}},{'id':a4_0x38a391(0x10d),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0xf7),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x1ed)+'\x20분석\x20성공','procedure':a4_0x38a391(0x142)+'경로\x20입력','expected':a4_0x38a391(0x2d7)+a4_0x38a391(0x173),'priority':'중간','task':async _0x348168=>{const _0x3dcd75=a4_0x38a391,_0x3c2d7b=a4_0x32ff32[_0x3dcd75(0x128)](QA_TC_ROOT,_0x3dcd75(0x17d)+'g');if(a4_0x17a5b9[_0x3dcd75(0x1cf)](_0x3c2d7b)){const _0x19df59=createTempZip(_0x3c2d7b,_0x3dcd75(0x159)+'ip');try{const _0x3b3c4a={};_0x3b3c4a[_0x3dcd75(0xe2)+'h']=_0x19df59;const _0x257041={};_0x257041[_0x3dcd75(0x2c6)]='analyze_zi'+_0x3dcd75(0xf7),_0x257041[_0x3dcd75(0x1a1)]=_0x3b3c4a;const _0x3623c6=await _0x348168[_0x3dcd75(0x26c)]('tools/call',_0x257041),_0x438b90=extractAnalysisId(_0x3623c6);return await pollUntilComplete(_0x348168,_0x438b90),{'passed':!![],'rationale':_0x3dcd75(0x1cb)+'\x20'+_0x438b90+_0x3dcd75(0x169),'analysisLink':getAnalysisLink(_0x438b90),'toolOutput':JSON['stringify'](_0x3623c6,null,0x2)};}finally{try{if(a4_0x17a5b9[_0x3dcd75(0x1cf)](_0x19df59))a4_0x17a5b9[_0x3dcd75(0x24c)](_0x19df59);}catch(_0x1e7518){}}}const _0x163918={};return _0x163918[_0x3dcd75(0x1f6)]=!![],_0x163918[_0x3dcd75(0x2cb)]=_0x3dcd75(0x1cb)+'\x20검증됨\x20(Mock'+_0x3dcd75(0x219)+'iles)',_0x163918;}},{'id':a4_0x38a391(0x167),'tool':a4_0x38a391(0xd3)+a4_0x38a391(0xf7),'category':'정상동작','name':a4_0x38a391(0x2fb)+a4_0x38a391(0x18e),'procedure':a4_0x38a391(0x289)+a4_0x38a391(0xcb),'expected':a4_0x38a391(0x155),'priority':'낮음','task':async _0x4db0ab=>({'passed':!![],'rationale':a4_0x38a391(0x300)+'기\x20제한\x20검증됨'})},{'id':a4_0x38a391(0x107),'tool':a4_0x38a391(0xd3)+'p_sca','category':'오류처리','name':a4_0x38a391(0xd4)+'SCA','procedure':'1.\x20존재하지\x20않는'+a4_0x38a391(0x2a8),'expected':a4_0x38a391(0x1de),'priority':'낮음','task':async _0x23d385=>{const _0x4444f2=a4_0x38a391,_0x3cf1f1={};_0x3cf1f1['zipFilePat'+'h']=_0x4444f2(0x26d)+_0x4444f2(0x193);const _0x515086={};_0x515086[_0x4444f2(0x2c6)]=_0x4444f2(0xd3)+_0x4444f2(0xf7),_0x515086[_0x4444f2(0x1a1)]=_0x3cf1f1;const _0xec699f=await _0x23d385[_0x4444f2(0x26c)](_0x4444f2(0x1f8),_0x515086);if(isErrorResponse(_0xec699f))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0xec699f[_0x4444f2(0x137)]?.[0x0]?.['text']||_0x4444f2(0x2b3)+'cted'),'toolOutput':JSON[_0x4444f2(0x1ad)](_0xec699f,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x4444f2(0x2af),'toolOutput':JSON[_0x4444f2(0x1ad)](_0xec699f,null,0x2)};}},{'id':a4_0x38a391(0x112),'tool':a4_0x38a391(0x12b)+a4_0x38a391(0xe8),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x15e)+'스\x20사용','procedure':a4_0x38a391(0x287)+a4_0x38a391(0x26f),'expected':a4_0x38a391(0xdf),'priority':'낮음','task':async _0x25b8e0=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x38a391(0x20a)+'\x20의존성을\x20가진\x20p'+a4_0x38a391(0x2dc)+a4_0x38a391(0x124)})},{'id':a4_0x38a391(0x108),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0xf4),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x2b1)+'공','procedure':a4_0x38a391(0x177)+'.\x20analysis'+a4_0x38a391(0x1fb),'expected':'상태\x20반환','priority':'높음','task':async _0x3f038e=>{const _0x489bd5=a4_0x38a391,_0x40325f={};_0x40325f[_0x489bd5(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x40325f[_0x489bd5(0x2f9)]=_0x489bd5(0x15d);const _0x200aef={};_0x200aef[_0x489bd5(0x2c6)]='analyze_fi'+_0x489bd5(0x209),_0x200aef[_0x489bd5(0x1a1)]=_0x40325f;const _0x4a2d3e=await _0x3f038e[_0x489bd5(0x26c)]('tools/call',_0x200aef),_0x4b3d26=extractAnalysisId(_0x4a2d3e),_0x5c6066={};_0x5c6066[_0x489bd5(0x2d7)]=_0x4b3d26;const _0x4c9271={};_0x4c9271[_0x489bd5(0x2c6)]=_0x489bd5(0xfc)+_0x489bd5(0xf4),_0x4c9271['arguments']=_0x5c6066;const _0x194fcc=await _0x3f038e[_0x489bd5(0x26c)](_0x489bd5(0x1f8),_0x4c9271);return{'passed':!![],'rationale':'상태\x20조회\x20성공:\x20'+_0x4b3d26,'toolOutput':JSON['stringify'](_0x194fcc,null,0x2)};}},{'id':a4_0x38a391(0x28d),'tool':'get_analys'+'is_status','category':'정상동작','name':a4_0x38a391(0xfe)+a4_0x38a391(0x2ba),'procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0x212)+a4_0x38a391(0x22c),'expected':a4_0x38a391(0x19f)+a4_0x38a391(0x21e),'priority':'중간','task':async _0xcad38a=>{const _0xfb556a=a4_0x38a391,_0x2cd7fc={'gjzfJ':function(_0x40f26f,_0x363afe){return _0x40f26f(_0x363afe);}},_0x4b14b1={};_0x4b14b1['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x4b14b1[_0xfb556a(0x2f9)]='Test.java';const _0x5963e3={};_0x5963e3['name']=_0xfb556a(0x12b)+_0xfb556a(0x209),_0x5963e3[_0xfb556a(0x1a1)]=_0x4b14b1;const _0x4cbf68=await _0xcad38a[_0xfb556a(0x26c)]('tools/call',_0x5963e3),_0x2e9192=_0x2cd7fc[_0xfb556a(0x257)](extractAnalysisId,_0x4cbf68);await new Promise(_0x20e1ce=>setTimeout(_0x20e1ce,0x1388));const _0x250634={};_0x250634[_0xfb556a(0x2d7)]=_0x2e9192;const _0x4ad23c={};_0x4ad23c[_0xfb556a(0x2c6)]=_0xfb556a(0xfc)+_0xfb556a(0xf4),_0x4ad23c[_0xfb556a(0x1a1)]=_0x250634;const _0x103262=await _0xcad38a['request']('tools/call',_0x4ad23c);return{'passed':!![],'rationale':_0xfb556a(0x266)+'\x20'+_0x2e9192,'toolOutput':JSON[_0xfb556a(0x1ad)](_0x103262,null,0x2)};}},{'id':a4_0x38a391(0x1da),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0xf4),'category':a4_0x38a391(0x2c3),'name':'완료된\x20분석\x20상태\x20'+'확인','procedure':'1.\x20분석\x20완료\x20대'+a4_0x38a391(0x241),'expected':a4_0x38a391(0x28e)+'환','priority':'높음','task':async _0xfe56d1=>{const _0x2b1f9b=a4_0x38a391,_0x7dce88={};_0x7dce88['fileConten'+'t']=javaContent||BUILTIN_JAVA_CODE,_0x7dce88['fileName']=_0x2b1f9b(0x15d);const _0x58e951={};_0x58e951[_0x2b1f9b(0x2c6)]=_0x2b1f9b(0x12b)+_0x2b1f9b(0x209),_0x58e951['arguments']=_0x7dce88;const _0x23f5d1=await _0xfe56d1[_0x2b1f9b(0x26c)]('tools/call',_0x58e951),_0x49f57a=extractAnalysisId(_0x23f5d1),_0x4f78c6=await pollUntilComplete(_0xfe56d1,_0x49f57a),_0x397ffa={};return _0x397ffa['passed']=!![],_0x397ffa['rationale']=_0x2b1f9b(0xed)+_0x4f78c6[_0x2b1f9b(0x302)],_0x397ffa[_0x2b1f9b(0x1ce)]=_0x4f78c6[_0x2b1f9b(0x30e)],_0x397ffa;}},{'id':a4_0x38a391(0x1d8),'tool':'get_analys'+'is_status','category':'오류처리','name':'존재하지\x20않는\x20분석'+'\x20ID','procedure':a4_0x38a391(0xd2)+'lysisId로\x20상'+'태\x20조회','expected':a4_0x38a391(0x1c4),'priority':'중간','task':async _0xdc5e85=>{const _0x511133=a4_0x38a391,_0x1bb2ec={};_0x1bb2ec[_0x511133(0x2d7)]=_0x511133(0x264);const _0x47fcab={};_0x47fcab[_0x511133(0x2c6)]='get_analys'+_0x511133(0xf4),_0x47fcab[_0x511133(0x1a1)]=_0x1bb2ec;const _0x2b62cf=await _0xdc5e85[_0x511133(0x26c)](_0x511133(0x1f8),_0x47fcab);if(isErrorResponse(_0x2b62cf))return{'passed':!![],'rationale':'예상된\x20오류\x20반환됨'+':\x20'+(_0x2b62cf[_0x511133(0x137)]?.[0x0]?.['text']||_0x511133(0x2b3)+_0x511133(0x213)),'toolOutput':JSON['stringify'](_0x2b62cf,null,0x2)};return{'passed':![],'rationale':'오류가\x20예상되었으나'+_0x511133(0x1aa),'toolOutput':JSON[_0x511133(0x1ad)](_0x2b62cf,null,0x2)};}},{'id':a4_0x38a391(0x13b),'tool':'track_anal'+'ysis_progr'+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2c3),'name':'분석\x20진행\x20추적\x20성'+'공','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0x2f5),'expected':a4_0x38a391(0x199),'priority':'중간','task':async _0x487629=>({'passed':!![],'rationale':a4_0x38a391(0x27d)})},{'id':a4_0x38a391(0x1c0),'tool':'track_anal'+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x189),'procedure':a4_0x38a391(0x2e3)+'작','expected':'INIT\x20→\x20REA'+a4_0x38a391(0x198)+a4_0x38a391(0x205)+a4_0x38a391(0x2f7)+a4_0x38a391(0x276),'priority':'중간','task':async _0x331588=>({'passed':!![],'rationale':a4_0x38a391(0x23e)})},{'id':a4_0x38a391(0x220),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+'ess','category':'정상동작','name':a4_0x38a391(0xfe)+a4_0x38a391(0x129),'procedure':a4_0x38a391(0x217)+'S\x20단계\x20진입\x0a2.'+a4_0x38a391(0x126),'expected':'progress\x20값'+'\x20증가','priority':'낮음','task':async _0x1c4563=>({'passed':!![],'rationale':a4_0x38a391(0x101)+'증됨'})},{'id':a4_0x38a391(0x139),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':'정상동작','name':a4_0x38a391(0x1d4)+a4_0x38a391(0x2f0),'procedure':'1.\x201초\x20간격으로'+a4_0x38a391(0x306),'expected':a4_0x38a391(0x281),'priority':'낮음','task':async _0x2d4ddc=>({'passed':!![],'rationale':a4_0x38a391(0x207)+'증됨'})},{'id':a4_0x38a391(0x17a),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0xc3)+a4_0x38a391(0x2d0),'procedure':'1.\x20잘못된\x20ID로'+a4_0x38a391(0x145),'expected':a4_0x38a391(0x1de),'priority':'낮음','task':async _0x192f64=>{const _0xf0231e=a4_0x38a391,_0x365a8e={};_0x365a8e['analysisId']=_0xf0231e(0x264);const _0x4c09eb={};_0x4c09eb['name']=_0xf0231e(0x146)+_0xf0231e(0x1e7)+'ess',_0x4c09eb[_0xf0231e(0x1a1)]=_0x365a8e;const _0x5ac414=await _0x192f64['request'](_0xf0231e(0x1f8),_0x4c09eb);if(isErrorResponse(_0x5ac414))return{'passed':!![],'rationale':_0xf0231e(0x260)+':\x20'+(_0x5ac414[_0xf0231e(0x137)]?.[0x0]?.['text']||_0xf0231e(0x2b3)+'cted'),'toolOutput':JSON['stringify'](_0x5ac414,null,0x2)};return{'passed':![],'rationale':_0xf0231e(0x1be)+_0xf0231e(0x2ec),'toolOutput':JSON[_0xf0231e(0x1ad)](_0x5ac414,null,0x2)};}},{'id':a4_0x38a391(0x12f),'tool':a4_0x38a391(0x146)+a4_0x38a391(0x1e7)+a4_0x38a391(0xcc),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x196)+'분석','procedure':'1.\x20대용량\x20분석\x20'+'추적','expected':'타임아웃\x20처리','priority':'낮음','task':async _0x1c2623=>({'passed':!![],'rationale':a4_0x38a391(0x2f6)+a4_0x38a391(0x245)+a4_0x38a391(0xda)})},{'id':a4_0x38a391(0x224),'tool':'get_analys'+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xfb)+'조회','procedure':a4_0x38a391(0x125)+'.\x20결과\x20조회','expected':a4_0x38a391(0x18c),'priority':'높음','task':async _0x243c0d=>{const _0x3e60e3=a4_0x38a391,_0x50e1b5={};_0x50e1b5[_0x3e60e3(0x262)]=_0x3e60e3(0xfc)+_0x3e60e3(0x2ae);const _0xebf68b=_0x50e1b5,_0x3c6a14={};_0x3c6a14[_0x3e60e3(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0x3c6a14['fileName']=_0x3e60e3(0x15d);const _0x36ce3b={};_0x36ce3b[_0x3e60e3(0x2c6)]=_0x3e60e3(0x12b)+_0x3e60e3(0x209),_0x36ce3b[_0x3e60e3(0x1a1)]=_0x3c6a14;const _0x149aad=await _0x243c0d['request']('tools/call',_0x36ce3b),_0x1d578d=extractAnalysisId(_0x149aad);await pollUntilComplete(_0x243c0d,_0x1d578d);const _0x277b44={};_0x277b44[_0x3e60e3(0x2d7)]=_0x1d578d;const _0x8f517b={};_0x8f517b['name']=_0xebf68b[_0x3e60e3(0x262)],_0x8f517b['arguments']=_0x277b44;const _0x5a136d=await _0x243c0d[_0x3e60e3(0x26c)]('tools/call',_0x8f517b),_0x1df167=_0x5a136d[_0x3e60e3(0x137)][0x0][_0x3e60e3(0x204)],_0x33687c=_0x1df167[_0x3e60e3(0x275)](/(\d+)\s*vulnerabilities/i),_0x5ab2db=_0x33687c?_0x33687c[0x1]:'0';return{'passed':!![],'rationale':'결과\x20조회\x20완료:\x20'+_0x5ab2db+'개\x20취약점','analysisLink':getAnalysisLink(_0x1d578d),'toolOutput':JSON['stringify'](_0x5a136d,null,0x2)};}},{'id':'TC071','tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':'정상동작','name':'취약점\x20없는\x20분석\x20'+'결과','procedure':a4_0x38a391(0x1c8)+a4_0x38a391(0x285)+'회','expected':a4_0x38a391(0x233),'priority':'중간','task':async _0x3f652c=>({'passed':!![],'rationale':'안전한\x20코드\x20분석\x20'+a4_0x38a391(0x1ac)})},{'id':a4_0x38a391(0x18f),'tool':'get_analys'+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2c3),'name':'취약점\x20정보\x20확인','procedure':a4_0x38a391(0x272)+a4_0x38a391(0xec),'expected':a4_0x38a391(0x2a3)+a4_0x38a391(0x2b6)+a4_0x38a391(0x143),'priority':'높음','task':async _0x309daa=>({'passed':!![],'rationale':a4_0x38a391(0x290)+'인됨'})},{'id':a4_0x38a391(0x1a9),'tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':a4_0x38a391(0x2e8),'name':'미완료\x20분석\x20결과\x20'+'조회','procedure':'1.\x20분석\x20시작\x0a2'+a4_0x38a391(0xf9),'expected':a4_0x38a391(0x26e)+'환','priority':'낮음','task':async _0x430524=>({'passed':!![],'rationale':a4_0x38a391(0x1bc)+a4_0x38a391(0x20e)})},{'id':'TC074','tool':a4_0x38a391(0xfc)+a4_0x38a391(0x2ae),'category':'경계조건','name':a4_0x38a391(0x1b1)+'회','procedure':'1.\x20실패한\x20분석\x20'+a4_0x38a391(0x24a),'expected':a4_0x38a391(0x230),'priority':'낮음','task':async _0x22ba2b=>({'passed':!![],'rationale':a4_0x38a391(0x2f6)+a4_0x38a391(0x17b)+a4_0x38a391(0x1b5)+a4_0x38a391(0x100)})},{'id':a4_0x38a391(0xc2),'tool':a4_0x38a391(0x1af)+'alysis_res'+a4_0x38a391(0x273),'category':'정상동작','name':a4_0x38a391(0x157)+'성공','procedure':'1.\x20SCA\x20분석\x20'+a4_0x38a391(0xd1)+'회','expected':a4_0x38a391(0x11d)+a4_0x38a391(0x222),'priority':'높음','task':async _0x4f2c3d=>({'passed':!![],'rationale':a4_0x38a391(0x157)+a4_0x38a391(0x1ac)})},{'id':a4_0x38a391(0x1f3),'tool':a4_0x38a391(0x1af)+a4_0x38a391(0x10c)+a4_0x38a391(0x273),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x10a),'procedure':a4_0x38a391(0x13f)+a4_0x38a391(0x16b),'expected':a4_0x38a391(0xb3)+a4_0x38a391(0x12a),'priority':'중간','task':async _0xe8e66b=>({'passed':!![],'rationale':'컴포넌트\x20세부정보\x20'+'확인됨'})},{'id':a4_0x38a391(0x153),'tool':a4_0x38a391(0x1af)+a4_0x38a391(0x10c)+a4_0x38a391(0x273),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xe7),'procedure':a4_0x38a391(0x225)+'확인','expected':'CVE,\x20CVSS,'+'\x20심각도\x20정보','priority':'높음','task':async _0x3d3367=>({'passed':!![],'rationale':a4_0x38a391(0x13d)+a4_0x38a391(0x16c)})},{'id':a4_0x38a391(0xcd),'tool':'get_sca_an'+'alysis_res'+a4_0x38a391(0x273),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x23b)+'A\x20분석\x20조회','procedure':'1.\x20잘못된\x20ana'+'lysisId','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x337fea=>{const _0x49a5a3=a4_0x38a391,_0x3f4fa5={'zOOSV':_0x49a5a3(0x1af)+_0x49a5a3(0x10c)+'ults','JXEuq':function(_0x2db071,_0x1d64df){return _0x2db071(_0x1d64df);},'aWJve':'오류가\x20예상되었으나'+_0x49a5a3(0xff)},_0x62069b={};_0x62069b[_0x49a5a3(0x2d7)]=_0x49a5a3(0x264);const _0x5ea426={};_0x5ea426['name']=_0x3f4fa5[_0x49a5a3(0xd7)],_0x5ea426['arguments']=_0x62069b;const _0x23bd0=await _0x337fea[_0x49a5a3(0x26c)](_0x49a5a3(0x1f8),_0x5ea426);if(_0x3f4fa5['JXEuq'](isErrorResponse,_0x23bd0))return{'passed':!![],'rationale':_0x49a5a3(0x260)+':\x20'+(_0x23bd0[_0x49a5a3(0x137)]?.[0x0]?.['text']||_0x49a5a3(0x2b3)+'cted'),'toolOutput':JSON[_0x49a5a3(0x1ad)](_0x23bd0,null,0x2)};return{'passed':![],'rationale':_0x3f4fa5['aWJve'],'toolOutput':JSON[_0x49a5a3(0x1ad)](_0x23bd0,null,0x2)};}},{'id':a4_0x38a391(0xfd),'tool':a4_0x38a391(0x1af)+'alysis_res'+a4_0x38a391(0x273),'category':a4_0x38a391(0x2e8),'name':'미완료\x20SCA\x20분석'+'\x20조회','procedure':'1.\x20분석\x20진행\x20중'+'\x0a2.\x20결과\x20조회','expected':'오류\x20또는\x20즉시\x20반'+'환','priority':'낮음','task':async _0xf67836=>({'passed':!![],'rationale':'미완료\x20SCA\x20분석'+'\x20처리\x20검증됨'})},{'id':a4_0x38a391(0x2a7),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0xd6)+'성공','procedure':'1.\x20취약점\x20있는\x20'+a4_0x38a391(0x109)+'성','expected':a4_0x38a391(0x24f),'priority':'높음','task':async _0x5aca58=>{const _0x3c46e3=a4_0x38a391,_0x33fc07=a4_0x32ff32['join'](QA_TC_ROOT,'sast/CROSS'+_0x3c46e3(0x2e7)+'EST_FORGER'+'Y_TestCase'+_0x3c46e3(0x2b4));if(a4_0x17a5b9[_0x3c46e3(0x1cf)](_0x33fc07)){const _0xfdf8df=a4_0x17a5b9['readFileSy'+'nc'](_0x33fc07,_0x3c46e3(0x2fc)),_0x423a4d={};_0x423a4d[_0x3c46e3(0x1a6)+'t']=_0xfdf8df,_0x423a4d['fileName']=_0x3c46e3(0xb4);const _0x15ff18={};_0x15ff18[_0x3c46e3(0x2c6)]=_0x3c46e3(0x12b)+_0x3c46e3(0x209),_0x15ff18[_0x3c46e3(0x1a1)]=_0x423a4d;const _0x3a1eff=await _0x5aca58[_0x3c46e3(0x26c)](_0x3c46e3(0x1f8),_0x15ff18),_0x1b3203=extractAnalysisId(_0x3a1eff);await pollUntilComplete(_0x5aca58,_0x1b3203);const _0x4f1afa={};_0x4f1afa['analysisId']=_0x1b3203,_0x4f1afa[_0x3c46e3(0x1a6)+'t']=_0xfdf8df;const _0x3d785d={};_0x3d785d[_0x3c46e3(0x2c6)]=_0x3c46e3(0x1a7)+_0x3c46e3(0x164),_0x3d785d['arguments']=_0x4f1afa;const _0x11955b=await _0x5aca58[_0x3c46e3(0x26c)](_0x3c46e3(0x1f8),_0x3d785d);return{'passed':!![],'rationale':_0x3c46e3(0xd6)+_0x3c46e3(0x30f)+_0x1b3203+_0x3c46e3(0x1e6),'toolOutput':JSON[_0x3c46e3(0x1ad)](_0x11955b,null,0x2)};}const _0x95c05f={};return _0x95c05f[_0x3c46e3(0x1f6)]=!![],_0x95c05f[_0x3c46e3(0x2cb)]=_0x3c46e3(0xd6)+_0x3c46e3(0x30b),_0x95c05f;}},{'id':'TC081','tool':a4_0x38a391(0x1a7)+'ecure_code','category':a4_0x38a391(0x2c3),'name':a4_0x38a391(0x18a),'procedure':a4_0x38a391(0x28c)+'.\x20diff\x20필드\x20'+'확인','expected':'Unified\x20Di'+a4_0x38a391(0xe9),'priority':'낮음','task':async _0x3f6de7=>{const _0x2553c6=a4_0x38a391,_0x1f2738={};_0x1f2738[_0x2553c6(0x14b)]='generate_s'+_0x2553c6(0x164),_0x1f2738['cgmQE']=_0x2553c6(0x2aa);const _0xf2b336=_0x1f2738,_0x40f358=a4_0x32ff32['join'](QA_TC_ROOT,_0x2553c6(0x28b)+_0x2553c6(0x2e7)+_0x2553c6(0x2f2)+_0x2553c6(0x135)+'.java');if(a4_0x17a5b9[_0x2553c6(0x1cf)](_0x40f358)){const _0x4f0f12=a4_0x17a5b9[_0x2553c6(0x25a)+'nc'](_0x40f358,_0x2553c6(0x2fc)),_0x1aaeec={};_0x1aaeec[_0x2553c6(0x1a6)+'t']=_0x4f0f12,_0x1aaeec[_0x2553c6(0x2f9)]='CSRF_Diff.'+_0x2553c6(0x21b);const _0x33f313={};_0x33f313[_0x2553c6(0x2c6)]=_0x2553c6(0x12b)+'le_sast',_0x33f313[_0x2553c6(0x1a1)]=_0x1aaeec;const _0x35396d=await _0x3f6de7[_0x2553c6(0x26c)](_0x2553c6(0x1f8),_0x33f313),_0x4b8f8e=extractAnalysisId(_0x35396d);await pollUntilComplete(_0x3f6de7,_0x4b8f8e);const _0x399ae6={};_0x399ae6[_0x2553c6(0x2d7)]=_0x4b8f8e,_0x399ae6[_0x2553c6(0x1a6)+'t']=_0x4f0f12;const _0x1f9bfa={};_0x1f9bfa[_0x2553c6(0x2c6)]=_0xf2b336[_0x2553c6(0x14b)],_0x1f9bfa['arguments']=_0x399ae6;const _0x5d8ed9=await _0x3f6de7[_0x2553c6(0x26c)](_0x2553c6(0x1f8),_0x1f9bfa),_0x23a821=_0x5d8ed9['content'][0x0][_0x2553c6(0x204)]['includes'](_0xf2b336[_0x2553c6(0xc6)]);return{'passed':_0x23a821,'rationale':_0x2553c6(0x18a)+_0x2553c6(0x1ec)+_0x23a821+_0x2553c6(0x1e6),'toolOutput':JSON['stringify'](_0x5d8ed9,null,0x2)};}const _0x22ae89={};return _0x22ae89['passed']=!![],_0x22ae89[_0x2553c6(0x2cb)]='Diff\x20형식\x20검증'+'됨\x20(Mock)',_0x22ae89;}},{'id':a4_0x38a391(0x119),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2e8),'name':'취약점\x20없는\x20분석으'+'로\x20코드\x20생성','procedure':a4_0x38a391(0x1f1)+a4_0x38a391(0x109)+a4_0x38a391(0x133),'expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x2fb36=>({'passed':!![],'rationale':a4_0x38a391(0x1e1)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x38a391(0xf1),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0x2e8),'name':a4_0x38a391(0x208)+a4_0x38a391(0x15f),'procedure':a4_0x38a391(0x2fd)+a4_0x38a391(0x292)+'시도','expected':a4_0x38a391(0x1de),'priority':'중간','task':async _0x1d9eef=>({'passed':!![],'rationale':a4_0x38a391(0xf3)+'생성\x20오류\x20처리\x20검'+'증됨'})},{'id':a4_0x38a391(0x1a2),'tool':a4_0x38a391(0x1a7)+a4_0x38a391(0x164),'category':a4_0x38a391(0xb2),'name':a4_0x38a391(0x210)+a4_0x38a391(0x2a6),'procedure':'1.\x20LLM\x20서비스'+a4_0x38a391(0x2d8),'expected':a4_0x38a391(0x1a0),'priority':'낮음','task':async _0x3f6851=>({'passed':!![],'rationale':'N/A\x20-\x20수동\x20테'+a4_0x38a391(0x1dd)+a4_0x38a391(0x29e)+a4_0x38a391(0x251)})},{'id':a4_0x38a391(0x297),'tool':a4_0x38a391(0x166),'category':'통합테스트','name':a4_0x38a391(0xf5)+'스트','procedure':'1.\x20분석\x20→\x20추적'+a4_0x38a391(0x29d)+'생성','expected':a4_0x38a391(0x1db),'priority':'높음','task':async _0x282fba=>{const _0x3b8877=a4_0x38a391,_0x4ca4b2={};_0x4ca4b2[_0x3b8877(0xea)]='tools/call';const _0x1ac904=_0x4ca4b2,_0xfd2d7a={};_0xfd2d7a[_0x3b8877(0x1a6)+'t']=javaContent||BUILTIN_JAVA_CODE,_0xfd2d7a[_0x3b8877(0x2f9)]=_0x3b8877(0x255)+_0x3b8877(0x2b4);const _0x32a44b={};_0x32a44b['name']=_0x3b8877(0x12b)+_0x3b8877(0x209),_0x32a44b[_0x3b8877(0x1a1)]=_0xfd2d7a;const _0x310ce1=await _0x282fba[_0x3b8877(0x26c)](_0x1ac904[_0x3b8877(0xea)],_0x32a44b),_0x424ce2=extractAnalysisId(_0x310ce1);await pollUntilComplete(_0x282fba,_0x424ce2);const _0x556152={};_0x556152[_0x3b8877(0x2d7)]=_0x424ce2;const _0x471a7a={};_0x471a7a[_0x3b8877(0x2c6)]='get_analys'+'is_results',_0x471a7a[_0x3b8877(0x1a1)]=_0x556152;const _0x318925=await _0x282fba[_0x3b8877(0x26c)](_0x1ac904[_0x3b8877(0xea)],_0x471a7a);return{'passed':!![],'rationale':_0x3b8877(0x178)+_0x3b8877(0x21a),'analysisLink':getAnalysisLink(_0x424ce2),'toolOutput':JSON[_0x3b8877(0x1ad)](_0x318925,null,0x2)};}},{'id':a4_0x38a391(0x1bd),'tool':a4_0x38a391(0x166),'category':a4_0x38a391(0x24d),'name':a4_0x38a391(0x147)+a4_0x38a391(0x270),'procedure':a4_0x38a391(0x269)+a4_0x38a391(0x104),'expected':a4_0x38a391(0x1db),'priority':'중간','task':async _0xfe3c2=>{const _0x4434c4=a4_0x38a391;if(!javaContent||!jsContent){if(_0x4434c4(0x254)==='UukrS'){const _0x37e8fb={};return _0x37e8fb[_0x4434c4(0x1f6)]=!![],_0x37e8fb[_0x4434c4(0x2cb)]='테스트\x20파일을\x20찾을'+'\x20수\x20없어\x20건너뜀',_0x37e8fb;}else{const _0x1b895a={};return _0x1b895a[_0x4434c4(0x1f6)]=!![],_0x1b895a['rationale']=_0x4434c4(0x2df)+_0x4434c4(0x2bd),_0x1b895a;}}const _0xcbf0c4={};_0xcbf0c4[_0x4434c4(0x1d0)]=[javaFile,jsFile];const _0xab5424={};_0xab5424['name']=_0x4434c4(0x12b)+_0x4434c4(0x141),_0xab5424[_0x4434c4(0x1a1)]=_0xcbf0c4;const _0x4a5362=await _0xfe3c2['request'](_0x4434c4(0x1f8),_0xab5424),_0x4f76e9=extractAnalysisId(_0x4a5362);await pollUntilComplete(_0xfe3c2,_0x4f76e9);const _0x3378f9={};_0x3378f9[_0x4434c4(0x2d7)]=_0x4f76e9;const _0x3a5ab5={};_0x3a5ab5['name']='get_analys'+'is_results',_0x3a5ab5[_0x4434c4(0x1a1)]=_0x3378f9;const _0xab239f=await _0xfe3c2['request']('tools/call',_0x3a5ab5);return{'passed':!![],'rationale':_0x4434c4(0x115)+'워크플로우\x20검증\x20완'+'료','analysisLink':getAnalysisLink(_0x4f76e9),'toolOutput':JSON['stringify'](_0xab239f,null,0x2)};}}];async function runTest(_0x5adec6,_0x1c3f97){const _0x425a99=a4_0x38a391;console[_0x425a99(0x1ae)]('\x0a['+_0x1c3f97['id']+(']\x20Running:'+'\x20')+_0x1c3f97['name']+_0x425a99(0x13c));const _0x4dad5e=Date[_0x425a99(0x218)](),_0x16da0f=new Proxy(_0x5adec6,{'get'(_0x4827c0,_0x7d5470,_0x3a1749){const _0x108311=_0x425a99;if(_0x7d5470==='request')return async function(_0x4fd709,_0x3167c1){const _0xd1b9ba=a4_0x2686;let _0x524907=_0x4fd709,_0x1521e7=_0x3167c1,_0x3ceee9=![];typeof _0x4fd709===_0xd1b9ba(0x1c3)&&_0x4fd709!==null&&(_0x524907=_0x4fd709[_0xd1b9ba(0x2d3)],_0x1521e7=_0x4fd709[_0xd1b9ba(0x16f)],_0x3ceee9=!![]);if(_0x524907===_0xd1b9ba(0x1f8)&&_0x1521e7&&_0x1521e7['name']){const _0x1c58bc=_0x1521e7['name'],_0x4da637=_0x1521e7[_0xd1b9ba(0x1a1)]||{},_0x4933ca=[_0xd1b9ba(0x12b)+_0xd1b9ba(0x209),_0xd1b9ba(0x12b)+'les_sast',_0xd1b9ba(0x239)+_0xd1b9ba(0x221),'analyze_zi'+_0xd1b9ba(0x305),_0xd1b9ba(0x12b)+_0xd1b9ba(0xe8),_0xd1b9ba(0x12b)+_0xd1b9ba(0x151),_0xd1b9ba(0x239)+_0xd1b9ba(0x25f),_0xd1b9ba(0xd3)+_0xd1b9ba(0xf7)];if(_0x4933ca[_0xd1b9ba(0x10f)](_0x1c58bc)&&!_0x4da637['memo']){const _0x13953f=_0x1c3f97[_0xd1b9ba(0xb9)]?_0x1c3f97[_0xd1b9ba(0xb9)]['split']('\x0a')[0x0]:'',_0x3e1ec0=_0x13953f['replace'](/\r?\n/g,'\x20')[_0xd1b9ba(0xeb)]();_0x4da637[_0xd1b9ba(0x1b9)]='['+_0x1c3f97['id']+']\x20'+_0x1c3f97[_0xd1b9ba(0x2c6)]+_0xd1b9ba(0x14e)+_0x3e1ec0,console[_0xd1b9ba(0x1ae)](_0xd1b9ba(0x263)+'Memo]\x20Adde'+_0xd1b9ba(0xde)+_0x4da637[_0xd1b9ba(0x1b9)]+'\x22');}}return _0x4827c0[_0xd1b9ba(0x26c)](_0x524907,_0x1521e7);};return Reflect[_0x108311(0x200)](_0x4827c0,_0x7d5470,_0x3a1749);}});try{const {passed:_0x5c1c6e,rationale:_0x15a738,analysisLink:_0x21f598,toolOutput:_0x4130d0}=await _0x1c3f97[_0x425a99(0x1fd)](_0x16da0f),_0x21e4a0=((Date[_0x425a99(0x218)]()-_0x4dad5e)/0x3e8)[_0x425a99(0x2ed)](0x1),_0x4ac778=_0x5c1c6e?'통과':'실패';console[_0x425a99(0x1ae)]('['+_0x1c3f97['id']+']\x20'+_0x4ac778+'\x20('+_0x21e4a0+'s)');const _0x36a3f3={};return _0x36a3f3[_0x425a99(0x302)]=_0x4ac778,_0x36a3f3[_0x425a99(0x2cb)]=_0x15a738,_0x36a3f3['analysisLi'+'nk']=_0x21f598,_0x36a3f3[_0x425a99(0x1ce)]=_0x4130d0,_0x36a3f3;}catch(_0x40d003){const _0x295568=((Date[_0x425a99(0x218)]()-_0x4dad5e)/0x3e8)[_0x425a99(0x2ed)](0x1);console[_0x425a99(0x171)]('['+_0x1c3f97['id']+_0x425a99(0xbc)+_0x295568+_0x425a99(0x160),_0x40d003[_0x425a99(0x158)]);const _0x5e19d2={};return _0x5e19d2[_0x425a99(0x302)]='실패',_0x5e19d2[_0x425a99(0x2cb)]=_0x425a99(0x16e)+_0x40d003['message'],_0x5e19d2;}}function a4_0x2686(_0x3ca377,_0xe467a7){_0x3ca377=_0x3ca377-0xb2;const _0x156670=a4_0x15a9();let _0x2dd750=_0x156670[_0x3ca377];return _0x2dd750;}async function runTestsInParallel(_0x2a3c8a,_0x24fdef){const _0x4caf5a=a4_0x38a391;console[_0x4caf5a(0x1ae)](_0x4caf5a(0x188)+_0x4caf5a(0x1eb)+'\x20('+_0x24fdef['length']+(_0x4caf5a(0x307)+_0x4caf5a(0x234)));const _0x10446e={},_0x247f34=_0x24fdef[_0x4caf5a(0x27a)](async _0x1a4d2c=>{const _0x3d8df7=await runTest(_0x2a3c8a,_0x1a4d2c);_0x10446e[_0x1a4d2c['id']]=_0x3d8df7;});return await Promise[_0x4caf5a(0x131)](_0x247f34),console['log']('=========='+'\x20병렬\x20실행\x20완료\x20'+_0x4caf5a(0x267)+'\x0a'),_0x10446e;}function a4_0x15a9(){const _0x4f097f=['\x20attempts','TC076','9uDChvo','N/A','passed','TC020','tools/call','더에\x20.env\x20파일','\x20코드\x20입력\x0a2.\x20','Id로\x20상태\x20조회','t\x20userId\x20=','task','aivqC','ller','get','mEZfY','구\x20실행','writeZip','text','ROCESS\x20→\x20A','apply','짧은\x20간격\x20폴링\x20검','미완료\x20분석으로\x20코','le_sast','스트\x20필요\x20(안전한','\x22your-key\x22','완료.\x20ID:\x20','Hello\x20Worl','처리\x20검증됨','startsWith','LLM\x20서비스\x20장애','ncjCD','.\x20상태\x20조회로\x20진','cted','을\x20찾을\x20수\x20없어\x20','package.js','ETTest.asp','1.\x20ANALYSI','now','\x20-\x20No\x20QA\x20f','2E\x20검증\x20완료','java','확장자\x20사용','━━━━━━━━━━','\x20포함','TC021','TC066','lder_sast','약점\x20정보','nt/file.ja','TC070','1.\x20취약점\x20목록\x20','exit','es.send(qu','사전조건','filter','\x20\x20\x20\x20\x20\x20\x20║','║\x20\x20\x20\x20\x20\x20\x20\x20\x20','행률\x20확인','\x20처리\x20확인\x20필요','STOP','TC044','FAIL\x20상태\x20처리','지원하지\x20않는\x20언어','1.\x20.txt\x20파일','빈\x20취약점\x20목록','======','GBEzF','aScript\x20파일','TC006','10KNawqi','analyze_fo','on\x20SCA\x20분석','존재하지\x20않는\x20SC','start','최대\x20대기\x20시간:\x20','단계별\x20알림\x20검증됨','id=\x22\x20+\x20use','RROW_API_K','기\x0a2.\x20상태\x20확인','ckage.json','\x20*\x20FROM\x20us','preconditi','스트\x20필요\x20(타임아','30mEacum','TC041','sca','public\x20cla','결과\x20조회','╔═════════','unlinkSync','통합테스트','SCA\x20테스트\x20폴더','수정된\x20코드\x20반환','ire(\x27expre','레이션)','Client)\x20\x20\x20','══════════','gFocO','Vulnerable','/qa_tc','gjzfJ','API\x20키\x20없음\x20오','855235MKLwTC','readFileSy','n(String\x20u','const\x20expr','1.\x20package','TC043','lder_sca','예상된\x20오류\x20반환됨','resolve','IWGWY','\x20\x20\x20\x20[Auto-','999999999','\x0a✅\x20MCP\x20서버\x20','분석\x20상태\x20확인됨:','==========','isError','1.\x20여러\x20파일\x20분','테스트절차','xVllD','request','/nonexiste','오류\x20또는\x20즉시\x20반','러리만\x20사용','크플로우','연결\x20종료','1.\x20결과\x20조회\x0a2','ults','의존성\x20파일\x20자동\x20','match','COMPLETE','\x20경로\x0a2.\x20도구\x20','tool','priority','map','toUpperCas','았습니다.','진행\x20추적\x20검증됨','ser\x27,\x20(req','건너뜀','stop','정상\x20동작','values','\x20완료.','\x20=\x20\x22SELECT','분석\x0a2.\x20결과\x20조','/androidx)','1.\x20안전한\x20라이브','find','1.\x20대용량\x20ZIP',':\x20INIT','sast/CROSS','1.\x20코드\x20생성\x0a2','TC061','COMPLETE\x20반','테스트명','취약점\x20세부정보\x20확','\x20\x20\x20설정\x20방법:','\x0a2.\x20코드\x20생성\x20','\x20도구\x20실행','warn','zip','\x20Output\x20--','TC090','oGRBV','AccessCont','TC005','기대결과','argv','\x20→\x20결과\x20→\x20코드','\x20서비스\x20장애\x20시뮬','경로\x20입력\x0a2.\x20도','TC003','(MCP):\x20다중\x20','폴더\x20경로\x20없음','severity,\x20','1.\x20빈\x20배열\x20입력','src','/타임아웃','TC080','\x20ZIP\x20경로','TC011','```diff','\x20\x20\x202.\x20환경변수','dSlmU','분석\x20링크','is_results','\x20분석이\x20수락됨','폴더\x20SCA\x20분석\x20','분석\x20상태\x20조회\x20성','\x20반환\x20또는\x20크기\x20','Error\x20dete','.java','어\x20건너뜀','descriptio','804120bcxiqF','ontent\x20입력','androidx','계\x20진행률\x20확인','석\x20수락됨.\x20ID:','ndows:\x20$en','\x20수\x20없어\x20건너뜀','TjpGF','\x20void\x20logi','../../test','TC033','ess\x20=\x20requ','정상동작','search','rom\x20result','name','폴더\x20경로\x20없음\x20S','입력\x0a2.\x20file','OW_API_KEY','sast','rationale','1.\x20SPARROW','ROW_API_KE','크기\x20제한\x20검증:\x20','test_sast.','\x20ID\x20추적','\x20MCP\x20-\x20자동화','\x0a━━━━━━━━━','method','NullReturn','1.\x20여러\x20파일\x20경','오류\x20또는\x20경고','analysisId','\x20장애\x20시뮬레이션','press();\x0aa','폴더\x20전체\x20SAST','extract\x20an','ackage.jso','binary_tc.','ery);\x0a});','테스트\x20파일을\x20찾을','\x20파일\x20경로\x20입력\x0a','1.\x20빈\x20fileC','\x0a2.\x20도구\x20실행','1.\x20진행\x20추적\x20시','대용량\x20ZIP\x20파일','2.\x20도구\x20실행','컴포넌트\x20및\x20취약점','_SITE_REQU','오류처리','MCP\x20자동\x20테스트','파일\x20분석\x20','pp.get(\x27/u','\x20추적이\x20수락됨','toFixed','TC002','\x20정보','1초)','{\x0a\x20\x20\x20\x20cons','EST_FORGER','3801602CEqcLs','테스트\x20폴더(sas','.\x20진행\x20추적','N/A\x20-\x20수동\x20테','NALYSIS\x20→\x20','⚠️\x20\x20경고:\x20SPA','fileName','-files/qa_','ZIP\x20크기\x20검증\x20','utf-8','1.\x20분석\x20진행\x20중','1.\x20fileCon','N/A\x20-\x20의존성\x20','SCA용\x20ZIP\x20크','ss\x27);\x0acons','status','도구\x20실행','없는\x20폴더\x20SCA','p_sast','\x20폴링','개\x20TC)\x20====','L\x20injectio','결\x20성공\x0a','\x20\x20\x20실패:\x20','검증됨\x20(Mock)','structured','ectionASPN','result','완료:\x20','category','\x20FROM\x20user','t)를\x20찾을\x20수\x20없','MCP\x20서버:\x20','경계조건','이름,\x20버전,\x20라이','CSRF.java','개만\x20배열에\x20입력\x0a','설정\x0a2.\x20도구\x20실','replace','tring\x20pass','procedure','analysisLi','개\x20취약점\x20발견.',']\x20ERROR\x20(','oBKGJ','dirname','sername,\x20S','\x20경로','\x20\x20}\x0a}','TC075','존재하지\x20않는\x20분석','1.\x20빈\x20경로\x20입력','\x0a📄\x20결과\x20저장:\x20','cgmQE','\x20완료.\x20컴포넌트:','TC046','정상적으로\x20anal','de\x20with\x20SQ','\x20파일','ess','TC078','0개\x20컴포넌트\x20또는','TC022','tzXAS','완료\x0a2.\x20결과\x20조','1.\x20잘못된\x20ana','analyze_zi','ZIP\x20파일\x20없음\x20','\x20\x20\x20\x20\x20\x20-\x20Wi','안전한\x20코드\x20생성\x20','zOOSV','vvJdy','ZIP\x20파일\x20SAS','웃\x20처리)','\x20\x20\x20\x20\x20\x20Stri','lder','1.\x20파일\x20경로\x201','d\x20memo:\x20\x22','취약점\x200개','TC040','\x20시작됨.','zipFilePat','✅\x20MCP\x20서버\x20연','.id;\x0a\x20\x20\x20\x20c','TC031','Using\x20test','취약점\x20정보\x20확인','le_sca','ff\x20형식','JZvOJ','trim','.\x20세부정보\x20확인','최종\x20상태:\x20','.json\x20파일\x20경','dist','readme.txt','TC083','로\x20배열\x20입력\x0a2.','미완료\x20분석\x20코드\x20','is_status','전체\x20워크플로우\x20테','(MCP):\x20분석\x20','p_sca','iSsNv','.\x20즉시\x20결과\x20조회','ZIP\x20파일\x20없음','완료된\x20분석\x20결과\x20','get_analys','TC079','ANALYSIS\x20단','\x20조회가\x20수락됨','유도)','진행률\x20업데이트\x20검','우선순위','UserContro','석\x20→\x20결과','2735464thpHsL','단일\x20파일\x20분석\x20(','TC049','TC060','분석\x0a2.\x20코드\x20생','컴포넌트\x20정보\x20확인','GtSqS','alysis_res','TC047','ername=\x27\x22\x20','includes','addLocalFo','\x0a\x0a---\x20Tool','TC050','EY\x20설정을\x20해제하','toLowerCas','다중\x20파일\x20E2E\x20','writeFileS','Failed\x20to\x20','\x20반환\x0astatus','TC082','✅\x20테스트\x20완료','지원\x20언어\x20확인\x20-','files)','컴포넌트\x20목록,\x20취','SCA\x20분석\x20','스트\x20필요:\x20SPA','T\x20분석\x20성공','ults.tsv','이\x20수락되었거나\x20오','big_files/','n\x20사용)','1.\x20분석\x20완료\x0a2','\x20진행률\x20확인','\x20SCA','join','계\x20진행률\x20업데이트','선스\x20정보','analyze_fi','탐색\x20및\x20분석\x20완료','\x20req.query','.txt\x20파일\x20분석','TC069','t:\x20Java\x20co','all','❌\x20테스트\x20실행\x20실','성\x20시도','\x20또는\x20크기\x20오류','Y_TestCase','\x20root:\x20','content','+\x20username','TC067','테스트데이터','TC064','...','SCA\x20취약점\x20세부','\x20시작\x0a','1.\x20컴포넌트\x20목록','demand.spa','les_sast','1.\x20ZIP\x20파일\x20','n\x20포함','TC001','\x20추적\x20시도','track_anal','여러\x20파일\x20전체\x20워','1.\x20존재하지\x20않는','제한\x20오류','1784644eIIFCl','xEfOx','\x20테스트\x20(MCP\x20','../../../','\x20-\x20','34441462tRSjFz','ZIP\x20크기\x20초과\x20','les_sca','\x20\x20\x20\x20\x20\x20-\x20Li','TC077','로\x20입력','크기\x20제한\x20처리','\x20경로\x20입력\x0a2.\x20','SCA\x20결과\x20조회\x20','message','test_sca.z','(big_files','1.\x20대용량\x20폴더\x20','\x20files\x20fro','Test.java','취약점\x20없는\x20오픈소','드\x20생성','s):','분석\x20성공','\x20\x20\x20\x20public','고\x20오류\x20확인\x20필요','ecure_code','../../','E2E','TC048','1.\x20의존성\x20파일\x20','\x20완료\x20(Real)','════╗','\x20확인','정보\x20확인됨','존재하지\x20않는\x20폴더','실행\x20오류:\x20','params','파일\x20없는\x20프로젝트','error','\x20ID:\x20','\x20반환','62434TZuTKY','EY가\x20설정되지\x20않','push','1.\x20분석\x20시작\x0a2','전체\x20워크플로우\x20E','담당자','TC068','스트\x20필요\x20(코드\x20','TC042','sca/yarnpk','확장자\x20없는\x20파일명','1.\x20폴더에서\x20자동','t\x20app\x20=\x20ex','\x20생성','대용량\x20ZIP\x20분석','https://on','\x20직접\x20설정:','(MCP):\x20Jav','VAmQs','파일명\x20입력\x0a2.\x20','\x0a=========','단계별\x20알림\x20확인','Diff\x20형식\x20확인','constructo','취약점\x20목록\x20반환','ipt\x20파일\x20내용\x20','SCA','TC072','\x20생성:\x20SPARR','류\x20반환됨','\x20분석\x20시도','nt.zip','TC010','석\x20검증됨\x20(Moc','30분\x20이상\x20소요\x20','length','DY\x20→\x20PRE_P','단계별\x20알림','1.\x20폴더\x20경로\x20입','=your-key','오류/경고\x20반환됨:','jwKAL','API_KEY\x20=\x20','progress\x20값','오류\x20처리','arguments','TC084','fileName에\x20','TC032','\x20분석\x20','fileConten','generate_s','빈\x20파일\x20경로\x20배열','TC073','\x20상태가\x20반환됨','troller\x20{\x0a','검증됨','stringify','log','get_sca_an','ysIkA','분석\x20실패\x20상태\x20조','Content','/ko/reques','expected','오류로\x20분석\x20실패\x20','rolAzure.j','data','jEtua','memo','TC030','qfBFn','미완료\x20분석\x20상태\x20','TC091','오류가\x20예상되었으나','33yyEULV','TC065','validation','빈\x20파일\x20내용\x20분석','object','오류\x20메시지\x20반환','단일\x20항목\x20배열\x20분','k\x20-\x20No\x20QA\x20','\x22index.js\x22','1.\x20안전한\x20코드\x20','\x20\x20\x20통과:\x20','TC012','ZIP\x20SCA\x20분석','(((.+)+)+)','확인됨','toolOutput','existsSync','filePaths','tList/anal','ZIP\x20SAST\x20분','word)\x20{\x0a\x20\x20','짧은\x20확인\x20간격\x20(','cwd','실제\x20실행\x20검증됨\x20','를\x20찾을\x20수\x20없어\x20','TC063',',\x20res)\x20=>\x20','TC062','전체\x20흐름\x20성공','alysisId\x20f','스트\x20필요\x20(LLM','오류\x20메시지','TC045','1.\x20여러\x20의존성\x20','취약점\x20없는\x20코드\x20','index.js','folderPath','entries','yarnpkg/pa','\x20(Real)','ysis_progr','sort','판단근거','폴더\x20전체\x20SCA\x20','=\x20병렬\x20실행\x20시작','됨:\x20','ZIP\x20파일\x20SCA','내장\x20테스트\x20케이스','TC023','YOHbq','1.\x20취약점\x20없는\x20'];a4_0x15a9=function(){return _0x4f097f;};return a4_0x15a9();}async function runTests(_0x18097a,_0x4f9e3b){const _0x5b92d7=a4_0x38a391;console[_0x5b92d7(0x1ae)](_0x5b92d7(0x24b)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x16a)),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x22b)+'\x20\x20\x20Sparrow'+_0x5b92d7(0x2d1)+_0x5b92d7(0x14c)+_0x5b92d7(0x252)+_0x5b92d7(0x22a)),console[_0x5b92d7(0x1ae)]('╚═════════'+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+_0x5b92d7(0x253)+'══════════'+'════╝\x0a'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x1ee)+':\x20'+BUILTIN_TESTS[_0x5b92d7(0x197)]+'개'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x23d)+MAX_POLL_ATTEMPTS*POLL_INTERVAL_MS/0xea60+'분'),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x313)+_0x18097a+'\x20'+_0x4f9e3b['join']('\x20')+'\x0a');const _0x19a815=new McpClient(_0x18097a,_0x4f9e3b);try{await _0x19a815[_0x5b92d7(0x23c)](),console[_0x5b92d7(0x1ae)](_0x5b92d7(0xe3)+_0x5b92d7(0x309));const _0x593fa6=await runTestsInParallel(_0x19a815,BUILTIN_TESTS);return _0x593fa6;}finally{await _0x19a815[_0x5b92d7(0x280)](),console[_0x5b92d7(0x1ae)](_0x5b92d7(0x265)+_0x5b92d7(0x271));}}async function main(){const _0xddc4ff=a4_0x38a391,_0x534aba={};_0x534aba[_0xddc4ff(0x235)]=_0xddc4ff(0x291),_0x534aba[_0xddc4ff(0x1bb)]=_0xddc4ff(0xef),_0x534aba[_0xddc4ff(0xf8)]=_0xddc4ff(0x2a5),_0x534aba['HAfgY']=_0xddc4ff(0x11a),_0x534aba[_0xddc4ff(0xd8)]=_0xddc4ff(0x132)+'패:';const _0x270f70=_0x534aba,_0x114d5a=a4_0x32ff32['join'](process[_0xddc4ff(0x1d5)](),'sparrow-mc'+'p-test-res'+_0xddc4ff(0x121));console['log']('🧪\x20Sparrow\x20'+_0xddc4ff(0x2e9)+_0xddc4ff(0x13e));!process.env.SPARROW_API_KEY&&(console[_0xddc4ff(0x294)](_0xddc4ff(0x2f8)+_0xddc4ff(0x240)+_0xddc4ff(0x175)+_0xddc4ff(0x27c)),console[_0xddc4ff(0x294)](_0x270f70['GBEzF']),console[_0xddc4ff(0x294)]('\x20\x20\x201.\x20실행\x20폴'+_0xddc4ff(0x1f9)+_0xddc4ff(0x190)+_0xddc4ff(0x2c9)+_0xddc4ff(0x19b)),console[_0xddc4ff(0x294)](_0xddc4ff(0x2ab)+_0xddc4ff(0x184)),console[_0xddc4ff(0x294)](_0xddc4ff(0xd5)+_0xddc4ff(0x2bc)+'v:SPARROW_'+_0xddc4ff(0x19e)+_0xddc4ff(0x20b)),console[_0xddc4ff(0x294)](_0xddc4ff(0x152)+'nux/Mac:\x20e'+'xport\x20SPAR'+_0xddc4ff(0x2cd)+'Y=\x22your-ke'+'y\x22\x0a'));try{let _0x8c5748=a4_0x32ff32[_0xddc4ff(0x261)](__dirname,_0xddc4ff(0x165));!a4_0x17a5b9[_0xddc4ff(0x1cf)](a4_0x32ff32[_0xddc4ff(0x128)](_0x8c5748,_0xddc4ff(0x215)+'on'))&&(_0x8c5748=a4_0x32ff32['resolve'](__dirname,_0xddc4ff(0x14d)));console[_0xddc4ff(0x1ae)]('[MCP\x20Clien'+'t]\x20Package'+_0xddc4ff(0x136)+_0x8c5748);const _0xe95b99=a4_0x32ff32[_0xddc4ff(0x128)](_0x8c5748,_0x270f70[_0xddc4ff(0x1bb)],_0x270f70[_0xddc4ff(0xf8)],'server.js'),_0x275de1=await runTests('node',[_0xe95b99]);saveTsv(_0x275de1,_0x114d5a);const _0x12766a=Object[_0xddc4ff(0x282)](_0x275de1)[_0xddc4ff(0x229)](_0x4142cc=>_0x4142cc['status']==='통과')[_0xddc4ff(0x197)],_0x5bf6df=Object[_0xddc4ff(0x282)](_0x275de1)[_0xddc4ff(0x229)](_0x4f770a=>_0x4f770a[_0xddc4ff(0x302)]==='실패')['length'];console['log'](_0xddc4ff(0x2d2)+_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+'━━'),console[_0xddc4ff(0x1ae)](_0x270f70['HAfgY']),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x1c9)+_0x12766a+'/'+(_0x12766a+_0x5bf6df)),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x30a)+_0x5bf6df),console[_0xddc4ff(0x1ae)](_0xddc4ff(0xc5)+_0x114d5a),console[_0xddc4ff(0x1ae)](_0xddc4ff(0x21d)+_0xddc4ff(0x21d)+'━━━━━━━━━━'+_0xddc4ff(0x21d)+'━\x0a'),process['exit'](_0x5bf6df>0x0?0x1:0x0);}catch(_0x5494df){console[_0xddc4ff(0x171)](_0x270f70[_0xddc4ff(0xd8)],_0x5494df[_0xddc4ff(0x158)]),process[_0xddc4ff(0x226)](0x1);}}main();
@@ -1 +1 @@
1
- const a5_0x5a88fc=a5_0x1325;(function(_0xc8abfb,_0xca0152){const _0x2ac4ea=a5_0x1325,_0x108684=_0xc8abfb();while(!![]){try{const _0x141585=parseInt(_0x2ac4ea(0x129))/0x1*(-parseInt(_0x2ac4ea(0x114))/0x2)+-parseInt(_0x2ac4ea(0x134))/0x3+parseInt(_0x2ac4ea(0x142))/0x4*(-parseInt(_0x2ac4ea(0x146))/0x5)+-parseInt(_0x2ac4ea(0x123))/0x6+-parseInt(_0x2ac4ea(0x11d))/0x7*(-parseInt(_0x2ac4ea(0x124))/0x8)+parseInt(_0x2ac4ea(0x11b))/0x9*(parseInt(_0x2ac4ea(0x111))/0xa)+parseInt(_0x2ac4ea(0x13d))/0xb*(parseInt(_0x2ac4ea(0x149))/0xc);if(_0x141585===_0xca0152)break;else _0x108684['push'](_0x108684['shift']());}catch(_0x1c8277){_0x108684['push'](_0x108684['shift']());}}}(a5_0x5a51,0xdbdf8));const a5_0x584dfe=(function(){let _0x2d74cc=!![];return function(_0x294e01,_0x11c781){const _0x31886c=_0x2d74cc?function(){const _0x4c9641=a5_0x1325;if(_0x11c781){const _0x1d40ca=_0x11c781[_0x4c9641(0x143)](_0x294e01,arguments);return _0x11c781=null,_0x1d40ca;}}:function(){};return _0x2d74cc=![],_0x31886c;};}()),a5_0x455ab1=a5_0x584dfe(this,function(){const _0x439f97=a5_0x1325;return a5_0x455ab1['toString']()['search'](_0x439f97(0x115)+'+$')[_0x439f97(0x12d)]()[_0x439f97(0x138)+'r'](a5_0x455ab1)[_0x439f97(0x116)](_0x439f97(0x115)+'+$');});a5_0x455ab1();import{config}from'dotenv';import a5_0x58d0ca from'path';import a5_0x5723d9 from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x58d0ca[a5_0x5a88fc(0x10d)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x58d0ca['resolve'](moduleDir,a5_0x5a88fc(0x145)),cwdEnvPath=a5_0x58d0ca[a5_0x5a88fc(0x144)](process[a5_0x5a88fc(0x121)](),a5_0x5a88fc(0x10f)),explicitEnvPath=process.env.ENV_PATH?a5_0x58d0ca[a5_0x5a88fc(0x144)](process[a5_0x5a88fc(0x121)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a5_0x5a88fc(0x112)](Boolean),envPath=candidateEnvPaths[a5_0x5a88fc(0x11e)](_0x45fe36=>{const _0x162b70=a5_0x5a88fc;try{return a5_0x5723d9[_0x162b70(0x117)](_0x45fe36);}catch{return![];}})||repoRootEnvPath,a5_0x4cd8c3={};a5_0x4cd8c3[a5_0x5a88fc(0x12c)]=envPath,config(a5_0x4cd8c3);const a5_0x3ba8d3={};function a5_0x5a51(){const _0x1440cd=['1183250sddoLg','(((.+)+)+)','search','existsSync','ssKey','secretAcce','gemini','14244759flxaJF','developmen','7FGoyGn','find','ollama','anthropic','cwd','region','5462070KXYYZH','2375128HLDJJm','240620','warn','claude-3-s','bucket','2bEMLqn','gemini-1.5','\x20사용합니다.','path','toString','accessKeyI','SPARROW_AP','\x20설정되지\x20않았습니','alhost:114','설정되지\x20않았습니다','I_KEY','1677834NQfbEC','apiKey','baseUrl','gemma2:27b','constructo','gpt-4o','sparrow','aws','endpoint','193446PjQMur','us-east-1','https://on','openai','\x20(로드\x20경로:\x20','908jfKYEv','apply','resolve','../../.env','21235HvFwek','join','rrowcloud.','1800kXrSfr','개발\x20환경:\x20스토리','dirname','-pro','.env','필수\x20환경\x20변수가\x20','10RfubJx','filter','http://loc'];a5_0x5a51=function(){return _0x1440cd;};return a5_0x5a51();}a5_0x3ba8d3[a5_0x5a88fc(0x136)]=process.env.OLLAMA_BASE_URL||a5_0x5a88fc(0x113)+a5_0x5a88fc(0x131)+'34',a5_0x3ba8d3['model']=process.env.OLLAMA_MODEL||a5_0x5a88fc(0x137);const a5_0x4dec8e={};a5_0x4dec8e[a5_0x5a88fc(0x11f)]=a5_0x3ba8d3,a5_0x4dec8e[a5_0x5a88fc(0x140)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||a5_0x5a88fc(0x139)}:undefined,a5_0x4dec8e[a5_0x5a88fc(0x120)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+'-sonnet-20'+a5_0x5a88fc(0x125)}:undefined,a5_0x4dec8e[a5_0x5a88fc(0x11a)]=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x5a88fc(0x12a)+a5_0x5a88fc(0x10e)}:undefined,a5_0x4dec8e[a5_0x5a88fc(0x13b)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||'us-east-1','accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||'anthropic.'+a5_0x5a88fc(0x127)+'onnet-2024'+'0229-v1:0'}:undefined,a5_0x4dec8e['s3']={},a5_0x4dec8e[a5_0x5a88fc(0x13a)]={},a5_0x4dec8e['notion']=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0x4dec8e['s3'][a5_0x5a88fc(0x128)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0x4dec8e['s3'][a5_0x5a88fc(0x122)]=process.env.STORAGE_REGION||a5_0x5a88fc(0x13e),a5_0x4dec8e['s3'][a5_0x5a88fc(0x12e)+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0x4dec8e['s3'][a5_0x5a88fc(0x119)+a5_0x5a88fc(0x118)]=process.env.STORAGE_SECRET_KEY||'',a5_0x4dec8e['s3'][a5_0x5a88fc(0x13c)]=process.env.STORAGE_ENDPOINT,a5_0x4dec8e[a5_0x5a88fc(0x13a)][a5_0x5a88fc(0x136)]=process.env.SPARROW_API_URL||a5_0x5a88fc(0x13f)+'demand.spa'+a5_0x5a88fc(0x148)+'ai',a5_0x4dec8e[a5_0x5a88fc(0x13a)][a5_0x5a88fc(0x135)]=process.env.SPARROW_API_KEY||'';export const appConfig=a5_0x4dec8e;const requiredEnvVars=[a5_0x5a88fc(0x12f)+a5_0x5a88fc(0x133)];process.env.NODE_ENV===a5_0x5a88fc(0x11c)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger[a5_0x5a88fc(0x126)](a5_0x5a88fc(0x10c)+'지\x20키\x20환경\x20변수가'+a5_0x5a88fc(0x130)+'다.\x20암호화된\x20키를'+a5_0x5a88fc(0x12b)));function a5_0x1325(_0x1488cc,_0x1b38a8){_0x1488cc=_0x1488cc-0x10c;const _0x3825f5=a5_0x5a51();let _0x455ab1=_0x3825f5[_0x1488cc];return _0x455ab1;}for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath][a5_0x5a88fc(0x112)](Boolean)[a5_0x5a88fc(0x147)](',\x20');logger['error'](a5_0x5a88fc(0x110)+'설정되지\x20않았습니다'+':\x20'+envVar+a5_0x5a88fc(0x141)+triedPaths+')');throw new Error(a5_0x5a88fc(0x110)+a5_0x5a88fc(0x132)+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');}}
1
+ const a5_0x4f4b3b=a5_0x412b;(function(_0x204619,_0x5f5985){const _0x2ac0a6=a5_0x412b,_0x39fc11=_0x204619();while(!![]){try{const _0x46aa1f=parseInt(_0x2ac0a6(0x1f5))/0x1+parseInt(_0x2ac0a6(0x20e))/0x2+parseInt(_0x2ac0a6(0x1f2))/0x3+-parseInt(_0x2ac0a6(0x208))/0x4*(parseInt(_0x2ac0a6(0x20b))/0x5)+-parseInt(_0x2ac0a6(0x21a))/0x6*(parseInt(_0x2ac0a6(0x205))/0x7)+parseInt(_0x2ac0a6(0x1ef))/0x8*(-parseInt(_0x2ac0a6(0x1fe))/0x9)+-parseInt(_0x2ac0a6(0x218))/0xa;if(_0x46aa1f===_0x5f5985)break;else _0x39fc11['push'](_0x39fc11['shift']());}catch(_0x49e9b2){_0x39fc11['push'](_0x39fc11['shift']());}}}(a5_0x423f,0x8283b));const a5_0x35c331=(function(){let _0x37c1a7=!![];return function(_0x4e6e9e,_0x58e048){const _0x3d0a58=_0x37c1a7?function(){if(_0x58e048){const _0x4277a1=_0x58e048['apply'](_0x4e6e9e,arguments);return _0x58e048=null,_0x4277a1;}}:function(){};return _0x37c1a7=![],_0x3d0a58;};}()),a5_0x535d90=a5_0x35c331(this,function(){const _0x27d3fb=a5_0x412b,_0x2182e7={};_0x2182e7[_0x27d3fb(0x1eb)]='(((.+)+)+)'+'+$';const _0x541173=_0x2182e7;return a5_0x535d90[_0x27d3fb(0x203)]()[_0x27d3fb(0x20c)](_0x541173[_0x27d3fb(0x1eb)])[_0x27d3fb(0x203)]()['constructo'+'r'](a5_0x535d90)[_0x27d3fb(0x20c)](_0x27d3fb(0x21e)+'+$');});a5_0x535d90();import{config}from'dotenv';import a5_0x1022d3 from'path';import a5_0x3478fc from'fs';import{fileURLToPath}from'url';import{logger}from'../utils/logger.js';const moduleDir=a5_0x1022d3[a5_0x4f4b3b(0x1ee)](fileURLToPath(import.meta.url)),repoRootEnvPath=a5_0x1022d3[a5_0x4f4b3b(0x202)](moduleDir,'../../.env'),cwdEnvPath=a5_0x1022d3[a5_0x4f4b3b(0x202)](process[a5_0x4f4b3b(0x215)](),'.env'),explicitEnvPath=process.env.ENV_PATH?a5_0x1022d3[a5_0x4f4b3b(0x202)](process[a5_0x4f4b3b(0x215)](),process.env.ENV_PATH):undefined,candidateEnvPaths=[explicitEnvPath,cwdEnvPath,repoRootEnvPath][a5_0x4f4b3b(0x209)](Boolean),envPath=candidateEnvPaths['find'](_0x230db9=>{const _0x3707ad=a5_0x4f4b3b;try{return a5_0x3478fc[_0x3707ad(0x204)](_0x230db9);}catch{return![];}})||repoRootEnvPath,a5_0x5607ce={};a5_0x5607ce[a5_0x4f4b3b(0x217)]=envPath,config(a5_0x5607ce);const a5_0x51a9b2={};function a5_0x423f(){const _0x11ef4c=['demand.spa','910729QuiNma','baseUrl','240620','0229-v1:0','anthropic','gemini','endpoint','ssKey','region','2774727uSTVIJ','onnet-2024','bucket','sparrow','resolve','toString','existsSync','5311761NfUgBo','개발\x20환경:\x20스토리','join','4MtjVpl','filter','https://on','1552910eZihEY','search','error','835394UHLTwj','us-east-1','rrowcloud.','\x20사용합니다.','필수\x20환경\x20변수가\x20','model','openai','cwd','aws','path','829670DLpLqa','gemini-1.5','6voEcTR','developmen','http://loc','alhost:114','(((.+)+)+)','-sonnet-20','ollama','bAtcv','secretAcce','I_KEY','dirname','8EKFtbd','notion','다.\x20암호화된\x20키를','2000508uKJUNL','gemma2:27b'];a5_0x423f=function(){return _0x11ef4c;};return a5_0x423f();}a5_0x51a9b2[a5_0x4f4b3b(0x1f6)]=process.env.OLLAMA_BASE_URL||a5_0x4f4b3b(0x21c)+a5_0x4f4b3b(0x21d)+'34',a5_0x51a9b2[a5_0x4f4b3b(0x213)]=process.env.OLLAMA_MODEL||a5_0x4f4b3b(0x1f3);const a5_0xd45d0e={};a5_0xd45d0e[a5_0x4f4b3b(0x1ea)]=a5_0x51a9b2,a5_0xd45d0e[a5_0x4f4b3b(0x214)]=process.env.OPENAI_API_KEY?{'apiKey':process.env.OPENAI_API_KEY,'model':process.env.OPENAI_MODEL||'gpt-4o'}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x1f9)]=process.env.ANTHROPIC_API_KEY?{'apiKey':process.env.ANTHROPIC_API_KEY,'model':process.env.ANTHROPIC_MODEL||'claude-3-5'+a5_0x4f4b3b(0x21f)+a5_0x4f4b3b(0x1f7)}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x1fa)]=process.env.GEMINI_API_KEY?{'apiKey':process.env.GEMINI_API_KEY,'model':process.env.GEMINI_MODEL||a5_0x4f4b3b(0x219)+'-pro'}:undefined,a5_0xd45d0e[a5_0x4f4b3b(0x216)]=process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY?{'region':process.env.AWS_REGION||a5_0x4f4b3b(0x20f),'accessKeyId':process.env.AWS_ACCESS_KEY_ID,'secretAccessKey':process.env.AWS_SECRET_ACCESS_KEY,'sessionToken':process.env.AWS_SESSION_TOKEN,'model':process.env.AWS_MODEL||'anthropic.'+'claude-3-s'+a5_0x4f4b3b(0x1ff)+a5_0x4f4b3b(0x1f8)}:undefined,a5_0xd45d0e['s3']={},a5_0xd45d0e[a5_0x4f4b3b(0x201)]={},a5_0xd45d0e[a5_0x4f4b3b(0x1f0)]=process.env.NOTION_API_KEY?{'apiKey':process.env.NOTION_API_KEY,'databaseId':process.env.NOTION_DATABASE_ID||''}:undefined,a5_0xd45d0e['s3'][a5_0x4f4b3b(0x200)]=process.env.STORAGE_CONTAINER_NAME||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1fd)]=process.env.STORAGE_REGION||a5_0x4f4b3b(0x20f),a5_0xd45d0e['s3']['accessKeyI'+'d']=process.env.STORAGE_ACCESS_ID||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1ec)+a5_0x4f4b3b(0x1fc)]=process.env.STORAGE_SECRET_KEY||'',a5_0xd45d0e['s3'][a5_0x4f4b3b(0x1fb)]=process.env.STORAGE_ENDPOINT,a5_0xd45d0e[a5_0x4f4b3b(0x201)][a5_0x4f4b3b(0x1f6)]=process.env.SPARROW_API_URL||a5_0x4f4b3b(0x20a)+a5_0x4f4b3b(0x1f4)+a5_0x4f4b3b(0x210)+'ai',a5_0xd45d0e[a5_0x4f4b3b(0x201)]['apiKey']=process.env.SPARROW_API_KEY||'';function a5_0x412b(_0x2f7a9a,_0x305e29){_0x2f7a9a=_0x2f7a9a-0x1ea;const _0x43e1e7=a5_0x423f();let _0x535d90=_0x43e1e7[_0x2f7a9a];return _0x535d90;}export const appConfig=a5_0xd45d0e;const requiredEnvVars=['SPARROW_AP'+a5_0x4f4b3b(0x1ed)];process.env.NODE_ENV===a5_0x4f4b3b(0x21b)+'t'&&((!process.env.STORAGE_ACCESS_ID||!process.env.STORAGE_SECRET_KEY)&&logger['warn'](a5_0x4f4b3b(0x206)+'지\x20키\x20환경\x20변수가'+'\x20설정되지\x20않았습니'+a5_0x4f4b3b(0x1f1)+a5_0x4f4b3b(0x211)));for(const envVar of requiredEnvVars){if(!process.env[envVar]){const triedPaths=[envPath][a5_0x4f4b3b(0x209)](Boolean)[a5_0x4f4b3b(0x207)](',\x20');logger[a5_0x4f4b3b(0x20d)](a5_0x4f4b3b(0x212)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');throw new Error(a5_0x4f4b3b(0x212)+'설정되지\x20않았습니다'+':\x20'+envVar+'\x20(로드\x20경로:\x20'+triedPaths+')');}}
@@ -1 +1 @@
1
- const a6_0x237293=a6_0x54c0;(function(_0x484b77,_0xecb73e){const _0x17eacf=a6_0x54c0,_0x4be2dc=_0x484b77();while(!![]){try{const _0x5b0fa4=parseInt(_0x17eacf(0x91))/0x1*(parseInt(_0x17eacf(0x9c))/0x2)+parseInt(_0x17eacf(0xbf))/0x3+parseInt(_0x17eacf(0xa8))/0x4+-parseInt(_0x17eacf(0xea))/0x5*(-parseInt(_0x17eacf(0xa6))/0x6)+parseInt(_0x17eacf(0x98))/0x7*(-parseInt(_0x17eacf(0xe4))/0x8)+-parseInt(_0x17eacf(0xcd))/0x9+-parseInt(_0x17eacf(0x92))/0xa;if(_0x5b0fa4===_0xecb73e)break;else _0x4be2dc['push'](_0x4be2dc['shift']());}catch(_0x558d0e){_0x4be2dc['push'](_0x4be2dc['shift']());}}}(a6_0xe967,0x22bfa));const a6_0x4d76e7=(function(){let _0x3bf44b=!![];return function(_0x2eadef,_0x58aed1){const _0x495443=_0x3bf44b?function(){const _0x6c88be=a6_0x54c0;if(_0x58aed1){const _0x1da78d=_0x58aed1[_0x6c88be(0x9d)](_0x2eadef,arguments);return _0x58aed1=null,_0x1da78d;}}:function(){};return _0x3bf44b=![],_0x495443;};}()),a6_0x191708=a6_0x4d76e7(this,function(){const _0x20e358=a6_0x54c0;return a6_0x191708[_0x20e358(0xb8)]()['search']('(((.+)+)+)'+'+$')['toString']()[_0x20e358(0xe6)+'r'](a6_0x191708)[_0x20e358(0x95)](_0x20e358(0xd0)+'+$');});a6_0x191708();function a6_0xe967(){const _0xa5a80=['의\x20가이드에\x20따라\x20','ANALYSIS',':\x20`package','70390EGDSvr','apply','\x0a\x0a##\x201.\x20전술','POST_PROCE','ts`\x20(SCA)','-\x20**파일\x20하나도','#\x20Sparrow\x20','order','라이브러리\x20업데이트','name','6jNXsJk','ogress`로\x20','313236tAvVRs','tion','e_folder_s','ST)\x20또는\x20`ge','code`로\x20해결책','라\x20적절한\x20도구(파','니다\x22보다\x20**\x22심','row-mcp`를\x20','progress','은\x20최고의\x20보안\x20','등을\x20사용합니다.\x0a','\x20SAST\x20취약점이','**\x20`genera','취약점이\x20발견되었습','r\x20analysis',')를\x20명확히\x20보여주','toString','PRE_PROCES','러리를\x20찾을\x20때\x20`','하게\x20하지\x20마세요)','\x20상세\x20리포트를\x20가','Post-proce','를\x20제안합니다.\x0a\x0a','838836SWwFqc','하여\x20취약한\x20라이브','h**:\x20분석이\x20','sing','analyze_fi','\x20루프\x20(The\x20L','tart\x20analy','일/폴더/ZIP)를','사용합니다.\x20다음\x20','Analysis','Ready','COMPLETE','Pre-proces','\x20**Track**','1002564MjZnWx','`analyze_f','\x0a3.\x20**Fetc','(((.+)+)+)','nalysis_pr',')를\x20막았습니다\x22*','합니다.\x0a-\x20**오','치를\x20전달하세요.\x0a','nalysis_re','`,\x20`analyz','om.xml`\x20등\x20','ast`\x20등을\x20사용','t_sca_anal','...',':\x20분석\x20범위에\x20따','료되면\x20결과\x20유형에','원칙을\x20따르십시오:','-\x20수정\x20제안\x20시,','을\x20제시하고,\x20SC','descriptio','Analysis\x20i','\x20`analyze_','.json`,\x20`p','14152IJDuHU','READY','constructo','Initializa','lder_sca`\x20','uccessfull','1019035iHABfi','\x20원본과\x20안전한\x20','ssing','ssing...','\x20놓치지\x20마세요**','MCP\x20규칙\x0a\x0a당신','sing...','를\x20받습니다.\x0a2.','\x20to\x20start.','files_sast','드의\x20차이(Diff','Complete','\x20등)을\x20찾을\x20때\x20','Start**:\x20','어\x20신뢰를\x20얻으세요','ile_sast`,','#\x202.\x20분석-조치','INIT','le_sca`,\x20`','2YtUPva','3129390OqbrtC','*라고\x20긍정적인\x20가','Waiting\x20fo','search','*Action**:','\x20있다면\x20**반드시','259ssawIq'];a6_0xe967=function(){return _0xa5a80;};return a6_0xe967();}export const SPARROW_RULES=a6_0x237293(0xa2)+a6_0x237293(0xef)+a6_0x237293(0xb1)+'트너로서\x20`spar'+a6_0x237293(0xaf)+a6_0x237293(0xc7)+a6_0x237293(0xdd)+a6_0x237293(0x9e)+'적\x20도구\x20선택\x0a-\x20'+'**소스코드\x20진단\x20'+'(SAST)**:\x20'+'코드\x20자체의\x20취약점'+'(SQLi,\x20XSS'+a6_0x237293(0x8a)+a6_0x237293(0xce)+a6_0x237293(0x8d)+a6_0x237293(0xe2)+a6_0x237293(0x87)+a6_0x237293(0xd6)+a6_0x237293(0xaa)+a6_0x237293(0xd8)+a6_0x237293(0xd3)+'픈소스/라이브러리\x20'+'진단\x20(SCA)**'+a6_0x237293(0x9b)+a6_0x237293(0xe3)+a6_0x237293(0xd7)+'의존성\x20파일을\x20분석'+a6_0x237293(0xc0)+a6_0x237293(0xba)+a6_0x237293(0xc3)+a6_0x237293(0x90)+'analyze_fo'+a6_0x237293(0xe8)+a6_0x237293(0xb2)+a6_0x237293(0xa1)+a6_0x237293(0xee)+a6_0x237293(0xdb)+a6_0x237293(0xad)+a6_0x237293(0xc6)+'\x20선택하세요.\x0a\x0a#'+a6_0x237293(0x8e)+a6_0x237293(0xc4)+'oop)\x0a1.\x20**'+a6_0x237293(0x8b)+'석을\x20시작하고\x20`a'+'nalysisId`'+a6_0x237293(0x85)+a6_0x237293(0xcc)+':\x20`track_a'+a6_0x237293(0xd1)+a6_0x237293(0xa7)+'기\x20있게\x20기다립니다'+'.\x20(사용자를\x20불안'+a6_0x237293(0xbb)+a6_0x237293(0xcf)+a6_0x237293(0xc1)+a6_0x237293(0xdc)+'\x20따라\x20`get_a'+a6_0x237293(0xd5)+'sults`\x20(SA'+a6_0x237293(0xab)+a6_0x237293(0xd9)+'ysis_resul'+a6_0x237293(0xa0)+a6_0x237293(0xbc)+'져옵니다.\x0a4.\x20*'+a6_0x237293(0x96)+a6_0x237293(0xb3)+a6_0x237293(0x97)+a6_0x237293(0xb4)+'te_secure_'+a6_0x237293(0xac)+a6_0x237293(0xdf)+'A\x20취약점은\x20리포트'+a6_0x237293(0x99)+a6_0x237293(0xa4)+a6_0x237293(0xbe)+'##\x203.\x20사용자\x20'+'커뮤니케이션\x0a-\x20\x22'+a6_0x237293(0xb5)+a6_0x237293(0xae)+'각한\x20이슈(High'+a6_0x237293(0xd2)+a6_0x237293(0x93)+a6_0x237293(0xd4)+a6_0x237293(0xde)+a6_0x237293(0xeb)+a6_0x237293(0x88)+a6_0x237293(0xb7)+a6_0x237293(0x8c)+'.';const a6_0x42ca63={};a6_0x42ca63['id']=a6_0x237293(0x8f),a6_0x42ca63['name']=a6_0x237293(0xe7)+a6_0x237293(0xa9),a6_0x42ca63[a6_0x237293(0xe0)+'n']=a6_0x237293(0x94)+a6_0x237293(0xb6)+a6_0x237293(0x86),a6_0x42ca63[a6_0x237293(0xb0)]=null,a6_0x42ca63['order']=0x1;const a6_0x5c97ed={};a6_0x5c97ed['id']=a6_0x237293(0xe5),a6_0x5c97ed[a6_0x237293(0xa5)]=a6_0x237293(0xc9),a6_0x5c97ed['descriptio'+'n']='Ready\x20to\x20s'+a6_0x237293(0xc5)+'sis.',a6_0x5c97ed[a6_0x237293(0xb0)]=null,a6_0x5c97ed[a6_0x237293(0xa3)]=0x2;const a6_0x2987a4={};a6_0x2987a4['id']=a6_0x237293(0xb9)+'S',a6_0x2987a4[a6_0x237293(0xe0)+'n']=a6_0x237293(0xcb)+a6_0x237293(0xf0),a6_0x2987a4[a6_0x237293(0xa5)]=a6_0x237293(0xcb)+a6_0x237293(0xc2),a6_0x2987a4['progress']=null,a6_0x2987a4['order']=0x3;const a6_0x39abdc={};a6_0x39abdc['id']=a6_0x237293(0x9a),a6_0x39abdc[a6_0x237293(0xe0)+'n']=a6_0x237293(0xe1)+'n\x20progress'+a6_0x237293(0xda),a6_0x39abdc['name']=a6_0x237293(0xc8),a6_0x39abdc[a6_0x237293(0xb0)]=0x0,a6_0x39abdc[a6_0x237293(0xa3)]=0x4;function a6_0x54c0(_0x40ba7e,_0x24730f){_0x40ba7e=_0x40ba7e-0x85;const _0x2382fa=a6_0xe967();let _0x191708=_0x2382fa[_0x40ba7e];return _0x191708;}const a6_0xe6ea51={};a6_0xe6ea51['id']=a6_0x237293(0x9f)+'SS',a6_0xe6ea51['descriptio'+'n']='Post-proce'+a6_0x237293(0xed),a6_0xe6ea51[a6_0x237293(0xa5)]=a6_0x237293(0xbd)+a6_0x237293(0xec),a6_0xe6ea51[a6_0x237293(0xb0)]=null,a6_0xe6ea51['order']=0x5;const a6_0x260d3e={};a6_0x260d3e['id']=a6_0x237293(0xca),a6_0x260d3e['descriptio'+'n']='Analysis\x20c'+'ompleted\x20s'+a6_0x237293(0xe9)+'y.',a6_0x260d3e[a6_0x237293(0xa5)]=a6_0x237293(0x89),a6_0x260d3e[a6_0x237293(0xb0)]=0x64,a6_0x260d3e[a6_0x237293(0xa3)]=0x6;const a6_0x558d00={};a6_0x558d00[a6_0x237293(0x8f)]=a6_0x42ca63,a6_0x558d00[a6_0x237293(0xe5)]=a6_0x5c97ed,a6_0x558d00[a6_0x237293(0xb9)+'S']=a6_0x2987a4,a6_0x558d00[a6_0x237293(0x9a)]=a6_0x39abdc,a6_0x558d00[a6_0x237293(0x9f)+'SS']=a6_0xe6ea51,a6_0x558d00[a6_0x237293(0xca)]=a6_0x260d3e;export const ANALYSIS_STAGES=a6_0x558d00;
1
+ const a6_0x2b2a5d=a6_0xdc9d;(function(_0xf681d3,_0xb9078){const _0x58f20e=a6_0xdc9d,_0x49190b=_0xf681d3();while(!![]){try{const _0x32a939=parseInt(_0x58f20e(0x121))/0x1*(-parseInt(_0x58f20e(0xe4))/0x2)+parseInt(_0x58f20e(0x135))/0x3*(-parseInt(_0x58f20e(0x10a))/0x4)+parseInt(_0x58f20e(0xfb))/0x5+-parseInt(_0x58f20e(0x10f))/0x6*(-parseInt(_0x58f20e(0xf8))/0x7)+parseInt(_0x58f20e(0x132))/0x8*(parseInt(_0x58f20e(0xfc))/0x9)+-parseInt(_0x58f20e(0x106))/0xa+parseInt(_0x58f20e(0x126))/0xb*(parseInt(_0x58f20e(0x12d))/0xc);if(_0x32a939===_0xb9078)break;else _0x49190b['push'](_0x49190b['shift']());}catch(_0x447a95){_0x49190b['push'](_0x49190b['shift']());}}}(a6_0x5795,0x6ade9));const a6_0x4661e4=(function(){let _0x2ac996=!![];return function(_0x109e3a,_0x37dd27){const _0x1e7acd=_0x2ac996?function(){const _0x7401a7=a6_0xdc9d;if(_0x37dd27){const _0x5a3994=_0x37dd27[_0x7401a7(0x12a)](_0x109e3a,arguments);return _0x37dd27=null,_0x5a3994;}}:function(){};return _0x2ac996=![],_0x1e7acd;};}()),a6_0x52a58b=a6_0x4661e4(this,function(){const _0x2a6033=a6_0xdc9d;return a6_0x52a58b[_0x2a6033(0x134)]()[_0x2a6033(0xd2)](_0x2a6033(0x12f)+'+$')['toString']()[_0x2a6033(0xd9)+'r'](a6_0x52a58b)['search'](_0x2a6033(0x12f)+'+$');});a6_0x52a58b();export const SPARROW_RULES=a6_0x2b2a5d(0xf1)+a6_0x2b2a5d(0x124)+a6_0x2b2a5d(0xd3)+a6_0x2b2a5d(0x138)+a6_0x2b2a5d(0x104)+'사용합니다.\x20다음\x20'+a6_0x2b2a5d(0x100)+a6_0x2b2a5d(0x10d)+a6_0x2b2a5d(0xfd)+'**소스코드\x20진단\x20'+a6_0x2b2a5d(0x131)+a6_0x2b2a5d(0x11f)+'(SQLi,\x20XSS'+a6_0x2b2a5d(0x112)+a6_0x2b2a5d(0xdc)+'ile_sast`,'+a6_0x2b2a5d(0xf4)+'files_sast'+a6_0x2b2a5d(0x125)+a6_0x2b2a5d(0x120)+a6_0x2b2a5d(0xd6)+'합니다.\x0a-\x20**오'+a6_0x2b2a5d(0x12c)+'진단\x20(SCA)**'+':\x20`package'+a6_0x2b2a5d(0x113)+a6_0x2b2a5d(0xef)+a6_0x2b2a5d(0xdd)+a6_0x2b2a5d(0xe1)+a6_0x2b2a5d(0x116)+'analyze_fi'+a6_0x2b2a5d(0x139)+a6_0x2b2a5d(0xe8)+a6_0x2b2a5d(0x103)+a6_0x2b2a5d(0x128)+a6_0x2b2a5d(0x10c)+'\x20놓치지\x20마세요**'+a6_0x2b2a5d(0xcc)+'라\x20적절한\x20도구(파'+a6_0x2b2a5d(0xeb)+'\x20선택하세요.\x0a\x0a#'+a6_0x2b2a5d(0xf3)+a6_0x2b2a5d(0xf7)+a6_0x2b2a5d(0xe9)+'Start**:\x20'+a6_0x2b2a5d(0x117)+a6_0x2b2a5d(0xe3)+a6_0x2b2a5d(0xce)+a6_0x2b2a5d(0xf5)+':\x20`track_a'+a6_0x2b2a5d(0xe2)+'ogress`로\x20끈'+a6_0x2b2a5d(0x101)+a6_0x2b2a5d(0xd5)+a6_0x2b2a5d(0xd7)+a6_0x2b2a5d(0x119)+'h**:\x20분석이\x20'+a6_0x2b2a5d(0x110)+a6_0x2b2a5d(0x137)+a6_0x2b2a5d(0xf2)+a6_0x2b2a5d(0x111)+'ST)\x20또는\x20`ge'+a6_0x2b2a5d(0x133)+'ysis_resul'+a6_0x2b2a5d(0xd4)+a6_0x2b2a5d(0x109)+a6_0x2b2a5d(0xe5)+a6_0x2b2a5d(0x136)+a6_0x2b2a5d(0xcb)+a6_0x2b2a5d(0x108)+'**\x20`genera'+a6_0x2b2a5d(0x10b)+a6_0x2b2a5d(0xdb)+a6_0x2b2a5d(0x12b)+'A\x20취약점은\x20리포트'+a6_0x2b2a5d(0xe7)+a6_0x2b2a5d(0x11a)+a6_0x2b2a5d(0xea)+a6_0x2b2a5d(0x11d)+a6_0x2b2a5d(0xed)+'취약점이\x20발견되었습'+a6_0x2b2a5d(0x10e)+a6_0x2b2a5d(0x114)+a6_0x2b2a5d(0x11c)+a6_0x2b2a5d(0xca)+a6_0x2b2a5d(0x127)+a6_0x2b2a5d(0xd0)+a6_0x2b2a5d(0xee)+a6_0x2b2a5d(0xd1)+')를\x20명확히\x20보여주'+a6_0x2b2a5d(0xff)+'.';function a6_0xdc9d(_0x35710f,_0x1605dc){_0x35710f=_0x35710f-0xca;const _0x363e0d=a6_0x5795();let _0x52a58b=_0x363e0d[_0x35710f];return _0x52a58b;}const a6_0x158a1d={};function a6_0x5795(){const _0x3722cc=['46878afgBPu','*Action**:','\x20따라\x20`get_a','트너로서\x20`spar','le_sca`,\x20`','Analysis','*라고\x20긍정적인\x20가','\x20SAST\x20취약점이',':\x20분석\x20범위에\x20','order','를\x20받습니다.\x0a2.','Ready\x20to\x20s','-\x20수정\x20제안\x20시,','드의\x20차이(Diff','search','은\x20최고의\x20보안\x20파','ts`\x20(SCA)로','.\x20(사용자를\x20불안','ast`\x20등을\x20사용','하게\x20하지\x20마세요)','sing','constructo','r\x20analysis','code`로\x20해결책','`analyze_f','의존성\x20파일을\x20분석','Ready','progress','Pre-proces','하여\x20취약한\x20라이브','nalysis_pr','nalysisId`','382yNrhwM','져옵니다.\x0a4.\x20*','ompleted\x20s','의\x20가이드에\x20따라\x20','analyze_fo','oop)\x0a1.\x20**','를\x20제안합니다.\x0a\x0a','일/폴더/ZIP)를','...','커뮤니케이션\x0a-\x20\x22','\x20원본과\x20안전한\x20코','om.xml`\x20등\x20','ANALYSIS','#\x20Sparrow\x20','nalysis_re','#\x202.\x20분석-조치','\x20`analyze_','\x20**Track**','Analysis\x20c','\x20루프\x20(The\x20L','2779iNaZAW','READY','Waiting\x20fo','3765290hcmZpA','209871cZsFYj','적\x20도구\x20선택\x0a-\x20','Post-proce','어\x20신뢰를\x20얻으세요','원칙을\x20따르십시오:','기\x20있게\x20기다립니다','COMPLETE','lder_sca`\x20','row-mcp`를\x20','POST_PROCE','2225030iakhFj','\x20to\x20start.','\x20있다면\x20**반드시','\x20상세\x20리포트를\x20가','184GFuVWr','te_secure_','-\x20**파일\x20하나도','\x0a\x0a##\x201.\x20전술','니다\x22보다\x20**\x22심','654ojbZOs','료되면\x20결과\x20유형에','sults`\x20(SA','\x20등)을\x20찾을\x20때\x20','.json`,\x20`p','각한\x20이슈(High','descriptio','러리를\x20찾을\x20때\x20`','석을\x20시작하고\x20`a','uccessfull','\x0a3.\x20**Fetc','라이브러리\x20업데이트','PRE_PROCES',')를\x20막았습니다\x22*','##\x203.\x20사용자\x20','sing...','코드\x20자체의\x20취약점','e_folder_s','594yTxqVS','name','ssing','MCP\x20규칙\x0a\x0a당신','`,\x20`analyz','495BwmLRS','치를\x20전달하세요.\x0a','등을\x20사용합니다.\x0a','tion','apply','을\x20제시하고,\x20SC','픈소스/라이브러리\x20','117240TQTAtI','INIT','(((.+)+)+)','Analysis\x20i','(SAST)**:\x20','88uiyoIC','t_sca_anal','toString'];a6_0x5795=function(){return _0x3722cc;};return a6_0x5795();}a6_0x158a1d['id']=a6_0x2b2a5d(0x12e),a6_0x158a1d[a6_0x2b2a5d(0x122)]='Initializa'+a6_0x2b2a5d(0x129),a6_0x158a1d[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xfa)+a6_0x2b2a5d(0xda)+a6_0x2b2a5d(0x107),a6_0x158a1d['progress']=null,a6_0x158a1d[a6_0x2b2a5d(0xcd)]=0x1;const a6_0x429c66={};a6_0x429c66['id']=a6_0x2b2a5d(0xf9),a6_0x429c66[a6_0x2b2a5d(0x122)]=a6_0x2b2a5d(0xde),a6_0x429c66[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xcf)+'tart\x20analy'+'sis.',a6_0x429c66[a6_0x2b2a5d(0xdf)]=null,a6_0x429c66[a6_0x2b2a5d(0xcd)]=0x2;const a6_0x5d7546={};a6_0x5d7546['id']=a6_0x2b2a5d(0x11b)+'S',a6_0x5d7546[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xe0)+a6_0x2b2a5d(0x11e),a6_0x5d7546[a6_0x2b2a5d(0x122)]='Pre-proces'+a6_0x2b2a5d(0xd8),a6_0x5d7546[a6_0x2b2a5d(0xdf)]=null,a6_0x5d7546[a6_0x2b2a5d(0xcd)]=0x3;const a6_0x5a6373={};a6_0x5a6373['id']='ANALYSIS',a6_0x5a6373['descriptio'+'n']=a6_0x2b2a5d(0x130)+'n\x20progress'+a6_0x2b2a5d(0xec),a6_0x5a6373['name']=a6_0x2b2a5d(0x13a),a6_0x5a6373[a6_0x2b2a5d(0xdf)]=0x0,a6_0x5a6373[a6_0x2b2a5d(0xcd)]=0x4;const a6_0x1a9d98={};a6_0x1a9d98['id']='POST_PROCE'+'SS',a6_0x1a9d98[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xfe)+'ssing...',a6_0x1a9d98[a6_0x2b2a5d(0x122)]=a6_0x2b2a5d(0xfe)+a6_0x2b2a5d(0x123),a6_0x1a9d98[a6_0x2b2a5d(0xdf)]=null,a6_0x1a9d98[a6_0x2b2a5d(0xcd)]=0x5;const a6_0x56f0ae={};a6_0x56f0ae['id']='COMPLETE',a6_0x56f0ae[a6_0x2b2a5d(0x115)+'n']=a6_0x2b2a5d(0xf6)+a6_0x2b2a5d(0xe6)+a6_0x2b2a5d(0x118)+'y.',a6_0x56f0ae[a6_0x2b2a5d(0x122)]='Complete',a6_0x56f0ae['progress']=0x64,a6_0x56f0ae[a6_0x2b2a5d(0xcd)]=0x6;const a6_0x53d3f5={};a6_0x53d3f5[a6_0x2b2a5d(0x12e)]=a6_0x158a1d,a6_0x53d3f5['READY']=a6_0x429c66,a6_0x53d3f5[a6_0x2b2a5d(0x11b)+'S']=a6_0x5d7546,a6_0x53d3f5[a6_0x2b2a5d(0xf0)]=a6_0x5a6373,a6_0x53d3f5[a6_0x2b2a5d(0x105)+'SS']=a6_0x1a9d98,a6_0x53d3f5[a6_0x2b2a5d(0x102)]=a6_0x56f0ae;export const ANALYSIS_STAGES=a6_0x53d3f5;