프로젝트

일반

사용자정보

개정판 2d9fa217

ID2d9fa2173dc412e0414d0ff1d0a6bdda077a1f8f
상위 5ecf2996
하위 bcccebe9

김연진이(가) 5년 이상 전에 추가함

issue #000
1. Save 방식 변경 : XML -> Database
2. Svg 폴더구조 변경 : Svg\Type\*.svg -> Svg\Category\Type\*.svg

Change-Id: I43008c4d23874f23aed16dcdf574b9f36384e955

차이점 보기:

HYTOS/HYTOS/AppDocData.py
502 502
            conn = sqlite3.connect(dbPath)
503 503
            
504 504
            UPDATE_SYMBOL_SQL = """
505
                UPDATE Symbol
506
                SET
507
                    name = ?, SymbolType_UID=(select UID from SymbolType where Type=?), threshold = ?, minMatchPoint = ?, isDetectOrigin = ?,
508
                    rotationCount = ?, ocrOption = ?, isContainChild = ?, originalPoint = ?, connectionPoint = ?,
509
                    baseSymbol = ?, additionalSymbol = ?, isExceptDetect = ?, hasInstrumentLabel = ?, width = ?, height = ?, flip = ?
510
                WHERE uid = ?
505
                UPDATE Symbols
506
                   SET name = ?
507
                     , originalPoint = ?
508
                     , connectionPoint = ?
509
                 WHERE uid = ?
511 510
            """
512 511
            
513 512
            cursor = conn.cursor()
514
            query = (symbol.getName(), symbol.getType(), symbol.getThreshold()
515
                           , symbol.getMinMatchCount(), symbol.getIsDetectOnOrigin(), symbol.getRotationCount()
516
                           , symbol.getOcrOption(), symbol.getIsContainChild()
517
                           , symbol.getOriginalPoint(), symbol.getConnectionPoint()
518
                           , symbol.getBaseSymbol(), symbol.getAdditionalSymbol(), symbol.getIsExceptDetect(), symbol.getHasInstrumentLabel(), symbol.width, symbol.height, symbol.detectFlip, symbol.getUid())
513
            query = (symbol.getName(), symbol.getOriginalPoint(), symbol.getConnectionPoint(), symbol.getUid())
519 514
            cursor.execute(UPDATE_SYMBOL_SQL, query)
520 515
            conn.commit()
521 516
            isUpdated = True
......
547 542

  
548 543
            sql = """select s.UID
549 544
                          , s.Name
545
                          , t.Category
550 546
                          , t.Type
551 547
                          , s.OriginalPoint
552 548
                          , s.ConnectionPoint
......
558 554
                cursor.execute(sql)
559 555
                rows = cursor.fetchall()
560 556
                for row in rows:
561
                    sym = symbol.SymbolBase(row[0], row[1], row[2], row[3], row[4])
557
                    sym = symbol.SymbolBase(row[0], row[1], row[2], row[3], row[4], row[5])
562 558
                    targetSymbolList.append(sym)
563 559
            except Exception as ex:
564 560
                print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
......
682 678
    def setCurrentProject(self, project):
683 679
        self.project = project
684 680
        self.makeChildDir()
681
        self.copySvg()
685 682
        try:
686 683
            # Creates or opens a file called mydb with a SQLite3 DB
687 684
            dbPath = os.path.join(self.getCurrentProject().getDbFilePath() , App.NAME + '.db')
......
720 717
            pass
721 718

  
722 719
    '''
720
        @brief      Copy Svg
721
        @author     yeonjin
722
        @date       19.07.31
723
    '''
724
    def copySvg(self):
725
        from shutil import copyfile
726

  
727
        path = os.path.join(os.getenv('ALLUSERSPROFILE'), App.NAME)
728
        sourceDir = os.path.join(path, 'svg')
729
        if not os.path.exists(sourceDir): 
730
            return
731
        
732
        project = AppDocData.instance().getCurrentProject()
733
        targetDir = project.getSvgFilePath()
734

  
735
        for root, dirs, files in os.walk(sourceDir):
736
            for file in files: # loops through directories and files
737
                sourceFile = os.path.join(root, file)
738
                targetFile = sourceFile.replace(sourceDir, targetDir)
739
                if not os.path.exists(targetFile):
740
                    dir = os.path.dirname(targetFile)
741
                    if not os.path.exists(dir):
742
                        os.makedirs(dir)
743

  
744
                    copyfile(sourceFile, targetFile)
745

  
746

  
747
        
748
        
749

  
750

  
751

  
752
    '''
723 753
        @brief      Make Directory
724 754
        @author     Jeongwoo
725 755
        @date       18.05.08
......
1274 1304
                # Get a cursor object
1275 1305
                cursor = conn.cursor()
1276 1306

  
1277
                sql = "select * from configuration"
1307
                sql = "select Section, Key, Value from configuration"
1278 1308
            
1279 1309
                cursor.execute(sql)
1280 1310
                rows = cursor.fetchall()
......
1602 1632

  
1603 1633
            sql = """select s.UID
1604 1634
                          , s.Name
1635
                          , t.Category
1605 1636
                          , t.Type
1606 1637
                          , s.OriginalPoint
1607 1638
                          , s.ConnectionPoint
......
1615 1646
                rows = cursor.fetchall()
1616 1647
                if rows is not None and len(rows) > 0:
1617 1648
                    symbolTuple = rows[0]
1618
                    ret = symbol.SymbolBase(symbolTuple[0], symbolTuple[1], symbolTuple[2], symbolTuple[3], symbolTuple[4]) 
1649
                    ret = symbol.SymbolBase(symbolTuple[0], symbolTuple[1], symbolTuple[2], symbolTuple[3], symbolTuple[4], symbolTuple[5]) 
1619 1650
            except Exception as ex:
1620 1651
                print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
1621 1652
        finally:
......
1623 1654

  
1624 1655
        return ret
1625 1656

  
1657

  
1658
    def getSymbolListByUID(self, uid):
1659
        ret = []
1660

  
1661
        try:
1662
            dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), AppDocData.DATABASE)
1663
            conn = sqlite3.connect(dbPath)
1664
            cursor = conn.cursor()
1665
            
1666
            sql = """select s.UID
1667
                          , s.Name
1668
                          , t.Category
1669
                          , t.Type
1670
                          , s.OriginalPoint
1671
                          , s.ConnectionPoint
1672
                       from Symbols s
1673
                      inner join SymbolType t
1674
                         on s.SymbolType_UID = t.uid 
1675
                      where s.SymbolType_UID = ?"""
1676
           
1677
            try:
1678
                cursor.execute(sql, (uid,))
1679
                rows = cursor.fetchall()
1680
                if rows is not None and len(rows) > 0:
1681
                    for row in rows:
1682
                        sym = symbol.SymbolBase(row[0], row[1], row[2], row[3], row[4], row[5])
1683
                                                
1684
                        ret.append(sym)
1685
            except Exception as ex:
1686
                print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
1687
        finally:
1688
            conn.close()
1689

  
1690
        return ret
1691

  
1692

  
1626 1693
    '''
1627 1694
        @brief  get symbol name list
1628 1695
        @history    18.04.24    Jeongwoo    Add isExceptDetect Field
......
1638 1705

  
1639 1706
                sql = """select s.UID
1640 1707
                              , s.Name
1708
                              , t.Category
1641 1709
                              , t.Type
1642 1710
                              , s.OriginalPoint
1643 1711
                              , s.ConnectionPoint
......
1649 1717

  
1650 1718
                sql = """select s.UID
1651 1719
                              , s.Name
1720
                              , t.Category
1652 1721
                              , t.Type
1653 1722
                              , s.OriginalPoint
1654 1723
                              , s.ConnectionPoint
......
1660 1729
                rows = cursor.fetchall()
1661 1730
                if rows is not None and len(rows) > 0:
1662 1731
                    for row in rows:
1663
                        sym = symbol.SymbolBase(row[0], row[1], row[2], row[3], row[4])
1732
                        sym = symbol.SymbolBase(row[0], row[1], row[2], row[3], row[4], row[5])
1664 1733
                                                
1665 1734
                        ret.append(sym)
1666 1735
            except Exception as ex:
......
2792 2861
            # Get a cursor object
2793 2862
            cursor = conn.cursor()
2794 2863

  
2795
            # delete all datas of current drawing
2796
            pidNo = self.activeDrawing.name
2797
            sql = "delete from LINE_DATA_LIST where PNID_NO = '{}'".format(pidNo)
2798
            cursor.execute(sql)
2799
            sql = "delete from EQUIPMENT_DATA_LIST where PNID_NO = '{}'".format(pidNo)
2800
            cursor.execute(sql)
2801
            sql = "delete from VALVE_DATA_LIST where PNID_NO = '{}'".format(pidNo)
2802
            cursor.execute(sql)
2803
            sql = "delete from INSTRUMENT_DATA_LIST where PNID_NO = '{}'".format(pidNo)
2804
            cursor.execute(sql)
2805
            sql = "delete from NOTE_DATA_LIST where PNID_NO = '{}'".format(pidNo)
2806
            cursor.execute(sql)
2807
            sql = "delete from TitleBlockValues where Drawings_UID = '{}'".format(pidNo)
2808
            cursor.execute(sql)
2809

  
2810
            # delete ports
2811
            sql = "delete from Ports where Components_UID in (select UID from Components where Drawings_UID = (select UID from Drawings where Name= '{}'))".format(pidNo)
2812
            cursor.execute(sql)
2864
            uid = self.activeDrawing.UID
2813 2865

  
2814
            # delete Attributes
2815
            sql = "delete from Attributes where Components_UID in (select UID from Components where Drawings_UID = (select UID from Drawings where Name= '{}'))".format(pidNo)
2866
            # delete Points
2867
            sql = "delete from Points where Components_UID in (select UID from Components where Drawings_UID = '{}')".format(uid)
2816 2868
            cursor.execute(sql)
2817 2869

  
2818 2870
            # delete Components 
2819
            sql = "delete from Components where Drawings_UID = (select UID from Drawings where Name= '{}')".format(pidNo)
2820
            cursor.execute(sql)
2821

  
2822
            # delete Vendor Package
2823
            sql = "delete from VendorPackages where Drawings_UID = '{}'".format(pidNo)
2871
            sql = "delete from Components where Drawings_UID = '{}'".format(uid)
2824 2872
            cursor.execute(sql)
2825 2873

  
2826 2874
            for item in items:
......
3078 3126

  
3079 3127
        return SymbolCategoryList
3080 3128

  
3129

  
3130
    def getComponentByComponentUID(self, uid):
3131
        ComponentList = []
3132

  
3133
        try:
3134
            dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), AppDocData.DATABASE)
3135

  
3136
            conn = sqlite3.connect(dbPath)
3137
            cursor = conn.cursor()
3138
            
3139
            sql = """select c.uid
3140
                          , c.Name
3141
                          , c.Symbols_UID
3142
                          , t.Category
3143
                          , t.type
3144
                          , s.Name
3145
                          , s.OriginalPoint
3146
                          , c.X
3147
                          , c.Y
3148
                          , c.Rotation
3149
                          , c.Scale
3150
                          , p.[Index]
3151
                          , p.x
3152
                          , p.y
3153
                       from points p
3154
                       left join components c
3155
                         on p.components_uid = c.uid
3156
                       left join symbols s
3157
                         on c.Symbols_UID = s.UID    
3158
                       left join SymbolType t
3159
                         on s.symboltype_uid = t.uid
3160
                      where c.uid = ?
3161
                      order by p.[Index]"""
3162
            try:
3163
                cursor.execute(sql, (uid,))
3164
                rows = cursor.fetchall()
3165
                for row in rows:
3166
                    data = []
3167
                    for index in range(len(cursor.description)):
3168
                        data.append(row[index])
3169
                    ComponentList.append(data) # Components_UID
3170
            except Exception as ex:
3171
                from App import App
3172

  
3173
                message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
3174
                App.mainWnd().addMessage.emit(MessageType.Error, message)
3175
        finally:
3176
            conn.close()
3177

  
3178
        return ComponentList
3179

  
3180
    '''
3181
        @brief      Return Components By DrawingUID
3182
        @author     yeonjin
3183
        @date       19.07.29
3184
    '''
3185
    def getComponentListByDrawingUID(self, uid):
3186
        ComponentList = []
3187

  
3188
        try:
3189
            dbPath = os.path.join(self.getCurrentProject().getDbFilePath(), AppDocData.DATABASE)
3190

  
3191
            conn = sqlite3.connect(dbPath)
3192
            cursor = conn.cursor()
3193
            sql = 'select UID from Components where Drawings_UID = "' + uid + '"'
3194
            try:
3195
                cursor.execute(sql)
3196
                rows = cursor.fetchall()
3197
                for row in rows:
3198
                    ComponentList.append((row[0])) # Components_UID
3199
            except Exception as ex:
3200
                from App import App
3201

  
3202
                message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
3203
                App.mainWnd().addMessage.emit(MessageType.Error, message)
3204
        finally:
3205
            conn.close()
3206

  
3207
        return ComponentList
3208

  
3081 3209
    '''
