diff --git a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK new file mode 100644 index 0000000..a2c135a Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK differ diff --git a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@2x.png b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@2x.png new file mode 100644 index 0000000..f5a369a Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@2x.png differ diff --git a/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@3x.png b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@3x.png new file mode 100644 index 0000000..4d9aec9 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/CredibleAuthSDK.bundle/h5_close@3x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/config/LiveViewConfigure.plist b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/config/LiveViewConfigure.plist new file mode 100644 index 0000000..c7bf98c --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/config/LiveViewConfigure.plist @@ -0,0 +1,91 @@ + + + + + navLabel + + text + 身份检测 + size + 22 + color + #000000 + + navViewColor + + color + #ffffff + + viewBgColor + + color + #ffffff + + progressNormalColor + + color + #004b5e + + progressLoopingColor + + color + #ffa500 + + toastLabel + + faceLightText + 请保持光线良好 + faceYawText + 请摆正姿态 + faceNullText + 请面向摄像头 + faceOutsideText + 请保持脸部在框内 + faceMultiText + 请保持一个人脸 + faceDiscontinuousText + 请不要离开 + faceCloseText + 请远离摄像头 + faceFarText + 请靠近摄像头 + faceMaskText + 请摘掉口罩 + mouthOcclusionText + 请不要遮挡嘴巴 + noseOcclusionText + 请不要遮挡鼻子 + eyeOcclusionText + 请不要遮挡眼睛 + faceBlurText + 请稳定姿态 + size + 18 + color + #ffffff + + remindLabel + + faceGuideText + 请将脸部置于提示框中 + keepStillText + 请注视屏幕 + nodHeadText + 请缓慢点头 + shakeHeadText + 请缓慢摇头 + openMouthText + 请张下嘴 + blinkEyeText + 请眨下眼 + goodNextText + 好的, 下一个 + liveDetectText + 检测中, 请勿移开 + size + 20 + color + #000000 + + + diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/backBtn_n.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/backBtn_n.png new file mode 100644 index 0000000..2828f23 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/backBtn_n.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/eyesImage_close.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/eyesImage_close.png new file mode 100644 index 0000000..3063e93 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/eyesImage_close.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@2x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@2x.png new file mode 100644 index 0000000..2043b7c Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@2x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@3x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@3x.png new file mode 100644 index 0000000..1988364 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_back@3x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@2x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@2x.png new file mode 100644 index 0000000..c33b17c Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@2x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@3x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@3x.png new file mode 100644 index 0000000..77461d5 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_cancel@3x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_loading.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_loading.png new file mode 100644 index 0000000..7cb3289 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/face_loading.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/fail.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/fail.png new file mode 100644 index 0000000..8ff7d91 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/fail.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/gazy.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/gazy.png new file mode 100644 index 0000000..7198be1 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/gazy.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_down.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_down.png new file mode 100644 index 0000000..c814ae9 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_down.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_guide.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_guide.png new file mode 100644 index 0000000..2a4ebcf Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_guide.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_left.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_left.png new file mode 100644 index 0000000..a094507 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_left.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_normal.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_normal.png new file mode 100644 index 0000000..f49f23b Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_normal.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_right.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_right.png new file mode 100644 index 0000000..d4b0af8 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_right.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_up.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_up.png new file mode 100644 index 0000000..0130439 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/headImage_up.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/keep.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/keep.png new file mode 100644 index 0000000..cad7187 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/keep.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/light.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/light.png new file mode 100644 index 0000000..b8b6fce Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/light.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/logo.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/logo.png new file mode 100644 index 0000000..d2bfe23 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/logo.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/main.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/main.png new file mode 100644 index 0000000..ee909da Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/main.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mask.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mask.png new file mode 100644 index 0000000..368d305 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mask.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_blue.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_blue.png new file mode 100644 index 0000000..a41e618 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_blue.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_detect.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_detect.png new file mode 100644 index 0000000..4c17a4b Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_detect.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_orange.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_orange.png new file mode 100644 index 0000000..69cfe15 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/maskview_orange.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mouthImage_open.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mouthImage_open.png new file mode 100644 index 0000000..ada8522 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/mouthImage_open.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@2x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@2x.png new file mode 100644 index 0000000..c46d893 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@2x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@3x.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@3x.png new file mode 100644 index 0000000..864f378 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/notice@3x.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/optionBtn.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/optionBtn.png new file mode 100644 index 0000000..e5b65a1 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/optionBtn.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/play_btn.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/play_btn.png new file mode 100644 index 0000000..fb1ddc8 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/play_btn.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_0.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_0.png new file mode 100644 index 0000000..9bc255b Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_0.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_1.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_1.png new file mode 100644 index 0000000..5e9c34d Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_1.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_2.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_2.png new file mode 100644 index 0000000..14500ac Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_2.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_3.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_3.png new file mode 100644 index 0000000..aa2231a Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_3.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_4.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_4.png new file mode 100644 index 0000000..890d7fd Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_4.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_5.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_5.png new file mode 100644 index 0000000..f8c9de5 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/rightAnimation_5.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/selectedBtn.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/selectedBtn.png new file mode 100644 index 0000000..92f5d67 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/selectedBtn.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title.png new file mode 100644 index 0000000..703ee96 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title2.png b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title2.png new file mode 100644 index 0000000..c249cae Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/image/title2.png differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live.lic b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live.lic new file mode 100644 index 0000000..17bdcd2 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live.lic @@ -0,0 +1 @@ +HL-00B26417C87A2CDF9042F4A7593F50D120D28436E89A4CFEB06214C6782ADC8E40F2A44E78DB0F75B1E551CBFB2591800768B70106BBFC4EDED22669B86A1CCE8032E49648FAAC5C10C27427D88A3CE6A05204B50175BF7E30E29546F8AA570EC0723DB5E757C2F92A71C34879BA0C0090E02BDB9A6A3E8A4110E7B7B1A6EA9C \ No newline at end of file diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live_test.lic b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live_test.lic new file mode 100644 index 0000000..d1b8a44 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/Mobile_Live_test.lic @@ -0,0 +1 @@ +HL-00AA54FFA852FCA750FAA44FF997A049A04AF49E48F29C46F09A44EE9842EC9640EA942798F35F8DF15D81A35B8DE11887F047A9A653ACF61EAEE15DAC822CD6802AD47E28D27C26D27A24CE7922CC7628CA741ECB1B73B5701AC46F18C26C1DC06A14A40B7DD14877C0177996037CC64E7ED12D7C9F6E36826E359C6B33A92F2C9A \ No newline at end of file diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/hardinfo.txt b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/hardinfo.txt new file mode 100644 index 0000000..66e7a32 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/lic/hardinfo.txt @@ -0,0 +1,5 @@ +Mobile_Live.lic 为测试 +Mobile_Live_pro.lic 为生产 + +如需要切换将名字改为Mobile_Live.lic 另一个改为其他名字 + diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.bin new file mode 100644 index 0000000..0044dd9 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.param.bin new file mode 100644 index 0000000..9bc2bd9 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/POSE_TestNet_face_64_20211011_sim_nobn.param.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.bin new file mode 100644 index 0000000..9169ca1 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.param.bin new file mode 100644 index 0000000..45149ca Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/faceocclusion_BN_inputs4.param.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.bin new file mode 100644 index 0000000..98e8832 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.param.bin new file mode 100644 index 0000000..d1ed93b Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisign_liveness_20211011_sim_nobn.param.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.bin new file mode 100644 index 0000000..888ec63 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.param.bin new file mode 100644 index 0000000..39fecef Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignblur_nobn.param.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.bin new file mode 100644 index 0000000..9e7628f Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.param.bin new file mode 100644 index 0000000..92c2545 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignfacemask_nobn.param.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.bin new file mode 100644 index 0000000..29f315c Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.param.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.param.bin new file mode 100644 index 0000000..08766ab Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignlight_112x112_nobn.param.bin differ diff --git a/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignmobileface_120x160_nobn.bin b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignmobileface_120x160_nobn.bin new file mode 100644 index 0000000..b95b944 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/HSFaceData.bundle/model/hisignmobileface_120x160_nobn.bin @@ -0,0 +1,616 @@ +L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?=<=<=<=<=<=<*><*><*><><><><><><><><><><?<?<?<?<?<?<"""?<"""?<"""?<333?<333?<333?=*>=*>=n>=n>=n>=>=>=>=>=>=>=>=>=>=?=?=?=?=?=?="""?="""?="""?=333?=333?=333?=DDD?=DDD?=DDD?=UUU?=UUU?=UUU?=fff?=fff?=fff?=www?=www?=www?==>=>=>=>=>=>*>>*>>*>>n>>n>>n>>>>>>>>>>>>>>>>>>>>?>?>?>?>?>?>"""?>"""?>"""?>333?>333?>333?>DDD?>DDD?>DDD?>UUU?>UUU?>UUU?>fff?>fff?>fff?>www?>www?>www?>=333>=333>=333>=333>=333>=333>*>333>*>333>*>333>n>333>n>333>n>333>>333>>333>>333>>333>>333>>333>>333>>333>>333>?333>?333>?333>?333>?333>?333>"""?333>"""?333>"""?333>333?333>333?333>333?333>DDD?333>DDD?333>DDD?333>UUU?333>UUU?333>UUU?333>fff?333>fff?333>fff?333>www?333>www?333>www?333>=fff>=fff>=fff>=fff>=fff>=fff>*>fff>*>fff>*>fff>n>fff>n>fff>n>fff>>fff>>fff>>fff>>fff>>fff>>fff>>fff>>fff>>fff>?fff>?fff>?fff>?fff>?fff>?fff>"""?fff>"""?fff>"""?fff>333?fff>333?fff>333?fff>DDD?fff>DDD?fff>DDD?fff>UUU?fff>UUU?fff>UUU?fff>fff?fff>fff?fff>fff?fff>www?fff>www?fff>www?fff>=̌>=̌>=̌>=̌>=̌>=̌>*>̌>*>̌>*>̌>n>̌>n>̌>n>̌>>̌>>̌>>̌>>̌>>̌>>̌>>̌>>̌>>̌>?̌>?̌>?̌>?̌>?̌>?̌>"""?̌>"""?̌>"""?̌>333?̌>333?̌>333?̌>DDD?̌>DDD?̌>DDD?̌>UUU?̌>UUU?̌>UUU?̌>fff?̌>fff?̌>fff?̌>www?̌>www?̌>www?̌>=ff>=ff>=ff>=ff>=ff>=ff>*>ff>*>ff>*>ff>n>ff>n>ff>n>ff>>ff>>ff>>ff>>ff>>ff>>ff>>ff>>ff>>ff>?ff>?ff>?ff>?ff>?ff>?ff>"""?ff>"""?ff>"""?ff>333?ff>333?ff>333?ff>DDD?ff>DDD?ff>DDD?ff>UUU?ff>UUU?ff>UUU?ff>fff?ff>fff?ff>fff?ff>www?ff>www?ff>www?ff>=>=>=>=>=>=>*>>*>>*>>n>>n>>n>>>>>>>>>>>>>>>>>>>>?>?>?>?>?>?>"""?>"""?>"""?>333?>333?>333?>DDD?>DDD?>DDD?>UUU?>UUU?>UUU?>fff?>fff?>fff?>www?>www?>www?>=>=>=>=>=>=>*>>*>>*>>n>>n>>n>>>>>>>>>>>>>>>>>>>>?>?>?>?>?>?>"""?>"""?>"""?>333?>333?>333?>DDD?>DDD?>DDD?>UUU?>UUU?>UUU?>fff?>fff?>fff?>www?>www?>www?>=33>=33>=33>=33>=33>=33>*>33>*>33>*>33>n>33>n>33>n>33>>33>>33>>33>>33>>33>>33>>33>>33>>33>?33>?33>?33>?33>?33>?33>"""?33>"""?33>"""?33>333?33>333?33>333?33>DDD?33>DDD?33>DDD?33>UUU?33>UUU?33>UUU?33>fff?33>fff?33>fff?33>www?33>www?33>www?33>=ff?=ff?=ff?=ff?=ff?=ff?*>ff?*>ff?*>ff?n>ff?n>ff?n>ff?>ff?>ff?>ff?>ff?>ff?>ff?>ff?>ff?>ff??ff??ff??ff??ff??ff??ff?"""?ff?"""?ff?"""?ff?333?ff?333?ff?333?ff?DDD?ff?DDD?ff?DDD?ff?UUU?ff?UUU?ff?UUU?ff?fff?ff?fff?ff?fff?ff?www?ff?www?ff?www?ff?=33?=33?=33?=33?=33?=33?*>33?*>33?*>33?n>33?n>33?n>33?>33?>33?>33?>33?>33?>33?>33?>33?>33??33??33??33??33??33??33?"""?33?"""?33?"""?33?333?33?333?33?333?33?DDD?33?DDD?33?DDD?33?UUU?33?UUU?33?UUU?33?fff?33?fff?33?fff?33?www?33?www?33?www?33?= ?= ?= ?= ?= ?= ?*> ?*> ?*> ?n> ?n> ?n> ?> ?> ?> ?> ?> ?> ?> ?> ?> ?? ?? ?? ?? ?? ?? ?"""? ?"""? ?"""? ?333? ?333? ?333? ?DDD? ?DDD? ?DDD? ?UUU? ?UUU? ?UUU? ?fff? ?fff? ?fff? ?www? ?www? ?www? ?=,?=,?=,?=,?=,?=,?*>,?*>,?*>,?n>,?n>,?n>,?>,?>,?>,?>,?>,?>,?>,?>,?>,??,??,??,??,??,??,?"""?,?"""?,?"""?,?333?,?333?,?333?,?DDD?,?DDD?,?DDD?,?UUU?,?UUU?,?UUU?,?fff?,?fff?,?fff?,?www?,?www?,?www?,?=9?=9?=9?=9?=9?=9?*>9?*>9?*>9?n>9?n>9?n>9?>9?>9?>9?>9?>9?>9?>9?>9?>9??9??9??9??9??9??9?"""?9?"""?9?"""?9?333?9?333?9?333?9?DDD?9?DDD?9?DDD?9?UUU?9?UUU?9?UUU?9?fff?9?fff?9?fff?9?www?9?www?9?www?9?=ffF?=ffF?=ffF?=ffF?=ffF?=ffF?*>ffF?*>ffF?*>ffF?n>ffF?n>ffF?n>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF?>ffF??ffF??ffF??ffF??ffF??ffF??ffF?"""?ffF?"""?ffF?"""?ffF?333?ffF?333?ffF?333?ffF?DDD?ffF?DDD?ffF?DDD?ffF?UUU?ffF?UUU?ffF?UUU?ffF?fff?ffF?fff?ffF?fff?ffF?www?ffF?www?ffF?www?ffF?=33S?=33S?=33S?=33S?=33S?=33S?*>33S?*>33S?*>33S?n>33S?n>33S?n>33S?>33S?>33S?>33S?>33S?>33S?>33S?>33S?>33S?>33S??33S??33S??33S??33S??33S??33S?"""?33S?"""?33S?"""?33S?333?33S?333?33S?333?33S?DDD?33S?DDD?33S?DDD?33S?UUU?33S?UUU?33S?UUU?33S?fff?33S?fff?33S?fff?33S?www?33S?www?33S?www?33S?=`?=`?=`?=`?=`?=`?*>`?*>`?*>`?n>`?n>`?n>`?>`?>`?>`?>`?>`?>`?>`?>`?>`??`??`??`??`??`??`?"""?`?"""?`?"""?`?333?`?333?`?333?`?DDD?`?DDD?`?DDD?`?UUU?`?UUU?`?UUU?`?fff?`?fff?`?fff?`?www?`?www?`?www?`?=l?=l?=l?=l?=l?=l?*>l?*>l?*>l?n>l?n>l?n>l?>l?>l?>l?>l?>l?>l?>l?>l?>l??l??l??l??l??l??l?"""?l?"""?l?"""?l?333?l?333?l?333?l?DDD?l?DDD?l?DDD?l?UUU?l?UUU?l?UUU?l?fff?l?fff?l?fff?l?www?l?www?l?www?l?=y?=y?=y?=y?=y?=y?*>y?*>y?*>y?n>y?n>y?n>y?>y?>y?>y?>y?>y?>y?>y?>y?>y??y??y??y??y??y??y?"""?y?"""?y?"""?y?333?y?333?y?333?y?DDD?y?DDD?y?DDD?y?UUU?y?UUU?y?UUU?y?fff?y?fff?y?fff?y?www?y?www?y?www?y?=L==L==L=@>L=@>L=@>L=>L=>L=>L=>L=>L=>L=?L=?L=?L=0?L=0?L=0?L=P?L=P?L=P?L=p?L=p?L=p?L==>=>=>@>>@>>@>>>>>>>>>>>>>>?>?>?>0?>0?>0?>P?>P?>P?>p?>p?>p?>=>=>=>@>>@>>@>>>>>>>>>>>>>>?>?>?>0?>0?>0?>P?>P?>P?>p?>p?>p?>=33>=33>=33>@>33>@>33>@>33>>33>>33>>33>>33>>33>>33>?33>?33>?33>0?33>0?33>0?33>P?33>P?33>P?33>p?33>p?33>p?33>=ff>=ff>=ff>@>ff>@>ff>@>ff>>ff>>ff>>ff>>ff>>ff>>ff>?ff>?ff>?ff>0?ff>0?ff>0?ff>P?ff>P?ff>P?ff>p?ff>p?ff>p?ff>= ?= ?= ?@> ?@> ?@> ?> ?> ?> ?> ?> ?> ?? ?? ?? ?0? ?0? ?0? ?P? ?P? ?P? ?p? ?p? ?p? ?=ff&?=ff&?=ff&?@>ff&?@>ff&?@>ff&?>ff&?>ff&?>ff&?>ff&?>ff&?>ff&??ff&??ff&??ff&?0?ff&?0?ff&?0?ff&?P?ff&?P?ff&?P?ff&?p?ff&?p?ff&?p?ff&?=@?=@?=@?@>@?@>@?@>@?>@?>@?>@?>@?>@?>@??@??@??@?0?@?0?@?0?@?P?@?P?@?P?@?p?@?p?@?p?@?=Y?=Y?=Y?@>Y?@>Y?@>Y?>Y?>Y?>Y?>Y?>Y?>Y??Y??Y??Y?0?Y?0?Y?0?Y?P?Y?P?Y?P?Y?p?Y?p?Y?p?Y?=33s?=33s?=33s?@>33s?@>33s?@>33s?>33s?>33s?>33s?>33s?>33s?>33s??33s??33s??33s?0?33s?0?33s?0?33s?P?33s?P?33s?P?33s?p?33s?p?33s?p?33s?>=>=>=>=>=>= ?= ?= ?=`?=`?=`?=>>>>>>>>>>>> ?> ?> ?>`?>`?>`?>>?>?>?>?>?>? ?? ?? ??`??`??`??>333?>333?>333?>333?>333?>333? ?333? ?333? ?333?`?333?`?333?`?333?>fff?>fff?>fff?>fff?>fff?>fff? ?fff? ?fff? ?fff?`?fff?`?fff?`?fff?L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=L====>ff=>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>>L>>>?>*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?*??L??n?333?,KvؾKd= _I>>, >y>>X=.>&>%=>_?;ju9F+=@=Zݦ=U}3=rT;0>=u[H>ܚ=,3=#=I={3>2/7A =u=P<\<{<=aVVۼEl$.i?L?HҾq)H!4=p?k>u׽ PZx}߭ԽyF{c,t=4=b#)N# B HػI޽(<<<<<\<< = F= VżAU8+ \;D+<`,d<^<=[>(d=>i~??>K%?>>[h8 #3qZ=1 +v6>:dR9 +B=޿>( 808Mx8Z8P8+8_88M8w989C8L8V988c8:8J.88T8@4888"88쨼z>v=oq#>!>1;>=> =Fwe/k7D4%UB>4>o>^6>>c>ܛ.>K>̤>9*!3->~D=􅥾 >L=::S>=1ѕ9=Dq|A[,>/-徽dž=\ 3==>UgG0>f(I$>?$=K>(B=>w7=p>蝾=|A,>;PZ=]kV89L7a8 r8 ~8X8CE8jp==}^=f= f=#P==l=c=Ki ־/Y=|>U}">&R>eUѾFnh">ƊQ>?$H{%H=|̼ƽ6J=LJN D>ЬOa<>??+>&2,?$?B <:z7p>k.59˱?N?& +>#?>%>>`5Zh> >݌:?< ivK=@ +@?!2r G+-;;s[yy1@Fv@Z\2>de@5fmyb@^?+rJ>9X>܎>m>xJ>\ L_=x`K=?|{37ܻStzC8 $9.6}&|R®pþ*@v4PUn徜 ؖyY?j5Q?/_\S +O>ݿ$MX~pݿ i07Y@h2?=-vꤹ ԢkB9 +/~*n[88䒹C!7Zy7>H8u7S(_6?~\7f7K4=>r@ao?t +L?2/B>ZM*j(WDI? +c=&7@>D -=p=q?@DZ~A<89T7۵8[8]T519NK?F?A>.Z<~>?&gZ>޲>V),>Xٹ_NUq>K?t6=G)<8>=vJqa??՜!<#:j: $2a<4!=/꺆g8M>=92l;QHin ;Y7y+ޏU\YC,˳@':K9=b=޼i^Gh JM<;׾9JW+=+*"<9V==F><V&Hᾣ/>ҽEg=G$=`֧>}J2D:zbJ>-~m8 @=>оoL:O?usq/z :2mu=6gps6h{پB>cͽC9xH"L 8KYBM9pѐ9^h>f=?nBH=3Oľ9¸>j⿾򎸩aFu"AG8a$cof=/j>J漙gW>TC3|ؽ 򱽡9'RQ!?U @1>B9 y:I=S(??y9=C|>0 ?9=z]8I4dFm|>A'9>u$f9vU+={>PA{N;0:=,_= =K]=\9}!=޹W8p=С8)]xV>)Bd Ͽ8QQaL?MHb@y>{y8;ѭ9oQϽm˸*𴅹:T/>) >Mָ=7eb:R񚽙$Ɂ:gk:ù]e)9|>$]KY=946V>h]¹v.tہ 9e|e7 g:贓9Չ9 bz=G0Fn]>y)?6i9I=|p9&g;m>55;Xe:/O?\1R?~B}>ɶ=0#:K:*~9=)98:n=M4;NA=?:K>(DQ.̳>J#<<I߾,WZ>8j9#(L n :Ir9e95c75l9B':84Q9iӤ +7^9v9:'--<5='bY<8#_>8HHs_9J +<%2EkIKj=e)=N <]A鲚l}~=}8=D.? 5'\:j?*.>-2?No<佄ļY)G:pZ ==1:ܳ<˖:{8MJ>1|I_x +;Ď= >%>o4=YCgr\><=8zpm;չɸ>E +?C9s͍'?Ma <9=]ϼ{i9 ']8>mS<=?>.I?﫹A^(<=M>,39#o= +mY`=n) ɹ&>Z7UM*!79U=y9et9r &="^>G +=9mm*|!9˻=("7Gὗz6|9?> yK-м.N=˧mǸ)>ٹ +KN8=\ZbRR8D?=!ƭ?&W?d??v>&>>C=Ha?|?PR?CyjgC? +M$>v?q޿:48?? 6?|޾5图h/ >d1=LV>t>jͽ[¿W> f?N׿Dr?>>B>K>?2:> k>>=B$Ol6X4>ka=IOU>w?K>*`=vM3>Ā>=nyM>e>m>j>.T>?=&5>ң=(>TmUqĽi <8׽>S??2>\>(~>RA=j:??0Ne?}]Ȍq)G=>c>A="G>F%?>Z!'G"|4խu=n>c>>S> +>>V>Atݒؾ(dE. %|.AXtAkﺾx%LGӾu1.K'c΀ +87a;ุ*V7l79PӸe$5?ö?$?*EL@)>B>)Ǡ{ԏY'I( Ƥ3jA>>>>>f?"?N=R6>>*g +t˾r#O.oL*?J?+?Ĉ?~+?KUC?"?Ņ> f>ʞ?}?D>n>1>$=(ֿ5'-=6>v>y>G>?:>W==O=JW>ݶ>L>`]>Qn>=9=8"=>ѰϿ\5?AԻ?!|?4;@?J=W;܅?9?_=d_?Wׯ?>>Ԧ?oS??<=ƾ|>?0C?#URu=@&?'=?|? <;lL>;k~=i6{|? ;=3=7:]m=t #ƈ=kOP;3ƽ>m4-ɓ: >I==y>٣>層xp<q<@K&>`;!<=h{L><9?]9CWhZϻVG>}>?7>d} +8=%P7 B&>4j=`=+8>/=%=r=K}0=1~= uN} =pQ>]>KĻ{`U=Ӱ@r>g>hs2ƻ9=w)84P>_;=/*=a7=G H>aMM=A>ȭ:>=6 >fi>c@"=,>Y7=l{Pdg=5z`Ec%>L>ϼ~(=;eG>CPȭ=OQ<ќU}p)z=>m̾`87+ѻ;z{Z_p=ԼFν<y=A;iHV<=ްș=f=W`u=|?!;mZ=;оcV9 _=Rq>* DG<;[1=]7=]~5^zt(q_;v=JR>wfj==7⽹]#HU%<[۾ZA I`Wu>Iܓ=B*}q@k<>%a>>=ٽޟ6Ux,eRĨ䯾 +=G=JS kdd<8 3\Y#>lĨ<*{ts=u$.]l<>Oq璽r/ij^>ޕW9Ѥo;!=ԙ=\*ubu-ѽhֽ =|\3Rk>\ƽթLI> %ō=<8Ĭ+:a+ͼXV7OT`S=E5.<ɋ۽ʾ˖^= 6>]}LB =h䬽&ӽz;'xO2`="b>5#V |=z>J={jO>R;>i.:c=y:>Rt8=:aC<<|%Y=ま4%4>+0=X=ν ?ASSپ"r"=`M;T0>ս=+1J$pؼy=s=1g`9=-#G<=:Z>eLp= {=oT °=͙=A<=9=8=vE1>-#)?̌>JY=m/N҈;URL9=qE<ԀO=Mb'9Blgcrk2$3Nh=+=<=) ȼJ8I{<+E>LN=Ԅ'<,=$8:zBsc Ƽ=S/Ͻ>UԼq#=,ez!<#Ƽ핽'>C<</٫V=qֱ=RFe<<B;)/=u=1>d{ t7=> :u$><;R<~k /d5K_=kL(>U>=i;IV%<2Ma1K>38٪^}ACq>]&a7ƽ6qTT`[j2=:Jq>=/>).Bˮ=V>sDѽYH=I-rcl<>娸+>|>">!i;R(=2N>`>c1 =T`O3>=$:V>Ӏ=%9{>ĪV <=>B2s< d>C>/NQ;Ckʇ\j>q[>>C:/%EP< <U[<}[>}=5=Ml=M=L>j /8><_)> =Ž #T; &F>->E=a';AּN{ k=Q[a>Cbw<'+Hhb=5;$ 6wͼ  8>Ⱥ==I ޽<a>p=>E>'>Hb=@'=">fX;<ռ$*=)=m[>=UŸe`>ճ<3=C?<>ά>-7e=Wս;>Oa=KD=@>x.=ƽ!=b >U>\E[w>>}i=);lRk=>y<ּuY=֑=ݽwz<c-[<;.R=(R8E=TA>+E~f"f!7:L=;R| >md> ?= w>bR&>7K=&>`>R=qȾuv#ؽ^;CS<= +s<ڔ#o>& +*=x; ]=?s <O؉:O=[+,R=A|TnNE6>kGb=Ee=o7^# =.ja.biu/>>ʝXc#=/kV=e=~->λVR =ѽLRz=POr<Ͻ`).=f=D&2YR +=<=cRG8pb5=H"8R<'];oa/=:=fvI -[K=nEOY9/~ 0 I +=<^_H<:3>7=2kj5T2̡{޽t==*E*;<<= + +']:+킽V> ǽ{Υ>>nM^>mx>7ZE +L<䉹ż~?=u<=a ?Y >lO>|=k4xO0?Qb==/<+T>i䫽P>[<=j]}A=Lo;$ӽu(>=c=()b/5>kX=3=Czmw ێ=9> ˾#p?Dܲ?T?(pd?=?~ +>/?pl?ey>Ħ +?j> Z?۾?M?pc/=`>:?t>.?U?( 6=Y>1>9> j3G@`Q׿"t?>eӕ?=e9<ESC#nvBx8>ʶ06>e>$᾵s>?[<V|?[>4*Ax;.d>;?)>i>>ݽ~ >a=>ا?Ԕ_=?G?t*>NJ?n1ɿC=(_?=s>N>?&>s"U?!]2?虼۾>.p?3=Řſ 3H?7>q(̊?O? F> +l[%!=PQ=M=qEn>3uB>rc?w?zsQ=w>2>x>2 @ľ +.gP(]??'Uҿ? >+?>^S\?G[p?K[4>NM5? +?GV?I8VY_;B??Q\L ?J>MtǾg}+žƽf.82Fπ @s@⓳>q[Y>潯LQq5?m<8>;W)?^Za0?w߾=>#=={23IC<ɽ=Gg­=X?nV>̻(?VY6;=C>^n0?v}̾讃?\)kD^ᑿc?A$?56?Uվ NF6ɾwE>`ʧ

