Browse Source

Merge branch 'develop_PDFReaderProNew' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderProNew

niehaoyu 1 year ago
parent
commit
60390e0f5d
17 changed files with 1073 additions and 0 deletions
  1. 76 0
      PDF Office/PDF Master.xcodeproj/project.pbxproj
  2. 170 0
      PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  3. BIN
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/FirebaseABTesting
  4. 83 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Headers/FIRExperimentController.h
  5. 66 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Headers/FIRLifecycleEvents.h
  6. 16 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Headers/FirebaseABTesting.h
  7. 20 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Info.plist
  8. 11 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Modules/module.modulemap
  9. BIN
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/FirebaseRemoteConfig
  10. 290 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers/FIRRemoteConfig.h
  11. 17 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers/FirebaseRemoteConfig.h
  12. 20 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Info.plist
  13. 11 0
      PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Modules/module.modulemap
  14. 30 0
      PDF Office/PDF Master/Third Pard Library/RemoteConfig /DMGRemoteConfigDefaults.plist
  15. 195 0
      PDF Office/PDF Master/Third Pard Library/RemoteConfig /KMFirebaseRemoteConfig.swift
  16. 34 0
      PDF Office/PDF Master/Third Pard Library/RemoteConfig /ProRemoteConfigDefaults.plist
  17. 34 0
      PDF Office/PDF Master/Third Pard Library/RemoteConfig /RemoteConfigDefaults.plist

+ 76 - 0
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2346,6 +2346,24 @@
 		ADFCEB362B4F78220001EBAF /* KMFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB352B4F78220001EBAF /* KMFile.swift */; };
 		ADFCEB372B4F78220001EBAF /* KMFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB352B4F78220001EBAF /* KMFile.swift */; };
 		ADFCEB382B4F78220001EBAF /* KMFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB352B4F78220001EBAF /* KMFile.swift */; };
+		ADFCEB3C2B4FB8C90001EBAF /* FirebaseRemoteConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */; };
+		ADFCEB3D2B4FB8C90001EBAF /* FirebaseRemoteConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */; };
+		ADFCEB3E2B4FB8C90001EBAF /* FirebaseRemoteConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */; };
+		ADFCEB3F2B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */; };
+		ADFCEB402B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */; };
+		ADFCEB412B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */; };
+		ADFCEB482B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */; };
+		ADFCEB492B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */; };
+		ADFCEB4A2B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */; };
+		ADFCEB4B2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */; };
+		ADFCEB4C2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */; };
+		ADFCEB4D2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */; };
+		ADFCEB512B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */; };
+		ADFCEB522B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */; };
+		ADFCEB532B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */; };
+		ADFCEB552B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */; };
+		ADFCEB562B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */; };
+		ADFCEB572B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */; };
 		BB00300F298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */; };
 		BB003010298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */; };
 		BB003011298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */; };
@@ -5492,6 +5510,12 @@
 		ADF9ED3229A850D200C4A943 /* KMAccountInfoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAccountInfoView.xib; sourceTree = "<group>"; };
 		ADFCEB312B4F78150001EBAF /* KMFileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFileManager.swift; sourceTree = "<group>"; };
 		ADFCEB352B4F78220001EBAF /* KMFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFile.swift; sourceTree = "<group>"; };
+		ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseRemoteConfig.framework; sourceTree = "<group>"; };
+		ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseABTesting.framework; sourceTree = "<group>"; };
+		ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = RemoteConfigDefaults.plist; sourceTree = "<group>"; };
+		ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ProRemoteConfigDefaults.plist; sourceTree = "<group>"; };
+		ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = DMGRemoteConfigDefaults.plist; sourceTree = "<group>"; };
+		ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFirebaseRemoteConfig.swift; sourceTree = "<group>"; };
 		BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPreferenceSegementControl.swift; sourceTree = "<group>"; };
 		BB003013298CA446002DD1A0 /* KMPreferenceGeneralController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPreferenceGeneralController.swift; sourceTree = "<group>"; };
 		BB003014298CA446002DD1A0 /* KMPreferenceGeneralController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPreferenceGeneralController.xib; sourceTree = "<group>"; };
@@ -6378,6 +6402,7 @@
 				BBB9B339299A5FD1004F3235 /* ObjectiveDropboxOfficial.framework in Frameworks */,
 				BB9DCC9C2A0A104E0024A6F1 /* ComDocumentAIKit.framework in Frameworks */,
 				BBF5D4A52A5FD2A000D09418 /* AppCenterAnalytics.framework in Frameworks */,
+				ADFCEB3F2B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */,
 				89D9896328FD23AE003A3E87 /* PDFKit.framework in Frameworks */,
 				9F00CF672A386D8D00AC462E /* nanopb.framework in Frameworks */,
 				AD8DD2932A972486007CC9D0 /* libDocumentAI.3.2.2.dylib in Frameworks */,
@@ -6393,6 +6418,7 @@
 				9F00CF4D2A38655500AC462E /* FirebaseCore.framework in Frameworks */,
 				9F00CF582A3866E800AC462E /* GoogleUtilities.framework in Frameworks */,
 				9F00CF7A2A386DC400AC462E /* FirebaseCoreDiagnostics.framework in Frameworks */,
+				ADFCEB3C2B4FB8C90001EBAF /* FirebaseRemoteConfig.framework in Frameworks */,
 				9F00CF802A386DC500AC462E /* GoogleDataTransport.framework in Frameworks */,
 				ADA08A8629F14336009B2A7B /* ComPDFKit_Conversion.framework in Frameworks */,
 			);
@@ -6419,8 +6445,10 @@
 				9F00CF682A386D8D00AC462E /* nanopb.framework in Frameworks */,
 				9F00CF512A38655500AC462E /* FirebaseAnalytics.framework in Frameworks */,
 				BB9DCC8A2A09FC770024A6F1 /* libopencv_world.4.2.dylib in Frameworks */,
+				ADFCEB402B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */,
 				AD8DD2942A972486007CC9D0 /* libDocumentAI.3.2.2.dylib in Frameworks */,
 				AD8DD29C2A972492007CC9D0 /* libpaddle2onnx.1.0.7.dylib in Frameworks */,
+				ADFCEB3D2B4FB8C90001EBAF /* FirebaseRemoteConfig.framework in Frameworks */,
 				ADE3C1C929A5A75E00793B13 /* AFNetworking.framework in Frameworks */,
 				9F00CF612A386C7400AC462E /* FirebaseInstallations.framework in Frameworks */,
 				9F00CF7B2A386DC500AC462E /* FirebaseCoreDiagnostics.framework in Frameworks */,
@@ -6467,6 +6495,7 @@
 				9F00CF522A38655500AC462E /* FirebaseAnalytics.framework in Frameworks */,
 				BBD7FDFB2A13210700F96075 /* AFNetworking.framework in Frameworks */,
 				9F00CF5A2A3866E900AC462E /* GoogleUtilities.framework in Frameworks */,
+				ADFCEB412B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */,
 				89D9896528FD23BF003A3E87 /* PDFKit.framework in Frameworks */,
 				89752DA72936ECE4003FF08E /* Masonry.framework in Frameworks */,
 				BBD54ECD2A1C53B20012A230 /* ComDocumentAIKit.framework in Frameworks */,