3082 3210
        @brief      Return Symbol Type Items By Category
3083 3211
        @author     yeonjin
......
3091 3219

  
3092 3220
            conn = sqlite3.connect(dbPath)
3093 3221
            cursor = conn.cursor()
3094
            sql = 'SELECT Category, Type FROM SymbolType WHERE Category = "' + category + '"'
3222
            sql = 'SELECT UID, Category, Type FROM SymbolType WHERE Category = "' + category + '"'
3095 3223
            try:
3096 3224
                cursor.execute(sql)
3097 3225
                rows = cursor.fetchall()
3098 3226
                for row in rows:
3099
                    symbolTypeList.append((row[0], row[1])) # Category, Type
3227
                    symbolTypeList.append((row[0], row[1], row[2])) # UID, Category, Type
3100 3228
            except Exception as ex:
3101 3229
                from App import App
3102 3230

  
HYTOS/HYTOS/Commands/SaveWorkCommand.py
21 21
        """ do given work"""
22 22
        from datetime import datetime
23 23
        from AppDocData import AppDocData
24
        from AppDocData import MessageType
25
        from EngineeringTextItem import QEngineeringTextItem
26
        from EngineeringLineNoTextItem import QEngineeringLineNoTextItem
27
        from EngineeringNoteItem import QEngineeringNoteItem
28
        from QEngineeringSizeTextItem import QEngineeringSizeTextItem
29
        from EngineeringEquipmentItem import QEngineeringEquipmentItem
30
        from EngineeringInstrumentItem import QEngineeringInstrumentItem
31
        from EngineeringSpecBreakItem import QEngineeringSpecBreakItem
32
        from EngineeringVendorItem import QEngineeringVendorItem
24
        from AppDocData import MessageType        
33 25
        from SymbolSvgItem import SymbolSvgItem 
34
        from EngineeringReducerItem import QEngineeringReducerItem
26
        from EngineeringStreamlineItem import QEngineeringStreamlineItem
35 27

  
36 28
        try:
37 29
            appDocData = AppDocData.instance()
38

  
39
            titleBlockProps = appDocData.getTitleBlockProperties()
40 30
            items = appDocData.allItems
41
            titleBlockItems = []
42
            for item in items:
43
                if type(item) is QEngineeringTextItem:
44
                    for titleBlockProp in titleBlockProps:
45
                        if item.area == titleBlockProp[0]:
46
                            titleBlockItems.append(item)
47

  
48
            dbItems = [item for item in items if type(item) is QEngineeringInstrumentItem or type(item) is QEngineeringEquipmentItem or type(item) is QEngineeringReducerItem or\
49
            type(item) is QEngineeringNoteItem or type(item) is SymbolSvgItem or type(item) is QEngineeringLineNoTextItem or type(item) is QEngineeringVendorItem] + titleBlockItems
31
           
32
            dbItems = [item for item in items if type(item) is SymbolSvgItem or type(item) is QEngineeringStreamlineItem]
50 33
            appDocData.saveToDatabase(dbItems)
51 34

  
52
            self.resultStr = SaveWorkCommand.save_to_xml()
35
            self.resultStr = SaveWorkCommand.save_to_database()
53 36

  
54 37
            """ update drawing's modified time """
55 38
            drawings = appDocData.getDrawings()
......
65 48
            self.display_message.emit(MessageType.Error, message)
66 49

  
67 50
    @staticmethod
68
    def save_to_xml():
69
        """ save recognized items to xml file """
70
        import XmlGenerator as xg
51
    def save_to_database():
52
        """ save recognized items to database """
71 53
        from AppDocData import AppDocData
54
        from SymbolSvgItem import SymbolSvgItem 
55
        from EngineeringStreamlineItem import QEngineeringStreamlineItem
72 56

  
73
        docData = AppDocData.instance()
74
        result = xg.writeXmlOnScene(docData.imgName, docData.imgWidth, docData.imgHeight)
57
        appDocData = AppDocData.instance()
58
        items = appDocData.allItems       
59
        
60
        dbItems = [item for item in items if type(item) is SymbolSvgItem or type(item) is QEngineeringStreamlineItem]
61
        
62
        resultStr = " Save Count : " + str(len(dbItems))
75 63
        
76
        resultStr = '[저장 결과]'
64
        return resultStr
77 65

  
78
        for item in result.items():
79
            itemName = str(item[0])
80
            itemSuccessCount = str(item[1][0])
81
            itemFailUidList = item[1][1]
82
            resultStr += "\r\n" + itemName + " Save Count : " + itemSuccessCount
83
            if len(itemFailUidList) > 0:
84
                resultStr += "\r\n" + itemName + " Error List(UID)"
85
                for uid in itemFailUidList:
86
                    resultStr += "\r\n" + uid
87 66

  
88
        return resultStr
67
    
HYTOS/HYTOS/ItemTreeWidget.py
359 359
                    if isEquipmentType:
360 360
                        item = QTreeWidgetItem(self.EqpTreeItem, [child.name])
361 361
                        item.setData(0, self.TREE_DATA_ROLE, child)
362
                    #elif child.type == 'Nozzles':
363
                    #    for i in range(self.EqpTreeItem.childCount()):
364
                    #        eqpTreeItem = eqpRootTreeItem[0].child(i)
365
                    #        eqpSymbol = eqpTreeItem.data(0, self.TREE_DATA_ROLE)
366
                    #        if child.owner is eqpSymbol:
367
                    #            item = QTreeWidgetItem(eqpTreeItem, [child.name])
368
                    #            item.setData(0, self.TREE_DATA_ROLE, child)
369
                    #            break
370
                        
362
                    
371 363
                        if item is None:
372 364
                            item = QTreeWidgetItem(self.SymbolsTreeItem, [child.name])
373 365
                    elif child.type == 'Notes':
......
376 368
                        item = QTreeWidgetItem(self.SymbolsTreeItem, [child.name])
377 369
                    
378 370
                    if item is not None:
379
                        iconPath = os.path.join(AppDocData.instance().getCurrentProject().getSvgFilePath(), child.type , child.name + ".svg")
371
                        iconPath = os.path.join(AppDocData.instance().getCurrentProject().getSvgFilePath(), child.category, child.type , child.name + ".svg")
380 372
                        item.setIcon(0, QIcon(iconPath))
381 373
                        item.setData(0, self.TREE_DATA_ROLE, child)
382 374
                        brush = QBrush()
HYTOS/HYTOS/LineNoTracer.py
493 493
                
494 494
            svgFileName = end_break_names[0].sName
495 495
            symbol = docdata.getSymbolByQuery('name', svgFileName)
496
            svgFilePath = os.path.join(docdata.getCurrentProject().getSvgFilePath(), symbol.getType(), svgFileName+'.svg')
496
            svgFilePath = os.path.join(docdata.getCurrentProject().getSvgFilePath(), symbol.getCategory(), symbol.getType(), svgFileName+'.svg')
497 497

  
498 498
            #end_breaks = []
499 499
            lineNo_froms = []
......
554 554
                
555 555
            svgFileName = line_names[0].sName
556 556
            symbol = docdata.getSymbolByQuery('name', svgFileName)
557
            svgFilePath = os.path.join(docdata.getCurrentProject().getSvgFilePath(), symbol.getType(), svgFileName+'.svg')
557
            svgFilePath = os.path.join(docdata.getCurrentProject().getSvgFilePath(), symbol.getCategory(), symbol.getType(), svgFileName+'.svg')
558 558

  
559 559
            allowed_error = 0.000001
560 560

  
HYTOS/HYTOS/MainWindow.py
101 101
        docData = AppDocData.instance()
102 102
        project = docData.getCurrentProject()
103 103
        _translate = QCoreApplication.translate
104
        
104 105
        self.setWindowTitle(_translate(App.NAME  + " - {}".format(project.name), App.NAME + " - {}".format(project.name)))
105 106
        self.resizeDocks({self.dockWidgetSymbolExplorer}, {self.dockWidgetDrawingExplorer.sizeHint().width()}, Qt.Horizontal)
106 107

  
107
        self.toolBar.insertSeparator(self.actionValidate)
108
        
109 108
        self.graphicsView = QtImageViewer.QtImageViewer(self)
110 109
        self.graphicsView.setParent(self.centralwidget)
111 110
        self.graphicsView.useDefaultCommand() ##### USE DEFAULT COMMAND
......
146 145
        self.actionGroup.addAction(self.actionZoom)
147 146
        self.actionGroup.addAction(self.actionFitWindow)
148 147
        self.actionGroup.addAction(self.actionSave)
149
        self.actionGroup.addAction(self.actionValidate)
150 148

  
151 149
        self.actionGroup.triggered.connect(self.actionGroupTriggered)
152 150

  
......
331 329
        self._headers.append('Limitation of Velocity')
332 330
        self._headers.append('Limitation of Press. Drop')
333 331

  
334
        
335 332
        self.tableWidgetHMB.setColumnCount(len(self._headers))
336 333
        self.tableWidgetHMB.setHorizontalHeaderLabels(self._headers)                
337 334
        self.tableWidgetHMB.setEditTriggers(QAbstractItemView.NoEditTriggers)
338

  
339
        #self.tableWidgetHMB.setColumnHidden(0, True)
340
        #self.tableWidgetHMB.setColumnHidden(1, True)
335
        
336
        self.tableWidgetHMB.setColumnHidden(0, True)
337
        self.tableWidgetHMB.setColumnHidden(1, True)
341 338
        
342 339
        self.tableWidgetHMB.resizeColumnsToContents()
343 340

  
......
363 360
            self.treeWidgetDrawingList.clear()
364 361
            self.treeWidgetDrawingList.root = QTreeWidgetItem(self.treeWidgetDrawingList, [self.tr('Drawings'), ''])