~@0\> >j>j_߾| +?/ՠP>AʷqU )?_=8D?Yu=>ۋ?C5>x='?k?DE>?瑿>1n+&- ">4 L@ʼ>[*p?Q>햭?͡~>"۾#>[h?=D?``V>3>?>P)?lľ>?8j߽W>pD< =~h>? v?=~>rwi=w?g? p[;~>_>0H;R:[> > =6 +>Bƽicbjխ׍oiX$>fE>pUþYԼᮼG&=j^<2>PS@<;1=8=R>?k=$Q=º+>Yk<ʼC]^vͼטd=$٭9<=%e,>T.`N >*=!F>5N{A:>WZ>;=+9dv4-T=[=>1b,8=ս +w:2O=%k~=v=uȡ== =\~a<»ϵ=5tp< '_e>#Y $;E[=(>=>a]=D>r,<+=湉u=N==SM=P3<=ian Q?=,_;Ln[>־\<8p˽n\<*N <= +`5:3> >K>b1e >kϾ밨eU4هT~=@8e\=U8k8f |q_\57hPY8B#"88\^ٸ /8-pK08&E$&8 Afȷ 2>R<-<|ೂ>O<=KM=Y^'k=x;*l=*WP>t>>(?=ޕ=&=-,OO1=b>"h]>aj\>Ǟbv/ ){81r=_> J>=> >YN޼y8=H=)Խ8* }ýn>j>GXs<$ڂS>dy>3>=+n>쭽K9F=:X*>=피f>ơż>`=r1=>=Խ=ɘx<eiEAK>:= /"ETHh>!NK>lȼʙr>;LQ_o>rq>Ǡ>Oa=KWS9l|`kE]FD?T=>U.=PH]>B===+>: N34Ka>h9=M=o>KGXN>Uci8o >=e==ʀ>w&?>V><⼻Z<; K:1OR>orS.=_c&>4,=Ek;> ټtɻV=>5뻚l>4=ЬZ>`ht1V4Ͻ-f=6ɼU)~Q>;=,Y x>Mx>N<=c<"{XK=O=]=B< >F޼)H==s=$0V i[=x =;U#>ι>_7m(>ڭ1Hv=*,lVVzػc==>Xjw֜>'R=)D>I +xo4>wK>ԕϻ œ~Z>Γ=>q޼P>=T07=Pͽ|n:f0d3ků=;Ql2𼖒ӼYX-^e?u=|PG=6H[O=F;; >vB;],>x׃> >]=x=ώB=ŴӽI/Ĕ>=}kb*ڽ +b>w%= %킾<>#żm=)R=k=>w=Α=Dž;2=}=#<==뚆=V7i=z9W% _ >Cb=A'ʢ>A[ݽ&wA;q'rLiq=GjʽA>-D>nɽN{!_.ꇜY$>Q=NŽ1ӽ.n>|?>I==k|>.=YehoB.#M=P4=">=v=l>4)3Ѽѽ6)M*y1"5e潂JP=ϟ=hP>=$qF#>5͇>C=#׽$!> ;;.* |/E)QMn=d;6=s=*>Q=D3|;g >< 62=ʽz= B=>g>g1.=S<{,= Xc=5|>]6><=!?Ƚ]w=쀽5x>^"ȽEB=ּk0Έ%<7?I=SLsOsf=R&= >=ŧҽ +[>Z[=&=y;=?=zT"^##{;l=Q2s)ý׺|b=C+4sۆ{=?)#e"#j<1DF=U޼#?p<}򖼈<\zL==@>nwO\=T"X< =sYE#=>ݳ=Jy3(jbxD1ȪTYbҊ.^>ھ=[;+>BCZJL`p+>d@631=j u>@=ޕ#>c04=h]w<6 D> Q%9<KZQ===2=Z ><@!Lӛ*12>=!G'>%=ӂ5ԽA=ܵG>7L.{OP [= +=>vɼtH89ElzxZ>:>r*=1=](DQɪ>RIU y=t%_Խ&<-4J=P--'(@ic=ZSwЯL5=D=N=0G>Qk5f (=Ü>bq=z;C͆<+={=꽽Vҽ==[$@әL>O>K>:W <>,>e>o=!+<2z.>PxE=,=&V$=a>t=RsBh>T=>i=nn`=Ws==β=⼈9>x>\F>I=;nb<-=ji==d>؁6=mH>ʪ>!>/> +=?-m=jk<>T輱.D>H +=e\9D*ͽ +s>vBh>ݽ<6b>oQ+>t7LS<>CҼWTkd4 ^S&>>V'v;|>̻`:׾zۻEνPxrEF=af 崽HbS!R8u劸C7*&w(7wJ87u7;c2e88P7!8iC9M8x$/8838]86ı8676r7 6Su7Ƕ8>N=J=,0>Vgmu=yyN=!żM=5\h{-Ap> ƽ=`3ɋtQ <=>89<ת!sME1~m +?&>=Ey=C}?=Z Od>[7"= [n<~> &=@v3=dh;WSGb'>ŵ=G`=RZ%>û;>E>%7>:=L؜$ p=f~k6<@/>KSDs. lV=7I3;hA>8VY!10TG=>۠2>v >*:`?U/ ˽/==3ڽQ@<|t@=e@(m;;=ۍ^a>J*>1="EptѽҪw;E>=>]&/Bp: >=4bj6>6O>>5=oA>A:'ź>yK=629/>^)'>ƽV>h0`;Y0>MJ 3Iℽ?Z(+r=QcΓdX}χ*^7%.>T>[\#do>s>$<<}TytJ :}-u}@HX󑹽ռ݇9 L3=r)>Ș=W(>6sн+>l=Ƀ=LW6G}?S}: +;Sܽ)J>ݠ=q7>Z >xWB:潮}' +v=+؍=y#dؑ=bs̽D u7 E~.4=$@= ?\uN56H> \Qgҹ>S>YfQhGH> ycl=4X`XIЯ0>{Ϟ&h$˽Y'Y+!뽊)<]K/pq/Th7L<$}L=yoȅ=v>]h;>/Z>>AgX-^i颾=I>L>o1{½Z >S:}>>keW:m>q<)oRIV;{&>죻˟l> +>><>`>$+M9wG>B ya=D=JZ1=s8 @>s>#>6$>7=K* >2\1孽dڽѳ<ڽ +z=?rAC(->k-]'>XJoyb.3!;=s"tOf>Oa=D+h=CB=$>g6=N=ʿڽYv<#=Vx!>F +Ƚ}x>?->I{!>Ҽ>/>i+>o) x%ӽzlfj>1OEf<3>=2=K>r9:b(=aҽQӚڼ6kH< { %'f>(> Z:К:<5y<8a=ֆ<>S<䲨+R>Xl];J,J=νɒw}=Iώ``<8=>V=f>ı\HE=ʱ >$Լu=]'=O=N_z=C`=Wp>f㚼ڻ>=3<Jv>BaM=ӧ=2 ><;=Ћ9Y<9<h=j=ޡc=Mqq$>J&*;)(׽$2>k<bS=4-D>;A>`>"}ɾzh> <}=_T}ڳB +L4roƽ7i;=%0MS\E>_&=ij9->Zj=J#G;="7=jҽj>`gJh>E>#%=.=K_=ⰽM=˷2>ʐ> \cM0=STX>b+wvL>>T=3HQ;MvFyr<Ϋ<ڹ=.Q>w=`>=z=u=GO>{OE=>9=,=Z: +#˽6` =pH'.sm>1=nn=@Ʃg(Y>wW=||=?s%=ΰ=7#=Wn-= =F>'>'upe+M&>PNw> jf=;B*={56="Z<4ʔ>TdX0Z廡:+w=8er7=>X= m>xe1 +><=ؽd>Hf<ʽ2<|R! Dg+WT.>2 >=싼WQ> ;:~>,>k*>G >tMd`а:=AACI>RY>|սu`3=e>EH=;z= <*gy=q=Tz=̄Yk0c +=5ڄ=8pF>,8=kUi> 8>WIX=-h;U=$br;c"JD>A=̽\v>@Д7jx }=L=*R>䷳<<X^D +?21 h>؆mM>kg3?j= c=Z>np== =P>+f=m>i>i +-ɻR===﨨`H?=Sջ>WT <3R 7о` +V>v$v>a's8:,j=[h>5~>`N=LQQ?c??.>>n> =Ed苃D>DP=<>YGͽk?>}ZܾrdBx[>U1] ?X0(p-`D>zs>H?ڽ(y>6%>qAeosUcx=O(={~n݀o<½F~mKMq[7+ȾB_3;B7kM*z>{]>=|\:=7%>?> ޽pfAh>Mw?>},-<>>s*uվ=U=t|>$׾J%/=>6>=XH͍e>QG?S?P>}{ m>?X>;w 7$,=<>SPOgg^VH`=5% rU15<>ä;D[]\K,81Ⱦj߻Gv7trLɪlk_6WV) (:="8桾gb>;둩=n&='xl^> >/k>B=> ?ǣ><> ?^^;'k>#j>>]a?> p4=0=?**?zi>'=R56但>›>5/v<߾(_ٟν8\.?f5(?׿>x<[w> ?,?l&>[=&4Hq{>$=B :JkȽiF\h˩d{ wE1'8kٽ Uy`D۾ +0:UMx!h"$I۽ <$;\=zV2V`}$hYMȾ>罾н"J32׾6oGhݽ-u=i>I3a%žג>3s>Q$,BR3,?I?֌ + ؾ=>9[P?1 >IYq 8>?#>LOf=k=9f۾Q?>D>3=((#i>Ԥ>@>jʾ>Em>Yr>`| Y> >:Z*('}*b, ݼ:Z 9˩6*G)1VNܕ&r7ҾD=U౽zy>U.Q>LJ>QPݖFj>Ӟ>?zf gЈb>0?4>v]̩-\=s=S=s=ϻSI;g>O +?~[> Ѽ=6j>jS??=G^r]=;>jh>{;I%Bf=ձj>>>F=o= ?1?/h>A2??{>k*=>p>}=^6\?߾t f>>{> g>ɢS???OJ>S6??y?*l>T?X9( =vKW`?vlb=DqZ +nN#>~q@S\?k J;/]s?ʘr>DȽId>],BDeY>_D>S>ASJ>??Ͻb7`>>C:Mwv!½,-)>>`=>|?C>ԾZ>u}>cҾ:>. 4>+>Ԫ8䝾Onh=澿2ZvC)Ma@6)66EE>ȡԾ=GiL=rF w8H3ڽ ξi݊s1o"C/;N?><ԇ2>`>C?-?co>r=$O=E;'7szpx>Roǽ~[D%{}8qI;p)8"MFQa1 [>󸼜:`> =e=S>?g>= ۽>L?w2>=d=l_Kh>Fƒ=wn;<⽾EMžDЮdȎ=v2\>\y=\5=Ċ=N::O>:2E>8>"E d_"x+>! QpL|xH+l漥 +Ӗ>nD?2A? ,>Q=h?~?ym?S:=}=n>(x?X>F T}aP"џdwM>|k;86 >o>uB8?~?=>Y>4LJ>G>EW>͈=ZhνZ9Q. =^/YE,=Pt;s=y~eִ?yL8\ݾnY8"blDrPm=y=һCʭ=i=>6=?>=+r>qn>`>y>6g=8!>b>=n>=F,߼dr=*s<<11=jNn*} =vq=ْ`xs`3,n}#غo.LlmҾO>'ƽpԽCa-aNZ1'svVz|f4=?u@?hcȆn>v?y@r?N}( 9&9Zl9B9g999 9vՓ9W9b>9[m<{ ?>kR(>5M>h>t=۾Y}=B?d>нQ}>;>ރ[=7 >;[>FIךy?#?9?Dtr>᎐>^*??i9?Y>@<ۙ>#?\>ǔ=P91`]QTڽ=W>h>f$8{OK>4>ؐ4!>0"p=/?A!>YHァi9P~U齊<1=>҅>e=dDλ (Ƭɾ\egΥb=| )׺IAO:=뉽+<> +A"=Z??\>uA=\Z=fi3>&>=ݥF}ac{>^?pE?Do=jξ9?m?,>>)<=emb=>$Zw=b'%>V%>U>>1V<ך8>W*>/?r?Ȫ=H=>>7>r T?I?Q@y?[?\*@(@e?>'@H]?LDc<ȿϿ*a,6Ю>+H=#b>[JQ>r~ l8=etg>>>H7>üyf>9=/>t?> >> s2>._?>"ǯ>í=g;/L5H=3><m";ˉ`>8O=u>jbIU6>{,==ɾFŽb8\QGժDzVoJDL + =,IV󼉨ҽl\6=պ<.>_>~("?|:L?l?8>[ |?=HJ>,???6k +>*?o?=h=Y ftW-(0XKct ^==À=k>ci!>=">n-!>>=!? >&#M2Ty<>>>&54>&F>U>>;OiەI>H^T>w%?3>2KpN>V)#W=/_>%?0羭w>ja?󳾰Bdw=>E$Ev%0{Bsםս*Tt/ gfbG+=|ս'ʽz%>>5z=4r>5S>p?9?>v== g>u)?8?]A>ą>֌e>0?ӽX{!k=<q`= <=b=Gh{,q>q0>j1=->wS?>y˰!B).A=ʆ?L?ld=A7<E<> =`??;<;t=i>=%x:>^$/ۉ_&cl>">%U=ׂyd:X== >6>4?/K4?[>j=q>.K"? +?q>= +>/>!Si{/ZQz0=(þ>d>a8% ?AB>?L*r?1 ?x-=6 +&Q><5>aw=0Tw= >>>E̼4=>>G"=lA+>>A5h>|=%W>uu>QFK> +8> >lp_U޽N;JݔQ!F.=I=,3>@=ǎeº>9?>v>e=%?.|F?m>?>OL>j ?yE,̾=/?X>Sp5k;i޹>&3C>|J?pD?7C D!Q\?*>O>&K>i=EϽߗ).e =od} {r'k@\JH`=4>>mLc=>?ٿ>Š*,>*>S>yblؼU>? нOPyD{>i,SHV=<==>=K<8&X=+_/e/;t޾Թ?cx©0ξ9!iᄈ]ИUCxY=8 Ľy4!=q$ \s<i z(~ž>>m$߈?n %?>; +W;y*?>$&]voB>=kXH?UN"=EP0䉾*噽2,훾"ξ-rȾ0 Mm(b0]jҿ#T D=$:!h=~=> ?B>d>ns> >1?><>d=>u>{~ > ϽҵpQSܽZśd]x 9d?+?-R@|X?W9oz?xjP_O5?>m?1v==ff?&=(5"eb=*=+N>5?|> +?\0=[n?`$=2 >n?_ýnS\?r>}B:𪘼e>9S?(Q<:>ɽDM>8Ǽ=|D5>,,=\˾_>?v?2Fb>Z6?5_>Cg<8;!'>E>l=gwa<=7)e_=>=ǽ7>(9ԅ>;;ک>=k=>[K2] uZ5>b>cki>@C82=e=ئ<)<">!$E0˖<=0O>irjƒ2<5= (7W=-Z=NwOC%G0@>->mr>S=l䡽>{޾¯̾"9h!F>>^9>ҼR +6D>i?;Ľ8 >>>-q9F\=m,0Me>`ڽ?=C&ga\^^D=K.'XR.Xi5= LuʽZ=yWPC>\?= F:=Ō>W%޽a(>fhzWA+= Q=]7S= ߼zӹ=[$;+;8A:VGP$">'qD0=V0k=c>YA=> +9 ǎ;I؁=0VI=gd6>Sy>k罃z<Z>_>ʚu^=φm>1=E>OHܹ> +M=PľDU">H)s>W뻓( >?>͹s>R<H=O> }Y;3x>0=L^4><|p=<8a< = )Nԝl>/=U0X>C &ː8b =qOphMߪ=9j>CC2=9H=q>t>0XTn>T<"=I=;=AII=.=ڼ 5=7ӽI=LW>ݔ>ӼW><}=V M+ >|齽q(X6~!;,gJ{a6<47 >QcR~Gm>LBT*Y:M=:yVH[{ =:>)Q;ν':(Y#4CNlO>N =j牾!=cŻv>= Ĉ=M%l=EwOT=(;yԽ"LvUg=s<õ= ?/=5=i,?serhU=TI:=LȲS=i?x|<<^,*&Z(#<~OOMq1 =Z=JښFv;-^ >~>98[ U::B>R?';<=Cn4a3vHʼnV>&a}߽ZzϽ襾812=TpQ=7GH8G1'>2y +K"/>罳=?kK>b!mھ󬀾ԁf+@$-Y>2%@ENS`9+>A=)dy, +icB*W@>F<>TV`t6=ǐ=C*u=Gy>Ҫֻ$=%U +9==5Ww;C=>=ɸp=m +@==Gǽ'1E >½~< +=O > ,{~^>Bw 0=h<< z,=9[P>.G>}=>=A58x=Vs>=ϼ=2lӻ +ܽ=8=ey>ρǽ5*v>Y=Pi-w{L7 +>=;:C7=`v =b\c=P<5# =7:j:oK< Һ:;4k0С)&@.^r󆽔q- [=Mt>M?v=v+jshMg=<'6ڦ<"%>)*Q>u:"'VԶs|?8H罃r=O$T9>bO<^1@oպ<\rRkm=< =AZ1o{>}L==5nJ=$¼Z吽1'=<=u.J>AR>z@ Z< +4>%=j=xUn=z=Sm>?QػEμ (=>֜ s<ŌvTaQD拾5:A]P 7=zﹸ:ƽ3