@@ -6482,6 +6511,7 @@
 				9F00CF622A386C7400AC462E /* FirebaseInstallations.framework in Frameworks */,
 				BB88401E2A132C6B0062446B /* ObjectiveDropboxOfficial.framework in Frameworks */,
 				BBD7FDFD2A13210A00F96075 /* ComPDFKit_Conversion.framework in Frameworks */,
+				ADFCEB3E2B4FB8C90001EBAF /* FirebaseRemoteConfig.framework in Frameworks */,
 				AD8DD29D2A972492007CC9D0 /* libpaddle2onnx.1.0.7.dylib in Frameworks */,
 				9F00CF4F2A38655500AC462E /* FirebaseCore.framework in Frameworks */,
 			);
@@ -6612,6 +6642,7 @@
 		89752DA22936ECD5003FF08E /* Third Pard Library */ = {
 			isa = PBXGroup;
 			children = (
+				ADFCEB422B4FBA430001EBAF /* RemoteConfig  */,
 				ADDDCE1A2B43A32A005B4AB5 /* AppSandboxFileAccess */,
 				9FC444F82AA5F7D600D7187C /* ZipArchive.framework */,
 				AD032CB62A4E6A7E00F1D745 /* Starscream.framework */,
@@ -6894,6 +6925,7 @@
 		9F00CF4A2A38655300AC462E /* FirebaseAnalytics */ = {
 			isa = PBXGroup;
 			children = (
+				ADFCEB392B4FB8C80001EBAF /* FirebaseRemoteConfig */,
 				9F00CF762A386DC400AC462E /* GoogleDataTransport.framework */,
 				9F00CF732A386DC400AC462E /* GoogleAppMeasurement.framework */,
 				9F00CF4B2A38655300AC462E /* FirebaseCore.framework */,
@@ -9268,6 +9300,26 @@
 			path = KMFile;
 			sourceTree = "<group>";
 		};
+		ADFCEB392B4FB8C80001EBAF /* FirebaseRemoteConfig */ = {
+			isa = PBXGroup;
+			children = (
+				ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */,
+				ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */,
+			);
+			path = FirebaseRemoteConfig;
+			sourceTree = "<group>";
+		};
+		ADFCEB422B4FBA430001EBAF /* RemoteConfig  */ = {
+			isa = PBXGroup;
+			children = (
+				ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */,
+				ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */,
+				ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */,
+				ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */,
+			);
+			path = "RemoteConfig ";
+			sourceTree = "<group>";
+		};
 		BB00300D298CA367002DD1A0 /* View */ = {
 			isa = PBXGroup;
 			children = (
@@ -12124,6 +12176,7 @@
 				ADDF83742B391A5D00A81A4E /* CDSignatureDrawViewController.xib in Resources */,
 				AD3AAD792B0DCEB600DE5FE7 /* KMCompareSaveView.xib in Resources */,
 				ADBC2D15299CCD10006280C8 /* KMTextfieldButton.xib in Resources */,
+				ADFCEB4B2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */,
 				BBD1F77F296F9BE000343885 /* KMPageEditSettingBaseWindowController.xib in Resources */,
 				BBB3769E2B10A7FD009539CC /* a_4a.png in Resources */,
 				BB24D4AA2977BE6700041659 /* KMRedactConfirmWindowController.xib in Resources */,
@@ -12155,6 +12208,7 @@
 				ADE86AB12B03438400414DFA /* KMWatermarkWindowController.xib in Resources */,
 				ADEC7A84299397F8009A8256 /* SF-Pro-Text-Semibold.otf in Resources */,
 				ADDF83682B391A5C00A81A4E /* DSignatureSaveFolderViewController.xib in Resources */,
+				ADFCEB512B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */,
 				ADDF834A2B391A5C00A81A4E /* DSignatureDetailsViewController.xib in Resources */,
 				AD1CA4342A0640FC0070541F /* KMAnnotationScreenHeadView.xib in Resources */,
 				AD62606E2A9D968A006C6413 /* KMEditPDFAssets.xcassets in Resources */,
@@ -12392,6 +12446,7 @@
 				BB897231294B08DE0045787C /* KMWatermarkViewController.xib in Resources */,
 				9F56648A2988B16F00020985 /* KMTextfieldVC.xib in Resources */,
 				AD3AAD452B0B7B7B00DE5FE7 /* KMCompareThumbView.xib in Resources */,
+				ADFCEB482B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				9FDD0FA22952FF4D000C4DAD /* $themes.json in Resources */,
 				BB69C95C299116FD0001A9B1 /* five_line_score.pdf in Resources */,
 				BBFE6E702930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
@@ -12559,6 +12614,7 @@
 				9F0201762A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
 				9F512CCB2B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.xib in Resources */,
+				ADFCEB492B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
 				BB03D6912B01C7AB008C9976 /* KMPDFEditInsertBlankPageWindow.xib in Resources */,
 				BBFE6E792930E53000142C01 /* KMMergePopoverViewController.xib in Resources */,
@@ -12688,6 +12744,7 @@
 				BBA9223C2B4E97540061057A /* KMPurchaseLimitWindowController.xib in Resources */,
 				ADE8BC3429F9261900570F89 /* KMSearchCellView.xib in Resources */,
 				8931684D296E436B0073EA59 /* KMSignatureWindowController.xib in Resources */,
+				ADFCEB4C2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */,
 				AD58F4062B14954B00299EE0 /* KMCompareTextHeaderView.xib in Resources */,
 				9F8539DB294318D600DF644E /* TabsImage.xcassets in Resources */,
 				BB52372B29C313CA00663BD7 /* KMAnnotationPropertyBaseController.xib in Resources */,
@@ -12878,6 +12935,7 @@
 				BB5F8A1A29BB15AD00365ADB /* pic_mail.pdf in Resources */,
 				BBA922162B4E783F0061057A /* KMPurchaseCompareDMGWindowController.xib in Resources */,
 				ADE787A62AA5A833002EC85A /* KMAccountExceptionWindowController.xib in Resources */,
+				ADFCEB522B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */,
 				BB183DD22B4EAD5400F99C7E /* Ubuntu-Medium.ttf in Resources */,
 				9F8539CF29430BF300DF644E /* KMBrowserWindowController.xib in Resources */,
 				ADE86AA12B031FDB00414DFA /* KMCompareWindowController.xib in Resources */,
@@ -13031,6 +13089,7 @@
 				BBFE6E722930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				ADDF83762B391A5D00A81A4E /* CDSignatureDrawViewController.xib in Resources */,
 				BBF62C762B0347D1007B7E86 /* SplitWindowController.xib in Resources */,
+				ADFCEB4D2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */,
 				ADC63E4D2A49BEDD00854E02 /* KMSubscribeWaterMarkCollectionItem.xib in Resources */,
 				BB5DF1F62959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.xib in Resources */,
 				AD3AAD722B0DCC6800DE5FE7 /* KMCompareSaveWindow.xib in Resources */,
@@ -13062,6 +13121,7 @@
 				9FF94F1629A7476000B1EF69 /* KMDesignPropertySelector.xib in Resources */,
 				ADE8BC3529F9261900570F89 /* KMSearchCellView.xib in Resources */,
 				ADE787A72AA5A833002EC85A /* KMAccountExceptionWindowController.xib in Resources */,
+				ADFCEB532B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */,
 				ADDF836A2B391A5C00A81A4E /* DSignatureSaveFolderViewController.xib in Resources */,
 				ADDF834C2B391A5C00A81A4E /* DSignatureDetailsViewController.xib in Resources */,
 				BB3BA9082A13684A00623C08 /* Assets.xcassets in Resources */,
@@ -13299,6 +13359,7 @@
 				ADCFFC0829C04617007D3657 /* BOTA.xcassets in Resources */,
 				8931684E296E436B0073EA59 /* KMSignatureWindowController.xib in Resources */,
 				ADBC2D00299CA6C7006280C8 /* KMPrintDuplexPrintingSetView.xib in Resources */,
+				ADFCEB4A2B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				BB51074429A61B4100978662 /* ProgressSheet.xib in Resources */,
 				89316857296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
 				9FBA0EEB28FFC2FE001117AF /* Image.xcassets in Resources */,
@@ -13852,6 +13913,7 @@
 				BB162E97295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
 				BB24FFDD2B28578C00A59054 /* KMTTSWindowController.swift in Sources */,
 				ADD1B6EC2946C04C00C3FFF7 /* KMPrintChoosePageSizePamphletView.swift in Sources */,
+				ADFCEB552B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				ADBC2D11299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				9FCFEC982AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				ADAFDA302AE8E45000F084BC /* KMAdvertisementConfig.swift in Sources */,
@@ -14736,6 +14798,7 @@
 				BBF62C692B033B34007B7E86 /* KMPDFEditExtractWindow.swift in Sources */,
 				9FDD0F892952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
 				BBD1F78C296FACA300343885 /* KMPageEditExtractSettingView.swift in Sources */,
+				ADFCEB562B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				ADBC375129CAE27900D93208 /* KMComparativeOutlineRowView.swift in Sources */,
 				AD8DD2A42A9C35B2007CC9D0 /* KMThumbnailManager.swift in Sources */,
 				89D2D2E3294C452B00BFF5FE /* KMPDFThumbnailView.swift in Sources */,
@@ -16434,6 +16497,7 @@
 				ADA08A8C29F21A53009B2A7B /* KMPDFViewAnnotationOnceModeStore.swift in Sources */,
 				AD5999442AD8DC2000412F8B /* KMDynamicStampViewController.swift in Sources */,
 				BBC347FF295448DE008D2CD1 /* KMWatermarkTemplateModel.swift in Sources */,
+				ADFCEB572B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				BBD7FE042A13218F00F96075 /* KMWatermarkAdjectivePropertyBaseController.swift in Sources */,
 				BBC28F482B0F352000D73206 /* KMImageToolTipContext.swift in Sources */,
 				ADDF83702B391A5C00A81A4E /* CDSignatureTextViewController.swift in Sources */,
@@ -16793,6 +16857,8 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
 				);
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_PREPROCESSOR_DEFINITIONS = (
@@ -16886,6 +16952,8 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
 				);
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_PREPROCESSOR_DEFINITIONS = "VERSION_FREE=1";
@@ -17065,6 +17133,8 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
 				);
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"DEBUG=1",
@@ -17191,6 +17261,8 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
 				);
 				GCC_PREPROCESSOR_DEFINITIONS = "VERSION_PRO=1";
 				GENERATE_INFOPLIST_FILE = YES;
@@ -17434,6 +17506,8 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Class/PDFWindowController/PDFSDK",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
 				);
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"DEBUG=1",
@@ -17609,6 +17683,8 @@
 					"$(PROJECT_DIR)/PDF\\ Master/Class/PDFWindowController/PDFSDK",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
 					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
+					"$(PROJECT_DIR)/PDF\\ Master/Third\\ Pard\\ Library/FirebaseAnalytics/FirebaseRemoteConfig",
 				);
 				GCC_PREPROCESSOR_DEFINITIONS = "VERSION_DMG=1";
 				GENERATE_INFOPLIST_FILE = YES;

