From ea59e5356f149db6e6e2e3f063aa5ee10a44b68e Mon Sep 17 00:00:00 2001
From: KEJ <kimeungju@diteam.co.kr>
Date: 금, 24 11월 2023 17:39:42 +0900
Subject: [PATCH] Ongoing80 #4669 CF AOI Review Glass Grade PT판정 처리 추가  1. Glass, Cell PT 판정 추가.  2. GlassRawMessenger 데이터 추가  3. GlassRawMessenger 동기화

---
 ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb                |    0 
 ReviewSystem/bin/LineChecker_x64_vc15.pdb                     |    0 
 ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb             |    0 
 ReviewSystem/bin/CHMotorControls_x64_vc15.dll                 |    0 
 ReviewSystem/bin/ReviewRecipeEditor.exe                       |    0 
 DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb         |    0 
 ReviewSystem/bin/CHReviewReciped_x64_vc15.dll                 |    0 
 ReviewSystem/bin/CHReviewSetting_x64_vc15.dll                 |    0 
 DitGlassRawMessenger/Extern/DitGlassRawStruct.h               |    2 
 ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll                 |    0 
 ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll             |    0 
 DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp |    5 
 ReviewSystem/bin/CHResultFileManager_x64_vc15.dll             |    0 
 ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb                 |    0 
 ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll                |    0 
 ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb                  |    0 
 ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb         |    0 
 ReviewSystem/bin/CHDefectPicker_x64_vc15.dll                  |    0 
 ReviewSystem/bin/ReviewSystemSetting.exe                      |    0 
 ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb             |    0 
 ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll                  |    0 
 ReviewSystem/bin/CHLightControls_x64_vc15.pdb                 |    0 
 ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb                 |    0 
 ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb                |    0 
 ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb                   |    0 
 ReviewSystem/bin/CHReviewResult_x64_vc15.dll                  |    0 
 ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb               |    0 
 ReviewSystem/bin/ReviewRecipeEditor.pdb                       |    0 
 ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb          |    0 
 ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll         |    0 
 ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe            |    0 
 ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb                  |    0 
 ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe             |    0 
 ReviewSystem/bin/CHReviewResult_x64_vc15.pdb                  |    0 
 ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll                |    0 
 ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll          |    0 
 ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp             |    8 
 DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h      |    2 
 ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb                 |    0 
 ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb            |    0 
 ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb            |    0 
 ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb             |    0 
 ReviewSystem/bin/CHLightControlsd_x64_vc15.dll                |    0 
 ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb          |    0 
 DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe        |    0 
 ReviewSystem/bin/ReviewSystem.pdb                             |    0 
 ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb           |    0 
 ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb                |    0 
 ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll          |    0 
 ReviewSystem/bin/ReviewSystemd_x64_vc10.exe                   |    0 
 ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb            |    0 
 ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll            |    0 
 ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll                |    0 
 ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb                 |    0 
 ReviewSystem/bin/CHSignalControls_x64_vc15.dll                |    0 
 ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb                  |    0 
 ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll            |    0 
 ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb            |    0 
 ReviewSystem/ReviewSystem/DitGlassRawStruct.h                 |    2 
 ReviewSystem/bin/LineCheckerd_x64_vc15.dll                    |    0 
 ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll                  |    0 
 ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb                |    0 
 ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll               |    0 
 ReviewSystem/bin/CHAlignFinder_x64_vc15.dll                   |    0 
 ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll                  |    0 
 ReviewSystem/bin/CHPathScheduler_x64_vc15.dll                 |    0 
 ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb                  |    0 
 ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll           |    0 
 DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp   |   55 ++
 ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll         |    0 
 ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h            |    3 
 ReviewSystem/bin/CHReviewResultd_x64_vc15.dll                 |    0 
 ReviewSystem/bin/CHLightControls_x64_vc15.dll                 |    0 
 ReviewSystem/bin/ReviewSystem.exe                             |    0 
 ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll           |    0 
 ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb                   |    0 
 ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb                 |    0 
 DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp |    8 
 ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb            |    0 
 DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb        |    0 
 ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp          |  210 +++++++++
 ReviewSystem/bin/CHAfmControls_x64_vc15.pdb                   |    0 
 ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb           |    0 
 ReviewSystem/bin/LineCheckerd_x64_vc15.pdb                    |    0 
 /dev/null                                                     |  787 ---------------------------------------
 DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp     |    3 
 ReviewSystem/bin/CHSignalControls_x64_vc15.pdb                |    0 
 ReviewSystem/bin/LineChecker_x64_vc15.dll                     |    0 
 DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe         |    0 
 ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb         |    0 
 ReviewSystem/bin/CHMotorControls_x64_vc15.pdb                 |    0 
 ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll            |    0 
 ReviewSystem/bin/ReviewSystemSetting.pdb                      |    0 
 ReviewSystem/bin/CHAfmControls_x64_vc15.dll                   |    0 
 DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp    |   57 ++
 ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll            |    0 
 96 files changed, 319 insertions(+), 823 deletions(-)

diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp
index a448821..acabcf6 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/AnaResultFile.cpp
@@ -49,7 +49,11 @@
 	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMin%02d", i);
 	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcMax%02d", i);
 	for (int i = 0; i < MAX_ZONE_NUM; i++) fprintf(pf, ",ZoneSrcAvg%02d", i);
-	fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness");
+/* < KMH 20220816 : #4271 MOD Start > */
+	// R_Scale, GateLine, DataLine, Channel 항목추가
+	//fprintf(pf, ", m_sDefectPeak, m_nPixelSize, DefectType, UMSize, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness");
+	fprintf(pf, ", DefectPeak, PixelSize, DefectType, UMSize, R_Scale, Density, ScrtRatio, MergeState, Angle, Major, Minor, Compact, Thickness, GateLine, DataLine, Channel");
+/* < KMH 20220816 : #4271 MOD End > */
 	fprintf(pf, "\n");
 
 	for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++)
@@ -57,7 +61,42 @@
 		_grmDefectData* pDefect = pData->GetDefectData(iDefect);
 		/* < KJG 20220225 - #4000 ADD Start >*/ 
 		CString strDefectCellID;
-		strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]);
+	/* < KMH 20220728 : # MOD Start > */
+		//strDefectCellID.Format("%s%c%c", pData->GetGlassData()->m_strGlassID, '0' + pDefect->m_nCellIdx / 36, pCellCode[pDefect->m_nCellIdx % 36]);
+
+		// enum DefectLocation { DefectLoc_Pattern = 0, DefectLoc_Crack, DefectLoc_BM, DefectLoc_ASG, DefectLoc_PAD, DefectLoc_C2C, DefectLoc_EdgeLine, DefectLoc_Proj, DefectLoc_Chip, DefectLoc_Corner, DefectLoc_DeepPad, DefectLoc_DeepAA, DefectLoc_CrackPT };
+		// 3,4,5 : PAD Defect
+		if (pDefect->m_sDefectLoc == 3 || pDefect->m_sDefectLoc == 4 || pDefect->m_sDefectLoc == 5)
+		{
+			_grmGlassData *pGlass = pData->GetGlassData();
+			int nMinDistance = max(pGlass->m_nGlassSizeWidth, pGlass->m_nGlassSizeHeight);
+
+			for (int iCell = 0; iCell < pGlass->m_nCellNum; iCell++)
+			{
+				_grmCellData* pCell = pData->GetCellData(iCell);
+
+				int nCellCenterX = (pCell->m_rectCellLeft + pCell->m_rectCellRight) / 2;	
+				int nCellCenterY = (pCell->m_rectCellTop + pCell->m_rectCellBottom) / 2;
+				//int nTempDistance = sqrt(pow(ptCellCenter.x - pDefect->m_nUMCenterAlignX,2) + pow(ptCellCenter.y - pDefect->m_nUMCenterAlignY,2));
+
+				if (pDefect->m_nModelIdx == pCell->m_nModelIdx)		// 디펙의 모델과 셀의 모델이 같을 때만 비교
+				{
+					int nTempDistance = abs(nCellCenterX - pDefect->m_nUMCenterAlignX) + abs(nCellCenterY - pDefect->m_nUMCenterAlignY);	// x,y 편차 합계
+				
+					if (nMinDistance > nTempDistance)
+					{ 
+						nMinDistance = nTempDistance;
+						strDefectCellID.Format("%s%s", pData->GetGlassData()->m_strGlassID, pCell->m_strCellName);
+					}
+				}
+			}
+		}
+		// PAD영역 외 결함처리
+		else
+		{
+			if (pDefect->m_nCellIdx >= 0) { strDefectCellID.Format("%s%s", pData->GetGlassData()->m_strGlassID, pData->GetCellData(pDefect->m_nCellIdx)->m_strCellName); }
+		}
+	/* < KMH 20220728 : # MOD End > */
 		/* < KJG 20220225 - #4000 ADD End >*/
 		if (pData->GetGlassData()->m_nScanCoordinateY == 1) //분판설비의 경우 XY반전
 		{
@@ -146,12 +185,18 @@
 			{
 				fprintf(pf, ",%d", pDefect->m_sZoneValueSrcAvg[iz]);
 			}
-			fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d",
-				pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
+		/* < KMH 20220816 : #4271 MOD Start > */
+			//fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d",
+			//	pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
+			//fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness);
 
-			fprintf(pf, ", %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness);
+			//fprintf(pf, "\n");
+			fprintf(pf, ",%d, %d, %d, %d, %d, %d, %d, %d",
+				pDefect->m_sDefectPeak, pDefect->m_nPixelSize, pDefect->m_DefectType, (int)pDefect->m_nUMSize, pDefect->m_nDefectRScale, pDefect->m_nDensity, pDefect->m_nScratchRatio, pDefect->m_bMergeState);
+			fprintf(pf, ", %d, %d, %d, %d, %d, %d, %d, %d", pDefect->m_nAngle, pDefect->m_nMajor, pDefect->m_nMinor, pDefect->m_nCompact, pDefect->m_nThickness, pDefect->m_nCellGate, pDefect->m_nCellData, pDefect->m_nHliLevelIdx);
 
 			fprintf(pf, "\n");
+		/* < KMH 20220816 : #4271 MOD End > */
 		}
 	}
 	AKLOG("MakeAnaFile Complete %s", strFilePathName);
diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h
index 9228f32..59752dc 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawBase.h
@@ -34,7 +34,7 @@
 enum ReKind { Re_Other, Re_TFE_CIRCLE, Re_PI_CONVEX, Re_PI_CONCAVE, Re_PI_1, Re_PI_2, Re_PI_3 };
 
 //choigudal jude fix 2012.03.07
-enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown };/* <KYH 211129 : #3796 ADD Start> */
+enum Judgement { Judge_OK = 0, Judge_RP, Judge_NG, Judge_TR, Judge_PR, Judge_ND, Judge_PT, Judge_Review, Judge_RC, Judge_Size, Judge_VI, Judge_Rework, Judge_LN/*KMH 220318 : #3954 ADD */, Judge_Unknown, Judge_SR};/* <KYH 211129 : #3796 ADD Start> */ /* < KJG 20221107 - #4360 MOD > SR 판정 추가*/ 
 enum MAP16_DefectClass { CLASS_C1 = 1, CLASS_C2, CLASS_C3, CLASS_C4, CLASS_C5, CLASS_C6, CLASS_C7, CLASS_C8, CLASS_C9, CLASS_C10, CLASS_C11, CLASS_C12, CLASS_C13, CLASS_C14, CLASS_C15, CLASS_C16 };
 enum MAP16_SizeType { SIZE_SS = 0, SIZE_SM, SIZE_SL, SIZE_SOH, SIZE_IDX_MAX };
 enum MAP16_PeakType { PEEK_PS = 0, PEEK_PL, PEEK_PH, PEEK_POH, PEAK_IDX_MAX };
diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
index ef25ec9..64660aa 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/GlassRawCPJT.cpp
@@ -58,6 +58,30 @@
 		Sleep(10);
 	}
 }
+/* < KJG 20221110 - #4373 ADD Start >*/
+auto CellIDSortFunc = [](const _grmCellData* lhs, const _grmCellData* rhs) {
+	// '0A' = 0, '0B' = 1, ..., '0Z' = 25, '00' = 26, ..., '09' = 35, '1A' = 36, ...
+	const int nAlphaSet = 'Z' - 'A' + 1;
+	const int nNumSet = '9' - '0' + 1;
+	const int nAlphaNumSet = nAlphaSet + nNumSet;
+
+	CString str = lhs->m_strCellName;
+	char lhs_1st = str.Mid(str.GetLength() - 2, 1).GetAt(0);
+	char lhs_2st = str.Mid(str.GetLength() - 1, 1).GetAt(0);
+
+	str = rhs->m_strCellName;
+	char rhs_1st = str.Mid(str.GetLength() - 2, 1).GetAt(0);
+	char rhs_2st = str.Mid(str.GetLength() - 1, 1).GetAt(0);
+
+	auto GetCellValueFrom2stCellID = [&](char c) -> int {
+		if (c >= 'A' && c < 'Z') // 'A' �뒗 0遺��꽣
+			return c - 'A';
+		else if (c >= '0' && c <= '9') // '0' �� 26 遺��꽣
+			return (c - '0') + nAlphaSet;
+	};
+	return (lhs_1st - '0') * nAlphaNumSet + GetCellValueFrom2stCellID(lhs_2st) < (rhs_1st - '0') * nAlphaNumSet + GetCellValueFrom2stCellID(rhs_2st);
+};
+/* < KJG 20221110 - #4373 ADD End >*/
 
 CGlassRawCPJT::CGlassRawCPJT(void)
 {
@@ -545,20 +569,32 @@
 	
 	//////////////////////////////////////////////////////////////////////////
 	//CELL & DEFECT DATA
+	/* < KJG 20221110 - #4373 ADD Start >*/ 
+	vector<_grmCellData*> vtSortCellData;
+	for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++)
+		vtSortCellData.push_back(pData->GetCellData(iCell));
+
+	sort(vtSortCellData.begin(), vtSortCellData.end(), CellIDSortFunc);
+	/* < KJG 20221110 - #4373 ADD End >*/
 	{
-		
 		//make
 		{
 			for (int iCell = 0; iCell < pData->GetGlassData()->m_nCellNum; iCell++)
 			{
-				_grmCellData* pCell = pData->GetCellData(iCell);
+				/* < KJG 20221110 - #4373 MOD Start >*/ 
+				//_grmCellData* pCell = pData->GetCellData(iCell);
+				_grmCellData* pCell = vtSortCellData[iCell];
+				/* < KJG 20221110 - #4373 MOD End >*/
 				makeDataCell(strLine, pData, pCell);
 				fprintf(pf, "%s\n", strLine);
 
 				for (int iDefect = 0; iDefect < pData->GetGlassData()->m_nDefectNum; iDefect++)
 				{
 					_grmDefectData* pDefect = pData->GetDefectData(iDefect);
-					if (pDefect->m_nCellIdx != iCell) continue;
+					/* < KJG 20221110 - #4373 MOD Start >*/ 
+					//if (pDefect->m_nCellIdx != iCell) continue;
+					if (pDefect->m_nCellIdx != pCell->m_nCellID) continue;
+					/* < KJG 20221110 - #4373 MOD End >*/
 					//210203 CJH - CutOff ���긽 寃곌낵�뙆�씪 �옉�꽦 �젣�쇅
 					if (pDefect->m_bDefectCutoff == TRUE) continue;
 
@@ -2047,12 +2083,13 @@
 			sprintf(pServerFile, "%s", strFileName.GetBuffer(0)); 
 			sprintf(pLocalFile, "%s", strFileName.GetBuffer(0)); 
 
+			CString strTime;
 			CString strServerSubRawFilePath= NULL;
 			CString strServerSubRawFileName = NULL;
 			{
 				strServerSubRawFilePath += NETWORK_AOIRAWFILE_SUB_PATH;
 
-				CString strTime;
+				
 				CTime CurrTime = m_tmFileCreateTime;
 				strTime.Format(_T("%04d%02d%02d_%02d%02d%02d"),
 					CurrTime.GetYear(), CurrTime.GetMonth(), CurrTime.GetDay(), CurrTime.GetHour(), CurrTime.GetMinute(), CurrTime.GetSecond());
@@ -2088,6 +2125,16 @@
 				fprintf(pf, "SUMPATH= \n");
 				fclose(pf);
 			} 
+			/* < KJG 20230220 - #4403 ADD Start >*/
+			// BLUE �꽕鍮� D_COLL 誘몃낫怨� �썝�씤 遺꾩꽍�쓣 �쐞�븳 Result_info.ini �뙆�씪 諛깆뾽 �깮�꽦
+			CString strPathBackUpDir, strPathBackUpFile;
+			strPathBackUpDir.Format(_T("%s%s"), LOCAL_RAWPATH_INFO_INI_PATH, _T("ResultInfoBackUpFile"));
+			strPathBackUpFile.Format(_T("%s_%s.ini"), strGlassID, strTime);
+
+			CreateDirectory(strPathBackUpDir, NULL);
+			strPathBackUpFile.Format("%s\\%s", strPathBackUpDir, strPathBackUpFile);
+			CopyFile(strRawFilePathName, strPathBackUpFile, FALSE);
+			/* < KJG 20230220 - #4403 ADD End >*/
 		}
 		break;
 	case FTPCMD_STACK:
@@ -2228,6 +2275,8 @@
 		/* < KMH 20220311 : #3954 ADD End > */
 			case Judge_Unknown:		sStr.Format("OK");//sStr.Format("Unknown");	//Unknown�룄 �씪�떒 OK
 				break;
+			case Judge_SR:			sStr.Format("SR"); /* < KJG 20221107 - #4360 ADD >*/ 
+				break;
 			default:				sStr.Format("OK");//sStr.Format("Ets");		
 				break;
 			}
diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
index 290b0fd..40a0209 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/RawResultReader.cpp
@@ -441,8 +441,12 @@
 				pThis->m_nProcessState = RPS_ResultReadFail;
 			}
 		}
-		if (nReadFailCount)
-			Sleep(500);
+		/* < KMH 20220825 : #4278 MOD Start > */
+		// CPU 사용증가 해결
+		//if (nReadFailCount)
+		//	Sleep(500);
+		Sleep(500);
+		/* < KMH 20220825 : #4278 MOD End > */
 	}
 
 	pThis->m_nThreadStackFileReadFlag = 0;
diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp
index 662f92f..2d4bb59 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/StackResultCPJT.cpp
@@ -309,7 +309,10 @@
 
 			
 		}
-		if(nReadFailCount)
+		/* < KMH 20220825 : #4278 DEL Start > */
+		// 불필요
+		//if(nReadFailCount)
+		/* < KMH 20220825 : #4278 DEL End > */
 
 
 		Sleep(500);
diff --git a/DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp b/DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp
index 55a69c2..9a75566 100644
--- a/DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp
+++ b/DitGlassRawMessenger/DitGlassRawMessenger/akLoggerExt.cpp
@@ -25,7 +25,7 @@
 	SYSTEMTIME st;
 	GetLocalTime(&st);
 	char strFileName[256];
-	sprintf(strFileName, "%s\\%02d%02d%02d","D:\\DIT_LogData", st.wYear, st.wMonth, st.wDay);
+	sprintf(strFileName, "%s\\%02d%02d%02d", "D:\\DIT_LogData", st.wYear, st.wMonth, st.wDay);
 	CreateDirectory(strFileName, NULL);
 	/*< KJG 20230706 - #4539 ADD End >*/
 