kƏ=o@$7>Zcʋ=A)5<5E{Xfҽ,>v>Ɯ;6\< |c_>zb<Ҫ=<ĥ=I!;_=\]u1ĽbB bZ=DDq=|o>;D1>ɋV=)O𹾩>z<>C=1`Y=q𗼈Fr=c=BdpÞԽ*=˹=C;0>2|6CŲ( zeIz +Ys|nz=xqY>E1gdJAQ5:->4?G>'Y c!M=4or͋Kr2=3(=}瓽%~;gv*Vq=+v=?R:zG5U0rL`= f2,SmQ-3="oG=eH&Ҥ3.$]ʽ5ߔ ;=j_*=N>n t1f$<== >/sZ=>?|,T&8>0T̿=!)4=1ð|5F +`qϜln4<=g|>/ݺQ4==3h<3[=#CF4=8ɽEn<_/{E̼~->>.J=zm_ Y; E+o><'yV=]=8aM- mH=FwP>1C˹P&s<ܼ>=y޽YQ=(=0>Jyv=Tҽļy(p= ҋ>0>aE=?^=1-=ﳰzyL>t >=](Y*1>j~]LZJ޾";d' S>Ѿc>:?}a>nZ+ |%>9gKwW>?2/4>Z=o)<+ >=>ʘs>u!t=̖Y +o=< aN=T >wO-:%v=!aԽZA>W>޾*@ <-TlWD">ܕ>oj4> E=7&; [;K>`ܽ䄹=J~j>pU=>zU! +6<$g.=JԀ>U^=">^(A F=>bN6>?e>6=7k p  >SĽ7cLvb9\}Ľ>b>)ӷ33=BÊ=֦p=D>"<~мp[[>ȗI>l=A=>=nͭ1fZ=y`&>-=K=B4p.=j=-4i">A\ +>2Z;Sn54.eZ=(j_I=f8:==oY>\. =ngv퓽0X+;%ē>-=NL/Y:Y;`#A5=<*=7aw&Νb߽J% Ae>̺p)Լ6ѽ N2nD,˾&='M<ҏ]b<#4YOh3mw>j> ;/`& +a|=UAU=,C '#sC= m8:y[1=ʼ;aۼcWUNX;A=稽]/Uu1=V $=*<]"<Ҏ4uk7LE>"['f=0ņ=WHJ+Z6Sf7=jH'Ƚ%ٻ39ڻk =t䉽_ >/qÎ=b,==+Ծ92S9`l= ph;!/=z 5>=۪=+rJ5YKg&kGGE>>:yC /X$+u/<>N9|6QwK>8ݞJi}JS>&$|<T= d<=e>soke>7콎 [=0=5t^֮8b2>o`>iPQ>KΒ:mHs>.O I; +J> ==7Q8J >ل XPR>JK*>",="<̎s=7TR<>~7dܽCŽ/~+>FC=ABa>mx<*<=#fOv=*}x;8dт!9)7HR4'Q߽'D=U_do4N >. e~c>r>U!!~"mؒӾXAd@ k=U ==pi"6>#LX}̅=qK~=qoڍ/==~s=ђ^9VK2>@}<, p= =Æ>!=ޠ9!3=> (tE<D`R0X w9ɼ::S;ֽ=0l|iu">Y: 㲣4z>L=m'R=7Xoq +>UF=$=Յ)=0c=[d@E>M>=)>=N:GD=ҧ=@H= =Ť׬==I=[TѬ|ƔHt>U+ =ԵU;M줱d*g[`>Pt=>{;XUDI>2=@>D_,0Hv>FK<5xL>("8>HoW>0샽/ll7=S<ʻ. +=佦est>=Y9>L;<=ذv @RvY˽:э>B˽bV8<==;&`=i>,=b=I;b {ν!%0 ->^='P)>ޕiV&<þ΄==KA=>43'>Jz_G<$8o9۲=p@=7 g>^;>f(S@=Vl"&5=h8I\?=>N>:2=8]=`M>=p8=j ƙ=<4>VU~I ]S<=lN<d=r>SjhZ +< >0<"v-/5Le=*<>Vibx=׍8>F ~ +N=|%{;9eo=;9d8S=;LS==a= =w Y=>;K{==|yrq= =q=({>w4_c=^E@蹯:e=j@+>q;؅><30=><PS=FE>nX., =sه >Jټ̪=B>{D=ݝxˡ=l>̽]`=3F3>;d=iU3׽qB`Kf>P="v^꽄L;I[\ɽ W>-=./;Ľ1Q>)y>)0$$ި"->^jh;3>B8!5v<3i;<>nq!<^S>(92<(:(~!wCa=R%: ΀s=t2+>[>XP>Cz=>=&7<%9<Ѱ; }> S-뼆X߽;;H;_=5O<~=ڥjڽߗӼ=E'='37;ؽ=Ҽ>x-~=Gsi?=+Puۣ;> ==8}=Fr:Ujr>ǟ4=\I>y=g;3ٽ<>on= Q>$n]i-1+y c-5Fҿ)<D=hf~=x=޵+=d罓]zݽ9+wI!>C=(u=\`<虾E5S>}:=&->=B">h-=)>z*׽_=Pp=<=qn#>=>0\=-=ﰼ;! ;5T>8,˽HOzo>X2>Ô->l(G=({T?> KQ/?M?k ?hf?>j?lh< ?\[?B=/?BǾK5?/5?+7%?^=P?oὌ3a>%>.PUZ?|8;>xp=۔ #I K4=~&= +>~E<6&1C >6\<ߛFU h>Ti;3_[[۾Q_?>>ãg=pbC>'.>dL0+5#̻=g8?/낼L=j>Cjp<'ĉ==<=]s>z=ً=G==>(xD<#d4 /#"=~BI[HBݽR[/l=<>#X=dv=>_?>0>4սH +=QF2?uǽ=Tڽ]O>TR?]>;b(>:RyҚ>?= 0>W=G=uav<=Z@>=>F*{=-|>5=9ھ"Rg_fԴaYJ%V=3d>]z?J >i<=0M>!>8P>Ȗ-ZOȾ Ą<3=hm>E=o,= n=,&3?HϞԽxD[9c>P"߼uPSޙ-ʚrn4_]> L?܀>_U?5X:bD>:A>*1>w=3=!꠽u?=G$A6d?;@=":YL*'2+ +>m<N s=Ңvr>>%>=ϼ=[>2?M@>㌓>GreERӼ/=)H=2?ZϽ큒> FLc>r0>WcD>[==f=! $uQY=%>^bоAټ;з o>e>7 ;\-=mKվF>,>=====Hى~|="=oI=L=Ig; >=w>#脾>G>=?%=$g=93>sڷ?Rm O >˷==~л91!<8d= 0 >?EN.?.A=!L=[5>>1m>>77<2[>4B>+>=RT=1===" J><](J<р9&%=:W>^#>TIvk!>7>xn]>?1>jl>srX8=?_s=`=Jm=8=ˊ,q>v"q>???+!>9#v= ^g^PB?Ja~i?p=Pd$)T< ?>3e>l>*fKD總˜a>uJ>F+>wlqѽ/Ea>a`^,ٕז=K׋!?LMRɗ=|l.PO?l +u=z=1[? b߽M%=uO>C>N$>w<= >4e>$ pLIL;}: zN }=<=,>~‚>|?=k2 $>+4NP?hv {<3=>ݓ?9\>=*t==>y=42V;&=*U=yO=[=>>J=2x>=k=.Xg>1>?P>!QJ=}?>)F>>f>F>i>=(G>c>~=;8W>u%ʄbϾ8i>-h>;d; +U>FD޼>>f>5@?>݋B>b> +,T=E7>o\z~_.j=o"Ǿi6!p.=+M=d۾bxJ'=m>7?>y4<<>&= =}b^;Ҏ=7/=3p=0"c5>Sy>>+6 g,}8=N:=M< cSP>d%7>`#A> ?\>:?=>>E>JO!)Ľ>=>] "O>w?<ktV +>޹H>%1=Jp>p1t>c>4J>[ESŮnՍ߽-%=fbO>"<>\[j< 鐽b>>]½|1.5>[>uؽ=>>C<\Fh>=9>>c~?> ;=tl<'=>eT=?<8i>B^P>ν1y=F>T׽=½wF>À>,0={4=|^=ڛ>GW>c>=j o>1l>uh>;=D=Y=2m<|`V= ? =I>0>r>T+ +C->ͽ;zPڽ@2=d;G律|[ھ x;o)=k ?k~v)=]Ӄ 8[ =ŵ<ĔA弰=6Kڽ?T?l>,^>Ó6}>lӇ=ӡS>0|>[C>3g_<6A>TK0= +v?㘌? +>n(Yv?=f>b=gξ6n=JRz?\̑QU +)@;E̽'4?d})"?ClaH,> .?r}>`cP>#.=B0 z?o>,D=3yVL>־=LZ=^3r'V*|>>oUŽs=: 6cE=DPƻTս>N.=;]i-<=Dž L=轧B>C)>$>FY?/坲~`=wT:=ԜZ-{= nc#>,o>qMTl='RFh񾢭??{t]x>ƾ#>_3K:YL1>$mUF<=+,6>6=% ^>ýG^9J>fr[>'7e>Ӻ+pj>C8+q־c;K>=ݢ>4><=\(o==nD>ʧ>h>1<>2'$>/xB1$vz>=G$]A0>mx?LhǢB۽1>÷9Ư>>f=CC2>=f4?~T^q>r> ̴;i=NH8W.] !=d^ܰ><> ~>i왾<&}ߧpp(Rӏed9>g`S>2Ӄ=ǧp?>½*9{9خ>ynOὠlr=J>n}ծ?ҽui>YѾ&>.>HmB5=EJ>x= H>`,= ;Iq=j?>mUü =A䖼- +=DXk>+ZF>e='be>) ?#wE9QWV= U%֎>>O7B>>5 >B3<)Ƚ(Ʌ=1оP^>a/>)>3sPM`yF={t( ͓>Ǣ/>gUmO9yR>S><6=#/sܾp;Fɢ=\'i<0ml'=xVH譍;xþH7<>ˍ>R齸X=A?H>Q=䬂>zN=ӛ +> +0/;ֽs(]>`=ܾ̺>M=Z>B6?=Fg<=}5>#6(t?I_=> >+C=(=м>W >uj>Qf'='>>2!>k"=ǐkӾ<yоs|r2e߽L=Dž/ʾYƽvH>^=~z^|v>X\[?qz=`@?f(7>[> +FMH_>$^bQD߾[="sO._>iA>o8j,m>R>q:j > +=<羝kdp>P0 ׽ =?>[B=yB6><@}=5(+s<9nlR;;w[%5=_ 3q>틽8>[>B>*?Aae֛R==8DQ>=:v>; >:g;qKzM >}.ӹq=>&⊽S->>+=O> ,{>M=Xx>Y +Nz (ӽP{S1z2>=<=Y=ٳM;' >ԽI%HsK>s^,i{|l\ >MAedYmW>=$׽l=z="᜽ [9=C->-3 * >6>=OOQr>`<13)Xx==wE=o׎;~ve+<ּ{=jռ #?;o;^'Fþ?=E=[K>Zs=1)>vn=9<9(9>>}=[#c>aj:=[:.  L2ŬWm>B:=^ S=M:>O޻<cv1 > GF?{SG;>8%ގq{=!ýS<=.r߽q=;$>&:>mF=+ԡ>==W ӺX>>o?}="=zXi =>ɾQl=,W>v< +4M-7л~Ipx'^q=or^>"ӎ &dD ?GEȸH>Nb YY>>>~%uھ=o=k=սRnzz=$͑= S':ɼw-<|w=M=uzU|p]{=j*/u-?%;dA>`jUY[===>a>UU>I'>@J%=nԲ=F=f~<Lo3T.=_=k_j>_%FX>aQc>7,>nw)P\>3zV=dk>"|޽1/=7>/)>D*>k==\=U@C[>7 =Y6<'I=[UMY=aӽ;zr̽\7=i/?=4+>nU>=d =.ޱYg^=g%|>cn?Ԭ=kDH9=dC? <;S>2|=o:4> <>H׿l$N؃>!!LVè.>[I=x@>/=DL潁 ].5' 箘ߎo3<) Ɲ^\F>T2#>D>(F(_>3*=ɴ=R0DĽ+I|h=<< }<@`ӤT#x~>YP61c :+@Rjp==E<>$}Vϴ=lLg><ɏ.<">.4KI>6`sd2{=f>C=[f=' +>}нQ +=l +>=Wp[E6,>BJ_Sr>9j< 3A +>*>I1)Ajj>)WmU >p5=%g!>=}>?@<>Ы+>K +N98z&>MUG>>ܽ,bS;12Ö̾a5w>g9x=>򴫼/=VJE=wYɼ+r3(-ŽT>oFFk!bnO>-K>v=M;N==K}dw1Ǖ#< (=z<)fk>=G=:b9x׾PnU۝=<W`l>'p>j{_-B;U-C0?# 1wtzʽ?8y?8>N?^?U!??U1l>M׾v>@25>W'M+Rz{?>ٽ? ??? <{>;ѽ|@9V>o?\x>HC=A>95`X =BAxp=>/=0<0C>>bW>(E >]S>#:׉iҽ O=;= >߹0>qI =R2>>=k7J=l>d<>ߐ>~*p>Bb>x?iK> QU>${>.>[.ӏ 1>Vr2P#ryCӣ:-[07G<,<ᑾ~=4/>M-<+ A>]fR=">JEC>z:?w=ʧJvFO+>>=Sj˒f&>6:)f<{g(-+ Y:`<<~#`{ǽM<=H+?Zk=$=h*<=?0>.=،=i== z=|T~dnH0=sb*=܎rZ=T!}<ݭ= >7=5 = =5>tL?K=@=n=L<>c509׽J.u&=N?ԬzF+թ>Tl=V"_s(Sh1>,=9=r!=?=v2 +>?׷=B>w7?E >=&V=sL?ɾҭ+>^R%>A?S>m0t>Dd"=y>K>4> YH)kz >1^> +K=p=7Mx>͵>ҍ<]YN >\>~=M>uY =t]>ן>tEg=`>8νpt8n7?J>,<>5'.?~:NnUuņP?kc=8>n];>O>P=E=ĸ@d>M/?;Vh= Z><=7=D2=>=h<%e>5p+=3>{>>w>0>kfӼIS${r:G=<Θp%սl`f-HŽ᭽pήq!0|, =z*dT"Uѻmt)5Ci>Q=>>o>k>}J>A>o>U/=-Ny=ZX5*/.<%<}6=Yy=>&`ei5>UǽBk> w&=ܲ=> >+QpL?PlG[lU?n>]H==-¾=>I>j=< +52ν^QG>`f:>9P?Oo?$S=:?}?G?ܐ +? e=7ihm%꽧Vt / xt=L!3r=J</?c?>}=j>Olپ#gj >YB>j=g=jBOY=QWʼgYUJn\;>}뼝rM>fzG ;M˱; ˽E>a/=>x> >r}1>?`>O\= >f>QW>=ɭ<=}q=8y>=a +Pz=K[}>Ƿ=9m*>F>9F>O=ގ)>%=)=vm&n?}%QA>Æ>Z[>!uI<<=EvP=^=+Ɯ,^=؏=Y=c^)2zז=H+V=>VYӤȽo>5K>C>r&_>E<>d3/"I=)=S! =l#K)G?2>V"=Y>t0>>,u&a v_m( FW>S=ߋ 6k;>[>g< +c;>"a; +@>ꪽ7ѽ +a>ڥ=܅d{{1>=S=-:nzy=Yl>N<ov3@ʽnb>5ýE  ^b?$v;qݽ2wlFdfih=..>r5>g~ojǣ<>J'{}<:6=N?ݡ1WٽF_ ??F>753=A=w=cQ瀾j2 h=< =eT>p:%7Bn6>=7K +Cq* Cv!UqJ/_h_pa߽4u7ܳ(WB=St+S߽r#; z>!̓>=Ҍ=->%TA/< =$~={P +><>><!`(b=U=l(7n-ڽW>O>ľ+ҽS>${>_>~k/!!<`<ݥ=v?r>۫=M>ӽV~= _l>G-i=P +E>?! >wݡ<1 <++Oe<<=rl>#5>(=䷅FiN==xY>N=\V<=y=7׽s3c< h>*>:"> S.<`m Z=OC]r#P?X_?i/@E? +?M˾Wx 8D? Ahm.=Ԗ>Fվm?v5b?ng3^#H)`y=i?_Y>>O>=dأ> DD<*>D$=4=6=4g>b}=HJ<]J=1b>SX˽>:>3r<>]=JA),Y%D X}ʾCH> F&: ]"L>n;<Ѯq~'>Oz<=SNˍy>P t=IɽAC;齟鮻H%a=R8>6!H_4l8'q:>[n׾Q.g=}|?Ծ R=f޾zzw>>ۏ>':)2|5=MJ%(Be6d=s:ݽY='=tQ>=oe٤=Ǟ=6>5ǼH>H=sV=:_<6/-=*=>#Χܯ<&b0H>=V>:j?W/<[`7W` sXݽD>> m>~!c#=Һ<>5>=ը>`1z=V]=8 .?>•>]:b`<ɌV> p;b>F>t=~ξ-׾$0>4>U=> =f.>[#>X(>Q>4<>$ =$>}W>Z& >*U<=1<_/=l@>c޾^k,/:=#> ?=`=8K->>">[ռX=m;#;W>{lݥݠ6( )P$B=P~#;>X;^>+ٽť1JI8=fK,->5MTGZd=FW >,'͑= +===@>r=?ýE5\ni>tu>[?d>u>N=<=_=Ծ>ޛ>V.>h=ǝn >!>==;m[=Kf>M=Ј>.=>>+6?a>, >>W>z"aҼ/-J>>rA>9>=>R=[F>=>8;<ީ{;ݾ/pӺ"x:=R==vQreq=b|P]> A>@%Kx>dԎgI< +h=h>>[|>1X0t^,=߼v>wVо9=1]=)  =۫5꾱"b.5=Ap>9X$> >aD=s=>"={֊>Jz=->?*>>-l >4>Ժs*>s=$k=+1ƾu{Lۀ>f>{!>:(=,9C>MQ<Ѵ>Щ]u=Zz=ț>='P=X{;;>tm>&>ʙ|>p =N>b=_aXҽ)޷> s>:>^>n>B=غ>==得>ӮY|;D=>:>=Ē=&ڸ<p=ݼ=(Ľ'rb:uqļ!UqbR5}5>=rst4=M>D k= K<$9Nqʋ<0=q>@=x̽$J=T= 7>=<&p|>)Ż }I=Մ>>4!>E>R_:NlIa==GA ><>| >Y`=R6.3ϝ>=M歾==1=/>&G0;[_V=0ʼ>.! ?ʑt> =~*+1>E>zİ]q(>:D&h=i=`l>u_b=R=uGO콛D>WJsr[8|FD>a=qņ=}aF%b=K9=zMP>`K; =}3= &P=JS>JSG񑸾`>li=0G9NAv=6 = =.==0>=<=ZL=;խAW7?WJ.=vU}=)ܽӉҽ5qP>RD= M<--׈>#3;NݼӼ w +1´ܽaEfVU;Q.B=Q~#>˽sz@X>w6,>XJ>6xU>fx/G2žj>n=%!ic= >>=>c9& T/r?S{6 :㾌&=>g}ș}Ol>ϒ<=,Jj>[P=n<=>c;]?cM[NA5C( n潦`Z=<Ļ8k> I>KM5p>fd=1<=eT=ܸý>[i=4sx:k羽,w侖8?b}=A_>LE>np:0>}`=G>L2?bE_y >/=p<ū+)> >B>!ݽ7c4=:=*>Q: yCi>=3齵g4>vB< 80GE =Ȱ>t +#T\N +w>E=t>>(0>S2q=>D$>\tf>03Ť<61> 9TWԾB<7=cS5ªV>̆>G=娽ʿ#R>-g1޽G=>Ϩy>b*f;*>HO<>> Q>l=dܠ>;j?y:ø==-<Ֆ['G==; YGv8|6f[}>+eY=*m=m>;5>M*>'=o^CAkflR>ͣc3>I?">zBrZD.9h>ӕ=j_<_w>QMu=Lҕ$9>^>1,"4:=>柽P=p{RvX^Þ>ArU=+5>v==2 ><7,=[{<S>&>>)e=ym4>>k-=>B=W{>.ZCTV=M==M{>- >tkXҷ4Pk3@>s><3>Z_P> +5M=8Y]>s>ڷ/> e;,c>?s:=0f>cvDؽDu!>"C=8=FdTυO3*TSF+|)cZGM>Qm2C͡F>纾 ҂=w>}B:8=4q=5{?Z?wX>ZOm?k=ƕ<6- ܅s=]?C>? E>h1 +?`=ɒ ???(<$> g>m,J>Ľ8=6>}>.|<;.Za>SmƽjMC`>>i8>b=#j*,>9>v>=xaϽi7-û#Љ='=~=k=E=¼TL<”it +)ͽY1s:^U| (drDŽ ?>>mu_=>%>?=i=o̼i>?`;* x^[K " 4[C=ΰ@<&H>*>Tš=sc<>rps>12`s=rt<4>nq=B 9D=&gHB==;V=>75x,Rk=>>7]i!I>=֮枾;ך~0C{XM|.Վ?a˽%D!R:ս;Zuн@׽= >mԽ(==qҽ!SX=kT=A=$M!%=ē>;=#' K]=TH=ȴ=z-?P> ~=U$=g3>˾i> =f|><Λms>'B=鮾YՊ6 -?E>=#国|=;=& >lkD ^(pI=l<2muf<8=~>+ ?䅐 _G]=s(Lo>Y>]=k>Ʀ2N!>^rWTL1?> 쵾p?=S=?,>n>i=?ߜZ>`1=|#_=u@W=Ѽ_h>ν]ה콄D >(=r<= >\8g!N=&:>c>0m >=Dk=`=qUni;(.x=ɃȜ^I=lw=okG=v + >R VY<,hM[=s},?~~콤V>Ʀr=>L>@>Rx>jT>V>>(&|===?7c/̽D7rྫྷ2.=>+E` =JPH>? Ӓ=Z?p>5h*I>|> +,K>>Cd{: 3>j^lNnЉ0>?=Ͻ\=!=$O?Ǿ<:*=/оBXξ5=^'= >w ~]=>Ƚ;jY>+=NBB!2>5Q!{TA =6b;=<8Gs;=b 3po?[=9 z?=XG<=q=J>Y>2<}V>T>pGl>P<e&=m%g,=`z=ǽサz>Fd~wp=pؽ\>/|<ʘ1= <-9{ s:5r>;o>Jl=N:>ȼ?.\6l0^ +=e{=0n> @>'=;=޳>-h7=-m5>:=A<6Z=>лR ZWօ=-(Tij&!xy()'zA hYpS?&~|Bo>,=2+˽isfZ=;G=bW\X;H>=Z>3 +U=;>˯'wQ= >1> *=9hv=Ⱦ NB={"=}R> >0S6=;|zv ?d\DPue +g<z1>vE>b=2==n>>:s=ټ>wӚ>PI!T>('>G>,㎽f<*&< +䬥;'v(.?0$=#G>6=At>eкH,g=Cqr>g>] 󖼯=w>mqy{\=\;=&1>|5>Q>-;#=в=4 +=$X>*=Ǐ<6#> =k%<8> .j=j5=9=w>KP>ZhX򕉼5zހнm^0 Xw=;,X=#N>;=o">t_;>y=>L= g>֤>=F< \>겼ᥭB3Z >\=f>l>tºwA8>j2>uf> )3t>qپk>i=މA@m +L>;$=9!k=)oT>:L:DP<Ȝ>q>>=A$:J=t>n4>W>xq=:߹^>^_>X*=H=]MDK]=͇Ӿ>rĽ +?V?~a#s>_?V> {X'?L?{>e> X>.&M?2?9<نܣ>u?I4>4>5?FR;x;#d>vF~;72-2<`:7</4;tķ" w0fhߺɹhÓ:OԻ>;< +D ;x<::Z~'*IzkS#>=e轈ɼ"h4ds=&K =q>c<2X>i!>&4 s>o%=Ҧ=Vþ3a~sJO˜Y= k=O,ٯ[<(U>0[4 <,} +D,rd JH"Rߴ;A'CB=M&s>]=hq%=-6tK\>7ZNL>̭=Ѻ=R <^Dýa=-%$>5>I_>1=9#X>:=['> oo>Ǿo\":[bs=A;=] s>!e5Cc,;JK<=}=>oԯ=tL<c>LGW='. ?pJxoĽ ,v==<]>׽YFK.ziz>z?wbnh?H6Z1>\:>>R;C,)>)~z оK>L?5>Dn>Cp$j=~i>Ͼhܪތ>쇿=>^:k>eo~=y$Y᭾3 +>TP]> "M=KJ9\7?@%ྯ>2Ľt==3a ە>֡YvCh0FȽDy>6.kQ2< +2kևX>y=ɦ=rXH ׺]K +ڐ=<ڋ=S>ƕ=]=6 CAƎ== ;=(&`===>żG'?X=an~>&g=QY5>IQE=>>*=>g>P_77oL\tl>LX=4*㨽ID>j>C>ѓ=H=s?gJ>u`>|:'>S>սT=Q9<¼鉽kDҼw#)O36Xa<|;c{>=yp>_F> 96<=_K=u;٩l;+=>=+J`^KԼ4 U)>Ȫ{?>+4<Ѵ;?7^=7mک)0<#<<챼V<ػ=&pIEt<<=ͭhZ=s>YL=ec8>bfF>"i=zBD8"E:>tQ={=L>B_]=~X>XU1%=ib>$>Y>̾%%6?`=@ŸѾó{>1N>ʷ0>a`B?g?zVW6D;=r3?B^A=oɼzHW"UJU>}7-0?N=oxUju=F=86n ==}>>C&>n=# =nB<D2bNG,=N:M '>Խ;P?=h=,=?Nd=w>lxՅ? {jĽoӝw>m]>u3 gi>tH<7J=Ohɓ=)v*>v>_Žv%)=$=pѽrCb|o۾]1>8=FхsMԖ}>G;X>=8`9K=c%>񼄬|=>Y>>Ծr&=,;8}=< a >-j>=Ȅ>U@=?\>5?9@?<:\l>pKݾu>(L>L?)9߬}I<>>sE?>t>3zV>ؽ>RqƾΌ]0{%Jj%,f>(.?i<.i>rSHr|>7jR!/# +v3|?V>=ܾu137;b.?/Ӽ Ӽtj=dmRz<8@潌V >?X@>1u?g^?X0&K=eYգ ZuOC=Z:aS$;,8=緽e"Y=i<Ҋ> +Lɉ ?{(n{<Ź>4[gOF#)>W@>HO>o>AD>A,@TՂ +<˭BH>C*>ԽZ;>f>k?a_<V==[hTj2)>sV?@?>25Q+?'<3PQ=? +>f/E;>=tȒ =du;&a,=84\"Ƚ(%:>D?U`>m>5>t>S.92Ӽ[j >˚"4=܁Q"A?5==*+T`ճ=q>3~?=7ɚ|kk=~;g;>uvB-0?=!"F<%;ጽ7]=,)>"Vjzw>@/ Sɾ>Ե$YM䳾<&Jy>2k2K Г >v6?h>J> Xȳ4ZB~|W@mRsP>*4$>5G=i\Ceł^\ە =ZJ>:<T$=$K>hMS=d>m->x{f{1.=;qgff½;wY>1>9a =3 +>I^4>;?N޼}*䁼,!LaRדM$>?zZSZ?C0vrV7I@Ƚu=Q^YB=92>>=6g4,tҾ=hb, Ƙ>:=*>*>28y>\>u>nx>"ؼ;~3پԎ=|*>$G>">=s9+>I#='[=hZ==kI X>p ^=钾$[Rl>U6A=PX=0iz&@ڈ>N'sSI?>m>ѻ=y?˾޾,̾R8ӋZ>V=λ=ed>Y>c2>g@9*=khӼXٽD~=xպ:켗n=C O z'rǤ;+SJ7O<~Yeb9h/?> )<q?V>6?5>D<ʽ[ݾxxO=t;(K xe)?Z=l>&%>%?)?>g:=ΕO>9&>F+6vƼ>D-ti.<~9H<=V\=V<@ +>61\G>\̾,2q+^'0*C?H:+]?w?>Z#ݾ/=2r=)>?M?> oY??\?i>V?P +I/^H=S=>H>W>% >ȷS>' =ږ=]=c<{l<1=;:== > +)>4=? ܽiIݍJ +s>)Y>k@> +J=.ԓؽ=ԏ/>̽qGh_[=轿> =+2*ýkUtp 3=<]غ>AM=}>M,> + +>e;q=R>!>1>D>7o?ʵ><>qN>h=5=uKK=أ==:W>n>Hv> uoh VL)UuES#=?=}=*Ea>W>[9'>p(>+$kG8 E  g= 4x5> >2jVc=+>4=6mA>$n=6= >H<=k^ĻOq>|>!C>ꭽ "ܸ>U >NCu>g>n@>"5>.>C>X>;d>m >=!^ = =l=z޿GYʽ=F<;!<=4>Onj%V> >!@= ܼf ++>&>Ӱ>ޛ< >=7=>.U=AE@=ܶk9>ƽ_/L>=\"`ڬ%C/=T#@s">㼉8>;VӠc{%gr>x6>> ҽ^E̽Q`cz+ ħ =5w>B>e>>=їx=L>o<2>)!ƾ8=I?R.TWx>ݜ×|-o]̽My[=>As=g)=q.>=6Mܥj`>W 㭽z=9 +8X%u=OA>;n>ʨI>>l=M&d">,> = z>_">f>v>j< >`/=ԽT z<ܽ8q>gǾ>)ǞК͟>;>U= +<}>+ۀ>K>=ת>vf>髾86>ce<9fZ>#"v">Aýw >=><.N2:j=H~*L +>*?0>M/>=N>Y?EB]>H-<r= =FRq-37*f/>#+F=Kp>?Sv><h>t>aɪ>D:P{>h=B `D`k!w>(5=-Pd4wqb X-XP=f>bP>Ɲ @2-s +=ⅾG5f)"A߽"~l>>Cڽ)?f% +?Bֽs> <jyK">?C0ȽzN+>۪!>i!<˷c>y8>_F>B}*=@S>6M($2 +?>F@>؟>b>=d޽1=sQ~>y>g/>B%=Њ༢O[>>.=<%۾CȾa>T>Fh>.o===x4= +=B +=T=Q1>;VG>L=S +<p(s3y>`Nʼ~I>u=>`>I>ZM>>9Sʇ(@U K> +?m>X<+-B 7n=/u>'5=39t>)Y=N=#S=Hl>" >:)>O^r7J>[3=N^>|>b==*4=m}F-U .=eO=+Ѐ7xy 1A) ?Y'P>$>P@<>о:рr>]ޠo4>˓<>[=6<<# +bT&>ֽ>>\><=/= '>|P>X=u >v>'i>LD>E>B>>SlŽg>>{G?0"?="*>>Lf>]w>].=)le3)=].˷>n>+X>n?y>A??zY?L>E> ?>/ūp!= #x+z?|>ۅN?,o?6D?5Ң?nV?v<Z}=.%>D=ҥ>&҃>{s;=;D=e7={>5N>`=V}>s>3)?v>n>.>ݼ>>Bu&>M@?5?=^?}[??c>gy"z +F +hIL>s<xB>1>z<6^Ϋ@L.v;n| :ʲi(":>"=5m>]y>t[ >ux>  >$Vt>QX5>` ;l=gJv=D<*d5>\6¨&GKlP#ܾgþIY=+ =e.>>>>n" ?0?2F?G(?<+A?Oc*>5>s8%8>,O>Ok=[=Ԁ=cPޝ>j>oɀ>b>M>L>1>I>mC=3H/7 >l?>^,?yi?'?GRT5?O?6?)? +?ղҽƽ؄>#Qf=='>==F#>K>e>A>=->O=t7ќKJ<žTjoKaq/KtpC7̽4>?V??>Ok?9:?>?/m?<,}{>oMl3>VSʾ<=)d>n>g +=.>^>x;>X> >>;=kk>?? ?\?1?:?`?ڽZٽn[X{Խ:&`꽲Bp>;޾g ?5:??[)?+ZrTrE='?l}>[m=&}Dub>t}=?„M +5=-=d>@>׺xx/D>=5q>`>; |p悽[m=KK =⽴$>p >>T=p>|>4ve=>1+/= =*ʽ=R<MP==~>n?2?9>S(=^=<;)=={?Λf;8q=G?yw?9>b?& 9?Ⱦ6f 5?týy߾;^?Œ@>L: +~&?U6~==a.RRнV4?OZN<=x%s1=o=I=E<1̽=W=<܆:żD< В1> 5=I'>=n<ק7;:={ϼZ,-oI=gBONOΔh=MV=zg==.r<"je >kC7z_=G%5 <. >='8_ȼ?<ƃ6;Pm7!>N="`(4U= +eo&>N۽y `3e =8<=\ߎ-+=kqr$=UA]S+=(񅾥V@`=R8|.=Ь"=89~t;7 * Uy<삟v?gu!=+_=_+-ͼ><9=D罷9v,ۼ<'U+=7{;<[1DԽɃ?=N9} +|=;=Pν$uu==Ï=ɨ<*yl=z= ( > +=.-,=~B8=]V.lULU=TWkcB J=Q5S=$<$Hv=\VҦ > ۰0|F<:=' 1=ZA=P<&SG(E/= +u'WplHc>: >j=R0>VD>|n<{PƽBKa=A\ ^༼=|ѼqR,?漗x<{v>l)=SͼzXI3j1)skY|==ebu=,=ļy;i=;< Eh=ѩ +L="` +=H=b +KV)a=, =բ1_/6+=:=<==pYMeG#*NR=!}Z1=Tk=k=cc9̼/D=T=U;=I=YJ >U}:<Xi= %=, >;s:Ѽl2=;s<׻t<D=WM;P=Zڋ<n=,_w=cV=X A=1D< $V >ѽ7[<[k===W=FiD4bi,q!= f=`i>'H{==rD%ȼ·F<;>:k899U<_Bgc \:=Ȼ\[н:)=!׽7k`j/-ۜ\tٽ`5`+Q=jIm`}==%` + Kƈ+<ة}', ޽W4K=\=oz=,==9&iH?==uc><6׼i<%`>fI=XuQݻ=2>36=oH<=㝾`e'=i51-=1=n=Zc=ڤ=j= ɽŒ0Zoż3>"=u==t(>=iF->Z[9> W3t==3XͽO64μBZ:+b +S5=!>c=;)ֻ_}>/=~DP>>H=J$<"<7x"=M.Ľ<L>BVW>BO6E>T=sx>"+E>=Mڽ.>uEY>q*=3%^$2 >s;>W8:7= }0ͼ7=/)ID8=X%c^Q4&4@==ab17M7<7ڽ?Ի½u=Y% >+d:;p>bR=~ռ{M>&=:>QD5L`>I=+<QꏾN.̽3ڽ#<1Pk$nr>͐]>>&E=sI=]Ͼoq=@gT=F?=d=A4z= ]<[=[轄+, ubŽv I =C=+$L=r>>D>= $[6>x=% ?>3;>=3sH><(>(;14= =~yӽ=-<5&c7vM=/cB=W X +Ϛ5=л彑>s;i[|=kM:4xSv=@=d=u׽>4;\/>+>=-_>BW>?<<¼N4KD= <!<->o=wɽ2oH =NdpX=#>g=#޽XڽxϽe<>7"}=<68ɽT^>]\Eʊ=+=kZ=|t>~'Y,0=>U>N <ܙ=|=;- xj}>Ir=h,>ISvd: Dnc#==ͫC 0/O=H]=I=<쎼cfq== <(- =$2X=BTk=2=Ȣ=!4.L[>RZ===<<|I =I!Ԃ<zQ=G==n7=͙jx>AMO;QvO Cy<À"G7>~a$C>;۷9O^p=>C\ ;xs̽>ﯽA +=jp=<ؼh(D>>A=X>=Q7H=ho=b;~A;xԽ{t +2Ll'=%׻bҋ>>u=fL+쪼q<=h hspF=Yg>(>+4frF}Љ=X?ئ;jK> (*=ǁ>6=]ВBӼj n=^>S۽i(U< C===ZGW>ɓb=ZtI'>rD>+=<Z>_5>q%><>“= >7 =(J=b_=K=>_ +> >`>=Px8lP`=UJ=@9. >: .Q"Or=Xx˻6g&&ż\=g/l=7=?==29o=1=Ie'c=@to<^4CnH=x=n`gل̻<>L=}<=P;Gy=<Q>A +qĂ9>E]>]?O">g>L=g9Ed>>}⽫r>'>I=L>Z=K>d>[b5~V->)R9XZV<-r=pV=*=Pٙ.,h9=\) ,XP,8:<ތuYW=N>;#ڽ&9{@ͽA>V)0>Խ#;< =ۢ= +>wc<}z=dP! >l[=b"o=6Fֶ=1=<-o +Y;Ȍ=O=椾^9KU>>f3=Y=R'=;X ѽ,2c=m==rT/=2> n=Lf?>$H(v(<=M=ZEr;n*=!;2=5Q-L2+ף<=;iҠ= ܎=g<뾛>6.<h==(=vzv=Jyo=#;glb>|'̼K<%=;hL<ȼu=Bl=m;C=#E =;eu=Ὶ= =v=o<…6 +&+=(rx|<4W/>2;a*&}0 >@ED=vhMnQ=א=,Qi==g=tpQļ +1ai <!Fg;; {<$d =}7=:o<8KƼE,[; AU5uwQ|=MȒ̽R=W]j <`YNǽ:eI*=gQ4 ;Ls;9@G%k=zl>}l*VeƲ2~=Kcv'1Q/&)ƞ<[Rkp,=9=ux=2Խ;E=bM=^'=$m>=2mTPl=dN=\il<楽2=9o4=?=3f=7g0gۼn`:Ĺ-B =<ݸ;; +"f=Ew幠61Ⱦڽ=ʅμ"XW< <.>0l8]L=ӊ\<Á,>U)=Ġ=E<<2怼м軻ռA yt; `<<5==̿<Q +=ie= 5<:x¼F=roJzzG=Ts9-=滼33>v 1]<^=<݁`=-y9>>=s=ʸq ō=:=;+"^;=B=>1#=.=j Ң<ɗK >b>?5o=a=sa<3 8?==1Yt=hS2=_*=W(=9l=/RPdD |=gA}=g=_]_>h4p>q="<@<+_=;QGV$=D,M#q@c=u| C[)ڙ<$"_m񍽎=K= >n&/>az1=-3պ½H=_= +;E&罧)Sq=I[Ľ%ڼ==LD:>1T=[6=Lݹ3I +Y\<-~i=W]UɌ?)ڈi2Kũv=3O=Hr=`in'ؽ4e>>6bP.>Xs?׏>C=ۼ(M>5=bZC><BTy ᬏyj>C+>l1>ఽ@>) GWJZH=f† u=zÔ ƹ=?J=*!;\3w2q=|=3bf==:Q0>爝->ف=m;aΙ +>zEJa=fB=`4b9 =J=V<=/׼ZD:xNjQ2C=lMeлg_8*->x뽙>B:l8񜾡=#.>6Դ>R=d?pP<3i>F=cqӽҐ=`>Zp:Cs=8fꌾ[=QV=̼$Rϫ7H=_=p$=qM=*zW =x|O֗<U>?^Ҽn֫>I嬼ZL<,4)_=wX!=\ϓ9{= +;yMwѼLW<;n.'ǽ _5ԙ=8=-J5=3={~y2Yf=?==;Ԉ;O*h)Uy$>e<] b=y=>=%īҷ)߽8Mf= >M= DQYE<='lJ v<-F=:\=,7=)&=(3sQ5>=yJ ጔh|!>Bbռeq=d ż~HƧ{>0.<݂=w= k=Zw<콝%H=v=V<(Y= WH;@1z<5=˭`=+t./V<<<=o=S(ˣ.=W,Y&=g<v]<@@a<_vX;AE=$-Wv=%?pQ=E<)>}6<&QOꔱQu;807;7)=Ng=R==Y>!==B/=36Q;`d=34"az;̖=Π= =HV0 =.>;AC0>(=m<^=iz l>t=c&m>W=&=y!=:r<=㗕>0,n=|=o!Dнյ=R; >:%.;,>x$,=#2===Bͼ∽*=[>C0<ˠ, v=) >y;Ǜ~Nom;M佽Ol:6->^==?ɾu<ͽus==_T#=# < >[`=%qK<=b~<3{:k]ky2=;==>󿎼|;;<#=e蝽7,>m½$y\j=>=k=f#p:kFfW=4shż<=3=zU>쿽ivL:B->ڼμ!)>?P;>e<>%=| ϽO:I!><؍=N½= ==+ +lX>\tg+e8`oj;hb=E>d󠼸=ɾ" =<=] 팽x=V= ʱs:="·:;4=<)[ #4FY^;lDEB>=d}=;x k¡=BQDDj;~;pM$`mB$=~<=;~ZW`"$=x NY_Q=')ɱ=buX.R ?ӽ73c%u<% b;\$[GDYiUq3y>y=<;!>:8<=D<'<.=g9y;sx⬀5:<ƽ=o@=nݼrW==-x==J>@=<ս|=~3ܥ`=n$c? sB;Uu=G7>vy>!F<=R<uD=;= mb=h8_l%SμTf=J'=E=w‰=}=BR>;y4M.j=p㽅8ۻ6m#XUb=o)l=ȼP퉼;}=2<% z:}Ƽ9ɖN=`eŠB[ '2=x/r=aV=A{J,|(s=V6B>˽=x=(=+~1:$=* Z<C"84<} b>7=g2M>== aMx<=U=^7v=<4=Xz=};)= +Q>-== =x咼LȰ=YR=xx>NCA>><= p?+,>>>i>Xԋ =?S ƾ>Ո>x>>?`>NTX-?|:7w>,ɼVY>!e6>smt>Dq>g=ES;ܾDGa~?┽?B +4ƹw>P5>?A?C?sx ѲJvQ>>P{׆>@с>Z=ݗ<ײ2?=m=y|t^?A>n? >*9>}޽u--V28>5A~/?tH~?p>>g7>v?7?e1??b]= .(k +`{='WQ==m-> x?W?@`J>Ŏ,>@x7C?x=``>=CKؒ> N=>6i`^=s=>E>an-r?suKZE?V>dCN˝=:ҲJ>d/D8O? +G?% ?D xsb2ҞEپG>^[A[3>>cоΘ0>;=`>?$ +>k?H=W>[>9(>&>r=x#?&>>݋>8h>Fd=M +=;vE2g@>]?7>ْ\v$nO>[Ҿ:DSɴR\<> %?8w=gz? >5J?3=%r[>ۑi1ýko,>H6@s>W{,Rq=Lݹ+t̴(=D9?ɕ5;僧?J!]>08H?D=۾AS1 Uщ?#<!j?,q?> I +֌>B8 f?ًM>;&>{X X^ľq$V0ߊ?4 !>w=6?O?B"Bq[]175>˫|@߾~\>Cg We=k<9c>[*Q +a2 =$ ?1(><>?-Bb>K.<\A]꽒{? ?W *?:?2=k=( + =s=>Oe?ڗ1m+i?*AF>y>l)??隻rP?jヤ}?H3A'-c?]$B7{X>){%?ꐅ?@ \ EOOF>h>_%>V3=);{=Z><“2,i5>[/c;">Ku=>P^li>*߾b%OPc9Y=4>'=>6z=~d6TY=.=A==éS==/jhMo>jCȾ`f>6=] n=r +=/]<~<3f>+=3K>Hc >=.]t<;*=i= v>/=ʂ +̻OU$mƼ3)M7>#F,/>-sd?>G8?}5@=Mֻ(;߭g>uYL>ˊ >oQH2J>(='v>V<-<>%>T(ܾ>p=$B>۾5%>n>Լȍ, <^w^$>=SQh=o-Lfɾ >_>ہ=B>d]9>@>u=4p:nLbv>C+?$< +A}` |%T.?$g>+Խ׾’Խ~|,*;dH>)4V>P:>.eֽ>⸐BǾ[yJ=\>w>tþJF =`>-=O>%>Vl&P˾w>eaj z!ƞ;輔 <"+>7%>=ʐڽjA(> =W>ľ6ӭ˽ht==1n;,; +).>7C= = Ly=L)=Ὠ=6=F=vY=;yۈU=P?533=z=.*T O+D)#+x>pMܽ" +=F0wìL*!8>V虾2?>]Iʽ]3=z><j=E%=>G5=X=ڃ>=)'n?k>2R=A#_#2x8>><:U= =R=ӵ;v{*Iaɞ.= K>4>@龏g->=JX>J3>}U>S;ѽ֘> |>ꕾR=_¾ +=@>C>@>#LA >\vA%N>7? !=o=N¢d>??[>=>kۼL;9><>> ӈRZ I' Nʏ=Ծ؏?)y"=qn0|>3>-=O>!=D=C<@>->#=Tފ>˫ >)>I>G>Q<+>'>34|>F&>gC ľ/>?S=Mק>i)>=\?Ͻ5<=vG=8<.; @bISC,5>ʸn`E)R>:<2x@-=SS.>>U6><+>ů pDϕ=Tm>,mȽZ=S>=@B> >P< 14>))c>ŀ==i;=Ķ=a->~=<=e2=COa >Ѡz]K8ִ>,=xٽX>J?ZM"< = +{޾5=kqXϾi"9:=q +?6>kcV*mDjž=3o=1 W=I*=`K\*==Pe>ƾ?>ʾdn=e=*[{㼾=>(>rĺ$>ɫ䀾2k==YWT\6滟><ȾV=c=:[<->x1>:_ޡD<96m> ==-s={žޱ=뼙>:E8Zjv#[=imܼƭ[=1CZq0~ܽPN NE==r=J*>?k5`>=nc >nj<=ߒ> ?> H<:V4>D>@^iC@<E#='o=D=hsy=V=s: #Md>s=8>_> =̬=7|>#i +#.>wR˹~ΝJ4S<-̽Q=ȶX@>Uz=[x߽UzJ=Ѿ=-ע>GG)ji O\#->SGn=`=>]Z\ދv9E=Ծֻ}VǽeoCӭ>H߾<>櫾xT?w>E!>8A>e.>=.w= <-s<25>n ؾ;ſ߻%Ľ[zN=Dn=3=\v1ص=,ڻ>W|==/8L?7 ƀk ;DӒ#.W=e2z=ZHwNōC*;gF=QּD_W/>-t)+:vvCn>%5>^>q]''Q>,AlʾP=t<;y>as;= آɏ>g>Yq5=K=~ Uoc)F=>ga=E6?;09R<н `m&~i+w|<';xT?qC̉R=X0* +>>8> S8>໎HT<⌾C=DX=Yk<7M]W| .k>Tɼ<9=<5ȗ=dLLA?#==o# +>ܠoI6N\ZN=yRS |>z7E7I<ޅ < rQ +%tNH/Z>LEԾ/f=߱= 6rQڶ>y=bG< h*w&L>Z3>N58IGϾ/EA7ک=>=MwU"R^Psc>|3=Vc==(H><)»0J+&<ߔ=O@>Wm>Hm΍P>'>ڍpT©>ʊ|0=dP>84<{"K-=DZ>':2?/>ʽ~^pPþƂ 9>tD??>=U& "aD,<.dSɾ!>>'+Jż jp>qT͐>4,h=Y>b@i*=l0>5 =<->7P:>Ĺ>DM=k;߂`>[= (>=Lt#^er +l +>5qU=EQq>`4 ط>Je>n׽W>7쾺:侻 F6;pJVT>V7(/>m(?ؤv>qdH>>zx>W>S= 1>N>E=}>J>P>4(%?HQ>D{>? V>0m>"?j%}K>!b>0m?1>x?G> t?P=Ta?9?؂9?L ?z% ?C??\?D?K?=-=>:hB O/==.)?$_8(>zvνF^>{?7>>\^%s-f_pt䴽)> x>'N=E= +=ʩx>INC>t@2*#+a8Eo>PSƾgO;,B ? 4@>ö ?ݽc>{=Ҟ>- =FNJrG~S >n!>>o|{==ZY> + ̼cd<#A=PlM>˫>1v>c@(<Fw68MG~\%>!?Q*rȒ>SATig==i<]D?ynmCŃ: >.>ji> >#ty>}=Kۏ8N@v S)bm<+\x>>,?;/2<'> ?>\H"E>̙>DV3>b*d<>e?0p> A =>=𳖽נA{K>-d>~:!:R*<>'<+>fb>G=Z)i8w>M1ؽ?>۽24>C>z%=%=8o$= +>@>=IԼ:g,D̾fM9I5OAGa>S< R?A ѼOu=yk>KԾ`A<ٽ Ӿo, s.>N!?<_>+G>2%k־H 5񌾄5]ŨB^˞>ؠ>H>ӓĽRs&*ħ;jXXya}>=&ܼ)\>[I>ܩ=) >8S>֌>N6=w=]>GŶ>!$u1dнLc+o?lyg.E'T?%f?f߽9A?u?d=4d w?#>3; j>>l)ܟ3=<{Ⱦu>rrm>% |G#aJzOlJq>kf>ɮN=>2?z>9;>>2dv>W>N>%>1=ƖY>1ɾ +?"^5>-=df><`?\e&?cC?-=n|>|?š#ג3>hn>ȼYX =>6?}j=>l$?z>-Bi8c:=Y>:;񽗌kCߩ6->,hj>I:P=S">ǟ=qB? = ,kڽ(e>}'UEeý\UNxw<>ڨYb'<T=&f= mǔ+=>bW=!-{=Q6@==}>T= +x==~s&>H(r>H-?) >$ Xx>.ƻ?==/'>!.{%q%>K3˻h= o >>z=s>>{Y=1!>|I*]3>?>ݾ b-;~ =+gK>91yǽ^@=輆w3=L22=^eȾb=BR20( .VԂ>SѾ?!"=x>2۾ v.%P?KS&O~w:>le}-k;`x<HGF>>'?#~;1=ž|9,>}=$ 8:>iF,>\#>Y9`>ȕ>'J=庣> +?~>5X "=ܧ喐>&=(> =׼4[==4>9 ?=>bf>'bY=phq?>?ٟdJP=qM>=Li>|: +>jϡ<|o+ ۣ@C>RU۾*jbS<46>j0>۽4҆W/>X>cپ<wGOR fD_=s >M>A=qb=qHЅY>eOE%?:V>cý +v>Ӳr>/z5=̷&>g?W֌=/>M+ H7>^IuUp2;>>W>>1 >,>)be.kJ9=9$>˼UZ-f>I?N>,sL>_G =ꇼx6Xk,<C>zn =ܮi>?PYp,G7>g!1Iɾ;ξ$(?h=ս=iZ==s1=|m@">S>1Z5>U>?I>[>砾x>*{>>;?9?̦Pae}ڝ"v=Iֽ.="@|>{`Ͻ92b0M> +:)9"A7>;,p=5([@޽w>gh>;39>E峾g>ؾ=lֈ|x=ޖK+>h=;o3V¾)C޽-L> l>8:E:>P?z>敽=6S-Z/ >?:}=:><\Fw=;D>[>Ŝ> + >i<#W%7 = <<5=2!*+W>'_=A=o>璍>4 +5??M >wҦ?>im ]=Ҿ>~+># z?=;s>?Ys<6>@ +<= PC?[P!CDOƽ>k 0=謾~̽=0?#N@>==>$=;dz=XK,'>DF?\̾l>8F?d&=n> Bx=rPX8ay>}u٧lI>bQ?=.Z>mýchV=Lh+>BĐrgW<1P>r?=6B1͂=̰>S:Dv I=0>=<@}<=-m<%n=7=&=1L=Gg;=^lJ,ګ& =#8xk>>7> ؽO ?_>?;>#C>W؍>O!><,֍>ȵ> =UiԾY> +?^>T۾B9>F>!)>EM>}䝾nFx=/Vپ&Z=Qr =+*?nN쐾â=="=A"i>N&>@?*\9g;>Yʪ뭃=j遾P>Д5= V=ĸ= +=X@)XD>/+>x58`ն"=џr> >/"->D] b=]>B>NH6=\=vP>H;Q> >V,H?=X[=4 >> f;U=[$=0mn<`ӽ­`===.p=O=ؾ=B(}x)=ýƩN?5hg )=L˽\ 5۾<`h>ѐǽ=%)'=汾M!<=_̦==YlC>=ۆY>R@>f >wc>jA?eU(0>ID=9'FRTƻ=x +>ro>uuIN +R?ɓ;>܅>Đ`>>%f=@ +>"8>gb3=A<>:Pc=!aȾ}>_>]>>%޽hv;>{=v>FD"uu)?38>Ձ?Re<=>$>~H-߽LǾD>H ɽus>n> ^>>ɾ ͽe +ž_c6>>*Ǿ X<>DbCb=4>%%ľuOO>^'7lA?xR-v8'9>uS>Fׅ._>k;u> kվq>T? r=~<7PBO/5;L?\>@i>*g,}x->="t'ܽ- }]p>R>oYIо >yO_]> @M> >E˽Ш>!>&>o1W ?Ahdyt8^=I*t\>?s5F 9?:t@s= n>Щ>@_>͌1=)L#>ͻq~ľ5=>"A!%{=>W>X + ?ҾrZ+n>1d<> SE  )37<7.=Jb)=>e{#N c3F-y%=f!>N?phB; 6>Xf=5?ld'=#5`/%>|;i-c>%=4> +s=vT=\8<==%"3:-;yx=I >=YZ>&b0;#@Պ>&ԅ?v?$Ӿ/SvK?? w?S>?(Sy>̏"6_?z>S@t"S?0&>N>j9Ӽi'.>=2-:vc>>=_ >?> +h1>9>`?hFܼfXy3=>lҘ>:GS{܇8'c׾=oC>"N" 5?_>=rK_==.= 2> Ͼ>y?ďf[Am,> {=>X;G*ٽL#?h?G> Ù=`P>=I<\X>;>*t/jr.r\= +>T>L8>{X1|v>˽Be>!b?[B,=EdB?]8? b>3R& ><<|>>J<2b=1 ?6=0ھ)5 =v=l*>W:/=ݛx=ZFouA>>ٚ>jt=o=a>1+=2l;= b=Iڨ>zs;\>>lƽi0 <>9=̺?=YG> >)$>n=%׸=>w>.v>5Q>*1,߱pa>\=ԛ%>~=ږ?=O=i"M)(û='>?qM<=k>H>7:._2>_{̪/`~[>'%o[9 +>6Ak3&8gё=N4o=#>7>6t>?>] ('~> =fQs4>a=E>@">>> +ƿu>=2{7v7 >NT>Z%=<񣾿 ?u?~뫼VP>bz?:pn>jθ; Y> >1i|>z=r_=n=h̕, <ί&Ѩ9g> >yijS>=YĶ>UBc:Ωf B>b>Z(낾p){?8˽ 耆;?Ɣ>Ol>|d-:U= >ޫ>Z>҇=1>'xRT?i?<85ֽ|4^=3P<νnY=F;v8VʾWT>YQƾHƧ?!?=z?;> +2>qj <M?-Ŀ%<>>>l (w>?[?a ~>*y#>[ށ>-O.>>V,>\->b>%?i{5r>]K=0=1oՋ_%lgu>Gs=Vԧ+ =P?88g{l=<]'`ڼ#5꽋=[^Y̾+%(>)N>RA:?pG<==U2Z>=%=F>/=\N76,?>rY}Og勵 +;žfO2=l>~D>h> ½h^>  0rfIQlx(=C>>^.Ntlc:=wk5=bs>Ġl`?J?xP{Uy<>Rξ{>QĜc&)|V>=0@IM\?gg?$K>>Hj=Qz2>6>9K>S?zj>g>E>.+g>)%s̬>>>->Z>? wK7>'=q??t§^">*t0j?ý? +z}!LF>\3)'U!!=Xt?|>o>##`W?ȰA=3Pq?v==顽5=y{=0U =9ٔ.ߪ1={F>c,a>ٞxv=>gZ!;R߾ =3̶b?~o;:^?1M?1+Ͼs=9/ѾⶾR扼*>塼Ľ >;Ǿ7M㼊-US3>R>q>K^EE?(>SfSٽ},D*?M>Lg8U BV=>u"'WcJow^?=? WJ)I?>t6>7xz +l 3w ٵć=K=;>/>>U=AdN ]׽wԾ$0$>}(>Y6b>߽Ekd3>7>>ɽ c@>F>b?#&)7>qB>=g7/=Zj>o/ĝhcF[={iսļY%?;b>>;ALn=^ݽξ4ܽ.JM7<=>q `>>2i΂<۰QS>pZ==ؾ8yd=[O>lо=[>&?!3'>k=s+H>>Y:ͻ=>s*>^GC>{RLimX?U=LE?澸Žjx;x;3$>άv=rA { Ի5>@#T(>XYIP7A/s?뗾4*u˿-i=`Z&=9^½1h>*cla6k.*-E=->]CXPV_=Թܾ> +P?,0== zSmYc.3WV>О=s@>%aO +?=~=GU> >>)>y kz>_>1)=p>x7fU\DJ=4z&GB>I5> (>uf>'T3>?%̾0= jÚL!)G8oI +6=B6=HjŮ?Vݭ=w> >sȾ/wESN\|DKN($G̾f>tew>g6HٯɾJ>)==BWȿ}aj->4S)bH7Ǽ?> ;,/^LBV><%7Ff7= +_ +qHN _0Q= D89?F G>>F=l]Z>ɼX==j>Ś ><>?')>k=g?w==>ie.> I=T:>7cپz+>ȰJ>8?<p>n}<ˌX> +>|2?^ S_= per~M=Oן>C.>HM/E9?5L,>;j=Aƾ㾐<>G?*O>߭M7>xB3Z>MVɤ>N\?V+?v>Xl?> =>ΑX?Qc +Ea>>=PC?7=q{O=?!ٽe|?GG ?ZH?\j\>Kq=r<#=R_잽'g4 j7 ?V??>G!b\W]Px #*>);L n־x?>a?h,?1=VL,Wd>C&=>104 g>=*@~>^g?k{zu^u$GKg<>;Ght4=cO$\x>1h(a`dQ`쾃ڭ]y0]=S=0= tľ5:rc)I!!O=%>Grq=޾A[`I>N>?k?YK?4#x>W>%W=vȾ>'ھѤ)?%3f!>J>̶Kvuq>=a>޽9>\>: >>YV~=e> A:?PHW> UA*j2'>ύ:>>G&*Oͻ=Y^վw>=JʽS֤>8%?qG?=D>p5>v>3Qa>y>?>C9<=f:>UGJ>\-0w=> >̾Ѩ,>2V(?>M=#Dȼf>Ndl>}c>ՇU?KVku?F?R&T>"?{Q=^=$7sU:l4ν4Xͽi&8> T/== ?0I> If'8@%>姾bp֥>NH=>Y?вsI>/qrmc>Z0>ʁܾwc {sQW>OB \ ?mD=i>"ujB<3=>SQ >}U>o>Hc>i߳~n`>ý$?I?j ȿM#?!D>)֙?b?? +N@?l%@)>u?S(Y>u.{?_>;?QV?[#>?=}??p9._6>=l!DR#>Gۣb>3#܀/{Uσ,c@!~=N|>~==n8>0Ɣi <>h})>=B\2 +ԼV,=.=@K>P2+t!>\N('>!>‚ >~м!a\=D"qb>͌{>=>G%==>Ja>i:y=4֚=:= r@=(=J;=">a=;< >=L=hqٲ1><6 G=N)V< Qc߽;yȫ=ký.=g==Wt=kY7~8=ڂd>潿=Mŋ=nfw5>e> >8=cg>+:>N=53=y<s-S@TMW=Y=󉤽G7ʓ >!B>4J0 <<=&5=)>ur}5=kQL>I=5}=0Uj*=w=++=#>E:B;SOZ>=@%=#˟=O>%'֠<4=6>=S;=70H=];`{T>dP½2m:M=K>>f tF@l!==ϺѾ;>ϖ=C=-*>O~ݼP=͕=t<}<=7>=9=[=)=}= ->[7:Pr>޽fS57Zk2=O†==;GA=(Z>"<=7y=d&=4 =^=?ġ==bjE>Bнљ9;=#$= +=[=@>wŕ=̡ɨ=<3;;OjGؽKVV===[=->>%4> >Π==pWH=YּǀL Ϯ5C=joBV>Q:ʼ..>5o>czd<=&>dL>5>u<>Q,=U<=G)W>T䂾7e 0%˽y=|E>F'| UbD>޶>^{5f<%>z]>B5==K=3!=b=R0V==8dR='? <=x~;^$=佺Ky=&k=.='!=d> v !$ȟ +W>4vJ>=ŅuҞ=pg=2 <mm=+0;>t=I=qw=ƨ=qb׼r`rMz lȼ#qʽ=k{=;H>?>߷3.==yq&1]<} +[><\k=:ZS=cg/>V=s==?>ʌ>[==\=L;;1Ǽ$ɽ<=Ӣstf;<5#񽕹?ݰ>=xH=Ų=T>t_=U]Eԑ<H<Z._YO=uǼ3<&>Y!:F!>9=W>oʀ#>*u:B'm="ps>X= =!;` J p>Ժ)>=>=> >%>YJt>Z= M==j=]Y=wU=}JI>9aS=<Du=Q<6 >YK=Agx=*=>݆<*==z=M>Fo =<{]=JOۻ<ɽe&= >*=> ==N>S#@>IʼB_1= +t_D{-kdOӽ+ >V\=;J='m74<< ױgfPE[e=F==Q>?=JN =#߻_ 7><+E&\$X=/D>!nҀ*,ݏϭE=eOeb=j4̚==;>3==&G>3>8=T=Q;$̽z(gO#3=8ɽB:/ / =/>=7='5>7`;"B?>3h<@g >.>.cFVyŽoDp{Bѻu@Z=`/Cw=Gӽ;s>>A>M<<.ip߼oYѼۼ?*6H^<O34!S%P=n=Ou=G> >(+>=w<>><e=żs<=02>==f==E=Ҭ=:0=e=S>0JJ>z +>T%>=>b >"Tݽ= r:bw= d>D)p@>O=zA=2[uE>SR>V6=w>U=+N=>;=uq=<% +/W +8ƫ=em&X*;.=|=5v=Y= D===4ߓ=㎼޽פ=x;$3>C=>/=3_>z%;jս=5Aܳ'q>EN͛<sv:o ==X=;oeBW=%>y++ܪF=ɐ=yܼvͽ ==e)&{=J䖽\=Jx=Rf;л x=W='<8G===1f=3у~q9<f8鳽RȽ73>׼- e?<(<\5>ո˽\>Yd XjwJ N>Y<>0ד>Bc=.">EVp:.07 b!޼ۧȴ6H>iI܍c= >1 +1R> =/A>3:X8= >pv<=G{Is<^> H?1=:p6Pv<=SYiW'>^<ĭ>QA>V;0^>y{>6-j׽K&g=v=>= +>|%=Ǡ>Lbxě^:RV?>[IN&>X<2xH>Tc>vҐ=o>4=` +đGƽB>4E߼V+I=PM*:̽RPca >ds>ֻ;ɼoD'+A#˽v%#kAr+塻%K=GO= = >½^;l=*1i<=7=菽e>d泽 >!=h+mZkkӻ/>RJ=o:%@_Zս=T=օ\w=%Y=S +=ɧ=h{ȿIq>z=64;"< +B=w =]&+ƽ*H9zv\]=Ok:@<}?V<=Ū`=M<^{>NZ=<oL/>;`U?B; Ѽ==WC}=<~a=IB):+ R=G=g=((=:Oh=k"=yq};߶=f;q=YռaԱ=n@= +F}T== y=;:>j#5=:t>;;!&= +aѼkӽO6 {H(r=^.=u<ť8_cGg=}0NFP` ȻbP=#p<F>.f:=s(y:=[ y9<=+bQ<>> J=&fB-ή=p,g=d;>C׽<.=\<=# k:<,!>붽U9.@=;a8 '=m=>3r.=xm=^,=째=J=撼]4]8;p%bm<<(=t:mD߽Rid=T<w<"X=2=rj<;Y=z=?&7ן=aػyOu \L=+jH;=ǞM=f z$;u=ٽE檼 ,= |;\3pɽ?<<۽Ej,=$g瀼ģ=Mc̺===>c¢]=D=&!3=Q=Xf˽ض +( ]=R9==_d=)ϽU ;ؼMB>#t= +Iy=_n=P= =*=m;*;24=4<|U׻ڽ9 Tü!=iW5=[-=$u2=&?=ޫ: +=\,>@<%<Ѡn=ί7;=< <a=y>y< =>R'><>kt 㼌)<*=<hlC*Լtō 8;1&=:9=ź*=?Z=>}ǑJ0h6O=_l1޼@Ǽn>`'vD=ま&=sIb?Y =yAE<5=="p|<6<>T=܍<)=7>?=_ٽPm;;T綠}>@=6;=A= ==kxdcN4=>}jϧ<;w==K Z@>$нj\>a;b=E==f=W=_dz,_S¼>'>}#i=ݬL;=2W=T:"޼ JM=Jy뛾c=i>=γkҙ=}Tgͽ t==qĮm(=q0=uXdžƚe>a̬ 5jpQⳂ=2<+=$=z+ݼc^u*c<=:=>ڼ?:=P)=_Mgy%=>J>r`L><79L j*J+cC^D$q=F"g=">[;w;=R6;qQ=!ĨAt` >P{컌q=8dao SZ< +[&=$><? v=l,ڽkĽ=J<=uB==(ew =l>l=L4,=P|1ֽ; +Kw5͸qڑ=u߽{;='=&n=&do29Ľٳ=|=uٽ95=t=Q>v: P>=?=$'uO=<ލ=ٽ{? +MPNx=E/G=Rּ1DŽ=V1=<" >w0>6b,>egj>m6=э=ew^=gRf +-e=c:/>]7=>+u<>b=_T͗<%2=W<=ԲA &=k>N=BeS͸=J>#av=bp0=x= P(Bs +=N:Hcv7Hcʁ̽_EI=Pm8=և'D=>=ad/;=9 >@=Ͻ<,ֽKs_o8>""=h<=8C +w$-4m8= lї==k=+r=pf`p>IDL<\@k:X:P}L)<ӻZj%=]=NJ50=T=i%.T;=|6==--j= >;R%=ckBmb>pSd;c_ͻT|?u+B9=(n0=Pq=~H5=r-{5<f=X+R>s6@MٽD=Dy=O(+=Bҍ=*= > +p;*t ҥ=l޽q_1"yxf#d=0nb=[>SnE>d˻˽sUR==h:JؽK; H,< +I> 1< m=ȽcFБּ#=I'=.=BA<8$=A;R;ޘ!>ýN6.= {&:=^~==_)ں=?㓽E;3 =PpBЙ=o!=;r=$2=0C= )X.]<ѽ =c?=h;9m=ǵ=9;p)k"Ȭ=ԏ=f \6R=G=kΓ<:F<ʻ(@= ~i0TNl6<۽z1C^<=i[Խȼ5<<f=žui=\DI=>62>2=.Jk=%:<S4>m=T3:c:-V9cGRZ:7==;g%;I2h;<|.C4w;pR="к'A< $=⤟>'=-=Â=ʼͤ\=~f(Z=܉!<j=\=Y%":8>vs$>l=5=. ?)!;H`&󼺟P<=a9>m,~Լy=f=m=m=Kd=<s/jҊ=_ܼ5 ۷<<oV=\y3VK/|$= 1:6w>ihX=/2Y0,Ixȼ;/=NJ=*ӽpg=X[;Ud={=ӼI/sX`<jμ +>:ȝ"<>:a=~>b=g"R /=#Y1=? +=G_K(YOwL#=(ͼufM@魁>_n<_t>M= =ʠG<af4=_=tѽRn@>na<#$һ sCۭ;i19=>%D7ļe.>ɒ=4ͽf=k6=$>=Y*zl='=0G¼;b=EpWL%!G=n< +=E-~< '<0>b_=PVvj_=Z*or=f$Ž<`K#=`sg1==Iȃ=vJZ=YX˽="] ",ҽRwb=롽 e#;U= +=>;>OH= ~=Ǔ=<=鞧= =e=d=:9t޽d== =&|=N +>.R:N=qy,Y =@<)"=X=~Ps3=M<"Ig=OlORx= ;F&q=ӽoZˉT,#gz=D) >=Lۛp>[ļs뼚='I g|U>]bʼ.ټ>=P-h@>v=hMܗݽP<&h;w2e"=e0=#+X<(B>Rʽlƽ[x\;zkƽ=w˗ >s3CdYd%aa8_2=,=!Ķ?=;=%衃 <`c<\= *3I`;#;^ +[=>Tҽk=|M=9E:rĽn=2<8Q<; ==b=ļ7< =B!L5>y GJz=j=$k+=i&(=T]=b=Qz= e=9;U=6==Ѽ;kL=w=B~ƶ=}!U;q=n|d{;x<4=k<̼-N)`>^@>ZR=ie<H9C*o=?=Ě(= (ݽ !t%< +!LֽRA̖$>̽=k(%aW=zm<7DtFy.ELbGc<0ϼr*<'-j,=ĽNDv =聽 6>2ĽhzD<߸ѡ=<ŸM4A=돽HL">V \eHؽ9Խ>7=-ϼy= Z=wZk,=[:QF4>r>= {<{6u=o>9[%==<i>I<ڽf:hQ <]!37>Uß| +=ǰ<+>F&?=p=P=.=ζ$=yOuf=虥pv=} =#=Dx$ +D=Ͽ<ؙpD˼%<)6 R =j>x 7=[aN<]N=b\>g'K=.CHļxfYo$9D>K=P&l=.8;-9={=]ʘTԺ=;Ñinc<2l=kji>`?1=[)_ᑽ1<#؛^?=rm==n[@0:Q?-bI;T_0C2X9X1=ZB7Š=TC<[=a>Xm= '=y>4=k=->==,j#=]<Uy=; =^1<=H3=Lqq=*ێ=A=ȯ;IѼi(0Uռp9=Qju55߆=%8Ϻ=zD=>e=qo<'=<==J>Y+%=<_W^=VY=3!==@ +==0>1|KO >x>ZýҊ>Ѭ=~ V& =Ջ(2ܽrxb<$'=i=f^F7=AB2=(AֻH +=D&=Y[7b(<=<; Ԏ;t =fW=Վ|=+Tj=/!t'=<ܝ<=%=k80r=x=i<&+ RE=Җ|ޏ=^<<׵g3=y=f{:YL(=e=Ed==w=&i<<|=@q;Sä=K%M=e>K#o>RlS<敽_a<. >PV<]3υ\B nQb,:=u}>xN]=븽{Y< |.<)=.nC=^Wۼ>N +=fɼ=3YO%;;3 ڄ?x>>1o=*==.<*ͼ %Ͻ'f=V'=l =>;74=0<>/ʽSo˂>%h +l<=ߗeeA\=*=U֋J=K=D;8;$<1L#<0 =)T=$I+f<)yY; +㌽|;V =:h =$K=xt:UG=\.-ne=e<&*U.<䮽q2>3]B<(ͽ?=q>&T< (<= P>N# 9 =>R;=fryR=ml= r=n&3:=$V=`q<=j[ҽź;Լ=܀^<:q-S<{ 9Xؠ=W=rL=3J=m5=+2=hܽ E=ۀ=J ;hF4=$I*8=f =Dy=+B<_l½L>U=a=#m_=ͱ=3zF2IR<@Z=޶=bὫ3+>TZ. > ԽU;^"= n@>+_/=޼*u=V>D=7=(X =4=H=%=y5=}[ +o=|;C ZT=>o6:1Z< =JI<=`;dfc@< +<&=y=OL~^I=N>S>#sǽFvg_=5 ֽn;~.==u==.6=0_hx:6U& ;=KU )仸<=ryMU:ǹ=ƽǔ-Mܽ>^E>:pq0>n">Ɗ=TVv=a:}¼΋>F(=xڈCd/yA<[ r -=O +ri)h=nT={=h5ҽƽ;=9pC +=bmKB<_jlcS=7E<z}KڽrI|=lmŲ((@ׇ=,ؔ3dk@ʻaQ>=亽ă8=H=꼉^=걐Y=<=A&>W<=lֻD=Ja==1=5Qe~6ֆ +yɑ<=V4>ȷ{ ]*&,=O=we;4= L" + +n=E\X=qQ>^_: 0=DQ&>KH2F=q;=I'FV!Ie̩o2.;sN>:n]K =+9%<ĥ:== =6I;Kp=={=GV7=2 )>d >EO߇ W=(=h=5kg;==& zۻ [%K=yӎx=Y>$>ڽCT=O=EW=v=\>Q=MbN;Gy=5u:M,?=pz=u*=G1=Z=h#,=˗=Z> ֽ4o̼=L<}#G=3)w; +=q~; +l>^=IJ<-<)T=!!<_8oE>V-} >ޮiI=u=N=\fIlqE=biM9#=@y]F(rԋ=:4'>-(I<<<ָAZZ=@ˎu=7O=^I??B <ʏ=鼚':lt&=1PKP<L%G&<ԼW@"<3jN=tvd滼#==<p= ==,ǽ =D؆Э=1L lw,M==%=pU<@D==4B=rv +=nI<׏%[<($)c>ʐ߽<3'=> +3< ?F=W= ,=Tȼr.As= +D=-=1J=50<\ȸ!=d?Af:¹ϻ =%M<鋼e>)=-p#A=ݻi +< `=;:d<],'t@pܖ3aG]=<.y!5V=-;1b9X7A>mR _|a秽=i7޼=Ȼyf=2VH&=xWz;M^X xp +¾C b̝=)A^z@by;T*=nD=x=k<>`z@>iu<Ռ<>.WnU=O >= >׽YBN>US= F;ধ=Z9A>u"=JUtԛ<= +(=(ڞi&Ảww\a>z=>սc<׍<{&n&j€=tv𸜽N;{=E6=<*;= ;Tr搽Aj=RU>\ڼ)r<ݼ%H=}Lz=C=1ynK-Ԕ;.H캽$#<=`켓O\<8K=a +>cc.<1Y8ېjр=Ƌ=w=ټ=Xͽ?E=t]D=~_=Nɼ0Uǽ'U<N>!r&=i@k >B=SL=63|=\ЮN=?hH\ly;<(x<}"K=:=І =В=n<$R<ᚽ?ݽ\ۂ=>PټN|Gܞ̼ዯ=:#pnջ+û:Ї=CH>979=4+=P0>< W[*8=A<=@W0T=E`Lj΅]Q==Wd<}NO<7= q`o=ƽ1;|=R‚g=&sZ,#'@:2#> q +=\! a=o[l]N>ѾEj0I*p=q=C;kEU>g<"8M=z>bW%R2{:O>mr=1=<(K~*=ZA<2߼ԙ&Y>=gD=mG=aA>`hb=>}(>'=<"扻=@oڟ +7>L=cv:= ٠=CĽDإk|iJ'>&<_*= >D;<lLҽΩ>H_F=ZWRi)e=ۼ(=UI!on\C =q6<dռC <_'<+Q2= +9=bt7˞!jt;fCI>\J;OMGMKo=fa<;* mFO G==>=X=w"=g;i^:Dv21>=5<=<>i +=<0kVw;>=΀=*P=HXg?/=o>vս{4=)<:>VX`1L =f.==`=<4.>ͷS쩼n0G<c2<]IAAX=t&e .=x=*=N^/=G{=+=G=ƣ/=N~>޼F-S=]>]O;^G'><@>D=t=}<LJ6&7:,>w,f>=Uk[>TnH=`7==#hO}lф>9*;=+f>g>z=E%>>ڽ. +pm>Z?V>F>3\hS^Y}cĦA%(֦FF/ټh>O)V=b$,ټ=Қ=.=->[>>n~6T>tj>[:>x?=KAa>?@RL?8 ,)"-1Ah~*P4;>F{(o!?CQ!?%R=) 8pC?"FqiJ> Y?d/ ?V$9?Pu'j`>S?}-`"?0{Q>lȃ޾>}!H ?2? "ɖs־l>Y=!1a$?Q5L??0ξ` '@ܾ>8{>\= x8=&> >2 +|eq.M;5R Fr8_vC,>5V?{>Kh?N{?o?p2թ#Embry^ <;h> +q E3\>A]'-?ؾNwC5?.T> 2[d"?7o·?ha?yæ?*?J궽kE? ?(2>_? ξ(Rd8wCs>p>Ɂ=?Ac;@=Bb8??A:??B??Mh>nL6`u1`#?tVb* ?|q_Zba_ ?_W>n>RYξֵ佤?Ҭ&>N(?0cSg=fx/ P@5=bG=:P? a>eTH/ &ͽ5">*>E>p/S?⺞9Ͼ(ľ侢K8JW;!=C}C5 +?m3??zN>@Jbk&\v?TK?>$NS>.;7'@i(.?>Ƙdj +=ٽ.>ؽ @ͨ>G?t>% 4k;0+*[>kTQ` @G>Uv>(t>ܐ=x龮 SK?ԗd`7?ӐP>N>hP?S?!?E]̽j:A=>/ =0??+Y>Y?NK>0?=9>9'Ͻq7=U>)ʃ-Rj?9?X=Ҿ +7>Q2>ؾ0]?yP +>!>,?. >ۍ? M.Eʋ?u>`n?Tu/(?T>JՃ?#VYD_?u/\?i_? ?]Ծu +v=<[L>:G>>=Y#gG>9?}?>1ҖҾT/bPpm?ֻ䊾lpPPZ>= ItZ< +?pX>o >M7"=A>(>Ⱦŕ?Oٜ>Qؔ?{y.q?4e>g>^?I?f>?g>HD>N>gA>}wgL??>ZR;(?&\C?h<~/>ڊ>>C?Y? =>OP7)M=" +?=>u@>UY\K >O>Z>/> 佛x>Q>&(>p뵽fG> ܼjm0ٽhx;>(-K=>yO!n<ϐ>s(\E><|2>Kc`l;f!)=6>)X9>ʑ=UrͽL|Ԁ=OxP(A&O9kx +ǻ*z<|ti<Ë?QF /о>C + +=>C#?þa104_=)> lǽy:j"=ZΩ> jfFMS,# Ⱦ0>Ҷ?>A6Lۼ*\>WY>!G`⾇ q=,>A=ۙ=݊=]r+?b!TE=:>=uE޽_f=ԽL>q W?6羫.ؔe=r)^=)t5 +j=<~>%ʾoGօ;q}!0=yI +Q6>0=>{>FZ=徺>)}=@.V+Y aB/SD᛼[>N,BdHsb>?x*DL1I>|n\C> 32=>{u-(u +@>>`>;>Og)μȾξ>M>O =/Z.<20. ̉=Pl;a*kh=v C>Tv8 1>X?C$? G^?ѽ>@>#S>?K澒S5Y>&>:6N;S>M> ?fY>VW?W:ס><%n4 i? +ꨫ?E=_ķ>P_tI?~ߒ>!T\bY><\>f=^V>?!4>Ѐ;̞ +?ڒL>>4=2e{ ?&! >=ae>cd׬{w:>I>Mw>P=>hW>7$>t;Z>Q>lk7ǷArz>f>Va>Kh$? +=gȾĨ:*=ҧ3((쟮P>,fܽ L>}<1==WW{2>惽۵_P?`>56ս?jT> (ױb/';= 7½c>OﵾhCu=I`=@=Ѿgg=ۑ8=~/?JK׾<>S?ByǾr'?>Y> `?=q>Ԁ>*y>lg?.=L?E<>\zɾnUb\?_dl=\>O=?0?߼=I?DƦW V۾%>j>b n=-yJ?? ?'E{{=~l>}E־tiW=1 ?>D|=q>>)??T0>>=qg?DM?v]Id>("w93N>??<0 n?l8>s3wM?致>"E̽d== +o>j>RlS;? |)W۾։58AGOe +1V$=AK޾C1aӋ?־^%;dI*?J>؜* - +Ⱦׅ)˾r. >i>r^?Կ>&Ž$B>p-¾$U>ym=_:yֽr< b-! + ?B=QiR8^>qϵ>J6a>5 +xEny?\X/=[?oi5?D"Q>>tI(H>w*L?_B>o>?>״?Hͪ>h\ϾhUy>hZs4>ݠb?M>Ơ4J=Vhݚ>05O=>`E;hʘmymHnNXV>m޽v#=4/>)nT' +ۨE>>6?<ʽ.g^=f}ʾ#>pNQ U EK?-?DI?׌vع>پ/=z?5?">̮Ǿ㸼^g??b3, +i> ?<>>@*K?&ϾEy?3g꧿xn;?6j5#??/uZs˱>QL?;pE>pV?'(,>W>Ca>ٚm>9/޾!~=y2K~%>* >ـ>>]>ؾᲦ=ٱt==+Z`D>2ʾ+R><{H%9X9?S>is5?:y ?L<> f=->)?ҾOPpK>Ⱦ>ؤ>,c*W.؊?6P>^S)廸 @Nx>/ͽ'?ժ&?N>BBj%?֗"*~ͅX?]Q=>}5Ѿ뾟Q%M?,콫Q=1 >T>3[#ʬ<>['nK%y]u=8/(=]1=GĜs\G=nOr^vּE6q=rEQD.-:U=2=0O!c,E>aA=';GA'>}>e|b=M(>W2J1@@3=m`=Մ=E[:7g;>F4iq8&>&hZ[;I==ưཛ#ԼDs^Žge b=b=+=t<O=)=RД)3;( =kv߇<=oѼm=th2} >̬=.=n."9:h=O>,Y,??޲> >U>Av>qK9?mh[=M?>ى&>ؔ R>+*Ci=-L5 !B?-2Ѿ GM4?? M>4k>;S ;~_|G>$>"n3B? h>{9.bh$U=>Ur=i_?a*It$=iVpz +˾=eX>Ec>ߴ=Zs^(]W>ʹ9|=a@ЇkOU/پ:Ϲ=R?"t4o!}>-`Ycل=l<;4 3D>/CJ:>wý"a!ia>VམP=+L>E(x?Q'b޲>ѻɽKb>`>[p= ƾ,mŽƥa;'3s=_1Ay>V*zX.=\yu|#>xx)ji!=yZ>؊?OUż1>=[uU=ӎ=lV=omW=dRϾe-@j + =&QB/$  ŕ=0?=F'BiXs4ay >=Z=o>YӼU=i =Y lC :ըH߽kD ?V4>8Uw `^b>->#>_ud>04l RLOMR.>ZU< h><\h< v<*oξ߯=o)k ^Iqo ?U>0(>.wμkU, ?! S} )'>q?:i=&NP`Ԙb1T>V_>+EyC=uY==/:L>{yz=׺ڑ_3>:Ny2پ?dc>D;a>>p߾Zg>M(Y0 >>vξ j9?cFa5( %ݼ\¾=?F@nj]>C>l20>c߷:"];62[Tb<2>>s>o>/>,?Uwk<(fegR@2ڽu%W:m6>0->Jx> %3u3W>l6W.[ +>6mx?c:+J>d>̷ =$^Nl>@<>8}>4k_ֈ?JE?>LDmS?PZ:?D>'(>J0?Qi42J=I;㼢|>=D>[?;J=ɾiҾr=>Œ?!"@D>P>DN׾Z󾵁A?אz]~;[:Z{>X=>HW>_>0c=<<>k=?=I=X>{==CI=PmtJ*yBU`q=ik9}>g;=Bj>eν9D;*>6o x==lh=(=*ɫFA=K>)J<66=]?|k=ex= nZfgE;J>Eg>ʔ>ȻП>l=*TZ¾ +ƽ?brY>*>w1m>Ȭ>q=$>O>=u>G>>)*I?t *"X?x>azVY>腾pke +꛿.־>3>Oi>g>T<}) ij -# .7s_l>ZW뀾# ~ <羆>#>$>/G=ַ> X۽` O>P7S[=""ӽLLOtK`>+?QD> >>~>=[1*ٽ.?X=DxK>3*>W<ר{~>6>H RČ=y^=6>A' +ľXFyoL?zm [Ծ!D;$>>ro)ϛ>ZǤ?(м{?כ+ +T};˾'iC>˾g6{eEA0?k>cm=k3`ڼUg2nZ>jQ=U#>S/EED7>Xt>@ ?T>aF> 9<>_2>?>>_d>Ō Ѐ>O+`>[9>۾|4 >֊秅>(>>U=f +=)@d>%=6ƾ<%y~ ,m=1<~ɾit+gs>Ɓq`_Bþi]?s*>!`?Axm7d:=B]~71V?>GWB-6I>tkL%.KmBAF5:? <$>V&== =Ľ"t8>0=M"> +b>ZU8;$PͼI=:4;+><2h k>=k>P#]b + ?O2sľ\TW <`3L;˯6>䆶w`C=3V>>hݤ>&,=6;p2wX`蝾>4[>Q! >,;=a2C3;s<>y;_>Wq;Z)h&<>=׵=v +&>QgȽ#N}}<ƾA">Y=Lܬ=vcKH7>"j:;`Dh%:>>VGs=_<7Bd;f<>ѽ< sOl= +5WmS>ih=)#WL`91>D-#I/>>Z>_=5>> =ׂ1pBڼw>*%p}3OA +.l=|@=P6Ai +;l)s>[#?,_͎#C?r>4HN2?饽;=a=^A>kc=y?,м-+G?Њx̾]"$ ' H(?=(T>wWSʺH>zrU?=ˋ=>kW>~վ9S::ʹ>cc>վ}r7Mwd>R>Y%=,R?⤓Nv͟>06=Z?xپ<_?qi, ʱ>p >#5JV>=`ө2>J>*)ljW>W}>-Pb>̡v22?{=N??ľD> +=(K>?f`^? >?|P>K{>5X>M?؉1\|?lP~> +5?Y =֚=\&^ ?)^>¾j? =#s?{P?W;&^&cܾ͚?O=k5/= >~k=(ݽG>þ*I̽TV=8c=N>^>C=2pB>G>}.9?]>ƽ.d{Ǖ> a=>f a > +=>?7pkC)==G>>p>r=(ƾ8D=A<% p?`G|:_St)>>>>ӃϾ}a?Ne>X>6舱>#>YK/C +L E>zD?I ?8սKJ@2=G5>@<>~Fk?g^t=x=SN4YJx:>>?-q={3<|>>ŧ=n?h=@Z>3X>;#R;n=IU<F=>w<ٝ=|<۽e,=M<; ټ<{Խ:< J; ~.'x;'='Z{==>2H=̪<^hC̀[x==չB7<2=_K=c`,үH<>H&G><`SI>!߻S>X >ʾ3@.'5->CH쾽j3)>ʇ>U>@#><=Kg>>H]~?Nvq?Ǿ Jo=;K +I>1aZ>T>?y?= '<""ھ` k-G?'>廯=T>1K?I>>> +c?3$<(ཊ0A)6;E:#R_4$DEL>Qa>C*0L@>!7x>߽I¾19N>CY>DjZ?]'z #" ?*dX]95<=YlPK?Ѽ>iJXw6>=^5my=`=?I1EJ>B|98߽1>o\ 2>Ce//C,z<LY>'YHH;<>IRؾ g$Bl̾]w>\Lh݁Z>t&%I%:0>9H>&_uE +5@v nv{'/[?Kg8j>K=of=d޾ts=\>,rMƽ,>B7I?qx=D .>&?si>.41)"?+.?+>>2n+pG<{E=k=6v=t}C(?{:Rr2A(9~|gO=9M7=pYp޼lﶼ@jR>aƀ??x}*?pP`?l>?X!ؼ=/<;?~ ?W?7?R?ӕ> (?/1?e? ?h[>'?&?Z>h;D>y>畋F<>lʽFcp??,>{W>'?G=:f?A(uQv?>> F=O`> ὞6c:M .o&*7~<]¼̈{ő}=hڽg6seTd=/W>X(V>=哼X=h~= =S<榼ډT%!v>[:=\G;=2>I$<=+=Y,=xE=l3=';>=k_;\<==T>|$$w=_ae+$;K; \h#mO=ԃ1>qPjYP=1tu=D6>y= +<=Z=c> +VE>gj=o=.>U4=M*>[=-O> <3<7=IDZ=/7->Ew= ]9h>q>ҳ Y\A=s{=UZ.L/F N?uhüe5?>bI0e$[Z;(30A".3ؾcб٤ >+BN?,Xzþz=(O6 +-4ͭvHvn9$i_ +( R<}?>D#e=UY >=i~>p|=@3U.9ΌUQ=" 5;EmR>m>=O2=<= +;,,YHK>l켻QD bQ?zň'W?v>>z^><`𿼌+>dI1퍾rV⽘9ɻ={-y<)ْF wL%ڔ{B>=a H>)=꯱;qUy=S38>L ;*!Y]5=}{,=ڽ<ɽ@ٽY02B#d>ٔ=?Vŭ=僾RtP]?ҭмϾ4>˾rheo>M4VkY&t6վ> O_2>< >ۏV<;b=A5>ѝ=u|paۿ`t<2K>N+M"2"=HxJk.=$=ܺ=T=ߵ>/l>&=ۤ>^*>=s"w=*z%Ƽ0.ɽݽl +b?I@?=9z<x]6Axq>[>dϏK>s!-bu=+=#ݽK=k㑽F>Fp=U콺K>Qkc7=l]"I;40>?}[BX̼>~>t=PG:=+{=[w4=c>2y?+TܾM>ML=ou F='FKXP>G gy>:?44r>>e>t4>~w߽B> 9>zXM='Â&>\O>F'=Q(> +9>==" <ƿ>$pLf>dM>s===A|I>>`_p=`^>N2Nxz\>kk>8@V|=Ts4?h`?>'?Ry?Dg?10>H>Pv +R<.:>wi>>7?%!DX>ϿK,Ȅ7?Uw#>&ľ*?4I8JP>U>Α?G>K6žK5V??EҧJeϋ>*:~`>Ď?`>??=ĥUVC>y =A'>u¾R+>Q T?=X9 +80Nza.dCa%ge>Y=?*]֣̾/?TB;>x5N3F==V>nμ3?2>m>]">rkRa'>u헼`>'=?;>Z=;=)>lM!!r>Q>s1>wdCs>>>x>Zؽ>/)x̬#>==۽81u =ЋT0>]ǽI.澽6 +[43tȡ乕 ;89B9Ė9e8Iz HD}86ss`3շ/·85]LvG:::_ع=9M&H9vGVeP9|#9lCj9֛9Ӏa:N:ٷ9 #B,A9QAU!?s%? +̾bC!d%@Vn?CH>憵>><_> ]?m]ߔ^}G?d-GnuD??&6t?ϑ?!?,e>XjbǾ9X?kh)4?Ұo>9==>CI?Z??yҾl>Xo=?(>ǃ mB>+&>喂@x?v3X?u"?E=@n#yX> +; ^;!D/)50(-e&)>K)RU˼@m׽D^Z]>x$e+=Pn>\re ='2tk>D=>j> +羐#;DZ$>,Ǻ>9D8?xU=}>fL>ZT ?^>/%+Djݽ~hP#J+b\Ķ7ָe=9?ñ>?%v^>>?ԁB@EԿ< I+Sz٠0.@:Joq>?@jCt뀾#>Y*4+>_,=?$7=>=m{-A|?s:?RPJ~\  Ak>a m<&@j;>v>Z"> 5 O?ɷ=6Q>G=(?GZJ59;u> +?οY> +a05}Ǿ6+)-S?WLB,XӜ?~;7 ?2M׌ [DFۿᐬ< >~zISM ?q<<׹1m>SUD``??˽X9"??br\2?>kݾ6dP>?+$3Nz >X@>Ԥr>?^;?r$@7m>'?7Gǿ Z > @[|=y򠾫>",7h?W{cd ?? 9=t?fҾ6E!B^?_>?ɾ7>\> $??@+ĐA aZ?7{??{YþέtG>fξR=ve'w1>S?Ͽ8>qm=NR?Gv<?D?1jq?w從FMzK?U?FQ ?+p?Š ?{1?_ >U?q ~>- 6?>~ +:y8YҿK?1:c?R ^?l? ӽý:n>w27;S ?MF>յ?+ >׌>H P&?գ?9>\ٞ +?Lы\09#6?{`ڣԾ+8vEEMvܾʯ,!>;Y)@3 +A$0>? >+F>y@>k>'>'{ӽŽ>?־{2g>B>jK> m>TWԾ[>,&g6ߨ?:/?fo =ׄ>>sۿſDJ״ƽ`0>*('b̽?wJ>B#>*ɽy~?F>. ?L@Ghv0b=Ζr>m!9>??x=([?by[>9W?=䜽Q>B?|?dԾO0>FsP?t]  ?к?T^?tߊ> >18E +?t>6a>L⽩8p\{?r>>.?!Z?l?!‰=;k½{AE>^Z>v;Ҿ=b=򷝾), ؒ>N'<@$f˾>ݾоo~y˧B>55 'w?ƤHDڒ>"?_]̷vŪ?S|?ǽc>R?y/G(/$Y;?F4>~:I>E>\t'3;>im*U?G7E>z(>6BU >ߝ>F,xN2?leϾW/1L>JJS;Oþ0h>x&[>>>q>Hn&Ӿ\,0?F T=?=48 +W>=S?jd:?>=!>{x-;)>⾺{]0>u避 +FD?KUF8ui?uz>Ҍy@?R=e۾}Ӿa=di?`վkD[> ? &>A-#H?5.U7*>{ >OIE? ʉ鋾{B>ʽsQ_{˼CȾ:e!Li۾>,0:V8x>!Ab&r@aM?(8* p!޹۾J⣾-˽3PT>b=!1\>tI.=)?A?&?4?> H>=g>As? ݿ[h>ʾO7S]i=]f˾7T>,wD*4\?H?>ڍ?)>gI>7>k >nXsP>d=?k=}>ؾR?S +r]?p?4[F@l5Xy=3>|nLו/l>GMC9;׿k>粙==??Iw.6:D=4@+IzWD=>> ]?Ќ>6>6芁̾vm >C\?㥂>-??=/ ?vF{Sc5e?^>LMᾜK>7$x&ϊ>þuo +%<2?B?ƾgΠu̵ ? +[ӳ:>&$ۦ H&t< +>!b"QYxe$?I!%sᄈ?]h9> U!0*?"#w>˭0?yMlJ?,/"ٽ!?>@jveJt ZGWG>%F=>úC> e?SI>=4pty+?"=62#?0K N>5CN@6]>>U(*n禾xuR??*f>%νAu=A>2@澖(?M>Ӂ>Cy5>5?~QW6E^(&?,&"1!ؾ>PB"=a0`>uվ jҫ=kU'>>da.[T]ZV?Km>g=?ae:3U=X?.#AC2>`>>Ϫ>@Cq=%lX?h]>*d>lnMU.o!\ %^ 8>*?>5آ`>{.3/ܿѷʽ*)5Eվ=M>p>!,҅?O@𥳐)???ZP= 岛>"+p-LJ >V>?9\_>똾?=SZ>x># P}zR<=y?y?Y)=aȇ8=\Iſ{(=3Elx + R?2>bSGlƿAh༨d2>SLw=d۽s.[̾ӛ%i.h";r ?5w@|>/F?Ib^E=M=I׽V==e>{?_h>+g=Z ^9)|>?xGq!?]> ⾏S*[hE>?m >aV= = ?~B!rBW>!ǫ?@;'gD8W v/>y{?U;`?r> 3sy>O#x@ >{_ >T`=`Bžƌ>A?Rh=iM?JS'?]IL> ?)ZUeHEAh>>>l $R?kZI'1>?#=7_Jp>=bO?sýZ+?:>&>%NSX֪hET@Y>v>1L?>y?h݃i>x>U>356n>?{\z>'!.?'L>DZz>H?QK'f%3)??Ora6=?#?xV>PG?=~8 >&%>ɾ$r?볞K$N#.? ?n>M=K)>J럾%g>41O>a}—D?؍<ԐM?=E-CUXʙFW>l5>Z>.;䗐;jD7]>>g'> セ=ޮ<9?= C=3> xн<p۾<TxPP~ ڽT=׽F0 ?b8?WB»EűoÿW=Q=;WG&fNx>|3I?=2z< >p>;Vjt:ɜUh>f=@R>Ry>@=?$ɇؒ?[?Pƾ:?^̈́{".뽫Ny>2=ޏ?~?Gп{a =2@%> N#kms<ĸ>4(>w!T>w]=b+>E>>}?3-&&j}ɊSu nչ[>zh4?h-YrqA?L5>>z_3?KPDJվ>x>l>d>:< +?(H],cŐsh'Wr3&?ggre¾?\8? k?I LҾ'8 shݿ<3? BC?$ֻruZ/B?7>4o6񁊾.4樾.a;?wE7>E8E0$?Vt<@I /?Cu>x>>tYS<.>="_<*9/??B??p<&>2;uPɾ~߾u?%> +[\?!H= =$n?.0o$!?2!>p;sڽcY>b?D>~f>l$H>?(?7ԾTJ +3?+6>=b`>.`F[>?S%>˹va=2S?ġ*sbj{>ڔ󽌋Hdz?m:þ I<43=㭾$8>#?#>y>#>=2?L l|(?%'?$Є?=:?w>Њ? >\<>65Tk=m厾nL34` b.Z$>>.sC>%P>>>l̤>β='/?o-^hI?ܝ=?#6ʼMqsRP?::%E?$Xپ>?= A51@ʆkn?H)ؿ?FH?zԿܾC=?Tؾ}?3U#>=Y>9X?Sӣ IN?}?V?`m;5tԃg=vס>1,r5=KքXt>j=O^=w>$>㱽2N>'ξiq1dk3>@z>g l=i=UF2CyF?LH9? nn>0% ՘a(?DYP>=Ա>0Ikk߽>?J>58>Lo0>ʎ=@P? \߽>ƿH?"?c پ->q#+?ԿbJSâ ?vﴻ=5?߆12@&&N=b?G?z>6߿q>PJqFOgP>^?"q>45d?¿Z|́Wd=;R3~Z&e?hN?A?Ote0d/JB>8}?No=(п4?Ud}yԽ;;$ջţǺrGR>{b>t{>۽=/#?>e>c>9IX>V>'þUg??&X=}{F>en)>8<3uO #:Oa4>y뾇r>8H=+ʫ>%t rA=Q0>'>)=8=QSv?qw f?>I E>چo ψ00>3t =>Ԥp">ξ.e== ?>$$?(`o +?-=g@ƭ7^>dȽᨕR?2̓)W ?|>? ?Nv?24'?߻)=V+==>'3mw_.?#>C)5=9E.ǽ>+i죾@)Gű?<'L'! +p?@?(?OnA>RFžj?'>Ռ>-6,8l?nN?<>?kLyJ{k`-hr&5? ,!>c?MQ>~?kI>\do>G @K??r@־˰0vp:>/Ǫ>ك?4h?\ϑ=p 2?|*#s^lQC? >,??f$?p!ZW>cw۾;$1??J?A*G?nuq>,T?R1>sk?L>#QPBA?6!?7U ?[Hk>I>?>޵I?xϭ?U`/S0|?iоqL>K>1 +b0?>7?>$5=>kZlvj?-?? (%>@Zۅ?>0>; ?ٽ>dMZ>7so> 7~X>E(]E3?/?Є>Hw?/">-uI?(?VGڧ>=\??lToZW>8?nCkt1?M>M> ZbcĔ?7??>P?Fo?mB>ʱ>Z:b?G?]2?+C=h> B? EB?j??F!K?Od>M6?/R->)?6R= v=lk -u#?qlb %+S;-F>'f=V.H=>>'?->=FF>[.)?=6=1V8 +=}=cøQUQOtkF,wY8ι$w=@==#Ͻ<>־E=0>I>EV)21>XG=鲾B>烾z >b(4=n>%QKȽŽ7 (o su'Ip{2^ +ub]3r.1,VzH|׹Fh7 8zh9lNF8價k}=`>o'><5v>g?a C~Z.>;b wӹQjm﹊-ry[ɹ.%=9HV<h>c=ۤ )>b~/+0~|෵=*ʹ~5繝mN8jmȹ*DR9B91B ":9̥jI702ӹd/Y9 "82 ^>>)2=Ծ(}-!zͼ29 #|- N9﹆Ϙ85ON8B0bu"8J_n8*9S仆n%t޺Ԫ9z8|k#U"⤸W"m۝8'<#_V;(Un[Q>`>w8?>K?>/=z9Ӽ=P==IX>ۢ=碽J>I$>&Y< #^X8s>byսs;l>fK63ٹoFU)tNZܣ='>!+)>2?TQ>7=oJoC{>Q=>ki>'6K߽K=7nV,:3[9{ +uޫ8978ؿ m99Ք8\=R[CC00rS:&zo͸ˡ>Hr⟹K0乘c չy(8#>)h9=H犾6|<(Q>7n6>0=㤓>fD>Qs:>s]=S5*:8A =:H: \{;V(%.ս>=y[> sYpUKcֈ%=,cB8tkL0; ==%=> {k=x@<̟=]}DžO G3$Z54FS>st[a>[>P)P2>@09@or!b[ʸ996Ѹg=t9wG{s๐9c;Qfù,%?0+ߴG|RDF  ?q8__$:8mY:-Dz=R\R僺%rLtΩϹWQOd/'xhȸp*vb8kᵸa 疩6 8\n`4{&M+|Uʹyq'勸z>9;a}>$=#+EK>ç=dgW,9H=?Ul>s+9>%>Ž}>Z;M6u=hr@8=zKg¼&=,8򗹾q¹KnB"˹оξ>wd=?%>G =m`#p> /3T;6ߨm&6faR̼>h4>.?g=yd=Rl!>x8=ùhL' )+)z"[H 9pv8]x%8˹TR(9!4㴹9=VqhCb\w0>>4>'<'r>}==S q8n{鯹.QIqиIUX9e/69=w$e->cй 9θk!ݸȹe 9/ɹL8C[[Jma99)tɹ9&w}Xr98N=i> >qG33T>=1^5[8ްD8t乮u7K98819h-VB}8A8S۹L ~E9kȹݕ5REV'})v"=,>p=YB7M=l(Ъ;;==ι +1J׹M iEҹ+G3Kw榸>:do8ι0[>^87_)K9ˤᶇz 8+u10}K׹>>d>ul>RI>i>ϓ>>->0=5==W >d}>뵀>=~>D>/>*# =.] ?%= &; =p>}nӹӹgR:̏x8,b3@<<>`E7.[X ƶ=K>|81ە߹ ^8۹(hw7&W8rP@8,`ɶ S'G'b2 ?=wP=#> +tL=e(?(:;(k<w&}f)ùݰ&Sxgڹl]&lyZd0Ƹ@AYع3o̹qojڢ#7ueиҍ &H8ӷ&ql=J9>+Fu' T>%1Evx@0s';¨bݞ/>{ܙ'n0tӓ(> ĽX┹΅ +& +|0-7|x":  צ۞?ʝ>> +Ժo3kb+νdǸ ^P߹>KZ?<`D +h|v2w4]?z0>s`slkS𯞺Jt O빱'zȽ )e>g ?wk߼K׹Y=:e4 djt5:\= m¼J>D$|`TLpļ6J40𹳡kzm([<ūtvm3Ji=әeY(*i2onǛ<ԾYbr">-v:9e>%/>(£:L:(>|)@:C:lIY:49 80?i99#I>@:Fȑ;f>f:g=ċ :kK>ֱ>'>s:P~9::>jo|9:7MC>X:z==>9:wP>SU9b98y:F9^e:I2:):]9>TZ>M9;Y : > 8 :KH9YK6:Z->"":\<9z#:y>:ʜ919v:5l> +b:9rh9&>0v>s7= w9sM :kQ>_ka:\%E99K|=0:{ v>,:KR5.=YQyо0 %>/Д4"v)8$CK<)/^f4xoE='ھRGy>R) f5/m U%KױAM'$l#[Zv4i0ʒltCW`=!HԽU9AJ8Ը"IhnعX:l,N<]V0Zݸ治1! ^ ;1?r-p;+AeP8f|7&&+ iμ&pqc uBvxs>b똸)XJ3ȹRnCӧO]AU4v. 2 :J>jFwG `:[>;f57>l:]9Q\=994z:2U9<8#87GE99Aw>Pj:*Ic>:_>9>E>g>*:K8YT:>:6$9E: ?vF:8n>fٛ59%<8K9g:8:̗:|N:oͶ9c9&>F~8>#:U>O:R:7=Of>Ѻ[5c>d9iU:)ۼd*:i9͎19i> :iI=v* :=ƅCw>5z.[!6Yum,)Kt:>+u#]e7F=VXUԹc*rĵ>4*>BV*?Ac_EU–"Etg$ؐ|27>٘ߗy a$֙8>t =LYx",.KLq[U tvp.%527S`wqJ0D h_ZBmO1%=(NUU}Ƕ7fʿܲT-^8NG= qHgv'r57zfǰ>e@JȔ(⹜<5C-d-bI{_I[9t=@t>*Hzv<@/>lG>29T88>̽4M}޹5TZ|9N8oJŽ)*9d=Zy9}d4qո>G0 >P< -$lmϽr!lG$94́я9xb$#9H>)u|U>Zb}8@> +6 6>N] 8OCȹ3 9:> +gm9<8Ah :+B8槾8eb@q*9p?9i9JPխ9m%9rB>d>^?A8u>b[,͹n-8G{8 ùr5LvpH9 +ַݨ9E7=e9P*}ؽݶŹ&=^9e@R$MNd#igg99G4ڹEg>?xn9u˻f{9 +>a#>{9*=s)99~791Đ7\(L8tVT)=PU Bٓ9&891j85Jh<g!M8XPܧ>#8d!0>3ӹJ>gjs`8Bؾdth=x69{uviF\8V>:<[/ = 9ௗ>l8>;m>?my>wܧV>v'&>0@ڼ >d>FrͰ>U=8t> +>⅚6B>9> +<V>J==, .<6>=7Ͻu׽uD>赽^`>=Z`;=)G ̽ɤ;Ҹ?>K&f#QM98 ӹjUkEuǘV[<- >M8}=𽑩C=&=` `>M=](NV>=iPC3^=W=ɾg>sP>ҫħ> ^x>Fՠj=Q> >CQ>K=>>ӓ8C@O,>ƓXn>*Խ CݼkDS>Y VW>T*$1?'O6|< h=[l>*=TX< ?0?r,|>g"<{q=Ve=ʱ>tp >>!>)>OL7JEYUԹV!P9C=V&<  >>=+<]=o;m2Ԇ|w@>%l ?ֲ=d=b&>9=|=17=;= +=9>dBL>Nd=}=!B?&uc;2=< O/bL=t/=3> 귽L+=ľM>%=aڽ= >7N=j3%7i@oz&"La<%[W >.=XeP==j O>-S*=&y=kMϢ<=ok}4> se>:>83=HbL>fHD=>8=|jf=<=5^`7=\󑽸fP齲bL8(?й9#9ݹ.~G=d>Ja(>`Dh>JKn=T=EUw=Fh\%ڄ>*=aʚ>E}YP`>pJ=mD>Y^ +ٽ)*=s><8>> L#q=(<4Y=" >c=/>?5qo޽np;O =¼)U׽h-C=gC>2=q>=#^>: +=H:=U-=}Vضм\>J=p=3>IXR==:=' = =@8==92=u< .==ؼaJyݎV~ Ly)ے!ҸZGй$wtc97ݠFcvw1Z>lɑ=:5<'|>E=n^=;8>/;;;BNN>l>B>7>>v>ո&> ʎ=ܽ`̇>D?m [3 +LT;vHܝ >}g>m<\@S>!_=l,۽:M>G<+7}=aD>-=Z<ڙ=fO>= >ͽa><>%>&<:'OQ;;#?ܽk};ܿ)t]=zQ=_>!$;Λ$= C=7U=C=B<> +a\ ="g>q<m0<>Qv=L?1e>]c->>/=jf>->Eb=xYY۝7;Jj+=_r>==&>=;ᕑ>/<`zG9^uih '>47Ͻy>MIit >56>ŏI=,޼V +{f|=AETT.c>r/;s>(5=W%>WL͞7|>sJy>oB==!=aS~h|i#dR:-=Q$,=pdVk>tLP=Sn==9ݹ =kRCy8mJ 8`jݼy<65`G/<;IW += Z>a?e> ?>V>>6c;J>i} s=q\` #=2;4;;ɗϺ;];Q +:R]7:/ޠ<`x< ,;ck=)w֪Bѹo`9缂|ϸ|9UB8D~ַz9h9I9!r%չf]QN#9r8;M=8g94Ъt8Tf"bc :rߔ6ظ|5$'!/0>==Jk=N?=h<(> FDԄ9vt\L:k*:6zݹߋ8]:d +W9/j7◅>ývA>]ʽ>C>]y=@0>:b? >T>VU>=c\=ˬ>HŎ=4C9Rh8ː78ֹ}gV>>_=*>{>{ȅ=w=?K==0<#^'=_P=מab:M?=猏W>>A>m//>yٖ=>rA>O>,d= + =29|=9 +:ipe_ cs:ϧ68$><?C}>_ᓽR><> Z2.͹Op7Z8EùF6'*?_>t=>> E;8PN=>8>&K=ԫ]⽨=n=J= >Żg|=(;׽=i;?U϶U9d9^sڬL +9~C>,=7pY>Т @2Z`>q漦>k}i>= z$=pG$M1 =7?U=|xӹK29a7Y9 8ƪNWpnp6=>>ث>C>乃=|;B@;y;R=:b<˺=u?=ͽc<]X^>>f>-a>>=tm>(k>(d*F>j@lp>G=9|`<>r=A%X?=/a=z{S=w=>w>oPg>r=q>y>d>Ծɬ= +>)>E@(?[=F?=J(V۹۹?&m^8xo>碾>U?&V>Y>/axR>eO=VCcH9/*:Ϻ&:]|N;=<<κлuƻ +=4=rhә;lպ7_*MxW$c58;2B0:9TС:<]<96HxQY,9{2=x:xE/8e)ݺ! "pyּ9|Ǽ24=S&=;</};<̗<޺:>>}w<9'5!=QH޺;Q~( ;^R=ӜKr>KVC;v:=XV»F/d=Z>j<촵>U&;BA?~sPŲewi7!6)Zݽr`U>>;=N+Z4.=~JLތ =G!!?%>8? 6Լn>=Qs丂Y<^>=X9Q .!"TJ(ݢ>5+&3n< T>!=LF^=%eK>%9>Ia=1<='A8=k=g>3kt>t==j>4>UYN=ս̬>4ú=r8b-\}:@=q 8#=q=;>=R񌸛e>>_t%_>;0l<,,/,nױ=fm$j>U] JJ8{>cHpҽ*>g8OD{Ⱦ/>l>>3aݴ >gg=tػ[<<= q>Dqw(xe=Y8cM78i68si=pb\8'|/D8SX;_7XԽ` =~T:檍>8) =:t->e<٩ަ)< +<{=d)CGϽe>e= *>) qd8B=>A>.+h)*>9A= +.<='>'>MaҌ>k=>=ϸ <|=L =b:*!Q=FG>p}>1$9==*p>>޾>;>1a=1h%K=l=0> X(><)2ij2 n=縤>`۽=Lե1<Ql!= +l':=~|-7 \8 +|>>(N r8{3==>Zӷp[;R=پ =R\S9>X=սw= = +===n[ľ> =ڈ>A;p۸(=W=Ƙ<ȿ'xϏ> =>/fiPU&==gbYN<=߅;=kD$9~$Tv=a,>Um=);3)K=XKUp9%>[ý&|ƽOD=~S>N=Nj=7E>̦;>_i<>F!=:sI8_9P89ƴsk=~ [b7??G>H;s~k7p=ŽKpYh>G7O0<-n82̽$ ۽Vh>\<Ռ>>x>)8>>=ҕHX>r} l8q>&NJ;6==W˹="=?V־=`5=1N>#>>ܚ'>YB>P8LIr!j<=Ri@8f=%7=<l=Ψ>,{>,|>Wn=p&vսT}P(Jst>p 9'۽T= +=:Z-qǽZ'=;׾a $2>{EmT&>`=2>gK޼ ;|(0=ɥ;/H8>X7#> +r vv]t\,>0=sp= C}=#';J<¼+V>B=! 4o>cmhm=#> {<f[=9ga',>'8 X>=Y=и~y2~bƶx48ƺ=>,;=щ[t½}Z]:<'> =t E&>^#M>3>=&pK=t>=g>> wQG< 0;r*O>'4>9=m=9VqἪ>=9F== + +>>> nN6$<=_>{F>‹=ВI`u +9E<=,ř;=$?E8cy'9=ذ9?;jvC9Cl=>l䡸ja=W&U8>L:)h6>$>9e@= =->zG?k6R>מƽd:?썵>7>A6>~<[J P:u=?Y!tYUrK')=5c=>=D]<ϗ=߉|Yf]4k=>Y$>'<>\J>'/>.v6뼸o>[k=l>νs<[ >Ul۫pހV!>bß`NT;|>~"8>= =T&=6{u==8=?X;?~j=8ͽt +`]* >z>׽M>Oɚ=@>>Y'Ri>ޛٻNmyV u9@9-ʐ8i'xƹ7Lqg9ܼl9ɽ+V=@=Oa@"[=W2u=P >56Mw=_=d=Y\ՂJE= .=%:R)z>M>`3>L=NRWZ>b-=T#8_0>3 =3|>">}0=>K== hpWνX)H= _ʽ5my>={ ^ʊta=80)=3>>W5C|8ƹ/޹x_eŹ67 ٹH^/s6d$"9̸8݅I={EtM=|v=<眗<=w;6>w˸ιꌹe78ͧ 7A:jL<$#hF > ={=L|is=z|@{SzJLi f6=|нH6>CR>l6=*ԑ>(!v>P = ;qn=+gL=">P=~>Eޘ>=V?>UwV;>}Ǿ*<;>!>S>x"5Q=>7=|ˢR8YHIcJ'9(9s8t*}2>k=6>M8=~=.E!T&Z<;0h{k}]>5>)=Zt>>=P Š=A>:;]P>AO& +NVAr@H_O?ww9lL|/:Z ƽ4}+ >===V"_g<2oT<^ͽCM@d>U> +;=7d>e=! L*>78UZ\D4;h@;/MPQ<?}=>wὰ߼.><*>= _=tD!׸ `fj09f>>஼=+>yƷY=FS>OrLs4>p=Ḽu|=F)>F?C;밉>Nh<:˺;VȽn=<1Q[=<>3N>v=<5?htO=A:@}>Sd* ;Q>{촾/>=q<0J=v\b7=j[[ >7VF0P>ԃT+=t>P +=Yˊ@=4=ztYH~A> AY=񴽛Յ=/8ؼ~>u>">Fʽ3Ґb/M>$>U>֬kǽz=҄;=q{="=p>#Z>/2==x=WXF6M_='tH==j=w~<.l@D=(~iE=3>0?S~Y>a%n.dʽz?+ִ=Յ=;N>Eg>tb:>T_>q@>3gL4=>y ?CEv˱]=Qh[JƓ3x{Yc7$󲹾~i+YN=s((>_>qV1;Y tc1:y$ z=l<*3%A"ن;>S>3nD> Sa>"ST5>C!i Ô>w,?IL>(;"?"#>:L +>YS>=ih>QJ>>¼ \=<(>Q=,l<'>9L> һF>=?>뺾?K>;l_]ߠ;>&F=e=]%)Ed>};y==K7%?t)zoS>>ȏIȡ=&,m&=o(Y=-$g>, +>N> q>+D>Yp>}>k>v]5=h>q=F8/n)>V>U>0P +XңaJ>F=Ne>&>r:>ztK,T>pkZ>>>Ag>>>G<=+?=$a@>>)>[> X>l+>kr&=<,>\v>>a\>]M?y> rȓ>E>t}> Ⱦƽa۽62'⾝ o= d&k">\˓g =>nn3,GNN)]p<Ὑp>SrP/-=O?5ʡ<,Q#>޸?UȆB~>[.=>C> /y 4U=Qi> <)¼(-'[q`xS`=HhnJ>߷(<Տ=:=x>'>= >dB;Ҧ}no 0'՛V0pi=ϐb>V2Ľ<>Y;4\>&+>;pC&R66b6@>2r;2d>켦YE?5.x> &&磹4*>>$̽.=\9qXVB+߽wL((X}>>`I?g&LSAAq ARXØ=ٽYFW?7>?$?걽8K@r` ,To Za"Y=N>IN-p>8h=7 H͝p۽yӎg?`Kv!6V7FW"&˽7>i=&XC[/9G>B?H;B8Bݼ@ ?Zt.>(>>?`BY>Y"w>>C@ >E18OO>޼SR=*=؊ݽ^>+ +>~$>YgBp8Ͻ@cF>ڦ5콐:轛=hs>!> .L8v,2;>/>׍>>>Zy=y!F=>60?>O>S<%>6 3>v_z$<=[>C;_>w)  +>M6>rSe>@>vX>ٱ[хA>wg>q@=Rվ>2cu0bu>[>=:T+q%/b>ý>>d;>f=ϐ=0|=q<1ցFL>hi>v.\B>о!=w(& ,P9IOk< ߽=^y7$Eg>3;zӸ=XٿF2>>r=T=iɽss />&8v>4;Hq>iw>> h!>J궽‚hq8꟱~7E!$3T>)(X\ݮD+Ⱦ*)>/ +5?h>sdb7<=\<炉=p?~g?E>.Yc=Web>&u7[R=q=>Bbǯ==龩uv<<>ne +&0=qE=yļN;ۏ1>ۭJ<@>$H>m=_>ㅽ-> >e>=c>N=8͞=w> > o,I56\>+>$, ӽGA07)f=8S=y=V|9?JQΧ%=e>T{bیS=e<>* >xٸ=6J\>7f > @N=g=> =Nhi>ݽ=kI=cn>mض?>k!>[=\V*>[U=rB_g>l_9JY>eq>,>S5Q>4eJ='-{6Ͼf>M>y/>i;>jA,>e6wc;>1!I@y+In/_C= 1 dĸnOn D%;6>\d2;=>8c=)>>̷ MTrk9dQ>%5>D8U>Ěiv b>g=2Ⱦ_{=nc=S8\7> %=F- @>X)= XTivI> ֽ+ntq>?W?># AbV>>qvؾ`>ZUB=(Ng#Z>I=>>8{qd)>=&x5>Db>_J->{=7Bjb;"E,^H=j=s|x>߸,D > >cmA># =K=<=,>>r <$\88ͼP>Tr=eC=9Z==x5=;K&9>=<ڍ8W>*4*x>/ң>L=@<4"8T[ >>>Sg`}Ƈ +6׽HJ2>D=Mu=*>Bt==[>FwPH=]i>z . >g}=>=1= Hqъ>꽾wB> +>|(<ὮuT4,>8 >i,v>>uy>ؽ5?=M:4>ҙˠ>%%>?5<4t>Yx#= 'QNAףҽ!"Ne `#>C<(P|Vi=T)ؾ~1rW:=g~/$]BA7Wr嗀rB=A[U=> R>EE ]>>[qM[>l<8'N=S(I>u>*2 E\u4h׽#\[<]H>< BH .P>+>8BT<>(=u>t4>R8 +>FYa>;Y=25ﱽ!0#4ԣ>8%%5>\<>֣=j᣽,Ž=PU*K+=8=i>ğ֨c>?>⎽ ۚ=P>l$mZPæR7=wzu4=n.!= ؽ3s[M#꾛pj[@pa>AN|߽;u#n<(bĪd>= >= >$>@>)2j~L=s=@L?W6>3=7G=E6=>}Qn=潟Ֆ=AY >e/Қ<=ǽ2h {3+c勿锻c|!4=EI[MB ɍ- 0> >z=D`Rt&VRf9Ž4=':껒"8ٯR=# +g5>޲=ߑ>'=;Ϊ=\>o w=콟q>\F=85I?U*>B,>$>4㐹=&N/@?=0ԗ<W%>WR>,䕽q*>[̆=Ғ7ZD>;lWq7WLNm9*Թ0=Nu<>=Auv.>Hr;R=>ѱ)=S4CuYd6!vFF>~U%>{[=G >>i=e>>|j=(ȽuŽp=䄾O<4W=#dүn=ڧ=Z=<84<"P'c=5>:Q/>d>⽢=1(> $=ފnRC>h>sotb>I>Tt"Z昰> kg=̕<%A=ۼ=UüA@k>k +6=;>2_=& [< +g弒(=MR>. ++I>L>J>L=NZ=>_~Dw< +IWP,,<<;Ќ>=$(>ʫp>o58p<߹9U"'8S/58\Zs2>p&wRIIm=3*#.UgK=٢߾e0I=XA<x>w=+[=>=H>>v:>>+V>1=R/>p>BD>>^Y/>u=%i>*q>qD; R4?D4Oc?j>_Q> =|b=&'V=h="ӽU 7$CB>0 +=SLIC>^W=E7><>n=ݑWk< PٽA?>W<>.=g>"[==S))< =ձ==~䨾ѥQ<<.T31ؽno)c샼GBEi߽nn9> +DѨ>G=[=c +>Oj=(>>h=6u/Zu)]>t5[r/==>*Y>Ȍ=8=Tj>LvFDԽi.>$ P>F;;;4=);2ֽm@pm>A:6>ڢ-hd;TǾ >F626| +Ͼ!!\=h:Jf#< >C6<$n=#M==|@=pQ;>:Z2>S>%Լ>>> :$> x+OSpkDWԷľ̌D6@$jCr=Q= +S> ==^>wy>=;ۆ>+>XԽO~ֽ،|>*>6ف:"缯k=kd5nJk>1>O0B,>S=Z?ܽ3@T>A#QIu(J4Ľ(!7H=d U>%>?>ff> *>8X>"=%j)> q>`WC<[vQV<=T:<;>hżq_>8.>yw j>5νߺ:"#>#%Q?S>|E)H%>F>>w>E>S#)>Ki= m<8нgA>rk˸H٧9OnS6 9㫽RP/Nc_>4!) QɥétǶif4>ƌ=Ag??,=f~O>r-=r!>D >]>%=J=2='y㽋>>B;>)t( >}1> fy0uΆ>Ջ" MA>O4s{=S:9,>dn=aQ>j>]eϾA>=q]I_C"=kb!?)ѽ ^)293xx<; \I>>}>(=i>>>z;IB%E@ļfTAj? >=t> = <,$=}X=d=X!-;V==%=u->J> =Ω> >.=D>rR>f>SQ:=Y<{ PE^N惽UJ>:b>Ɣ3>>0>3>0>_>,Ž DxV$=5꽩ѕ߽콌I=]O즽q==M<ߗ:k$܃_>u>+[=dqLQx=B">0d>-ڽߺF>&=৽f4= 3=1=>=<Ԩ9>J@p=PJp<[D>*A>=!B;<F9(,/*:Y)]96d$TD=Y>ZS,>->̕y>7Y=DT>->Q? P b=ٮP=٠>h/>'4>1 >?QY=u>(Y>]=+~#:c=Z> =}> 6E? ?I7?.G?>YH=|>>N?sȑ9*6VdbH;s>%8.f~>V=<1sj?|?=l

  • Nнͬk: +>O?/9H>8gaR=vA ?* ?戟=DǡR>[?鞽JmA=1CS?{?V=ib=Sv0͈ +=<>E۽MĊ2QZ=11*>iY˽`+q3-?耹p=;=EWi4=<͊;: > 5> +!? +d̼W0サ=>!ܾ͝(No#wzLj=N uҀjWb!e3ƽ˕>E +ʞ 8-GRdɼWJ;>:s>>GG>N>>˽=xnj8t>4s`> T=٧=.3ؼ̥=Ņ`|'")ƾ8H%Z={X$>0s58_6;? +O=[O=Y(?(+!>7;=vE=ߎ_~(.=r9-< if=# +>d>!=e̼!=i=~ ',;Sb1BԽ0oݻH`+T>zE =ܫ>q=.Xj:R9>;N0><3#?!>ɰ*ވ=k>;?=Ыf=νyDmDVr>h>PjȾv;,d?={F==Մ@Q="n>.G!8 =Ybw׽ *O>d>0".ɰ>G?z=&=8 cڏ8~,7>?ɢet#=ȵCz=-L>;:> + +<˧=.aA=ǵB~U=ˋt"?ެ>6>O#)>Y->Q0 l'=ȇ' ʞF%>цþ![>6MzAlP>i1i,)> ><+>p1>{>u= +q<'l>K9;#>Td ==lbB>Rd=Pq=m=Qo$񼅽*L>ya=wE=*s>|><#W%>g>=&>M>>~Q>=P꺽=j/;>=/(8PjK==Ƌ>A [=V<`;JST&|-o=anA7ХA#Jb0 P:N>8>; Z>F{u=>5x>ı`==v>$㾁$==]ȿ=ռ@?7ZPxJ 5>XLޓ>zr?J&= =Uѽ4=9f=C:=u>U6>ϗjE;v?uE>2s?w>X>> e_>%g> >8[>T͡I=)=r;=`x>==Q7>.D=U^->;{>P9cg=D@ G<1W==2*(I>{O.3amp=ڵU=2:=\)==5g>ڪH_v8Q 8>Tl=8'ŃCU>X"^=]½0>+<-=2>:b=xF=[@W=' A0<b沐ӭμ?;rpO>&=Ej1=#a= ]{</@ u2=>N*Cy}SܼTx!>R3> ;=:=߅>ӓn*ݺE$#=WVb=KG>I >-==9 $ g޻5q;7.A7f>Z"Hf<=>@>52#?0PL==Í=hQ<8!MS>?M:8RuѼd/\UM>K#B2ā>.P?ˎ{6=;p!#)@< >Pa&>ޥt( =G\־-׽`>]8[{;A<ýQF2Ae= :>&<=|.+<=%>o-*>W3Fp;ٌs `{=Lq9==F<a=M2+?$0>0žו<[.>G==wϾDd:>y-8ǽh=AB۽>S>='=BT=?>@Xĸ򕶽9׾}N>Aپo潀X> /=ʬqyYt>*>UVY>X>*Tp>-=<~ =߫e=x `<"clYGB=E +I>QA眲پg>>/?<x= [>>Oq m<<D>|/oμ*#>r<A |,Έqu?o۴=?K/=<>h+=C)-a߹=Z6_>=p.kЕo=Mj<7 u8=䷾`>0aܹS=RU=6=]?DŽ=}+>Ih> |I> >z=UZԞ$>[a)0ݾ{=ʆYٽ*4=R }g.<϶EK>\bu=䦻+zG~6η<4 BHa ߼oj5=h:~>ƹ8s;(&%Щ=ٳp>E1kp8@=I׀]༻=qmE=>cF==/t<p%]p=Sm}l8(c=Y>Cn=~̼7b< +N}]=6>D$7 qe˻LFۼ<&8mڲ=BXy|=+W>;>蕾="N"=(=HH^ۼAaͽ.c꽗؂>wk#>]=p=2lg>Y>ͺt6<+>¦>}C_}b=BS=h>ur

    a!<@\= ǽ- >::%=AX=E=:G;!X= + +6ije=' 06Z>mꄽZB>O9ݽ ooA>VFO,>jV#?I +<|w=00>@j=֩< +<_ڽߝ>=y<( <ɜʖ +S>Rh\=yEo<0_2j:% H<>\޼/=0=$=/g=6̭C<=?!=RA? ?[9=xibT2$>b=)t=8/>E%=P-h> *ؽ + + >n;[4>=SqyB섾i='%=J޼.H<*<8ts&=eG>k> ߙ'r>E;=ʻp8<\g +>߾Q>d=Z4oWkQ @a:;&@w=[1>N|{qHE>H> ;=AS>d=;q=53<;̷S[#l=#\AܼE~;==[?=>v +>N`;E=0<#=ŗ4ɼB=(~;ܗ=F>Vl: M>'Y];h4l= 97=nSɹU<v.A== !a<&s=y(1󼓾=*=;<>9jcK-=>m?7=f=aI?4= {i=}ض ʗ:e15:t;j]:Vftir=o4!>L4<<>_;z[z>m7p\.ئK:>] 8 >+ƹk8q=JF>>>(\'>ZkL<>:P7I=>gƽ&Ǔ<|U=¨>Cy<#v="=s>>:{>$>\>'d>)v>+K<0u!H=ɪ Fh8=`oԄS}E=y>ŋu?X;%̤GØ<sقm^Sf=FC=q @<ᘽļ,=N=2X7>K=6߃>^>=ħL>+o*NlBMKzRȼE=>ӳ(L> =т2>2>W?;uI;zm!_[=t>S>+۽Lᶻ=U=,= '>C|gs>_z=Q=|\=濽"?`BgRW=a>}9۹7:;O#I$;d9R1 +!>`F~b>">go1=@xP=I9Ғ9ܹw!蹹YDZ8#ֺab;[發Vi=>E}GH|ΧAB>&ufZD4m·w HYY% e:ɢMS,<=hYMO^<9<}7< <k<)< ~= +,=4Ŷ_d˼Rn}+M'vK ?J=̳"B2(o<Җ*z<+>c>XQ#>(>׼A$ ;/+D;+m]8Dz7;:Rqf9~"+>.>4=+T> ~(cvQ; \9(lz-oDf*HE)k7q'kLξe<=^j=^>ǃ>5j;U49O _-'7:}x :<`P-8=G{_[7<rXNMcP88K-F~^>YǸ<4:_9((胑>X/ǽO=9=Urvݽ!6>>*~8빌¹w:8O`mN>=z=s;朼lDgVUUkxv9%94t_::!ҹМ90Δ: +:^w9,`6|>> >2/p>tR~РH[:;؍0gN<"`?> >پ= s9漱Pn^ 8=O=:ծ9i=<:nGYPcL=9IZ0'>)=|X}>?o> 8>==Ps="=n>a>2!>>+7)>tk7=>o<>!׼a>߆>F;1;<0~=N̽5~ʽG=>2wNٽDȽ$LPZDŽ+Oͼ\nj٨s 䥽҃=dC>rW=$lJ=PY b2=G}= Qw&T`͐@O;rrB0u>A36>RA<0W8<U֤$<^0`Z1=xHz==<k=_B=V~O9;(<5rVK=}ŻRTѻymC>[<>y>hH<&A<4p; -;{}<< =><<1=A$d=_ u=>Y>84(=#N[p/4JMױ8]R;I\)x: x˼'Լ dMLC2tgyW6H=+>K> =;x;Ta;rqΏ;<;^:6B\== +׽y + ׼Z!==> Dێ> >b-@=⊼PO>:v%t>Ƚ>>0=TPνA?<U>ʹ1e:R?=wd$¯Mcg;T=1l=>?.ӽju=k=JX9 ڶ9@P 9tz">A =>!֭=֝p>p0Ut&ts>ES>=%!>J)>m':< Q'&=׌>,=,><*y<4!DF>9> +Z=FAMMe>>h>e=PXj'>/~=w= +>l w>z_ŋ6佈+q>g}t'yyq<ܧ>@ +T==< >vM +> +l>Af>c< l_x<=?\Py1>ЀQ<_'8=pNf>F4p>>T=O ? _9M>ԹoT' w锼 =VQ>GK<%>^%Hȃ?^Z8 Y?WGoV| =ĸ6=F6>{:ؽΨY\8}?G= t:i;gB8wW>qO#>,>݀E>7>G=nô>Ȣsͼc<%3l>ht4>ѝh14S,%>QmM>͏=ur)>iBK>> >>D> T>-D>V?>0Q_ч99:q>F=->aZ>y=[>t3>Lо[໸C>>a!6eg=<-5Yd>Y G̕~: Y8>uн`B>ݹ>8=37E/_="/<=\2]>lWC>-½7 ;~B~;$E&>b΅<<*V:8(\= +eƼD>=J ={߽ ;;-=<(=ZH[<H| 9~>KY潐:Z:>p=CQAhɃ< >/8/iK>aT۠ j>K;TDG>(?%Q=/>Yن>;:JavTq.[􂽊kLt>:kf>? I;?>>a>vgoݼ6>md&>h&R(8>==\:;| 9WtG@>71ݽY=]>Bľ1W>t>7=븻k&kLeȺ \|r2㼒C>)8 ~H= C8:RA>R\ oo= =>Z>YAb=2]=]>i>+E(=>帽tϽ23o`Miͺφ9osk>==˰>O<"m>UV̓>yȺ;W8d, kvc80=Ő<6Q>`n!Z,:6>jߏtJ> ɸ+YXH5頯< d]zA\=Q^cff>Ih\(><=;\> +B5<քM<%>S}5?=x=m 9o>FnZ¥/O>>?:K >8^xrb.ؽ[žV6(>=M=8(3>}:d: Șk3G뽤mN%ƼlrpV>縃:I>yx )<ٞ>vk>e#}>yP[`>$EhL>?6x=8>9傾 9MX>0yy?x1F:iz>\l^<]fhg= (h;>h>+ +>4i/L,$9;($9$8ɐY> <1нI)R;ve=PF>>>TyQon>7>'D> +Ovtr=b#>#> K=M>7]>~>J!b=dɾR4;L=ϦX<j=fR>-.>^ֹ;=@,ɶ4H+@`}ͯa:k>*7 9X`-><3i^+8dz=1J*Sh=JY>2c]?>;e}/ ">xht"<=g>=弼r|*&9#<>J*=8ѼL=r>C=c>);p֍̙4 )>A*>u>sx>::94v >>ĕ=$o>,7=:콪k>A#}M0~=/+|a#<ǻ8]>XT<"!=敻|iQ: F{~XmaR>pF.?E:՝<`;"8-;x== ѯ4mX>$rQ>`XTF; >?j.< >?[-]۶^>dlۭN1:Ƌ>5J>Fac>5e>=0= =PCX,u<^=d%hs&HX< Z:Iܸ3<<}w>(l4>])*9Ap8 +x΀>$:4& a@/o'R.>.cV>`V>>:xzM;;V{;_;<$-vH(SyT$<,U'*= N=|m{.ɫ&? +F'>>) yh>>[8"B>;lq[> [J=QbڼD=[+ Q=Q%cd<B=ӼwG=_=V>ˆE>Q<>r>. >t[q>Z >΁=GUu26;s), .(}< >NJ/>.==>y8>>"l>^,=k>}eWM=-<+=ܞ¼lC>RȼnU>&>>xʗ>-I=Oe>,z`>uïLT2tӔf>VX>g=]=T==*˼+7Q*<=ۚ>g\g>v>J.> <Ż] 5(8VbηYSSʹȼ}:"N;n9:9< e:ʻX:K h+x9/;]<&G;`U2;=c?'_0 +>?n>")Ghw#>>` >S->AU> >Ƿ>>n? >>>*HsO<.F>ث>{>L!n>5>{;+F>zC>#s1ֻ=̺y_5>Qƽ[왽>d}:׻o02nz>饑y>Ww'M}6f>ս!=߁=><>bkѽ~L=Y PX>o<'= +u>漏X<<\=A=4=b~>>G&->R==VbAr`>< >̊=y;=Gbl=c:I9p9rNAr776w>y>Z|f;'Ha=0===;=ѡ(<};1~x\ӽ#O<= +sM>Ĥ>񱽑j>?sA=>m`R]W NI.4f>~>ȴ֑>>^y~= >rp>5>WM=y֦DE>_^bL<9]<Ӱ>ǽ>=tr/>S>6>)>>E>ᠹO9Bytȥo9#H9[&9V h=o= >B=2J@ܽb8D9"c&97c9pYù -bfݹнQ7oB=U6H"=@NN/h=j6a>G=>>@>UB>.;ڹn9M拢7bB9(Ʒ8Y8Y8B:8;| ;OH Z9:%xtyw >gM<%B=\fV>H]HK@SX>g.Ɯ_>i2;*0x=" R'>>>5>XT>?6 >o>w>;c>g8; +=}?Q{4>6 ec>="ټ]9R=DD==N; 4aMtD>'>=={>a[/M;9;'>==,f=_S??z>>!@%<> >_w4c>`ܽMiq39ֹ:9) Dalx!Q:᧹;=5;>@ӗ(?@07>W=>- +?bV>c^=;P<=<{>*] :cN>J:= +Yvq3=N>!1< +:;]>ٽ;˼|伺>=`M>S> ~P+*>s]>7="]:NK=!>TA)==;c>>>Sc>D)$=>p<>ٲf;Z/>>H <$V:;Tw<>".DĊ>2=;>}=O>vTE> a->~A>Bɂ=x83Ke@'OGNK2"+DrS8_2=*e=" < XQ<-<ڝ9༏z=>&l>{>%=pZ=>5=r߼tS@}3K6_<Ȧ>,?a>{ >Qg(>HVɼW *2<}L>Ͻّ<]F>$e޼\$=ϭ=8G<ϽK=I=TKȽ= N=7>ɼJ?G=i>R=>| O=`=z[> >p=\>%/>ѻ,.>-[;3J=/=n:l=>->>]==8= > 0>T>`>H""&=];_ Q6>.C#=PlPH={f9JӹlU3C9qLN%588`»ֽ3_nek$}b 뗽=Yɹ%D-g:P4T:WjH<9_CԻ<ۏ'(d>y< )<=z?>v= b=|=};9=t<%>GЏ.ҳ;9L9;C;v:;;P=>ȿ<ج=#= >< +A<.?=>ٵ=^Z 9%J=G>:b>G^K=s0e;FF8#>u='hV=9[, >;=k=e6×8 ^:4^:Ms>}<\=>;= <@p= >">q*>u<@|=S_>Fo>J>}K= oؼ==NLAv+*Z>r{:@0=Y$=r=`>fa;+?ξҰ>>Α½0;c9@=O>/M=ּ='9?_㩾<2<Q%>:"< +D>=5h8}{-*>-:=B8Ja:>^ 7 1S>ǽh8oX9X:D>1<H:u4= >;?% w߷!~=ety=<{>k]>6">22P:60Ot;I>H=C>=}/=g<"<_=h_8~]>D:.H͸Hhp:ӻݺ?溧k+I>f#>zVA?;;b q>ojk=-޶<=8=Ҹe=n><_>>7KKļ ؑ y>Nn8AT58߅J3>jDWP2x >F!u=h3<{׻Y=¼"m;,9(6:ŷ>.D I-d0֐ ~KU;l@=;>An=iB\Ӳ߾<,ܾM;/Mk8=z1"<ù:{2iRZ:W˽kpκ!`y< +zAQnAU,M>pQ={weiH7f6_>Q=HN +(^==bO=fN=OvR>+<`漁|)>r8$՟d.@PuŽ6b;ͧ>>;\2<1L۾vrt罡^@; =(]i>;5 +=258*=9(==b=HQ=<%<f>O=Pss=K*-(*8L;a9pT tB">*= @>hzm=ʂڒA:>K׽Ӿ;=/}<2/=׽L8ǃy[>(1>c8~;k=>(&}Aj9=U(^>]=z0l=0kupʻE߾h=r]7ιF;<=;;s,>,;:Įy+ѹ~B<\>=x=ϡt=.=>I5C=]=Q +5ӹP^= =1< pm2;2sao馜>g'>5N:M`(=6%=D6= =9q67C,zi+yo<=rlCQ8 Bb<#6ԁ:U(>K҆8= +ӝS9~Ey>)=%=fY),@Gn2SG;>_ 48o2:`6=9% 8Zs:y̼*|>T 8#䣣<=yriq@=*5 +>p|PM< >+>/>6lc=RK;VX;Un,B^]1GGm={< [=ފw>ؼSpwқ= e*>8<,=R1}v>oU; d;(> P<L;>w>Nm;;xvC½2l>]V8ME)uvqO됼e'>쓏7@a>=,>">X=G ?=-TJy=y$"ϓQ +90Bi>ǀi*/.zע +O +U,S;@<>=yվ;R;[_#!68<4StؼaR7T-Pf۾`施4Hޡ)}ANv>bgE5 >ǻ7c;>9QȺ:Ké⽊l{<5Q-eںbwJ @!w%CR?^8z=n>X#ս雺Y>H8_KQ@=)=I8=¼ŗi?~iT].6¼fUtqe>U?󺢽i׼Q4<8B>9"`=]>$j\= ː=X`8Kw9-qj8] &RJ>>=qM>C2>;=:O +D;=o>((`s[As9m7=%d̶:= +Շ>]Y>=e)=~gAFlD'=sڈ=V=ɼc(@>눺<懾;phh=>.=k%ƽ?h= +>=!现A/h+b9j;嚊*9:Cc >-=YR:{ǺU=<=z= ǼP=Ti8Y8Vmf;Q<滭ȽkSN ^`>2|BЁ=5v$EfQ`9Af>\]Wr<;8ڹ=;}+h>$| P68]u=B֬b5C;캤b>f>~AY;ӌI="fÜX㗽=~;R>ٸ<[i=b=*>e>4=699k<=lLV>V0Ύ<4窼l>:v[.մ;#=\ =a;=$';f]a=gQg1[>3e&8Ei;p;+uTZ>L=SY>Sj쌻:9&=$9$YьY] >g_>90w_IYg|AA>J8Ľ{9+ּ,>l7~nTS>౉ >Z<-=kv=LTPcMڼ9 fZ6>bhn ,䧼O] ,+C +vM Cm=J>;=SOF<7Qrm, +c=ñ?8׻A4 8h-:bv^aH= +۽ny٤ɽ7M1&t.D92^\S8B==U9s;VF>xnm4v8/.[پJ'R׻L>~YzH:;0>u0XH`Ahi=WO>'==Kc*=w-G=g'i>:ӻصK=f<[Q=`2;1S^8Q=;t= %< +>lֽOG1;w;G-F>`p&0>\9HY<>I';: !>$\82>]$`> +4=:RIa뗼;o6y1=z={<8><{LxdI!R^= >at=?T[e=~qS=>jO=F8(»coI Յ=싩=<U>c=l +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol AFaceDetectDelegate +@required + +/// 活检失败回调 +/// - Parameters: +/// - code: 错误码 +/// - message: 错误描述 +- (void)onFailed:(int)code withMessage:(NSString *)message; + +/// 活检成功回调 +/// - Parameters: +/// - live: 是否活体 +/// - imageData: 采集到的图像 +/// - faceRect: 人像框 +- (void)onCompleted:(BOOL)live withData:(NSData *)imageData rect:(CGRect)faceRect; +@end + +@interface AFaceDetectManager : NSObject +/// 单例 ++ (instancetype)sharedManager; +/// 获取授权文件有效期 ++ (NSString *)getLicExpiration; + +/// 设置代理,用于处理活体检测结果 +/// - Parameter delegate: 代理对象 +- (void)setDelegate:(id )delegate; + +/// 活体检测控制器 +- (UIViewController *)getDetectVC; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/CAAppInfoUtil.h b/Libs/CredibleAuthSDK.framework/Headers/CAAppInfoUtil.h new file mode 100644 index 0000000..bbb2b28 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/CAAppInfoUtil.h @@ -0,0 +1,148 @@ +// +// CAAppInfoUtil.h +// Aspects +// +// Created by yixiang on 2018/4/15. +// + +#import +#import +//@import YYModel; +#import "YYModel.h" +//#import +//@protocol YYModel; + +NS_ASSUME_NONNULL_BEGIN +typedef void(^locationBlock)(NSString *_Nonnull, NSString *_Nonnull, NSString *_Nonnull); //使用myBlock1定义参数类型为NSString的block + + +@interface Objc_CertLoginParam : NSObject +/// 真实姓名 +@property (nonatomic, strong) NSString *pin; +/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) +@property (nonatomic, strong) NSString *mobile; +/// 人企关联关系类型代码,可为空,为空则按从高处理 +@property (nonatomic, strong) NSString *relatedType; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, strong) NSString *appToken; +/// 统一社会信用代码(注:纳税人识别号) +@property (nonatomic, strong) NSString *creditCode; +/// 介质类型 0:介质(税务UKey) 1:非介质(App) +@property (nonatomic, strong) NSString *post_type; +/// 人员类型 0:税务人 1:纳税人 +@property (nonatomic, strong) NSString *user_type; +/// 登录类型 0:企业业务 1:代理业务 +@property (nonatomic, strong) NSString *login_type; + +@end + +@interface CAAppInfoUtil : NSObject +//定义属性 +@property (nonatomic, copy) locationBlock locationCallback; + ++ (instancetype)shared; + ++ (NSString *)appName; + +/** + DeviceInfo:获取当前设备的 用户自定义的别名,例如:库克的 iPhone 9 + + @return 当前设备的 用户自定义的别名,例如:库克的 iPhone 9 + */ ++ (NSString *)iphoneName; + +/** + DeviceInfo:获取当前设备的 系统名称,例如:iOS 13.1 + + @return 当前设备的 系统名称,例如:iOS 13.1 + */ ++ (NSString *)iphoneSystemVersion; + ++ (NSString *)bundleIdentifier; + ++ (NSString *)bundleVersion; + ++ (NSString *)bundleShortVersionString; + ++ (NSString *)iphoneType; + ++ (BOOL)isIPhoneXSeries; + ++ (BOOL)isIpad; + ++ (NSString *)locationAuthority; + ++ (NSString *)pushAuthority; + ++ (NSString *)cameraAuthority; + ++ (NSString *)audioAuthority; + ++ (NSString *)photoAuthority; + ++ (NSString *)addressAuthority; + ++ (NSString *)calendarAuthority; + ++ (NSString *)remindAuthority; + ++ (NSString *)bluetoothAuthority; + +/// 设备是否模拟器 ++ (BOOL)isSimulator; + +//获取设备当前网络IP地址 ++ (NSString *)getIPAddress:(BOOL)preferIPv4; + ++ (BOOL)isLocationAuthed; + ++ (void)getCurrentLocation:(locationBlock)callback; + +/*! + * + * @abstract 获取运营商信息 + */ ++ (NSString *)getCarrierInfo; + +/* + * 获取设备物理地址 + */ ++ (nullable NSString *)getMacAddress; + +/* + * 获取IMSI + * IMSI:International Mobile Subscriber Identification Number 国际移动用户识别码 + IMSI分为两部分: + 一部分叫MCC(Mobile Country Code + 移动国家码),MCC的资源由国际电联(ITU)统一分配,唯一识别移动用户所属的国家,MCC共3位,中国地区的MCC为460 + 另一部分叫MNC(Mobile Network Code 移动网络号码),用于识别移动客户所属的移动网络运营商。MNC由二到三个十进制数组成,例如中国移动MNC为00、02、07,中国联通的MNC为01、06、09,中国电信的MNC为03、05、11 + 由1、2两点可知,对于中国地区来说IMSI一般为46000(中国移动)、46001(中国联通)、46003(中国电信)等 + */ + ++ (NSString *)getIMSI; +/* + * MCC(Mobile Country Code 移动国家码) + */ ++ (NSString *)getMCC; + +/* + * MNC(Mobile Network Code 移动网络号码) + */ ++ (NSString *)getMNC; + ++ (NSString *)getCPUType; + ++ (NSString *)DeviceIDFV; + ++ (BOOL)supportTouchID; + ++ (BOOL)supportFaceID; + +typedef void(^ BiometricsAuthBlock)(BOOL success, NSString *errorMsg); + ++ (void)biometricsAuth:(BiometricsAuthBlock)completion; + ++ (void)objc_certLogin:(Objc_CertLoginParam *)param finish:(XTQMDataResponseSuccessBlock)finish fail:(ResponseFailBlock)fail; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/CAErrorCode.h b/Libs/CredibleAuthSDK.framework/Headers/CAErrorCode.h new file mode 100644 index 0000000..5a5cf39 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/CAErrorCode.h @@ -0,0 +1,61 @@ +// +// CAErrorCode.h +// CredibleAuthSDK +// +// Created by PublicJoker on 2021/12/11. +// Copyright © 2021 PublicJoker. All rights reserved. +// + +// CredibleAuthSDK定义的错误码 +#ifndef CAErrorCode_h +#define CAErrorCode_h + +/** + * 成功 + */ +#define CA_CODE_SUCCESS 0 + +/** + * 网络异常 +*/ +#define CA_CODE_NET_ERROR -1000 + +/** + * 网络请求结果异常 + */ +#define CA_CODE_DATA_ERROR -1001 +/** + * 接口已停用 + */ +#define CA_CODE_DEPRECATED_API -1002 +/** + * 参数错误 + */ +#define CA_CODE_PARAM_INVALID -2000 + +/** + * SDK未初始化 + */ +#define CA_CODE_NOT_INITIALIZED -2001 + +/** + * 初始化错误 + */ +#define CA_CODE_INIT_ERROR -2002 + +/** + * 活体检测结果为空 + */ +#define CA_CODE_LIVE_EMPTY -3001 + +/** + * 未找到证书 + */ +#define CA_CODE_CERT_NOT_FOUND -4001 + +/** + * 协签登录失败 + */ +#define CA_CODE_CERT_LOGIN_FAILED -4000 + +#endif /* CAErrorCode_h */ diff --git a/Libs/CredibleAuthSDK.framework/Headers/CAUserDefine.h b/Libs/CredibleAuthSDK.framework/Headers/CAUserDefine.h new file mode 100644 index 0000000..a55f536 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/CAUserDefine.h @@ -0,0 +1,67 @@ +// +// CAUserDefine.h +// CredibleAuthSDK +// +// Created by Tony on 2022/8/16. +// Copyright © 2022 PublicJoker. All rights reserved. +// + +#import +//@import XMGSqlite; +#import + +NS_ASSUME_NONNULL_BEGIN + +//recordId uid identity loginTime +@interface CAIndividualLoginRecord : NSObject +/// 三合一(用户名/手机号/身份证号) +@property (nonatomic, copy) NSString *identity;//主键 +/// 自然人网络身份id +@property (nonatomic, copy) NSString *uid; +/// 登录时间 +@property (nonatomic, assign) double loginTime; +/// 数据库记录id +@property (nonatomic, copy) NSString *recordId; + +@end + +//recordId uid identity loginTime enterpriseName creditCode +@interface CAEnterpriseLoginRecord : NSObject +/// 三合一(用户名/手机号/身份证号) +@property (nonatomic, copy) NSString *identity;//主键 +/// 自然人网络身份id +@property (nonatomic, copy) NSString *uid; +/// 企业名称 +@property (nonatomic, copy) NSString *enterpriseName; +/// 社会信用代码/纳税人识别号 +@property (nonatomic, copy) NSString *creditCode; +/// 登录时间 +@property (nonatomic, assign) double loginTime; +/// 数据库记录id +@property (nonatomic, copy) NSString *recordId; + +@end + +// uid mobile password realName +@interface CABiometricAuth : NSObject +/// 手机号 +@property (nonatomic, copy) NSString *mobile; +/// 自然人网络身份id +@property (nonatomic, copy) NSString *uid;//主键 +/// 登录时间 +@property (nonatomic, copy) NSString *password; +/// 自然人姓名 +@property (nonatomic, copy) NSString *realName; + +@end + +// uid bioFlag +@interface CABiometricRemind : NSObject +/// 是否跳过提示 +@property (nonatomic, assign) BOOL bioFlag; +/// 自然人网络身份id +@property (nonatomic, copy) NSString *uid;//主键 + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK-Swift.h b/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK-Swift.h new file mode 100644 index 0000000..c94373d --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK-Swift.h @@ -0,0 +1,884 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51) +#ifndef CREDIBLEAUTHSDK_SWIFT_H +#define CREDIBLEAUTHSDK_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wduplicate-method-match" +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#else +#include +#include +#include +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if defined(__cplusplus) +#if !defined(SWIFT_NOEXCEPT) +# define SWIFT_NOEXCEPT noexcept +#endif +#else +#if !defined(SWIFT_NOEXCEPT) +# define SWIFT_NOEXCEPT +#endif +#endif +#if defined(__cplusplus) +#if !defined(SWIFT_CXX_INT_DEFINED) +#define SWIFT_CXX_INT_DEFINED +namespace swift { +using Int = ptrdiff_t; +using UInt = size_t; +} +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import CoreFoundation; +@import Foundation; +@import ObjectiveC; +#endif + +#import + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="CredibleAuthSDK",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +@class NSString; + +/// 代理机构业务人脸认证参数类 +SWIFT_CLASS("_TtC15CredibleAuthSDK16AgencyLoginParam") +@interface AgencyLoginParam : NSObject +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 姓名 +@property (nonatomic, copy) NSString * _Nonnull full_name; +/// 国籍 例如:156-中国 +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件类型 示例:201-居民身份证 +@property (nonatomic, copy) NSString * _Nonnull card_type; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull id_card; +/// 代理机构社会信用代码/纳税人识别号 +@property (nonatomic, copy) NSString * _Nonnull agencyCreditCode; +/// 社会信用代码/纳税人识别号 +@property (nonatomic, copy) NSString * _Nonnull creditCode; +/// 人企关联关系类型代码 +@property (nonatomic, copy) NSString * _Nonnull relatedType; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 二次认证参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK27AppSecondCertificationParam") +@interface AppSecondCertificationParam : NSObject +/// 用户令牌 +@property (nonatomic, copy) NSString * _Nonnull access_token; +/// 应用令牌 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +SWIFT_CLASS("_TtC15CredibleAuthSDK10CAResponse") +@interface CAResponse : NSObject +@property (nonatomic) NSInteger code; +@property (nonatomic, copy) NSString * _Nonnull msg; +@property (nonatomic, copy) NSDictionary * _Nonnull data; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// 企业业务协同签名认证参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK14CertLoginParam") +@interface CertLoginParam : NSObject +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull pin; +/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) +@property (nonatomic, copy) NSString * _Nonnull mobile; +/// 人企关联关系类型代码,可为空,为空则按从高处理 +@property (nonatomic, copy) NSString * _Nonnull relatedType; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 统一社会信用代码(注:纳税人识别号) +@property (nonatomic, copy) NSString * _Nonnull creditCode; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + +@class RealPersonCheckParam; +@class SecondCertificationParam; +@class UseQrCodeLoginParam; +@class EnterpriseLoginParam; +@class NaturalLoginParam; +@class DeviceParam; +@class DeviceInfoResult; +@class SDKVersionInfo; +@class RegisterParam; +@class UseQrCodeSecondCertificationParam; +@class ElevateParam; +@class EnterpriseIdentityLoginParam; +@class NaturalIdentityLoginParam; +@class VerifyWithPictureTokenParam; +@class H5LoginParam; +@class H5SetParam; +@class VerifyWithPictureRequestParam; +@class GetApplicationTokenParam; + +SWIFT_CLASS("_TtC15CredibleAuthSDK15CredibleAuthSDK") +@interface CredibleAuthSDK : NSObject +@property (nonatomic, copy) NSString * _Nullable appCode; ++ (CredibleAuthSDK * _Nonnull)sharedInstance SWIFT_WARN_UNUSED_RESULT; +/// 4.2 初始化SDK +/// \param encryptKey 加密密钥,由App向可信后台申请 +/// +/// \param signKey 签名密钥,由App向可信后台申请 +/// +/// \param requestURI 可信后台环境, 格式为: “地区.环境类型” 如: 北京预生产对应requestURI为 beijing.pre +/// (dev:公有云 pre:预生产 pro:生产 test:测试) 如参数不合法, 使用默认值quanguo.dev +/// ++ (void)registerAppWithEncryptKey:(NSString * _Nonnull)encryptKey signKey:(NSString * _Nonnull)signKey requestURI:(NSString * _Nonnull)requestURI; +/// 4.3 实人认证(实名采集场景) +/// \param param 实人认证参数, 详见RealPersonCheckParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)realPersonWithParam:(RealPersonCheckParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.4 二次认证(停用) +/// \param param 二次认证参数, 详见SecondCertificationParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)secondCertificationWithParam:(SecondCertificationParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(useQrCodeSecondCertification/appSecondCertification )实现业务功能"); +/// 4.5 扫码登录消费二维码接口 +/// \param param 消费二维码参数, 详见UseQrCodeLoginParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)useQRCodeLoginWithParam:(UseQrCodeLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.6 企业业务人脸认证接口(停用) +/// \param param +/// +/// \param finishBlock +/// ++ (void)enterpriseLoginWithParam:(EnterpriseLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); +/// 4.7 自然人业务人脸认证接口(停用) +/// \param param +/// +/// \param finishBlock +/// ++ (void)naturalLoginWithParam:(NaturalLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); +/// 4.8 代理机构业务人脸认证接口(停用) +/// \param param +/// +/// \param finishBlock +/// ++ (void)agencyLoginWithParam:(AgencyLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); +/// 4.9 环境信息获取接口(停用) +/// \param param 获取环境信息参数, 详见DeviceParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)deviceWithParam:(DeviceParam * _Nonnull)param block:(void (^ _Nonnull)(DeviceInfoResult * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(deviceEncWithParam)实现业务功能"); ++ (void)sdkVersionWithBlock:(void (^ _Nonnull)(SDKVersionInfo * _Nonnull))finishBlock; +/// 4.10 自然人身份注册接口(自然人实名)(停用) +/// \param param 自然人身份注册参数, 详见RegisterParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)registerWithParam:(RegisterParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); +/// 4.11 扫码实人认证消费二维码接口 +/// 可信 WEB 端的一些操作,例如二次认证、注册、找回密码、修改密码、修改手机号等,会弹出二维码,需要进行扫码认证,扫描二维码触发调用此消费接口。 +/// \param param 扫码二次认证接口请求参数, 详见UseQrCodeParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)useQRCodeSecondCertificationWithParam:(UseQrCodeSecondCertificationParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.12 实名等级提升(停用) +/// 办理涉税业务过程中,需要实名等级提升时,通过税务端 APP 扫描实名等级提升二维码,触发调用此接口,唤起活体检测并通过可信后端完成实人认证,返回认证结果。 +/// \param param 实名等级提升参数, 详见ElevateParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)elevateWithParam:(ElevateParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(appSecondCertification)实现业务功能"); +/// 4.13 企业业务协同签名认证(停用) +/// \param param 企业业务协同签名认证参数, 详见CertLoginParam类 +/// +/// \param finishBlock 请求完成回调 +/// @objc(certLogin: finishBlock:)//OC方法重命名 +/// ++ (void)certLoginWithParam:(CertLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); ++ (void)h5CertLoginWithParam:(CertLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.14 企业业务刷脸登录接口(停用) ++ (void)enterpriseIdentityLoginWithParam:(EnterpriseIdentityLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); +/// 4.15 自然人业务人脸认证接口(停用) ++ (void)naturalIdentityLoginWithParam:(NaturalIdentityLoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock SWIFT_DEPRECATED_MSG("该接口已停用,请访问新接口(h5Login)实现业务功能"); +/// 4.16 异步实人认证(停用) ++ (void)verifyWithPictureTokenParam:(VerifyWithPictureTokenParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.17 APP 集成可信 H5 登录接口 +/// 税务 APP 点击登录按钮时,调用此接口,唤起可信 H5 登录页面,可信 H5 页面提供 +/// 企业业务登录、自然人业务登录、自然人注册、自然人找回密码、自然人找回手机号等功能。 +/// 用户完成登录,获得用户令牌信息。 ++ (void)h5Login:(H5LoginParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.18 APP 集成可信指纹/面容设置接口 +/// 税务 APP 登录后,在设置中可以通过指纹/面容设置入口,调用此接口,唤起可信 H5 +/// 页面,可信 H5 页面提供指纹/面容设置开启与关闭,以及取消不再提醒是否开启指纹的设置。 ++ (void)h5Set:(H5SetParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.19 环境信息获取(新)接口 +/// \param param 获取环境信息参数, 详见DeviceParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)deviceEncWithParam:(DeviceParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.20 APP 二次认证 +/// 在 APP 端进行业务事项办理时,如果需要满足登录等级达到 4 级才可以办理时,就可以由 APP +/// 发起调用此接口,触发活体检测,完成登录等级与实名等级的提升,接口返回成功时,APP后台 +/// 应该重新调用 userinfo 接口重新获取会话信息,将更新登录等级与实名等级 +/// \param param 二次认证参数, 详见AppSecondCertificationParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)appSecondCertificationWithParam:(AppSecondCertificationParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +/// 4.21 实人认证申请 +/// 通过税务 APP 进行实人认证功能时,触发调用此接口 +/// 唤起活体检测并通过可信后端完成实人认证,返回用于查询结果的唯一标识。 +/// 通过唯一标识,由后台服务调用可信接口,查询实人认证的结果。 +/// \param param 二次认证参数, 详见VerifyWithPictureRequestParam类 +/// +/// \param finishBlock 请求完成回调 +/// ++ (void)verifyWithPictureRequestParam:(VerifyWithPictureRequestParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; ++ (void)getApplicationTokenWithParam:(GetApplicationTokenParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +@class RegisterCertParam; + +@interface CredibleAuthSDK (SWIFT_EXTENSION(CredibleAuthSDK)) ++ (void)registerCert:(RegisterCertParam * _Nonnull)param block:(void (^ _Nonnull)(CAResponse * _Nonnull))finishBlock; +@end + +@class NSData; + +@interface CredibleAuthSDK (SWIFT_EXTENSION(CredibleAuthSDK)) +- (void)onFailed:(int32_t)code withMessage:(NSString * _Nonnull)message; +- (void)onCompleted:(BOOL)live withData:(NSData * _Nonnull)imageData rect:(CGRect)faceRect; +@end + + + +SWIFT_CLASS("_TtC15CredibleAuthSDK16DeviceInfoResult") +@interface DeviceInfoResult : NSObject +/// 经度(需要定位权限) +@property (nonatomic, copy) NSString * _Nonnull longitude; +/// 纬度 +@property (nonatomic, copy) NSString * _Nonnull latitude; +/// 反地理编码信息 +@property (nonatomic, copy) NSString * _Nonnull reverseGeocode; +/// 手机品牌 +@property (nonatomic, copy) NSString * _Nonnull deviceBrand; +/// APP名称 +@property (nonatomic, copy) NSString * _Nonnull srcAppName; +/// APP版本 +@property (nonatomic, copy) NSString * _Nonnull srcAppVersion; +/// IP +@property (nonatomic, copy) NSString * _Nonnull srcIp; +/// MAC地址 需要本地网络权限, 否则返回 @“02:00:00:00:00:00” +@property (nonatomic, copy) NSString * _Nonnull deviceIdent; +/// 操作系统名称 +@property (nonatomic, copy) NSString * _Nonnull deviceSystem; +/// 设备名称 +@property (nonatomic, copy) NSString * _Nonnull deviceName; +/// 设备型号 +@property (nonatomic, copy) NSString * _Nonnull deviceModel; +/// 设备识别号 +@property (nonatomic, copy) NSString * _Nonnull deviceIdentyNo; +/// 设备制造商 +@property (nonatomic, copy) NSString * _Nonnull deviceManufacturer; +/// 系统版本 +@property (nonatomic, copy) NSString * _Nonnull systemVersion; +/// 运营商名称 +@property (nonatomic, copy) NSString * _Nonnull isp; +/// 移动国家码 +@property (nonatomic, copy) NSString * _Nonnull countryCode; +/// 移动网络码 00-中国移动TD 01-中国联通 02-中国移动GSM 03-中国电信CDMA +@property (nonatomic, copy) NSString * _Nonnull networkCode; +/// CPU型号 +@property (nonatomic, copy) NSString * _Nonnull cpuModel; +/// SDK版本信息 +@property (nonatomic, readonly, strong) SDKVersionInfo * _Nonnull sdkVersionInfo; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// 获取设备信息参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK11DeviceParam") +@interface DeviceParam : NSObject +/// 是否已获取定位权限 +@property (nonatomic) BOOL locationAuthed; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// 实名等级提升参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK12ElevateParam") +@interface ElevateParam : NSObject +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull full_name; +/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) +@property (nonatomic, copy) NSString * _Nonnull card_type; +/// 国籍(详见附件国家代码表 示例:156-中国) +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull id_card; +/// 二维码编号 +@property (nonatomic, copy) NSString * _Nonnull qrcode_id; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 统一社会信用代码(注:纳税人识别号) +@property (nonatomic, copy) NSString * _Nonnull creditCode; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 企业业务刷脸登录参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK28EnterpriseIdentityLoginParam") +@interface EnterpriseIdentityLoginParam : NSObject +/// 用户名/手机号/身份证号 +@property (nonatomic, copy) NSString * _Nonnull identity; +/// 人企关联关系类型代码,可为空,为空则按从高处理 +@property (nonatomic, copy) NSString * _Nonnull relatedType; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 统一社会信用代码(注:纳税人识别号) +@property (nonatomic, copy) NSString * _Nonnull creditCode; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 企业业务人脸认证参数类 +SWIFT_CLASS("_TtC15CredibleAuthSDK20EnterpriseLoginParam") +@interface EnterpriseLoginParam : NSObject +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 姓名 +@property (nonatomic, copy) NSString * _Nonnull full_name; +/// 国籍 例如:156-中国 +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件类型 示例:201-居民身份证 +@property (nonatomic, copy) NSString * _Nonnull card_type; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull id_card; +/// 社会信用代码/纳税人识别号 +@property (nonatomic, copy) NSString * _Nonnull creditCode; +/// 人企关联关系类型代码 +@property (nonatomic, copy) NSString * _Nonnull relatedType; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +SWIFT_CLASS("_TtC15CredibleAuthSDK24GetApplicationTokenParam") +@interface GetApplicationTokenParam : NSObject +/// 用户令牌 +@property (nonatomic, copy) NSString * _Nonnull client_id; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// H5登录参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK12H5LoginParam") +@interface H5LoginParam : NSObject +/// 应用令牌 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// H5设置快捷登录参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK10H5SetParam") +@interface H5SetParam : NSObject +/// 应用令牌 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 用户令牌 +@property (nonatomic, copy) NSString * _Nonnull access_token; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// 个人业务刷脸登录参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK25NaturalIdentityLoginParam") +@interface NaturalIdentityLoginParam : NSObject +/// 用户名/手机号/身份证号 +@property (nonatomic, copy) NSString * _Nonnull identity; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 自然人业务人脸认证参数类 +SWIFT_CLASS("_TtC15CredibleAuthSDK17NaturalLoginParam") +@interface NaturalLoginParam : NSObject +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 姓名 +@property (nonatomic, copy) NSString * _Nonnull full_name; +/// 国籍 例如:156-中国 +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件类型 示例:201-居民身份证 +@property (nonatomic, copy) NSString * _Nonnull card_type; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull id_card; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 实名认证参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK20RealPersonCheckParam") +@interface RealPersonCheckParam : NSObject +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull fullName; +/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) +@property (nonatomic, copy) NSString * _Nonnull idCardType; +/// 国籍(详见附件国家代码表 示例:156-中国) +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull idCard; +/// 身份证有效期起(yyyyMMdd) +@property (nonatomic, copy) NSString * _Nonnull effDate; +/// 身份证号有效期止(yyyyMMdd) +@property (nonatomic, copy) NSString * _Nonnull expDate; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +SWIFT_CLASS("_TtC15CredibleAuthSDK17RegisterCertParam") +@interface RegisterCertParam : NSObject +/// 应用令牌 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 用户类型 +@property (nonatomic, copy) NSString * _Nonnull userType; +/// 用户名称 +@property (nonatomic, copy) NSString * _Nonnull userName; +/// 纳税人名称 +@property (nonatomic, copy) NSString * _Nonnull taxpayerName; +@property (nonatomic, copy) NSString * _Nonnull taxpayerCode; +@property (nonatomic, copy) NSString * _Nonnull taxBureauName; +@property (nonatomic, copy) NSString * _Nonnull taxBureauCode; +@property (nonatomic, copy) NSString * _Nonnull mobilePhoneNumber; +@property (nonatomic, copy) NSString * _Nonnull password; +@property (nonatomic, copy) NSString * _Nullable identifyCard; +@property (nonatomic, copy) NSString * _Nullable email; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// 自然人注册参数类 +SWIFT_CLASS("_TtC15CredibleAuthSDK13RegisterParam") +@interface RegisterParam : NSObject +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 姓名 +@property (nonatomic, copy) NSString * _Nonnull fullName; +/// 性别 0.女 1.男 +@property (nonatomic, copy) NSString * _Nonnull gender; +/// 国籍 例如:156-中国 +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件类型 示例:201-居民身份证 +@property (nonatomic, copy) NSString * _Nonnull idCardType; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull idCard; +/// 联系电话 +@property (nonatomic, copy) NSString * _Nonnull mobile; +/// 短信验证码编号 +@property (nonatomic, copy) NSString * _Nonnull smscode_id; +/// 短信验证码内容 +@property (nonatomic, copy) NSString * _Nonnull smscode; +/// 税务机关代码(固定11位) +@property (nonatomic, copy) NSString * _Nonnull taxauthorityCode; +/// 纳税所在地 参考附录:地区编码字典 +@property (nonatomic, copy) NSString * _Nonnull taxPlace; +/// 出生日期, 格式为yyyyMMdd +@property (nonatomic, copy) NSString * _Nullable birthdate; +/// 证件有效期起始时间, 格式为yyyyMMdd +@property (nonatomic, copy) NSString * _Nonnull startDate; +/// 证件有效期终止时间, 格式为yyyyMMdd +@property (nonatomic, copy) NSString * _Nullable endDate; +/// 住址 +@property (nonatomic, copy) NSString * _Nullable address; +/// 电子邮箱 +@property (nonatomic, copy) NSString * _Nullable email; +/// 身份管理协议, 该值为协议版本号 数字格式,例如:1.0 +@property (nonatomic, copy) NSString * _Nonnull agreementA; +/// 个人信息保护告知同意书, 该值为协议版本号 数字格式,例如:1.0 +@property (nonatomic, copy) NSString * _Nonnull agreementB; +/// 人脸识别协议, 该值为协议版本号 数字格式,例如:1.0 +@property (nonatomic, copy) NSString * _Nonnull agreementC; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +SWIFT_CLASS("_TtC15CredibleAuthSDK14SDKVersionInfo") +@interface SDKVersionInfo : NSObject +/// 主版本号 +@property (nonatomic, copy) NSString * _Nonnull majorVersion; +/// build版本号 +@property (nonatomic, copy) NSString * _Nonnull buildVersion; +/// 服务器地址 +@property (nonatomic, copy) NSString * _Nonnull serverDomain; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +/// 二次认证参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK24SecondCertificationParam") +@interface SecondCertificationParam : NSObject +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull full_name; +/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) +@property (nonatomic, copy) NSString * _Nonnull card_type; +/// 国籍(详见附件国家代码表 示例:156-中国) +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull id_card; +/// 二维码编号 +@property (nonatomic, copy) NSString * _Nonnull qrcode_id; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 统一社会信用代码(注:纳税人识别号) +@property (nonatomic, copy) NSString * _Nonnull creditCode; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + + +/// 消费二维码接口请求参数对象 +SWIFT_CLASS("_TtC15CredibleAuthSDK19UseQrCodeLoginParam") +@interface UseQrCodeLoginParam : NSObject +/// 用户令牌 +@property (nonatomic, copy) NSString * _Nonnull access_token; +/// 二维码编号 +@property (nonatomic, copy) NSString * _Nonnull qrcode_id; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 二维码消费参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK14UseQrCodeParam") +@interface UseQrCodeParam : NSObject +/// 身份证号 +@property (nonatomic, copy) NSString * _Nonnull id_card; +/// 人企关联关系类型代码 +@property (nonatomic, copy) NSString * _Nonnull relatedType; +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull full_name; +/// 二维码编号 +@property (nonatomic, copy) NSString * _Nonnull qrcode_id; +/// 证件类型(如: 201-身份证) +@property (nonatomic, copy) NSString * _Nonnull card_type; +/// 统一社会信用代码(注:纳税人识别号) +@property (nonatomic, copy) NSString * _Nonnull creditCode; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 国籍(详见附件国家代码表 示例:156-中国) +@property (nonatomic, copy) NSString * _Nonnull nationality; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 二次认证参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK33UseQrCodeSecondCertificationParam") +@interface UseQrCodeSecondCertificationParam : NSObject +/// 二维码编号 +@property (nonatomic, copy) NSString * _Nonnull qrcode_id; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 实人认证申请参数 +SWIFT_CLASS("_TtC15CredibleAuthSDK29VerifyWithPictureRequestParam") +@interface VerifyWithPictureRequestParam : NSObject +/// 应用令牌 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 证件号码 +@property (nonatomic, copy) NSString * _Nonnull idCard; +/// 证件类型 +@property (nonatomic, copy) NSString * _Nonnull idCardType; +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull fullName; +/// 国籍 +@property (nonatomic, copy) NSString * _Nonnull nationality; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + + +/// 企业业务人脸认证参数类 +SWIFT_CLASS("_TtC15CredibleAuthSDK27VerifyWithPictureTokenParam") +@interface VerifyWithPictureTokenParam : NSObject +/// 真实姓名 +@property (nonatomic, copy) NSString * _Nonnull fullName; +/// 身份证件类型(详见附件的身份证件类型代码字典。 示例:201-居民身份证) +@property (nonatomic, copy) NSString * _Nonnull idCardType; +/// 国籍(详见附件国家代码表 示例:156-中国) +@property (nonatomic, copy) NSString * _Nonnull nationality; +/// 身份证件号码 +@property (nonatomic, copy) NSString * _Nonnull idCard; +/// 身份证有效期起(yyyyMMdd) +@property (nonatomic, copy) NSString * _Nonnull effDate; +/// 身份证号有效期止(yyyyMMdd) +@property (nonatomic, copy) NSString * _Nonnull expDate; +/// 身份凭据,通过token获取接口生成。 +@property (nonatomic, copy) NSString * _Nonnull appToken; +/// 核验唯一标识(令牌) +@property (nonatomic, copy) NSString * _Nonnull verifyToken; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; ++ (NSArray * _Nullable)modelPropertyBlacklist SWIFT_WARN_UNUSED_RESULT; +@end + +#endif +#if defined(__cplusplus) +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK.h b/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK.h new file mode 100644 index 0000000..7131f6e --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/CredibleAuthSDK.h @@ -0,0 +1,36 @@ +// +// depend_sdk_ios.h +// depend-sdk-ios +// +// Created by PulicJoker on 2021/12/8. +// + +#import + +//! Project version number for depend_sdk_ios. +FOUNDATION_EXPORT double depend_sdk_iosVersionNumber; + +//! Project version string for depend_sdk_ios. +FOUNDATION_EXPORT const unsigned char depend_sdk_iosVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import //错误码定义 + +// 外部依赖 +#import //活体检测 +#import //协同签名 + +//内部使用 +#import +#import +#import +#import + +#import +#import +#import + + +#import +#import diff --git a/Libs/CredibleAuthSDK.framework/Headers/NSObject+YYModel.h b/Libs/CredibleAuthSDK.framework/Headers/NSObject+YYModel.h new file mode 100644 index 0000000..82032ec --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/NSObject+YYModel.h @@ -0,0 +1,430 @@ +// +// NSObject+YYModel.h +// YYModel +// +// Created by ibireme on 15/5/10. +// Copyright (c) 2015 ibireme. +// +// This source code is licensed under the MIT-style license found in the +// LICENSE file in the root directory of this source tree. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + Provide some data-model method: + + * Convert json to any object, or convert any object to json. + * Set object properties with a key-value dictionary (like KVC). + * Implementations of `NSCoding`, `NSCopying`, `-hash` and `-isEqual:`. + + See `YYModel` protocol for custom methods. + + + Sample Code: + + ********************** json convertor ********************* + @interface YYAuthor : NSObject + @property (nonatomic, strong) NSString *name; + @property (nonatomic, assign) NSDate *birthday; + @end + @implementation YYAuthor + @end + + @interface YYBook : NSObject + @property (nonatomic, copy) NSString *name; + @property (nonatomic, assign) NSUInteger pages; + @property (nonatomic, strong) YYAuthor *author; + @end + @implementation YYBook + @end + + int main() { + // create model from json + YYBook *book = [YYBook yy_modelWithJSON:@"{\"name\": \"Harry Potter\", \"pages\": 256, \"author\": {\"name\": \"J.K.Rowling\", \"birthday\": \"1965-07-31\" }}"]; + + // convert model to json + NSString *json = [book yy_modelToJSONString]; + // {"author":{"name":"J.K.Rowling","birthday":"1965-07-31T00:00:00+0000"},"name":"Harry Potter","pages":256} + } + + ********************** Coding/Copying/hash/equal ********************* + @interface YYShadow :NSObject + @property (nonatomic, copy) NSString *name; + @property (nonatomic, assign) CGSize size; + @end + + @implementation YYShadow + - (void)encodeWithCoder:(NSCoder *)aCoder { [self yy_modelEncodeWithCoder:aCoder]; } + - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; return [self yy_modelInitWithCoder:aDecoder]; } + - (id)copyWithZone:(NSZone *)zone { return [self yy_modelCopy]; } + - (NSUInteger)hash { return [self yy_modelHash]; } + - (BOOL)isEqual:(id)object { return [self yy_modelIsEqual:object]; } + @end + + */ +@interface NSObject (YYModel) + +/** + Creates and returns a new instance of the receiver from a json. + This method is thread-safe. + + @param json A json object in `NSDictionary`, `NSString` or `NSData`. + + @return A new instance created from the json, or nil if an error occurs. + */ ++ (nullable instancetype)yy_modelWithJSON:(id)json; + +/** + Creates and returns a new instance of the receiver from a key-value dictionary. + This method is thread-safe. + + @param dictionary A key-value dictionary mapped to the instance's properties. + Any invalid key-value pair in dictionary will be ignored. + + @return A new instance created from the dictionary, or nil if an error occurs. + + @discussion The key in `dictionary` will mapped to the reciever's property name, + and the value will set to the property. If the value's type does not match the + property, this method will try to convert the value based on these rules: + + `NSString` or `NSNumber` -> c number, such as BOOL, int, long, float, NSUInteger... + `NSString` -> NSDate, parsed with format "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd HH:mm:ss" or "yyyy-MM-dd". + `NSString` -> NSURL. + `NSValue` -> struct or union, such as CGRect, CGSize, ... + `NSString` -> SEL, Class. + */ ++ (nullable instancetype)yy_modelWithDictionary:(NSDictionary *)dictionary; + +/** + Set the receiver's properties with a json object. + + @discussion Any invalid data in json will be ignored. + + @param json A json object of `NSDictionary`, `NSString` or `NSData`, mapped to the + receiver's properties. + + @return Whether succeed. + */ +- (BOOL)yy_modelSetWithJSON:(id)json; + +/** + Set the receiver's properties with a key-value dictionary. + + @param dic A key-value dictionary mapped to the receiver's properties. + Any invalid key-value pair in dictionary will be ignored. + + @discussion The key in `dictionary` will mapped to the reciever's property name, + and the value will set to the property. If the value's type doesn't match the + property, this method will try to convert the value based on these rules: + + `NSString`, `NSNumber` -> c number, such as BOOL, int, long, float, NSUInteger... + `NSString` -> NSDate, parsed with format "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd HH:mm:ss" or "yyyy-MM-dd". + `NSString` -> NSURL. + `NSValue` -> struct or union, such as CGRect, CGSize, ... + `NSString` -> SEL, Class. + + @return Whether succeed. + */ +- (BOOL)yy_modelSetWithDictionary:(NSDictionary *)dic; + +/** + Generate a json object from the receiver's properties. + + @return A json object in `NSDictionary` or `NSArray`, or nil if an error occurs. + See [NSJSONSerialization isValidJSONObject] for more information. + + @discussion Any of the invalid property is ignored. + If the reciver is `NSArray`, `NSDictionary` or `NSSet`, it just convert + the inner object to json object. + */ +- (nullable id)yy_modelToJSONObject; + +/** + Generate a json string's data from the receiver's properties. + + @return A json string's data, or nil if an error occurs. + + @discussion Any of the invalid property is ignored. + If the reciver is `NSArray`, `NSDictionary` or `NSSet`, it will also convert the + inner object to json string. + */ +- (nullable NSData *)yy_modelToJSONData; + +/** + Generate a json string from the receiver's properties. + + @return A json string, or nil if an error occurs. + + @discussion Any of the invalid property is ignored. + If the reciver is `NSArray`, `NSDictionary` or `NSSet`, it will also convert the + inner object to json string. + */ +- (nullable NSString *)yy_modelToJSONString; + +/** + Copy a instance with the receiver's properties. + + @return A copied instance, or nil if an error occurs. + */ +- (nullable id)yy_modelCopy; + +/** + Encode the receiver's properties to a coder. + + @param aCoder An archiver object. + */ +- (void)yy_modelEncodeWithCoder:(NSCoder *)aCoder; + +/** + Decode the receiver's properties from a decoder. + + @param aDecoder An archiver object. + + @return self + */ +- (id)yy_modelInitWithCoder:(NSCoder *)aDecoder; + +/** + Get a hash code with the receiver's properties. + + @return Hash code. + */ +- (NSUInteger)yy_modelHash; + +/** + Compares the receiver with another object for equality, based on properties. + + @param model Another object. + + @return `YES` if the reciever is equal to the object, otherwise `NO`. + */ +- (BOOL)yy_modelIsEqual:(id)model; + +/** + Description method for debugging purposes based on properties. + + @return A string that describes the contents of the receiver. + */ +- (NSString *)yy_modelDescription; + +@end + + + +/** + Provide some data-model method for NSArray. + */ +@interface NSArray (YYModel) + +/** + Creates and returns an array from a json-array. + This method is thread-safe. + + @param cls The instance's class in array. + @param json A json array of `NSArray`, `NSString` or `NSData`. + Example: [{"name","Mary"},{name:"Joe"}] + + @return A array, or nil if an error occurs. + */ ++ (nullable NSArray *)yy_modelArrayWithClass:(Class)cls json:(id)json; + +@end + + + +/** + Provide some data-model method for NSDictionary. + */ +@interface NSDictionary (YYModel) + +/** + Creates and returns a dictionary from a json. + This method is thread-safe. + + @param cls The value instance's class in dictionary. + @param json A json dictionary of `NSDictionary`, `NSString` or `NSData`. + Example: {"user1":{"name","Mary"}, "user2": {name:"Joe"}} + + @return A dictionary, or nil if an error occurs. + */ ++ (nullable NSDictionary *)yy_modelDictionaryWithClass:(Class)cls json:(id)json; +@end + + + +/** + If the default model transform does not fit to your model class, implement one or + more method in this protocol to change the default key-value transform process. + There's no need to add '' to your class header. + */ +@protocol YYModel +@optional + +/** + Custom property mapper. + + @discussion If the key in JSON/Dictionary does not match to the model's property name, + implements this method and returns the additional mapper. + + Example: + + json: + { + "n":"Harry Pottery", + "p": 256, + "ext" : { + "desc" : "A book written by J.K.Rowling." + }, + "ID" : 100010 + } + + model: + @interface YYBook : NSObject + @property NSString *name; + @property NSInteger page; + @property NSString *desc; + @property NSString *bookID; + @end + + @implementation YYBook + + (NSDictionary *)modelCustomPropertyMapper { + return @{@"name" : @"n", + @"page" : @"p", + @"desc" : @"ext.desc", + @"bookID": @[@"id", @"ID", @"book_id"]}; + } + @end + + @return A custom mapper for properties. + */ ++ (nullable NSDictionary *)modelCustomPropertyMapper; + +/** + The generic class mapper for container properties. + + @discussion If the property is a container object, such as NSArray/NSSet/NSDictionary, + implements this method and returns a property->class mapper, tells which kind of + object will be add to the array/set/dictionary. + + Example: + @class YYShadow, YYBorder, YYAttachment; + + @interface YYAttributes + @property NSString *name; + @property NSArray *shadows; + @property NSSet *borders; + @property NSDictionary *attachments; + @end + + @implementation YYAttributes + + (NSDictionary *)modelContainerPropertyGenericClass { + return @{@"shadows" : [YYShadow class], + @"borders" : YYBorder.class, + @"attachments" : @"YYAttachment" }; + } + @end + + @return A class mapper. + */ ++ (nullable NSDictionary *)modelContainerPropertyGenericClass; + +/** + If you need to create instances of different classes during json->object transform, + use the method to choose custom class based on dictionary data. + + @discussion If the model implements this method, it will be called to determine resulting class + during `+modelWithJSON:`, `+modelWithDictionary:`, conveting object of properties of parent objects + (both singular and containers via `+modelContainerPropertyGenericClass`). + + Example: + @class YYCircle, YYRectangle, YYLine; + + @implementation YYShape + + + (Class)modelCustomClassForDictionary:(NSDictionary*)dictionary { + if (dictionary[@"radius"] != nil) { + return [YYCircle class]; + } else if (dictionary[@"width"] != nil) { + return [YYRectangle class]; + } else if (dictionary[@"y2"] != nil) { + return [YYLine class]; + } else { + return [self class]; + } + } + + @end + + @param dictionary The json/kv dictionary. + + @return Class to create from this dictionary, `nil` to use current class. + + */ ++ (nullable Class)modelCustomClassForDictionary:(NSDictionary *)dictionary; + +/** + All the properties in blacklist will be ignored in model transform process. + Returns nil to ignore this feature. + + @return An array of property's name. + */ ++ (nullable NSArray *)modelPropertyBlacklist; + +/** + If a property is not in the whitelist, it will be ignored in model transform process. + Returns nil to ignore this feature. + + @return An array of property's name. + */ ++ (nullable NSArray *)modelPropertyWhitelist; + +/** + This method's behavior is similar to `- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic;`, + but be called before the model transform. + + @discussion If the model implements this method, it will be called before + `+modelWithJSON:`, `+modelWithDictionary:`, `-modelSetWithJSON:` and `-modelSetWithDictionary:`. + If this method returns nil, the transform process will ignore this model. + + @param dic The json/kv dictionary. + + @return Returns the modified dictionary, or nil to ignore this model. + */ +- (NSDictionary *)modelCustomWillTransformFromDictionary:(NSDictionary *)dic; + +/** + If the default json-to-model transform does not fit to your model object, implement + this method to do additional process. You can also use this method to validate the + model's properties. + + @discussion If the model implements this method, it will be called at the end of + `+modelWithJSON:`, `+modelWithDictionary:`, `-modelSetWithJSON:` and `-modelSetWithDictionary:`. + If this method returns NO, the transform process will ignore this model. + + @param dic The json/kv dictionary. + + @return Returns YES if the model is valid, or NO to ignore this model. + */ +- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic; + +/** + If the default model-to-json transform does not fit to your model class, implement + this method to do additional process. You can also use this method to validate the + json dictionary. + + @discussion If the model implements this method, it will be called at the end of + `-modelToJSONObject` and `-modelToJSONString`. + If this method returns NO, the transform process will ignore this json dictionary. + + @param dic The json dictionary. + + @return Returns YES if the model is valid, or NO to ignore this model. + */ +- (BOOL)modelCustomTransformToDictionary:(NSMutableDictionary *)dic; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/NSString+KYSM4.h b/Libs/CredibleAuthSDK.framework/Headers/NSString+KYSM4.h new file mode 100644 index 0000000..67a0003 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/NSString+KYSM4.h @@ -0,0 +1,57 @@ +// +// NSString+KYSM4.h +// Hug +// +// Created by WJT on 2018/6/11. +// Copyright © 2018年 WJT. All rights reserved. +// + +#import + +@interface NSString (KYSM4) + +/** + * 使用密钥和初始化向量生成CBC模式的SM4加解密对象 + * + * @param secretKey 密钥 + * @param iv 初始化向量 + * + * @return SM4加密字符串 + */ +- (nullable NSString *)encryptionWithSM4Key:(nonnull NSString *)secretKey iv:(nonnull NSString *)iv; + +/** + 在CBC模式下,利用给定的密钥,初始化向量,对字符串解密 + + @param secretKey 密钥 + @param iv 初始化向量 + @return SM4解密字符串 + */ +- (nullable NSString *)decryptionWithSM4Key:(nonnull NSString *)secretKey iv:(nonnull NSString *)iv; +/** + * 使用密钥生成ECB模式的SM4加解密对象 + * + * @param secretKey 密钥 + * + * @return SM4加解密对象 + */ +- (nullable NSString *)encryptionWithSM4Key:(nonnull NSString *)secretKey; + +/** + * 在ECB模式下,利用给定的密钥,对字符串解密 + * + * @param secretKey 密钥 + * + * @return SM4解密字符串 + */ +- (nullable NSString *)decryptionWithSM4Key:(nonnull NSString *)secretKey; + +/** + * hmacSM3加密 + * + * @param secretKey 密钥 + * + * @return hmacSM3加密字符串 + */ +- (nullable NSString *)encryptionWithSM3Key:(nonnull NSString *)secretKey; +@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/SimpleIFAAProcess.h b/Libs/CredibleAuthSDK.framework/Headers/SimpleIFAAProcess.h new file mode 100644 index 0000000..f983978 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/SimpleIFAAProcess.h @@ -0,0 +1,25 @@ +// +// EtasProcess.h +// esand_ios_demo +// +// Created by ReidLee on 2018/6/15. +// Copyright © 2018年 esandinfo. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SimpleIFAAProcess : NSObject + +// 是否在界面上打印日志 +@property (nonatomic) BOOL writeLog; + +typedef void (^Callback)(BOOL success, NSString *msg, NSString* code); + +- (id)initWithAuthtype:(int)authtype; +- (void)auth:(Callback)callback; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/WKWebViewJavascriptBridge.h b/Libs/CredibleAuthSDK.framework/Headers/WKWebViewJavascriptBridge.h new file mode 100644 index 0000000..4e3404f --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/WKWebViewJavascriptBridge.h @@ -0,0 +1,34 @@ +// +// WKWebViewJavascriptBridge.h +// +// Created by @LokiMeyburg on 10/15/14. +// Copyright (c) 2014 @LokiMeyburg. All rights reserved. +// + +#if (__MAC_OS_X_VERSION_MAX_ALLOWED > __MAC_10_9 || __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_1) +#define supportsWKWebView +#endif + +#if defined supportsWKWebView + +#import +#import "WebViewJavascriptBridgeBase.h" +#import + +@interface WKWebViewJavascriptBridge : NSObject + ++ (instancetype)bridgeForWebView:(WKWebView*)webView; ++ (void)enableLogging; + +- (void)registerHandler:(NSString*)handlerName handler:(WVJBHandler)handler; +- (void)removeHandler:(NSString*)handlerName; +- (void)callHandler:(NSString*)handlerName; +- (void)callHandler:(NSString*)handlerName data:(id)data; +- (void)callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback; +- (void)reset; +- (void)setWebViewDelegate:(id)webViewDelegate; +- (void)disableJavscriptAlertBoxSafetyTimeout; + +@end + +#endif diff --git a/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridgeBase.h b/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridgeBase.h new file mode 100644 index 0000000..54d80ac --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridgeBase.h @@ -0,0 +1,46 @@ +// +// WebViewJavascriptBridgeBase.h +// +// Created by @LokiMeyburg on 10/15/14. +// Copyright (c) 2014 @LokiMeyburg. All rights reserved. +// + +#import + +#define kOldProtocolScheme @"wvjbscheme" +#define kNewProtocolScheme @"https" +#define kQueueHasMessage @"__wvjb_queue_message__" +#define kBridgeLoaded @"__bridge_loaded__" + +typedef void (^WVJBResponseCallback)(id responseData); +typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback); +typedef NSDictionary WVJBMessage; + +@protocol WebViewJavascriptBridgeBaseDelegate +- (NSString*) _evaluateJavascript:(NSString*)javascriptCommand; +@end + +@interface WebViewJavascriptBridgeBase : NSObject + + +@property (weak, nonatomic) id delegate; +@property (strong, nonatomic) NSMutableArray* startupMessageQueue; +@property (strong, nonatomic) NSMutableDictionary* responseCallbacks; +@property (strong, nonatomic) NSMutableDictionary* messageHandlers; +@property (strong, nonatomic) WVJBHandler messageHandler; + ++ (void)enableLogging; ++ (void)setLogMaxLength:(int)length; +- (void)reset; +- (void)sendData:(id)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName; +- (void)flushMessageQueue:(NSString *)messageQueueString; +- (void)injectJavascriptFile; +- (BOOL)isWebViewJavascriptBridgeURL:(NSURL*)url; +- (BOOL)isQueueMessageURL:(NSURL*)urll; +- (BOOL)isBridgeLoadedURL:(NSURL*)urll; +- (void)logUnkownMessage:(NSURL*)url; +- (NSString *)webViewJavascriptCheckCommand; +- (NSString *)webViewJavascriptFetchQueyCommand; +- (void)disableJavscriptAlertBoxSafetyTimeout; + +@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridge_JS.h b/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridge_JS.h new file mode 100644 index 0000000..9c857f1 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/WebViewJavascriptBridge_JS.h @@ -0,0 +1,3 @@ +#import + +NSString * WebViewJavascriptBridge_js(void); diff --git a/Libs/CredibleAuthSDK.framework/Headers/XMGModelTool.h b/Libs/CredibleAuthSDK.framework/Headers/XMGModelTool.h new file mode 100644 index 0000000..e42f8cd --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/XMGModelTool.h @@ -0,0 +1,49 @@ +// +// XMGModelTool.h +// sqlite的基本封装 +// +// Created by 王顺子 on 16/12/5. +// Copyright © 2016年 小码哥. All rights reserved. +// + +#import + +@protocol XMGSqliteModelToolDelegate + +- (NSString *)primaryKey; + +- (NSArray *)ignoreIvarNames; + +- (NSDictionary *)renameDic; + +@optional +- (NSArray *)combinedPrimaryKeys; + +@end + +@interface XMGModelTool : NSObject + +/** + 获取表格名称 + */ ++ (NSString *)getTableNameWithModelClass: (Class)cls; +/** + 获取临时表格名称 + */ ++ (NSString *)getTempTableNameWithModelClass: (Class)cls; +/** + 获取模型会被创建成为表格的 成员变量名称和类型组成的字典 + {key: 成员变量名称,取出下划线 value: 值} + 类型: runtime获取的类型 + */ ++ (NSDictionary *)getModelIvarNameIvarTypeDic: (Class)cls; +/** + 获取模型里面, 需要创建表格的所有字段/类型, 组成的数组 + */ ++ (NSDictionary *)getModelIvarNameSqlTypeDic: (Class)cls; +/** + 获取模型里面所有的字段 + */ ++ (NSArray *)getModelIvarNames: (Class)cls; + +@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/XMGSqliteModelTool.h b/Libs/CredibleAuthSDK.framework/Headers/XMGSqliteModelTool.h new file mode 100644 index 0000000..c98400e --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/XMGSqliteModelTool.h @@ -0,0 +1,52 @@ +// +// XMGSqliteModelTool.h +// sqlite的基本封装 +// +// Created by 小码哥 on 2016/12/3. +// Copyright © 2016年 小码哥. All rights reserved. +// + +#import + +typedef enum : NSUInteger { + XMGSqliteModelToolRelationTypeEqual, + XMGSqliteModelToolRelationTypeGreater, + XMGSqliteModelToolRelationTypeLess, + XMGSqliteModelToolRelationTypeEG, + XMGSqliteModelToolRelationTypeEL, + XMGSqliteModelToolRelationTypeNE, +} XMGSqliteModelToolRelationType; + + +typedef enum : NSUInteger { + XMGSqliteModelToolNAONot, + XMGSqliteModelToolNAOAnd, + XMGSqliteModelToolNAOOr, +} XMGSqliteModelToolNAO; + + + + +@interface XMGSqliteModelTool : NSObject + +// runtime 获取更多的信息, 让用户, 尽可能少的, 给我们提供信息 ++ (BOOL)createTableWithModelClass: (Class)cls withUID: (NSString *)uid; + + +// 保存/ 已经存在, 更新 ++ (BOOL)saveModel: (id)model uid: (NSString *)uid; + ++ (NSArray *)queryAllModels:(Class)cls uid: (NSString *)uid; ++ (NSArray *)queryModels:(Class)cls key: (NSString *)key relation: (XMGSqliteModelToolRelationType)relation value: (id)value uid: (NSString *)uid; ++ (NSArray *)queryModels:(Class)cls keys: (NSArray *)keys relations: (NSArray *)relations values: (NSArray *)values nao: (NSArray *)naos uid: (NSString *)uid; ++ (NSArray *)queryModels:(Class)cls sql: (NSString *)sql uid: (NSString *)uid; + + ++ (BOOL)deleteModel: (id)model uid: (NSString *)uid; ++ (BOOL)deleteModel:(Class)cls key: (NSString *)key relation: (XMGSqliteModelToolRelationType)relation value: (id)value uid: (NSString *)uid; ++ (BOOL)deleteModel:(Class)cls keys: (NSArray *)keys relations: (NSArray *)relations values: (NSArray *)values nao: (NSArray *)naos uid: (NSString *)uid; ++ (BOOL)deleteWithSql: (NSString *)sql uid: (NSString *)uid; + +//+ (void)xxxx; + +@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/XMGTableTool.h b/Libs/CredibleAuthSDK.framework/Headers/XMGTableTool.h new file mode 100644 index 0000000..5afa8ff --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/XMGTableTool.h @@ -0,0 +1,21 @@ +// +// XMGTableTool.h +// sqlite的基本封装 +// +// Created by 王顺子 on 16/12/5. +// Copyright © 2016年 小码哥. All rights reserved. +// + +#import + +@interface XMGTableTool : NSObject + ++ (BOOL)deleteTable: (NSString *)tableName uid: (NSString *)uid; + +/** 判断表格是否存在 */ ++ (BOOL)isTableExists: (NSString *)tableName uid: (NSString *)uid; + +/** 获取表格里面所有的字段 */ ++ (NSArray *)getTableAllColumnNames: (NSString *)tableName uid: (NSString *)uid; + +@end diff --git a/Libs/CredibleAuthSDK.framework/Headers/XTQMData.h b/Libs/CredibleAuthSDK.framework/Headers/XTQMData.h new file mode 100644 index 0000000..20a3abd --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/XTQMData.h @@ -0,0 +1,53 @@ +// +// XTQMData.h +// bymsSDK +// +// Created by swxa@saas on 2021/3/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XTQMData : NSObject + + +/// 方法返回错误码 0为成功 -1为失败 +@property (nonatomic,assign) NSInteger code; +/// 具体错误码 +@property (nonatomic,copy) id errCode; +/// 0代表扫码身份认证,1代表扫码签名, +@property (nonatomic,assign) NSInteger flag; +/// 错误信息 +@property (nonatomic,copy) NSString *msg; +/// 当前业务标识 +@property (nonatomic,copy) NSString *key; +/// 签名值 +@property (nonatomic,copy) NSString *sign; +/// 明文 +@property (nonatomic,copy) NSString *plain; +/// 密文 +@property (nonatomic,copy) NSString *cipher; +/// 签名证书 +@property (nonatomic,copy) NSString *signCert; +/// 身份认证返回clientHello +@property (nonatomic,copy) NSString *clientHelloHex; +/// 身份认证返回clientInfo +@property (nonatomic,copy) NSString * clientInfo; + +@property (nonatomic,copy) NSString * sessionKey; +/// 身份认证返回clientAuth +@property (nonatomic,copy) NSString * clientAuth; +/// 证书信息 +@property (nonatomic,copy) NSDictionary *certInfo; +/// 验签结果 +@property (nonatomic,assign) bool verifyResult; +/// 随机数 +@property (nonatomic,copy) NSString * random; +/// 设备号 +@property (nonatomic,copy) NSString * deviceId; +///获取当前设备证书列表 +@property (nonatomic,copy) NSArray * data; +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/YYClassInfo.h b/Libs/CredibleAuthSDK.framework/Headers/YYClassInfo.h new file mode 100644 index 0000000..6b87458 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/YYClassInfo.h @@ -0,0 +1,200 @@ +// +// YYClassInfo.h +// YYModel +// +// Created by ibireme on 15/5/9. +// Copyright (c) 2015 ibireme. +// +// This source code is licensed under the MIT-style license found in the +// LICENSE file in the root directory of this source tree. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + Type encoding's type. + */ +typedef NS_OPTIONS(NSUInteger, YYEncodingType) { + YYEncodingTypeMask = 0xFF, ///< mask of type value + YYEncodingTypeUnknown = 0, ///< unknown + YYEncodingTypeVoid = 1, ///< void + YYEncodingTypeBool = 2, ///< bool + YYEncodingTypeInt8 = 3, ///< char / BOOL + YYEncodingTypeUInt8 = 4, ///< unsigned char + YYEncodingTypeInt16 = 5, ///< short + YYEncodingTypeUInt16 = 6, ///< unsigned short + YYEncodingTypeInt32 = 7, ///< int + YYEncodingTypeUInt32 = 8, ///< unsigned int + YYEncodingTypeInt64 = 9, ///< long long + YYEncodingTypeUInt64 = 10, ///< unsigned long long + YYEncodingTypeFloat = 11, ///< float + YYEncodingTypeDouble = 12, ///< double + YYEncodingTypeLongDouble = 13, ///< long double + YYEncodingTypeObject = 14, ///< id + YYEncodingTypeClass = 15, ///< Class + YYEncodingTypeSEL = 16, ///< SEL + YYEncodingTypeBlock = 17, ///< block + YYEncodingTypePointer = 18, ///< void* + YYEncodingTypeStruct = 19, ///< struct + YYEncodingTypeUnion = 20, ///< union + YYEncodingTypeCString = 21, ///< char* + YYEncodingTypeCArray = 22, ///< char[10] (for example) + + YYEncodingTypeQualifierMask = 0xFF00, ///< mask of qualifier + YYEncodingTypeQualifierConst = 1 << 8, ///< const + YYEncodingTypeQualifierIn = 1 << 9, ///< in + YYEncodingTypeQualifierInout = 1 << 10, ///< inout + YYEncodingTypeQualifierOut = 1 << 11, ///< out + YYEncodingTypeQualifierBycopy = 1 << 12, ///< bycopy + YYEncodingTypeQualifierByref = 1 << 13, ///< byref + YYEncodingTypeQualifierOneway = 1 << 14, ///< oneway + + YYEncodingTypePropertyMask = 0xFF0000, ///< mask of property + YYEncodingTypePropertyReadonly = 1 << 16, ///< readonly + YYEncodingTypePropertyCopy = 1 << 17, ///< copy + YYEncodingTypePropertyRetain = 1 << 18, ///< retain + YYEncodingTypePropertyNonatomic = 1 << 19, ///< nonatomic + YYEncodingTypePropertyWeak = 1 << 20, ///< weak + YYEncodingTypePropertyCustomGetter = 1 << 21, ///< getter= + YYEncodingTypePropertyCustomSetter = 1 << 22, ///< setter= + YYEncodingTypePropertyDynamic = 1 << 23, ///< @dynamic +}; + +/** + Get the type from a Type-Encoding string. + + @discussion See also: + https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html + https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html + + @param typeEncoding A Type-Encoding string. + @return The encoding type. + */ +YYEncodingType YYEncodingGetType(const char *typeEncoding); + + +/** + Instance variable information. + */ +@interface YYClassIvarInfo : NSObject +@property (nonatomic, assign, readonly) Ivar ivar; ///< ivar opaque struct +@property (nonatomic, strong, readonly) NSString *name; ///< Ivar's name +@property (nonatomic, assign, readonly) ptrdiff_t offset; ///< Ivar's offset +@property (nonatomic, strong, readonly) NSString *typeEncoding; ///< Ivar's type encoding +@property (nonatomic, assign, readonly) YYEncodingType type; ///< Ivar's type + +/** + Creates and returns an ivar info object. + + @param ivar ivar opaque struct + @return A new object, or nil if an error occurs. + */ +- (instancetype)initWithIvar:(Ivar)ivar; +@end + + +/** + Method information. + */ +@interface YYClassMethodInfo : NSObject +@property (nonatomic, assign, readonly) Method method; ///< method opaque struct +@property (nonatomic, strong, readonly) NSString *name; ///< method name +@property (nonatomic, assign, readonly) SEL sel; ///< method's selector +@property (nonatomic, assign, readonly) IMP imp; ///< method's implementation +@property (nonatomic, strong, readonly) NSString *typeEncoding; ///< method's parameter and return types +@property (nonatomic, strong, readonly) NSString *returnTypeEncoding; ///< return value's type +@property (nullable, nonatomic, strong, readonly) NSArray *argumentTypeEncodings; ///< array of arguments' type + +/** + Creates and returns a method info object. + + @param method method opaque struct + @return A new object, or nil if an error occurs. + */ +- (instancetype)initWithMethod:(Method)method; +@end + + +/** + Property information. + */ +@interface YYClassPropertyInfo : NSObject +@property (nonatomic, assign, readonly) objc_property_t property; ///< property's opaque struct +@property (nonatomic, strong, readonly) NSString *name; ///< property's name +@property (nonatomic, assign, readonly) YYEncodingType type; ///< property's type +@property (nonatomic, strong, readonly) NSString *typeEncoding; ///< property's encoding value +@property (nonatomic, strong, readonly) NSString *ivarName; ///< property's ivar name +@property (nullable, nonatomic, assign, readonly) Class cls; ///< may be nil +@property (nullable, nonatomic, strong, readonly) NSArray *protocols; ///< may nil +@property (nonatomic, assign, readonly) SEL getter; ///< getter (nonnull) +@property (nonatomic, assign, readonly) SEL setter; ///< setter (nonnull) + +/** + Creates and returns a property info object. + + @param property property opaque struct + @return A new object, or nil if an error occurs. + */ +- (instancetype)initWithProperty:(objc_property_t)property; +@end + + +/** + Class information for a class. + */ +@interface YYClassInfo : NSObject +@property (nonatomic, assign, readonly) Class cls; ///< class object +@property (nullable, nonatomic, assign, readonly) Class superCls; ///< super class object +@property (nullable, nonatomic, assign, readonly) Class metaCls; ///< class's meta class object +@property (nonatomic, readonly) BOOL isMeta; ///< whether this class is meta class +@property (nonatomic, strong, readonly) NSString *name; ///< class name +@property (nullable, nonatomic, strong, readonly) YYClassInfo *superClassInfo; ///< super class's class info +@property (nullable, nonatomic, strong, readonly) NSDictionary *ivarInfos; ///< ivars +@property (nullable, nonatomic, strong, readonly) NSDictionary *methodInfos; ///< methods +@property (nullable, nonatomic, strong, readonly) NSDictionary *propertyInfos; ///< properties + +/** + If the class is changed (for example: you add a method to this class with + 'class_addMethod()'), you should call this method to refresh the class info cache. + + After called this method, `needUpdate` will returns `YES`, and you should call + 'classInfoWithClass' or 'classInfoWithClassName' to get the updated class info. + */ +- (void)setNeedUpdate; + +/** + If this method returns `YES`, you should stop using this instance and call + `classInfoWithClass` or `classInfoWithClassName` to get the updated class info. + + @return Whether this class info need update. + */ +- (BOOL)needUpdate; + +/** + Get the class info of a specified Class. + + @discussion This method will cache the class info and super-class info + at the first access to the Class. This method is thread-safe. + + @param cls A class. + @return A class info, or nil if an error occurs. + */ ++ (nullable instancetype)classInfoWithClass:(Class)cls; + +/** + Get the class info of a specified Class. + + @discussion This method will cache the class info and super-class info + at the first access to the Class. This method is thread-safe. + + @param className A class name. + @return A class info, or nil if an error occurs. + */ ++ (nullable instancetype)classInfoWithClassName:(NSString *)className; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Libs/CredibleAuthSDK.framework/Headers/YYModel.h b/Libs/CredibleAuthSDK.framework/Headers/YYModel.h new file mode 100644 index 0000000..e1154ee --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/YYModel.h @@ -0,0 +1,22 @@ +// +// YYModel.h +// YYModel +// +// Created by ibireme on 15/5/10. +// Copyright (c) 2015 ibireme. +// +// This source code is licensed under the MIT-style license found in the +// LICENSE file in the root directory of this source tree. +// + +#import + +#if __has_include() +FOUNDATION_EXPORT double YYModelVersionNumber; +FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; +#import +#import +#else +#import "NSObject+YYModel.h" +#import "YYClassInfo.h" +#endif diff --git a/Libs/CredibleAuthSDK.framework/Headers/bymsSDK.h b/Libs/CredibleAuthSDK.framework/Headers/bymsSDK.h new file mode 100644 index 0000000..446eaba --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Headers/bymsSDK.h @@ -0,0 +1,270 @@ +// +// bymsSDK.h +// bymsSDK +// +// + +#import +#import "XTQMData.h" + +//控制台日志打印 0不打印 1打印 +#define KcontrolLogPrint @"1" + +@interface bymsSDK : NSObject + + +typedef void(^ ResponseSuccessBlock)(NSDictionary *responseObject); + +typedef void(^ XTQMDataResponseSuccessBlock)(XTQMData *data); +typedef void(^ ResponseJsonSuccessBlock)(NSString *responseObject); +typedef void(^ ResponseFailBlock)(NSError *error); + +///获取设备号 ++(XTQMData *)getDeviceId; +#pragma mark - 管理接口 +/// 初始化服务 +/// @param serverId 服务id 应用ID规则:不能为空,且为2位; +/// @param szHostAddress 服务地址 http//:ip:port ++ (XTQMData *)initServerAddress:(NSString *)serverId szHostAddress:(NSString *)szHostAddress; + +///获取证书列表 ++ (XTQMData *)getCertList; + ++(NSString * )SM3:(NSString *)pwd username:(NSString *)username; + + +#pragma mark - 2.3证书申请 +#pragma mark 1.纳税人、自然人接口 + +/// 本接口用于申请协同签名用户证书,并自动写入本地移动终端。税务信息系统APP调用SDK证书申请接口,SDK与后台进行数据交互,完成协同签名证书签发并返回给客户端,自动写入移动终端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) applyCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark 2.税务人员、运维人员接口 + +/// 本接口用于申请协同签名用户证书,并自动写入本地移动终端。税务信息系统APP调用SDK证书申请接口,SDK与后台进行数据交互,完成协同签名证书签发并返回给客户端,自动写入移动终端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) applyCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + + +#pragma mark - 2.4证书查看 +#pragma mark 1.纳税人、自然人接口 + +/// 本接口用于查看用户对应的证书。税务信息系统APP调用SDK证书查看接口,查看用户对应的证书详细信息。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) getCertInfo:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark 2.税务人员、运维人员接口 + +/// 本接口用于查看用户对应的证书。税务信息系统APP调用SDK证书查看接口,查看用户对应的证书详细信息。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) getCertInfo:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark - 2.5证书下载 +#pragma mark 1.纳税人、自然人接口 + +/// 本接口用于申请证书后证书没有写入客户端本地,通过下载证书将证书再次下载自动写入客户端本地。税务信息系统APP调用SDK证书下载接口,SDK与后台进行数据交互,完成协同签名证书下载并返回给客户端,自动写入移动终端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) downloadCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 + +/// 本接口用于申请证书后证书没有写入客户端本地,通过下载证书将证书再次下载自动写入客户端本地。税务信息系统APP调用SDK证书下载接口,SDK与后台进行数据交互,完成协同签名证书下载并返回给客户端,自动写入移动终端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) downloadCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark - 2.6证书更新 +#pragma mark 1.纳税人、自然人接口 +/// 本接口用于用户信息发生变更时更新协同签名证书。税务信息系统APP调用SDK证书更新接口,SDK与后台进行数据交互,完成协同签名证书更新。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) updateCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 +/// 本接口用于用户信息发生变更时更新协同签名证书。税务信息系统APP调用SDK证书更新接口,SDK与后台进行数据交互,完成协同签名证书更新。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) updateCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark - 2.7证书注销 +#pragma mark 1.纳税人、自然人接口 +/// 本接口用于注销协同签名证书并同步删除本地证书数据。税务信息系统APP调用SDK证书注销接口,SDK与后台进行数据交互,完成协同签名证书注销并返回给客户端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) logoutCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 +/// 本接口用于注销协同签名证书并同步删除本地证书数据。税务信息系统APP调用SDK证书注销接口,SDK与后台进行数据交互,完成协同签名证书注销并返回给客户端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) logoutCert:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + + +#pragma mark - 2.8 证书是否存在 +#pragma mark 1.纳税人、自然人接口 +/// 本接口用于检查本地是否存在协同签名证书,即用户是否申请协同签名证书,在做具体业务之前可以调用此接口判断用户是否申请证书,如果证书不存在则调用申请证书接口进行证书申请。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) checkCert:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 +/// 本接口用于注销协同签名证书并同步删除本地证书数据。税务信息系统APP调用SDK证书注销接口,SDK与后台进行数据交互,完成协同签名证书注销并返回给客户端。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) checkCert:(NSString *)ryType userNumber:(NSString *)userNumber successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark - 2.9 修改pin码 +#pragma mark 1.纳税人、自然人接口 +/// 用户调用修改PIN码接口实现对PIN码的修改。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param oldPin pin码 +/// @param newPin 新pin码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) changePin:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh oldPin:(NSString *)oldPin newPin:(NSString *)newPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark 2.税务人员、运维人员接口 +/// 用户调用修改PIN码接口实现对PIN码的修改。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param oldPin pin码 +/// @param newPin 新pin码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) changePin:(NSString *)ryType userNumber:(NSString *)userNumber oldPin:(NSString *)oldPin newPin:(NSString *)newPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark - 2.10 协同签名 +#pragma mark 1.纳税人、自然人接口 +/// 本接口用于检查本地是否存在协同签名证书,即用户是否申请协同签名证书,在做具体业务之前可以调用此接口判断用户是否申请证书,如果证书不存在则调用申请证书接口进行证书申请。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param original 待签名的原文数据,需要是UTF8字符集的,并转换为16进制串形式(1个字节转换为2个16进制字符)。 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) callSM2Sign:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin original:(NSString *)original successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 +/// 本接口用于实现协同签名操作并返回签名结果。税务信息系统APP调用SDK协同签名接口,SDK与后台进行数据交互,完成协同签名,得到签名结果。 +/// @param ryType 人员类型 1:纳税人 2:税务人员 3:运维人员 4:自然人 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param original 待签名的原文数据,需要是UTF8字符集的,并转换为16进制串形式(1个字节转换为2个16进制字符)。 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) callSM2Sign:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin original:(NSString *)original successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark - 2.11身份认证clientHello +#pragma mark 1.纳税人、自然人接口 +/// 本接口用于生成用于身份认证的clientHello。税务信息系统APP调用SDK身份认证clientHello接口,生成clientHello结果。 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) clientHello:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 +/// 本接口用于生成用于身份认证的clientHello。税务信息系统APP调用SDK身份认证clientHello接口,生成clientHello结果。 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) clientHello:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + + +#pragma mark - 2.12身份认证clientAuth + +/// 本接口用于生成用于身份认证的clientAuth。税务信息系统APP调用SDK身份认证clientAuth接口,SDK与后台进行数据交互,生成clientAuth结果。 +/// @param serverHello 服务端生成的serverHello +/// @param random 服务端返回的随机数 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) clientAuth:(NSString *)serverHello random:(NSString *)random successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + + +#pragma mark - 2.13协同解密 +#pragma mark 1.纳税人、自然人接口 + +/// 本接口用于对加密数据的解密,并返回解密结果。税务信息系统APP调用SDK协同解密接口,SDK与后台进行数据交互,完成协同解密,得到解密结果。 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param data 待解密的加密数据 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) callDecrypt:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin data:(NSString *)data successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; +#pragma mark 2.税务人员、运维人员接口 +/// 本接口用于对加密数据的解密,并返回解密结果。税务信息系统APP调用SDK协同解密接口,SDK与后台进行数据交互,完成协同解密,得到解密结果。 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param data 待解密的加密数据 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) callDecrypt:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin data:(NSString *)data successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark - 2.14扫码处理 +#pragma mark 1.纳税人、自然人接口 + + +///本接口用于扫码身份认证和扫码数字签名。税务信息系统APP扫描二维码后调用SDK扫码处理接口将扫描结果传入,SDK解析二维码数据,判断二维码用途(扫码数字签名、扫码身份认证),得到扫码处理结果,然后根据返回结果去协同签名安全管理中心获取身份认证或签名结果。 +/// @param ryType 人员类型 +/// @param userNumber 用户手机号 +/// @param userSbh 纳税人识别号 |身份证号码 +/// @param userPin 用户设置的PIN码 +/// @param scanResult 二维码数据 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) resolvingScanV1:(NSString *)ryType userNumber:(NSString *)userNumber userSbh:(NSString *)userSbh userPin:(NSString *)userPin scanResult:(NSString *)scanResult successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + +#pragma mark 2.税务人员、运维人员接口 +///本接口用于扫码身份认证和扫码数字签名。税务信息系统APP扫描二维码后调用SDK扫码处理接口将扫描结果传入,SDK解析二维码数据,判断二维码用途(扫码数字签名、扫码身份认证),得到扫码处理结果,然后根据返回结果去协同签名安全管理中心获取身份认证或签名结果。 +/// @param ryType 人员类型 +/// @param userNumber 税务人员代码|用户手机号 +/// @param userPin 用户设置的PIN码 +/// @param scanResult 二维码数据 +/// @param successBlock 成功回调 +/// @param failBlock 失败回调 ++(void) resolvingScanV1:(NSString *)ryType userNumber:(NSString *)userNumber userPin:(NSString *)userPin scanResult:(NSString *)scanResult successBlock:(XTQMDataResponseSuccessBlock)successBlock failBlock:( ResponseFailBlock)failBlock; + + +@end diff --git a/Libs/CredibleAuthSDK.framework/Info.plist b/Libs/CredibleAuthSDK.framework/Info.plist new file mode 100644 index 0000000..3bcf816 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/Info.plist differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo new file mode 100644 index 0000000..4f11a10 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.abi.json b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 0000000..dc109fc --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftdoc b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 0000000..b07fafe Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftmodule b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 0000000..6f074e5 Binary files /dev/null and b/Libs/CredibleAuthSDK.framework/Modules/CredibleAuthSDK.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/Libs/CredibleAuthSDK.framework/Modules/module.modulemap b/Libs/CredibleAuthSDK.framework/Modules/module.modulemap new file mode 100644 index 0000000..73545c9 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module CredibleAuthSDK { + umbrella header "CredibleAuthSDK.h" + + export * + module * { export * } +} + +module CredibleAuthSDK.Swift { + header "CredibleAuthSDK-Swift.h" + requires objc +} diff --git a/Libs/CredibleAuthSDK.framework/Modules/module.private.modulemap b/Libs/CredibleAuthSDK.framework/Modules/module.private.modulemap new file mode 100644 index 0000000..5ed0906 --- /dev/null +++ b/Libs/CredibleAuthSDK.framework/Modules/module.private.modulemap @@ -0,0 +1,8 @@ +// module.modulemap 文件 +module CredibleAuthSDK_Private { +// requires objc +// header "CredibleAuthSDK/Tool/3rd/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h" +//// header "YYModel/YYModel.h" +// export * +} +///Users/tony/Desktop/depend_sdk_ios/depend-sdk-ios/CredibleAuthSDK/Tool/3rd/WebViewJavascriptBridge/WKWebViewJavascriptBridge.h diff --git a/Libs/GZSWUniPlugin.framework/GZSWUniPlugin b/Libs/GZSWUniPlugin.framework/GZSWUniPlugin new file mode 100644 index 0000000..bafee4d Binary files /dev/null and b/Libs/GZSWUniPlugin.framework/GZSWUniPlugin differ diff --git a/Libs/GZSWUniPlugin.framework/Info.plist b/Libs/GZSWUniPlugin.framework/Info.plist new file mode 100644 index 0000000..10d9280 Binary files /dev/null and b/Libs/GZSWUniPlugin.framework/Info.plist differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory new file mode 100644 index 0000000..532aab8 Binary files /dev/null and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeDirectory differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements new file mode 100644 index 0000000..547903b Binary files /dev/null and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 new file mode 100644 index 0000000..67f7535 Binary files /dev/null and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeRequirements-1 differ diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeResources b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeResources new file mode 100644 index 0000000..b8f8921 --- /dev/null +++ b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeResources @@ -0,0 +1,101 @@ + + + + + files + + Info.plist + + PghLnWvRKROEfgpRk7jAneS7wgI= + + + files2 + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature new file mode 100644 index 0000000..992b91c Binary files /dev/null and b/Libs/GZSWUniPlugin.framework/_CodeSignature/CodeSignature differ