365 362
            self.treeWidgetDrawingList.root.setFlags(self.treeWidgetDrawingList.root.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
366
            self.treeWidgetDrawingList.root.setCheckState(0, Qt.Unchecked)
363
            #self.treeWidgetDrawingList.root.setCheckState(0, Qt.Unchecked)
367 364
                        
368 365
            for drawing in drawings:               
366
                if drawing[1] == 'Template':
367
                    continue
369 368
                item = QTreeWidgetItem(self.treeWidgetDrawingList.root, [drawing[1], drawing[2], drawing[0] if drawing and drawing[0] else ''])
370
                item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
371
                item.setCheckState(0, Qt.Unchecked)
369
                #item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
370
                #item.setCheckState(0, Qt.Unchecked)
372 371
            
373 372
            self.treeWidgetDrawingList.root.setText(0, self.tr('Drawings')+'({})'.format(self.treeWidgetDrawingList.root.childCount()))
374 373
            self.treeWidgetDrawingList.expandItem(self.treeWidgetDrawingList.root)
......
487 486
                    itemTypes.append(type(item))
488 487
            ##
489 488

  
489
            #SaveWorkCommand.save_to_database()
490 490
            self._save_work_cmd = SaveWorkCommand()
491 491
            self._save_work_cmd.display_message.connect(self.onAddMessage)
492 492
            self._save_work_cmd.finished.connect(self.save_finished)
......
527 527
            if messageType == MessageType.Error:
528 528
                item.setBackground(Qt.red)
529 529

  
530
            self.listWidgetLog.insertItem(0, item)
530
            #self.listWidgetLog.insertItem(0, item)
531 531
        except Exception as ex:
532 532
            print('error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno))
533 533

  
......
610 610
                appDocData = AppDocData.instance()
611 611
                appDocData.activeDrawing.hmbTable.reset()
612 612
                appDocData.clearItemList(True)
613

  
613
                
614 614

  
615 615
                items = self.graphicsView.scene.items()
616 616
                for item in items:
......
817 817
            appDocData.activeDrawing = Drawing(appDocData.imgName)
818 818
            self.itemTreeWidget.setCurrentDrawing(appDocData.activeDrawing.name)
819 819

  
820
            drawingList = self.treeWidgetDrawingList.topLevelItem(0)
821
            for childIdex in range(drawingList.childCount()):
822
                drawingList.child(childIdex).setCheckState(0, Qt.Unchecked)
823
            for childIdex in range(drawingList.childCount()):
824
                child = drawingList.child(childIdex)
825
                if child.text(0).replace('.png', '') == appDocData.activeDrawing.name:
826
                    child.setCheckState(0, Qt.Checked)
827
                    break
828

  
829
            ## Load data on xml            
830
            path = os.path.join(appDocData.getCurrentProject().getTempPath(), drawing + '.xml')
831
            count = 0
832
            if os.path.isfile(path):
833
                for child in parse(path).getroot().getchildren():
834
                    count = count + len(child.getchildren())
820
            ## Load data on database     
821
            components = appDocData.getComponentListByDrawingUID(appDocData.activeDrawing.UID)
822
            count = len(components)
823

  
835 824
            if count > 0:
836
                try:
837
                    self.progress = QProgressDialog(self.tr("Please wait for a while"), self.tr("Cancel"), 0, 100, self) if not hasattr(self, 'progress') else self.progress
838
                    self.progress.setWindowModality(Qt.WindowModal)
839
                    self.progress.setAutoReset(True)
840
                    self.progress.setAutoClose(True)
841
                    self.progress.setMinimum(0)
842
                    self.progress.resize(600,100)
843
                    self.progress.setWindowTitle(self.tr("Reading file..."))
844
                    self.progress.show()
845

  
846
                    self.loadRecognitionResultFromXml(path)
847
                    #self.checkAttribute()
848
                finally:
849
                    self.progress.setValue(self.progress.maximum())
850
                    self.progress.hide()
825
                self.load_components(components)
826

  
851 827
            self.changeViewCheckedState(True)
852 828
            self.load_HMB()
853 829
        except Exception as ex:
......
867 843
            self.load_drawing_list()
868 844
            self.open_border_file()
869 845
            self.load_data(drawingName)
870

  
871
    '''
872
        @brief      Open image drawing file and then display it
873
        @author     humkyung
874
        @date       2018.??.??
875
        @history    18.04.23 Jeongwoo    Add AppDocData.instance().setCurrentPidSource
876
                    18.04.23 Jeongwoo    Add Store Set Current Pid Image on AppDocData
877
                    18.05.02 Jeongwoo    Add useDefaultCommand()
878
                    humkyung 2018.05.24 load recognition result file if exists
879
                    Jeongwoo 2018.05.29 load data on xml if xml file exist
880
                    humkyung 2018.08.22 clear scene before loading xml file
881
    '''
882
    def onOpenImageDrawing(self, path=None):
883
        from Drawing import Drawing
884
        from xml.etree.ElementTree import Element, SubElement, dump, ElementTree, parse
885

  
886
        try:
887
            appDocData = AppDocData.instance()
888
            project = appDocData.getCurrentProject()
889
            
890
            #for item in self.graphicsView.scene.items():
891
            #    self.graphicsView.scene.removeItem(item)
892

  
893
            self.path = self.graphicsView.loadImageFromFile(project.getDrawingFilePath(), path if type(path) is str else '')
894
            if os.path.isfile(self.path):
895
                appDocData.clear()
896
                self.onCommandRejected()
897

  
898
                appDocData.setImgFilePath(self.path)
899
                appDocData.activeDrawing = Drawing(appDocData.imgName)
900
                #appDocData.setCurrentPidSource(Image.open(self.path))
901
                self.itemTreeWidget.setCurrentDrawing(appDocData.activeDrawing.name)
902

  
903
                drawingList = self.treeWidgetDrawingList.topLevelItem(0)
904
                for childIdex in range(drawingList.childCount()):
905
                    drawingList.child(childIdex).setCheckState(0, Qt.Unchecked)
906
                for childIdex in range(drawingList.childCount()):
907
                    child = drawingList.child(childIdex)
908
                    if child.text(0).replace('.png', '') == appDocData.activeDrawing.name:
909
                        child.setCheckState(0, Qt.Checked)
910
                        break
911

  
912
                ## Load data on xml
913
                path = os.path.join(appDocData.getCurrentProject().getTempPath(), appDocData.imgName + '.xml')
914
                count = 0
915
                if os.path.isfile(path):
916
                    for child in parse(path).getroot().getchildren():
917
                        count = count + len(child.getchildren())
918
                if count > 0:
919
                    try:
920
                        self.progress = QProgressDialog(self.tr("Please wait for a while"), self.tr("Cancel"), 0, 100, self) if not hasattr(self, 'progress') else self.progress
921
                        self.progress.setWindowModality(Qt.WindowModal)
922
                        self.progress.setAutoReset(True)
923
                        self.progress.setAutoClose(True)
924
                        self.progress.setMinimum(0)
925
                        self.progress.resize(600,100)
926
                        self.progress.setWindowTitle(self.tr("Reading file..."))
927
                        self.progress.show()
928

  
929
                        self.loadRecognitionResultFromXml(path)
930
                        #self.checkAttribute()
931
                    finally:
932
                        self.progress.setValue(self.progress.maximum())
933
                        self.progress.hide()
934
                self.changeViewCheckedState(True)
935
        except Exception as ex:
936
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
937
            self.addMessage.emit(MessageType.Error, message)
938

  
939
        return self.path
940

  
846
    
941 847
    def changeViewCheckedState(self, checked, clear=True):
942 848
        '''
943 849
            @brief      change view checked state
......
1094 1000
        @history    Jeongwoo 2018.05.10 Change method for Checkable action
1095 1001
    '''
1096 1002
    def onPlaceLine(self):        
1097
        #import PlaceStreamlineCommand
1098

  
1099
        """
1100
        if not self.graphicsView.hasImage():
1101
            self.actionLine.setChecked(False)
1102
            self.showImageSelectionMessageBox()
1103
            return
1104
        """
1105

  
1106 1003
        self.actionLine.setChecked(True)
1107 1004
        if not hasattr(self.actionLine, 'tag'):
1108 1005
            self.actionLine.tag = PlaceStreamlineCommand.PlaceStreamlineCommand(self.graphicsView)
......
1157 1054
                self.tableWidgetHMB.setItem(rowIndex, 0, QTableWidgetItem(str(hmb.uid)))
1158 1055
                self.tableWidgetHMB.setItem(rowIndex, 1, QTableWidgetItem(str(hmb.drawing_uid)))
1159 1056
                self.tableWidgetHMB.setItem(rowIndex, 2, QTableWidgetItem(str(hmb.stream_no)))
1057

  
1160 1058
                rowIndex += 1
1161 1059
            
1162 1060
        
......
1519 1417
                size = [symbol.getWidth(), symbol.getHeight()]
1520 1418
                name = symbol.getName()
1521 1419
                angle = round(math.radians(symbol.getRotatedAngle()), 2)
1420
                category = symbol.getCategory()
1522 1421
                _type = symbol.getType()
1523 1422
                flip = symbol.getDetectFlip()
1524 1423
                origin = [0,0]
......
1537 1436
                childSymbol = symbol.getAdditionalSymbol()
1538 1437
                hasInstrumentLabel = symbol.getHasInstrumentLabel()
1539 1438

  
1540
                svgFilePath = os.path.join(project.getSvgFilePath(), _type, name + '.svg')
1439
                svgFilePath = os.path.join(project.getSvgFilePath(), category, _type, name + '.svg')
1541 1440
                if os.path.isfile(svgFilePath):
1542 1441
                    svg = SymbolSvgItem.createItem(_type, svgFilePath, owner=None, flip=flip)
1543 1442
                    #print(pt)
......
1933 1832
        return (True, mergedOtherLine)
1934 1833

  
1935 1834
    '''
1936
        @brief      load recognition result
1937
        @author     humkyung
1938
        @date       2018.04.??
1939
        @history    humkyung 2018.01.12 parse originalpoint and connectionpoint
1940
                    Jeongwoo 2018.04.17 add QGraphicItem with Rotated text
1941
                    Jeongwoo 2018.04.23 Change to Draw texts on QEngineeringTextItem
1942
                    humkyung 2018.04.23 connect item remove slot to result tree
1943
                    Jeongwoo 2018.04.25 Add if state with QEngineeringNoteItem
1944
                    Jeongwoo 2018.04.26 Change method to create TextItem object with TextItemFactory
1945
                    Jeongwoo 2018.05.03 Change method to draw Svg Item on Scene (svg.addSvgItemToScene)
1946
                    Jeongwoo 2018.05.29 Change method name / Change method to add item / Add Line item
1947
                    Jeongwoo 2018.05.30 Add parameters on SymbolSvgItem.__init__() (parentSymbol, childSymbol) / Change method name / Change XML NODE NAMES
1948
                    Jeongwoo 2018.06.12 Add LineNoTextItem from LINE_NO
1949
                    Jeongwoo 2018.06.14 Add UnknownItem from UNKNOWN
1950
                    Jeongwoo 2018.06.18 Update Scene after all item added
1951
                                        Add connect on unknown item
1952
                                        Add [transfer] for using pyqtSignal
1953
                    kyouho  2018.07.12  Add line property logic
1954
                    humkyung 2018.08.22 show progress while loading xml file
1955
                    2018.11.22      euisung     fix note road
1956
    '''
1957
    def loadRecognitionResultFromXml(self, xmlPath):
1958
        docData = AppDocData.instance()
1959
        from xml.etree.ElementTree import Element, SubElement, dump, ElementTree, parse
1960
        from EngineeringRunItem import QEngineeringRunItem
1961
        from QEngineeringTrimLineNoTextItem import QEngineeringTrimLineNoTextItem
1835
        @brief      load components
1836
        @author     yeonjin
1837
        @date       2019.07.30
1838
    '''  
1839
    def load_components(self, componentsUID):
1840
        from EngineeringStreamlineItem import QEngineeringStreamlineItem
1841
        from EngineeringConnectorItem import QEngineeringConnectorItem 
1962 1842

  
1963 1843
        try:
1964
            #self.graphicsView.scene.blockSignals(True)
1965

  
1966 1844
            symbols = []
1967 1845
            lines = []
1968 1846

  
1969
            xml = parse(xmlPath)
1970
            root = xml.getroot()
1971
            
1972
            maxValue = 0
1973
            maxValue = maxValue + len(list(root.iter('SYMBOL')))
1974
            maxValue = maxValue + len(list(root.iter('ATTRIBUTE')))
1975
            maxValue = maxValue + len(list(root.iter('LINE_NO')))
1976
            maxValue = maxValue + len(list(root.iter('LINE')))
1977
            maxValue = maxValue + len(list(root.iter('UNKNOWN')))
1978
            maxValue = maxValue + len(list(root.iter('SIZETEXT')))
1979
            maxValue = maxValue + len(list(root.iter('TRIM_LINE_NO')))
1980
            self.progress.setMaximum(maxValue)
1981

  
1982
            """ parsing all symbols """
1983
            for symbol in root.find('SYMBOLS').iter('SYMBOL'):
1984
                item = SymbolSvgItem.fromXml(symbol)
1985
                if item is not None:
1986
                    item.transfer.onRemoved.connect(self.itemRemoved)
1987
                    symbols.append(item)
1988
                    docData.symbols.append(item)
1989
                    self.addSvgItemToScene(item)
1990
                else:
1991
                    pt = [float(x) for x in symbol.find('LOCATION').text.split(',')]
1992
                    size = [float(x) for x in symbol.find('SIZE').text.split(',')]
1993
                    angle = float(symbol.find('ANGLE').text)
1994
                    item = QGraphicsBoundingBoxItem(pt[0], pt[1], size[0], size[1])
1995
                    item.isSymbol = True
1996
                    item.angle = angle
1997
                    item.setPen(QPen(Qt.red, 5, Qt.SolidLine))
1998
                    self.graphicsView.scene.addItem(item)
1999

  
2000
                self.progress.setValue(self.progress.value() + 1)
2001
                
2002
            QApplication.processEvents()
2003

  
2004
            # parse texts
2005
            for text in root.find('TEXTINFOS').iter('ATTRIBUTE'):
2006
                item = QEngineeringTextItem.fromXml(text)
2007
                if item is not None:
2008
                    uid = text.find('UID')
2009
                    attributeValue = text.find('ATTRIBUTEVALUE')
2010
                    name = text.find('NAME').text
2011
                    item.transfer.onRemoved.connect(self.itemRemoved)
2012
                    self.addTextItemToScene(item)
2013
                    #docData.texts.append(item)
2014

  
2015
                    if name == 'TEXT':
2016
                        if uid is not None and attributeValue is not None:
2017
                            item.uid = uid.text
2018
                            item.attribute = attributeValue.text
2019

  
2020
                self.progress.setValue(self.progress.value() + 1)
2021
                
2022
            QApplication.processEvents()
2023

  
2024
            # note
2025
            for text in root.find('NOTES').iter('ATTRIBUTE'):
2026
                item = QEngineeringTextItem.fromXml(text)
2027
                if item is not None:
2028
                    uid = text.find('UID')
2029
                    attributeValue = text.find('ATTRIBUTEVALUE')
2030
                    name = text.find('NAME').text
2031
                    item.transfer.onRemoved.connect(self.itemRemoved)
2032
                    self.addTextItemToScene(item)
2033

  
2034
                    if name == 'NOTE':
2035
                        if uid is not None:
2036
                            item.uid = uid.text
2037

  
2038
                self.progress.setValue(self.progress.value() + 1)
2039
                
2040
            QApplication.processEvents()
2041

  
2042
            for line in root.find('LINEINFOS').iter('LINE'):
2043
                item = QEngineeringLineItem.fromXml(line)
2044
                if item:
2045
                    item.transfer.onRemoved.connect(self.itemRemoved)
2046
                    self.graphicsView.scene.addItem(item)
2047
                    lines.append(item)
2048

  
2049
                self.progress.setValue(self.progress.value() + 1)
2050
                
2051
            QApplication.processEvents()
2052

  
2053
            for unknown in root.iter('UNKNOWN'):
2054
                item = QEngineeringUnknownItem.fromXml(unknown)
2055
                item.transfer.onRemoved.connect(self.itemRemoved)
2056
                if item is not None:
2057
                    item.transfer.onRemoved.connect(self.itemRemoved)
2058
                    self.graphicsView.scene.addItem(item)
2059

  
2060
                self.progress.setValue(self.progress.value() + 1)
2061
                
2062
            QApplication.processEvents()
2063

  
2064
            #""" add tree widget """
2065
            #for item in symbols:
2066
            #    docData.symbols.append(item)
2067
            #    self.addSvgItemToScene(item)
2068
            #    self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, item)
2069

  
2070
            for line_no_node in root.find('LINENOS').iter('LINE_NO'):
2071
                line_no = QEngineeringLineNoTextItem.fromXml(line_no_node)
2072
                if line_no is None: continue
2073

  
2074
                line_no.transfer.onRemoved.connect(self.itemRemoved)
2075
                self.addTextItemToScene(line_no)
2076
                line_no_tree_item = self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, line_no)
2077

  
2078
                runs_node = line_no_node.findall('RUN')
2079
                if runs_node is None: continue
2080

  
2081
                for run_node in runs_node:
2082
                    line_run = QEngineeringRunItem()
2083
                    for child_node in run_node:
2084
                        uidElement = child_node.find('UID')
2085
                        if uidElement is not None:
2086
                            uid = uidElement.text
2087
                            run_item = self.graphicsView.findItemByUid(uid)
2088
                            if run_item is not None:
2089
                                run_item._owner = line_no
2090
                                line_run.items.append(run_item)
2091
                    line_run.owner = line_no
2092
                    line_no.runs.append(line_run)
2093

  
2094
                    for run_item in line_run.items:
2095
                        if issubclass(type(run_item), SymbolSvgItem): self.itemTreeWidget.addTreeItem(line_no_tree_item, run_item)
2096

  
2097
                #docData.tracerLineNos.append(line_no)
2098

  
2099
                self.progress.setValue(self.progress.value() + 1)
2100
            QApplication.processEvents()
2101

  
2102
            for trimLineNo in root.iter('TRIM_LINE_NO'):
2103
                line_no = QEngineeringTrimLineNoTextItem()
2104
                line_no.uid = uuid.UUID(trimLineNo.find('UID').text, version=4)
2105

  
2106
                run = trimLineNo.find('RUN')
2107
                if run is not None:
2108
                    line_run = QEngineeringRunItem()
2109
                    for child in run:
2110
                        uidElement = child.find('UID')
2111
                        if uidElement is not None:
2112
                            uid = uidElement.text
2113
                            run_item = self.graphicsView.findItemByUid(uid)
2114
                            if run_item is not None:
2115
                                run_item.owner = line_no
2116
                                line_run.items.append(run_item)
2117
                    line_no.runs.append(line_run)
2118
                    line_no_tree_item = self.itemTreeWidget.addTreeItem(self.itemTreeWidget.root, line_no)
2119
                    
2120
                    for run_item in line_run.items:
2121
                        if issubclass(type(run_item), SymbolSvgItem): self.itemTreeWidget.addTreeItem(line_no_tree_item, run_item)
2122

  
2123
                    docData.tracerLineNos.append(line_no)
2124

  
2125
                self.progress.setValue(self.progress.value() + 1)
1847
            appDocData = AppDocData.instance()
1848
            project = appDocData.getCurrentProject()
2126 1849

  
2127
            if root.find('VENDORS') is not None:
2128
                for vendor in root.find('VENDORS').iter('VENDOR'):
2129
                    item = QEngineeringVendorItem.fromXml(vendor)
2130
                    item.transfer.onRemoved.connect(self.itemRemoved)
2131
                    self.graphicsView.scene.addItem(item)
2132
            
1850
            for componentUID in componentsUID:
1851
                componentInfos = appDocData.getComponentByComponentUID(componentUID)
1852
                if (len(componentInfos)) > 0:                    
1853
                    category = componentInfos[0][3]
1854
                    if category == 'Stream Line':
1855
                        item = QEngineeringStreamlineItem.fromDatabase(componentInfos)     
1856
                        if item is not None:
1857
                            item.transfer.onRemoved.connect(self.itemRemoved)
1858
                            self.graphicsView.scene.addItem(item)                   
1859
                    else:
1860
                        item = SymbolSvgItem.fromDatabase(componentInfos)
1861
                        if item is not None:
1862
                            item.transfer.onRemoved.connect(self.itemRemoved)
1863
                            symbols.append(item)
1864
                            appDocData.symbols.append(item)
1865
                            self.addSvgItemToScene(item)
2133 1866

  
2134
            """ update scene """
1867
            # """ update scene """
2135 1868
            self.graphicsView.scene.update(self.graphicsView.sceneRect())
2136 1869
            for item in self.graphicsView.scene.items():
2137 1870
                item.setVisible(True)
2138

  
2139
            
2140

  
1871
                
2141 1872
        except Exception as ex:
2142 1873
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
2143 1874
            self.addMessage.emit(MessageType.Error, message)
2144 1875
        finally:
2145 1876
            pass
2146
            #self.graphicsView.scene.blockSignals(False)
2147

  
1877
    
2148 1878
    '''
2149 1879
        @brief      Remove added item on same place and Add GraphicsItem
2150 1880
        @author     Jeongwoo
HYTOS/HYTOS/MainWindow_UI.py
40 40
        self.menuTheme.setObjectName("menuTheme")
41 41
        self.menuLanguage = QtWidgets.QMenu(self.menu)
42 42
        self.menuLanguage.setObjectName("menuLanguage")
43
        self.menu_2 = QtWidgets.QMenu(self.menubar)
44
        self.menu_2.setObjectName("menu_2")
45 43
        self.menu_3 = QtWidgets.QMenu(self.menubar)
46 44
        self.menu_3.setObjectName("menu_3")
47
        self.menu_4 = QtWidgets.QMenu(self.menubar)
48
        self.menu_4.setObjectName("menu_4")
49
        self.menu_5 = QtWidgets.QMenu(self.menubar)
50
        self.menu_5.setObjectName("menu_5")
45
        self.menuTool = QtWidgets.QMenu(self.menubar)
46
        self.menuTool.setObjectName("menuTool")
51 47
        MainWindow.setMenuBar(self.menubar)
52 48
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
53 49
        self.statusbar.setObjectName("statusbar")
......
84 80
        self.gridLayout_4.addLayout(self.verticalLayoutDrawingList, 0, 0, 1, 1)
85 81
        self.dockWidgetDrawingExplorer.setWidget(self.dockWidgetContents_2)
86 82
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidgetDrawingExplorer)
87
        self.EditToolbar = QtWidgets.QToolBar(MainWindow)
88
        self.EditToolbar.setEnabled(True)
89
        self.EditToolbar.setIconSize(QtCore.QSize(32, 32))
90
        self.EditToolbar.setObjectName("EditToolbar")
91
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.EditToolbar)
92
        self.dockWidgetOutputWnd = QtWidgets.QDockWidget(MainWindow)