@@ -35,7 +35,6 @@
 
 void CakLoggerExt::LogFileOpen()
 {
-
 	char strFileName[256];
 	
 	SYSTEMTIME st;
diff --git a/DitGlassRawMessenger/Extern/DitGlassRawStruct.h b/DitGlassRawMessenger/Extern/DitGlassRawStruct.h
index d616fe4..a1c4a04 100644
--- a/DitGlassRawMessenger/Extern/DitGlassRawStruct.h
+++ b/DitGlassRawMessenger/Extern/DitGlassRawStruct.h
@@ -129,6 +129,7 @@
 	int			m_nDefectNumJudgeRV;
 	int			m_nDefectNumJudgeTR;
 	int			m_nDefectNumJudgePR;
+	int			m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/ 
 	/*< LHS 20211029 - #3783 MOD Start >*/
 	int			m_nDefectNumJudgeLine;
 	/*< LHS 20211029 - #3783 MOD End >*/
@@ -338,6 +339,7 @@
 	int			m_nDefectNumJudgeRV;
 	int			m_nDefectNumJudgeTR;
 	int			m_nDefectNumJudgePR;
+	int			m_nDefectNumJudgePT; /* < KJG 20231124 - #4627 ADD >*/
 	/*< LHS 20211029 - #3783 MOD Start >*/
 	int			m_nDefectNumJudgeLine;
 	/*< LHS 20211029 - #3783 MOD End >*/
diff --git a/DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h b/DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h
deleted file mode 100644
index d7fc000..0000000
--- a/DitGlassRawMessenger/Extern/DitGlassRawStruct_0629_Back.h
+++ /dev/null
@@ -1,787 +0,0 @@
-#pragma once
-
-#define SHAREDMEMNAME_BASICINFO _T("DIT.GLASSRAWSYSTEM.SHAREDMEM.BASICINFO")
-#define SHAREDMEMNAME_GLASSDATA	_T("DIT.GLASRAWSYSTEM.SHAREDMEM.GLASSDATA")
-#define MUTEX_RAWMESSENGER		_T("MUTEX_RAWMESSENGER_IPC")
-
-#define COMMAND_MAXCOUNT 8
-
-#define RAWMESSENGER_MAXCAMNUM 30
-#define RAWMESSENGER_MAXSCANNUM 20
-#define RAWMESSENGER_MAXHLINUM 8
-#define RAW_CODE_MAX 10
-
-#define MAX_ZONE_NUM 16
-
-namespace ditRaw
-{
-	enum ReviewPlanType
-	{
-		RPT_Review = 0,
-		RPT_User,
-		RTP_WSI,
-		RTP_PlanMeasure,
-		RTP_Reflow,
-		RTP_WsiReflow,
-		RTP_UserWsi,
-		RPT_AOICustom = 1000,
-	};
-};
-enum emAOIProcStep
-{
-	APS_None = 0,
-
-	//AOI
-	APS_GlassLoading, 
-	APS_InspectEnd,
-	//Review
-	APS_CustomReviewRead,
-	APS_ReviewStart,
-	APS_ReviewEnd,
-
-	RPS_StepNum
-};
-
-struct _grmGlassData
-{
-	void clear()
-	{
-		memset(this, 0, sizeof(_grmGlassData));
-	}
-
-	//Glass 정보
-	char m_strFileName[64];
-	char m_strPath[256];
-
-	int m_nCellNum;
-	int m_nDefectNum;
-
-	int m_nOriginDirection;				//{ GD_LeftTop = 0, GD_RightTop = 1, GD_LeftBottom = 10, GD_RightBottom = 11 };
-	int m_nConerCutDirection;
-	int	m_nScanCoordinateY;				//여기가 0이면 일반, 1이면 Scan방향이 y축(즉 scan방향이 단축, offline 설비 같은)
-
-	int m_nGlassSizeWidth;
-	int m_nGlassSizeHeight;
-    /* <KYH 211129 : #3796 ADD Start> */
-	int			m_nDefectNumJudgeND;
-	/* <KYH 211129 : #3796 ADD End> */
-	//DUMY DATA
-	int			Dumy_int[9];
-
-	//설비정보
-	char m_strLine[32];
-	char m_strEquipType[32];			
-	char m_strEquipID[32];				
-	char m_strStepID[32];			
-	char m_strOperID[32];				
-
-	CTime	m_tmGlassLoading;			//3. START_TIME
-	CTime	m_tmInspectionStart;			//3. START_TIME
-	CTime	m_tmInspectionEND;			//4. END_TIME
-	CTime	m_tmReviewLoading;
-	CTime	m_tmReviewEnd;
-
-	//기본 물류정보
-	char m_strGlassID[32];				//Glass ID
-	char m_strPPID[32];					
-	char m_strEPPID[32];				
-	char m_strLotID[32];				//LOT_ID
-	char m_strSLotID[32];				//SLOT_ID
-	char m_strRecipeName[32];			//RECIPE_NAME								
-	char m_strGlassJudge[32];			//GLASS_JUDGE
-	char m_strGlassCode[32];			//Grade or Code
-	char m_strProductID[16];			//4. PRODUCT_ID
-
-	//VCR
-	int m_nVcrResultCode;
-	char m_strVCRResult[32];
-	char m_strVCRGlassID[32];
-
-
-	//결함 갯수 관리 변수
-	int			m_nDefectNumSizeSmall;
-	int			m_nDefectNumSizeMid;
-	int			m_nDefectNumSizeLarge;
-	int			m_nDefectNumSizeHuge;
-	int			m_nDefectNumSizeUltra;
-
-	int			m_nDefectNumLocActive;
-	int			m_nDefectNumLocPad;
-	int			m_nDefectNumLocCrack;
-	int			m_nDefectNumLocBM;
-
-	int			m_nDefectNumTypeTB;
-	int			m_nDefectNumTypeTW;
-	int			m_nDefectNumTypeRB;
-	int			m_nDefectNumTypeRW;
-	int			m_nDefectNumTypeMD;
-	int			m_nDefectNumTypeCD;
-	int			m_nDefectNumTypeMC;
-	/* <LJC 20220422 : #3957 ADD Start> */
-	int			m_nDefectCode[RAW_CODE_MAX];
-	/* <LJC 20220422 : #3957 ADD End> */
-
-	int			m_nDefectNumJudgeOKWhite;
-	int			m_nDefectNumJudgeOKBlack;
-	int			m_nDefectNumJudgeNG;
-	int			m_nDefectNumJudgeRW;
-	int			m_nDefectNumJudgeRP;
-	int			m_nDefectNumJudgeRV;
-	int			m_nDefectNumJudgeTR;
-	int			m_nDefectNumJudgePR;
-	/*< LHS 20211029 - #3783 MOD Start >*/
-	int			m_nDefectNumJudgeLine;
-	/*< LHS 20211029 - #3783 MOD End >*/
-	int			m_nDefectNumStackTD;
-	int			m_nDefectNumStackSD;
-	int			m_nDefectNumStackPD;
-	int			m_nDefectNumStackSP;
-
-
-	//카메라/스캔 정보 [김태현 2018/12/5]
-	short		m_nCameraNum;
-	short		m_nScanNum;
-	unsigned char m_nGrayLevelAvg[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];		
-	unsigned char m_nGrayLevelMin[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
-	unsigned char m_nGrayLevelMax[RAWMESSENGER_MAXCAMNUM*RAWMESSENGER_MAXSCANNUM*RAWMESSENGER_MAXHLINUM];
-
-	//얼라인 정보 um[김태현 2018/12/10]
-	double	m_nAlignCcdTheta;
-	double	m_nAlignCcdShitftX;
-	double	m_nAlignCcdShitftY;
-	double	m_nAlignPreTheta;
-	double	m_nAlignPreShitftX;
-	double	m_nAlignPreShitftY;
-	double	m_nAlignBasicTheta;
-	double	m_nAlignBasicShitftX;
-	double	m_nAlignBasicShitftY;
-	char	m_strAlignFirst[64];
-	char	m_strAlignSecond[64];
-// 	char	m_strAlignPath[256];
-
-	//CSOT용 물류 정보 [김태현 2018/12/5]
-	char m_strCassetteSequenceNo[16];
-	char m_strOwnerCode[16];			//2. OWNER_CODE
-	char m_strOwnerType[16];			//3. OWNER_TYPE
-
-	char m_strProcessID[21];			//5. PROCESS_ID
-	char m_strProductGroup[16];			//6. PRODUCT_GROUP
-	char m_strCSTID[16];				//8. CST_ID
-	char m_strPreProcessID[16];			//10.PRE_PROCESS_ID
-	char m_strPreEQPID[16];				//11.PRE_EQP_ID
-	char m_strPreChamerID[16];			//12.PRE_CHAMBER_ID
-	char m_strPreRecipeID[32];			//13.PRE_RECIPE_ID
-	char m_strGroupID[16];				//14.GROUP_ID
-	char m_cAutoSampleFlag;				//15.AUTOSAMPLEFLAG
-
-	// CPRJ용 물류 정보
-	char m_strProdType[3];
-	char m_strBatchID[13];
-	char m_strPairHPanelID[13];
-	char m_strGlassThickNess[2];
-	char m_strCompCount[2];
-	char m_strGlassState[2];
-	char m_strInsFlag[2];
-	char m_strPanelPosition[2];
-	char m_strFlowHistory[2];
-	char m_strCount1[2];
-	char m_strCount2[2];
-	char m_StrMergeList[10][12];
-	//Mura Data 0412 nwh
-	char m_strMaxAvgGray[12];
-	char m_strMaxPortion[12];
-
-
-     //1226NWH
-	char m_strReadingFlag[2]; 
-	BYTE m_nUniqueID[4];
-	int m_nSlot_No; 
-
-	BYTE m_nGlassDataBitSignal[4];
-	bool m_bJob_end;  
-
-	//201217 CJH - 찍은 Defect Review 개수
-	int m_nReviewNum;
-	//201221 CJH - 파싱한 Stack 결과
-	int m_nStackNum;
-	BOOL m_bStackRead;
-
-	/*< KJG 20211024 - #3487 ADD Start >*/
-	int m_nRawMergeNum;
-	BOOL m_bRawMergeRead;
-	/*< KJG 20211024 - #3487 ADD End >*/
-	//210203 CJH - CutOff 대상 결함 수
-	int m_nCutOffDefectNum;
-	//210323 CJH - Server/Frame Shrink 정보 추가
-	char m_strShrinked[6];
-	//210326 CJH - RAW 입력 Defect 수량 상한 사용여부
-	BOOL m_bRawCutoff;
-	//210907 KJG - EdgeCrack 검사 사용 유무
-	BOOL m_bEdgeCrackUse;
-	BOOL m_bRawMergeUse;
-	/* < KJG 20220225 - #3850 ADD Start >*/ 
-	char m_strRawMergeStepID[32];
-	/* < KJG 20220225 - #3850 ADD End >*/
-};
-struct _grmBlockData
-{
-	void clear()
-	{
-		memset(this, 0, sizeof(_grmBlockData));
-	}
-	char m_strBlockID[16];				//1. BLOCK_ID
-	char m_cBlockJudgeAOI;				//2. BLOCK_JUDGE_AOI
-	char m_cBlockJudgeATS;				//4. BLOCK_JUDGE_ATS
-	char m_cBlockJudgeTEG;				//5. BLOCK_JUDGE_TEG
-	int m_nGlassIdDCR;					//22. GLASS_ID_DCR
-};
-struct _grmCellData
-{
-	void clear()
-	{
-		memset(this, 0, sizeof(_grmCellData));
-	}
-	int getTotalDefectNum(){return m_nDefectNumTypeTB+m_nDefectNumTypeTW+m_nDefectNumTypeRB+m_nDefectNumTypeRW; };
-	int						m_nCellID;							//1. PANEL_ID
-	short					m_nModelIdx;				// 몇 번째 모델인가?
-
-	char					m_strCellName[32];
-	int						m_rectCellLeft;
-	int						m_rectCellTop;
-	int						m_rectCellRight;
-	int						m_rectCellBottom;
-
-	int/*Judgement*/		m_nJudgement;
-	int						m_nJudgeFlag;
-	int						m_nJudgeGlade;
-
-
-	//결함 갯수 관리 변수
-	int			m_nDefectNumSizeSmall;
-	int			m_nDefectNumSizeMid;
-	int			m_nDefectNumSizeLarge;
-	int			m_nDefectNumSizeHuge;
-	int			m_nDefectNumSizeUltra;
-
-	int			m_nDefectNumLocActive;
-	int			m_nDefectNumLocPad;
-	int			m_nDefectNumLocCrack;
-	int			m_nDefectNumLocBM;
-
-	int			m_nDefectNumTypeTB;
-	int			m_nDefectNumTypeTW;
-	int			m_nDefectNumTypeRB;
-	int			m_nDefectNumTypeRW;
-	int			m_nDefectNumTypeMD;
-	int			m_nDefectNumTypeCD;
-	int			m_nDefectNumTypeMC;
-	/* <KYH 211129 : #3796 ADD Start> */
-	int			m_nDefectNumJudgeND;
-	/* <KYH 211129 : #3796 ADD End> */
-	/* <LJC 20220422 : #3957 ADD Start> */
-	int			m_nDefectCode[RAW_CODE_MAX];
-	/* <LJC 20220422 : #3957 ADD End> */
-	//DUMY DATA
-	int			Dumy_int[9];
-
-	//Mura Data nwh 0404 
-	char		m_strProImage[32];
-	char		m_strAvgGray_0[12];
-	char		m_strPortion_0[12];
-	//kyh Mura Data 추가 0622
-	char		m_strCorner_Gray_0[12];
-	char		m_strAvgAmp_0[12];
-	char		m_strFFTVar_0[12];
-	char		m_strFFTVah_0[12];
-	char		m_strFFTVaq_0[12];
-	char		m_strFFTPK_0[12];
-
-	char		m_strAvgGray_1[12];
-	char		m_strPortion_1[12];
-	//kyh Mura Data 추가 0622
-	char		m_strCorner_Gray_1[12];
-	char		m_strAvgAmp_1[12];
-	char		m_strFFTVar_1[12];
-	char		m_strFFTVah_1[12];
-	char		m_strFFTVaq_1[12];
-	char		m_strFFTPK_1[12];
-
-	char		m_strAvgGray_2[12];
-	char		m_strPortion_2[12];
-	//kyh Mura Data 추가 0622
-	char		m_strCorner_Gray_2[12];
-	char		m_strAvgAmp_2[12];
-	char		m_strFFTVar_2[12];
-	char		m_strFFTVah_2[12];
-	char		m_strFFTVaq_2[12];
-	char		m_strFFTPK_2[12];
-
-	char		m_strAvgGray_3[12];
-	char		m_strPortion_3[12];
-	//kyh Mura Data 추가 0622
-	char		m_strCorner_Gray_3[12];
-	char		m_strAvgAmp_3[12];
-	char		m_strFFTVar_3[12];
-	char		m_strFFTVah_3[12];
-	char		m_strFFTVaq_3[12];
-	char		m_strFFTPK_3[12];
-
-	int			m_nDefectNumJudgeOKWhite;
-	int			m_nDefectNumJudgeOKBlack;
-	int			m_nDefectNumJudgeNG;
-	int			m_nDefectNumJudgeRW;
-	int			m_nDefectNumJudgeRP;
-	int			m_nDefectNumJudgeRV;
-	int			m_nDefectNumJudgeTR;
-	int			m_nDefectNumJudgePR;
-	/*< LHS 20211029 - #3783 MOD Start >*/
-	int			m_nDefectNumJudgeLine;
-	/*< LHS 20211029 - #3783 MOD End >*/
-	int			m_nReflowResult[8];			// 0: Reflow X 1: Reflow OK 2: Reflow NG
-
-	// Filtering된 Stack별 수
-	int			m_nDefectTDCount;
-	int			m_nDefectSDCount;
-	int			m_nDefectPDCount;
-	int			m_nDefectSPCount;
-
-	// Gate/Data 총 갯수
-	int			m_nGateNum;
-	int			m_nDataNum;
-
-	// 210129 CJH - Cell Origin 방향
-	int			m_nCellXDir;
-	int			m_nCellYDir;
-};
-
-struct _grmDefectReviewData
-{
-	void clear()
-	{
-		memset(this, 0, sizeof(_grmDefectReviewData));
-	}
-
-	//////////////////////////////////////////////////////////////////////////
-	//여기서 부터 리뷰 영역 [김태현 2019/1/19]
-	ditRaw::ReviewPlanType			m_nPlanType	;	
-	int			m_nResultCode;  //0:None, 1:Success
-	int			m_nShotIndex; //리뷰 찍은 순번 [김태현 2018/12/5]
-	int			m_nModuleIndex;
-	int			m_nMagnificIndex;
-	float		m_fManification;
-	float		m_fManificResoultion;
-	char		m_strRevImageName[256];
-	char		m_strRevImagePath[256];
-
-	//////////////////////////////////////////////////////////////////////////
-	// Measure 영역
-	int			m_nMeasure_Index;
-	int			m_nMeasure_ResultCode; //0:None, 1:Success
-	float		m_fMesure_ResultData[8];	// 0:Type, 1:ShiftX, 2:ShiftY
-
-	//////////////////////////////////////////////////////////////////////////
-	// WSI영역
-	int			m_nWsi_ResultCode; //0:None, 1:Success
-	int			m_nWsi_Type;									// 함몰 / 돌기
-	float		m_fWsi_ResultData[8];			// 0:Type, 1:Height(um), 2:Width
-	char		m_strWsi_2DImageFilename[256];
-	char		m_strWsi_3DImageFilename[256]; 
-	int			m_nWsiReflowPositionIndex;					// WsiReflowPositionIndex
-	int			m_nWsi_pReflowResultData[8];
-	double		m_dWsi_DamDistance;
-
-	double		m_dWsiMmMotorX;								// WSI 모터 좌표 20180223 HJH
-	double		m_dWsiMmMotorY;
-	float		m_fWsiManification;							// WSI 배율
-
-	//////////////////////////////////////////////////////////////////////////
-	// Reflow 영역	
-	int			m_nReflow_Index;
-	int			m_nReflow_ResultCode; //0:None, // 검출한 Line의 개수. 3 미만 : DAM2 Reflow 판정, 4~5 : DAM1 Reflow 판정, 6 : no Reflow 판정 / -1 : image not loaded, -2 : roi setting error, -3 : roi length error, -5 : select wrong side
-	float		m_fReflow_LinePosData[8];	
-	int			m_nReflow_Side;
-	int			m_nReflow_InspectionMode;
-};
-
-struct _grmDefectData
-{
-	void clear()
-	{
-		memset(this, 0, sizeof(_grmDefectData));
-	}
-
-	short			m_nDefectID;
-	short			m_nCameraID;
-	short			m_nScanIdx;
-	//short			m_nDefectIdx;				// 카메라에서의 결함 인덱스
-	int				m_nDefectIdx;				// 카메라에서의 결함 인덱스 201207 CJH - 자릿 수 넘침. int형으로 변경
-
-	int				m_nPixelConv;				// pixel 단위 좌표
-	int				m_nPixelScan;				// pixel 단위 좌표
-
-	short							m_nPixelSize;				// 결함크기		---------------------------------PS
-	short/*SERVER_DefectType*/		m_DefectType;				// 결함 타입	---------------------------------DT
-	short/*SERVER_DefectSubType*/	m_DefectSubType;			// 결함의 판정상태.
-	short/*SERVER_DefectBDType*/	m_DefectBDType;				// 결함 타입 - Bright, Dark, Both
-
-	short			m_sPixelWidth;				// 픽셀단위 결함 너비
-	short			m_sPixelHeight;				// 픽셀단위 결함 높이
-	short			m_nLevelSrcMin;				// 결함 밝기 Min	-----------------------------SN
-	short			m_nLevelSrcMax;				// 결함 밝기 Max	-----------------------------SX
-	short			m_nLevelSrcAvg;				// 결함 밝기 Avg	-----------------------------SA
-	short			m_nLevelRefMin;				// 비교대상 밝기 Min	-------------------------RN
-	short			m_nLevelRefMax;				// 비교대상 밝기 Max	-------------------------RX
-	short			m_nLevelRefAvg;				// 비교대상 밝기 Avg	-------------------------RA
-	short			m_nLevelDiffMin;			// 비교차 Min	---------------------------------DN
-	short			m_nLevelDiffMax;			// 비교차 Max	---------------------------------DX
-	short			m_nLevelDiffAvg;			// 비교차 Avg	---------------------------------DA
-
-	int				m_nDefectRScale;			// 픽셀단위 결함 높이	-------------------------RS
-	short			m_sThreshold;				// 결함을 검출할 때의 Threshold
-	short			m_sThresholdAvg;			// 결함을 검출할 때의 Threshold AVG
-	short			m_sDefectPeak;				// 결함의 Peak.
-	short			m_sDefectLevel;				// (DiffAvg - Th) BOE 8G 요청사항
-
-	int				m_nPixelGlassStart;			// Glass 시작 픽셀
-	short			m_sDefectLoc;
-
-	short			m_sZoneClassPixelCount[16];
-	short			m_sZonePixelCount[16];	// Zone별 결함 Pixel 수
-	short			m_sZoneValueMin[16];	// Zone별 결함 Min
-	short			m_sZoneValueMax[16];	// Zone별 결함 Max
-	short			m_sZoneValueAvg[16];	// Zone별 결함 Avg
-	short			m_sZonePixelPercent[16];	// --------------------------------------Z0~ZF
-
-	//210127 CJH - Zone별 Source Gray 입력
-	short			m_sZoneValueSrcMin[16];	// Zone별 Source Min
-	short			m_sZoneValueSrcMax[16];	// Zone별 Source Max
-	short			m_sZoneValueSrcAvg[16]; // Zone별 Source Avg
-
-	int				m_nUMOriginX;				// um단위 x좌표 (원점기준)
-	int				m_nUMOriginY;				// um단위 y조표 (원점기준)
-	int				m_nUMCenterAlignX;			// um단위 X좌표 (Glass Center 기준, 얼라인보정 후)
-	int				m_nUMCenterAlignY;			// um단위 Y좌표 (Glass Center 기준, 얼라인보정 후)
-	int				m_nUMCenterX;				// um단위 X좌표 (Glass Center 기준, 얼라인보정 전)
-	int				m_nUMCenterY;				// um단위 Y좌표 (Glass Center 기준, 얼라인보정 전)
-	int				m_nUMSizeX;					// um단위 X 크기	-----------------------------UX
-	int				m_nUMSizeY;					// um단위 Y 크기	-----------------------------UY
-	int				m_nUMSize;					// um단위 크기.
-	CRect			m_RectUM;					// 디펙 센터 기준 사각형.
-
-	short/*SERVER_DefectSizeType*/	m_DefectSizeType;			// 결함 크기 종류enum SERVER_DefectSizeType		{ SizeType_Unknown = 0, SizeType_Small, SizeType_Mid, SizeType_Large, SizeType_Huge, SizeType_Ultra };
-	short/*SERVER_DefectPeakType*/	m_DefectPeakType;			// Peak의 종류.
-	short/*Judgement*/				m_DefectJudgement;			// 결함 판정.
-	BOOL					m_bDefectCutoff;			// 컷 오프 디펙(TRUE= Cutoff, FALSE)
-	short/*MAP16_DefectClass*/		m_DefectClass;				// BOE Defect Class 16등분 구분
-	int				m_nPadRegionIdx;			// PAD 영역 인덱스
-
-	int				m_nUMCellX;					// 셀 원점 기준 x 좌표
-	int				m_nUMCellY;					// 셀 원점 기준 y 좌표
-	short			m_nModelIdx;				// 몇 번째 모델인가?
-	short			m_nCellIdx;					// 몇번째 셀인가?
-	short			m_nCellGate;				// 셀별 Gate라인(얼라인 보정 전)
-	short			m_nCellData;				// 셀별 Data라인(얼라인 보정 전)
-	short			m_nCellGateAlign;			// 셀별 Gate라인(얼라인 보정 후)
-	short			m_nCellDataAlign;			// 셀별 Data라인(얼라인 보정 후)
-
-	int				m_nUMShotX;					// 샷 기준 X좌표
-	int				m_nUMShotY;					// 샷 기준 Y좌표
-	short			m_nMaskDefectIdx;			// 한 Glass에서 발견된 마스크결함 묶음의 인덱스.
-	short			m_nShotIdx;					// 노광샷 번호
-	short			m_nMatchShotCount;			// 동일한 마스크 결함의 수.
-	short			m_nMatchMaxSize;			// 동일한 마스크 중 가장 큰 결함의 크기.
-
-	short			m_nRepeatCount;				// 연속결함발견위한 동일좌표 반복수
-	short			m_nMaskRepeatCount;
-	int				m_StackInfo;				// Stack Flag
-	BOOL			m_bRealStack;				// Stack 머지에 의한 TD(TRUE) 인지, 필터링에 의한 TD(FALSE)구분할 수 있다.
-	short			m_nStackStepCount;			// Stack 수
-	short			m_nStackColorIdx;			// Color를 선택하는 인덱스.
-	//CString			m_strStackStep[CFDEFECT_STACKCOUNT];			// Stack Step.
-	char			m_strStackFirst[60];			// Stack Step. //201221 CJH - 최대 사이즈 60bytes
-	char			m_strUnitID[16];				// 유닛아이디
-
-	int				m_ClassificationType;				// enum ClassificationType			{ ClassType_None= 0, ClassType_PI_Over= 1, ClassType_PI_Under= 2, ClassType_TFE_Circle= 3, ClassType_Bubble, ClassType_Scratch, ClassType_Particle}; Classification Type, PI나 TFE등 추가 분류  알고리즘 적용 결과.
-	int				m_nAtomWidth;				// TFE 핵 너비
-	int				m_nAtomHeight;				// TFE 핵 높이
-	short/*ReKind*/			m_DefectKind;				// 결함 종류
-
-	char			m_strDefectCode[32];			// Defect Code
-	BOOL			m_bMergeState;				// Merge Status
-	char			m_strAoiImageName[256];			// Defect Image Name(CCD Image)
-	int				m_nDefectMerge;		// 현재 디펙의 머지 여부
-
-
-	int				m_nPixelSizeOrigin;
-	int				m_nScratchRatio;
-	int				m_nDensity;			// 원형 결함 구분을 위한 밀도 [2017.8.2 bhs]
-
-	char			m_strDefectName[16];
-	char			m_strDefectType[16];
-
-	double			m_dScanResolution;
-	double			m_dConvResolution;
-
-	int				m_nAngle;					// 각도
-	int				m_nMajor;					// 장축 길이(Long)
-	int				m_nMinor;					// 단축 길이(Short)
-	int				m_nCompact;					// Blob 장축을 지름으로 하는 원의 넓이와 Blob 넓이의 비율
-	int				m_nThickness;				// Blob 넓이와 장축의 비율 (Area / Major)
-	
-	short			m_nHliLevelIdx;				// 몇 번째 레벨(채널)인가?
-	int				m_nHliLayers;				// 해당결함에 포함된 레이어 bit처리
-
-	BOOL			m_bShrinked;				//210323 CJH - Frame Shrink 정보 추가
-
-	char			m_strAoiImagePath[255];
-	char			m_strReviewImagePath[255];
-
-	int				m_nAlignRectLeft;
-	int				m_nAlignRectTop;
-	int				m_nAlignRectBottom;
-	int				m_nAlignRectRight;
-	/*< LHS 20211029 - #3783 MOD Start >*/
-	char			m_strLNDefectCode[12];
-	short/*LineDefectType*/ m_LineDefectType;
-	/*< LHS 20211029 - #3783 MOD End >*/
-
-	_grmDefectReviewData m_ReviewDefect;
-};
-
-
-enum emGlassRawCommand
-{
-	grcNone = 0,
-
-	//AOI Sequence
-	grcSequenceGlassLoading = 1,
-	grcSequenceInspectEnd = 2,
-	//Review Sequence
-	grcSequenceReviewStart = 3,
-	grcSequenceReviewEnd = 4,
-
-	grcSequenceCustomReviewDataRead = 10,
-
-	grcWriteRaw = 101,
-	grcReadRaw = 102,
-
-	grcWriteBin = 201,
-	grcReadBin = 202,
-
-	grcReviewWriteBIn = 301,
-
-	grcGlassRawCommand
-};
-
-
-struct _grmDitCommand
-{
-	struct _grmCommand
-	{
-		int nCommand;
-		char strParam[256];
-		short nResult; 
-	};
-	short m_nCommandIdxWrite;
-	short m_nCommandIdxRead;
-	_grmCommand m_nCommandBuffer[COMMAND_MAXCOUNT]; 
-};
-
-struct _grmDitMemInfo
-{
-	//공유 메모리 생성할 공간 결정 [김태현 2018/11/12]
-	size_t m_nGlassRawDataSize;
-	int m_nGlassMaxDataNum;
-	int m_nBlockMaxDataNum;
-	int m_nCellMaxDataNum;
-	int m_nDefectMaxDataNum;
-	int m_nStackMaxDataNum;
-	/*< KJG 20211024 - #3487 ADD Start >*/
-	int m_nRawMergeMaxDataNum;
-	/*< KJG 20211024 - #3487 ADD End >*/
-
-	//Char 기준 자료가 있는 시작 위치 [김태현 2018/11/12]
-	int m_nGlassDataPoint;
-	int m_nBlockDataPoint;
-	int m_nCellDataPoint;
-	int m_nDefectDataPoint;
-	int m_nStackDataPoint;
-	/*< KJG 20211024 - #3487 ADD Start >*/
-	int m_nRawMergeDataPoint;
-	/*< KJG 20211024 - #3487 ADD End >*/
-
-	int m_nSizeOfGlassData;
-	int m_nSizeOfBlockData;
-	int m_nSizeOfCellData;
-	int m_nSizeOfDefectData;
-	int m_nSizeOfStackData;
-	/*< KJG 20211024 - #3487 ADD Start >*/
-	int m_nSizeOfRawMergeData;
-	/*< KJG 20211024 - #3487 ADD End >*/
-};
-struct _grmDitGlassRawInfo : public _grmDitMemInfo, public _grmDitCommand
-{
-	size_t m_nGlassLoadingCount;
-	emAOIProcStep m_ClientProcStep; //AOI, Review가 보낸 명령
-	emAOIProcStep m_ServerProcStep; //GlassRaw Messenger(Server)가 처리 완료 한 명령
-};
-
-class CgrmGlassRawData
-{
-public:
-	CgrmGlassRawData()
-	{
-		m_pGlassRawData = NULL;
-		m_bRefAlloc = FALSE;
-	};
-
-	~CgrmGlassRawData()
-	{
-		clear();
-	};
-
-	void clear()
-	{
-		if(m_bRefAlloc) { m_pGlassRawData = NULL; return;}
-
-		if(m_pGlassRawData)
-		{
-			delete [] m_pGlassRawData;
-			m_pGlassRawData = NULL;
-		}
-	};
-	BOOL ImportGlassRaw(_grmDitMemInfo* pInfo, char* pData, bool bRefAlloc = false)
-	{
-		if(pInfo == NULL) return FALSE;
-
-		if(m_pGlassRawData && pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) clear(); 
-
-		if(m_pGlassRawData == NULL) m_pGlassRawData = new char[ pInfo->m_nGlassRawDataSize ];
-
-		m_MemInfo = *pInfo;
-
-		m_nGlassRawDataSize = pInfo->m_nGlassRawDataSize;
-
-		m_nGlassMaxDataNum  = pInfo->m_nGlassMaxDataNum ;
-		m_nBlockMaxDataNum	= pInfo->m_nBlockMaxDataNum	;
-		m_nCellMaxDataNum   = pInfo->m_nCellMaxDataNum  ;
-		m_nDefectMaxDataNum = pInfo->m_nDefectMaxDataNum;
-		m_nStackMaxDataNum	= pInfo->m_nStackMaxDataNum	;
-
-		m_nGlassDataPoint   = pInfo->m_nGlassDataPoint  ;
-		m_nBlockDataPoint	= pInfo->m_nBlockDataPoint	;
-		m_nCellDataPoint    = pInfo->m_nCellDataPoint   ;
-		m_nDefectDataPoint  = pInfo->m_nDefectDataPoint ;
-		m_nStackDataPoint   = pInfo->m_nStackDataPoint	;
-
-		m_nSizeOfGlassData  = pInfo->m_nSizeOfGlassData ;
-		m_nSizeOfBlockData	= pInfo->m_nBlockDataPoint	;
-		m_nSizeOfCellData   = pInfo->m_nSizeOfCellData  ;
-		m_nSizeOfDefectData = pInfo->m_nSizeOfDefectData;
-		m_nSizeOfStackData  = pInfo->m_nSizeOfStackData	;
-
-		if(bRefAlloc)
-		{
-			m_pGlassRawData = pData;
-		}
-		else
-		{
-			if(pData)
-			{
-				memcpy(m_pGlassRawData, pData, sizeof(char)*pInfo->m_nGlassRawDataSize);
-			}
-			else
-			{
-				memset(m_pGlassRawData, 0, sizeof(char)*pInfo->m_nGlassRawDataSize );
-			}
-		}
-
-
-		m_pGlassData  = (_grmGlassData*)&m_pGlassRawData[pInfo->m_nGlassDataPoint];
-		m_pBlockData		= (_grmBlockData*)&m_pGlassRawData[pInfo->m_nBlockDataPoint];
-		m_pCellData   = (_grmCellData*)&m_pGlassRawData[pInfo->m_nCellDataPoint];
-		m_pDefectData = (_grmDefectData*)&m_pGlassRawData[pInfo->m_nDefectDataPoint];
-		m_pStackData = (_grmDefectData*)&m_pGlassRawData[pInfo->m_nStackDataPoint];
-
-		m_bRefAlloc = bRefAlloc;
-		return TRUE;
-	};
-	BOOL ExportGlassRaw(_grmDitMemInfo* pInfo, char* pData)
-	{
-		if(pInfo == NULL || pData == NULL) return FALSE;
-
-		if(1) //new type //메모리 총 공간 크기에 상관없이 
-		{
-			//if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE;
-
-			if(pInfo->m_nSizeOfGlassData  !=  m_MemInfo.m_nSizeOfGlassData)  return FALSE;
-			if(pInfo->m_nSizeOfBlockData  !=  m_MemInfo.m_nSizeOfBlockData)  return FALSE;
-			if(pInfo->m_nSizeOfCellData   !=  m_MemInfo.m_nSizeOfCellData)   return FALSE;
-			if(pInfo->m_nSizeOfDefectData !=  m_MemInfo.m_nSizeOfDefectData) return FALSE;
-			if(pInfo->m_nSizeOfStackData  !=  m_MemInfo.m_nSizeOfStackData)	 return FALSE;
-
-			if(pInfo->m_nCellMaxDataNum < m_pGlassData->m_nCellNum) return FALSE;
-			if(pInfo->m_nDefectMaxDataNum < m_pGlassData->m_nDefectNum) return FALSE;
-			if(pInfo->m_nStackMaxDataNum < m_pGlassData->m_nDefectNum) return FALSE;
-
-			memcpy(&pData[pInfo->m_nGlassDataPoint], m_pGlassData,	 pInfo->m_nSizeOfGlassData* 1);
-			memcpy(&pData[pInfo->m_nBlockDataPoint], m_pBlockData,	 pInfo->m_nSizeOfBlockData* 1);
-			memcpy(&pData[pInfo->m_nCellDataPoint], m_pCellData,	 pInfo->m_nSizeOfCellData*m_pGlassData->m_nCellNum);
-			memcpy(&pData[pInfo->m_nDefectDataPoint], m_pDefectData, pInfo->m_nSizeOfDefectData*m_pGlassData->m_nDefectNum);
-			memcpy(&pData[pInfo->m_nStackDataPoint], m_pStackData, pInfo->m_nSizeOfStackData*m_pGlassData->m_nDefectNum);
-		}
-		else //if() //type old 
-		{
-			if(pInfo->m_nGlassRawDataSize != m_MemInfo.m_nGlassRawDataSize) return FALSE;
-
-			if(pInfo->m_nSizeOfGlassData  !=  m_MemInfo.m_nSizeOfGlassData)  return FALSE;
-			if(pInfo->m_nSizeOfBlockData  !=  m_MemInfo.m_nSizeOfBlockData)  return FALSE;
-			if(pInfo->m_nSizeOfCellData   !=  m_MemInfo.m_nSizeOfCellData)   return FALSE;
-			if(pInfo->m_nSizeOfDefectData !=  m_MemInfo.m_nSizeOfDefectData) return FALSE;
-
-			memcpy(pData, m_pGlassRawData, sizeof(char)*pInfo->m_nGlassRawDataSize);
-		}
-
-
-		return TRUE;
-	};
-
-	_grmGlassData*	GetGlassData(){return m_pGlassData;};
-	_grmBlockData*	GetBlockData(int nIndex){return &m_pBlockData[nIndex];};
-	_grmCellData*	GetCellData(int nIndex){return &m_pCellData[nIndex];};
-	_grmDefectData*	GetDefectData(int nIndex){return &m_pDefectData[nIndex];};
-	_grmDitMemInfo* GetMemInfo(){return &m_MemInfo;};
-	_grmDefectData* GetStackData(int nIndex) { return &m_pStackData[nIndex]; };
-protected:
-	_grmDitMemInfo  m_MemInfo;
-	char* m_pGlassRawData;
-
-	_grmGlassData*  m_pGlassData;
-	_grmBlockData*	m_pBlockData;
-	_grmCellData*   m_pCellData;
-	_grmDefectData* m_pDefectData;
-	_grmDefectData*	m_pStackData;
-
-	size_t m_nGlassRawDataSize;
-
-	int m_nGlassMaxDataNum;
-	int m_nBlockMaxDataNum;
-	int m_nCellMaxDataNum;
-	int m_nDefectMaxDataNum;
-	int m_nStackMaxDataNum;
-
-	int m_nGlassDataPoint;
-	int m_nBlockDataPoint;
-	int m_nCellDataPoint;
-	int m_nDefectDataPoint;
-	int m_nStackDataPoint;
-
-	int m_nSizeOfGlassData;
-	int m_nSizeOfBlockData;
-	int m_nSizeOfCellData;
-	int m_nSizeOfDefectData;
-	int m_nSizeOfStackData;
-
-private:
-	bool m_bRefAlloc;
-};
\ No newline at end of file
diff --git a/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe b/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe
index 1f3e70d..5faa504 100644
--- a/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe
+++ b/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.exe
Binary files differ
diff --git a/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb b/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb
index f1d32c4..e8ff70e 100644
--- a/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb
+++ b/DitGlassRawMessenger/bin/DitGlassRawMessenger_x64.pdb
Binary files differ
diff --git a/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe b/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe
index 33f022c..9bdfbe1 100644
--- a/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe
+++ b/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.exe
Binary files differ
diff --git a/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb b/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb
index a5e2718..0af596e 100644
--- a/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb
+++ b/DitGlassRawMessenger/bin/DitGlassRawMessengerd_x64.pdb
Binary files differ
diff --git a/ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp b/ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp
index 8ad2fe6..02c4a70 100644
--- a/ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp
+++ b/ReviewSystem/ReviewRecipeEditor/CDlgJudgement.cpp
@@ -101,9 +101,11 @@
 			// 		case JudgeType_T8_BR:
 			// 			strType.Format(_T("BR"));
 			// 			break;
-			// 		case JudgeType_T8_PT:
-			// 			strType.Format(_T("PT"));
-			// 			break;
+			/* < KEJ 20231123 - #4669 ADD Start > */
+		case JudgeType_T8_PT:
+			strType.Format(_T("PT"));
+			break;
+			/* < KEJ 20231123 - #4669 ADD End > */
 		}
 
 		if (strType.IsEmpty() == FALSE)
diff --git a/ReviewSystem/ReviewSystem/DitGlassRawStruct.h b/ReviewSystem/ReviewSystem/DitGlassRawStruct.h
index d616fe4..41f203d 100644
--- a/ReviewSystem/ReviewSystem/DitGlassRawStruct.h
+++ b/ReviewSystem/ReviewSystem/DitGlassRawStruct.h
@@ -129,6 +129,7 @@
 	int			m_nDefectNumJudgeRV;
 	int			m_nDefectNumJudgeTR;
 	int			m_nDefectNumJudgePR;
+	int			m_nDefectNumJudgePT;		//< KEJ 20231123 - #4669 ADD >
 	/*< LHS 20211029 - #3783 MOD Start >*/
 	int			m_nDefectNumJudgeLine;
 	/*< LHS 20211029 - #3783 MOD End >*/
@@ -338,6 +339,7 @@
 	int			m_nDefectNumJudgeRV;
 	int			m_nDefectNumJudgeTR;
 	int			m_nDefectNumJudgePR;
+	int			m_nDefectNumJudgePT;		//< KEJ 20231123 - #4669 ADD >
 	/*< LHS 20211029 - #3783 MOD Start >*/
 	int			m_nDefectNumJudgeLine;
 	/*< LHS 20211029 - #3783 MOD End >*/
diff --git a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
index bc5e21a..9ffdfdb 100644
--- a/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
+++ b/ReviewSystem/ReviewSystem/SequenceProcessor_CPJT.cpp
@@ -67,7 +67,8 @@
 enum CPJT_GANTRY_TYPE { GantryType_Left, GantryType_Right };
 
 enum Judgement_CPJT {
-	Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_Unknown_CPJT
+//	Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_Unknown_CPJT
+	Judge_OK_CPJT = 0, Judge_RP_CPJT, Judge_NG_CPJT, Judge_TR_CPJT, Judge_PR_CPJT, Judge_ND_CPJT, Judge_PT_CPJT, Judge_Review_CPJT, Judge_RC_CPJT, Judge_Size_CPJT, Judge_VI_CPJT, Judge_Rework_CPJT, Judge_LN_CPJT, Judge_Unknown_CPJT, Judge_SR_CPJT		////< KEJ 20231123 - #4669 MOD >
 };
 enum JudgeCode_CPJT {
 	TRDF_CPJT = 0, BATR_CPJT, DOBB_CPJT, DOBS_CPJT, DOWW_CPJT, DOWB_CPJT, DOWS_CPJT
@@ -2369,7 +2370,7 @@
 	int nCount = pRcpReviewInfo->GetRcpJudgeCellDefectCount();
 	int nOK;
 
-	int nCellTRJudge = 0, nCelllOKJuge = 0, nCelllPRJuge = 0;
+	int nCellTRJudge = 0, nCelllOKJuge = 0, nCelllPRJuge = 0, nCelllPTJuge = 0;
 	m_pSP2P->ISP2P_DisplayMessage(_T("[ReviewEnd] Start Cell Defect Rejudge"));
 	for (int nCellIndex = 0; nCellIndex < nCellCount; nCellIndex++)
 	{
@@ -2386,6 +2387,12 @@
 		{
 			nCelllPRJuge = nCelllPRJuge + 1;
 		}
+		/* < KEJ 20231123 - #4669 ADD Start > */
+		else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
+		{
+			nCelllPTJuge = nCelllPTJuge + 1;
+		}
+		/* < KEJ 20231123 - #4669 ADD End > */
 
 		BOOL bReJudge = FALSE, bSubReJudge = FALSE;
 
@@ -2439,6 +2446,19 @@
 					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPRCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePR, pRcpJudgeInfo->GetJudgeCount());
 				}
 				break;
+				/* < KEJ 20231123 - #4669 ADD Start > */
+			case JudgeType_T8_PT:
+				if (pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT >= pRcpJudgeInfo->GetJudgeCount())
+				{
+					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell DefectPTCount[%d] >= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
+					bReJudge = TRUE;
+				}
+				else
+				{
+					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPTCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
+				}
+				break;
+				/* < KEJ 20231123 - #4669 ADD End > */
 			}
 
 			// 2nd condition