+ 170 - 0
PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -6722,6 +6722,21 @@
                   endingLineNumber = "1511"
                   offsetFromSymbolStart = "19236">
                </Location>
+               <Location
+                  uuid = "D2E713CE-328E-4EC1-91DC-F6D927095512 - ec397d0f3b52cbb0"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.defaultAnnotationPorpert(sender: __C.NSMenuItem) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1510"
+                  endingLineNumber = "1510"
+                  offsetFromSymbolStart = "13328">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15380,6 +15395,21 @@
                   endingLineNumber = "2946"
                   offsetFromSymbolStart = "160">
                </Location>
+               <Location
+                  uuid = "EC868E34-3125-4BF1-917C-B699A0192869 - 7f49856863f0ea9c"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (Swift.Bool, Swift.Bool, Swift.Bool) -&gt; () in closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.toolbarViewController(_: PDF_Master.KMToolbarViewController, shareFlatten: __C.NSMenuItem) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "2945"
+                  endingLineNumber = "2945"
+                  offsetFromSymbolStart = "160">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15693,6 +15723,21 @@
                   endingLineNumber = "3174"
                   offsetFromSymbolStart = "252">
                </Location>
+               <Location
+                  uuid = "EA21967B-634C-4850-8C77-13815B814BFE - 642a8aa40dfa2f38"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "(1) suspend resume partial function for closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3178"
+                  endingLineNumber = "3178"
+                  offsetFromSymbolStart = "5172">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15771,6 +15816,21 @@
                   endingLineNumber = "2534"
                   offsetFromSymbolStart = "5032">
                </Location>
+               <Location
+                  uuid = "6C8D4B68-1D1A-4571-9B71-3FDAD415B289 - 44109b2654b4fb8a"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (PDF_Master.KMPasswordInputWindowResult, Swift.Optional&lt;Swift.String&gt;) -&gt; () in PDF_Master.KMMainViewController.showPrintWindow(pageRange: PDF_Master.KMPrintPageRange) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "2535"
+                  endingLineNumber = "2535"
+                  offsetFromSymbolStart = "1164">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -15865,6 +15925,21 @@
                   endingLineNumber = "3343"
                   offsetFromSymbolStart = "21944">
                </Location>
+               <Location
+                  uuid = "60D16BC6-1CB2-4C01-A490-001FDFD0443C - 400d753f438a1dd9"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (Swift.Int) -&gt; () in closure #10 (__C.NSModalResponse) -&gt; () in closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3343"
+                  endingLineNumber = "3343"
+                  offsetFromSymbolStart = "2196">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -16226,6 +16301,21 @@
                   endingLineNumber = "3393"
                   offsetFromSymbolStart = "26252">
                </Location>
