2 Commits 01fd1d4d4b ... 31c3a555bc

Author SHA1 Message Date
  tangchao 31c3a555bc Merge branch 'develop_2025' of git.kdan.cc:Mac_PDF/PDF_Office into develop_2025 4 days ago
  tangchao 725aee4209 【2025】【BOTA】大纲列表搜索调试 4 days ago
18 changed files with 215 additions and 134 deletions
  1. 38 0
      PDF Office/PDF Master/Class/Appearance/Color.xcassets/KMTextInsertionPointColor.colorset/Contents.json
  2. 0 43
      PDF Office/PDF Master/Class/Common/Category/NSString+KMExtension.swift
  3. 1 0
      PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/New/View/KMHeaderFooterView.swift
  4. 0 6
      PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/New/View/KMHeaderFooterView.xib
  5. 1 0
      PDF Office/PDF Master/KMClass/Left/Outline/Controller/KMOutlineViewController.swift
  6. 3 3
      PDF Office/PDF Master/KMClass/Left/Outline/View/KMBOTAOutlineRowView.swift
  7. 36 10
      PDF Office/PDF Master/KMClass/Left/Outline/View/KMBOTAOutlineView.swift
  8. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/AppKit/NSButton+DesignToken.swift
  9. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/AppKit/NSView+KMExtension.swift
  10. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/AppKit/NSViewController+DesignToken.swift
  11. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/Foundation/Array+KMExtensions.swift
  12. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/Foundation/Date+KMExtensions.swift
  13. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/Foundation/NSColor+KMExtensions.swift
  14. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/Foundation/NSImage+Extension.swift
  15. 0 0
      PDF Office/PDF Master/KMClass/Tools/Category/Foundation/NSImage+QuickLook.swift
  16. 44 0
      PDF Office/PDF Master/KMClass/Tools/Category/String+KMExtensions.swift
  17. 4 0
      PDF Office/PDF Master/KMClass/Tools/Tool/KMNColorTools.swift
  18. 88 72
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

+ 38 - 0
PDF Office/PDF Master/Class/Appearance/Color.xcassets/KMTextInsertionPointColor.colorset/Contents.json

@@ -0,0 +1,38 @@
+{
+  "colors" : [
+    {
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "1.000",
+          "blue" : "1.000",
+          "green" : "0.480",
+          "red" : "0.000"
+        }
+      },
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "1.000",
+          "blue" : "1.000",
+          "green" : "0.480",
+          "red" : "0.000"
+        }
+      },
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 0 - 43
PDF Office/PDF Master/Class/Common/Category/NSString+KMExtension.swift

@@ -258,46 +258,3 @@ extension String {
     }
 }
 
-extension String {
-    /// 从字符串中提取数字
-    func getIntFromString() -> String {
-        let scanner = Scanner(string: self)
-        scanner.scanUpToCharacters(from: CharacterSet.decimalDigits, into: nil)
-        var number :Int = 0
-        scanner.scanInt(&number)
-        return String(number)
-        
-    }
-    
-    /// 查找子字符串
-    func ranges(of string: String) -> (range:[Range<String.Index>], nsRnage: [NSRange]) {
-        var rangeArray = [Range<String.Index>]()
-        var nsRangeArray = [NSRange]()
-        var searchedRange: Range<String.Index>
-        guard let sr = self.range(of: self) else {
-            return (rangeArray, nsRangeArray)
-        }
-        searchedRange = sr
-        var resultRange = self.range(of: string, options: .regularExpression, range: searchedRange, locale: nil)
-        while let range = resultRange {
-            rangeArray.append(range)
-            nsRangeArray.append(NSRange(range,in:self))
-            searchedRange = Range(uncheckedBounds: (range.upperBound, searchedRange.upperBound))
-            resultRange = self.range(of: string, options: .regularExpression, range: searchedRange, locale: nil)
-        }
-        return (rangeArray,nsRangeArray)
-    }
-
-    /// range -> NSRange
-    func nsRange(from range: Range<String.Index>) -> NSRange? {
-        
-        let utf16view = self.utf16
-        
-        if let from = range.lowerBound.samePosition(in: utf16view), let to = range.upperBound.samePosition(in: utf16view) {
-            
-            return NSMakeRange(utf16view.distance(from: utf16view.startIndex, to: from), utf16view.distance(from: from, to: to))
-            
-        }
-        return nil
-    }
-}

+ 1 - 0
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/New/View/KMHeaderFooterView.swift

@@ -259,6 +259,7 @@ class KMHeaderFooterView: BaseXibView, NSTextViewDelegate, NSComboBoxDelegate {
             textView.delegate = self
             // textView?.layer?.borderWidth = 1.0
             // textView?.layer?.borderColor = NSColor.gridColor.cgColor
+            textView.insertionPointColor = .labelColor
         }
 
 //        self.textColorWell.color = self.headerFooterObj.getTextColor()

+ 0 - 6
PDF Office/PDF Master/Class/PDFTools/AddHeaderFooter/New/View/KMHeaderFooterView.xib

@@ -636,7 +636,6 @@ DQ
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         <size key="minSize" width="173" height="38"/>
                                         <size key="maxSize" width="296" height="10000000"/>
-                                        <color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
                                     </textView>
                                 </subviews>
                             </clipView>
@@ -665,7 +664,6 @@ DQ
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         <size key="minSize" width="172" height="38"/>
                                         <size key="maxSize" width="295" height="10000000"/>
-                                        <color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
                                     </textView>
                                 </subviews>
                             </clipView>
@@ -691,7 +689,6 @@ DQ
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         <size key="minSize" width="173" height="38"/>
                                         <size key="maxSize" width="311" height="10000000"/>
-                                        <color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
                                     </textView>
                                 </subviews>
                             </clipView>
@@ -792,7 +789,6 @@ DQ
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         <size key="minSize" width="173" height="38"/>
                                         <size key="maxSize" width="311" height="10000000"/>
-                                        <color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
                                     </textView>
                                 </subviews>
                             </clipView>
@@ -818,7 +814,6 @@ DQ
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         <size key="minSize" width="172" height="38"/>
                                         <size key="maxSize" width="310" height="10000000"/>
-                                        <color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
                                     </textView>
                                 </subviews>
                             </clipView>
@@ -844,7 +839,6 @@ DQ
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         <size key="minSize" width="173" height="38"/>
                                         <size key="maxSize" width="311" height="10000000"/>
-                                        <color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
                                     </textView>
                                 </subviews>
                             </clipView>

+ 1 - 0
PDF Office/PDF Master/KMClass/Left/Outline/Controller/KMOutlineViewController.swift

@@ -129,6 +129,7 @@ class KMOutlineViewController: KMNBaseViewController {
             
             self?.BOTAOutlineView.searchKey = value
             self?.reloadData()
+            self?.BOTAOutlineView.outlineView.expandItem(nil, expandChildren: true)
         }
         
         emptyView.wantsLayer = true

+ 3 - 3
PDF Office/PDF Master/KMClass/Left/Outline/View/KMBOTAOutlineRowView.swift