@@ -2489,6 +2509,19 @@
 					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPRCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePR, pRcpJudgeInfo->GetSubJudgeCount());
 				}
 				break;
+				/* < KEJ 20231123 - #4669 ADD Start > */
+			case JudgeType_T8_PT:
+				if (pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT <= pRcpJudgeInfo->GetSubJudgeCount())
+				{
+					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell DefectPTCount[%d] <= [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
+					bSubReJudge = TRUE;
+				}
+				else
+				{
+					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE Cell DefectPTCount[%d] [%d]"), nCellIndex, pRawData->GetCellData(nCellIndex)->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
+				}
+				break;
+				/* < KEJ 20231123 - #4669 ADD End > */
 			}
 
 			if (bReJudge & bSubReJudge)
@@ -2511,7 +2544,7 @@
 						{
 							nCelllOKJuge = 0;
 						}
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
 							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge,nCelllPRJuge);
 					}
 					else if (pRawData->GetCellData(nCellIndex)->m_nJudgement==Judge_PR_CPJT)
@@ -2529,15 +2562,35 @@
 						{
 							nCelllPRJuge = 0;
 						}
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 					}
+					/* < KEJ 20231123 - #4669 ADD Start > */
+					else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
+					{
+						int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
+						pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_TR_CPJT;
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
+							, nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
+
+
+						nCelllPTJuge -= 1;
+						nCellTRJudge += 1;
+
+						if (nCelllPTJuge < 0)
+						{
+							nCelllPTJuge = 0;
+						}
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
+					}
+					/* < KEJ 20231123 - #4669 ADD End > */
 					else
 					{
 
 						m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx,_T("TR"), _T("TR"));
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 					}
 				}
 				else if (pRcpJudgeInfo->GetReJudgeType() == JudgeType_T8_PR)