93
        self.dockWidgetOutputWnd.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures)
94
        self.dockWidgetOutputWnd.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas)
95
        self.dockWidgetOutputWnd.setObjectName("dockWidgetOutputWnd")
83
        self.dockWidgetHMBList = QtWidgets.QDockWidget(MainWindow)
84
        self.dockWidgetHMBList.setFeatures(QtWidgets.QDockWidget.AllDockWidgetFeatures)
85
        self.dockWidgetHMBList.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas)
86
        self.dockWidgetHMBList.setObjectName("dockWidgetHMBList")
96 87
        self.dockWidgetContents_3 = QtWidgets.QWidget()
97 88
        self.dockWidgetContents_3.setObjectName("dockWidgetContents_3")
98 89
        self.gridLayout_5 = QtWidgets.QGridLayout(self.dockWidgetContents_3)
......
105 96
        self.tableWidgetHMB.setRowCount(0)
106 97
        self.horizontalLayout.addWidget(self.tableWidgetHMB)
107 98
        self.gridLayout_5.addLayout(self.horizontalLayout, 0, 0, 1, 1)
108
        self.dockWidgetOutputWnd.setWidget(self.dockWidgetContents_3)
109
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.dockWidgetOutputWnd)
99
        self.dockWidgetHMBList.setWidget(self.dockWidgetContents_3)
100
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(8), self.dockWidgetHMBList)
110 101
        self.toolBar = QtWidgets.QToolBar(MainWindow)
111 102
        font = QtGui.QFont()
112 103
        font.setFamily("맑은 고딕")
......
146 137
        self.actionLine.setIcon(icon2)
147 138
        font = QtGui.QFont()
148 139
        font.setFamily("맑은 고딕")
149
        font.setBold(True)
150
        font.setWeight(75)
140
        font.setBold(False)
141
        font.setWeight(50)
151 142
        self.actionLine.setFont(font)
152 143
        self.actionLine.setObjectName("actionLine")
153 144
        self.actionValidate = QtWidgets.QAction(MainWindow)
......
318 309
        icon12 = QtGui.QIcon()