@@ -14,7 +14,7 @@ typealias KMBOTAOutlineRowViewMouseDownCallback = (_ view: KMBOTAOutlineRowView,
 class KMBOTAOutlineRowView: NSTableRowView {
     var box: KMBox?
     var contentBox: KMBox?
-    var model: KMBOTAOutlineItem! {
+    var model: KMBOTAOutlineItem? {
         didSet {
             self.reloadData()
         }
@@ -104,7 +104,7 @@ extension KMBOTAOutlineRowView {
             cellView = (self.view(atColumn: 0) as? KMBOTAOutlineCellView)
         }
         let box = cellView?.hoverBox
-        if self.model.select {
+        if self.model?.select == true {
             let color = ComponentLibrary.shared.getComponentColorFromKey("colorPrimary/bg-opacity-dark")
             box?.backgroundColor(color)
             if let value = ComponentLibrary.shared.getComponentValueFromKey("radius/xs") {
@@ -115,7 +115,7 @@ extension KMBOTAOutlineRowView {
             }
             box?.borderColor = color
             box?.borderWidth = 0
-        } else if self.model.hover {
+        } else if self.model?.hover == true {
             box?.backgroundColor(ComponentLibrary.shared.getComponentColorFromKey("colorFill/hov-opacity"))
             if let value = ComponentLibrary.shared.getComponentValueFromKey("radius/xs") {
                 let currentValue = value as? CGFloat ?? 0

+ 36 - 10
PDF Office/PDF Master/KMClass/Left/Outline/View/KMBOTAOutlineView.swift

@@ -162,13 +162,18 @@ extension KMBOTAOutlineView : NSOutlineViewDataSource,NSOutlineViewDelegate {
             }
             return outline?.children.count ?? 0
         } else {
+            guard let data = self.data else {
+                return 0
+            }
+            
             if self.isSearchMode { // 是否为搜索模块
-                if self.hasContainString(searchKey, rootOutline: outline!.outline) == false {
+                if self.hasContainString(searchKey, rootOutline: data.outline) == false {
 //                    self.showSearchOutlineBlankState(true)
                     return 0
                 }
 //                self.showSearchOutlineBlankState(false)
-                let ols = self.fetchOutlines(for: outline!, searchString: searchKey)
+                let ols = self.fetchOutlines(for: data, searchString: searchKey)
+                outlineView.expandItem(data, expandChildren: false)
                 return ols.count
             }
             return Int(self.data?.outline.numberOfChildren ?? 0)
@@ -185,13 +190,17 @@ extension KMBOTAOutlineView : NSOutlineViewDataSource,NSOutlineViewDelegate {
             return outline?.children[index] as Any
         } else {
             if self.isSearchMode { // 是否为搜索模块
-                if self.hasContainString(searchKey, rootOutline: outline!.outline) == false {
+                guard let data = self.data else {
+                    return ""
+                }
+                
+                if self.hasContainString(searchKey, rootOutline: data.outline) == false {
 //                    self.showSearchOutlineBlankState(true)
-                    return 0
+                    return ""
                 }
 //                self.showSearchOutlineBlankState(false)
-                let ols = self.fetchOutlines(for: outline!, searchString: searchKey)
-                return ols.count
+                let ols = self.fetchOutlines(for: data, searchString: searchKey)
+                return ols.safe_element(for: index) as Any
             }
             return self.data?.children[index] as Any
         }
@@ -200,6 +209,9 @@ extension KMBOTAOutlineView : NSOutlineViewDataSource,NSOutlineViewDelegate {
     func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: Any) -> Bool {
         let outline = item as? KMBOTAOutlineItem
         if outline != nil && outline?.children.count != 0 {
+//            if isSearchMode {
+//                outlineView.expandItem(outline, expandChildren: true)
+//            }
             return true
         }
         return false
@@ -229,7 +241,21 @@ extension KMBOTAOutlineView : NSOutlineViewDataSource,NSOutlineViewDelegate {
     
     func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? {
         let cell : KMBOTAOutlineCellView = KMBOTAOutlineCellView.init()
-        cell.model = item as? KMBOTAOutlineItem
+        let model = item as? KMBOTAOutlineItem
+        cell.model = model
+        if isSearchMode {
+            let label = model?.outline.label ?? ""
+            var attri = NSMutableAttributedString(string: label, attributes: [
+                .font : NSFont.SFProTextRegularFont(13),
+                .foregroundColor : KMNColorTools.colorText_1()])
+            
+            let ranges = label.ranges(of: searchKey)
+            for range in ranges.nsRnage {
+                attri.addAttributes([.font : NSFont.SFProTextBoldFont(13), .foregroundColor: KMNColorTools.colorPrimary_textLight()], range: range)
+            }
+            cell.titleLabel.attributedStringValue = attri
+        }
+        
         cell.iconAction = { [unowned self] view in
             let rowIndex = outlineView.row(forItem: item)
             let rowView = outlineView.rowView(atRow: rowIndex, makeIfNecessary: false)
@@ -260,14 +286,14 @@ extension KMBOTAOutlineView : NSOutlineViewDataSource,NSOutlineViewDelegate {
         rowView.hoverCallback = { [unowned self] (mouseEntered, mouseBox) in
             self.outlineView.enumerateAvailableRowViews { view, row in
                 if view is KMBOTAOutlineRowView {
-                    (view as? KMBOTAOutlineRowView)?.model.hover = false
+                    (view as? KMBOTAOutlineRowView)?.model?.hover = false
                     (view as? KMBOTAOutlineRowView)?.reloadData()
                 }
             }
             if mouseEntered {
-                rowView.model.hover = true
+                rowView.model?.hover = true
             } else {
-                rowView.model.hover = false
+                rowView.model?.hover = false
             }
         }
         return rowView

PDF Office/PDF Master/KMClass/Tools/Category/NSButton+DesignToken.swift → PDF Office/PDF Master/KMClass/Tools/Category/AppKit/NSButton+DesignToken.swift


PDF Office/PDF Master/KMClass/Tools/Category/NSView+KMExtension.swift → PDF Office/PDF Master/KMClass/Tools/Category/AppKit/NSView+KMExtension.swift


PDF Office/PDF Master/KMClass/Tools/Category/NSViewController+DesignToken.swift → PDF Office/PDF Master/KMClass/Tools/Category/AppKit/NSViewController+DesignToken.swift


PDF Office/PDF Master/KMClass/Tools/Category/Array+KMExtensions.swift → PDF Office/PDF Master/KMClass/Tools/Category/Foundation/Array+KMExtensions.swift


PDF Office/PDF Master/KMClass/Tools/Category/Date+KMExtensions.swift → PDF Office/PDF Master/KMClass/Tools/Category/Foundation/Date+KMExtensions.swift


PDF Office/PDF Master/KMClass/Tools/Category/NSColor+KMExtensions.swift → PDF Office/PDF Master/KMClass/Tools/Category/Foundation/NSColor+KMExtensions.swift


PDF Office/PDF Master/KMClass/Tools/Category/NSImage+Extension.swift → PDF Office/PDF Master/KMClass/Tools/Category/Foundation/NSImage+Extension.swift


PDF Office/PDF Master/KMClass/Tools/Category/NSImage+QuickLook.swift → PDF Office/PDF Master/KMClass/Tools/Category/Foundation/NSImage+QuickLook.swift


+ 44 - 0
PDF Office/PDF Master/KMClass/Tools/Category/String+KMExtensions.swift

@@ -127,5 +127,49 @@ extension String {
         }
         return true
     }
+}
 
+extension String {
+    /// 从字符串中提取数字
+    func getIntFromString() -> String {
+        let scanner = Scanner(string: self)
+        scanner.scanUpToCharacters(from: CharacterSet.decimalDigits, into: nil)
+        var number :Int = 0
+        scanner.scanInt(&number)
+        return String(number)
+        
+    }
+    
+    /// 查找子字符串
+    func ranges(of string: String) -> (range:[Range<String.Index>], nsRnage: [NSRange]) {
+        var rangeArray = [Range<String.Index>]()
+        var nsRangeArray = [NSRange]()
+        var searchedRange: Range<String.Index>
+        guard let sr = self.range(of: self) else {
+            return (rangeArray, nsRangeArray)
+        }
+        searchedRange = sr
+        var resultRange = self.range(of: string, options: .regularExpression, range: searchedRange, locale: nil)
+        while let range = resultRange {
+            rangeArray.append(range)
+            nsRangeArray.append(NSRange(range,in:self))
+            searchedRange = Range(uncheckedBounds: (range.upperBound, searchedRange.upperBound))
+            resultRange = self.range(of: string, options: .regularExpression, range: searchedRange, locale: nil)
+        }
+        return (rangeArray,nsRangeArray)
+    }
+
+    /// range -> NSRange
+    func nsRange(from range: Range<String.Index>) -> NSRange? {
+        
+        let utf16view = self.utf16
+        
+        if let from = range.lowerBound.samePosition(in: utf16view), let to = range.upperBound.samePosition(in: utf16view) {
+            
+            return NSMakeRange(utf16view.distance(from: utf16view.startIndex, to: from), utf16view.distance(from: from, to: to))
+            
+        }
+        return nil
+    }
 }
+

+ 4 - 0
PDF Office/PDF Master/KMClass/Tools/Tool/KMNColorTools.swift

@@ -19,6 +19,10 @@ class KMNColorTools: NSObject {
         return ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
     }
     
+    @inline (__always) class func colorPrimary_textLight() -> NSColor {
+        return ComponentLibrary.shared.getComponentColorFromKey("colorPrimary/textLight")
+    }
+    
     // MARK: - bg Color
     
     @inline (__always) class func colorBg_popup() -> NSColor {

+ 88 - 72
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -283,6 +283,33 @@
 		65AED4B32CAA55A8005C44B3 /* KMMergeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AED4B22CAA55A8005C44B3 /* KMMergeViewModel.swift */; };
 		65AED4B42CAA55A8005C44B3 /* KMMergeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AED4B22CAA55A8005C44B3 /* KMMergeViewModel.swift */; };
 		65AED4B52CAA55A8005C44B3 /* KMMergeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AED4B22CAA55A8005C44B3 /* KMMergeViewModel.swift */; };
+		65B143952CF06B97001B5A69 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438B2CF06B96001B5A69 /* NSButton+DesignToken.swift */; };
+		65B143962CF06B97001B5A69 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438B2CF06B96001B5A69 /* NSButton+DesignToken.swift */; };
+		65B143972CF06B97001B5A69 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438B2CF06B96001B5A69 /* NSButton+DesignToken.swift */; };
+		65B143982CF06B97001B5A69 /* NSView+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438C2CF06B96001B5A69 /* NSView+KMExtension.swift */; };
+		65B143992CF06B97001B5A69 /* NSView+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438C2CF06B96001B5A69 /* NSView+KMExtension.swift */; };
+		65B1439A2CF06B97001B5A69 /* NSView+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438C2CF06B96001B5A69 /* NSView+KMExtension.swift */; };
+		65B1439B2CF06B97001B5A69 /* NSViewController+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438D2CF06B96001B5A69 /* NSViewController+DesignToken.swift */; };
+		65B1439C2CF06B97001B5A69 /* NSViewController+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438D2CF06B96001B5A69 /* NSViewController+DesignToken.swift */; };
+		65B1439D2CF06B97001B5A69 /* NSViewController+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438D2CF06B96001B5A69 /* NSViewController+DesignToken.swift */; };
+		65B1439E2CF06B97001B5A69 /* NSImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438F2CF06B97001B5A69 /* NSImage+Extension.swift */; };
+		65B1439F2CF06B97001B5A69 /* NSImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438F2CF06B97001B5A69 /* NSImage+Extension.swift */; };
+		65B143A02CF06B97001B5A69 /* NSImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B1438F2CF06B97001B5A69 /* NSImage+Extension.swift */; };
+		65B143A12CF06B97001B5A69 /* Date+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143902CF06B97001B5A69 /* Date+KMExtensions.swift */; };
+		65B143A22CF06B97001B5A69 /* Date+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143902CF06B97001B5A69 /* Date+KMExtensions.swift */; };
+		65B143A32CF06B97001B5A69 /* Date+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143902CF06B97001B5A69 /* Date+KMExtensions.swift */; };
+		65B143A42CF06B97001B5A69 /* NSImage+QuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143912CF06B97001B5A69 /* NSImage+QuickLook.swift */; };
+		65B143A52CF06B97001B5A69 /* NSImage+QuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143912CF06B97001B5A69 /* NSImage+QuickLook.swift */; };
+		65B143A62CF06B97001B5A69 /* NSImage+QuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143912CF06B97001B5A69 /* NSImage+QuickLook.swift */; };
+		65B143A72CF06B97001B5A69 /* Array+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143922CF06B97001B5A69 /* Array+KMExtensions.swift */; };
+		65B143A82CF06B97001B5A69 /* Array+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143922CF06B97001B5A69 /* Array+KMExtensions.swift */; };
+		65B143A92CF06B97001B5A69 /* Array+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143922CF06B97001B5A69 /* Array+KMExtensions.swift */; };
+		65B143AA2CF06B97001B5A69 /* NSColor+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143932CF06B97001B5A69 /* NSColor+KMExtensions.swift */; };
+		65B143AB2CF06B97001B5A69 /* NSColor+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143932CF06B97001B5A69 /* NSColor+KMExtensions.swift */; };
+		65B143AC2CF06B97001B5A69 /* NSColor+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143932CF06B97001B5A69 /* NSColor+KMExtensions.swift */; };
+		65B143AD2CF06B97001B5A69 /* String+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143942CF06B97001B5A69 /* String+KMExtensions.swift */; };
+		65B143AE2CF06B97001B5A69 /* String+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143942CF06B97001B5A69 /* String+KMExtensions.swift */; };
+		65B143AF2CF06B97001B5A69 /* String+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B143942CF06B97001B5A69 /* String+KMExtensions.swift */; };
 		65C9CAEA2CA16232009794E5 /* libpaddle2onnx.1.0.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 65C9CAE62CA16231009794E5 /* libpaddle2onnx.1.0.7.dylib */; };
 		65C9CAEB2CA16232009794E5 /* libpaddle2onnx.1.0.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 65C9CAE62CA16231009794E5 /* libpaddle2onnx.1.0.7.dylib */; };
 		65C9CAEC2CA16232009794E5 /* libpaddle2onnx.1.0.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 65C9CAE62CA16231009794E5 /* libpaddle2onnx.1.0.7.dylib */; };