@@ -2557,8 +2610,8 @@
 						{
 							nCelllOKJuge = 0;
 						}
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 					}
 					if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_TR_CPJT)
 					{
@@ -2575,24 +2628,110 @@
 						{
 							nCellTRJudge = 0;
 						}
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 					}
+					/* < KEJ 20231123 - #4669 ADD Start > */
+					if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
+					{
+						int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
+						pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PR_CPJT;
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
+							, nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
+
+
+						nCelllPTJuge -= 1;
+						nCelllPRJuge += 1;
+
+						if (nCelllPTJuge < 0)
+						{
+							nCelllPTJuge = 0;
+						}
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
+					}
+					/* < KEJ 20231123 - #4669 ADD End > */
 					else
 					{
 
 						m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx, _T("PR"), _T("PR"));
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 					}
 				}
+				/* < KEJ 20231123 - #4669 ADD Start > */
+				else if (pRcpJudgeInfo->GetReJudgeType() == JudgeType_T8_PT)
+				{
+					if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT)
+					{
+						int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
+						pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT;
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
+							, nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
+
+
+						nCelllOKJuge -= 1;
+						nCelllPTJuge += 1;
+
+						if (nCelllOKJuge < 0)
+						{
+							nCelllOKJuge = 0;
+						}
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
+					}
+					if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_TR_CPJT)
+					{
+						int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
+						pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT;
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
+							, nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
+
+
+						nCellTRJudge -= 1;
+						nCelllPTJuge += 1;
+
+						if (nCellTRJudge < 0)
+						{
+							nCellTRJudge = 0;
+						}
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
+					}
+					if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PR_CPJT)
+					{
+						int nbfJudge = pRawData->GetCellData(nCellIndex)->m_nJudgement;
+						pRawData->GetCellData(nCellIndex)->m_nJudgement = Judge_PT_CPJT;
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition : ReJudge Cell Defect Grade! [%d]->[%s]")
+							, nCellIndex, nIdx, nbfJudge, pRcpJudgeInfo->GetReJudgeCode());
+
+
+						nCelllPRJuge -= 1;
+						nCelllPTJuge += 1;
+
+						if (nCelllPRJuge < 0)
+						{
+							nCelllPRJuge = 0;
+						}
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
+					}
+					else
+					{
+
+						m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx, _T("PT"), _T("PT"));
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
+					}
+				}
+				/* < KEJ 20231123 - #4669 ADD End > */
 				else//OK
 				{
 					if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_OK_CPJT || pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_Unknown_CPJT)
 					{
 						m_pSP2P->ISP2P_DisplayMessage(_T("[TEST Process::ReviewEnd][%02d]Cell [%02d] ReJudge  Cell Defect Grade! [%s]->[%s]"), nCellIndex, nIdx,_T("OK"), _T("OK"));
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 					}
 					else
 					{
@@ -2621,8 +2760,20 @@
 								nCelllPRJuge = 0;
 							}
 						}