+               <Location
+                  uuid = "225836A8-1672-481E-A55E-CC1EEFE6073E - 642a8aa40dfa0371"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "(1) suspend resume partial function for closure #1 @Sendable () async -&gt; () in PDF_Master.KMMainViewController.clickChildTool(type: PDF_Master.KMToolbarType, index: Swift.Int) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "3393"
+                  endingLineNumber = "3393"
+                  offsetFromSymbolStart = "23780">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -16803,5 +16893,85 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "1B540E62-5162-49F4-B069-ABE88BC88DD9"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "200"
+            endingLineNumber = "200"
+            landmarkName = "setup()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "E675B819-D6C5-4011-852F-FBE30AF8CE35"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "192"
+            endingLineNumber = "192"
+            landmarkName = "setup()"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "E675B819-D6C5-4011-852F-FBE30AF8CE35 - 740bbb176ffdea8"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #3 (PDF_Master.KMHomeContentView, PDF_Master.KMFile) -&gt; () in PDF_Master.KMHomeViewController.setup() -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "192"
+                  endingLineNumber = "192"
+                  offsetFromSymbolStart = "180">
+               </Location>
+               <Location
+                  uuid = "E675B819-D6C5-4011-852F-FBE30AF8CE35 - 740bbb176ffdea8"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #3 (PDF_Master.KMHomeContentView, PDF_Master.KMFile) -&gt; () in PDF_Master.KMHomeViewController.setup() -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/Home/ViewController/KMHomeViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "192"
+                  endingLineNumber = "192"
+                  offsetFromSymbolStart = "56">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "A538466B-893A-46C1-89D4-E7209C54CBA8"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "320"
+            endingLineNumber = "320"
+            landmarkName = "openHistoryFilePath(url:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

BIN
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/FirebaseABTesting


+ 83 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Headers/FIRExperimentController.h

@@ -0,0 +1,83 @@
+// Copyright 2019 Google
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+@class ABTExperimentPayload;
+
+// Forward declaration to avoid importing into the module header
+typedef NS_ENUM(int32_t, ABTExperimentPayloadExperimentOverflowPolicy);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class FIRLifecycleEvents;
+
+/// The default experiment overflow policy, that is to discard the experiment with the oldest start
+/// time when users start the experiment on the web console.
+extern const ABTExperimentPayloadExperimentOverflowPolicy FIRDefaultExperimentOverflowPolicy;
+
+/// This class is for Firebase services to handle experiments updates to Firebase Analytics.
+/// Experiments can be set, cleared and updated through this controller.
+NS_SWIFT_NAME(ExperimentController)
+@interface FIRExperimentController : NSObject
+
+/// Returns the FIRExperimentController singleton.
++ (FIRExperimentController *)sharedInstance;
+
+/// Updates the list of experiments with an optional completion handler. Experiments already
+/// existing in payloads are not affected, whose state and payload is preserved. This method
+/// compares whether the experiments have changed or not by their variant ID. This runs in a
+/// background queue and calls the completion handler when finished executing.
+/// @param origin         The originating service affected by the experiment.
+/// @param events         A list of event names to be used for logging experiment lifecycle events,
+///                       if they are not defined in the payload.
+/// @param policy         The policy to handle new experiments when slots are full.
+/// @param lastStartTime  The last known experiment start timestamp for this affected service.
+///                       (Timestamps are specified by the number of seconds from 00:00:00 UTC on 1
+///                       January 1970.).
+/// @param payloads       List of experiment metadata.
+/// @param completionHandler Code to be executed after experiments are updated in the background
+///                       thread.
+- (void)updateExperimentsWithServiceOrigin:(NSString *)origin
+                                    events:(FIRLifecycleEvents *)events
+                                    policy:(ABTExperimentPayloadExperimentOverflowPolicy)policy
+                             lastStartTime:(NSTimeInterval)lastStartTime
+                                  payloads:(NSArray<NSData *> *)payloads
+                         completionHandler:
+                             (nullable void (^)(NSError *_Nullable error))completionHandler;
+
+/// Returns the latest experiment start timestamp given a current latest timestamp and a list of
+/// experiment payloads. Timestamps are specified by the number of seconds from 00:00:00 UTC on 1
+/// January 1970.
+/// @param timestamp  Current latest experiment start timestamp. If not known, affected service
+///                   should specify -1;
+/// @param payloads   List of experiment metadata.
+- (NSTimeInterval)latestExperimentStartTimestampBetweenTimestamp:(NSTimeInterval)timestamp
+                                                     andPayloads:(NSArray<NSData *> *)payloads;
+
+/// Expires experiments that aren't in the list of running experiment payloads.
+/// @param origin The originating service affected by the experiment.
+/// @param payloads The list of valid, running experiments.
+- (void)validateRunningExperimentsForServiceOrigin:(NSString *)origin
+                         runningExperimentPayloads:(NSArray<ABTExperimentPayload *> *)payloads;
+
+/// Directly sets a given experiment to be active.
+/// @param experimentPayload The payload for the experiment that should be activated.
+/// @param origin The originating service affected by the experiment.
+- (void)activateExperiment:(ABTExperimentPayload *)experimentPayload
+          forServiceOrigin:(NSString *)origin;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 66 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Headers/FIRLifecycleEvents.h

@@ -0,0 +1,66 @@
+// Copyright 2019 Google
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Default event name for when an experiment is set.
+extern NSString *const FIRSetExperimentEventName NS_SWIFT_NAME(DefaultSetExperimentEventName);
+/// Default event name for when an experiment is activated.
+// clang-format off
+// clang-format12 will merge lines and exceed 100 character limit.
+extern NSString *const FIRActivateExperimentEventName
+    NS_SWIFT_NAME(DefaultActivateExperimentEventName);
+/// Default event name for when an experiment is cleared.
+extern NSString *const FIRClearExperimentEventName NS_SWIFT_NAME(DefaultClearExperimentEventName);
+/// Default event name for when an experiment times out for being activated.
+extern NSString *const FIRTimeoutExperimentEventName
+    NS_SWIFT_NAME(DefaultTimeoutExperimentEventName);
+// clang-format on
+/// Default event name for when an experiment is expired as it reaches the end of TTL.
+extern NSString *const FIRExpireExperimentEventName NS_SWIFT_NAME(DefaultExpireExperimentEventName);
+
+/// An Experiment Lifecycle Event Object that specifies the name of the experiment event to be
+/// logged by Firebase Analytics.
+NS_SWIFT_NAME(LifecycleEvents)
+@interface FIRLifecycleEvents : NSObject
+
+/// Event name for when an experiment is set. It is default to FIRSetExperimentEventName and can be
+/// overridden. If experiment payload has a valid string of this field, always use experiment
+/// payload.
+@property(nonatomic, copy) NSString *setExperimentEventName;
+
+/// Event name for when an experiment is activated. It is default to FIRActivateExperimentEventName
+/// and can be overridden. If experiment payload has a valid string of this field, always use
+/// experiment payload.
+@property(nonatomic, copy) NSString *activateExperimentEventName;
+
+/// Event name for when an experiment is cleared. It is default to FIRClearExperimentEventName and
+/// can be overridden. If experiment payload has a valid string of this field, always use experiment
+/// payload.
+@property(nonatomic, copy) NSString *clearExperimentEventName;
+/// Event name for when an experiment is timeout from being STANDBY. It is default to
+/// FIRTimeoutExperimentEventName and can be overridden. If experiment payload has a valid string
+/// of this field, always use experiment payload.
+@property(nonatomic, copy) NSString *timeoutExperimentEventName;
+
+/// Event name when an experiment is expired when it reaches the end of its TTL.
+/// It is default to FIRExpireExperimentEventName and can be overridden. If experiment payload has a
+/// valid string of this field, always use experiment payload.
+@property(nonatomic, copy) NSString *expireExperimentEventName;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 16 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Headers/FirebaseABTesting.h