@@ -606,9 +633,6 @@
 		9F0CB4C02977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F0CB4BC2977C06300007028 /* KMPropertiesPanelColorSubVC.xib */; };
 		9F0CB4C12977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F0CB4BC2977C06300007028 /* KMPropertiesPanelColorSubVC.xib */; };
 		9F0CB4C22977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F0CB4BC2977C06300007028 /* KMPropertiesPanelColorSubVC.xib */; };
-		9F0CB4C4298625F400007028 /* NSColor+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0CB4C3298625F400007028 /* NSColor+KMExtensions.swift */; };
-		9F0CB4C5298625F400007028 /* NSColor+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0CB4C3298625F400007028 /* NSColor+KMExtensions.swift */; };
-		9F0CB4C6298625F400007028 /* NSColor+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0CB4C3298625F400007028 /* NSColor+KMExtensions.swift */; };
 		9F0CB4C92986533F00007028 /* KMDesignToken+Sizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0CB4C82986533F00007028 /* KMDesignToken+Sizing.swift */; };
 		9F0CB4CA2986533F00007028 /* KMDesignToken+Sizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0CB4C82986533F00007028 /* KMDesignToken+Sizing.swift */; };
 		9F0CB4CB2986533F00007028 /* KMDesignToken+Sizing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F0CB4C82986533F00007028 /* KMDesignToken+Sizing.swift */; };
@@ -729,9 +753,6 @@
 		9F1F82EA2935D02E0092C4B4 /* KMComboBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1F82E92935D02E0092C4B4 /* KMComboBox.swift */; };
 		9F1F82EB2935D02E0092C4B4 /* KMComboBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1F82E92935D02E0092C4B4 /* KMComboBox.swift */; };
 		9F1F82EC2935D02E0092C4B4 /* KMComboBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1F82E92935D02E0092C4B4 /* KMComboBox.swift */; };
-		9F1F82F229373D6E0092C4B4 /* String+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1F82F129373D6E0092C4B4 /* String+KMExtensions.swift */; };
-		9F1F82F329373D6E0092C4B4 /* String+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1F82F129373D6E0092C4B4 /* String+KMExtensions.swift */; };
-		9F1F82F429373D6E0092C4B4 /* String+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1F82F129373D6E0092C4B4 /* String+KMExtensions.swift */; };
 		9F1FE3DE293EE51F00E952CA /* KMMainDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1FE3DD293EE51F00E952CA /* KMMainDocument.swift */; };
 		9F1FE3DF293EE51F00E952CA /* KMMainDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1FE3DD293EE51F00E952CA /* KMMainDocument.swift */; };
 		9F1FE3E0293EE51F00E952CA /* KMMainDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1FE3DD293EE51F00E952CA /* KMMainDocument.swift */; };
@@ -888,9 +909,6 @@
 		9F3D818A29A0A9A70087B5AD /* KMDesignButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */; };
 		9F3D818B29A0A9A70087B5AD /* KMDesignButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */; };
 		9F3D818C29A0A9A70087B5AD /* KMDesignButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */; };
-		9F3D818E29A22AD90087B5AD /* Date+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */; };
-		9F3D818F29A22AD90087B5AD /* Date+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */; };
-		9F3D819029A22AD90087B5AD /* Date+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */; };
 		9F3D819329A33A290087B5AD /* KMDesignDropdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D819129A33A290087B5AD /* KMDesignDropdown.swift */; };
 		9F3D819429A33A290087B5AD /* KMDesignDropdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D819129A33A290087B5AD /* KMDesignDropdown.swift */; };
 		9F3D819529A33A290087B5AD /* KMDesignDropdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D819129A33A290087B5AD /* KMDesignDropdown.swift */; };
@@ -951,9 +969,6 @@
 		9F72D20B2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F72D2072994BDAF00DCACF1 /* KMNotificationVC.xib */; };
 		9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F72D2072994BDAF00DCACF1 /* KMNotificationVC.xib */; };
 		9F72D20D2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F72D2072994BDAF00DCACF1 /* KMNotificationVC.xib */; };
-		9F81ADC629B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */; };
-		9F81ADC729B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */; };
-		9F81ADC829B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */; };
 		9F8539BE2943085A00DF644E /* KMBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8539BD2943085A00DF644E /* KMBrowser.swift */; };
 		9F8539BF2943085A00DF644E /* KMBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8539BD2943085A00DF644E /* KMBrowser.swift */; };
 		9F8539C02943085A00DF644E /* KMBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8539BD2943085A00DF644E /* KMBrowser.swift */; };
@@ -1032,9 +1047,6 @@
 		9F8810A02B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F88109C2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib */; };
 		9F8810A12B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F88109C2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib */; };
 		9F8810A22B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F88109C2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib */; };
-		9F8DDF2629237910006CDC73 /* Array+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8DDF2529237910006CDC73 /* Array+KMExtensions.swift */; };
-		9F8DDF2729237910006CDC73 /* Array+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8DDF2529237910006CDC73 /* Array+KMExtensions.swift */; };
-		9F8DDF2829237910006CDC73 /* Array+KMExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8DDF2529237910006CDC73 /* Array+KMExtensions.swift */; };
 		9F8DDF342924DA6B006CDC73 /* KMPDFToolsCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8DDF332924DA6B006CDC73 /* KMPDFToolsCollectionView.swift */; };
 		9F8DDF352924DA6B006CDC73 /* KMPDFToolsCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8DDF332924DA6B006CDC73 /* KMPDFToolsCollectionView.swift */; };
 		9F8DDF362924DA6B006CDC73 /* KMPDFToolsCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8DDF332924DA6B006CDC73 /* KMPDFToolsCollectionView.swift */; };
@@ -1074,9 +1086,6 @@
 		9FAAA339290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAAA338290F72CC0046FFCE /* KMHistoryFileCollectionView.swift */; };
 		9FAAA33A290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAAA338290F72CC0046FFCE /* KMHistoryFileCollectionView.swift */; };
 		9FAAA33B290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAAA338290F72CC0046FFCE /* KMHistoryFileCollectionView.swift */; };
-		9FAAA33E290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAAA33D290FECA70046FFCE /* NSImage+QuickLook.swift */; };
-		9FAAA33F290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAAA33D290FECA70046FFCE /* NSImage+QuickLook.swift */; };
-		9FAAA340290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FAAA33D290FECA70046FFCE /* NSImage+QuickLook.swift */; };
 		9FB220D72B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FB220D52B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift */; };
 		9FB220D82B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FB220D52B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift */; };
 		9FB220D92B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FB220D52B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift */; };
@@ -1134,9 +1143,6 @@
 		9FBC489B2996500300CA39D7 /* KMDocumentController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBC489A2996500300CA39D7 /* KMDocumentController.swift */; };
 		9FBC489C2996500300CA39D7 /* KMDocumentController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBC489A2996500300CA39D7 /* KMDocumentController.swift */; };
 		9FBC489D2996500300CA39D7 /* KMDocumentController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBC489A2996500300CA39D7 /* KMDocumentController.swift */; };
-		9FBC48BF299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBC48BE299E23B100CA39D7 /* NSViewController+DesignToken.swift */; };
-		9FBC48C0299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBC48BE299E23B100CA39D7 /* NSViewController+DesignToken.swift */; };
-		9FBC48C1299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBC48BE299E23B100CA39D7 /* NSViewController+DesignToken.swift */; };
 		9FC444FA2AA61EDE00D7187C /* ZipArchive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FC444F82AA5F7D600D7187C /* ZipArchive.framework */; };
 		9FC444FB2AA61EDE00D7187C /* ZipArchive.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9FC444F82AA5F7D600D7187C /* ZipArchive.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		9FCFEC682AC2EAD500EAD2CB /* CPDFListViewColorMenuItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FCFEC672AC2EAD500EAD2CB /* CPDFListViewColorMenuItemView.swift */; };
@@ -3421,9 +3427,6 @@
 		BB4583BF2CC8C53C005737F3 /* KMPDFToolbarConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB4583BE2CC8C53C005737F3 /* KMPDFToolbarConfig.swift */; };
 		BB4583C02CC8C53C005737F3 /* KMPDFToolbarConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB4583BE2CC8C53C005737F3 /* KMPDFToolbarConfig.swift */; };
 		BB4583C12CC8C53C005737F3 /* KMPDFToolbarConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB4583BE2CC8C53C005737F3 /* KMPDFToolbarConfig.swift */; };
-		BB4583C62CC91543005737F3 /* NSImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB4583C52CC91543005737F3 /* NSImage+Extension.swift */; };
-		BB4583C72CC91543005737F3 /* NSImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB4583C52CC91543005737F3 /* NSImage+Extension.swift */; };
-		BB4583C82CC91543005737F3 /* NSImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB4583C52CC91543005737F3 /* NSImage+Extension.swift */; };
 		BB46CF482AFB7E5C00281EDF /* InitialUserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */; };
 		BB46CF492AFB7E5C00281EDF /* InitialUserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */; };
 		BB46CF4A2AFB7E5C00281EDF /* InitialUserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */; };
@@ -4901,9 +4904,6 @@
 		BBD426802B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */; };
 		BBD426812B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */; };
 		BBD54ECA2A1C53A80012A230 /* libopencv_world.4.2.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BB9DCC7D2A09FC740024A6F1 /* libopencv_world.4.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		BBD54ED42A1CBD720012A230 /* NSView+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD54ED32A1CBD720012A230 /* NSView+KMExtension.swift */; };