319 310
        icon12.addPixmap(QtGui.QPixmap(":/newPrefix/save.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
320 311
        self.actionSave.setIcon(icon12)
312
        font = QtGui.QFont()
313
        font.setFamily("맑은 고딕")
314
        self.actionSave.setFont(font)
321 315
        self.actionSave.setObjectName("actionSave")
322 316
        self.actionRotate = QtWidgets.QAction(MainWindow)
323 317
        icon13 = QtGui.QIcon()
......
370 364
        self.actionNew.setObjectName("actionNew")
371 365
        self.actionCreate_Symbol = QtWidgets.QAction(MainWindow)
372 366
        self.actionCreate_Symbol.setObjectName("actionCreate_Symbol")
367
        self.actionCreate_Stream = QtWidgets.QAction(MainWindow)
368
        self.actionCreate_Stream.setObjectName("actionCreate_Stream")
373 369
        self.menu.addAction(self.actionNew)
374 370
        self.menu.addAction(self.actionSave)
375 371
        self.menu.addAction(self.actionConfiguration)
......
378 374
        self.menu.addAction(self.menuLanguage.menuAction())
379 375
        self.menu.addSeparator()
380 376
        self.menu.addAction(self.actionClose)
381
        self.menu_3.addAction(self.actionImage_Drawing)
382
        self.menu_3.addAction(self.actionViewText)
383
        self.menu_3.addAction(self.actionViewSymbol)
384
        self.menu_3.addAction(self.actionViewLine)
385
        self.menu_3.addSeparator()
386
        self.menu_3.addAction(self.actionViewUnknown)
387
        self.menu_3.addAction(self.actionViewInconsistency)
388
        self.menu_3.addAction(self.actionViewVendor_Area)
389
        self.menu_3.addSeparator()
390
        self.menu_3.addAction(self.actionDrawing_Only)
391
        self.menu_4.addAction(self.actionCreate_Symbol)
377
        self.menu_3.addAction(self.actionZoom)
378
        self.menu_3.addAction(self.actionFitWindow)
379
        self.menuTool.addAction(self.actionLine)
380
        self.menuTool.addAction(self.actionInitialize)
392 381
        self.menubar.addAction(self.menu.menuAction())
393
        self.menubar.addAction(self.menu_5.menuAction())
394
        self.menubar.addAction(self.menu_2.menuAction())
395 382
        self.menubar.addAction(self.menu_3.menuAction())
396
        self.menubar.addAction(self.menu_4.menuAction())
397
        self.EditToolbar.addAction(self.actionRotate)
398
        self.EditToolbar.addAction(self.actionZoom)
399
        self.EditToolbar.addAction(self.actionFitWindow)
400
        self.EditToolbar.addSeparator()
383
        self.menubar.addAction(self.menuTool.menuAction())
401 384
        self.toolBar.addAction(self.actionNew)
402 385
        self.toolBar.addAction(self.actionSave)
403 386
        self.toolBar.addSeparator()
404
        self.toolBar.addAction(self.actionInitialize)
405 387
        self.toolBar.addAction(self.actionLine)
388
        self.toolBar.addSeparator()
389
        self.toolBar.addAction(self.actionInitialize)
390
        self.toolBar.addAction(self.actionZoom)
391
        self.toolBar.addAction(self.actionFitWindow)
406 392

  
407 393
        self.retranslateUi(MainWindow)
408 394
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
......
413 399
        self.menu.setTitle(_translate("MainWindow", "File"))
414 400
        self.menuTheme.setTitle(_translate("MainWindow", "Theme"))
415 401
        self.menuLanguage.setTitle(_translate("MainWindow", "Language"))
416
        self.menu_2.setTitle(_translate("MainWindow", "Data"))
417 402
        self.menu_3.setTitle(_translate("MainWindow", "View"))
418
        self.menu_4.setTitle(_translate("MainWindow", "Tool"))
419
        self.menu_5.setTitle(_translate("MainWindow", "Edit"))
403
        self.menuTool.setTitle(_translate("MainWindow", "Tools"))
420 404
        self.dockWidgetSymbolExplorer.setWindowTitle(_translate("MainWindow", "Symbol Explorer"))
421 405
        self.dockWidgetDrawingExplorer.setWindowTitle(_translate("MainWindow", "Drawing Explorer"))
422 406
        self.treeWidgetDrawingList.setSortingEnabled(True)
423
        self.EditToolbar.setWindowTitle(_translate("MainWindow", "Edit Toolbar"))
424
        self.dockWidgetOutputWnd.setWindowTitle(_translate("MainWindow", "Stream No. List"))
407
        self.dockWidgetHMBList.setWindowTitle(_translate("MainWindow", "HMB List"))
425 408
        self.toolBar.setWindowTitle(_translate("MainWindow", "Main Toolbar"))
426 409
        self.actionOpen.setText(_translate("MainWindow", "Open"))
427 410
        self.actionOpen.setToolTip(_translate("MainWindow", "Open(Ctrl + O)"))
......
429 412
        self.actionClose.setText(_translate("MainWindow", "Exit"))
430 413
        self.actionRecognition.setText(_translate("MainWindow", "Recognize Eng. Info."))
431 414
        self.actionRecognition.setToolTip(_translate("MainWindow", "Recognize Eng. Info."))
432
        self.actionLine.setText(_translate("MainWindow", "Create Stream Line"))
433
        self.actionLine.setToolTip(_translate("MainWindow", "Create Stream Line(L)"))
415
        self.actionLine.setText(_translate("MainWindow", "Stream Line"))
416
        self.actionLine.setToolTip(_translate("MainWindow", "Stream Line(L)"))
434 417
        self.actionLine.setShortcut(_translate("MainWindow", "L"))
435 418
        self.actionValidate.setText(_translate("MainWindow", "Validate"))
436 419
        self.actionValidate.setToolTip(_translate("MainWindow", "Validate(V)"))
......
446 429
        self.actionEquipment_Data_List.setText(_translate("MainWindow", "Equipment Data List"))
447 430
        self.actionItem_Data_List.setText(_translate("MainWindow", "Engineering Info. List"))
448 431
        self.actionInstrument_Data_List.setText(_translate("MainWindow", "Instrument Data List"))
449
        self.actionInitialize.setText(_translate("MainWindow", "Initialize"))
432
        self.actionInitialize.setText(_translate("MainWindow", "Clear Screen"))
433
        self.actionInitialize.setToolTip(_translate("MainWindow", "Clear Screen (Ctrl + Del)"))
434
        self.actionInitialize.setShortcut(_translate("MainWindow", "Ctrl+Del"))
450 435
        self.actionImage_Drawing.setText(_translate("MainWindow", "Image Drawing (1)"))
451 436
        self.actionZoom.setText(_translate("MainWindow", "Zoom"))
452 437
        self.actionZoom.setToolTip(_translate("MainWindow", "Zoom(Z)"))
453 438
        self.actionZoom.setShortcut(_translate("MainWindow", "Z"))
454
        self.actionFitWindow.setText(_translate("MainWindow", "FitWindow"))
439
        self.actionFitWindow.setText(_translate("MainWindow", "Fit Window"))
440
        self.actionFitWindow.setToolTip(_translate("MainWindow", "Fit Window"))
455 441
        self.actionViewSymbol.setText(_translate("MainWindow", "Symbol (3)"))
456 442
        self.actionViewText.setText(_translate("MainWindow", "Text (2)"))
457 443
        self.actionViewLine.setText(_translate("MainWindow", "Line (4)"))
......
483 469
        self.actionNew.setToolTip(_translate("MainWindow", "New(Ctrl + N)"))
484 470
        self.actionNew.setShortcut(_translate("MainWindow", "Ctrl+N"))
485 471
        self.actionCreate_Symbol.setText(_translate("MainWindow", "Symbol Editor"))
472
        self.actionCreate_Stream.setText(_translate("MainWindow", "Create Stream"))
486 473

  
487 474
import MainWindow_rc
HYTOS/HYTOS/MainWindow_rc.py
9 9
from PyQt5 import QtCore
10 10

  
11 11
qt_resource_data = b"\
12
\x00\x00\x0f\x6a\
12
\x00\x00\x03\x32\
13 13
\x89\
14 14
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
15
\x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\
15
\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
16 16
\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
17
\x01\x00\x9a\x9c\x18\x00\x00\x0a\x4d\x69\x43\x43\x50\x50\x68\x6f\
18
\x74\x6f\x73\x68\x6f\x70\x20\x49\x43\x43\x20\x70\x72\x6f\x66\x69\
19
\x6c\x65\x00\x00\x78\xda\x9d\x53\x77\x58\x93\xf7\x16\x3e\xdf\xf7\
20
\x65\x0f\x56\x42\xd8\xf0\xb1\x97\x6c\x81\x00\x22\x23\xac\x08\xc8\
21
\x10\x59\xa2\x10\x92\x00\x61\x84\x10\x12\x40\xc5\x85\x88\x0a\x56\
22
\x14\x15\x11\x9c\x48\x55\xc4\x82\xd5\x0a\x48\x9d\x88\xe2\xa0\x28\
23
\xb8\x67\x41\x8a\x88\x5a\x8b\x55\x5c\x38\xee\x1f\xdc\xa7\xb5\x7d\
24
\x7a\xef\xed\xed\xfb\xd7\xfb\xbc\xe7\x9c\xe7\xfc\xce\x79\xcf\x0f\
25
\x80\x11\x12\x26\x91\xe6\xa2\x6a\x00\x39\x52\x85\x3c\x3a\xd8\x1f\
26
\x8f\x4f\x48\xc4\xc9\xbd\x80\x02\x15\x48\xe0\x04\x20\x10\xe6\xcb\
27
\xc2\x67\x05\xc5\x00\x00\xf0\x03\x79\x78\x7e\x74\xb0\x3f\xfc\x01\
28
\xaf\x6f\x00\x02\x00\x70\xd5\x2e\x24\x12\xc7\xe1\xff\x83\xba\x50\
29
\x26\x57\x00\x20\x91\x00\xe0\x22\x12\xe7\x0b\x01\x90\x52\x00\xc8\
30
\x2e\x54\xc8\x14\x00\xc8\x18\x00\xb0\x53\xb3\x64\x0a\x00\x94\x00\
31
\x00\x6c\x79\x7c\x42\x22\x00\xaa\x0d\x00\xec\xf4\x49\x3e\x05\x00\
32
\xd8\xa9\x93\xdc\x17\x00\xd8\xa2\x1c\xa9\x08\x00\x8d\x01\x00\x99\
33
\x28\x47\x24\x02\x40\xbb\x00\x60\x55\x81\x52\x2c\x02\xc0\xc2\x00\
34
\xa0\xac\x40\x22\x2e\x04\xc0\xae\x01\x80\x59\xb6\x32\x47\x02\x80\
35
\xbd\x05\x00\x76\x8e\x58\x90\x0f\x40\x60\x00\x80\x99\x42\x2c\xcc\
36
\x00\x20\x38\x02\x00\x43\x1e\x13\xcd\x03\x20\x4c\x03\xa0\x30\xd2\
37
\xbf\xe0\xa9\x5f\x70\x85\xb8\x48\x01\x00\xc0\xcb\x95\xcd\x97\x4b\
38
\xd2\x33\x14\xb8\x95\xd0\x1a\x77\xf2\xf0\xe0\xe2\x21\xe2\xc2\x6c\
39
\xb1\x42\x61\x17\x29\x10\x66\x09\xe4\x22\x9c\x97\x9b\x23\x13\x48\
40
\xe7\x03\x4c\xce\x0c\x00\x00\x1a\xf9\xd1\xc1\xfe\x38\x3f\x90\xe7\
41
\xe6\xe4\xe1\xe6\x66\xe7\x6c\xef\xf4\xc5\xa2\xfe\x6b\xf0\x6f\x22\
42
\x3e\x21\xf1\xdf\xfe\xbc\x8c\x02\x04\x00\x10\x4e\xcf\xef\xda\x5f\
43
\xe5\xe5\xd6\x03\x70\xc7\x01\xb0\x75\xbf\x6b\xa9\x5b\x00\xda\x56\
44
\x00\x68\xdf\xf9\x5d\x33\xdb\x09\xa0\x5a\x0a\xd0\x7a\xf9\x8b\x79\
45
\x38\xfc\x40\x1e\x9e\xa1\x50\xc8\x3c\x1d\x1c\x0a\x0b\x0b\xed\x25\
46
\x62\xa1\xbd\x30\xe3\x8b\x3e\xff\x33\xe1\x6f\xe0\x8b\x7e\xf6\xfc\
47
\x40\x1e\xfe\xdb\x7a\xf0\x00\x71\x9a\x40\x99\xad\xc0\xa3\x83\xfd\
48
\x71\x61\x6e\x76\xae\x52\x8e\xe7\xcb\x04\x42\x31\x6e\xf7\xe7\x23\
49
\xfe\xc7\x85\x7f\xfd\x8e\x29\xd1\xe2\x34\xb1\x5c\x2c\x15\x8a\xf1\
50
\x58\x89\xb8\x50\x22\x4d\xc7\x79\xb9\x52\x91\x44\x21\xc9\x95\xe2\
51
\x12\xe9\x7f\x32\xf1\x1f\x96\xfd\x09\x93\x77\x0d\x00\xac\x86\x4f\
52
\xc0\x4e\xb6\x07\xb5\xcb\x6c\xc0\x7e\xee\x01\x02\x8b\x0e\x58\xd2\
53
\x76\x00\x40\x7e\xf3\x2d\x8c\x1a\x0b\x91\x00\x10\x67\x34\x32\x79\
54
\xf7\x00\x00\x93\xbf\xf9\x8f\x40\x2b\x01\x00\xcd\x97\xa4\xe3\x00\
55
\x00\xbc\xe8\x18\x5c\xa8\x94\x17\x4c\xc6\x08\x00\x00\x44\xa0\x81\
56
\x2a\xb0\x41\x07\x0c\xc1\x14\xac\xc0\x0e\x9c\xc1\x1d\xbc\xc0\x17\
57
\x02\x61\x06\x44\x40\x0c\x24\xc0\x3c\x10\x42\x06\xe4\x80\x1c\x0a\
58
\xa1\x18\x96\x41\x19\x54\xc0\x3a\xd8\x04\xb5\xb0\x03\x1a\xa0\x11\
59
\x9a\xe1\x10\xb4\xc1\x31\x38\x0d\xe7\xe0\x12\x5c\x81\xeb\x70\x17\
60
\x06\x60\x18\x9e\xc2\x18\xbc\x86\x09\x04\x41\xc8\x08\x13\x61\x21\
61
\x3a\x88\x11\x62\x8e\xd8\x22\xce\x08\x17\x99\x8e\x04\x22\x61\x48\
62
\x34\x92\x80\xa4\x20\xe9\x88\x14\x51\x22\xc5\xc8\x72\xa4\x02\xa9\
63
\x42\x6a\x91\x5d\x48\x23\xf2\x2d\x72\x14\x39\x8d\x5c\x40\xfa\x90\
64
\xdb\xc8\x20\x32\x8a\xfc\x8a\xbc\x47\x31\x94\x81\xb2\x51\x03\xd4\
65
\x02\x75\x40\xb9\xa8\x1f\x1a\x8a\xc6\xa0\x73\xd1\x74\x34\x0f\x5d\
66
\x80\x96\xa2\x6b\xd1\x1a\xb4\x1e\x3d\x80\xb6\xa2\xa7\xd1\x4b\xe8\
67
\x75\x74\x00\x7d\x8a\x8e\x63\x80\xd1\x31\x0e\x66\x8c\xd9\x61\x5c\
68
\x8c\x87\x45\x60\x89\x58\x1a\x26\xc7\x16\x63\xe5\x58\x35\x56\x8f\
69
\x35\x63\x1d\x58\x37\x76\x15\x1b\xc0\x9e\x61\xef\x08\x24\x02\x8b\
70
\x80\x13\xec\x08\x5e\x84\x10\xc2\x6c\x82\x90\x90\x47\x58\x4c\x58\
71
\x43\xa8\x25\xec\x23\xb4\x12\xba\x08\x57\x09\x83\x84\x31\xc2\x27\
72
\x22\x93\xa8\x4f\xb4\x25\x7a\x12\xf9\xc4\x78\x62\x3a\xb1\x90\x58\
73
\x46\xac\x26\xee\x21\x1e\x21\x9e\x25\x5e\x27\x0e\x13\x5f\x93\x48\
74
\x24\x0e\xc9\x92\xe4\x4e\x0a\x21\x25\x90\x32\x49\x0b\x49\x6b\x48\
75
\xdb\x48\x2d\xa4\x53\xa4\x3e\xd2\x10\x69\x9c\x4c\x26\xeb\x90\x6d\
76
\xc9\xde\xe4\x08\xb2\x80\xac\x20\x97\x91\xb7\x90\x0f\x90\x4f\x92\
77
\xfb\xc9\xc3\xe4\xb7\x14\x3a\xc5\x88\xe2\x4c\x09\xa2\x24\x52\xa4\
78
\x94\x12\x4a\x35\x65\x3f\xe5\x04\xa5\x9f\x32\x42\x99\xa0\xaa\x51\
79
\xcd\xa9\x9e\xd4\x08\xaa\x88\x3a\x9f\x5a\x49\x6d\xa0\x76\x50\x2f\
80
\x53\x87\xa9\x13\x34\x75\x9a\x25\xcd\x9b\x16\x43\xcb\xa4\x2d\xa3\
81
\xd5\xd0\x9a\x69\x67\x69\xf7\x68\x2f\xe9\x74\xba\x09\xdd\x83\x1e\
82
\x45\x97\xd0\x97\xd2\x6b\xe8\x07\xe9\xe7\xe9\x83\xf4\x77\x0c\x0d\
83
\x86\x0d\x83\xc7\x48\x62\x28\x19\x6b\x19\x7b\x19\xa7\x18\xb7\x19\
84
\x2f\x99\x4c\xa6\x05\xd3\x97\x99\xc8\x54\x30\xd7\x32\x1b\x99\x67\
85
\x98\x0f\x98\x6f\x55\x58\x2a\xf6\x2a\x7c\x15\x91\xca\x12\x95\x3a\
86
\x95\x56\x95\x7e\x95\xe7\xaa\x54\x55\x73\x55\x3f\xd5\x79\xaa\x0b\
87
\x54\xab\x55\x0f\xab\x5e\x56\x7d\xa6\x46\x55\xb3\x50\xe3\xa9\x09\
88
\xd4\x16\xab\xd5\xa9\x1d\x55\xbb\xa9\x36\xae\xce\x52\x77\x52\x8f\
89
\x50\xcf\x51\x5f\xa3\xbe\x5f\xfd\x82\xfa\x63\x0d\xb2\x86\x85\x46\
90
\xa0\x86\x48\xa3\x54\x63\xb7\xc6\x19\x8d\x21\x16\xc6\x32\x65\xf1\
91
\x58\x42\xd6\x72\x56\x03\xeb\x2c\x6b\x98\x4d\x62\x5b\xb2\xf9\xec\
92
\x4c\x76\x05\xfb\x1b\x76\x2f\x7b\x4c\x53\x43\x73\xaa\x66\xac\x66\
93
\x91\x66\x9d\xe6\x71\xcd\x01\x0e\xc6\xb1\xe0\xf0\x39\xd9\x9c\x4a\
94
\xce\x21\xce\x0d\xce\x7b\x2d\x03\x2d\x3f\x2d\xb1\xd6\x6a\xad\x66\
95
\xad\x7e\xad\x37\xda\x7a\xda\xbe\xda\x62\xed\x72\xed\x16\xed\xeb\
96
\xda\xef\x75\x70\x9d\x40\x9d\x2c\x9d\xf5\x3a\x6d\x3a\xf7\x75\x09\
97
\xba\x36\xba\x51\xba\x85\xba\xdb\x75\xcf\xea\x3e\xd3\x63\xeb\x79\
98
\xe9\x09\xf5\xca\xf5\x0e\xe9\xdd\xd1\x47\xf5\x6d\xf4\xa3\xf5\x17\
99
\xea\xef\xd6\xef\xd1\x1f\x37\x30\x34\x08\x36\x90\x19\x6c\x31\x38\
100
\x63\xf0\xcc\x90\x63\xe8\x6b\x98\x69\xb8\xd1\xf0\x84\xe1\xa8\x11\
101
\xcb\x68\xba\x91\xc4\x68\xa3\xd1\x49\xa3\x27\xb8\x26\xee\x87\x67\
102
\xe3\x35\x78\x17\x3e\x66\xac\x6f\x1c\x62\xac\x34\xde\x65\xdc\x6b\
103
\x3c\x61\x62\x69\x32\xdb\xa4\xc4\xa4\xc5\xe4\xbe\x29\xcd\x94\x6b\
104
\x9a\x66\xba\xd1\xb4\xd3\x74\xcc\xcc\xc8\x2c\xdc\xac\xd8\xac\xc9\
105
\xec\x8e\x39\xd5\x9c\x6b\x9e\x61\xbe\xd9\xbc\xdb\xfc\x8d\x85\xa5\
106
\x45\x9c\xc5\x4a\x8b\x36\x8b\xc7\x96\xda\x96\x7c\xcb\x05\x96\x4d\
107
\x96\xf7\xac\x98\x56\x3e\x56\x79\x56\xf5\x56\xd7\xac\x49\xd6\x5c\
108
\xeb\x2c\xeb\x6d\xd6\x57\x6c\x50\x1b\x57\x9b\x0c\x9b\x3a\x9b\xcb\
109
\xb6\xa8\xad\x9b\xad\xc4\x76\x9b\x6d\xdf\x14\xe2\x14\x8f\x29\xd2\
110
\x29\xf5\x53\x6e\xda\x31\xec\xfc\xec\x0a\xec\x9a\xec\x06\xed\x39\
111
\xf6\x61\xf6\x25\xf6\x6d\xf6\xcf\x1d\xcc\x1c\x12\x1d\xd6\x3b\x74\
112
\x3b\x7c\x72\x74\x75\xcc\x76\x6c\x70\xbc\xeb\xa4\xe1\x34\xc3\xa9\
113
\xc4\xa9\xc3\xe9\x57\x67\x1b\x67\xa1\x73\x9d\xf3\x35\x17\xa6\x4b\
114
\x90\xcb\x12\x97\x76\x97\x17\x53\x6d\xa7\x8a\xa7\x6e\x9f\x7a\xcb\
115
\x95\xe5\x1a\xee\xba\xd2\xb5\xd3\xf5\xa3\x9b\xbb\x9b\xdc\xad\xd9\
116
\x6d\xd4\xdd\xcc\x3d\xc5\x7d\xab\xfb\x4d\x2e\x9b\x1b\xc9\x5d\xc3\
117
\x3d\xef\x41\xf4\xf0\xf7\x58\xe2\x71\xcc\xe3\x9d\xa7\x9b\xa7\xc2\
118
\xf3\x90\xe7\x2f\x5e\x76\x5e\x59\x5e\xfb\xbd\x1e\x4f\xb3\x9c\x26\
119
\x9e\xd6\x30\x6d\xc8\xdb\xc4\x5b\xe0\xbd\xcb\x7b\x60\x3a\x3e\x3d\
120
\x65\xfa\xce\xe9\x03\x3e\xc6\x3e\x02\x9f\x7a\x9f\x87\xbe\xa6\xbe\
121
\x22\xdf\x3d\xbe\x23\x7e\xd6\x7e\x99\x7e\x07\xfc\x9e\xfb\x3b\xfa\
122
\xcb\xfd\x8f\xf8\xbf\xe1\x79\xf2\x16\xf1\x4e\x05\x60\x01\xc1\x01\
123
\xe5\x01\xbd\x81\x1a\x81\xb3\x03\x6b\x03\x1f\x04\x99\x04\xa5\x07\
124
\x35\x05\x8d\x05\xbb\x06\x2f\x0c\x3e\x15\x42\x0c\x09\x0d\x59\x1f\
125
\x72\x93\x6f\xc0\x17\xf2\x1b\xf9\x63\x33\xdc\x67\x2c\x9a\xd1\x15\
126
\xca\x08\x9d\x15\x5a\x1b\xfa\x30\xcc\x26\x4c\x1e\xd6\x11\x8e\x86\
127
\xcf\x08\xdf\x10\x7e\x6f\xa6\xf9\x4c\xe9\xcc\xb6\x08\x88\xe0\x47\
128
\x6c\x88\xb8\x1f\x69\x19\x99\x17\xf9\x7d\x14\x29\x2a\x32\xaa\x2e\
129
\xea\x51\xb4\x53\x74\x71\x74\xf7\x2c\xd6\xac\xe4\x59\xfb\x67\xbd\
130
\x8e\xf1\x8f\xa9\x8c\xb9\x3b\xdb\x6a\xb6\x72\x76\x67\xac\x6a\x6c\
131
\x52\x6c\x63\xec\x9b\xb8\x80\xb8\xaa\xb8\x81\x78\x87\xf8\x45\xf1\
132
\x97\x12\x74\x13\x24\x09\xed\x89\xe4\xc4\xd8\xc4\x3d\x89\xe3\x73\
133
\x02\xe7\x6c\x9a\x33\x9c\xe4\x9a\x54\x96\x74\x63\xae\xe5\xdc\xa2\
134
\xb9\x17\xe6\xe9\xce\xcb\x9e\x77\x3c\x59\x35\x59\x90\x7c\x38\x85\
135
\x98\x12\x97\xb2\x3f\xe5\x83\x20\x42\x50\x2f\x18\x4f\xe5\xa7\x6e\
136
\x4d\x1d\x13\xf2\x84\x9b\x85\x4f\x45\xbe\xa2\x8d\xa2\x51\xb1\xb7\
137
\xb8\x4a\x3c\x92\xe6\x9d\x56\x95\xf6\x38\xdd\x3b\x7d\x43\xfa\x68\
138
\x86\x4f\x46\x75\xc6\x33\x09\x4f\x52\x2b\x79\x91\x19\x92\xb9\x23\
139
\xf3\x4d\x56\x44\xd6\xde\xac\xcf\xd9\x71\xd9\x2d\x39\x94\x9c\x94\
140
\x9c\xa3\x52\x0d\x69\x96\xb4\x2b\xd7\x30\xb7\x28\xb7\x4f\x66\x2b\
141
\x2b\x93\x0d\xe4\x79\xe6\x6d\xca\x1b\x93\x87\xca\xf7\xe4\x23\xf9\
142
\x73\xf3\xdb\x15\x6c\x85\x4c\xd1\xa3\xb4\x52\xae\x50\x0e\x16\x4c\
143
\x2f\xa8\x2b\x78\x5b\x18\x5b\x78\xb8\x48\xbd\x48\x5a\xd4\x33\xdf\
144
\x66\xfe\xea\xf9\x23\x0b\x82\x16\x7c\xbd\x90\xb0\x50\xb8\xb0\xb3\
145
\xd8\xb8\x78\x59\xf1\xe0\x22\xbf\x45\xbb\x16\x23\x8b\x53\x17\x77\
146
\x2e\x31\x5d\x52\xba\x64\x78\x69\xf0\xd2\x7d\xcb\x68\xcb\xb2\x96\
147
\xfd\x50\xe2\x58\x52\x55\xf2\x6a\x79\xdc\xf2\x8e\x52\x83\xd2\xa5\
148
\xa5\x43\x2b\x82\x57\x34\x95\xa9\x94\xc9\xcb\x6e\xae\xf4\x5a\xb9\
149
\x63\x15\x61\x95\x64\x55\xef\x6a\x97\xd5\x5b\x56\x7f\x2a\x17\x95\
150
\x5f\xac\x70\xac\xa8\xae\xf8\xb0\x46\xb8\xe6\xe2\x57\x4e\x5f\xd5\
151
\x7c\xf5\x79\x6d\xda\xda\xde\x4a\xb7\xca\xed\xeb\x48\xeb\xa4\xeb\
152
\x6e\xac\xf7\x59\xbf\xaf\x4a\xbd\x6a\x41\xd5\xd0\x86\xf0\x0d\xad\
153
\x1b\xf1\x8d\xe5\x1b\x5f\x6d\x4a\xde\x74\xa1\x7a\x6a\xf5\x8e\xcd\
154
\xb4\xcd\xca\xcd\x03\x35\x61\x35\xed\x5b\xcc\xb6\xac\xdb\xf2\xa1\
155
\x36\xa3\xf6\x7a\x9d\x7f\x5d\xcb\x56\xfd\xad\xab\xb7\xbe\xd9\x26\
156
\xda\xd6\xbf\xdd\x77\x7b\xf3\x0e\x83\x1d\x15\x3b\xde\xef\x94\xec\
157
\xbc\xb5\x2b\x78\x57\x6b\xbd\x45\x7d\xf5\x6e\xd2\xee\x82\xdd\x8f\
158
\x1a\x62\x1b\xba\xbf\xe6\x7e\xdd\xb8\x47\x77\x4f\xc5\x9e\x8f\x7b\
159
\xa5\x7b\x07\xf6\x45\xef\xeb\x6a\x74\x6f\x6c\xdc\xaf\xbf\xbf\xb2\
160
\x09\x6d\x52\x36\x8d\x1e\x48\x3a\x70\xe5\x9b\x80\x6f\xda\x9b\xed\
161
\x9a\x77\xb5\x70\x5a\x2a\x0e\xc2\x41\xe5\xc1\x27\xdf\xa6\x7c\x7b\
162
\xe3\x50\xe8\xa1\xce\xc3\xdc\xc3\xcd\xdf\x99\x7f\xb7\xf5\x08\xeb\
163
\x48\x79\x2b\xd2\x3a\xbf\x75\xac\x2d\xa3\x6d\xa0\x3d\xa1\xbd\xef\
164
\xe8\x8c\xa3\x9d\x1d\x5e\x1d\x47\xbe\xb7\xff\x7e\xef\x31\xe3\x63\
165
\x75\xc7\x35\x8f\x57\x9e\xa0\x9d\x28\x3d\xf1\xf9\xe4\x82\x93\xe3\
166
\xa7\x64\xa7\x9e\x9d\x4e\x3f\x3d\xd4\x99\xdc\x79\xf7\x4c\xfc\x99\
167
\x6b\x5d\x51\x5d\xbd\x67\x43\xcf\x9e\x3f\x17\x74\xee\x4c\xb7\x5f\
168
\xf7\xc9\xf3\xde\xe7\x8f\x5d\xf0\xbc\x70\xf4\x22\xf7\x62\xdb\x25\
169
\xb7\x4b\xad\x3d\xae\x3d\x47\x7e\x70\xfd\xe1\x48\xaf\x5b\x6f\xeb\
170
\x65\xf7\xcb\xed\x57\x3c\xae\x74\xf4\x4d\xeb\x3b\xd1\xef\xd3\x7f\
171
\xfa\x6a\xc0\xd5\x73\xd7\xf8\xd7\x2e\x5d\x9f\x79\xbd\xef\xc6\xec\
172
\x1b\xb7\x6e\x26\xdd\x1c\xb8\x25\xba\xf5\xf8\x76\xf6\xed\x17\x77\
173
\x0a\xee\x4c\xdc\x5d\x7a\x8f\x78\xaf\xfc\xbe\xda\xfd\xea\x07\xfa\
174
\x0f\xea\x7f\xb4\xfe\xb1\x65\xc0\x6d\xe0\xf8\x60\xc0\x60\xcf\xc3\
175
\x59\x0f\xef\x0e\x09\x87\x9e\xfe\x94\xff\xd3\x87\xe1\xd2\x47\xcc\
176
\x47\xd5\x23\x46\x23\x8d\x8f\x9d\x1f\x1f\x1b\x0d\x1a\xbd\xf2\x64\
177
\xce\x93\xe1\xa7\xb2\xa7\x13\xcf\xca\x7e\x56\xff\x79\xeb\x73\xab\
178
\xe7\xdf\xfd\xe2\xfb\x4b\xcf\x58\xfc\xd8\xf0\x0b\xf9\x8b\xcf\xbf\
179
\xae\x79\xa9\xf3\x72\xef\xab\xa9\xaf\x3a\xc7\x23\xc7\x1f\xbc\xce\
180
\x79\x3d\xf1\xa6\xfc\xad\xce\xdb\x7d\xef\xb8\xef\xba\xdf\xc7\xbd\
181
\x1f\x99\x28\xfc\x40\xfe\x50\xf3\xd1\xfa\x63\xc7\xa7\xd0\x4f\xf7\
182
\x3e\xe7\x7c\xfe\xfc\x2f\xf7\x84\xf3\xfb\x25\xd2\x9f\x33\x00\x00\
183
\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x25\x00\x00\x80\x83\x00\x00\
184
\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\x30\x00\x00\xea\x60\x00\x00\
185
\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\x46\x00\x00\x04\x97\x49\x44\
186
\x41\x54\x78\xda\xec\x9b\x6b\x88\x55\x55\x14\xc7\x7f\x77\xd4\xac\
187
\x11\x69\xec\x65\x65\x12\x94\x0a\x66\x96\x3d\x08\xb2\x82\x42\x4d\
188
\x32\x29\x99\xbd\x37\xd9\x40\xaf\x49\x65\x8a\xd0\x0a\x23\x09\xeb\
189
\x43\x7e\x90\xd0\xa2\x8c\xd2\x8c\xc6\xbe\xe4\x88\xe7\x1c\x1f\x65\
190
\x54\x23\xd9\xc3\x86\xa6\x0c\xb3\xc4\x3e\xf4\xc0\xa9\xe8\x41\x8f\
191
\x29\x66\x18\xba\xea\xd0\xf4\x61\x2f\xc1\xe4\x7a\xcf\x39\xf7\x9c\
192
\x7b\xce\xe5\xdc\xf3\x87\x0b\xf7\xde\xbd\xf7\x3a\x7b\xfd\xf7\xd9\
193
\x7b\xad\xbd\xd6\xde\x85\xa1\xa1\x21\xea\x19\x0d\xd4\x39\x72\x02\
194
\x72\x02\x72\x02\x72\x02\x72\x02\xea\x19\xc3\xa3\x0a\x50\xda\x84\
195
\x79\xd6\x65\xc0\x54\x60\x22\x70\x3a\xd0\x08\x14\x80\x01\xe0\x4f\
196
\xe0\x5b\xe0\x4b\xe0\x73\x60\x30\x88\x50\xcf\x75\xd2\x25\x20\x00\
197
\xce\x06\x66\x00\xd7\x02\xd3\x81\x09\xa2\x78\x29\xfc\x23\x24\x74\
198
\x01\x1f\x01\xef\x02\xbf\xa6\xfe\x06\x28\x6d\x2e\x05\x2e\xf0\x5c\
199
\x67\x6b\x08\xd9\x37\x00\xf7\x00\x73\x81\x31\x01\xdb\x9c\x22\x6f\
200
\xc8\x54\xa0\x0d\xf8\x0b\x78\x03\xd8\x00\xbc\x9f\xca\x1a\xa0\xb4\
201
\x59\x00\xec\x05\xb6\x28\x6d\x76\x28\x6d\x86\xf9\x34\x99\x05\x74\
202
\x02\xbb\x80\x3b\x42\x28\x5f\x0a\x63\x80\x3b\x81\xf7\x80\x77\x44\
203
\x76\xe2\x8b\xe0\x13\xc7\xd4\xbb\x19\x78\xfd\x04\xf5\xce\x94\x91\
204
\xea\xac\x46\x47\x81\x1b\x45\xf6\xab\xc0\x59\x49\x12\x50\x3c\xee\
205
\xf7\x1c\xa5\xcd\x4e\xa5\xcd\xb1\xd3\xa7\x19\xd8\x07\xdc\x9d\xc0\
206
\x9a\x72\x97\x3c\x4b\x27\x45\x40\xa9\xd5\x78\x26\xb0\x5d\x69\x73\
207
\x12\xf0\x00\xe0\x01\xe7\x26\x68\xbd\xce\x01\x1c\x60\x79\x9a\x7e\
208
\xc0\x1c\xe0\x00\xf0\x7c\x8a\x66\x7c\x85\xd2\xe6\xe9\x34\x1d\xa1\
209
\x09\x15\xb4\x19\x10\xe2\x3a\x65\x14\x1d\xf9\x7e\x40\xcc\x60\x58\
210
\x3c\xac\xb4\x59\x59\xcb\x7e\x00\x40\x9f\x4c\x93\xb7\x81\x8f\x81\
211
\x9f\x80\x7f\x4b\x0c\xc6\x78\xe0\x1a\xe0\x26\x40\x89\x59\x0c\x82\
212
\x65\x4a\x9b\x1f\x3c\xd7\x59\x5b\x6b\xae\xf0\x11\x60\x25\x70\x11\
213
\xd0\x0a\x6c\x06\x7e\x2c\xa1\x3c\xf2\xdf\xf7\xc0\x46\x31\x9f\x53\
214
\x80\x67\x43\x3c\xeb\x45\xa5\xcd\xb4\x5a\x22\x60\xaf\x8c\xe6\x63\
215
\x32\xe2\x61\x71\x10\x78\x48\x3c\xc8\xfd\x01\xdb\x6c\x54\xda\x14\
216
\x6a\x81\x80\x76\xe0\x0a\x60\x4f\x0c\xb2\xba\x80\xab\xe4\xed\xf1\
217
\xc3\x64\xe0\xd1\x5a\x20\xe0\xe4\x98\xe5\x15\x81\xdb\x80\x8e\x00\
218
\x75\x97\x2b\x6d\xce\x48\x9b\x80\x16\x60\x27\x30\xa2\x4a\x72\xcb\
219
\x61\x14\xf0\x48\x2d\xac\x01\x33\x81\x37\xab\x20\x57\x03\xbd\x3e\
220
\x75\x16\x29\x6d\x46\xd5\x82\x15\x98\x25\xa6\x2f\xce\x29\xd1\x07\
221
\xdc\xe7\x53\xa7\x09\x30\x71\x11\x50\x88\xd8\xe1\xd9\xc0\x6b\x31\
222
\x4f\x87\xcd\xc0\x67\x3e\x75\x9a\xe3\x22\xa0\x29\x86\x0e\x37\xc7\
223
\xb9\x83\x13\xac\xf6\x29\xbf\x5e\x69\xd3\x14\x07\x01\x4e\x0c\x9d\
224
\xdd\x0d\xfc\x1e\x33\x01\xdb\x80\xdf\xca\x94\x8f\x06\xae\x8e\xec\
225
\x0a\x7b\xae\xb3\x58\x69\xd3\x23\x9e\x59\x11\x08\x93\x4c\x1c\x29\
226
\x9d\x5c\x0d\x1c\x8e\x99\x80\x43\xc0\x87\x3e\xdb\xe2\x2b\x81\xb7\
227
\x22\xef\x05\x3c\xd7\x79\xa6\x4c\xc4\x28\xc5\xcd\x20\x5d\x3e\x04\
228
\x5c\x9c\xb6\x15\xa8\x36\x7a\x7c\xca\xc7\x65\x9d\x00\xbf\x75\x65\
229
\x74\xd6\x09\x28\xfa\x94\x8f\xc8\x3a\x01\x7e\x0e\xd6\x60\xd6\x09\
230
\xf0\xdb\xf4\xf4\x67\x9d\x80\xf1\x3e\xe5\xbf\x64\x9d\x00\x3f\x47\
231
\xe7\xab\x2c\x13\x30\x1c\x9b\x7e\x2b\x87\x3d\x59\x26\xe0\x16\x6c\
232
\x7e\xe0\x44\x18\x10\x47\x29\xb3\x04\x2c\xf5\x29\xff\xc0\x73\x9d\
233
\xde\xac\x12\x70\x6b\x80\xf9\xbf\x25\xe9\x80\xc8\x64\x92\xc9\x33\
234
\x34\x02\xeb\x7d\xea\xf4\x11\x2c\x88\x1a\x1b\x01\x6d\xc0\x17\xc0\
235
\xd6\x04\x08\xe8\x08\x10\x5b\x68\xf7\x5c\xa7\x3f\x29\x02\x5a\x81\
236
\xb5\xe2\x76\xce\x05\x5e\xae\xa2\xf2\xeb\x64\xf1\x2b\x87\xc3\xc0\
237
\xaa\x30\xa6\xa4\x62\x28\x6d\x5a\x80\x57\x8e\xfb\x7b\x81\xc4\x0c\
238
\x16\xc5\xac\xfc\x7a\x60\x61\x80\x7a\xab\x3c\xd7\xf9\x39\xa8\xd0\
239
\x86\x08\xca\xcf\xc7\xc6\xfa\x4a\x61\xa1\x04\x2b\xa6\xc4\xa0\xf8\
240
\x25\xd8\xf3\x42\x41\x94\xef\x01\x56\x84\x11\xde\x50\xa1\xf2\xcd\
241
\xf8\x27\x29\xae\x03\x3e\x05\x1e\x0f\xe0\xb3\x97\xc2\x58\xe0\x49\
242
\xe0\x13\x6c\x8a\x2d\x08\x6e\xf7\x5c\xe7\x50\x58\x6f\xaa\x12\x8c\
243
\x0b\x58\xaf\x51\x94\x58\x0c\x6c\xc2\xa6\xc1\xbb\xcb\xec\xe3\xc7\
244
\x8a\x79\x9b\x8d\xcd\x04\x85\x39\x5f\xb4\xd4\x73\x9d\xee\xb0\x8a\
245
\x14\x2a\xbd\x2f\xa0\xb4\x79\x01\xb8\xbf\x82\xa6\xbd\xc0\x77\xd8\
246
\x84\xe9\xdf\xd8\xb0\xfb\xa9\xc0\x79\xc0\x85\x54\x76\xa8\x6a\x8d\
247
\xe7\x3a\x4b\x2a\xd1\xa3\x10\xe5\xc2\x84\xd2\xa6\x1d\x7b\x14\x2e\
248
\x4d\xbc\xe4\xb9\x4e\x5b\xa5\x8d\x23\x99\x41\xcf\x75\x5a\x81\x35\
249
\x29\x2a\xff\x54\x14\xe5\xe3\xf2\x03\x96\x00\x0f\x62\xc3\xd4\x49\
250
\xa1\x1f\xb8\x17\x58\x16\x55\x50\x5c\x9e\xe0\x73\xd8\x1c\xfe\xae\
251
\x04\x94\xdf\x0e\x5c\x8e\x3d\x83\x40\xad\x10\x00\xf6\x90\xf3\x0c\
252
\xf1\x0c\xf7\x57\x41\xf1\x6e\x6c\x0e\x60\x1e\xf6\x3c\x31\xb5\x46\
253
\xc0\x51\x6c\x90\x11\x6a\xc1\x66\x65\x8e\x44\x90\x55\x94\xfd\xc5\
254
\xd1\xdd\x9f\x57\x8d\xa8\x4a\x35\x30\x28\x8e\x52\x07\x30\x49\xec\
255
\xfa\x74\x99\x26\xe7\x03\xc3\xca\xb4\xeb\x91\xd1\xde\x8d\x3d\x0c\
256
\x71\xb0\x9a\xf3\x29\x89\xed\xeb\xd7\xf2\x59\x07\x4c\xc3\xa6\xab\
257
\x26\x02\xa7\xf1\xff\xfb\x02\x7f\x00\xdf\xc8\xf4\xd9\x47\xe9\x93\
258
\x64\xb1\xa3\x90\x5f\x9c\xac\x73\xe4\x04\xe4\x04\xe4\x04\xe4\x04\
259
\xd4\x35\xfe\x1b\x00\xc4\xbb\x02\xb9\x0e\xf0\xf7\x07\x00\x00\x00\
260
\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
261
\x00\x01\x69\xce\
262
\x47\
263
\x49\x46\x38\x39\x61\x00\x01\x00\x01\xf7\x00\x00\x00\x00\x00\x78\
264
\x61\x4e\xfa\xc8\x9e\xfa\xce\xa9\xfb\xd1\xaf\xfb\xd2\xb1\xfb\xd3\
265
\xb2\xfa\xd2\xb1\xfa\xd1\xaf\xfa\xd1\xae\xfa\xd0\xac\xfa\xce\xaa\
266
\xfa\xcd\xa8\xfa\xcc\xa5\xfa\xca\xa3\xfa\xc9\xa1\xfa\xc8\x9e\xf9\
267
\xc7\x9d\xf9\xc6\x9b\xf9\xc5\x9a\xf9\xc5\x99\xf9\xc4\x98\xf9\xc3\
268
\x96\xf9\xc2\x95\xf9\xc1\x93\xf9\xc1\x92\xf9\xc0\x91\xf9\xc1\x92\
269
\xf9\xc1\x92\xf9\xc1\x93\xf9\xc1\x92\xf9\xc0\x91\xf9\xc0\x90\xf9\
270
\xc0\x90\xf9\xc0\x90\xfa\xc0\x90\xfa\xc0\x90\xfa\xc0\x90\xfa\xc0\
271
\x90\xfa\xc0\x90\xfa\xc0\x90\xfa\xc0\x90\xfa\xc0\x90\xfa\xbf\x8f\
272
\xfa\xbf\x8f\xfa\xbf\x8f\xfa\xbf\x8f\xfa\xbf\x8f\xfa\xbf\x8f\xfa\
273
\xbf\x8f\xfa\xbf\x8f\xfa\xbf\x8f\xfa\xbf\x8f\xfa\xbe\x8f\xfa\xbd\
274
\x8f\xfa\xbb\x8f\xfa\xb8\x8e\xfa\xb2\x8d\xfb\xa9\x8b\xfc\x9a\x88\
275
\xfe\x88\x84\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\
276
\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\
277
\x81\xff\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\
278
\xfe\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xfe\
279
\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xfe\x7c\x81\xff\x7c\x81\xff\x7c\
280
\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\xff\x7c\x81\
281
\xff\x7c\x81\xff\x7d\x82\xff\x7e\x83\xfe\x7f\x84\xfe\x80\x85\xfe\
282
\x81\x85\xfe\x82\x86\xfe\x83\x87\xfe\x84\x89\xfe\x86\x8a\xfe\x87\
283
\x8c\xfe\x89\x8e\xfe\x8a\x8f\xfe\x8c\x90\xfe\x8d\x92\xfe\x8f\x93\
284
\xfe\x90\x94\xfe\x91\x96\xfe\x93\x97\xfe\x95\x99\xfe\x96\x9a\xfe\
285
\x98\x9c\xfe\x9a\x9e\xfe\x9c\x9f\xfe\x9d\xa1\xfe\x9f\xa3\xfe\xa1\
286
\xa4\xfe\xa2\xa6\xfe\xa4\xa7\xfe\xa6\xaa\xfe\xa8\xab\xfe\xaa\xae\
287
\xfe\xad\xb0\xfe\xaf\xb2\xfe\xb1\xb4\xfe\xb2\xb5\xfe\xb4\xb7\xfe\
288
\xb6\xb9\xfe\xb7\xba\xfe\xb8\xbb\xfe\xba\xbd\xfe\xbb\xbe\xfe\xbc\
289
\xbf\xfe\xbd\xc0\xfe\xbf\xc1\xfe\xc0\xc3\xfe\xc3\xc5\xfe\xc5\xc7\
290
\xfe\xc7\xc9\xfe\xca\xcc\xfe\xcc\xce\xfe\xce\xd0\xfe\xcf\xd0\xfe\
291
\xcf\xd1\xfe\xcf\xd1\xfe\xd0\xd0\xfe\xd1\xcf\xfd\xd3\xcc\xfc\xd6\
292
\xc3\xfb\xd8\xbe\xfb\xd8\xbd\xfb\xd8\xbd\xfb\xd9\xbf\xfb\xda\xc1\
293
\xfb\xdb\xc2\xfb\xdc\xc3\xfb\xdc\xc4\xfc\xde\xc5\xfc\xde\xc7\xfc\
294
\xdf\xc8\xfc\xe0\xc8\xfc\xe0\xc9\xfc\xe1\xcb\xfc\xe1\xcc\xfc\xe1\
295
\xce\xfc\xe0\xd0\xfc\xe0\xd1\xfd\xe1\xd4\xfd\xe0\xd7\xfd\xdf\xda\
296
\xfe\xdf\xdc\xfe\xdf\xde\xfe\xdf\xe0\xfe\xdf\xe0\xfe\xdf\xe0\xfe\
297
\xdf\xdf\xfe\xdd\xde\xfe\xdd\xdc\xfe\xdc\xdb\xfd\xde\xd8\xfd\xe1\
298
\xd5\xfc\xe4\xd4\xfc\xe5\xd5\xfd\xe7\xdb\xfd\xe8\xe0\xfe\xe9\xe3\
299
\xfe\xe9\xe5\xfe\xeb\xe6\xfe\xed\xe8\xfe\xef\xeb\xfe\xef\xeb\xfe\
300
\xf1\xed\xfe\xf2\xf0\xfe\xf4\xf2\xfe\xf4\xf2\xfe\xf5\xf3\xfe\xf5\
301
\xf3\xfe\xf5\xf3\xfe\xf5\xf2\xfe\xf6\xf2\xfe\xf6\xf1\xfe\xf5\xf1\
302
\xfe\xf5\xf0\xfe\xf4\xf0\xfe\xf4\xf1\xfe\xf4\xf3\xfe\xf5\xf4\xfe\
303
\xf7\xf6\xfe\xfa\xf9\xfe\xfc\xfb\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\
304
\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\
305
\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\
306
\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\xfe\xff\xff\
307
\xfe\xff\xff\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\
308
\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\
309
\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\
310
\xfe\xfe\xfe\xfe\xfe\xfd\xfd\xfe\xfc\xfb\xfe\xfa\xfa\xfe\xfa\xfa\
311
\xfe\xfa\xfa\xfe\xfb\xfa\xfe\xfb\xfa\xfe\xfa\xfa\x21\xff\x0b\x4e\
312
\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00\x21\
313
\xf9\x04\x09\x03\x00\xd7\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x01\
314
\x00\x08\xfe\x00\xaf\x09\x1c\x48\xb0\xa0\xc1\x83\x08\x13\x2a\x5c\
315
\xc8\xb0\xa1\xc3\x87\x10\x23\x4a\x9c\x48\xb1\xa2\xc5\x8b\x18\x33\
316
\x6a\xdc\xc8\xb1\xa3\xc7\x8f\x20\x43\x8a\x1c\x49\xb2\xa4\xc9\x93\
317
\x28\x53\xaa\x5c\xc9\xb2\xa5\xcb\x97\x30\x63\xca\x9c\x49\xb3\xa6\
318
\xcd\x9b\x38\x73\xea\xdc\xc9\xb3\xa7\xcf\x9f\x40\x83\x0a\x1d\x4a\
319
\xb4\xa8\xd1\xa3\x48\x93\x2a\x5d\xca\xb4\xa9\xd3\xa7\x50\xa3\x4a\
320
\x9d\x4a\xb5\xaa\xd5\xab\x58\xb3\x6a\xdd\xca\xb5\xab\xd7\xaf\x60\
321
\xc3\x8a\x1d\x4b\xb6\xac\xd9\xb3\x68\xd3\xaa\x5d\xcb\xb6\xad\xdb\
322
\xb7\x70\xe3\xca\x9d\x4b\xb7\xae\xdd\xbb\x78\xf3\xea\xdd\xcb\xb7\
323
\xaf\xdf\xbf\x80\x03\x0b\x1e\x4c\xb8\xb0\xe1\xc3\x88\x13\x2b\x5e\
324
\xcc\xb8\xb1\xe3\xc7\x90\x23\x4b\x9e\x4c\xb9\xb2\xe5\xcb\x98\x33\
325
\x6b\xde\xcc\xb9\xb3\xe7\xcf\xa0\x43\x8b\x1e\x4d\xba\xb4\xe9\xd3\
326
\xa8\x53\xab\x5e\x5d\x50\x1f\x2f\x5a\xb4\x22\x39\x62\xa4\x08\x51\
327
\x22\x5a\xd0\x58\x0b\x15\x16\x29\x11\x9f\x39\x66\x7a\x08\x1f\x4e\
328
\x5c\xb8\x9f\x69\xba\x77\x46\x8b\xf4\x47\x4d\xf1\xe7\xd0\x7b\xac\
329
\x79\x96\xdc\x26\x2f\x42\x70\xa2\x6b\x87\x8e\xa7\xba\x4c\x5e\x83\
330
\x9c\xfe\x6f\x1f\xff\x1c\x92\xf7\x96\xae\x04\xa5\x21\xcf\xfe\x39\
331
\x9d\xf3\x2a\x69\xbd\x69\x4f\xbf\x78\x1b\xf8\x27\x69\x65\xaf\xcf\
332
\x5f\x78\x1c\xfc\x24\xc9\x22\x47\x7f\x04\xf6\xf0\x07\x80\x21\x09\
333
\x53\x47\x81\x05\xf2\x82\xa0\x47\xd4\x2c\x22\x06\x83\x04\x1e\xf8\
334
\x20\x47\xbc\xb8\x41\x21\x81\x6e\x48\x73\xa1\x46\xd4\x1c\xd2\xc5\
335
\x86\xfd\x01\x82\xdc\x87\x18\x41\xb3\x20\x89\xd1\xb1\x41\x07\x1e\
336
\x7a\xf4\x01\x48\x21\xb7\x45\x83\x62\x46\xae\x04\xc7\x62\x0f\x61\
337
\xd0\x51\xc8\x23\xae\x08\x73\xa3\x48\x89\xb0\x18\x86\x1e\x8b\x38\
338
\x38\x24\x49\xd3\xe0\x41\xa2\x1c\x8e\xe8\xe3\x90\x2f\x98\x34\x30\
339
\xc2\x05\x13\x08\xd0\xc0\x02\x06\x7c\x72\x4b\x2f\xc9\x2c\xa9\x90\
340
\x34\x73\x50\x58\xc6\x20\xbf\x3c\xd4\x8f\x01\x23\xb4\xe9\xe6\x9b\
341
\x6f\x5a\x50\x00\x29\xbe\x88\x49\xd0\x33\x6d\x30\xa8\x06\x23\x27\
342
\x3e\xc4\x26\x9c\x80\x06\x3a\x02\x01\xb9\x88\x19\xcc\x7a\x04\xbe\
343
\x11\x09\x35\x12\xe1\x22\xe8\xa3\x80\x4a\xf0\x49\x98\x1f\xf2\x52\
344
\x06\x81\x67\x44\x52\xd1\x00\x90\x76\x0a\xa7\x01\x75\x22\xc8\xcb\
345
\x84\xfc\x75\x11\x88\x87\x15\x5d\xe0\xe9\xaa\x6e\x32\x50\x28\x7c\
346
\xfe\xbf\xe8\x58\x5f\x1c\xbd\x60\xc4\xea\xad\x6d\x3a\x10\x6a\x72\
347
\xcf\xa0\xc1\x9f\x17\x8a\x68\xe4\x00\xae\xb8\x1a\x60\x23\x6b\xd1\
348
\xe4\x59\x9f\x19\x4a\x66\xf4\x27\xb1\xac\x5a\x40\x0a\xa3\xa9\xe9\
349
\xb3\x1f\x7d\x75\x1c\xab\x51\x30\x19\x40\x8b\xab\x03\xcc\xa4\x96\
350
\x07\x7f\x82\x7c\xe4\xa8\xb7\xb7\x5a\xf0\x6a\x69\x8c\xf0\xd7\x48\
... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)