-						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d]")
-							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge);
+						/* < KEJ 20231123 - #4669 ADD Start > */
+						else if (pRawData->GetCellData(nCellIndex)->m_nJudgement == Judge_PT_CPJT)
+						{
+							nCelllOKJuge += 1;
+							nCelllPTJuge -= 1;
+
+							if (nCelllPTJuge < 0)
+							{
+								nCelllPTJuge = 0;
+							}
+						}
+						/* < KEJ 20231123 - #4669 ADD End > */
+						m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]Cell [%02d]Condition CELL COUNT OK:[%d] TR[%d] PR[%d] PT[%d]")
+							, nCellIndex, nIdx, nCelllOKJuge, nCellTRJudge, nCelllPRJuge, nCelllPTJuge);
 	
 					}
 				}
@@ -2701,6 +2852,19 @@
 					m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PR Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePR, pRcpJudgeInfo->GetJudgeCount());
 				}
 			break;
+			/* < KEJ 20231123 - #4669 ADD Start > */
+		case JudgeType_T8_PT:
+			if (pRawData->GetGlassData()->m_nDefectNumJudgePT >= pRcpJudgeInfo->GetJudgeCount())
+			{
+				m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]GLASS Defect PT Count[%d] >= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
+				bReJudge = TRUE;
+			}
+			else
+			{
+				m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PT Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetJudgeCount());
+			}
+			break;
+			/* < KEJ 20231123 - #4669 ADD End > */
 			
 		}
 