-		BBD54ED52A1CBD720012A230 /* NSView+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD54ED32A1CBD720012A230 /* NSView+KMExtension.swift */; };
-		BBD54ED62A1CBD720012A230 /* NSView+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD54ED32A1CBD720012A230 /* NSView+KMExtension.swift */; };
 		BBD7FDFB2A13210700F96075 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADE3C1C729A5A75E00793B13 /* AFNetworking.framework */; };
 		BBD7FDFC2A13210700F96075 /* AFNetworking.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = ADE3C1C729A5A75E00793B13 /* AFNetworking.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		BBD7FDFD2A13210A00F96075 /* ComPDFKit_Conversion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADA08A8029F13EE1009B2A7B /* ComPDFKit_Conversion.framework */; };
@@ -5888,6 +5888,15 @@
 		65A971272CBA1792008DB0F9 /* KMToolbarPageInputItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarPageInputItemView.swift; sourceTree = "<group>"; };
 		65AD98882CB615F000927779 /* KMNoteFilterStateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMNoteFilterStateViewModel.swift; sourceTree = "<group>"; };
 		65AED4B22CAA55A8005C44B3 /* KMMergeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMergeViewModel.swift; sourceTree = "<group>"; };
+		65B1438B2CF06B96001B5A69 /* NSButton+DesignToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSButton+DesignToken.swift"; sourceTree = "<group>"; };
+		65B1438C2CF06B96001B5A69 /* NSView+KMExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSView+KMExtension.swift"; sourceTree = "<group>"; };
+		65B1438D2CF06B96001B5A69 /* NSViewController+DesignToken.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSViewController+DesignToken.swift"; sourceTree = "<group>"; };
+		65B1438F2CF06B97001B5A69 /* NSImage+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSImage+Extension.swift"; sourceTree = "<group>"; };
+		65B143902CF06B97001B5A69 /* Date+KMExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Date+KMExtensions.swift"; sourceTree = "<group>"; };
+		65B143912CF06B97001B5A69 /* NSImage+QuickLook.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSImage+QuickLook.swift"; sourceTree = "<group>"; };
+		65B143922CF06B97001B5A69 /* Array+KMExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+KMExtensions.swift"; sourceTree = "<group>"; };
+		65B143932CF06B97001B5A69 /* NSColor+KMExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSColor+KMExtensions.swift"; sourceTree = "<group>"; };
+		65B143942CF06B97001B5A69 /* String+KMExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+KMExtensions.swift"; sourceTree = "<group>"; };
 		65C9CAE62CA16231009794E5 /* libpaddle2onnx.1.0.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libpaddle2onnx.1.0.7.dylib; sourceTree = "<group>"; };
 		65C9CAE72CA16232009794E5 /* ComDocumentAIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ComDocumentAIKit.framework; sourceTree = "<group>"; };
 		65C9CAE82CA16232009794E5 /* libDocumentAI.3.3.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libDocumentAI.3.3.3.dylib; sourceTree = "<group>"; };
@@ -6004,7 +6013,6 @@
 		9F0CB4B42977BC1000007028 /* KMPropertiesPanelPreviewSubVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPropertiesPanelPreviewSubVC.xib; sourceTree = "<group>"; };
 		9F0CB4BB2977C06300007028 /* KMPropertiesPanelColorSubVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPropertiesPanelColorSubVC.swift; sourceTree = "<group>"; };
 		9F0CB4BC2977C06300007028 /* KMPropertiesPanelColorSubVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPropertiesPanelColorSubVC.xib; sourceTree = "<group>"; };
-		9F0CB4C3298625F400007028 /* NSColor+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSColor+KMExtensions.swift"; sourceTree = "<group>"; };
 		9F0CB4C82986533F00007028 /* KMDesignToken+Sizing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMDesignToken+Sizing.swift"; sourceTree = "<group>"; };
 		9F0CB4CC298654FA00007028 /* KMDesignToken+Height.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMDesignToken+Height.swift"; sourceTree = "<group>"; };
 		9F0CB4D02986550B00007028 /* KMDesignToken+Width.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMDesignToken+Width.swift"; sourceTree = "<group>"; };
@@ -6045,7 +6053,6 @@
 		9F1F82E12934D5240092C4B4 /* KMHomeExtractActionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMHomeExtractActionViewController.swift; sourceTree = "<group>"; };
 		9F1F82E22934D5240092C4B4 /* KMHomeExtractActionViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMHomeExtractActionViewController.xib; sourceTree = "<group>"; };
 		9F1F82E92935D02E0092C4B4 /* KMComboBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMComboBox.swift; sourceTree = "<group>"; };
-		9F1F82F129373D6E0092C4B4 /* String+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+KMExtensions.swift"; sourceTree = "<group>"; };
 		9F1FE3DD293EE51F00E952CA /* KMMainDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMainDocument.swift; sourceTree = "<group>"; };
 		9F1FE3F3293F4F0F00E952CA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		9F1FE43629406E4700E952CA /* common.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = common.m; sourceTree = "<group>"; };
@@ -6141,7 +6148,6 @@
 		9F3BCDC72CCB749400BDAB67 /* 快速教学.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "快速教学.pdf"; sourceTree = "<group>"; };
 		9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDesignButton.swift; sourceTree = "<group>"; };
 		9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDesignButton.xib; sourceTree = "<group>"; };
-		9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+KMExtensions.swift"; sourceTree = "<group>"; };
 		9F3D819129A33A290087B5AD /* KMDesignDropdown.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDesignDropdown.swift; sourceTree = "<group>"; };
 		9F3D819229A33A290087B5AD /* KMDesignDropdown.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDesignDropdown.xib; sourceTree = "<group>"; };
 		9F53D5462AD664C300CCF9D8 /* CPDFListHoverAnnotationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CPDFListHoverAnnotationViewController.swift; sourceTree = "<group>"; };
@@ -6162,7 +6168,6 @@
 		9F72D2022994A3B800DCACF1 /* KMDesignToken+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMDesignToken+Notification.swift"; sourceTree = "<group>"; };
 		9F72D2062994BDAF00DCACF1 /* KMNotificationVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMNotificationVC.swift; sourceTree = "<group>"; };
 		9F72D2072994BDAF00DCACF1 /* KMNotificationVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMNotificationVC.xib; sourceTree = "<group>"; };
-		9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSButton+DesignToken.swift"; sourceTree = "<group>"; };
 		9F8539BD2943085A00DF644E /* KMBrowser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBrowser.swift; sourceTree = "<group>"; };
 		9F8539C529430AC400DF644E /* KMToolbarRightView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarRightView.swift; sourceTree = "<group>"; };
 		9F8539C929430BF300DF644E /* KMBrowserWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBrowserWindowController.swift; sourceTree = "<group>"; };
@@ -6189,7 +6194,6 @@
 		9F8810942B56877C00F69815 /* KMAnnotationChoiceWidgetOptionsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAnnotationChoiceWidgetOptionsViewController.xib; sourceTree = "<group>"; };
 		9F88109B2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAnnotationButtonOptionsViewController.swift; sourceTree = "<group>"; };
 		9F88109C2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAnnotationButtonOptionsViewController.xib; sourceTree = "<group>"; };
-		9F8DDF2529237910006CDC73 /* Array+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+KMExtensions.swift"; sourceTree = "<group>"; };
 		9F8DDF332924DA6B006CDC73 /* KMPDFToolsCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFToolsCollectionView.swift; sourceTree = "<group>"; };
 		9F94617B2BD643720076574B /* KMTableAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMTableAnnotation.m; sourceTree = "<group>"; };
 		9F94617C2BD643720076574B /* KMTableAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMTableAnnotation.h; sourceTree = "<group>"; };
@@ -6206,7 +6210,6 @@
 		9FA693A72987C0590055488A /* KMStepperView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMStepperView.xib; sourceTree = "<group>"; };
 		9FAAA324290A69920046FFCE /* KMToolSetScroller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolSetScroller.swift; sourceTree = "<group>"; };
 		9FAAA338290F72CC0046FFCE /* KMHistoryFileCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMHistoryFileCollectionView.swift; sourceTree = "<group>"; };
-		9FAAA33D290FECA70046FFCE /* NSImage+QuickLook.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+QuickLook.swift"; sourceTree = "<group>"; };
 		9FB220D52B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAnnotationSelectLinkViewController.swift; sourceTree = "<group>"; };
 		9FB220D62B0F4ED400A5B208 /* KMAnnotationSelectLinkViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAnnotationSelectLinkViewController.xib; sourceTree = "<group>"; };
 		9FB220DD2B10850400A5B208 /* KMAnnotationStampViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAnnotationStampViewController.swift; sourceTree = "<group>"; };
@@ -6226,7 +6229,6 @@
 		9FBA0EFC29015A82001117AF /* KMFastToolCollectionViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFastToolCollectionViewItem.swift; sourceTree = "<group>"; };
 		9FBA0EFD29015A82001117AF /* KMFastToolCollectionViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMFastToolCollectionViewItem.xib; sourceTree = "<group>"; };
 		9FBC489A2996500300CA39D7 /* KMDocumentController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDocumentController.swift; sourceTree = "<group>"; };
-		9FBC48BE299E23B100CA39D7 /* NSViewController+DesignToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSViewController+DesignToken.swift"; sourceTree = "<group>"; };
 		9FBDA7282A4D32A500A972F3 /* KMWebsocket.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMWebsocket.swift; sourceTree = "<group>"; };
 		9FBDA72C2A4D532700A972F3 /* KMWebsocketManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMWebsocketManager.swift; sourceTree = "<group>"; };
 		9FC444F82AA5F7D600D7187C /* ZipArchive.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ZipArchive.framework; sourceTree = "<group>"; };
@@ -7127,7 +7129,6 @@
 		BB42A5D72B8ED7960092C524 /* KMTabbingHintWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMTabbingHintWindowController.xib; sourceTree = "<group>"; };
 		BB42C7EB2B46421B003FF2D4 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
 		BB4583BE2CC8C53C005737F3 /* KMPDFToolbarConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFToolbarConfig.swift; sourceTree = "<group>"; };
-		BB4583C52CC91543005737F3 /* NSImage+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+Extension.swift"; sourceTree = "<group>"; };
 		BB46CF472AFB7E5C00281EDF /* InitialUserDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = InitialUserDefaults.plist; sourceTree = "<group>"; };
 		BB46CF4B2AFBB34800281EDF /* AutoSaveManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoSaveManager.swift; sourceTree = "<group>"; };
 		BB48F8702BE07DAA002DA996 /* KMMainModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMainModel.swift; sourceTree = "<group>"; };
@@ -7723,7 +7724,6 @@
 		BBD25BF02B18768600EB85D4 /* KMCompressOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCompressOperation.swift; sourceTree = "<group>"; };
 		BBD3C8B52B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarPreviousNextItemView.swift; sourceTree = "<group>"; };
 		BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMTextFieldCell.swift; sourceTree = "<group>"; };
-		BBD54ED32A1CBD720012A230 /* NSView+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSView+KMExtension.swift"; sourceTree = "<group>"; };
 		BBD6D4832B881E2100369F7D /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Main.strings"; sourceTree = "<group>"; };
 		BBD6D4842B881E2200369F7D /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Main.strings"; sourceTree = "<group>"; };
 		BBD6D4852B881E2200369F7D /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
@@ -8506,6 +8506,29 @@
 			path = Model;
 			sourceTree = "<group>";
 		};
+		65B1438A2CF06B96001B5A69 /* AppKit */ = {
+			isa = PBXGroup;
+			children = (
+				65B1438B2CF06B96001B5A69 /* NSButton+DesignToken.swift */,
+				65B1438C2CF06B96001B5A69 /* NSView+KMExtension.swift */,
+				65B1438D2CF06B96001B5A69 /* NSViewController+DesignToken.swift */,
+			);
+			path = AppKit;
+			sourceTree = "<group>";
+		};
+		65B1438E2CF06B97001B5A69 /* Foundation */ = {
+			isa = PBXGroup;
+			children = (
+				65B1438F2CF06B97001B5A69 /* NSImage+Extension.swift */,
+				65B143902CF06B97001B5A69 /* Date+KMExtensions.swift */,
+				65B143912CF06B97001B5A69 /* NSImage+QuickLook.swift */,
+				65B143922CF06B97001B5A69 /* Array+KMExtensions.swift */,
+				65B143932CF06B97001B5A69 /* NSColor+KMExtensions.swift */,
+				65B143942CF06B97001B5A69 /* String+KMExtensions.swift */,
+			);
+			path = Foundation;
+			sourceTree = "<group>";
+		};
 		65C9CAFF2CA16B36009794E5 /* Resource */ = {
 			isa = PBXGroup;
 			children = (
@@ -9382,15 +9405,8 @@
 		9FAAA33C290FEC4D0046FFCE /* Category */ = {
 			isa = PBXGroup;
 			children = (
-				9FAAA33D290FECA70046FFCE /* NSImage+QuickLook.swift */,
-				9F8DDF2529237910006CDC73 /* Array+KMExtensions.swift */,
-				9F1F82F129373D6E0092C4B4 /* String+KMExtensions.swift */,
-				9F0CB4C3298625F400007028 /* NSColor+KMExtensions.swift */,
-				9FBC48BE299E23B100CA39D7 /* NSViewController+DesignToken.swift */,
-				9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */,
-				9F81ADC529B9B12C002251F4 /* NSButton+DesignToken.swift */,
-				BBD54ED32A1CBD720012A230 /* NSView+KMExtension.swift */,
-				BB4583C52CC91543005737F3 /* NSImage+Extension.swift */,
+				65B1438A2CF06B96001B5A69 /* AppKit */,
+				65B1438E2CF06B97001B5A69 /* Foundation */,
 			);
 			path = Category;
 			sourceTree = "<group>";
@@ -17086,6 +17102,7 @@
 				9F705F8D291E579F005199AD /* KMHistoryFileTableView.swift in Sources */,
 				BB003035298D356E002DD1A0 /* KMPreferenceMarkupColorView.swift in Sources */,
 				ADE614AC29779C5200F62ED7 /* KMImageTitleButton.swift in Sources */,
+				65B143982CF06B97001B5A69 /* NSView+KMExtension.swift in Sources */,
 				9FF94F0929A62B5000B1EF69 /* KMDesignSelect.swift in Sources */,
 				AD1FE81D2BD7C98300AA4A9B /* KMBookletManager.m in Sources */,
 				BB146FBD299DC0D100784A6A /* GTMGatherInputStream.m in Sources */,
@@ -17208,7 +17225,6 @@
 				BB853C8A2AF8BC7D009C20C1 /* KMBatchAddPasswordOperation.swift in Sources */,
 				9F0CB5112986565700007028 /* KMDesignToken+BorderRadius.swift in Sources */,
 				AD7D5CA02B8F34EC006562CD /* SKPDFSynchronizer.m in Sources */,
-				9F81ADC629B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BBEC00C7295C319400A26C98 /* KMBatesManager.swift in Sources */,
 				BB147020299DC0D100784A6A /* OIDServiceDiscovery.m in Sources */,
 				AD3AAD7D2B0DFFB100DE5FE7 /* KMAngleIndicateView.swift in Sources */,
@@ -17261,7 +17277,6 @@
 				AD055EC42B8846EB0035F824 /* SKOutlineView.m in Sources */,
 				BB072D5E2C05AC8F00779B45 /* KMToolbarConfigViewItem.swift in Sources */,
 				AD7D5CA52B8F35D1006562CD /* SKPDFSyncRecord.m in Sources */,
-				9F1F82F229373D6E0092C4B4 /* String+KMExtensions.swift in Sources */,
 				BB897236294B38DC0045787C /* KMWatermarkAdjectivePropertyBaseController.swift in Sources */,
 				BB072D562C057BD600779B45 /* KMToolbarConfigWindowController.swift in Sources */,
 				AD85D19E2AEF927D000F4D28 /* KMQucikToolsModel.swift in Sources */,
@@ -17326,7 +17341,6 @@
 				BB88E454294045B4002B3655 /* KMPDFConvertManager.swift in Sources */,
 				ADDF83202B391A5C00A81A4E /* KMPDFDigitalSignViewController.swift in Sources */,
 				BB52F5512CC1FAB2007418DB /* KMLinkViewController.swift in Sources */,
-				BBD54ED42A1CBD720012A230 /* NSView+KMExtension.swift in Sources */,
 				BB13314E2AD78DC0008F6791 /* KMPDFMergeSizeTabelViewCell.swift in Sources */,
 				BBBE20932B21B18900509C4E /* KMPDFInsertWindowController.swift in Sources */,
 				BBC28F4A2B0F509B00D73206 /* KMAnimatedBorderlessWindow.swift in Sources */,
@@ -17361,9 +17375,9 @@
 				AD7D5CB32B9070AF006562CD /* KMSyncDot.swift in Sources */,
 				BB91383F2CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */,
 				BB2A98522B270B3300647AF3 /* KMBatchAddBackgroundOperation.swift in Sources */,
-				9F0CB4C4298625F400007028 /* NSColor+KMExtensions.swift in Sources */,
 				BBD1F78F296FE6A500343885 /* KMPageEditSplitWindowController.swift in Sources */,
 				9F1FE50529406E4700E952CA /* CTTabStripDragController.m in Sources */,
+				65B143AA2CF06B97001B5A69 /* NSColor+KMExtensions.swift in Sources */,
 				BBEB93EB2AD6C2AE00739573 /* KMPDFMergeFileNameTabelViewCell.swift in Sources */,
 				BBA9222B2B4E96450061057A /* KMPurchaseCompareWindowController.m in Sources */,
 				9F1FE4CF29406E4700E952CA /* CTTabController.m in Sources */,
@@ -17417,6 +17431,7 @@
 				BB1B0AC52B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */,
 				BB48F8712BE07DAA002DA996 /* KMMainModel.swift in Sources */,
 				AD199DF82B26A36500D56FEE /* KMPrintPosterPreviewView.swift in Sources */,
+				65B143952CF06B97001B5A69 /* NSButton+DesignToken.swift in Sources */,
 				BBE3709D2CB8BD3700390884 /* HistoryFile.swift in Sources */,
 				BB3AD6F929935483004FC1AE /* Reachability.m in Sources */,
 				AD1FE84C2BD920C300AA4A9B /* TextFieldFormatter.m in Sources */,
@@ -17509,6 +17524,7 @@
 				BB30D4822B90249D00702541 /* KMStatusBar.m in Sources */,
 				BB146FB1299DC0D100784A6A /* GTLRErrorObject.m in Sources */,
 				ADAFDA482AEA7F1300F084BC /* KMAdvertisementShowView.swift in Sources */,
+				65B143A72CF06B97001B5A69 /* Array+KMExtensions.swift in Sources */,
 				BB03D6942B021124008C9976 /* NSSegmentedControl+KMExtension.swift in Sources */,
 				9F9461872BD644BF0076574B /* KMTableCellData.m in Sources */,
 				BBC28F412B0EE7D600D73206 /* KMGroupFindTableRowView.swift in Sources */,
@@ -17597,7 +17613,6 @@
 				BBB789BD2BE8BF2400F7E09C /* AIChatStringUploadItem.swift in Sources */,
 				BBEFD01C2AF9E5AA003FABD8 /* KMBatchOperateAddHeaderFooterViewController.swift in Sources */,
 				BB19A7672CB7D0F4008204DC /* KMHomeFilesEmptyHeaderView.swift in Sources */,
-				9F3D818E29A22AD90087B5AD /* Date+KMExtensions.swift in Sources */,
 				89E4E755296427E5002DBA6F /* NSImage_SKExtensions.m in Sources */,
 				BB4A94A02B04D8EC00940F8B /* KMGOCRManager.m in Sources */,
 				BB6DD821293497B6001F0544 /* KMSecureEncryptModel.swift in Sources */,
@@ -17662,7 +17677,6 @@
 				BB4EEF3429764166003A3537 /* KMRedactPropertyWindowController.swift in Sources */,
 				BBFEF7272B3A78EC00C28AC0 /* KMSystemToolMenu.swift in Sources */,
 				BB6013842AD3A0DE00A76FB2 /* CPDFTextWidgetAnnotation+PDFListView.swift in Sources */,
-				9F8DDF2629237910006CDC73 /* Array+KMExtensions.swift in Sources */,
 				BB8F4560295AA39F0037EA22 /* KMHeaderFooterObject.swift in Sources */,
 				BB93C3162B9EFC9800A926E6 /* AITranslateTipWindowController.swift in Sources */,
 				BBB9B325299A5D6D004F3235 /* GTMKeychain_macOS.m in Sources */,
@@ -17674,7 +17688,6 @@
 				BBD1F798296FF78C00343885 /* KMPageEditSettingBaseModel.swift in Sources */,
 				BB4F7E892B0C55E70077EC8C /* KMFilterAuthorLabel.swift in Sources */,
 				653647702CDC8C3700CDB13E /* KMNTableHeaderCellView.swift in Sources */,
-				9FAAA33E290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */,
 				AD85D1B92AF0D2CA000F4D28 /* KMHomeQuickToolsCollectionView.swift in Sources */,
 				BBBB6CDE2AD174080035AA66 /* CPDFInkAnnotation+PDFListView.swift in Sources */,
 				9F0CB4D52986551600007028 /* KMDesignToken+Spacing.swift in Sources */,
@@ -17722,6 +17735,7 @@
 				BB93CDE92AE7B6E100B29C57 /* KMToolbarView.swift in Sources */,
 				F321C1E42CD9EF74009982C8 /* KMPasswordInputWindow.swift in Sources */,
 				BB2F18462A0C7E250003F65E /* KMConvertBaseView.swift in Sources */,
+				65B143A12CF06B97001B5A69 /* Date+KMExtensions.swift in Sources */,
 				BB99ACCA292DEE6E0048AFD9 /* KMMergeTitleBar.swift in Sources */,
 				ADBC174F2A2991F700959CEE /* KMPurchaseManager.swift in Sources */,
 				BB67EE262B54FFEF00573BF0 /* ASINetworkQueue.m in Sources */,
@@ -17756,6 +17770,7 @@
 				BB2C84692BAE716600AF6142 /* KMSegmentedControl.swift in Sources */,
 				ADB2D6ED2947415E0029D2B3 /* KMPrintPaperSetView.swift in Sources */,
 				BB1B0A9D2B4FB88100889528 /* IAPProductsManager.m in Sources */,
+				65B143A42CF06B97001B5A69 /* NSImage+QuickLook.swift in Sources */,
 				BB147026299DC0D100784A6A /* OIDTokenRequest.m in Sources */,
 				BB2F61582966B69D001CB369 /* KMWatermarkPropertyHomeController.swift in Sources */,
 				ADDF83412B391A5C00A81A4E /* DSignatureConfigWindowController.swift in Sources */,
@@ -17784,6 +17799,7 @@
 				AD1FE8262BD7C98300AA4A9B /* KMBookletPDFView.m in Sources */,
 				ADE86A802B02220700414DFA /* KMSecurityView.swift in Sources */,
 				BB0FE03D2B734DD1001E0F88 /* AITipIconView.swift in Sources */,
+				65B1439B2CF06B97001B5A69 /* NSViewController+DesignToken.swift in Sources */,
 				BB4A94912B04926700940F8B /* KMGOCROperation.swift in Sources */,
 				BBEFD0242AFA065F003FABD8 /* KMBatchAddHeaderFooterOperation.swift in Sources */,
 				BB135C2A29B6CD9A00FD5965 /* KMTools.swift in Sources */,
@@ -17931,7 +17947,6 @@
 				BBE788A82CBD2463008086E2 /* SidebarDemoVC.swift in Sources */,
 				ADBC2D37299F0A5A006280C8 /* KMPrintHelpViewController.swift in Sources */,
 				BBB9428B2BA2CB6A00542373 /* KMAdsInfo.swift in Sources */,
-				9FBC48BF299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */,
 				BB6B4C0C292F62B20071CA06 /* KMPDFThumbnialPageView.swift in Sources */,
 				9FCFEC682AC2EAD500EAD2CB /* CPDFListViewColorMenuItemView.swift in Sources */,
 				BB2EDF46296E4618003BCF58 /* KMPageEditTools.swift in Sources */,
@@ -17949,6 +17964,7 @@
 				653647C22CDCA5DE00CDB13E /* KMBatchOperateLeftViewController.swift in Sources */,
 				899700E828F3E4D3009AF911 /* MainWindowController.swift in Sources */,
 				BB8F4572295ACE380037EA22 /* KMHeaderFooterAdjectiveListCell.swift in Sources */,
+				65B1439E2CF06B97001B5A69 /* NSImage+Extension.swift in Sources */,
 				BB072D662C05B44300779B45 /* KMToolbarConfigModel.swift in Sources */,
 				BB0FE04C2B734DD1001E0F88 /* AIPurchaseWindowController.swift in Sources */,
 				653647E32CDCA77C00CDB13E /* KMBatchWindow.swift in Sources */,
@@ -18093,7 +18109,6 @@
 				BBD3C8B62B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift in Sources */,
 				BBFEF71F2B3A787900C28AC0 /* KMSystemAnnotationMenu.swift in Sources */,
 				8942F817292B678100389627 /* KMAnnotationTableCellView.swift in Sources */,
-				BB4583C62CC91543005737F3 /* NSImage+Extension.swift in Sources */,
 				9FE0BBF02B0F2FB000CD1CAC /* KMAnnotationLineWindowController.swift in Sources */,
 				BB1A91732AFB8D95005E5FD8 /* KMBookletMaskView.swift in Sources */,
 				9F1FE4F629406E4700E952CA /* CTFloatingBarBackingView.m in Sources */,
@@ -18252,6 +18267,7 @@
 				BB8810BE2B4F872500AFA63E /* KMVerificationWindowController.m in Sources */,
 				ADDF83322B391A5C00A81A4E /* CPDFAnnotation+PDFListView.m in Sources */,
 				ADA9102E2A272CEA003352F0 /* KMImageOptimization.swift in Sources */,
+				65B143AD2CF06B97001B5A69 /* String+KMExtensions.swift in Sources */,
 				AD9527C2295294EF0039D2BC /* KMPrintPaperModel.swift in Sources */,
 				658FDBB22C9D90CE00EFA72E /* KMNoteFilterStateCollevtionViewItem.swift in Sources */,
 				9F0CB525298656BA00007028 /* KMDesignToken+BorderWidth.swift in Sources */,
@@ -18530,6 +18546,7 @@
 				BB86C1EE28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				9F1FE4A029406E4700E952CA /* HoverButton.m in Sources */,
 				BB1CA5CC298E5F540059E31C /* KMMergeTools.swift in Sources */,
+				65B143A22CF06B97001B5A69 /* Date+KMExtensions.swift in Sources */,
 				89D9896D28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.swift in Sources */,
 				BB146FDF299DC0D100784A6A /* GTLRDriveObjects.m in Sources */,
 				F321C2112CDA0C5E009982C8 /* BaseXibView.swift in Sources */,
@@ -18539,7 +18556,6 @@
 				BBF811E12B07178F0074874F /* KMExtractImageWindowController.swift in Sources */,
 				AD055E6D2B8732680035F824 /* SKTextWithIconCell.m in Sources */,
 				BB86C1EE28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
-				9F81ADC729B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BB671A022AD2D2A0003D44D5 /* CPDFStampAnnotation+PDFListView.swift in Sources */,
 				BB8810D12B4F980E00AFA63E /* NSNULL+Filtration.m in Sources */,
 				AD58F4202B1DC29100299EE0 /* KMPrintViewModel.swift in Sources */,
@@ -18580,7 +18596,6 @@
 				AD3AAD392B0B7B1900DE5FE7 /* KMCompareToolbar.swift in Sources */,
 				BB19A7682CB7D0F4008204DC /* KMHomeFilesEmptyHeaderView.swift in Sources */,
 				ADE86AD72B05A52B00414DFA /* KMCompareFilesConfig.swift in Sources */,
-				9F1F82F329373D6E0092C4B4 /* String+KMExtensions.swift in Sources */,
 				ADDEEA5F2AD39DC500EF675D /* KMSignatureManager.swift in Sources */,
 				9FD0FA4C29D43D6800F2AB0D /* KMDeviceBrowserWindowController.swift in Sources */,
 				AD015FB829AB484400A57062 /* KMLightMemberConfig.swift in Sources */,
@@ -18649,6 +18664,7 @@
 				BBBB6CCB2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */,
 				9FCFECA92AD243C900EAD2CB /* KMBlankView.swift in Sources */,
 				BB3AAB9A2987BEA900992A5A /* KMWatermarkPDFView_OC.m in Sources */,
+				65B1439F2CF06B97001B5A69 /* NSImage+Extension.swift in Sources */,
 				F3F0B27429B8ACD000722957 /* CPDFListViewDragObject.m in Sources */,
 				ADE86A792B0221E100414DFA /* KMSecurityWindowController.swift in Sources */,
 				BB88E455294045B4002B3655 /* KMPDFConvertManager.swift in Sources */,
@@ -18668,7 +18684,6 @@
 				BB8F4550295A9FA50037EA22 /* KMCreateHeaderFooterController.swift in Sources */,
 				9FA693A92987C0590055488A /* KMStepperView.swift in Sources */,
 				BBC745F3295F0DD00072C2ED /* KMCropSettingPageSizeView.swift in Sources */,
-				9F0CB4C5298625F400007028 /* NSColor+KMExtensions.swift in Sources */,
 				BBD1F790296FE6A500343885 /* KMPageEditSplitWindowController.swift in Sources */,
 				9F1FE50629406E4700E952CA /* CTTabStripDragController.m in Sources */,
 				9F1FE4D029406E4700E952CA /* CTTabController.m in Sources */,
@@ -18742,6 +18757,7 @@
 				ADDF83212B391A5C00A81A4E /* KMPDFDigitalSignViewController.swift in Sources */,
 				AD1FE8452BD7C98300AA4A9B /* KMPDFPosterPrintWindowController.m in Sources */,
 				BBD14F602CDA16080077D52E /* KMWatermarkSaveWindow.swift in Sources */,
+				65B143992CF06B97001B5A69 /* NSView+KMExtension.swift in Sources */,
 				BBF38A5F294F42FF0086D025 /* KMWatermarkAdjectiveStepper.swift in Sources */,
 				ADBC17502A2991F700959CEE /* KMPurchaseManager.swift in Sources */,
 				BBD9222C2B50D50A00DB9585 /* iRate.m in Sources */,
@@ -18770,6 +18786,7 @@
 				9FB2210F2B1AE35E00A5B208 /* NSBitmapImageRep_KMExtension.swift in Sources */,
 				9F1FE4E529406E4700E952CA /* GTMNSColor+Luminance.m in Sources */,
 				BB8116002992682F0008F536 /* KMSecureLimitAlertView.swift in Sources */,
+				65B143AE2CF06B97001B5A69 /* String+KMExtensions.swift in Sources */,
 				BB52F5522CC1FAB2007418DB /* KMLinkViewController.swift in Sources */,
 				BBB14A5C2978EBBE00936EDB /* KMRedactMutilPageFlagContentView.swift in Sources */,
 				9F72D2042994A3B800DCACF1 /* KMDesignToken+Notification.swift in Sources */,
@@ -18777,6 +18794,7 @@
 				BB4EEF3D29764578003A3537 /* KMRedactPropertyContentView.swift in Sources */,
 				BB48F8722BE07DAA002DA996 /* KMMainModel.swift in Sources */,
 				BBFEF7242B3A78BC00C28AC0 /* KMSystemGotoMenu.swift in Sources */,
+				65B1439C2CF06B97001B5A69 /* NSViewController+DesignToken.swift in Sources */,
 				BB072D672C05B44300779B45 /* KMToolbarConfigModel.swift in Sources */,
 				BB147024299DC0D100784A6A /* OIDResponseTypes.m in Sources */,
 				BB162E93294FFE020088E9D1 /* KMWatermarkModel.swift in Sources */,
@@ -18865,7 +18883,6 @@
 				BBD1F794296FE92500343885 /* KMPageEditSplitSettingView.swift in Sources */,
 				BB072D5F2C05AC8F00779B45 /* KMToolbarConfigViewItem.swift in Sources */,
 				F38FB9402CBA535C00F0DBA5 /* KMNHomeQuickToolManager.swift in Sources */,
-				9F3D818F29A22AD90087B5AD /* Date+KMExtensions.swift in Sources */,
 				89E4E756296427E5002DBA6F /* NSImage_SKExtensions.m in Sources */,
 				AD1D481A2AFB6B96007AC1F0 /* KMMergeWindowController.swift in Sources */,
 				650FF6752CC897090019FAE1 /* NSWindowController+Extension.swift in Sources */,
@@ -18915,6 +18932,7 @@
 				658FDBB32C9D90CE00EFA72E /* KMNoteFilterStateCollevtionViewItem.swift in Sources */,
 				ADDEEA932AD796FF00EF675D /* KMSelfSignAnnotationFreeText.swift in Sources */,
 				ADD1B6ED2946C04C00C3FFF7 /* KMPrintChoosePageSizePamphletView.swift in Sources */,
+				65B143A82CF06B97001B5A69 /* Array+KMExtensions.swift in Sources */,
 				ADFCEB762B4FC1660001EBAF /* KMAdsWebView.swift in Sources */,
 				BB4EEF3529764166003A3537 /* KMRedactPropertyWindowController.swift in Sources */,
 				BBE788B22CBD2463008086E2 /* MessageVC.swift in Sources */,
@@ -18924,13 +18942,11 @@
 				BBFEF7142B3A766C00C28AC0 /* KMSystemMenu.swift in Sources */,
 				F39603E82CC641D2003C6F71 /* KMNThumbnailManager.swift in Sources */,
 				BBB9B326299A5D6D004F3235 /* GTMKeychain_macOS.m in Sources */,
-				BB4583C72CC91543005737F3 /* NSImage+Extension.swift in Sources */,
 				BB146FAF299DC0D100784A6A /* GTLRService.m in Sources */,
 				BB8B99FE2B355E7600A066EC /* KMLeftSideViewController+Action.swift in Sources */,
 				9F1FE4C729406E4700E952CA /* CTUtil.m in Sources */,
 				BBD1F799296FF78C00343885 /* KMPageEditSettingBaseModel.swift in Sources */,
 				BBB9428C2BA2CB6A00542373 /* KMAdsInfo.swift in Sources */,
-				9FAAA33F290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */,
 				9F0CB4D62986551600007028 /* KMDesignToken+Spacing.swift in Sources */,
 				BB88106E2B4F771D00AFA63E /* KMVerificationInfoViewController.m in Sources */,
 				65FABB322C9AFB0C00AA92E5 /* KMSectionCellView.swift in Sources */,
@@ -19080,6 +19096,7 @@
 				89D2D2BE29486D2400BFF5FE /* KMSignatureCellView.swift in Sources */,
 				BB147033299DC0D200784A6A /* OIDTokenResponse.m in Sources */,
 				BB146FF4299DC0D100784A6A /* OIDLoopbackHTTPServer.m in Sources */,
+				65B143A52CF06B97001B5A69 /* NSImage+QuickLook.swift in Sources */,
 				9F1FE49729406E4700E952CA /* common.c in Sources */,
 				BB955EBD2CD8E4600042FDE1 /* KMNWatermarkTemplateController.swift in Sources */,
 				BBB789C72BE8BF2400F7E09C /* AIRedoConfirmView.swift in Sources */,
@@ -19210,6 +19227,7 @@
 				BB2F9AB02AFCAE1F00F9DD93 /* KMProfileTitleCellView.swift in Sources */,
 				AD88109329A7612000178CA1 /* KMRegisterModel.swift in Sources */,
 				BBE788F72CBD2464008086E2 /* SliderVC.swift in Sources */,
+				65B143962CF06B97001B5A69 /* NSButton+DesignToken.swift in Sources */,
 				ADBC2D20299CDA29006280C8 /* NSView+Layer.swift in Sources */,
 				AD1CA3F82A05FCB60070541F /* KMAnnotationScreenViewController.swift in Sources */,
 				BBFEF7302B3A794700C28AC0 /* KMSystemViewMenu.swift in Sources */,
@@ -19217,7 +19235,6 @@
 				BB853C922AF8DCBF009C20C1 /* KMBatchOperateRemovePasswordViewController.swift in Sources */,
 				9FDD0F852952FC9C000C4DAD /* KMAliasLightParser.swift in Sources */,
 				ADBC2D38299F0A5A006280C8 /* KMPrintHelpViewController.swift in Sources */,
-				9FBC48C0299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */,
 				AD3AAD422B0B7B6C00DE5FE7 /* KMCompareManager.swift in Sources */,
 				BB6D2DAC2B674D7900624C24 /* CPDFPage+KMExtension.swift in Sources */,
 				BB853CAB2AF8FA46009C20C1 /* KMHeaderFooterManagerWindowController.swift in Sources */,
@@ -19241,7 +19258,6 @@
 				6536FDE82C9C49A6004A0FB9 /* KMNoteFooterCellView.swift in Sources */,
 				ADD1B7072946CBB600C3FFF7 /* KMBaseTextFormatter.swift in Sources */,
 				BB8F4573295ACE380037EA22 /* KMHeaderFooterAdjectiveListCell.swift in Sources */,
-				BBD54ED52A1CBD720012A230 /* NSView+KMExtension.swift in Sources */,
 				BB003010298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */,
 				BB8810772B4F785200AFA63E /* KMUnlockAlertViewController.m in Sources */,
 				89D2D2C229495D2100BFF5FE /* KMFormModel.swift in Sources */,
@@ -19390,6 +19406,7 @@
 				BB8F4558295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
 				AD055EBA2B8843FD0035F824 /* SKToolbarItem.m in Sources */,
 				BB146FB5299DC0D100784A6A /* GTLRUtilities.m in Sources */,
+				65B143AB2CF06B97001B5A69 /* NSColor+KMExtensions.swift in Sources */,
 				BBC745F8296178BD0072C2ED /* KMCropTools.swift in Sources */,
 				BBDA8A6E2A31F9A6006A2C4E /* KMDesignStepperView.swift in Sources */,
 				ADD1B6D82946BDFD00C3FFF7 /* KMPrintChoosePageSizeView.swift in Sources */,
@@ -19505,7 +19522,6 @@
 				BBEC00CD295C31F900A26C98 /* KMBatesModel.swift in Sources */,
 				BB897219294AED6C0045787C /* KMWatermarkAdjectivePreViewBaseController.swift in Sources */,
 				BB146FAC299DC0D000784A6A /* GTLRBatchQuery.m in Sources */,
-				9F8DDF2729237910006CDC73 /* Array+KMExtensions.swift in Sources */,
 				BBFEF7202B3A787900C28AC0 /* KMSystemAnnotationMenu.swift in Sources */,
 				ADE8BC3029F8CD7200570F89 /* KMPDFThumbnailModel.swift in Sources */,
 				BB90E4EF2AF3546500B04B9F /* NSUserDefaultsController+KMExtension.swift in Sources */,
@@ -19829,7 +19845,6 @@
 				89D9896E28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.swift in Sources */,
 				BB86C1EF28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				AD867FA329DEB4B000F00440 /* KMBOTAAnnotationTool.swift in Sources */,
-				9F1F82F429373D6E0092C4B4 /* String+KMExtensions.swift in Sources */,
 				9FDD0FB429534FEA000C4DAD /* KMGlobal.swift in Sources */,
 				BB2EDF78296ECE17003BCF58 /* KMPageEditInsertPageSizeItemView.swift in Sources */,
 				ADBC17512A2991F700959CEE /* KMPurchaseManager.swift in Sources */,
@@ -19892,7 +19907,6 @@
 				BB003037298D356E002DD1A0 /* KMPreferenceMarkupColorView.swift in Sources */,
 				BB1969CF2B2833DA00922736 /* KMProgressWindowController.swift in Sources */,
 				AD7D5C942B8F20FE006562CD /* synctex_parser_utils.m in Sources */,
-				9F0CB4C6298625F400007028 /* NSColor+KMExtensions.swift in Sources */,
 				BBC745F4295F0DD00072C2ED /* KMCropSettingPageSizeView.swift in Sources */,
 				BB4A949D2B04B77F00940F8B /* KMOCROperation.swift in Sources */,
 				BBEFD01E2AF9E5AA003FABD8 /* KMBatchOperateAddHeaderFooterViewController.swift in Sources */,
@@ -19987,6 +20001,7 @@
 				AD1FE84E2BD920C300AA4A9B /* TextFieldFormatter.m in Sources */,
 				ADE3C1C329A4C13700793B13 /* KMPrintAccessoryController_OC.m in Sources */,
 				BB5DF1EB2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.swift in Sources */,
+				65B143AF2CF06B97001B5A69 /* String+KMExtensions.swift in Sources */,
 				AD3AAD3A2B0B7B1900DE5FE7 /* KMCompareToolbar.swift in Sources */,
 				AD8DD2A52A9C35B2007CC9D0 /* KMThumbnailManager.swift in Sources */,
 				BB6719FF2AD2CE1B003D44D5 /* CPDFSquareAnnotation+PDFListView.swift in Sources */,
@@ -20070,7 +20085,6 @@
 				BBB9B30F299A5D6D004F3235 /* KMCloudUploadOperationQueue.m in Sources */,
 				BB14700D299DC0D100784A6A /* OIDAuthorizationRequest.m in Sources */,
 				9F9461892BD644BF0076574B /* KMTableCellData.m in Sources */,
-				BB4583C82CC91543005737F3 /* NSImage+Extension.swift in Sources */,
 				9F1FE4B329406E4700E952CA /* CTTabWindowController.m in Sources */,
 				BBFE6E812930EBD400142C01 /* KMCompressWindowController.swift in Sources */,
 				9F1FE4BF29406E4700E952CA /* URLDropTarget.m in Sources */,
@@ -20152,7 +20166,6 @@
 				BBCB9EA82CCDF65000563AC8 /* KMNDisplayViewController.swift in Sources */,
 				BB3D076B2CD08FDB00EB94DF /* KMSplitPDFViewController.swift in Sources */,
 				ADDEEA882AD7805200EF675D /* KMGeneralButton.swift in Sources */,
-				BBD54ED62A1CBD720012A230 /* NSView+KMExtension.swift in Sources */,
 				AD1FE8192BD7C98300AA4A9B /* KMPDFMultiplePrintWindowController.m in Sources */,
 				BB4EEF3A2976451E003A3537 /* KMRedactContentBaseView.swift in Sources */,
 				BB853C9F2AF8E436009C20C1 /* KMBatchRemovePasswordOperation.swift in Sources */,
@@ -20190,6 +20203,7 @@
 				9F0CB527298656BA00007028 /* KMDesignToken+BorderWidth.swift in Sources */,
 				AD055E622B85E04C0035F824 /* KMTextWithIconCell.swift in Sources */,
 				AD055E802B88294F0035F824 /* SKBookmarkSheetController.m in Sources */,
+				65B143AC2CF06B97001B5A69 /* NSColor+KMExtensions.swift in Sources */,
 				ADDF835B2B391A5C00A81A4E /* CDSignatureCertificateStateViewController.swift in Sources */,
 				6536FDE92C9C49A6004A0FB9 /* KMNoteFooterCellView.swift in Sources */,
 				ADE86AB82B0343E600414DFA /* KMWatermarkView.swift in Sources */,
@@ -20283,6 +20297,7 @@
 				AD2432D12B89DFED00A119A9 /* KMFormAlertView.swift in Sources */,
 				9F1F82EC2935D02E0092C4B4 /* KMComboBox.swift in Sources */,
 				8997012128F41AB8009AF911 /* KMLeftSideViewController.swift in Sources */,
+				65B1439D2CF06B97001B5A69 /* NSViewController+DesignToken.swift in Sources */,
 				9F88109F2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.swift in Sources */,
 				ADDF832B2B391A5C00A81A4E /* CPDFSelection+PDFListView.m in Sources */,
 				BB4583C12CC8C53C005737F3 /* KMPDFToolbarConfig.swift in Sources */,
@@ -20303,6 +20318,7 @@
 				9F1FE4B029406E4700E952CA /* CTPresentationModeController.m in Sources */,
 				BBA922242B4E7D340061057A /* HyperLinkButton.swift in Sources */,
 				F337CC392CC6686100D46AF4 /* KMNThumbnailCollectionViewItem.swift in Sources */,
+				65B143972CF06B97001B5A69 /* NSButton+DesignToken.swift in Sources */,
 				656C1E362CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */,
 				BBD1F791296FE6A500343885 /* KMPageEditSplitWindowController.swift in Sources */,
 				BB8810A22B4F7D1000AFA63E /* KMVerificationActivateViewController.m in Sources */,
@@ -20340,7 +20356,6 @@
 				F3DB85F42CCA209600D0AFDE /* KMNBaseWindowController.swift in Sources */,
 				BB5A9D3E2CB6520100F64C1F /* KMNHomeViewController.swift in Sources */,
 				BBE788D12CBD2463008086E2 /* InputDemoVC.swift in Sources */,
-				9FAAA340290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */,
 				651675D82CE3312000019A20 /* KMTocOutlineView.swift in Sources */,
 				BB5BE4EF2B060E3000D51BF2 /* KMLanguageViewController.swift in Sources */,
 				BB147025299DC0D100784A6A /* OIDResponseTypes.m in Sources */,
@@ -20366,7 +20381,6 @@
 				AD1FE82E2BD7C98300AA4A9B /* KMPDFBookletWindowController.m in Sources */,
 				BB67EE1F2B54FFEF00573BF0 /* ASIFormDataRequest.m in Sources */,
 				ADDF838B2B391A5D00A81A4E /* DSignatureFileListCellView.swift in Sources */,
-				9F81ADC829B9B12C002251F4 /* NSButton+DesignToken.swift in Sources */,
 				BB146FB9299DC0D100784A6A /* GTLRRuntimeCommon.m in Sources */,
 				BB147013299DC0D100784A6A /* OIDError.m in Sources */,
 				BB46CF4E2AFBB34900281EDF /* AutoSaveManager.swift in Sources */,
@@ -20504,7 +20518,6 @@
 				BB9695B429BDA46500FD68D3 /* SKLocalization.m in Sources */,
 				9FF0D05A2B6A43750018A732 /* KMPDFAnnotationButtonWidgetSub.swift in Sources */,
 				BBE788AA2CBD2463008086E2 /* SidebarDemoVC.swift in Sources */,
-				9F3D819029A22AD90087B5AD /* Date+KMExtensions.swift in Sources */,
 				BB897222294AF9080045787C /* KMWatermarkAdjectiveTopBarView.swift in Sources */,
 				9F8DDF362924DA6B006CDC73 /* KMPDFToolsCollectionView.swift in Sources */,
 				ADB2D6FB294882AE0029D2B3 /* KMTextFieldStepperView.swift in Sources */,
@@ -20514,6 +20527,7 @@
 				9FDD0F862952FC9C000C4DAD /* KMAliasLightParser.swift in Sources */,
 				BB96C42B2CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */,
 				BB27BF3E2B33E85200A0BAAE /* CPDFView+KMExtension.swift in Sources */,
+				65B143A92CF06B97001B5A69 /* Array+KMExtensions.swift in Sources */,
 				BBDE52BD2BF3676C000545B2 /* KMPresentTableViewCell.swift in Sources */,
 				ADB2D6E8294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */,
 				AD867FC329DFC39400F00440 /* KMBOTAAnnotationItem.swift in Sources */,
@@ -20644,6 +20658,7 @@
 				BB8810872B4F7C2200AFA63E /* KMVerificationAlertViewController.m in Sources */,
 				657866012CE1E7DD00AFE2DB /* KMBookMarkTableRowView.swift in Sources */,
 				BBF19E912B0B304C007154C8 /* KMStampCreaterWindowController.swift in Sources */,
+				65B143A02CF06B97001B5A69 /* NSImage+Extension.swift in Sources */,
 				BB716D5A2CDDB6F9009787ED /* KMHeaderTemplateItem.swift in Sources */,
 				653647CD2CDCA5DE00CDB13E /* KMBatchOperateBaseWindowController.swift in Sources */,
 				BB146FD7299DC0D100784A6A /* GTLRObject.m in Sources */,
@@ -20700,6 +20715,7 @@
 				651675C32CE3312000019A20 /* KMCustomOutlineView.swift in Sources */,
 				BBE7891C2CBD2464008086E2 /* ModalVC.swift in Sources */,
 				ADDDCE292B43A32A005B4AB5 /* AppSandboxFileAccessOpenSavePanelDelegate.m in Sources */,
+				65B143A62CF06B97001B5A69 /* NSImage+QuickLook.swift in Sources */,
 				BBE9D0942AF0A85C002E83CE /* KMBatchOperation.swift in Sources */,
 				9FBA0EF728FFC8A0001117AF /* KMCollectionView.swift in Sources */,
 				BB897226294B07960045787C /* KMWatermarkAdjectiveTopBarItemView.swift in Sources */,
@@ -20754,6 +20770,7 @@
 				AD055EA12B8836AE0035F824 /* SKDocumentController.m in Sources */,
 				9F1FE4DD29406E4700E952CA /* NSURL+Utils.m in Sources */,
 				ADDF83A92B391A5D00A81A4E /* DSignatureApperanceManager.swift in Sources */,
+				65B1439A2CF06B97001B5A69 /* NSView+KMExtension.swift in Sources */,
 				BB52F5762CC236B1007418DB /* KMLinkWebView.swift in Sources */,
 				BB4F7E972B0C857D0077EC8C /* KMNoteTypeCollectionViewItem.swift in Sources */,
 				BBF729AD2B1962A000576AC5 /* KMAddHeaderFooterOperationQueue.swift in Sources */,
@@ -20831,13 +20848,13 @@
 				ADE86AA62B031FF000414DFA /* KMCompareView.swift in Sources */,
 				BB5DF1F32959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
 				BBBAED122B57E76400266BD3 /* NSGraphics_SKExtensions.m in Sources */,
-				9F8DDF2829237910006CDC73 /* Array+KMExtensions.swift in Sources */,
 				9F0CB5172986566D00007028 /* KMDesignToken+BorderRadiusTopLeft.swift in Sources */,
 				BBBB6CCC2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */,
 				ADDEEA902AD78E4400EF675D /* KMSelfSignAnnotation.swift in Sources */,
 				BBE0BDF529A22EF300440583 /* KMMainViewController+MenuAction.swift in Sources */,
 				AD88109429A7612000178CA1 /* KMRegisterModel.swift in Sources */,
 				ADDF83AF2B391A5D00A81A4E /* DSignatureConfig.swift in Sources */,
+				65B143A32CF06B97001B5A69 /* Date+KMExtensions.swift in Sources */,
 				656C1E3F2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */,
 				9F1F82D4292F6D510092C4B4 /* KMPDFInsertPreviewViewController.swift in Sources */,
 				BBF1705A2AE296B90013CE02 /* KMView.swift in Sources */,
@@ -20878,7 +20895,6 @@
 				ADD1B70C29471FA500C3FFF7 /* KMPrintChoosePresenter.swift in Sources */,
 				9F0CB4692967E5CB00007028 /* KMPropertiesPanelSubViewController.swift in Sources */,
 				AD1FE8372BD7C98300AA4A9B /* KMPDFPrintManageWindowController.m in Sources */,
-				9FBC48C1299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */,
 				89752DF429389F82003FF08E /* KMToolbarItem.m in Sources */,
 				6536FDE52C9C1EF2004A0FB9 /* KMNoteReplyHanddler.swift in Sources */,
 				ADDEEA742AD3EFE200EF675D /* KMButton.swift in Sources */,