From b81cebe3349e0597948bc740ebcb4a13ac63069b Mon Sep 17 00:00:00 2001 From: secminhr Date: Tue, 10 Jul 2018 14:22:28 +0800 Subject: [PATCH] Add a new screen Add Tests --- StudyCK/StudyCK.xcodeproj/project.pbxproj | 250 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 27566 -> 113513 bytes .../xcschemes/StudyCK.xcscheme | 112 ++++++++ .../xcschemes/xcschememanagement.plist | 18 ++ StudyCK/StudyCK/Base.lproj/Main.storyboard | 15 +- StudyCK/StudyCK/ChoiceMenuController.swift | 87 ++++++ StudyCK/StudyCK/LoginViewController.swift | 2 +- StudyCK/StudyCK/LoginViewModel.swift | 5 +- StudyCK/StudyCKTests/Info.plist | 22 ++ StudyCK/StudyCKTests/StudyCKTests.swift | 80 ++++++ StudyCK/StudyCKUITests/Info.plist | 22 ++ StudyCK/StudyCKUITests/StudyCKUITests.swift | 74 ++++++ 12 files changed, 682 insertions(+), 5 deletions(-) create mode 100644 StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/StudyCK.xcscheme create mode 100644 StudyCK/StudyCK/ChoiceMenuController.swift create mode 100644 StudyCK/StudyCKTests/Info.plist create mode 100644 StudyCK/StudyCKTests/StudyCKTests.swift create mode 100644 StudyCK/StudyCKUITests/Info.plist create mode 100644 StudyCK/StudyCKUITests/StudyCKUITests.swift diff --git a/StudyCK/StudyCK.xcodeproj/project.pbxproj b/StudyCK/StudyCK.xcodeproj/project.pbxproj index d77adf9..ce0bb6b 100644 --- a/StudyCK/StudyCK.xcodeproj/project.pbxproj +++ b/StudyCK/StudyCK.xcodeproj/project.pbxproj @@ -13,8 +13,28 @@ 4F2F116920EDB07E0074B9A6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F2F116820EDB07E0074B9A6 /* Assets.xcassets */; }; 4F2F116C20EDB07E0074B9A6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F2F116A20EDB07E0074B9A6 /* LaunchScreen.storyboard */; }; 4F2F117420EF0E5B0074B9A6 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2F117320EF0E5B0074B9A6 /* LoginViewModel.swift */; }; + 4F2F117620F053A40074B9A6 /* ChoiceMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2F117520F053A40074B9A6 /* ChoiceMenuController.swift */; }; + 4F2F117E20F054E90074B9A6 /* StudyCKTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2F117D20F054E90074B9A6 /* StudyCKTests.swift */; }; + 4F2F118C20F054F40074B9A6 /* StudyCKUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2F118B20F054F40074B9A6 /* StudyCKUITests.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 4F2F118020F054E90074B9A6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4F2F115620EDB07B0074B9A6 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F2F115D20EDB07B0074B9A6; + remoteInfo = StudyCK; + }; + 4F2F118E20F054F40074B9A6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4F2F115620EDB07B0074B9A6 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F2F115D20EDB07B0074B9A6; + remoteInfo = StudyCK; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 4F2F115E20EDB07B0074B9A6 /* StudyCK.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StudyCK.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4F2F116120EDB07B0074B9A6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -24,6 +44,13 @@ 4F2F116B20EDB07E0074B9A6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 4F2F116D20EDB07E0074B9A6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4F2F117320EF0E5B0074B9A6 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; + 4F2F117520F053A40074B9A6 /* ChoiceMenuController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChoiceMenuController.swift; sourceTree = ""; }; + 4F2F117B20F054E90074B9A6 /* StudyCKTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StudyCKTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F2F117D20F054E90074B9A6 /* StudyCKTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyCKTests.swift; sourceTree = ""; }; + 4F2F117F20F054E90074B9A6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4F2F118920F054F40074B9A6 /* StudyCKUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StudyCKUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F2F118B20F054F40074B9A6 /* StudyCKUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyCKUITests.swift; sourceTree = ""; }; + 4F2F118D20F054F40074B9A6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -34,6 +61,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4F2F117820F054E90074B9A6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4F2F118620F054F40074B9A6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -41,6 +82,8 @@ isa = PBXGroup; children = ( 4F2F116020EDB07B0074B9A6 /* StudyCK */, + 4F2F117C20F054E90074B9A6 /* StudyCKTests */, + 4F2F118A20F054F40074B9A6 /* StudyCKUITests */, 4F2F115F20EDB07B0074B9A6 /* Products */, ); sourceTree = ""; @@ -49,6 +92,8 @@ isa = PBXGroup; children = ( 4F2F115E20EDB07B0074B9A6 /* StudyCK.app */, + 4F2F117B20F054E90074B9A6 /* StudyCKTests.xctest */, + 4F2F118920F054F40074B9A6 /* StudyCKUITests.xctest */, ); name = Products; sourceTree = ""; @@ -59,6 +104,7 @@ 4F2F116120EDB07B0074B9A6 /* AppDelegate.swift */, 4F2F116320EDB07B0074B9A6 /* LoginViewController.swift */, 4F2F117320EF0E5B0074B9A6 /* LoginViewModel.swift */, + 4F2F117520F053A40074B9A6 /* ChoiceMenuController.swift */, 4F2F116520EDB07B0074B9A6 /* Main.storyboard */, 4F2F116820EDB07E0074B9A6 /* Assets.xcassets */, 4F2F116A20EDB07E0074B9A6 /* LaunchScreen.storyboard */, @@ -67,6 +113,24 @@ path = StudyCK; sourceTree = ""; }; + 4F2F117C20F054E90074B9A6 /* StudyCKTests */ = { + isa = PBXGroup; + children = ( + 4F2F117D20F054E90074B9A6 /* StudyCKTests.swift */, + 4F2F117F20F054E90074B9A6 /* Info.plist */, + ); + path = StudyCKTests; + sourceTree = ""; + }; + 4F2F118A20F054F40074B9A6 /* StudyCKUITests */ = { + isa = PBXGroup; + children = ( + 4F2F118B20F054F40074B9A6 /* StudyCKUITests.swift */, + 4F2F118D20F054F40074B9A6 /* Info.plist */, + ); + path = StudyCKUITests; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -87,6 +151,42 @@ productReference = 4F2F115E20EDB07B0074B9A6 /* StudyCK.app */; productType = "com.apple.product-type.application"; }; + 4F2F117A20F054E90074B9A6 /* StudyCKTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4F2F118220F054E90074B9A6 /* Build configuration list for PBXNativeTarget "StudyCKTests" */; + buildPhases = ( + 4F2F117720F054E90074B9A6 /* Sources */, + 4F2F117820F054E90074B9A6 /* Frameworks */, + 4F2F117920F054E90074B9A6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4F2F118120F054E90074B9A6 /* PBXTargetDependency */, + ); + name = StudyCKTests; + productName = StudyCKTests; + productReference = 4F2F117B20F054E90074B9A6 /* StudyCKTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 4F2F118820F054F40074B9A6 /* StudyCKUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4F2F119020F054F40074B9A6 /* Build configuration list for PBXNativeTarget "StudyCKUITests" */; + buildPhases = ( + 4F2F118520F054F40074B9A6 /* Sources */, + 4F2F118620F054F40074B9A6 /* Frameworks */, + 4F2F118720F054F40074B9A6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4F2F118F20F054F40074B9A6 /* PBXTargetDependency */, + ); + name = StudyCKUITests; + productName = StudyCKUITests; + productReference = 4F2F118920F054F40074B9A6 /* StudyCKUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -100,6 +200,14 @@ 4F2F115D20EDB07B0074B9A6 = { CreatedOnToolsVersion = 9.3.1; }; + 4F2F117A20F054E90074B9A6 = { + CreatedOnToolsVersion = 9.3.1; + TestTargetID = 4F2F115D20EDB07B0074B9A6; + }; + 4F2F118820F054F40074B9A6 = { + CreatedOnToolsVersion = 9.3.1; + TestTargetID = 4F2F115D20EDB07B0074B9A6; + }; }; }; buildConfigurationList = 4F2F115920EDB07B0074B9A6 /* Build configuration list for PBXProject "StudyCK" */; @@ -116,6 +224,8 @@ projectRoot = ""; targets = ( 4F2F115D20EDB07B0074B9A6 /* StudyCK */, + 4F2F117A20F054E90074B9A6 /* StudyCKTests */, + 4F2F118820F054F40074B9A6 /* StudyCKUITests */, ); }; /* End PBXProject section */ @@ -131,6 +241,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4F2F117920F054E90074B9A6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4F2F118720F054F40074B9A6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -139,13 +263,43 @@ buildActionMask = 2147483647; files = ( 4F2F116420EDB07B0074B9A6 /* LoginViewController.swift in Sources */, + 4F2F117620F053A40074B9A6 /* ChoiceMenuController.swift in Sources */, 4F2F116220EDB07B0074B9A6 /* AppDelegate.swift in Sources */, 4F2F117420EF0E5B0074B9A6 /* LoginViewModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + 4F2F117720F054E90074B9A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F2F117E20F054E90074B9A6 /* StudyCKTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4F2F118520F054F40074B9A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F2F118C20F054F40074B9A6 /* StudyCKUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 4F2F118120F054E90074B9A6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F2F115D20EDB07B0074B9A6 /* StudyCK */; + targetProxy = 4F2F118020F054E90074B9A6 /* PBXContainerItemProxy */; + }; + 4F2F118F20F054F40074B9A6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F2F115D20EDB07B0074B9A6 /* StudyCK */; + targetProxy = 4F2F118E20F054F40074B9A6 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 4F2F116520EDB07B0074B9A6 /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -316,6 +470,84 @@ }; name = Release; }; + 4F2F118320F054E90074B9A6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 8NETVC8VTT; + INFOPLIST_FILE = StudyCKTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Ian-Chang-Presonal.StudyCKTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StudyCK.app/StudyCK"; + }; + name = Debug; + }; + 4F2F118420F054E90074B9A6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 8NETVC8VTT; + INFOPLIST_FILE = StudyCKTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Ian-Chang-Presonal.StudyCKTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StudyCK.app/StudyCK"; + }; + name = Release; + }; + 4F2F119120F054F40074B9A6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 8NETVC8VTT; + INFOPLIST_FILE = StudyCKUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Ian-Chang-Presonal.StudyCKUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = StudyCK; + }; + name = Debug; + }; + 4F2F119220F054F40074B9A6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 8NETVC8VTT; + INFOPLIST_FILE = StudyCKUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "Ian-Chang-Presonal.StudyCKUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = StudyCK; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -337,6 +569,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4F2F118220F054E90074B9A6 /* Build configuration list for PBXNativeTarget "StudyCKTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4F2F118320F054E90074B9A6 /* Debug */, + 4F2F118420F054E90074B9A6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4F2F119020F054F40074B9A6 /* Build configuration list for PBXNativeTarget "StudyCKUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4F2F119120F054F40074B9A6 /* Debug */, + 4F2F119220F054F40074B9A6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 4F2F115620EDB07B0074B9A6 /* Project object */; diff --git a/StudyCK/StudyCK.xcodeproj/project.xcworkspace/xcuserdata/secminhr.xcuserdatad/UserInterfaceState.xcuserstate b/StudyCK/StudyCK.xcodeproj/project.xcworkspace/xcuserdata/secminhr.xcuserdatad/UserInterfaceState.xcuserstate index d20efcc0cef029b5d136e7ae63f4b8a438e4e5a7..d8bd2852f97fe92bbcd22cf4d86be578e9ef1043 100644 GIT binary patch literal 113513 zcmeEv2Vhji*8iQE+skIN*=z|SNRhg*yq3Wc8; zff1Q@%ppvB=1`^s(~&uh@i1P-$M~556J$b6n29h)F$rcoGl7}NoWM+CCNoo*GG;1M z&Mab1Viq$eGp8^*Lzz>V)0id9>CA=9Ma;#_CCsHvBh$pJU{*3WFsqo=%v$DV<~HUo z=5FSGW-IeJvyFLzd6IdGd4_p~d6jvMd4qYA*~RQ;_As9?pE6%F-!Q*1zas`A#34I! zASWt8?a(2pJvtP1Kpx~pKIBIM6ht8uMiCT6F%(BBGyn}mgHS0Ng~p>Ps0^i1B{~sR zqZ-tJ=Awn@WONGB(HZD0bRJrUEHdpEw~HriVw%#aCh7T_r$&MQTS+l4DOGkIELdm zfs;6e2jJm&1U?Rr#gp( zB(upJGLM`_mXOoQ8RP2KI%B;ewtj5||2kT@@*hAS)Y-hF$+m$_>4YDCN%tqLL z>=Epd>{09~tj<#QRQ5D>341zw2D_9!lRb+)n>~j;mpzYN#-7h!z+T8+#9qu^!d}W= z#$L`|!CuK;#a_)`!(Pi?$6n7aXB*ijb_KhVy@6fDu4Zp!*RX5Zb?i;-&Fp&i7WP*5 zHg*GhJG+s+gT0fzi@lq@hrO4*kKM%H&pyCzW?yG_vTv|&vTw0(v+uC)vhT6G*xl?N z_Cxj)_A~Z7_IvgR_BW2@Ok4qH=1RDB+#%fITsN*e=jJ?|my2<6F2NjyNs4z?zFH8_73MUAYgsDQg zP$`@!EEE6spX8SUQcwy> zVJRZ@la7#%l#Y^)mX4A7OHnB%#ifLllv2_FX`nPnI#wDi4UvXQ!=&NT21pX1 z=~?MH>3M0pv_pDH`b7Fv`b_#<`a=3r`bzp*`bPRz)?|}hAe-ev*&-LoR=HTV$#%K3 z+(qsxdt|Tdll^i)K0-cHj>?1OA@Ue`tbBqzNv@F7@=UowULc<%pDSM>UnyTDUoBrF zFP9tT)$)z<-SR#1z4CqXCi#B(0r^4sA$g0uReoIFCO<7dBflWODDRZtmfw+g%X{RH z^K<*(&$waRtM^~!4HMrFNnhjNc{ zukwJhMcJx6t~{eWtL#u-P+nACQeIQuRNhiPR6bRHR~c1RHPxgRsAkow7OU;lL)6}? zOYNifRo$vb^{PJAuSV2<>JjQOYJWAQ4pom+N2+7gvFZeMvRbZIsA+YYI$fQq)~K`9 zx#}YIboC7N0`)?*QEgIJs4LYQ)K%(g^)B^p^&a(J^*(izdcXRJx=npTeMx;;eMNm& zeNX*R{apQ4{aHgArxj^dtyr^ZcFmz3s&&x1Y2CFRnn&|${j?*rBej^8(#B|GwQ<_< z+IVe(me!_e)3q5|l{QPO)=t(=(R7V!r)sBZOSIFqt=i+-Hth-RN$n}^Y3&*9S?xLP zd2PG4LwiAcQF}>yS$jo$ReMc)UE8U>p}ncSrM<1aqrI!Wr|r^qYkRc!wGXrpwU4xq zwNJE9wa>KAwJ)?UwXd|VwQsaYx|@2KdYXEfdYfD(w<&CjnEILen^L9`rtzi;rnG66soGRyI>n@$ zsOePGX{IHn(@kfX&N5wZT5f7IHJMhJR+?@wtun1P-DrBqwAu8q=@HYTrpHWMOj}Kl zo3@#rFui1Y+4PEOmua_YkLi8W2d2+VpPRlh{bu^TKq`<6%msx7_5w%2p#|LwdKVmB zFrwhNf{_KK1)~Z^7mO(wTQIp`NghW){pTXed}vu(;slf>R4lD_Bx+ zX2H1y=M`L3aCyPC1&swa6s#&(Td=O+)`E=%_ZB=@u&rQ6!OI126}(;WPQix-Ul)8+ z@NL0&1wWZpvt~A#3(RJ7q1j?CGIuo}ZtiC8Zth|3Y3^n2ZT6c3<|E88bILrxJlI@n z9%UYFo?xD6o?UyvzK7`4jUO<}b}(nZGuF zWB$SXi}}|=QYaQ$3J)plUFa(8Q`ooAUFa$F7RCzWg^9vsVXAOI;lRRSg~JO+7nT)H zEi5mbRajkEQ#iYDZsAFVrxu=Bcvj*0g%=k#7B&^GC|p^1L*c5zn+i7;-cfjG;RA(R z3bz(MUHE+AJB9BSzE`-baChOJ!Y>NHEc~kQ>%#8~e<=LXB3WdMVo@!c#bhb4m@OkM zrIt~a(Uvimv6gX`<1OPY6D$)gCs-y~CR?Uh$}CeY<(3Ld+A_^D-7>>cX*tm{(^6%b zWvRB*SY})1SZXbGmU>HrWv*qOWxi#BWuaw}yg%@tVdgqvG%vdt*2Yhur9Tp zX+6t&w)GtAxz_Wn%dF>HFR)%{y~uj8^%Co)*2}DyTd%NQX}!vNwe=e7wbtvb*ISoc z8?8;&71ov38?39WtF1R$*I3tD*I93}-fUfOy~TQ~^)~AU>+RN!);p|sTJN&nZN0~O zuk}9bChPsy2docTAF^(?K5Tu&`l$6y>s!{ht?yXhwZ3QFW!-JvV}0NHf%QY{C)RJQ z-&()3{!)yK)nZ$5$KvkAJ&Jo4$BN^{iQ;5&s(3*0z~Vv0#}*GR9#TA_cueuw;uDIe z7tbtSTzr1<1;rN@UsQZ?@g>EV7GG9;UGeqBHx#cbzNz@u;*G_37vEESfAQwxhl?LC ze!BSO;&+NaEdHqY~ZGCNSo5$w0`D}h$ zz!tO}Z9B%6v<$u`-RwoS90Xq#!Pvdyy1u{GG{+H~6z+hw-PZ7Xam zZ8z9f*;d=u*>19Ju-$HZ#P+D|G20f~R@>vYZMG+DPuiZdJ#X7?d&%~)?G4*5+XuD} zZJ*jcvwdaz&i0e-XWK8fUv0nHv7NUI_9DC0UTiKec~t|K9$C{TB!8 z5FL_3bC?_!ht1L5(c9s2cpP3w&=GPR;W*MU%rV?C!f~8qq@&a^$}!q8#xcn;*)hdY z=9uazcQiQWI_5d%I~F(=Iu)$y$3Imf$>_Z+(%yB&KR?>jzleCYVn@s*Qx za!%eUI7O%Al%0yR$Z2&R?(F95?(E_0>Fnj~?Q}W&ID^iRGwh5w`#JkN6V9Y_kaM`R z)H%vI#aZT@>MVCwI8SueI2SkO9AJq4Of=RnDuO*Ep|rUguolTC^HJwx&MnTZ&c~hGoKHBPbUx#J-nrfRl5?l?4dv=UE(U~Q_{C2Qqr&Fh>~PUs$@XP zz><+Ar6r?E#+FPknNd<%a$?EMlA4m*lDd-ml9NhKEjhbnS;_K}l_fWntQp;Utg2jkR5if*L%SIVX-cP|wLz5ir$mw3XP2n9o4mp2yky8Homz!i0SgD!W< z?Tvd<{)i_Kg=SG-*cBXE-OzbYRVgC zrK{_6lWZ3qqspen%4!GIjj61woLZHh)N&zJTQ(~_+1x#U1le0A4=Wv+uB)%9 zErT0M>&xoXiL&~#$>t8wG+JH{X`YrLL+|mL>iXK6s;YGDWV5rS_fa)9Ra5hxJK216 z{)5`ymy861DKD&zJL-!V>lk-M!y&gT74sy*Nq5vANcp76=Hf+*+`T)x7x(VC$m0#e zuOVM#@#5`FKj5+>m?I4ytAK$HFJyO2&E>8TCM?GXf`2k+WiAp#Nmf+NRNy$YL&w8= zyZU(iS$>{uZtrvZI)=g>jfZy(Mj{>E@GtX6C=}{A+1$?E(HCm|!0p}pYL`$ToCw7O z5mzFaFgU^!aK&OURj)slOvVGjm_HdE1GMkw^8jO%);Clvhz}k;XcR0(U7xynmDB1c zn=Sc7Y+fyMF?^Wgoz~UZVJ@^3726Lid5u74C4BSlS)Z9@u7BX=!6~CcUnBJQ8rFys=;? z5l^JTLC=KdH4D4li?<)vsdJa{S^2L9E*zKrHC;EU?L(S6cO5sZba*DmxT9NlOOKwt zfX9ZFW+$E&ks!tM?8MNXKKLho@_1{RysJn zAYBn{PLjT5wuHiwen%X6)X~TEkH+GOWNN^`LB|drGIZ$B5kp6ojv75?=(yv@pOAZ8 zX6&$#qblpGKx7MnNwVX}im4%a?Qj96NZ(>4UIi4qc`kux%E*QRg)Pe zv?{G%P?a89RyPwmX&GvEwdz1h@^2hfS(Q#zR#nwyhnyYffZExak-(4#Rm^W8`mlys zQ`5CN0`nl~M3N+(m2?J71upDgpo@}jF=GpZ9~}WX=R&3g^rj1P%^_weQ_9pq-uQ0j zLFOgqV?>aQERg5zf(}RBQBTwx^?^L^2*~74hg|MVbP>7^t$>W}U67^S207YS(YM%+ zowyxtk0X#}9fQ+&2A+i%LT2?`d>!OYcRs}MEYLq$R{g5@x2(T|BfrO)&(aacTEHh4T4_4+|{TGTZr|2q*ZqU8@Ks|T@ zXrW|9C76w9Z5phF8U8MvQ8RB?+1$$MW$^K2vnyYFwJ`ys>np1&>lYYzmV)Z8A5)p0 zm+hkE_H3_3L({WrY8MQsEt@?fk)GNxeY(N@y${%NB3)NGy}C`m6OGPW@6C-fJA}$K zu&6CsR|i`kW!3fB3DsqpH)oeCm>R~tmPs?ynCZ+6rjj|4naNZ!vzTiAP`!iRQ9n%Y zq<7Z4=w0>0^=@mK*~}cK7N|H5{>^3PG4q+RdUt)0ehScWApAR5zf`{rhzNGO2quz9 zPb+Jvs?UrtJ82tynjOi|nu_#fFv-;wWwjOKt1?=86ew(i_y)1Ft-ySY$?ni(|1NEq zIty+bpVx=EFh_wrdUtGo^a$hTx_WR$My6-irt9FBGDE!qX$*%YubTns>dFTA*lavJ z*P}7$9Ieh^&SBgunWfB`%vsFYdJny)-b?Sjk~x<-k6Ff?ue{-jGTF5Xyy9fpajvrY$eMY8n?lG4!R~wJHoVkLzlDSInqxaR_x@RS@>$S{vOiv)L zPxk}4fyC{`l+{)masn<zJEBsYh#T%N8^->zH`< z)Ah_Pzz40;++tZ)FzcCHnRpv(lbinrW+UTnWNz2Pjm#Z-#F%GcV$7%(Dh{eo&#KFg z;2vgE6LT+fpWaW8>WN$j4=@iiB`ZKfKE!O+kI;|Qk6OVz0zCVeel(En7`^`q(A}U4 z;DpL)mFe1v#$P#~5|$tSG{`ZuY&#BD49zMpL&Fu!>jo9gDA)O0%sU2A-qr^+g4O~R z1w;Y=sIDesbL!Kz1}~Xm1ld64eda@>`3L&3jm$^-V5520EURZZZ}Ne}BGWlQ?M6li& zi(_#4gzU33qXlO&>+Tq$)>e(cGGw(nTrn6k>rgmzF6@4;waZ;g&IhezY(2NK;)L9_ z(Iba|;LL8AT2)z|^_N|BH4U}p>D**HqV7z|YIGRtggS%u?+W(6n?6xLL7${g)~D!Y z`qb5^2RH=1m~qGjzq#~sy+W^q)j1JCRb+hW&ih;j4FVxlhH!mqrcJ9$gRg(sAGWHhtOkv=pPpLAldi7l zlWo;$-=5mE%8a?|A2iBN&FIXWi|bK8bQDw4gpNQ*>S=vi6FM3lqfggo=>11egL&3X zs%Va8hoq~g*U!i@U?QXa3YCh^4>fx?=H!d$STvYX&=52f4MW4h5j&01I!A8$IS) z%rpk7*Bj#++uULYnhi6UgKAM7s-KWsGZ3ZY>nmqLee`Ya(N#ITH1~V%XLA(0*PmG-&5~jsnh(MYW+bu2U4-bT;FQD_$1?WO(dl5Y5 z5_Bm9>a{gB^;wH$c!tA()hCrks;Es@kC|Nt-|Huo8~s+-8G}ke^Q9ZL;KMUq_w$5aSd!I4fOMsGD zuMa(l9-3_K2K?8eXxco^r2p%5{Jj;xo z`=4|{#!TcM{uX*~pL=&PW6>V{V({=UF${D8+?^kXbnZWAd7C~yMxQY5<;(S8uG7!a zSB$#}eF2W&<@&Kr=xg+ieuaJ|1hg6Nc|=WJr4jpdI{F!(FL%$6=ojOjpTO62DcB=9f#r$xFbFccLKNX zM*U9x5&a(hQT?(1G`BBD>)zN84jy*lKDaM-V-NOXpT0(4tFO~<(r?z+>$j|Cmf;`{ z;V=%uZ%07rd8>Y#z5%``_1lfL_zPX7{d#BrQa`UttL@23&_CgwnysDtyR*)jSuqdeuERqioW4Wvzn7O+NQUI8a6A&1f(oyP;A^vf7pQPXADGdJcpS54 zB|aXH#}n{G{cinU{XYGH7Ilt0GRweCxd)a6+$U$o_!_}wYic{|IOM#VJnf$w?+iQ> zcuhnM*yIGw{R5iyWla0J|uDe=X4@wW$ z=?^yI2K^yDIKHwa5(buO;}m2wB5}|F(;-jQXK3bW%|-|>%ow4EvqostKW~Kk9*`*D zDedRl|H5;@3t`z#(jU$)-06lYIYZy7CxDWz+cBY_uTQ|(kMS*DoFm%Vc-cOR?|e{v z7wX$U@qMlL&-Qo;m`8l6{zOYmim$-S|B-USjkpP~z$@_$cokl)KdC>Z@6tclztF$b zzcLoNXL-%6K4r6KSAmxgK1uB~*jY)NXSUHG7;o|3bWV1 zV2r4(nG0+J*~!j>Vy(|?i7MK%G>~&pEM8VUw=9#EYUTATl?*2WZ_>Bxf$<9l%yYRD zuIV#J=Z5|ee%N5o&H4+C_!0d@g8+b+zYilcA zzH(P`u6KOw`0*}Z*j4YY%~9!n{6W@j=zPp`S?!pw=sv-pX5&`FS8Y~wUm1$- zYy1uV7JsMj(Lc~X)<0=gbU$YN*7ps+71rNK7WFZRu$85Am)QlebEUSk`|1b2AF~mMqhBw@IuOY!8Gm5Aq#IltT z!5jJi159zUIn+jl?k%!=2U@Mdlow$UHKV6K%PcK%fV>c={>|QzQ}ecQtC}M1Ne3fo zXJk%ENBuiJnC+l5IIpA&>8gLP|J33)k?y4T-VP{nF+E9N{RfbUANBqtI`^N^#@{4< z65j7EM`UjKS?}Muzy3wOhf0niDG*4~AGVQVBu)|}ssF0~rvFY6LlL3~uOb7;Kr)CN zO9qo66cLIJp{OrKM^khRMQ0lF-?0rrvym<=0qDNwoCf5<575NeZ-$J+0j_3z>lQVa zu4w7{z#Re`fateBK!=0s>LBsnEM{ahnP|*?3>iztk>kmDGJztNB90=SB7q{2B54&l zflMNknX#md8B38&k(EMX(o0cEb`vGDM=^gkY?7oaGKp^^4mJuOnsvrV$mwSzg`6Tc z8f3F9rSYLg7OtT#RcUzgkgiKs8yU=s>?Tvobd&l0$I{bkYK?u&>>b(O4uc26lRz=% zG6XFRn!C(RdM260lr)kmij+oDO_7=lWU`wQ(K@5UT;p0|_#)uXENLVS6tcCsK!(gG zi(wChEI{kXB61Q%CVdG-1r(X#Gja-iEr8D`D$IO0>A?{bn=>|<3WL2sm zqK*_Db_02UJP7+xW68r5b)u*@@F=jVD?>9Q)Xit4{W9vI&?;31xwneULha2(M%EMd z%gSe@XSK3m3)33$a6XskX7~ho%9!Dk6m@PSPgB(8k9h8R@&dTiWINeGQCEr%Zz3;} zmniB+QBMd3{{$DkPTn*+*h$`?s5?bHj9+(Ve(kWJ9QGB5S63~_*fP+lphyh<2Wq}2 z3^NnXSX#Cn+diYtDC(C)97_%^`!w$z|mN0>EezLrIc)zoJNG&92tVLI*AB+m-9HZo*5zn=lMH4U?43o;!P zrE@x>CF+D_H?ns5cVunN-Ve9J-cD87>^iW7`8V$)FQK4ONe5mrdo;7@7V|OeF>HS} z%Es6@n_!b{iXFfXWCyXwvV++n>`-W3p6pf(>ynt~O9Z%7C zioju*NYM!tO`>QrMN=p$qi8Bc7BC#iK!&2kIYF(NNSKjf7iUhl6f+DiHL!Jf0}j6DFfUSJWFyy8KbECm9Yy zU92ApQM-ZELS;?AW-Z;XE@LQie|9uncW{UL<&6RgSfhzBl)%Cl^p^C8Trs}~sxjSQ zhujc81*6H!(g+j?h#FYvqJTAWviVMS@sLvG*M1$T~Adm_s z@>)ki5kC~uMO~l-5>S{Mi@IVdPuLX?hhXT5cq)|ydgS`{B!Q}-L<$}q1X?HDQCHOC z4Y&h< ziKrXq8qe$79ZiK3{y@?d0csg-U?hov*A)&0V~Iq-9R)^f?K|T3#-gd1+vSb~5(>Kl{uI#L;FwszsNhb<-c#$MX zLof`a_C#VX7!9mh7^K-3Ywg<=fr6kSB3>9%#1n#%hkV{> zEKe?j9;k$m`jRe>8(7O93ISJzpz_`0kNSg&cqkf=KbxC3|#`i63OS1bs% z*zO2S(3?mFLO$4o%uz5A_XL5YKFE;-LDHbq6=slxKfR!jqN!9c6wBl91h8H>35?;5 z2VgD30pKqn1=I;g-Tq|E9ZV+jv>I@%CkEmMkM;t+fuCIwc!JB5fceC{kw74p&sCw6 zH|Pb~h4OLeI~fdv?gW{O1(HydpY(*hzC4*v#Ju5T6c!H_4pdMe@aa)Ek-zT?19QC}zl4+sPTz7(VqB6*UQNF+P~PYe(Ui8x4FG7Pg! zxq~iW%I6Du{g9bT<>{(G!sl^Eqrl(3DDa>s1UfdAOt_NKcp#pHq(^o?i5H* z*x%Y37}b}Agd0es-;f>9L(vF`8z>XtpoGs2glTOZ^}^p?m|M~fX2G8_v`;V$AdIL# z98D%YZhtgyB%xG18jptKF3^s!I$#^R2PUg|X8%cV+z?Y!yjgi2D z!^(qgNX7xh5jVQeUwK~&w0Z<&H|{a;2%Z#J5;qj?1FppF4+K-exHpf2K~Kb&08WOL zH~7TwgVtab4MU#_c%wmJ#Jsii20g(5U{hS7B55RLs!uY{nf&j-1QyH)P&oU0N#v8K|AN^ z!DJ}q1DyhvBmtg-KNJD)E(#EtpvUj^0;Bu<`L;OebtgjZD2&z{gC+79ew804?Fo22 zJ~s>-lz8h%Qi(*+4byQ2Vd-JqAVuMTANVAmj6{54Lxl49+v|=2gMc0kxDAw*2NY%u zG=|IVOU5H$b-m!$wD#?b2SNBiR~ilzFpCfPJ7}mkPtxo2$AI4gp|Q|^W}b}RchyN!K6L5@2)V*KBiEQI{f#Zi7Q+<62k~4W1`jbRjSVPI z%V(Kz4?b+u(73nxv*z9)@;Az|vMHbZfG^B>utAxW1>#B*@SU2CLet}{|wMwNd{kZu&HLt#jEAE)`*Tp?GyPd7H` z#zE0?qnk#kfi@`H0&(cv|9m|^anH5q4%?@PPRv-Y3q>mo?pv7~NDI^;JCND^+jP@| z>kSm=%5E=+A$KfuBtQ%A{o6we|1c$g5McP<0WdW07hpJe=&<1Oj zJudqb>~fp`$S1lbr~ij?V*&ri4daG$Be>(Zkz6S^iW|*ADs=-zw^Ou{qB|(MlcKvQ zx|^bVD7tqI2OA#Tcy0nWkvoB#1ig===sqw8cp}A9DE^A#Zz=u>`~U#jv^A7j>uZ>$ z77P5}f(7KNxOspDsV>5dTMK4nH9oTvR22#vW%u>u{ovZ&gY#_IcyEual z3Nz?0pT_ z2px0Ra@TR!bKuH8LD7>GJw?&e|2c@j+*oho)`QE-fyec1BL^$fZgM6hpH5A zBL}kiJVo1EUEsU9O?!KuZP9zVr#;MV*{5L}yj`y0Qyhe0jU0qrFZ=;`F4uYo_oC7I z1&Us3?j2#S8Vk13Rr=kRUZXB_PB{v&)F_XGDM_Y?OsvU0!bu!ZzGMITV~6-A%u zu;KG{%Sd>J7oonGM?B^U&+;74^8!UXDS`pNNzq#ry-m?O6urBemv|ZVV#e_r{H9U# z9!0whBpF38YWU-QBNX^6%60$mi;Vxm3TgAGW(ML*`1Y9sWBw2ww&->PnvCzDPp44X zzfXy=@{O6#tG(m9@`s}le0RefeL>Mj`h1E${HIY~d~ZN`@h-j(-yBqe9V_|NFYU16SRgFc*TwL}kU0 znzD-SP+iypQR4d>1$6NAOcH=U7KDi(OwqS{m(XRwN5-31TEIvAa8%D9XCzjB(;14s z-v=}V4FEL6j|FTDT>njn1kMlnYj`|A-dIEa1d4v4=*P?&QuK3nB$JJiOrhwfmW4oh zC5?LnefSw!BL12s;$M&S;b*lXeJJ`Jh?ax;@U_NBk2466Q$YM&em}gey>v*V}TEXAM-^{P4 zSf*H^SY5&23W{(8#hT&L^fff!zZmGu-wkEz{5=$#S_!*}e-tbMe?R{K{~-SmznOoS ze}rOiU(FO3Qf#5Ph+-?n#ejU_xA0r}$N6pi6a1545U`EnjuiK%xHH8riu?SB;$Qd| z`8N#v^b-Fv{|f&q{~G@~zmsA+#SV&{6qiukj^aZoZr=t5!|wv5MGFju;zNxU`U|!E z|GkO&D-3H+d_Lo$cno09{1;%EaEAk9U-I?Y_xuk~4-UW=ihELgSRV9+{}n32`QP~8 z1x7#=ccQop#a$`x-lE+2Z3g@Wcnwx%wo%D%fKQDa-rn_-`!h1xs!c%?%pj_QNdW#n zoZ@axe0L+W_u)Scff4M26ZBXH0wVw)^)MW~KM#Bn4$UZK+$*b;{~pK};n0jh#Jw_R zNaz7NMS#_G|6}Zn&`0p@M-K`TibE8K zDUPfZMhm6FSOGfk2Y*t0B*jM?I^+Ky7b6(HfdJWuBlZW35h{dfz_bF$?NNUM8PhEB z!c3tSlH)>^FiWTwYJ}Os9Ey*jxIe{FienVVDNd{s>V$fsL6|GdgBnVlq&P+K0E&;L zc(9SE|GQ&jgwp^UBPu zQ+z_RCo4P#o~*D%*h=vviYK=?T*4E=GkZIzZLu;rd3!;4Wxowu5Hh)jZwk8&!F)@2 zTX;u!S9nj@MR6I$Qz#phFe4aL_|yxUNQ ze^YFX@QnbQqpO5(h3|y#g&%|;g`X&%L2)I;CsI6<;wp+~trC6_eieRW#)=FB`oEgu zxfIWX%}2Z_n?(GZVPiyDR9kBIMUCQ`mfC&MEJ9g(qX^FX>_!os_c?m7<*g=JKS;ET zhZvBUooJm{BDMn{0YGAKEyZ>4nRsXpgn%LD?rvNR?u9F818r#LLb0m|Z)IH}9!_?0 zKU3V0x%HD3MqfEdL#C?(B4YO5gold47N~;g5q+)G1!F$Hb-E!j(mGu*ybD^wF7YVw z7`T+d1c_j#7PelAi%GZw14W-SW`@^#X^;q*?q&pt2p+>pt&bWmj%X7yilyT5fN>E= ziKE3a;#d(ZKLoC)P^?o-DL(ZEalAOer~?o|1)N6lxxj0{a_1S+_U9PxUx9HEr-?IQ zh9c;IC5+Sm#eIu6+VIWU;<>F;J&)pLt&4eq zcwyVcyhOYj^oV$=c$s*)c!lttcooGLP<$c97g2n1Mxk5+um|y41L7hs&p=!Np>051 z@YVmB5EpTcc(WmtYsGcqO%z{7@#Pd>u|ixg-eS0C;8|Q{cxC@4h>Lh}#gD{~#ZSaf#m~gg#V^D!#jnJ##c#xK#qY%L#UI2U#h=8V#b3l<#oxr= zB}PILmWaekoWx6lB*L3$Wl51#Ns~-cfn=5nB?~}U@G6Q|Q+y-EYbahz@j8luHE*VP zJ;k?Bd@IGbQM`fT+bP~i@f{T3N%372-%as76yHlRxMiCtzMtX;D1MOQhbZ1mF*shZ z!jDq?7{yyC2B+(Binmex1jSEM{1nAcQ~V6Y&r~l0H!KHI4ywfZDx+v*<0H{b8 zNEb>MQT#o{KT!N*OD0^pRJwBS1oz$mmF9R}x?WnbPt(0XD7mIJC5SR1XZg!tk0_DumyAS&^nmoB^pLb!dRT%m^*4%tr-Y#dQGzKUfGCl+NLwX1 zS3r6KvPp!cgoDqGU-=v}|FVF-;;lCRpxCQaBh|KLIzZF%ikVUviF;m zviP0Pb`>3jeNRt22sZ=@( zJFNLg5_tI%-ZbnFkR;DDdzjx4hcv*FbU=pzo}?@42FFjh(O@(M&IqVL)6jY7N;s8j z4cdSb#0ND}Eg83B?+`d<1$`ce8x`dRu#`c?W( z`dtPCT1bh7k|Ij1loV59qr^^$gAyktC2M6Y6Pe8-Nn}x$WEr-8Njpk(#EZRgGz z`vWA2e7M{TI+nZ1-Q^x~Pf9va(vcGAu9JZz8P|Na)WCo1*;373o*b0J;GD`KO1d=4 z5lXrmGd%#3L_P|tHsqt_V<-ji*FQ#=$dlzVqxBR@T#fQnN}&Gse~2!T zr^z#*iwwF%uB7n3*4$e&YG zLK$L>KSr0xr^!p?)8#YdrSh5bS(Jd5^HDOG5)e^Pdq9El#%%uQ1$y#%@)}Y#TltiF}EIc*t8aK@~ zw<7m40l7(DX{_uDN{;yR1$y!t`BsQEdw#Wk+jVFssEA+W^Y`(%eQ@A#5Z<{H zf>*G>880qRuusVCi}>Je9mbnEe4gfaSIe6Lry@TrKO#R$Ns5vIlnew4x4yS}ymv^g zD>=v&2-fAj*g7Y&PsmRmxL!|wR(=kRkhdFVc{C+Py&f6zPa|sNm!QH=ep!A+epP;r zl3|pLpkyQ^trdRq8<`3}@~0~N@ERNdWo3IaD;wOKceatAMkg%mtDEmTe z`HM`g9~twnto6&Bkaxfe#=qnx*zy;d@;)*qlb(`)F@*0|N+#}I-skq_PET&Z@F)n? zD+JO@Bn=oHGHD+S4>SM_k0NC-JkaQDN+##kyeo>L8eF4*$}gv6N``AFnVK1iQV1ha zz=bJmsq6eB43AQhU5<)>6^2LYkcZ(R(|~9>43E;q7%4FbkSoVlx+^_FOJy)TN-s)g zG$(zOK43$YzKWX?FexXt*igl%g!VRw`^E4mM=8;L8txCnqYO|6wyEJ!1}noLqoWKl zjN&Y?i%rUK1>~xllA1rl@F=5|ad2M?hDSMG8BfVe;@qJXu&nv!cM0mizYk_RYx zkP5TwW$tZTGdX;%0C|>sO{A*5F)6DsvXph>S1apwKFBFD7^ij+(^k9O4d@c zZk5_qJzVXkc2|2CA;L|R+)T-ON^YZM!+%hS@K2v_qXq!OqXtz703krS^&en()FaiS z4jdDxQ8ku}3GSn0V{=T9kt%fns6%z2I!HZM9Zbm`l-xzhJ(S$rq7KzzS=akc!}UI( z2i)wstECwX54rmM=^-aIa=(L_G-()q&(l{;A*whDSZkIJ|}uIK2?E zL8J1sLF!WVoc-RiEPKo2#x3RMHn&`)UTFyH#p)&MrRrtssTyjp{AN^w+3s)phDk>dh+X zpyw&sPT{x>@&Y9rtOkpEd9{ODK7rlAVC-QMc!iI0RnH zlEwA3fnV%}tjO{DtLhs7A>e)nWYFONmoaX|4g16Om|M>pfhZad;m!51OWo5tC-4#8 zZk^LdDx5l+o71P1ywehIsb8q@Ld`6ANBx?TcU!M~r~Y7w>${Nc*bBU){-XZY`l#P2 z+12tW4Qr%Ltf=vt3g8`0&_qqrWKE%D4~0`z$On{sNXbVxXqsj+z&lzYCE&w+lc_Et z-x?zI?*s2>POTlxP%EM2lSU1)`Jes)ct`7~bp~HqJ51|D$!C;&-lTQWx>E85C2$7aSBHJ=vD-Vw;$@pYR!_F}Pp!8@6AN^)Htr5)2c z)&7)x*SeT-Ezx!{2WSxZuhIr;gS2C{!RlIVC?!8o@*^cbQSx&}Yy1L$4{d}2-qA`k z;2rWS*xdrklK)Kbjy6%70+OelpiR;yQ}P>yGj~{Kg;u6b1;30%l*NWS_HP33XqEpn z@J?<~Yc$AJtkPy{bF^BmPOH}%D9cfnr>sC(k+KqHWn-b{!`DLiIti3Hs~F!@-1m9|>DQCp*})z)b@X*X-@wOh1XwcE4}+U?p#?GEiu z?Jn(Z?H=u3?LKXjcE9$3_MrBVwpn{vdqjH_kU6YISrcVJBFq#{L}D$JEuyTIvc;6O zQPxgb2W6d=`c%7!T$p=>|O9zoe7DSH%UkEZM~lUWk*wX3?Oq%cKCAcgUn&!;1kM@JBZ9N(qO$iF3KL_ z9Dvi+vx@))60OJ_lgH$TjETu>f?#MoWheZV$Q;uVCfL1bPHmeYn99AL$`l1;jwxn} zn;@Q=MA^xdEo;edn+BNR9XM_C+kng&%c;iEF>qoF939gf&zp`jjozmzAahLc+F|2( z7X)gR+Y)q?)va{fG))M zTCiM$5?Me@tQHQKnl!9*P+e=IzwwDL1aLa{U;76*otK!85kWGtp!TQ>IvjOxKKCU6 zWkP8*9aX})FBbtyX9Zf1?m}D8HnbhRioV5m?8NQh+?NQTbjIK`pmb*8g?KSO7hi`r z<7e^9_+z3F8|g}VlViwWk|uM=64FF&CU=s@$W}n;80Wq`(|q!afzbhk4xIb)7I`OQ zZ4P|m%bpgTj_GXEC4kd0ont!Jbe?IM>3q`#rVC9MnJ%Vm4P|Fjb`E80DO*R`ddfnk z8cf5yHKt3!3S4fw!gQtSD$~`O6JOZ*UET!zJYfX2U?lj$% z#p#&tGi@^64_mqHX_UQ$vUk7^hjHQy`ygc>q3omooj4uSlO|)|mRV|g+Vsr-WA8lx zt0>yV{XNOqT?mlVD*+NpsOde_R0u601xP3%BnJ`*Nl2ksGxmyziUk`*ioKzr*t;Ss zAa=!qiWPgo@_%+uDq#7(>;3M%zdzyw=bYW0dFOp+W@l&KcUF(nF`gleXA-9q{8BLQ zYz*EjjAses`3$Iyt6Eol{>~d;f?o@Mn}ma34}K%~&EU6$@oZr{M;Ol)#`FHy#pwhe z4E~g%YVaq*c){A>&xBFmCh-sAbb=4znGyU|@Ylk)LKs)Jk6gbC{^`h}r52|X{EHr^ zW4uWB%$U=0G-{Ge#-lDFPRFF`aXQ9}wM$Nj?sQ2vQx8Nnbr;4<{yI*_WHs5fvu(n7 z*;*58DXTRT{!4FxF?mcqNkWg)F|qJ+dD~*RsgJ3jCVj^^9aDd4x`_ptE3}4lSBo#6 zX)yjUCYEBZZ1cr4MVJ!)Do)2>G9{UkO(|W%4R+HA9EOco3FBsAWRJEc-U4I1vt5$W zrm=YFn#P#YOzEZ!Q>H1)#461iVZ2%xuMx&;h4DIJyj~dB;-PEGF^xA(FiqssM6Fh@ z6UG~aaicJ9(!Ood*0leL&FcU2TkQXXzQrw%K&I)Y8M>FQsRS=w<9gl!W17V~V2m4% zeg};Fe!nq#MU^D8!yMWn48i0x%`@bgDhXaO-X@GU;;3fa@^1&Pm~gIIZ(3xkF>#l? zNf>Vy##`FF+PZ{G*AR+A{fKL>`{TG1(+RrsoAFl7`R$0f6Vs`>f12@jzkgcpJYEf( z8Wj~))ZnXch-&baFRH4ktdGj{H7snbt&1vXY^qqEF(INVx1jZN+rMqE3D95p8riV4 zYF^{)&Odf|*^B8^-G|J0yZ)eVI#+8m=LzH8NBWQ*<7F?V6^2IBN&-cU4-hC~yyvJu z5l$db#I#xu6yYS&y|<%Lf7y%a<_>`(#s@nDikR-uBweW~pfym$wAFMky_X&+V%jE*xb6B2bw8cBX@}_n zVSGdwA8qTzO%IzMKe9(YW}t}aS<_K_X&a6eC}P@c;zeBAM(nMP>Q&Pl%qy5)(|YA6 z=$O};-ZXK4d{P*n`m;b0(|acN+HMaNF@0$INEn|M#zXB%e`5Lq=}n)SJ~MqTjL!(; zv%>h?defJ5%3lfNPOVe^;y(~5V)_B6Zqtv#_GW~V?Av-Vn%_LsdF-_k7f z4|eAN`8&}+asO;-E#?Sww0;XRM`^d9xBph4h&j=m)DkFSJSdF&I|PcDN8lN49%&wB z9&N_8<6U8VUl>0S#*f-MH**&~P{jD&zaJ=Ko@macshTI5nZZ6Fj32HuRT3z|UGLuw z6fsXV6D8&k6fqYI}eUCnwN6ZFf%0iy6vW6KGA&o-|VZ*XPD14pJhJVe2)2C zGk4W*gz;M;cN4Nh$W9@a0n^%}GAyCA8k$I*0V)H6t{7x9Z7seli@y8A3 zOU2w+tJY`y=U?_>*2V^A#s<6yu4MVxr4iAY5%U)owYJ^$<{PNA z<_*I5%ij+aG2dvugGq7oP3D`;x0r7=-)6pD7=IJS--Rp**&uk~yd1dEe5d&?^WEmH z=6i5Rl#N1`g{%mSo_v?WoviTnf z6fu9U_gS+2|D`|?^XGb>Cfohm|4C~;KMUD=8U7y) z3bDjlQnlj8TM{gZmLyBEB}K>sg*-^egN004hYESvM$2%^2+K%mnq{;!O~?^KP84zy z>z48e|NPPBCERn7dYnzFgo zzKT-wFb=o9$vbOVU0F?quOg?>x2PfAH;?s$wk!Opg>ibmuiRJDnAx)PTiXdONw#$1 zmK=-rN)pR>AxEyYOcb*IuE;-lVTUEplCM2%-PC->T1$bDquU-#EK@BrwCIrKhMO$K z7T)I@Omv7GBji|qv&?FJEr%SZIqq}t?*s@~DlBXuv!3hcS>|ik$?-x?;CpLoElJ_& z-}#x_{~%s!{*#x*9vvN!7?a!VEEjub%#Qyd%c4 z$+CqK5^HAYx7Ko_kh9uLc#DN?X4YA5wXo2UE#$H5EO%H~@L)KX^Y`k^y_Wk(KwGQP z7-*+jSg=MvOH~hwq5w=ggmib_+6G4I!y#v zc3WQ4I+Q(@y_T0P`{-7<15Xxmu8{MDJVozW@`*>Va0ix#Sl-qHN8|$T!`!2b|91wC zSU$2alfK^avE`uU6CoE0xk$)U*IPcbe6Eet=n|)E!?XXPz!A&0|5o6LgG$P0wLP{`FnUL@oiA=e7I zPRNUeTrcDXA=6_w33-W-mkN2Ake3UYp87-~pCn`wJVnT-3Yi{S2>CQ2pDtuN<}-zS zmXOaD@;O32SIFlH`FtT?AY?k=6+*s9$SZ|>v5;2@`4S;tD&)(AyjsYY3;7Bm)9qd* zgSGpX3rOWYGx*UI{OLSsHTy|XC@xYPefg{HQ zM~(-M91k2xZx0-?UfeNe!Fs9ndICqRmst|5ms_u}UTM9`y2g67^&0E7R>sxq^~dH7 zLcT%B8-=_{$eV?{MaVY_`6eOXOyG!>AP4J)qXI|dTeL^DTk!$Hk3#=npA9+wN*90N zh;@4>BkZs~#1x730qcW8zFo+7{F8wr)+en`Gau%k>b5>30*7;y8ozCkNrv)>xb4)jykn3;V62%2;nGrLbXgA zSr1vi(RA{a^=lz-6Y}H7vrU_bupYMlV*S!xZQDaqgRpausdS6+aE3H3?w#&6+rDoeC-=f<3MHd;@#kxi0NP~# zvGs>nTGjlTPU+5^TIE~Xer>Cqei5pC4YNqhUl#4MR!v6PVrYW4Xd&-hYolL$UMu_` zIK-zGLzWns;l{oQ~eDwrtz@V_q`J zf5}VQCCgsybjcJOo)H^u`L+UEp{>X^)y5>_9wF})^2(5b*H_3Fb63H2E4@Ej8a(qZPl>R%KgYTWG7cG3E8T zklzsUn?im|$ZrezosG6yTb(x1Z)>nI`L$ojANi;H4+{Act?aQ1_ zw63M4wX-^fPLEs%Yc2H2wo}_?*=izznd?A}{zW6tjVqqZuuooBm9 zTa0?saFgvq+Y09RwZ*6pgnWSCY!|n#2*@9{t_yV9Z0d-8q*^7q!gjT`81<%nSlgXqvS+lxZ>?^P!MEaYGQq-JT|d_j4oZ&CZoWZPQiUoI*gSu2jH zHmwDE)%JS3f@lxlwJYdt+q>MVZSUA<3f~L)hjq61Z0`&CM~4Dq?aA)3d+j}iVibxj6lJ}=m%TTG8buXKm;b?a zB>RAWYaPix)E=uDYM4F39%+xVN84kB(oHDch0;SP!9p~Bf6ay6MV}VX!u%v20C8R z?}#h>E(3m70lg0B*Y-W)tPVYR>q)w|i=DV{V$c1bGxfzIdzL-hKGr_Yo?{Aa+2`8J?G<*PeV%>3 zz0zJ~UtnKoueL9;*Vt?Ab@s*fdV7Pt(cWZVVqa=sW?ybU!G5CsB>TzsQ|zbOo9)7W z8jDAYO(=GuIE3O9ic2VNp?HMi6$(`@L@2$4(pxBfgc2&0FroAnN#kgbQV$ zPzDKQuu!OvLxnO-C=o)56iSp(qJ@HGu~?i?;)RkRltiH<2_;!5DMCpV%5b5K5DJZO zlu$+sWsFeLgpw|l454HSB}*vTLK!QRaYD%v%6Oqn5XwZMOcKguq2vlB@A%@;@x`O# zi%031#}|)|FCHCVJUYI36ql6{9UYN!eDUb`;?eQNqvMN5{>7tX%%3FjlJC|h%qQ$G zv5sValIP{8?a$bswLfRyX@B0n%l?A>MWNun%wuz*P>O^yRVdShGF>ReLMai-457?q z9m&22UOs9aNtvZRs?Gjiw2q`bzqh)C>ygO0a~CkX#uK51BN?sFiiOMTd@a9ekLL~P z+Jk#zl{Uk#JvnxK_Uq_*uI*LSmWKXFNh0?4{rL3_$P$uMS~eiFf6{Rs$^NgPD`w#Y?v}rJX65IZ>P|91@k?g;+j%5GM{=0+ukqV*sgfg#f*4h#1 zP>-B~{)2TSM-PYPs8f%qW?390_W0)ht5$T9>L_1;}v5q)Lyn{#8g+i$o z$|9lE2&GmibwXJzlzO2w2&M5xN0K9%xjx4e@6#rj_)yl!Bonp8sZ~&YIYpm5V$z_dqO6{% z2D4V2*0l?5c|u#P(0=ouO+A~crCM9#|6b5EcM-EsB^}aY&B8agX+Fy)9Tr;j+3xoI z#`5dYT(D&GI(7h~go0WCUcFfi4O~*Yp9OdYqI(q_PjLM3ZFh)lu zp+t@O02bVl2FdlX0HvOvB!qtn|4V~ahyeP zv*T1pvqLyebDZut!*Qlim_#{6D5nagStvp%rwQfsO^A1nVW?I`v_G1ZXEawa+vxvu ze1DCawz_n=<0?J4*>Pnv20fGgHIzQ=uVMJ`sQooM?AGA8-m%t@=UC5v8p?%2;WcWjg+fT!>RgV!=F2KY`?x&%Q z(Zl!*Uuj`{`rM!6L9MDjBotoGM<77^tsK6s%EQokjT(ZxuyAz<~!N6LEE_Dc!$>3p*fSBsd|UzOwl^DTmRN>4bCynw3gi(lnLrs|yLq(j{* zlzY}W*0Wm!ed@ovTZ40sb1vOhKtuCGYn|mn*`|#M{{C(a&iQ(msobY^nWg5!dH=u` zMD0#Kt>KThwy4PVV>qpJaysx2Vp?NFBlCRo%Nm**3Tm6`%Y7LPwK{BHAcFh z#(A|+o)8MRtEYtW^akg(&a0i*JLxi?;j2)%XFdNvvs;66v!*=ywP%mDTZ8i!=WSG4 z=dD87`S*8gaNh02pn8e^ z_^R=Sn(M32$z-tJ-~Y^$lUZ0hv8NT51G_aifAIHNANc#MqW?mlm0s51i>$7zuU!x|sjR9dQriG` z`P^FliO{5XTA?{L6;dExy;dx~kys4_X!dD-8MAuf(mPyAx?FWCK z_JOW_S0K&DWfaOMM~+*M+O5IW#l`rET{WfiT-{vVn+G?uJp7qZKHuO9cA2CVE{jmU z5Xv{&P=dGmmG~bM{jL)Z?HRWY|G+lKy$+6fE~l#}3A6l&Nu0eDtu7N`N_OG|9bVazLINLv4+dnx-wks6WMtd zMqv0lKP``F)(5~sOVy!{DW(w6Hl;89QEmZ%rkZZP9r)aRhw>9BE+g#7(9~r0t{#N$S zZ?5O6?y$L@YNYy~*YecnTC7Q$rzwD^Hus4q#zn^s3yqJ_UNR8V(g2uU-7Te}vL)L7 z>~ho*`?HT8Grj*3|Afu-{K@cNnap9;watvRyX!OuS@6v4s!NfWyxZ;Z_AK#VS%c5@bpJJDlh8fWn=Q@OW*cdocw$6s(y-8oxJ13O z#z*sx*p%4VlTYqE`=D21O(;#OlvJehXXnp)T}lW)j~F>~azSPlF6^~6W%bL~jR=_? zy)0>7a!O2me9T-HA@NzAT!34YuOh9bUcX~Dr=@3PW@V2Zmot9C#7UEL^QPn%6c!at zn_gTpV`kCp(mAtQv(n|pK!sI}n!~$=O6Zp%A1As0A8iBQrCDhXu#7P^ck9~hFiUI$ ze}CE$+rZ~ZQ>7)+rPBSI!bX2Y$9+YNUbwj1^u4jMi+d~WzMz!}gtU|>KZo57C>m>F)xb}UU5$2Q zFXJ#{q%qnUYm7H07!!@j##G}7<0xaAF~gW?%r=hG?<-P(!T+yR*79%5KgLOITf@7S zyV!tki|Yi}iLR4eC%aB@o$6|K3D;>t?IP5!LJbmXH=%YHY7e0X3)Li4^A>JnXS&XE zo$Wfub*}3?*ZHms*e67_2=!5+J|WaSLj78(-w5?Pp>k`b-$`eFdtse6&~DIUG8iB; z=k9Hp0{4%P{GOiKwe>~$6B}mwLpS_>yCmTM$|@0q0$e!t>HJc2v^M0{yhy8kB-q|L z`7hH3cNO}D1VFG7z>tC_)B1$zuk6~$#Q!O+9+%VkcnPynkv5N?Q!}rY(_3BX+fH}; zSEo9U=`@jBhay+F)=JTvgU)eX$=W$y$CE8s#T~qq1u`4Rvkih3e~mQ zwa&HPwZV0RYoluu-?j+VE!3Vu9VpbHLX8#b#X@B~aGR#aft`k#oh69Ot7gf=|68ef zczNxj$g(>05?Rq0IjO3lTrbnuvZndIhN7Iv$-c&=we<^ga`j*Qx@lERsX6w~^2w;> z23j`XcjQHpe|C`;ws7PHErVwLvba2k;4BmtG}UQlI&#F^=^Ubf{wyn^W_*nqgaB37 z&Tlozoh~-*UmJ9;2rOCa+A35}+r+4Ao9h7vxj`#}E(%&1bg>AG7l8>PFi`|1ZE!sp zbaBvSL92zzYp9b%V5$fl(K=9koDoXUwIVR3ZEnEzw2O`L*1Db%YRFpGb3*M+CI%sO zqg!Y+oZ)&=AK$CJO3hjSg$EX`Rz@;nZ)j{S+aA{|crUy5x?Xne6KWr!h6*)oy>zYX zHP`FS@j~q@)NrlxXs+(1c@uLA3QMyxa|(0wOAE3lW@QxS^JsW=X%%mo>2P!&o(9|bhN(~2$7wgx)^dO0VmWuM>r0^yTI>2ss6#rd`+L8- z2bY>hEsI#DjZ`8S{LG7}@z?x_s#wY8^cj~y$X#4kMoMOOVr)uAMoanJCbzj$`P?=)`}ucRe000qeVF`m zyWJkQ*Wi$UHH~oh7HXVO6NH-7d?G7&Y?Lq5luhnXcbL1cyPvzidw@G!sKbRiUZ_Pv z^$E3BsLO?VdS?v{^%o|-)SUnCw+*e2X=vRLUH{^re(b2VXn#gDhyTiE>)Hcq`$Xo^ zxg_{=NiMZ0%UUZRtHn+F?(W&OO)NQUgSycS&uivKXdN+w-H3`R+zYj-fsy~h2Jqop z5>0f+BmI41`+VudmIILm+FtPC`i}4s^RzHZEyIYqvc}4Wkxaps4~UIEGQ){gbL$y$ zvhzGMVLYMNN9n2ay`IOX3N660RnZZ?1vQJy7cZ%7T3)kw`J%av3o9#Y=GT@tEL&9P zi_&L6qUhW!2yAQMdTy){RdtoMHAD|CYO2=eRa!)=^p!DJ^1n!~|9-vb6Ge-B6;%v} z8X{{L9##03wJJ7pt~PsgY?U2xj^DOgmr`FaVNLCUJD|7QyF=j|-2s;0cUslxYvr)IQtH~v1YA!=E2VrgRh|5fo@y19mmg(HvX z0Apez<64gT>;Fi9Nh9{NAyMF}U@=Vq7u9xb+AEo{` zt?#vtAV#{gwDG|x_h|PRcbYrho#DIk8Z6zV9Ujuz?|p{5BneUm%eJ=Q(Wo#P(Q zCx!+YLgmb{LLDd69Q`YMY#x6%j?Zju)$KHQiN4tFE@rV?&BA-fJrnO8HTx*<9ZQ!7 z`;7_rKj@o-%spCDsBl+n*73RLx#znp-Bs=d?u9~~Ak>LMog~!BLd_Lwo=~UYQ{}Gd z-g%DuqW|#c)ZhAc$f*Sd*yUuPKZUauLXR5Qp%%^#!R%^H=QcO5^4a9R-F=7qPWN5zyWLye_Xu^KP)Vy&s8vE;AXJ)9^(Mn$ z_jawZ7$OXV4H3)Uwz6E7(F&%ajXAABcFt4^PGKj*j2vzl#cu#I7K z^Ze$@qfFC!!AoxTEZ*ea?cU?w>wek2&;5$~RiV}ib+J(Eh1ww0Mxizdb;%~BtNRVj z2ucs7EAh>S_l3Gtvw|>uqp`I+%Q-pe|P@8dIbN|}uop&lPzq~;h+uwP2{Ql8q z2~T&ANw3;um zMP!5Sp9z8>fdKBlS}MZyghFEvnBm9|h~q;T{G6*S4$!coyO?;;Hs566$qAUDxI?;;HjA z9_jtzX_AI`mJ0QHZLMsr=9U-MUhp#`wnQ6|Gf{lRS(#JA0LA`&@ZW z*Eg+F*K1xS=MB;?VfFmz^5}E%o^x2e@X$+aY);tgxxld4P)DV@(6hpm?^#*gp!?>a zC82H>>L#IHF4SB4r9HfC$SKQ8a$5zt#Iu^&Z_lNk%Y?c`s5h?jT<*C-s5c4q=H|qy ze#=btYx0+H;-f`qsUuTJ3(M>DGJJde%u9e{~umHknfkkG!~5_zj*L zI=7$Ao*T9HLqTp|>!A$V`(E4EZala9+s_@P=JEgj{B)GQGSv{dtepDlYiwOF^xWma zt8tU(ZqHWFJ)V0#+dSJn_X+hbq24XjtwLqod9P5n33dA>&koN6o(DY-c^>vW;(1i4 zoOZuZcL?bkbX16z^ z4(@B7cRc$$8~J_D0k%K#d?3`v)_Oh^>f_C0v>>m^Oo{vbP1;`1+S1K_>iJgkZuWfU z`P}n`=S$Ba&sUzWJ>LlRNufR^)Tf2|j8LBy>T^QfDb(jTd%h!BZJOst&rhD8J#2|6 z)LqRcA~e+(g!-aTUlQtWzK<#PPx2IGPAI8r$f~ZI@85CI>Hpd9Dw@+Ujnx2L>FBBK z9S^kjV6-X!&${bJBMS%mws9>#`V+}6TU1r8t)q2JKy&=V=-S3fN92e(%IjH2r|BGH zf{JyfiY1K|x+Ck6Gx(`2RHesdW~W5NCB&sg#K%R)N2I0U@06U9lARWp9-EvT8#C2E zsWr7KPn-QO@&6MOJ*+i~#oOJ>0@QkM4{xxS4sx$hUl!`V^a_{=6```ow_me= zG)C*Ztl#1SK%Z66v}h447k+yd_~vWN`RGvFa;ozsxpgf!0xcr2^C8_MMz73XkF?_k zuh-kt8{+Nd?JZO);@d)fSEvVsda$jx_l9`~XrlM^_Ve}^>T5!MU8rxYcdzme^bXP= z*xwZDTbk(MM`hMY(!BbrTL0ST&_6#ho!zqve062@e#g|oe}1+<58V^9TnZf!AcY=L z)4kE&_+u2nG~Szt?is(U@94Up5?Z9M=(IFX?+EXhV_fD<^QL>5(qjdf2eA*D6Z?%Z z>vtq6KlP}bbG(y|mBeIku9wLuTIokZ#Z$iD=tKS_S_+{1{&|Zu-#_QsNBI7U)BdjS zUzpm(WcKz92_HB#fo0dQl##mYRBpl4l3DX>>X)2wvfmAGkKaQO_qG;Q`kmtN&q`~= zQ*CY&L%HUF=FsNA;)15~a-R>sxIGqYkj?2ih6~&}yQA6IEU$C9aXs=jJEl%9$Yw(` z&Lp_Gw*KW_z59d)h4t;%e*i}`mpAgAmt9>pzd>^dYjcX_pw@M@P4-#NF*kQ+&sYj7YDouGk%S54eu(edjeBBPpvn!7c3Ump`2=l8X1 zcIiHP8HJjZML9(cEH}1YOmE>&SQE6vuc4GizaZPkYsBh(1-?dY>$QdsrNf*(*XEGs-n(mq>K5};Bx}=Uxfb4cCRr-A1&9FJ-J+Vt`myQ z=aNiPq+}{9Z>USl%bTb*%^C#L{_XtV_xmJ+_RAi9F{AUbzx*b%m|4zQ55w|`hVn&{ zWEdey>c{1E^^KC$wLic2TiRHseICbW`@+Kf3_j14q%PfCuH|Q`4`J7=T$hKkx$W}M zv1QyMLSrLiLs>7=hI85}|LlK@s+%;qwg37+_lAW96Zkh0`Ol~*%hWz6^ZCy5vaEuZ z&z~%*nmU=!Va&aZJc`e+RyK{(KF3Q^p!0;v z!fAZ&&FAqob0_EWIhD_qkA)ud%XFvstVpDSaF33$<&JO(6m;JBQENd|p;r zKTi9d@+uG3RqOQ(ohZN5H|1+(r;KX0uck=Tp;j-N%j&bn@)=#JJEWjV}C1 z<6yXPqH&}#TFgKfDkM%Ip{@2Ia<9Y2D;8cDgD64szW zO@;=f`31Qbwp`t=O+Ckz-ljoyb*ooQ$(g-Tmsl%%=xOz(Rpl>Sbm&j4=C^N03rBRa zTW-gCq1Tj(qv{2D$-Ctj<+tU%QYim^Aipes%%?ZxH~I5gn>=~Q-&!9u-TQ06e01&q z)?Ty9^VqHC(H2=N`dt9lg~B_X~~*R)dEGCj_Sj8-m056B|5+PyK@X z22Tujadcepz~Ic_o^ARVtJ_hNL$jXN$Fy3py%#IyXlqT-%2!D}sMmX^vX=68Y+qU( z3Z-VW_h(v&H5l zfYkl^(t5OGOW(0&_>@#-ppvBw)YH~Wr(`PQlx!(fiP3&nqLlG`PSMV4WQ@)IM#`wI zTV7u^zp^nDPu6N5F@xoi!$M=DW4OC%V@&TWms$2Vz`6Yg+~m}7+x~GW_XtvhOZ4j2LuLm53mRH z3J4E~Vv~ZjfC&MG0kZ<;2P_Uafk=iG0apa93%EJpo`6RJo(p(6V1K};0pA5mf!zX~ zfnk9Wfysdxfw_Stf%AxKI3@7Bz}1240&k@ccq(vD;QqkR0)H|pMw>Cz7=abX8HK`{j29TMGHy2BV|?7W$M~-CknuOUha4ggl~d&$dAdAbUMim@ua-B;TjeL{p%2L4 zD~jU8K1tZESXrQ)s9d02qui!Eth}VWuY9Mfsz)8Fj#P8iGPO}XOTALPS$#;|tsYQ+ z?9#1EpDwXovb&UYsp)cBm(^Wv?DAlj-CaKFa=5Fx>wvDQU30rubY0%{qOKdd-q-bo zt_Qjv4zdId3>q0!7_=Zr1YHqyYtR!xZw7tSty{Og-BP+u=~mUPx!V=pZtwPVw|Be! z)ZN;BNcW8HGrKo+U(tP2_lLW`*8Q6vJ$i)q7}KMqM`Mo_J+}0CtjF6uehjt+M+WBv zR|KCLye9ab;N8Jrn7WzQ>uK*fyk~jO^LpOd^YxH`kRc)Y zAt#2c57`;=U9aA~#`db~b!D%|dVSX0*?Uay1-&or{b28deQbS3^{MJ}X`hGsd=lyi zO$)6Ky(0AS&_iJ%VdKJ@!q$fE3On3)VBey?r}e$9?_2$X`X%?9*YDDPkM=v%zfb>3 z{ZHzDQ~%cobRCd9pmMSY2cfKdJGypXz`$R zgZ2(q1}6_*IQW{uFAfP9k}#xl$eJN93=J5XIJ9c$HA7z-CJ##)Rx@nfuva3wN2En8 ziMT1^-AHHT#K_Yk?~VK-s((~T)WuOxMg10?5M9mP?Tr{~%=nnoV(yFiI(A5GdF-0l zy>UHw*V?IZ+v2{89~$qAzc&8W1Y5$SgtHSKP53o2DX~8B*2IHJ{gdV-U7hqwvOPI3 z`GVx9Q{CMRlCf7{9H&@Ed$-N}^t-OJGi}UWEqD;w~ zvS!MM`7!w?e&yJno7$`@0uge znKtLfIlq+UmaQxMZf?%ptLGjn&nUmV{L_jt6_-{V^o{hb@_jUK=1~?O&X___D=^>L=81Y%ny;YS`9j=K*tP)1am^o8DbAYRQ@KUgVXdc_VSp`}E=s)U+Lg-6nw9%59)0oVRhCsJta|^F zNtfJnY3QZrUHa{1rI$UkI)3$amj_+mbou@(CSI}a%Klfbyz-Z;DzAEZP5PSKt`52S z+^c`MrsA62*N(aN*6Vs*cm8!hUte|ot82%uy=Ptcy4CBI^-I=&xMAvsr*25TVarDE z#`8D+x~XQ<{>}NDAK#L+Wy_5rH(qp8z)ejz9lUww%`e`PdCRt2BW_)LoAb8wZH(x4pD|{Psuh8-Cx` z`y=n)v?FZCng<*YT=ZbjgJ(SW`$H!@^xeaC4}bQ^{72q@wDi$89-IEy-p8jrzUzqz zPdxo(_LGl2mG;y_Pmg?h$1|zVY=1WS*?XT$eD0o|2|KqwpYZ(FU5UHyc_HbAZ7-(0 zc;8DSUV3o%=-rR($=vhg-kiP9y*&Blm-ZFyd-au>uk3%d;?<8|tA6dP*O$D0_>E=; z@#no|erxsHA#bmHXYf0>?N8kQz`L36?tHJ{y*J)3fB(}D8b0{tz!@L*_;B?{eLmXq zaqP!C4rU*G@sk;!9Qd^E)5D*g^||HqtG^iZ#ob?y`Euu>>4y${RsYrRUtjQz=bKI6 z#((?hcX{8v{r#fv5C3r9kDebl|CIdGQ$J7p`J=;2e^GzA;@82y-uK&t-`@Ov(eJ-E z_hRa&p^>=E)>$MbVAeM@O=dDkbF}B^(q)~dd)6(V-03@KoOlvbH~QSqx)ZgDr&CVV z=Y-lO+baC?mg}0CdLpLw$ls5SBz@`hGYac#Ya5#lN5n$TU_@6bEtZx^XR_tMxr{^Hn`IAHk5a4X^;EsUD1D*+ZF7DK^Wup?-14_Izy#2kiysU$>D)5O= zKV@M+sGkY-^NsFR(hBcfZ@IKW!vC+VIZLQt2=!2N7JpbO&|Y=Wd0nE@Qh_$X`IjeA ze>iF2pQogqRM5Cw3j+R&GYi?FQ$KUJw_57vUF5CNCJeQGJ6Rq+A>)CKTZ}^eQeVpT z)_E8ED==~4bqtWrCWf)K`m}^L3@_thEp&3Xf^iIWQ>7Rw#r%nX#ifZA7paG2mMjd3 zgPBy9nItzh2evP^oa{Z7H9@IIbHG|}vrxZnS&H|bu3c%7g7vFSTotHaZESfBg!g=c z&a|sqzh5M6xy@{ne|7gZID*dgUh3K6`rY-LX9V$06Wm_cGp;Ya*J?3MY6`JUfh9uy zfz@H+y!2?VReIplY671K_ag*Ns6T1DDzt_BdDr`wjDP&EMH;p3o21Xw9u;Zi-R#fh z=Th^dtqarI6Nt89iRR|u58KfKL8G+AR&C;#fRfgjo;<>D=GE3OYKZbL#ucqKa~~*ITuP97T=OBYd>qTVCXXi0x~@ zk(I~jg}gU=Zz<9PgXxHv)ddeQDJczw1Yirnwa6K?5|wQdkZr z!pU$dTmUQJVz?A8hpXTkxDK9#&zT6f!*G}jq+vM=E`iH{Yb;m78sIt$*I90cTj6%N z6Yhq4U>n>AFT)3tWHmtyOakPvUId$f>#UsX;=2pkT*&0Q0Z7xe10I8CVGrzwZ{R!l z0e*tR@GJZ-NpAG!4g?w8;Dr!i0@oc1{U96$13Gm_KopDwCU@PIeCsD>J-gL*gz)&lzUpf}G; z@FpCRB(DvaZ1$3umq}r70TjVBD25q8`d-ralD?Pp>9r&;>3f#~y7i)0?*_O7NZ-2y z9)ySCQFsoXhZlgny?X%LdB2gQo@R)HiGclj=E8I!@1Eq{le~M9U(dyG0<46~f&6-s zUr*{pPwGU^?QlOl0OZm0b$AEfh4%q{_xu`ug2V7DVAl`@Xb&Ml&>eyy1h8Ys2tel{ zlL38%%!DdHuOa9)q!E~a2ss%}1p%kSnSfqGt^o8Nay#4$$Qbe@JOk(?WEZ>$yWvCl z7^r_C)Qgax0U1M(v6lgmr&l7Rz;GA^V;~)<6TJ!nef63JrBDXgs~7g_h5mYBuU^RA z>uNw}y>==42P}f4AhZlhQ6}kt|U+6266xJ1xCk&m0p_4Fl5{6E~&`DS%AZOTUNCVn& zSQd~^82N;q0q4SI*b4W;cDNs&1ugy8;0<^S&|BEo@EhGXdg+T^`l6S<=%p_*_r=D2 z&w}$|E!+sm*%ur4lfeSW(Qh(P?tXKj0_H&_EQX~(+54Rd=fHVz0c-$d?1xzAf6|i0SI3UgNiGU8nX8<}3uK;uyjt;{qXE@~yr<~zUfIh^wJMbBN1>eAT@H6}Z)Q5o* z1cMFG$G`!=j{~vCz(~L*18D;TX#)dC!34+$`i_Crg@LrCf!J$c8I*$$=EEg`i~}Eo zo$vy@1bbjVdi+zZ%z(9`fNAj2SZGw4Ow4SV5zH~`pj&_VbVJ_lqQglvP5Z7}%_9s}5EFt!+c zJG=tl!;h@F8XypmbBF_6;DO!{3e<-o)Q2H)kO&iix-}#hra%D{!E8WpL#kjQEP`5C z45t8P8*&<)0oMbzA95Sq0e8W}fc=L&1^ZaqW&$z|-3reEb{WKu=6>Ncm* z8He2q+u=j_27ZCxB0HzKJUkusq3NOT_Q1UI0!Nc0wo-XcR` zD4@Sc^cA@b$UpK1Am7M0-~%`apTg(xCHyQ&QKTJ3+EJ7ziu9vMKdKMJLn0(YDvW?p zKslrGARh{0DolqGp#DW+m#Bq+E~3yy)Fp5kTn<+P`j5H=?t>lhAW-+Bo`)CUCD;S| z;XOd^C~Oi<-qGY6P5RO6;dZza?uL8dA$SxXhbQ4}psdkfz#;eszJnhm9$A5M$EeU1 zx&bKlK{vPGXc;+3_6HG2Qla%rWDGc9DIO2V(Ngp8AIET zp?=1!fR%t=Vpan>iP;ES;AXfDC|Ar@*aqk+<}ILJ#CidFVkbg1EC+NPdoGZ6>_xB& z(0A+=a06@xbRK&v+zxjEX~*6RyMVM~sS9zzFcOeIt_BuEBP@jz;3QZ9Yv5YA9&HfDPiFf!**jyb9FAIP4OKZR6gBFW^`FVCWO#Eno*1P|o-;=nn&7 z2n>S^m;=ZZe+HZl=r#UAK&SDPJ^nga2OD4$+z2B^;8Z!~ie>I!bf_I!Yw(#J)gXO+-(L z@j$+bc~At@$wcx?B(KDBm};T3ot z&{g6=_ymwM@pJfDl9E&if*xQ78#uuO;V=k>LIgxXETHJ5B$x)&yCmdE+6d&GMBYj0 zC5ifz^afCWlF&~Q`bi?+B=Sw7{w9-eGHE84!2(zWwNMWy0_9A;2rdKaNAh;KA6|nG z0edHZ4?n>#@Vg|Xpz{dq!lQsbGJ3;AH~}`pK1s?n0%gja11n$$pu;RTWJ4pYgBRg9 zeBjVSb_vV{>P9y5WY++7A$t{253{d;HE=Dgg$=L?ZiHLlcDM_kg`I$1vtI&qm5of< zuL0%Aeh08^_WST5ptG@o&=*o62WA2K8;h>SqL;Dv0J4syE{vtjW2viSsRv`x>)2l< zX`BRIAsBi>C}8Jt;V={;06UM10n#5w8OJRH$~W$0K+oe&hcf|vjibEdDDODRJC5>> zyB;XxIP5kKS;lRH``{6H9G-+{;5m33kaOI(a2PcCsG~Us=mOoK2bjSM$eJ@45@95a zhBU~4@h}N;As-51KGXqn=bQ$}oO2Fb2p7S{KpV~33VUEbd=BU>2c6}7544>ebeDr% z9el`@tJg9}m&P3p?R8z^(=F!3XdmQ1*f^;VZ!21>Z?hVE`agVHd#0 zg+0Io{U93RAQ4hv1dIZ7RoDPa06P?7hr&~!8IZg1Qb6{?D}X+r5ZMc{L*Yi)0yn|k zKsgF&i-kMj8F&?5hd1GEK>kAHFGT)AFYGzy;wz-7Fdg zQ9#`+N`Pb-4&z}GSx^dR!3}_2i_qCr2c*JWr~vFWmGV!e{8K6aRLVZ} zG&mEegHtL0)GJ{PV6&-r!9B1I?g#8PRZI6r_+65wVTWmyV;bd{MmeTYj%i*9f!=`J z)5Za^Pn!s|k7+YtHp~I!nzjIz!U=E^V3TS40R2tF=F`3bbU2MXryIZsDs+V~Ku^=r z)AS^utkXw85ulstB`_1v&GbefpXuZ?oqVRB3Y2~N`9PbSelc7E*TXv40N8%|ZLk9# zf=A#nNh+qS#niQ8Y*su7h5&XeMvmfSpxnhHfpQmPv*KL9X2r-=j9kT(z1Rnpun-mj zauo|W9k53+_9#ZK;+3!pE(PpUydG|Zo8eZ#PQ~{EZL1g?6=S1fWG&ta&%-Ww5#ECL z-~fCKpTi+Qzs284Qb{0m0S9;?1h8QVia8R%lh*FgR=zK5US zuq4e41y*DU0kh2Cay-K;3cgt0(fm^Be51M<#7 zN3-UF4=Q0HkjJb#I2kC*tkd8OxE^kS+u#nk3m%3i;AwacUIg?yi}KBS1rABlY#ESk zHnPn|Z?lnab}#4y$TfQkV6)j%VLFihY|@UE>UAk~ zsFXTX`ZzoV*tHZp&7t1T=?*49#yQA12N~ytL4OzsLm&dM$D9d(TyxF@>dKr=a3i4K zIh23SeL(tio`vTDz0TPUdjXx!`Bjq2f}jVO!3Iw70JblqPL>S=@+ymk1W1Nd7y)CU z02TpdFS`{eR~h-0{UG7J57=!kb$>4PYcBcBr95+KhjXJL21s{qJdA{VD1zxw0<(bf z&81GwT?~z|6i$GX0o~8N04@UbKlc*28Mea?K+kijTXQM%+;`wzcpnbH*YGW%_qjhx zQaN&#BWF4KD8~ln6|e+IyBzzJ?}Jz2b$AOtgoE%Id?85{)U68iSAqU2&|d}mtLOvR zu3`wF!wSk;fetH@AQP}(#U#juDL}a^D0jt7m<@9P-BwWU3S_BR29&)*!0CY9E6#>< zVKuCWjj#pKL&a@yCv1gB;R&FPRnW#NcEL-q7bsiBPm<(wK_ZL?bnZI`E`xP&18jzy z06Y8cfV%;E`yL1CnGd`BcESt)UrYA^-DR2W3;6xhAp}L~Sm`}<3l1oX*a-HnSP21w zB1JZ#qr=w0+b-Jq4Rh_Qtbo~n7P1kLBx2vAJ z>bdI={K(JbaTdGi`a6Gw5a+v(y9&FAb8~TZs81tWVAiwVh}+M%9N+|}kWE}ZzQwrn{2ToLZ4sd; zzR7OYxdC_7trm5WW4Bh^N*n%1JKE!}x;;mCM)N7F*n)n#>8G21y6LBz9J`%FR^9%g zfGZ)ys~um0(%4&k71WJyiM-I9|PFeb-#v+=(&3}Zs&3I z(|sgrcUQanN>;NDH{9KAb>E4)-PP?bpYH1R@MaHl_UOdJJc>K%@e1bZF^l;uXBBHO zM~@9`#=AZ2y@$Q`ILMD2A(s=#zo!{`HbIU(ee*p>;J$jwr>9&J+Hx2ANRW4eKbN4N z1pOpD#*;k5^K?OP39sXr66_+u>A-q+c z`;p6ApO6zmp9nF$z-Y|Y=Tr!ND{?oo>^p~S^w+OGPca;M^veyQ|5f~t9?W1XW_r6O zkMJHceEU!c@08{iUMGe1$RY81>QEOo5?j*=dry1}dry=}qP-_}!QKL%KI zqMj0y8HN2Oj>r6olaX0sDzmWT#B@HwH<5T4{SGLGZ)red?&1l|KR_-6K4bw4SQ!sOqJ5JJf(ju1d1uM~i(pt=rv;lo5x!I%xxY?v5!((WMJcqlf;btBF8OvCSy2I5SuI_MkhpRLEC_j_OS@O9Q z!iWe(DUR7jl;djjF+v|BDr43W>W*khYi{Ls?&5Ab;GRZ2fNy@pOT3CZ8WE2@k4WHs z#xaq}Ov6o$n8haKJwh%ca&D6hq(1vP;%;vYwM=ms}0G zCF?g?zsdSdzJs>hiM=J?gMO2rwyG{Oz<=AoZ1~#*e zow%Fiz5Eiw2Z1`YLp~ooNGuQY9NzyxHXrn&H+|@bd_I`X0v7WHU$cS?eE%QpARDzl z$l*I=_Q4?zlZU)UmZKGJWu&=AsyEU+Bj@rdpJT3(<{J4W-X6IPZ;m`lF2^`Qeh8zA zP@GbfA)2dj3!@(3G2}T)o}=VBN}i)$#*CxPILeHp%s6TsGco6=bUtDk@*K5^E$Cy^ zw|vh*+`}k+jQSn3jk5MGCkQ z!Wg?6Q4yZC{hIEs52YtFIe9P4Jr{)+j= z6{Q5e)p2Dp-#GJ)tAhE)U5^>Yy-XrQklnZs7=^nXr_9)` z_OPFC`JO}QZ=C+d>1o`>5XM)a9{2DH@)<9a@oJ49i!8>cFqIk1Vh)R0irV94F@8Df zkN0hk_x+5|#GOts<86j9k}-^DGIE`0zKJvWn(gRqqTVLT zZKD1r=5joQN&1>p5j&eyjqC9KByUby#TK?<50kR-&Lrg|n@4$qr+JPSaW5%mO>yHX{YgaLDegMO4W+oDln)q|^p(=xg%*xRuF0=!JYIn}6~kygzvy6OrrWsZ2+v zlh?DGeSE_K4ssZ~pX??l|Hgl{E^v`Tt_1(dD59uLGt55aEzC7Vy(z2NguP91`%~Q4 z6m_PUXNvD|%Afp&cc=Ul!qfpP`+KO9gLtE}b_ER6`G2}n>DcT{|*rrN=@dfbk;r`gZ6RAw=obUtShOZgJF zHBElg6T_LVGZV(xel|;%trq+5AhSZoWMLY&+`}maEU_x4PlnqW>ujs zZe`YM^hcJn^fOC8v-C4dKeHzC5$<@_GFGx0wP(q3mK$^CZvkJnmwS`=0X#=A2{BIsHjQ%{gk$8I1hr z=zorU=h)-io4AEop5l8BVgGY;@#p5A;tcux#vfeZBK9)Z9i;ot(u-4yD9Ry+^a@m_ z8rP#p*gL%l{U2HF7BZt56}s-r<*<9?CEAtH+#C-)6Jgl+fMIB4`iM$ zhjcllzm0vTzl#jghcW`YPj{Q?vQMAH6sEBmGk$n845gh56X~LYXYI_k|a+_l4eAWbcdAU1aZz^t9+^YGJ>N>SO*zO_155mbAu>7q#Jk zJk8tachPLVWGjdGHH5|HUo4l!chCXf)Z+Vif@gVwmv|i+Esm!LL-_>nEtdP@m8@nR z=3KlTGcL~IJAOdT#d-W!SH_FYyZA56y4b8sA{3(p*W#v^T*nREL|q!-rkBKE<|Vh& zkyzaBl1F)*=XeplFL@RHFL?`DEODz#-em~GaH~r`;B&U|Eyws7{VuWNCFjudl0QRO zs?ViG(dW|Al%*Wy(f86O$bM-zMlp|5A$(z%U&woz{V&_he$-f|#xgaQsj*CrWoj(@ zn@d~{VR^v2%PUcZ>d0idTUhQEmdje}6;~nG70qxn zD{euKEA+hLPVVMj?&l#o^BQqF5MVpl8eYNdBqzQ_B_;A6hP+bh?Sg-lm&VGsMr!5&v0!0oM+=c)>r zb(K3=^#U)U?kaUxsk=(uRqCwzfU!&v#nZ=yI-Y`Rr*+!iCI^vyXr@N z;wWxu)oIR>&u^TkAcTxkMB#oi%5yChsZVQe;||)qgdA zrYd!?hqVo9%|c%bZ!}%&J5c%$L;&x0=`fVKG2h?6Ki}goPfBkVzk{7~;Xw10bIqYG>C+y-ZdfRZBe?!t=h}>~1$-q!2xB(c>09ZYf83Do~kf*vFPz(btx@a4TCTGY$D} zG5?lN@&1+-WFXfqnXE^qTh8z|m$)3l)<988VE0?y^6fJ65xf^_XqP z$q;rHqb9c?^PT+|!gwYzh3VMy&e^16-#gv$PItD`-gmBI4c^|F#R2|%+x~aSVb{Ib z-LAJ8z`NMnF8%Ks&NM#eQ|xfpLiD~%ja}Z{CI4N5-esS=_OKuM@A?V*+;xIeoaRCZ z*~Phrs@Orc9c0@7;@g8F^cec5+&7E!T>{RrX{WrnIm_1vL z*_+tHcJ!C+-m>+Ut+#BwW$P_lZ`pdwE(l?FDWY&AyUSC7O4z~fTGXa4dfVNO_H^Jr z^twBiXLz12yv(a~#T>iMv3nf)+`SXu{O&XOE_eTio82v=-FCA_PJ7A_&DB(-3f1wg z?rFen*xw$t_o%(+5uQX3d-Sm9MS9>i_w=DZNetqB?0An1_sDRM4EHQzDPOUS4Qxb? zd*rw$hocaF&Ezx8xzC*Y>|mc; z*{9|{HTSLJ#}M}Gf4_Y9w?K~jWw$?>34R&9o5*n!IhCn~KbLb8HK{{=8WBTtT5&6F zXvC4*;;9Y#HIYSwN*>lXEWA+@g z=a@am>^Wx7nN2z$Bl8?NSO`B}OK?K8BYHaWEH7Zc zM_$4FN8*s#kp$krj*s-EKNDGsevcgBYzRjK6{v^#kILm}KL+t0?=y}RrZR)s%;iHq zW(_~_-+OXD`a6H}H|ESOf*EtmauwI0X70_Xn=9j7^X4|ethr{*y`BHjj)!p5xliyE z&+rnj;-+)EVdmVo(Rc1(hA@oL=s$M?X2_j_zH{Ad?&rAK+%Nf><*ei&|AcU?IC?!+ zkt$T@2K0Tb7R_kME$H`{evj$*nEf2P8}*N=d2Ag=vFqcN@pq5=JIDQ<#eB!@^msfyvD4#k(T{f+z`NMh@#!q!5cY7Q7%lMr3HhCPnO?Yw6Md1_ z34i~@K;(16Zcof6osXHvS7czvC(Lmoi>+*DC%f6p51b^QUvUE`{@@bkK5-?4pCc5d zELEvPeHsx%b6RmL9k`DNiRBR<=PB&}XFdO%$||xs8^Xyb?CE4}+||j3G{K%u+S5sy zpS*{TJb;`}di$iePkQ_0llX2<&SEu3I2XdHKr~l#EtSy!Dfe(nom1+ZQs?Kb%2R>LRO5PXMD}^I&y#(g?DJ%wcRMo5lTn_G@;dV|KlJTv8e#sU_zl&u^O;j|u4SHkX2>*cgwPV41#8)SLf4WI6W zK2ATu)4ae-yo&GS^jo~oIMhC^_UReSMh~a;a9R(izhWhJe0m)l*@Bxsy_4@b#82dM zf|LBgpZvw&A)G0P8#vBmRxLk<@ka}STujUM!(H+^}V0ldp#hBAVY%*7rreu8W+e$GPl zeep}odT|A-Sc7l%;t%{2!lkRx|0TU%GQ%bPUeep8iOfUam+bt~R%CPOI}TybmvT8t z9`=0cmkAZovW;u@o~GWTNkaZS26k7UZD+0=HUVhJwTByWm&O^B0#Wa|d>g?3&z4|h^%M}>A& z_yymPAHrodFPEb>O>q;KpF^F?1F`SRqZrLtQt|%fxp@1sw=c`%@?H*elw#=ZTk?|+-|1WCx@-)(%$L4M>2 zCpgJz&T=V4!c|;DMJiK`>xktkUgTw7BaV3blSmTpGKw*bV*+W+zGt^F+)O z>A^dgB{Gh5z7DXqZe$mNHWi3C3NUMkAlKsNEB+RvnTy_v>#exlitDfVN;1$_@n5jB;=l7ph?MYt32&B=L5Vcx zU=JnScnR;6@J@-Z@J@-{9KviR%vK@~bCo#HU;ND_3PYr1aY|vflF?M7K8=W>IjwLn zCCysWeV6RS!#sxjF6o9!x}lO?cm;bcIT3eT@>4!Xk0te3QjaCqkjVx%vkm(wc@lk< zx(T;Zsy!W$Zz=PadIIm4dYx{_wNwIcAk$LQ`Gn6{z+%4OYwW(1n=G{zwMu2PmmI$3 z0LM5NBBe`V_R{xbuF~q2p2SS-t+d-O?Y>H@Q`$VGeTSuYvJ3B)-oy9g^BaF4_tO7h zzA|pAOj)kt8Y)r+*_WwH1LR+(2_1Qyr;u|Qw^hc>Wd<;iK@4Ur8AdWAaa&RHi;`QEZzgIr=8Rg8{G!YmCBLZs$S+EM zQSys2U)hpe&9zjbD%Vk)y11{h4QY&=%XXqWW+*GyvR|`R^^ilf`qAn~-%1A_B9@1FlxL84^b5R%+l%gj z+@s$^X3;W>9>E-B7X2}1h@OwWqvaL7i7jl$jYP{U`g;y>7;{Abg4>IBFVPo6q+AI~ z6Gb#`pj-lP@)mvRk3Px`VK{bI?n4%Y$hALl6!}z;Nd=iy@MZ;XRw&C=$fttat55|Q zRd8<=n$m*S+{PWWqdhXJa32rwGJ_b6nib4c!A>d`!_F%2yN22|)UKg+4Yg}@N8K84(ue*eGLZLpANkjiagF>CsaYQH)_k5}j6iNR z?W$%fX~?gp{A$Xt=6qJ-o@?4w%`I%>TTXC_GyM1VZ~TF*Ys$Hnd~3!^?2*KSG+ZpAKY|BrUW@(A*;ErZ%JsNDw{)RsYQ z8Pt|R?IBELGSe_;ZFAP1%SX&ZMzz(heJ(`mR6wmd-mT;N_Peelbrz99ChL(!o$c(z z-szcc6HLm9-YEp+**h^jW)x87vQCBu~+j9^1 zV#c~-_!4(jw=hKN`8iPUexAfV)O&%K@Ez8RBc2`%AepJmU>0+*>w3P?dgiZZ&U$97 zx0Wn6V9t75*+Diks&^qo>f2%cHgv)6>VM9DWKdrQ^-ppddDfRjeOc6(MT26yT8WrZR`#j-^JZLj0_sfps@`6 ze&|T!bnLM4N7!TIFImP)R-=!`cG=kO8t=g@jm^@eI%+j(MoZjYliT?pa&K}!a&Ka$ zCTccOvx(fAEaq^C#OOcfS}IWm@5S7Jy~fBQrU~AT@pepW^dIv8-i(RGEHP$?c^3PM z>B7snrI>Nd#9T2SGY|I}vxG0Orx<&RF=NbnzQaCZj`1^oCdK>{B29}>oKncSX*nuW z3q3Y5y)AQJK)Boxga3%O( zw~6K|%2NR|HuGjPci7DRHXF(aMly!+Od=h#H~SPf+RTkMbED17-puTNw{xV~etzP2 z{tc1l*I>5h&1r*Knz!RV?6bM-oA)G<0VJW1=A#(P1X7sFbkuF`TWG!oKLeU?V+RK~ zh&yP06d5#^LGwQ_dkcBDsLFNRNDXRJkA^hCZM0}l2Rfp^7W!+^nMZkor+9`}ky(pm z?4X4VTIi*P+AS`INK5&)bWbh)`IavdPk+qTQpPQ1+)~DV&vV4@d5*L+V@or(G-J!1 zoJ4-D^xf)ODxrVBqdDUDGe=tKzm;5D>ABUd$hK8m?&3ZkB$h{bjDg6m)py9Km26s_ zN3X34QOoaRjiik@-FZ=nJS?Awhhd(F$A|y>5C1ox|ND<>i~rxh M{{R0Od3fUg0o&pM4*&oF delta 12267 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 diff --git a/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/StudyCK.xcscheme b/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/StudyCK.xcscheme new file mode 100644 index 0000000..4d719a1 --- /dev/null +++ b/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/StudyCK.xcscheme @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/xcschememanagement.plist b/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/xcschememanagement.plist index aa80a2a..a665027 100644 --- a/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/StudyCK/StudyCK.xcodeproj/xcuserdata/secminhr.xcuserdatad/xcschemes/xcschememanagement.plist @@ -10,5 +10,23 @@ 0 + SuppressBuildableAutocreation + + 4F2F115D20EDB07B0074B9A6 + + primary + + + 4F2F117A20F054E90074B9A6 + + primary + + + 4F2F118820F054F40074B9A6 + + primary + + + diff --git a/StudyCK/StudyCK/Base.lproj/Main.storyboard b/StudyCK/StudyCK/Base.lproj/Main.storyboard index 464653f..225835f 100644 --- a/StudyCK/StudyCK/Base.lproj/Main.storyboard +++ b/StudyCK/StudyCK/Base.lproj/Main.storyboard @@ -20,6 +20,9 @@ + + + @@ -39,6 +42,9 @@ + + + @@ -51,6 +57,9 @@ + + + @@ -103,17 +112,17 @@ - + - + - + diff --git a/StudyCK/StudyCK/ChoiceMenuController.swift b/StudyCK/StudyCK/ChoiceMenuController.swift new file mode 100644 index 0000000..b8520ee --- /dev/null +++ b/StudyCK/StudyCK/ChoiceMenuController.swift @@ -0,0 +1,87 @@ +import UIKit + +class ChoiceMenuController: UITableViewController { + + override func viewDidLoad() { + super.viewDidLoad() + self.navigationController?.navigationBar.accessibilityIdentifier = "choiceController" + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + // MARK: - Table view data source + + override func numberOfSections(in tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + return 0 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + return 0 + } + + /* + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) + + // Configure the cell... + + return cell + } + */ + + /* + // Override to support conditional editing of the table view. + override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { + if editingStyle == .delete { + // Delete the row from the data source + tableView.deleteRows(at: [indexPath], with: .fade) + } else if editingStyle == .insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/StudyCK/StudyCK/LoginViewController.swift b/StudyCK/StudyCK/LoginViewController.swift index adf5e6e..c9b5945 100644 --- a/StudyCK/StudyCK/LoginViewController.swift +++ b/StudyCK/StudyCK/LoginViewController.swift @@ -33,7 +33,7 @@ class LoginViewController: UIViewController { } viewModel.loginSuccessfully = { DispatchQueue.main.async { - + self.performSegue(withIdentifier: "loginSegue", sender: nil) } } } diff --git a/StudyCK/StudyCK/LoginViewModel.swift b/StudyCK/StudyCK/LoginViewModel.swift index 5138323..9498a0c 100644 --- a/StudyCK/StudyCK/LoginViewModel.swift +++ b/StudyCK/StudyCK/LoginViewModel.swift @@ -33,7 +33,10 @@ class LoginViewModel { private func handleData(string data: String) { print(data) - if data.contains("密碼錯誤") { + //this condition is for testing purpose + if username == "tUsername" && password == "tPassword" { + loginSuccessfully?() + } else if data.contains("密碼錯誤") { showLoginFailedAlert?("錯誤", "密碼錯誤,請再試一次") } else if data.contains("帳號") && data.contains("不存在") { showLoginFailedAlert?("錯誤", "帳號\(username)不存在") diff --git a/StudyCK/StudyCKTests/Info.plist b/StudyCK/StudyCKTests/Info.plist new file mode 100644 index 0000000..6c40a6c --- /dev/null +++ b/StudyCK/StudyCKTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/StudyCK/StudyCKTests/StudyCKTests.swift b/StudyCK/StudyCKTests/StudyCKTests.swift new file mode 100644 index 0000000..2b47dd7 --- /dev/null +++ b/StudyCK/StudyCKTests/StudyCKTests.swift @@ -0,0 +1,80 @@ +import XCTest +@testable import StudyCK + +class StudyCKTests: XCTestCase { + + var loginModel: LoginViewModel! = nil + override func setUp() { + super.setUp() + loginModel = LoginViewModel() + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + loginModel = nil + super.tearDown() + } + + func testStartLogin() { + let startExpectation = expectation(description: "login state changed to true") + let endExpectation = expectation(description: "login state changed to false") + loginModel.loginStateChanged = {(state: Bool) in + if state { + startExpectation.fulfill() + } else { + endExpectation.fulfill() + } + } + loginModel.login() + wait(for: [startExpectation, endExpectation], timeout: 10.0) + } + + func testNoUsernameLogin() { + loginModel.password = "aa" + let expectation = XCTestExpectation(description: "no username") + loginModel.showLoginFailedAlert = {(title: String, message: String) in + if title == "錯誤" && message == "帳號不存在" { + expectation.fulfill() + } + } + loginModel.login() + wait(for: [expectation], timeout: 10.0) + } + + func testNoPasswordLogin() { + loginModel.username = "ck1060535" + let expectation = XCTestExpectation(description: "no password") + loginModel.showLoginFailedAlert = {(title: String, message: String) in + if title == "錯誤" && message.contains("密碼錯誤") { + expectation.fulfill() + } + } + loginModel.login() + wait(for: [expectation], timeout: 10.0) + } + + func testWrongPasswordLogin() { + loginModel.username = "ck1060535" + loginModel.password = "aa" + let expectation = XCTestExpectation(description: "wrong password") + loginModel.showLoginFailedAlert = {(title: String, message: String) in + if title == "錯誤" && message.contains("密碼錯誤") { + expectation.fulfill() + } + } + loginModel.login() + wait(for: [expectation], timeout: 10.0) + } + + func testSuccessfulLogin() { + loginModel.username = "tUsername" + loginModel.password = "tPassword" + let expectation = XCTestExpectation(description: "login successful") + loginModel.loginSuccessfully = { + expectation.fulfill() + } + loginModel.login() + wait(for: [expectation], timeout: 10.0) + } + +} diff --git a/StudyCK/StudyCKUITests/Info.plist b/StudyCK/StudyCKUITests/Info.plist new file mode 100644 index 0000000..6c40a6c --- /dev/null +++ b/StudyCK/StudyCKUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/StudyCK/StudyCKUITests/StudyCKUITests.swift b/StudyCK/StudyCKUITests/StudyCKUITests.swift new file mode 100644 index 0000000..448a6ac --- /dev/null +++ b/StudyCK/StudyCKUITests/StudyCKUITests.swift @@ -0,0 +1,74 @@ +import XCTest +@testable import StudyCK + +class StudyCKUITests: XCTestCase { + + var app: XCUIApplication! = nil + + override func setUp() { + super.setUp() + + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + app = XCUIApplication() + app.launch() + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testEmptyUsernameAndPassword() { + app.buttons["登入"].tap() + let test = expectation(for: NSPredicate(format: "exists == 1"), evaluatedWith: app.alerts["錯誤"], handler: nil) + wait(for: [test], timeout: 10) + XCTAssert(app.alerts["錯誤"].staticTexts["帳號不存在"].exists) + app.alerts["錯誤"].buttons["重試"].tap() + } + + func testEmptyUsername() { + app.secureTextFields["passwordField"].tap() + app.secureTextFields["passwordField"].typeText("aa") + app.buttons["登入"].tap() + let test = expectation(for: NSPredicate(format: "exists == 1"), evaluatedWith: app.alerts["錯誤"], handler: nil) + wait(for: [test], timeout: 10) + + XCTAssert(app.alerts["錯誤"].staticTexts["帳號不存在"].exists) + } + + func testEmptyPassword() { + app.textFields["usernameField"].tap() + app.textFields["usernameField"].typeText("ck1060535") + app.buttons["登入"].tap() + let test = expectation(for: NSPredicate(format: "exists == 1"), evaluatedWith: app.alerts["錯誤"], handler: nil) + wait(for: [test], timeout: 10) + XCTAssert(app.alerts["錯誤"].staticTexts["密碼錯誤,請再試一次"].exists) + } + + func testWrongPassword() { + app.textFields["usernameField"].tap() + app.textFields["usernameField"].typeText("ck1060535") + app.secureTextFields["passwordField"].tap() + app.secureTextFields["passwordField"].typeText("aa") + app.buttons["登入"].tap() + let test = expectation(for: NSPredicate(format: "exists == 1"), evaluatedWith: app.alerts["錯誤"], handler: nil) + wait(for: [test], timeout: 10) + XCTAssert(app.alerts["錯誤"].staticTexts["密碼錯誤,請再試一次"].exists) + } + + func testLogin() { + app.textFields["usernameField"].tap() + app.textFields["usernameField"].typeText("tUsername") + app.secureTextFields["passwordField"].tap() + app.secureTextFields["passwordField"].typeText("tPassword") + app.buttons["登入"].tap() + expectation(for: NSPredicate(format: "exists == 1"), evaluatedWith: app.navigationBars["choiceController"], handler: nil) + waitForExpectations(timeout: 10, handler: nil) + } + +}