@@ -0,0 +1,16 @@
+// Copyright 2019 Google
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "FIRExperimentController.h"
+#import "FIRLifecycleEvents.h"

+ 20 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Info.plist

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>FirebaseABTesting</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-FirebaseABTesting</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>FirebaseABTesting</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>8.15.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>

+ 11 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseABTesting.framework/Modules/module.modulemap

@@ -0,0 +1,11 @@
+framework module FirebaseABTesting {
+umbrella header "FirebaseABTesting.h"
+export *
+module * { export * }
+  link framework "AppKit"
+  link framework "CoreTelephony"
+  link framework "Foundation"
+  link framework "Security"
+  link framework "SystemConfiguration"
+  link "z"
+}

BIN
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/FirebaseRemoteConfig


+ 290 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers/FIRRemoteConfig.h

@@ -0,0 +1,290 @@
+/*
+ * Copyright 2019 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+
+@class FIRApp;
+
+/// The Firebase Remote Config service default namespace, to be used if the API method does not
+/// specify a different namespace. Use the default namespace if configuring from the Google Firebase
+/// service.
+extern NSString *const _Nonnull FIRNamespaceGoogleMobilePlatform NS_SWIFT_NAME(
+    NamespaceGoogleMobilePlatform);
+
+/// Key used to manage throttling in NSError user info when the refreshing of Remote Config
+/// parameter values (data) is throttled. The value of this key is the elapsed time since 1970,
+/// measured in seconds.
+extern NSString *const _Nonnull FIRRemoteConfigThrottledEndTimeInSecondsKey NS_SWIFT_NAME(
+    RemoteConfigThrottledEndTimeInSecondsKey);
+
+/// Indicates whether updated data was successfully fetched.
+typedef NS_ENUM(NSInteger, FIRRemoteConfigFetchStatus) {
+  /// Config has never been fetched.
+  FIRRemoteConfigFetchStatusNoFetchYet,
+  /// Config fetch succeeded.
+  FIRRemoteConfigFetchStatusSuccess,
+  /// Config fetch failed.
+  FIRRemoteConfigFetchStatusFailure,
+  /// Config fetch was throttled.
+  FIRRemoteConfigFetchStatusThrottled,
+} NS_SWIFT_NAME(RemoteConfigFetchStatus);
+
+/// Indicates whether updated data was successfully fetched and activated.
+typedef NS_ENUM(NSInteger, FIRRemoteConfigFetchAndActivateStatus) {
+  /// The remote fetch succeeded and fetched data was activated.
+  FIRRemoteConfigFetchAndActivateStatusSuccessFetchedFromRemote,
+  /// The fetch and activate succeeded from already fetched but yet unexpired config data. You can
+  /// control this using minimumFetchInterval property in FIRRemoteConfigSettings.
+  FIRRemoteConfigFetchAndActivateStatusSuccessUsingPreFetchedData,
+  /// The fetch and activate failed.
+  FIRRemoteConfigFetchAndActivateStatusError
+} NS_SWIFT_NAME(RemoteConfigFetchAndActivateStatus);
+
+/// Remote Config error domain that handles errors when fetching data from the service.
+extern NSString *const _Nonnull FIRRemoteConfigErrorDomain NS_SWIFT_NAME(RemoteConfigErrorDomain);
+/// Firebase Remote Config service fetch error.
+typedef NS_ENUM(NSInteger, FIRRemoteConfigError) {
+  /// Unknown or no error.
+  FIRRemoteConfigErrorUnknown = 8001,
+  /// Frequency of fetch requests exceeds throttled limit.
+  FIRRemoteConfigErrorThrottled = 8002,
+  /// Internal error that covers all internal HTTP errors.
+  FIRRemoteConfigErrorInternalError = 8003,
+} NS_SWIFT_NAME(RemoteConfigError);
+
+/// Enumerated value that indicates the source of Remote Config data. Data can come from
+/// the Remote Config service, the DefaultConfig that is available when the app is first installed,
+/// or a static initialized value if data is not available from the service or DefaultConfig.
+typedef NS_ENUM(NSInteger, FIRRemoteConfigSource) {
+  FIRRemoteConfigSourceRemote,   ///< The data source is the Remote Config service.
+  FIRRemoteConfigSourceDefault,  ///< The data source is the DefaultConfig defined for this app.
+  FIRRemoteConfigSourceStatic,   ///< The data doesn't exist, return a static initialized value.
+} NS_SWIFT_NAME(RemoteConfigSource);
+
+/// Completion handler invoked by fetch methods when they get a response from the server.
+///
+/// @param status Config fetching status.
+/// @param error  Error message on failure.
+typedef void (^FIRRemoteConfigFetchCompletion)(FIRRemoteConfigFetchStatus status,
+                                               NSError *_Nullable error)
+    NS_SWIFT_NAME(RemoteConfigFetchCompletion);
+
+/// Completion handler invoked by activate method upon completion.
+/// @param error  Error message on failure. Nil if activation was successful.
+typedef void (^FIRRemoteConfigActivateCompletion)(NSError *_Nullable error)
+    NS_SWIFT_NAME(RemoteConfigActivateCompletion);
+
+/// Completion handler invoked upon completion of Remote Config initialization.
+///
+/// @param initializationError nil if initialization succeeded.
+typedef void (^FIRRemoteConfigInitializationCompletion)(NSError *_Nullable initializationError)
+    NS_SWIFT_NAME(RemoteConfigInitializationCompletion);
+
+/// Completion handler invoked by the fetchAndActivate method. Used to convey status of fetch and,
+/// if successful, resultant activate call
+/// @param status Config fetching status.
+/// @param error  Error message on failure of config fetch
+typedef void (^FIRRemoteConfigFetchAndActivateCompletion)(
+    FIRRemoteConfigFetchAndActivateStatus status, NSError *_Nullable error)
+    NS_SWIFT_NAME(RemoteConfigFetchAndActivateCompletion);
+
+#pragma mark - FIRRemoteConfigValue
+/// This class provides a wrapper for Remote Config parameter values, with methods to get parameter
+/// values as different data types.
+NS_SWIFT_NAME(RemoteConfigValue)
+@interface FIRRemoteConfigValue : NSObject <NSCopying>
+/// Gets the value as a string.
+@property(nonatomic, readonly, nullable) NSString *stringValue;
+/// Gets the value as a number value.
+@property(nonatomic, readonly, nonnull) NSNumber *numberValue;
+/// Gets the value as a NSData object.
+@property(nonatomic, readonly, nonnull) NSData *dataValue;
+/// Gets the value as a boolean.
+@property(nonatomic, readonly) BOOL boolValue;
+/// Gets a foundation object (NSDictionary / NSArray) by parsing the value as JSON. This method uses
+/// NSJSONSerialization's JSONObjectWithData method with an options value of 0.
+@property(nonatomic, readonly, nullable) id JSONValue NS_SWIFT_NAME(jsonValue);
+/// Identifies the source of the fetched value.
+@property(nonatomic, readonly) FIRRemoteConfigSource source;
+@end
+
+#pragma mark - FIRRemoteConfigSettings
+/// Firebase Remote Config settings.
+NS_SWIFT_NAME(RemoteConfigSettings)
+@interface FIRRemoteConfigSettings : NSObject
+/// Indicates the default value in seconds to set for the minimum interval that needs to elapse
+/// before a fetch request can again be made to the Remote Config backend. After a fetch request to
+/// the backend has succeeded, no additional fetch requests to the backend will be allowed until the
+/// minimum fetch interval expires. Note that you can override this default on a per-fetch request
+/// basis using -[FIRRemoteConfig fetchWithExpirationDuration:completionHandler]. For E.g. setting
+/// the expiration duration to 0 in the fetch request will override the minimumFetchInterval and
+/// allow the request to the backend.
+@property(nonatomic, assign) NSTimeInterval minimumFetchInterval;
+/// Indicates the default value in seconds to abandon a pending fetch request made to the backend.
+/// This value is set for outgoing requests as the timeoutIntervalForRequest as well as the
+/// timeoutIntervalForResource on the NSURLSession's configuration.
+@property(nonatomic, assign) NSTimeInterval fetchTimeout;
+@end
+
+#pragma mark - FIRRemoteConfig
+/// Firebase Remote Config class. The shared instance method +remoteConfig can be created and used
+/// to fetch, activate and read config results and set default config results.
+NS_SWIFT_NAME(RemoteConfig)
+@interface FIRRemoteConfig : NSObject <NSFastEnumeration>
+/// Last successful fetch completion time.
+@property(nonatomic, readonly, strong, nullable) NSDate *lastFetchTime;
+/// Last fetch status. The status can be any enumerated value from FIRRemoteConfigFetchStatus.
+@property(nonatomic, readonly, assign) FIRRemoteConfigFetchStatus lastFetchStatus;
+/// Config settings are custom settings.
+@property(nonatomic, readwrite, strong, nonnull) FIRRemoteConfigSettings *configSettings;
+
+/// Returns the FIRRemoteConfig instance configured for the default Firebase app. This singleton
+/// object contains the complete set of Remote Config parameter values available to the app,
+/// including the Active Config and Default Config. This object also caches values fetched from the
+/// Remote Config Server until they are copied to the Active Config by calling
+/// `activateWithCompletion:`. When you fetch values from the Remote Config Server using the default
+/// Firebase namespace service, you should use this class method to create a shared instance of the
+/// FIRRemoteConfig object to ensure that your app will function properly with the Remote Config
+/// Server and the Firebase service.
++ (nonnull FIRRemoteConfig *)remoteConfig NS_SWIFT_NAME(remoteConfig());
+
+/// Returns the FIRRemoteConfig instance for your (non-default) Firebase appID. Note that Firebase
+/// analytics does not work for non-default app instances. This singleton object contains the
+/// complete set of Remote Config parameter values available to the app, including the Active Config
+/// and Default Config. This object also caches values fetched from the Remote Config Server until
+/// they are copied to the Active Config by calling `activateWithCompletion:`. When you fetch values
+/// from the Remote Config Server using the default Firebase namespace service, you should use this
+/// class method to create a shared instance of the FIRRemoteConfig object to ensure that your app
+/// will function properly with the Remote Config Server and the Firebase service.
++ (nonnull FIRRemoteConfig *)remoteConfigWithApp:(nonnull FIRApp *)app
+    NS_SWIFT_NAME(remoteConfig(app:));
+
+/// Unavailable. Use +remoteConfig instead.
+- (nonnull instancetype)init __attribute__((unavailable("Use +remoteConfig instead.")));
+
+/// Ensures initialization is complete and clients can begin querying for Remote Config values.
+/// @param completionHandler Initialization complete callback with error parameter.
+- (void)ensureInitializedWithCompletionHandler:
+    (void (^_Nonnull)(NSError *_Nullable initializationError))completionHandler;
+#pragma mark - Fetch
+/// Fetches Remote Config data with a callback. Call `activateWithCompletion:` to make fetched data
+/// available to your app.
+///
+/// Note: This method uses a Firebase Installations token to identify the app instance, and once
+/// it's called, it periodically sends data to the Firebase backend. (see
+/// `[FIRInstallations authTokenWithCompletion:]`).
+/// To stop the periodic sync, developers need to call `[FIRInstallations deleteWithCompletion:]`
+/// and avoid calling this method again.
+///
+/// @param completionHandler Fetch operation callback with status and error parameters.
+- (void)fetchWithCompletionHandler:(void (^_Nullable)(FIRRemoteConfigFetchStatus status,
+                                                      NSError *_Nullable error))completionHandler;
+
+/// Fetches Remote Config data and sets a duration that specifies how long config data lasts.
+/// Call `activateWithCompletion:` to make fetched data available to your app.
+///
+/// Note: This method uses a Firebase Installations token to identify the app instance, and once
+/// it's called, it periodically sends data to the Firebase backend. (see
+/// `[FIRInstallations authTokenWithCompletion:]`).
+/// To stop the periodic sync, developers need to call `[FIRInstallations deleteWithCompletion:]`
+/// and avoid calling this method again.
+///
+/// @param expirationDuration  Override the (default or optionally set minimumFetchInterval property
+/// in FIRRemoteConfigSettings) minimumFetchInterval for only the current request, in seconds.
+/// Setting a value of 0 seconds will force a fetch to the backend.
+/// @param completionHandler   Fetch operation callback with status and error parameters.
+- (void)fetchWithExpirationDuration:(NSTimeInterval)expirationDuration
+                  completionHandler:(void (^_Nullable)(FIRRemoteConfigFetchStatus status,
+                                                       NSError *_Nullable error))completionHandler;
+
+/// Fetches Remote Config data and if successful, activates fetched data. Optional completion
+/// handler callback is invoked after the attempted activation of data, if the fetch call succeeded.
+///
+/// Note: This method uses a Firebase Installations token to identify the app instance, and once
+/// it's called, it periodically sends data to the Firebase backend. (see
+/// `[FIRInstallations authTokenWithCompletion:]`).
+/// To stop the periodic sync, developers need to call `[FIRInstallations deleteWithCompletion:]`
+/// and avoid calling this method again.
+///
+/// @param completionHandler Fetch operation callback with status and error parameters.
+- (void)fetchAndActivateWithCompletionHandler:
+    (void (^_Nullable)(FIRRemoteConfigFetchAndActivateStatus status,
+                       NSError *_Nullable error))completionHandler;
+
+#pragma mark - Apply
+
+/// Applies Fetched Config data to the Active Config, causing updates to the behavior and appearance
+/// of the app to take effect (depending on how config data is used in the app).
+/// @param completion Activate operation callback with changed and error parameters.
+- (void)activateWithCompletion:(void (^_Nullable)(BOOL changed,
+                                                  NSError *_Nullable error))completion;
+
+#pragma mark - Get Config
+/// Enables access to configuration values by using object subscripting syntax.
+/// <pre>
+/// // Example:
+/// FIRRemoteConfig *config = [FIRRemoteConfig remoteConfig];
+/// FIRRemoteConfigValue *value = config[@"yourKey"];
+/// BOOL b = value.boolValue;
+/// NSNumber *number = config[@"yourKey"].numberValue;
+/// </pre>
+- (nonnull FIRRemoteConfigValue *)objectForKeyedSubscript:(nonnull NSString *)key;
+
+/// Gets the config value.
+/// @param key Config key.
+- (nonnull FIRRemoteConfigValue *)configValueForKey:(nullable NSString *)key;
+
+/// Gets the config value of a given source from the default namespace.
+/// @param key              Config key.
+/// @param source           Config value source.
+- (nonnull FIRRemoteConfigValue *)configValueForKey:(nullable NSString *)key
+                                             source:(FIRRemoteConfigSource)source;
+
+/// Gets all the parameter keys of a given source from the default namespace.
+///
+/// @param source           The config data source.
+/// @return                 An array of keys under the given source.
+- (nonnull NSArray<NSString *> *)allKeysFromSource:(FIRRemoteConfigSource)source;
+
+/// Returns the set of parameter keys that start with the given prefix, from the default namespace
+///                         in the active config.
+///
+/// @param prefix           The key prefix to look for. If prefix is nil or empty, returns all the
+///                         keys.
+/// @return                 The set of parameter keys that start with the specified prefix.
+- (nonnull NSSet<NSString *> *)keysWithPrefix:(nullable NSString *)prefix;
+
+#pragma mark - Defaults
+/// Sets config defaults for parameter keys and values in the default namespace config.
+/// @param defaults         A dictionary mapping a NSString * key to a NSObject * value.
+- (void)setDefaults:(nullable NSDictionary<NSString *, NSObject *> *)defaults;
+
+/// Sets default configs from plist for default namespace.
+///
+/// @param fileName The plist file name, with no file name extension. For example, if the plist file
+///                 is defaultSamples.plist, call:
+///                 [[FIRRemoteConfig remoteConfig] setDefaultsFromPlistFileName:@"defaultSamples"];
+- (void)setDefaultsFromPlistFileName:(nullable NSString *)fileName
+    NS_SWIFT_NAME(setDefaults(fromPlist:));
+
+/// Returns the default value of a given key from the default config.
+///
+/// @param key              The parameter key of default config.
+/// @return                 Returns the default value of the specified key. Returns
+///                         nil if the key doesn't exist in the default config.
+- (nullable FIRRemoteConfigValue *)defaultValueForKey:(nullable NSString *)key;
+
+@end

+ 17 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers/FirebaseRemoteConfig.h

@@ -0,0 +1,17 @@
+/*
+ * Copyright 2019 Google
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#import "FIRRemoteConfig.h"

+ 20 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Info.plist

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleExecutable</key>
+	<string>FirebaseRemoteConfig</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.firebase.Firebase-FirebaseRemoteConfig</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>FirebaseRemoteConfig</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleVersion</key>
+	<string>8.15.0</string>
+	<key>DTSDKName</key>
+	<string>iphonesimulator11.2</string>
+</dict>
+</plist>

+ 11 - 0
PDF Office/PDF Master/Third Pard Library/FirebaseAnalytics/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Modules/module.modulemap

@@ -0,0 +1,11 @@
+framework module FirebaseRemoteConfig {
+umbrella header "FirebaseRemoteConfig.h"
+export *
+module * { export * }
+  link framework "AppKit"
+  link framework "CoreTelephony"
+  link framework "Foundation"
+  link framework "Security"
+  link framework "SystemConfiguration"
+  link "z"
+}

+ 30 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /DMGRemoteConfigDefaults.plist

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>appEvaluateBeforeAdsCount</key>
+	<string>2</string>
+	<key>appEvaluateAfterAdsCount</key>
+	<string>3</string>
+	<key>isDisplayAds</key>
+	<true/>
+	<key>isDisplayAdsEvaluateAfter</key>
+	<true/>
+	<key>displayAdsUrl </key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_DMG_728x90_pro</string>
+	<key>displayHouseAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_DMG_HouseAD_728x90</string>
+	<key>refreshAdsRate</key>
+	<string>1000000</string>
+	<key>refreshAdsRateEvaluateAfter</key>
+	<string>1000000</string>
+	<key>refreshAdsDate</key>
+	<string>180</string>
+	<key>refreshAdsDateEvaluateAfter</key>
+	<string>180</string>
+	<key>closeIntervalDate</key>
+	<string>600</string>
+	<key>closeIntervalDateEvaluateAfter</key>
+	<string>600</string>
+</dict>
+</plist>

+ 195 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /KMFirebaseRemoteConfig.swift

@@ -0,0 +1,195 @@
+import Foundation
+import FirebaseRemoteConfig
+
+enum KMRemoteConfigFetchStatus: Int {
+    case success
+    case failure
+}
+
+let KMFirebaseRemateConfigRequestIsSuccessful = "KMFirebaseRemateConfigRequestIsSuccessful"
+let KMFirebaseRemateConfigFinishNoti = "KMFirebaseRemateConfigFinishNoti"
+
+class KMKdanRemoteConfig: NSObject {
+
+    typealias KMRemoteConfigFetchCompletion = (KMRemoteConfigFetchStatus, Error?) -> Void
+
+    private let kIsDisplayAdsKey = "isDisplayAds"
+    private let kIsDisplayAdsEvaluateAfterKey = "isDisplayAdsEvaluateAfter"
+    private let kDisplayAdsUrlConfigKey = "displayAdsUrl"
+    private let kDisplayHouseAdsUrlConfigKey = "displayHouseAdsUrl"
+    private let kRefreshAdsRateDayKey = "refreshAdsRate"
+    private let kRefreshAdsRateDayEvaluateAfterKey = "refreshAdsRateEvaluateAfter"
+    private let kRefreshAdsDateDayKey = "refreshAdsDate"
+    private let kRefreshAdsDateDayEvaluateAfterKey = "refreshAdsDateEvaluateAfter"
+    private let kCloseIntervalDateDayKey = "closeIntervalDate"
+    private let kCloseIntervalDateDayEvaluateAfterKey = "closeIntervalDateEvaluateAfter"
+    private let kAppEvaluateBeforeAdsCountKey = "appEvaluateBeforeAdsCount"
+    private let kAppEvaluateAfterAdsCountKey = "appEvaluateAfterAdsCount"
+
+    private var remoteConfigDatas: [String: Any] = [:]
+    private var userInfo: [String: Any] = [:]
+
+    private lazy var firebaseConfig: RemoteConfig = {
+        let config = RemoteConfig.remoteConfig()
+        let settings = RemoteConfigSettings()
+        settings.minimumFetchInterval = 0
+        config.configSettings = settings
+        
+        #if VERSION_FREE
+            config.setDefaults(fromPlist: "RemoteConfigDefaults")
+        #else
+            config.setDefaults(fromPlist: "ProRemoteConfigDefaults")
+        #endif
+        
+        return config
+    }()
+
+    static func remoteConfig() -> KMKdanRemoteConfig {
+        return KMKdanRemoteConfig()
+    }
+
+    override init() {
+        super.init()
+        let mainBundleString = Bundle.main.bundleIdentifier ?? ""
+        var dataPath: String?
+
+        #if VERSION_DMG
+            dataPath = Bundle.main.path(forResource: "DMGRemoteConfigDefaults", ofType: "plist")
+        #else
+            #if VERSION_FREE
+                dataPath = Bundle.main.path(forResource: "RemoteConfigDefaults", ofType: "plist")
+            #else
+                dataPath = Bundle.main.path(forResource: "ProRemoteConfigDefaults", ofType: "plist")
+            #endif
+        #endif
+
+        if let path = dataPath, let dict = NSDictionary(contentsOfFile: path) as? [String: Any] {
+            self.userInfo = dict
+        }
+    }
+
+    func fetch(completionHandler: @escaping KMRemoteConfigFetchCompletion) {
+        // Your implementation here
+    }
+
+    func fetchWithRemoteConfigCompletionHandler(completionHandler: @escaping RemoteConfigFetchCompletion) {
+        // Your implementation here
+    }
+
+    func isDisplayAds() -> Bool {
+        var isDisplayAds = userInfo[kIsDisplayAdsKey] as? Bool ?? true
+        if let value = remoteConfigDatas[kIsDisplayAdsKey] as? Bool {
+            isDisplayAds = value
+        }
+        return isDisplayAds
+    }
+
+    func isDisplayAdsEvaluateAfter() -> Bool {
+        var isDisplayAds = userInfo[kIsDisplayAdsEvaluateAfterKey] as? Bool ?? true
+        if let value = remoteConfigDatas[kIsDisplayAdsEvaluateAfterKey] as? Bool {
+            isDisplayAds = value
+        }
+        return isDisplayAds
+    }
+
+    func displayHouseAdsUrl() -> String {
+        var adsUrl = userInfo[kDisplayHouseAdsUrlConfigKey] as? String ?? ""
+        if let value = remoteConfigDatas[kDisplayHouseAdsUrlConfigKey] as? String {
+            adsUrl = value.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
+        }
+        return adsUrl
+    }
+
+    func displayAdsUrl() -> String {
+        var adsUrl = userInfo[kDisplayAdsUrlConfigKey] as? String ?? ""
+        if let value = remoteConfigDatas[kDisplayAdsUrlConfigKey] as? String {
+            adsUrl = value.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
+        }
+        return adsUrl
+    }
+
+    func refreshAdsRate() -> Int {
+        var adsRate = userInfo[kRefreshAdsRateDayKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kRefreshAdsRateDayKey] as? Int {
+            adsRate = value
+        }
+        return adsRate
+    }
+
+    func refreshAdsRateEvaluateAfter() -> Int {
+        var adsRate = userInfo[kRefreshAdsRateDayEvaluateAfterKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kRefreshAdsRateDayEvaluateAfterKey] as? Int {
+            adsRate = value
+        }
+        return adsRate
+    }
+
+    func refreshAdsDate() -> Int {
+        var adsDate = userInfo[kRefreshAdsDateDayKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kRefreshAdsDateDayKey] as? Int {
+            adsDate = value
+        }
+        return adsDate
+    }
+
+    func refreshAdsDateEvaluateAfter() -> Int {
+        var adsDate = userInfo[kRefreshAdsDateDayEvaluateAfterKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kRefreshAdsDateDayEvaluateAfterKey] as? Int {
+            adsDate = value
+        }
+        return adsDate
+    }
+
+    func closeIntervalDate() -> Int {
+        var intervalDate = userInfo[kCloseIntervalDateDayKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kCloseIntervalDateDayKey] as? Int {
+            intervalDate = value
+        }
+        return intervalDate
+    }
+
+    func closeIntervalDateEvaluateAfter() -> Int {
+        var intervalDate = userInfo[kCloseIntervalDateDayEvaluateAfterKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kCloseIntervalDateDayEvaluateAfterKey] as? Int {
+            intervalDate = value
+        }
+        return intervalDate
+    }
+
+    func appEvaluateBeforeAdsCount() -> Int {
+        var evaluateCount = userInfo[kAppEvaluateBeforeAdsCountKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kAppEvaluateBeforeAdsCountKey] as? Int {
+            evaluateCount = value
+        }
+        return evaluateCount
+    }
+
+    func appEvaluateAfterAdsCount() -> Int {
+        var evaluateCount = userInfo[kAppEvaluateAfterAdsCountKey] as? Int ?? 0
+        if let value = remoteConfigDatas[kAppEvaluateAfterAdsCountKey] as? Int {
+            evaluateCount = value
+        }
+        return evaluateCount
+    }
+
+    func showSDKRecommendInfo() -> Bool {
+        guard firebaseConfig.lastFetchStatus == .success else {
+            return false
+        }
+        return firebaseConfig["SDKRecommendKey"].boolValue
+    }
+
+    func showAPP_AveragePrice() -> Bool {
+        guard firebaseConfig.lastFetchStatus == .success else {
+            return false
+        }
+        return firebaseConfig["ShowAPP_AveragePrice"].boolValue
+    }
+
+    func showHelp_More_RecommendLink() -> Bool {
+        guard firebaseConfig.lastFetchStatus == .success else {
+            return false
+        }
+        return firebaseConfig["Help_More_Link_Recommend"].boolValue
+    }
+}

+ 34 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /ProRemoteConfigDefaults.plist

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>appEvaluateAfterAdsCount</key>
+	<string>3</string>
+	<key>appEvaluateBeforeAdsCount</key>
+	<string>2</string>
+	<key>isDisplayAds</key>
+	<true/>
+	<key>isDisplayAdsEvaluateAfter</key>
+	<true/>
+	<key>displayAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_728x90_pro</string>
+	<key>displayHouseAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_HouseAD_728x90</string>
+	<key>refreshAdsRate</key>
+	<string>1000000</string>
+	<key>refreshAdsRateEvaluateAfter</key>
+	<string>1000000</string>
+	<key>refreshAdsDate</key>
+	<string>180</string>
+	<key>refreshAdsDateEvaluateAfter</key>
+	<string>180</string>
+	<key>closeIntervalDate</key>
+	<string>600</string>
+	<key>closeIntervalDateEvaluateAfter</key>
+	<string>600</string>
+	<key>ShowAPP_AveragePrice</key>
+	<false/>
+	<key>SDKRecommendKey</key>
+	<false/>
+</dict>
+</plist>

+ 34 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /RemoteConfigDefaults.plist

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>appEvaluateAfterAdsCount</key>
+	<string>3</string>
+	<key>appEvaluateBeforeAdsCount</key>
+	<string>2</string>
+	<key>isDisplayAds</key>
+	<true/>
+	<key>isDisplayAdsEvaluateAfter</key>
+	<true/>
+	<key>displayAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_728x90_pro</string>
+	<key>displayHouseAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_HouseAD_728x90</string>
+	<key>refreshAdsRate</key>
+	<string>1000000</string>
+	<key>refreshAdsRateEvaluateAfter</key>
+	<string>1000000</string>
+	<key>refreshAdsDate</key>
+	<string>180</string>
+	<key>refreshAdsDateEvaluateAfter</key>
+	<string>180</string>
+	<key>closeIntervalDate</key>
+	<string>600</string>
+	<key>closeIntervalDateEvaluateAfter</key>
+	<string>600</string>
+	<key>SDKRecommendKey</key>
+	<false/>
+	<key>ShowAPP_AveragePrice</key>
+	<false/>
+</dict>
+</plist>