@@ -2750,6 +2914,18 @@
 				m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PR Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePR, pRcpJudgeInfo->GetSubJudgeCount());
 			}
 			break;
+			/* < KEJ 20231123 - #4669 ADD Start > */
+		case JudgeType_T8_PT:
+			if (pRawData->GetGlassData()->m_nDefectNumJudgePT <= pRcpJudgeInfo->GetSubJudgeCount())
+			{
+				bSubReJudge = TRUE;
+				m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]GLASS Defect PT Count[%d] <= [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
+			}
+			else {
+				m_pSP2P->ISP2P_DisplayMessage(_T("[SequenceProcessor::ReviewEnd] [%02d]ELSE GLASS Defect PT Count[%d] [%d]"), nIdx, pRawData->GetGlassData()->m_nDefectNumJudgePT, pRcpJudgeInfo->GetSubJudgeCount());
+			}
+			break;
+			/* < KEJ 20231123 - #4669 ADD End > */
 		
 		}
 
diff --git a/ReviewSystem/bin/CHAfmControls_x64_vc15.dll b/ReviewSystem/bin/CHAfmControls_x64_vc15.dll
index 00ff89a..de13910 100644
--- a/ReviewSystem/bin/CHAfmControls_x64_vc15.dll
+++ b/ReviewSystem/bin/CHAfmControls_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHAfmControls_x64_vc15.pdb b/ReviewSystem/bin/CHAfmControls_x64_vc15.pdb
index 6a897ea..acd4fa2 100644
--- a/ReviewSystem/bin/CHAfmControls_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHAfmControls_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll b/ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll
index 60d4ea3..2344868 100644
--- a/ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHAfmControlsd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb b/ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb
index eebb8a7..5402bfe 100644
--- a/ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHAfmControlsd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHAlignFinder_x64_vc15.dll b/ReviewSystem/bin/CHAlignFinder_x64_vc15.dll
index 7dc5682..7406c95 100644
--- a/ReviewSystem/bin/CHAlignFinder_x64_vc15.dll
+++ b/ReviewSystem/bin/CHAlignFinder_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb b/ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb
index a05b233..5e8bbd5 100644
--- a/ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHAlignFinder_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll b/ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll
index 9fbd7d7..a96b9f5 100644
--- a/ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHAlignFinderd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb b/ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb
index df8ed18..9aab3b6 100644
--- a/ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHAlignFinderd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHDefectPicker_x64_vc15.dll b/ReviewSystem/bin/CHDefectPicker_x64_vc15.dll
index a896cdb..b2a1974 100644
--- a/ReviewSystem/bin/CHDefectPicker_x64_vc15.dll
+++ b/ReviewSystem/bin/CHDefectPicker_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb b/ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb
index 5ba7994..d43ef3c 100644
--- a/ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHDefectPicker_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll b/ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll
index 9b1452b..4e01486 100644
--- a/ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHDefectPickerd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb b/ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb
index 1a8bf94..667f26e 100644
--- a/ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHDefectPickerd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHLightControls_x64_vc15.dll b/ReviewSystem/bin/CHLightControls_x64_vc15.dll
index eb34a2f..8fb7f4a 100644
--- a/ReviewSystem/bin/CHLightControls_x64_vc15.dll
+++ b/ReviewSystem/bin/CHLightControls_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHLightControls_x64_vc15.pdb b/ReviewSystem/bin/CHLightControls_x64_vc15.pdb
index b8e9103..af3b1e4 100644
--- a/ReviewSystem/bin/CHLightControls_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHLightControls_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHLightControlsd_x64_vc15.dll b/ReviewSystem/bin/CHLightControlsd_x64_vc15.dll
index fef9bc1..71aed97 100644
--- a/ReviewSystem/bin/CHLightControlsd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHLightControlsd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb b/ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb
index 1d066ab..9d78757 100644
--- a/ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHLightControlsd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHMotorControls_x64_vc15.dll b/ReviewSystem/bin/CHMotorControls_x64_vc15.dll
index e3e8530..7cc135c 100644
--- a/ReviewSystem/bin/CHMotorControls_x64_vc15.dll
+++ b/ReviewSystem/bin/CHMotorControls_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHMotorControls_x64_vc15.pdb b/ReviewSystem/bin/CHMotorControls_x64_vc15.pdb
index 277d48d..6bfaf6a 100644
--- a/ReviewSystem/bin/CHMotorControls_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHMotorControls_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll b/ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll
index 1637bc6..f960339 100644
--- a/ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHMotorControlsd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb b/ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb
index 24ad2ac..a50892d 100644
--- a/ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHMotorControlsd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHPathScheduler_x64_vc15.dll b/ReviewSystem/bin/CHPathScheduler_x64_vc15.dll
index 0e50f25..541e74f 100644
--- a/ReviewSystem/bin/CHPathScheduler_x64_vc15.dll
+++ b/ReviewSystem/bin/CHPathScheduler_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb b/ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb
index 39bd05c..3cc3080 100644
--- a/ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHPathScheduler_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll b/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll
index 14a4ca1..e362398 100644
--- a/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb b/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb
index b4b6b1b..7785a63 100644
--- a/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHPathSchedulerd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHResultFileManager_x64_vc15.dll b/ReviewSystem/bin/CHResultFileManager_x64_vc15.dll
index 6331701..f7851b7 100644
--- a/ReviewSystem/bin/CHResultFileManager_x64_vc15.dll
+++ b/ReviewSystem/bin/CHResultFileManager_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb b/ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb
index a0f44c3..7121f35 100644
--- a/ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHResultFileManager_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll b/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll
index c51ba1e..e2f7cea 100644
--- a/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb b/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb
index 151371e..a4e970b 100644
--- a/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHResultFileManagerd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll b/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll
index 738a32b..6db6ea6 100644
--- a/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb b/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb
index 9330900..9e4eabf 100644
--- a/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewDefectFinder_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll b/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll
index 6f62050..f8b0172 100644
--- a/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb b/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb
index 6447195..ed12b2a 100644
--- a/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewDefectFinderd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll b/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll
index 0cd582a..f78feb0 100644
--- a/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb b/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb
index 08b52f4..bd70954 100644
--- a/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewPrioritySorter_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll b/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll
index 9faf6d5..6b9bfd3 100644
--- a/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb b/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb
index fa69488..483ce96 100644
--- a/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewPrioritySorterd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll b/ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll
index 0f9e21f..92b63bc 100644
--- a/ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewRecipe_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb b/ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb
index bdcff0e..5549a34 100644
--- a/ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewRecipe_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewReciped_x64_vc15.dll b/ReviewSystem/bin/CHReviewReciped_x64_vc15.dll
index 3813b17..55fbeab 100644
--- a/ReviewSystem/bin/CHReviewReciped_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewReciped_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb b/ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb
index 96e227c..32963c6 100644
--- a/ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewReciped_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll b/ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll
index c8f7389..9be9aae 100644
--- a/ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewResultParser_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb b/ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb
index f940b8f..46afc34 100644
--- a/ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewResultParser_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll b/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll
index 46083f0..9b91cca 100644
--- a/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb b/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb
index 95993b5..6681b7a 100644
--- a/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewResultParserd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResult_x64_vc15.dll b/ReviewSystem/bin/CHReviewResult_x64_vc15.dll
index fbc9334..42f6f25 100644
--- a/ReviewSystem/bin/CHReviewResult_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewResult_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResult_x64_vc15.pdb b/ReviewSystem/bin/CHReviewResult_x64_vc15.pdb
index 8df7e6e..a7024e3 100644
--- a/ReviewSystem/bin/CHReviewResult_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewResult_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResultd_x64_vc15.dll b/ReviewSystem/bin/CHReviewResultd_x64_vc15.dll
index db551ca..c8d7b19 100644
--- a/ReviewSystem/bin/CHReviewResultd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewResultd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb b/ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb
index cef76c2..c4ef0f2 100644
--- a/ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewResultd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewSetting_x64_vc15.dll b/ReviewSystem/bin/CHReviewSetting_x64_vc15.dll
index 048bc2a..c1e6976 100644
--- a/ReviewSystem/bin/CHReviewSetting_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewSetting_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb b/ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb
index 5d34c79..e17c0f0 100644
--- a/ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewSetting_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll b/ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll
index 30c75f1..40ed7f6 100644
--- a/ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHReviewSettingd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb b/ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb
index 544b363..1559c91 100644
--- a/ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHReviewSettingd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHSignalControls_x64_vc15.dll b/ReviewSystem/bin/CHSignalControls_x64_vc15.dll
index 5faf4d8..f56f4f5 100644
--- a/ReviewSystem/bin/CHSignalControls_x64_vc15.dll
+++ b/ReviewSystem/bin/CHSignalControls_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb b/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb
index 5395600..c414097 100644
--- a/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHSignalControls_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll b/ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll
index 80fc08c..6a68bef 100644
--- a/ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll
+++ b/ReviewSystem/bin/CHSignalControlsd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb b/ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb
index 3865625..003d86f 100644
--- a/ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHSignalControlsd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll b/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll
index 2340f4d..0fd2060 100644
--- a/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll
+++ b/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb b/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb
index 7d2969a..5dff0a3 100644
--- a/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHTotalPitchMeasure_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll b/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll
index 3b28229..2cc6b78 100644
--- a/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll
+++ b/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb b/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb
index 711479e..f780a23 100644
--- a/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb
+++ b/ReviewSystem/bin/CHTotalPitchMeasured_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/LineChecker_x64_vc15.dll b/ReviewSystem/bin/LineChecker_x64_vc15.dll
index fde3700..66f2623 100644
--- a/ReviewSystem/bin/LineChecker_x64_vc15.dll
+++ b/ReviewSystem/bin/LineChecker_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/LineChecker_x64_vc15.pdb b/ReviewSystem/bin/LineChecker_x64_vc15.pdb
index 6aaf3c0..fe1e89f 100644
--- a/ReviewSystem/bin/LineChecker_x64_vc15.pdb
+++ b/ReviewSystem/bin/LineChecker_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/LineCheckerd_x64_vc15.dll b/ReviewSystem/bin/LineCheckerd_x64_vc15.dll
index 16ddaa5..00e52ee 100644
--- a/ReviewSystem/bin/LineCheckerd_x64_vc15.dll
+++ b/ReviewSystem/bin/LineCheckerd_x64_vc15.dll
Binary files differ
diff --git a/ReviewSystem/bin/LineCheckerd_x64_vc15.pdb b/ReviewSystem/bin/LineCheckerd_x64_vc15.pdb
index 7e3bca6..e0d3384 100644
--- a/ReviewSystem/bin/LineCheckerd_x64_vc15.pdb
+++ b/ReviewSystem/bin/LineCheckerd_x64_vc15.pdb
Binary files differ
diff --git a/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll b/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll
index 351b0a3..6a16032 100644
--- a/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll
+++ b/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.dll
Binary files differ
diff --git a/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb b/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb
index e33c6ab..7b46e98 100644
--- a/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb
+++ b/ReviewSystem/bin/M_AutoDiagnosisManager_x64_vc17.pdb
Binary files differ
diff --git a/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll b/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll
index ba7b2a7..28a8c46 100644
--- a/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll
+++ b/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.dll
Binary files differ
diff --git a/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb b/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb
index 4b4c4c8..8d2488c 100644
--- a/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb
+++ b/ReviewSystem/bin/M_AutoDiagnosisManagerd_x64_vc17.pdb
Binary files differ
diff --git a/ReviewSystem/bin/ReviewRecipeEditor.exe b/ReviewSystem/bin/ReviewRecipeEditor.exe
index 835463e..b2fb4d2 100644
--- a/ReviewSystem/bin/ReviewRecipeEditor.exe
+++ b/ReviewSystem/bin/ReviewRecipeEditor.exe
Binary files differ
diff --git a/ReviewSystem/bin/ReviewRecipeEditor.pdb b/ReviewSystem/bin/ReviewRecipeEditor.pdb
index 2ead64e..b1a7ec6 100644
--- a/ReviewSystem/bin/ReviewRecipeEditor.pdb
+++ b/ReviewSystem/bin/ReviewRecipeEditor.pdb
Binary files differ
diff --git a/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe b/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe
index 68b6ac1..90f2267 100644
--- a/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe
+++ b/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.exe
Binary files differ
diff --git a/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb b/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb
index 7a1f03d..d0b26c5 100644
--- a/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb
+++ b/ReviewSystem/bin/ReviewRecipeEditord_x64_vc10.pdb
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystem.exe b/ReviewSystem/bin/ReviewSystem.exe
index 4f1c2cb..3a39121 100644
--- a/ReviewSystem/bin/ReviewSystem.exe
+++ b/ReviewSystem/bin/ReviewSystem.exe
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystem.pdb b/ReviewSystem/bin/ReviewSystem.pdb
index 8fb63d9..2c79ebe 100644
--- a/ReviewSystem/bin/ReviewSystem.pdb
+++ b/ReviewSystem/bin/ReviewSystem.pdb
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystemSetting.exe b/ReviewSystem/bin/ReviewSystemSetting.exe
index e77416e..44e3d4b 100644
--- a/ReviewSystem/bin/ReviewSystemSetting.exe
+++ b/ReviewSystem/bin/ReviewSystemSetting.exe
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystemSetting.pdb b/ReviewSystem/bin/ReviewSystemSetting.pdb
index d377496..8da2d07 100644
--- a/ReviewSystem/bin/ReviewSystemSetting.pdb
+++ b/ReviewSystem/bin/ReviewSystemSetting.pdb
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe b/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe
index 12c58b1..40c7d68 100644
--- a/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe
+++ b/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.exe
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb b/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb
index 3652162..95c940d 100644
--- a/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb
+++ b/ReviewSystem/bin/ReviewSystemSettingd_x64_vc10.pdb
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystemd_x64_vc10.exe b/ReviewSystem/bin/ReviewSystemd_x64_vc10.exe
index e0b1146..783a324 100644
--- a/ReviewSystem/bin/ReviewSystemd_x64_vc10.exe
+++ b/ReviewSystem/bin/ReviewSystemd_x64_vc10.exe
Binary files differ
diff --git a/ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb b/ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb
index dc66323..6d06f56 100644
--- a/ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb
+++ b/ReviewSystem/bin/ReviewSystemd_x64_vc10.pdb
Binary files differ
diff --git a/ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h b/ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h
index b151676..54ffe71 100644
--- a/ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h
+++ b/ReviewSystem/include/CHReviewRecipe/RcpJudgeInfo.h
@@ -2,7 +2,8 @@
 
 #include <vector>
 
-enum JudgeType_T8	{ JudgeType_T8_None=0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR, JudgeType_T8_PT,*/ JudgeType_T8_Count };
+//enum JudgeType_T8 { JudgeType_T8_None = 0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR, JudgeType_T8_PT,*/ JudgeType_T8_Count };
+enum JudgeType_T8 { JudgeType_T8_None = 0, JudgeType_T8_OK, JudgeType_T8_TR, JudgeType_T8_PR,/*, JudgeType_T8_BR,*/ JudgeType_T8_PT, JudgeType_T8_Count };		//< KEJ 20231123 - #4669 MOD >
 
 class AFX_EXT_CLASS CRcpJudgeInfo
 {

--
Gitblit v1.9.3