From 6e55179026819384a939016c8584a285c518d1e7 Mon Sep 17 00:00:00 2001 From: zhaoyuan17 Date: Tue, 30 Nov 2021 20:52:34 +0000 Subject: [PATCH] Update xts code lts branch Signed-off-by: zhaoyuan17 --- .../ams_standard/fwkdataaccessor/Test.json | 79 +- .../js/test/DataAbilityHelperJsSt.test.js | 4717 +++++++++++------ .../fwkdataaccessor/hap/amsStDataAbility.hap | Bin 0 -> 121107 bytes .../test/ActsBmsModuleUsageRecordTest.test.js | 4 +- 4 files changed, 3245 insertions(+), 1555 deletions(-) create mode 100644 appexecfwk/ams_standard/fwkdataaccessor/hap/amsStDataAbility.hap diff --git a/appexecfwk/ams_standard/fwkdataaccessor/Test.json b/appexecfwk/ams_standard/fwkdataaccessor/Test.json index 775315860..86439e021 100644 --- a/appexecfwk/ams_standard/fwkdataaccessor/Test.json +++ b/appexecfwk/ams_standard/fwkdataaccessor/Test.json @@ -1,39 +1,40 @@ -{ - "description": "Configuration for hjunit demo Tests", - "driver": { - "type": "JSUnitTest", - "test-timeout": "180000", - "package": "com.amsst.fwkdataaccessor", - "shell-timeout": "60000" - }, - "kits": [ - { - "test-file-name": [ - "FWKDataAccessor.hap" - - ], - "type": "AppInstallKit", - "cleanup-apps": true - }, - { - "type": "ShellKit", - "run-command": [ - "remount", - "mkdir /system/vendor" - ] - }, - { - "type": "PushKit", - "push": [ - "./resource/appexecfwk/amsStDataAbility.hap->/system/vendor/amsStDataAbility.hap" - ] - - }, - { - "type": "ShellKit", - "run-command": [ - "chmod 644 /system/vendor/*.hap" - ] - } - ] -} +{ + "description": "Configuration for hjunit demo Tests", + "driver": { + "type": "JSUnitTest", + "test-timeout": "180000", + "package": "com.amsst.fwkdataaccessor", + "shell-timeout": "60000" + }, + "kits": [ + { + "test-file-name": [ + "FWKDataAccessor.hap" + + ], + "type": "AppInstallKit", + "cleanup-apps": true + }, + { + "type": "ShellKit", + "run-command": [ + "remount", + "mkdir /data/test" + ] + }, + { + "type": "PushKit", + "push": [ + "/resource/appexecfwk/amsStDataAbility.hap->/data/test/amsStDataAbility.hap" + ] + + }, + { + "type": "ShellKit", + "run-command": [ + "chmod 644 /data/test/*.hap", + "bm install -p /data/test/amsStDataAbility.hap" + ] + } + ] +} diff --git a/appexecfwk/ams_standard/fwkdataaccessor/entry/src/main/js/test/DataAbilityHelperJsSt.test.js b/appexecfwk/ams_standard/fwkdataaccessor/entry/src/main/js/test/DataAbilityHelperJsSt.test.js index 55d4b2a64..978f8b2c6 100644 --- a/appexecfwk/ams_standard/fwkdataaccessor/entry/src/main/js/test/DataAbilityHelperJsSt.test.js +++ b/appexecfwk/ams_standard/fwkdataaccessor/entry/src/main/js/test/DataAbilityHelperJsSt.test.js @@ -14,236 +14,203 @@ */ import featureAbility from '@ohos.ability.featureAbility' import ohos_data_ability from '@ohos.data.dataability' -import bundle from '@ohos.bundle' -import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' + +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index' describe('ActsDataAbilityHelperTest', function () { - let bundleName = "com.ix.verify.act"; - //let abilityName = "VerifyActDataAbility"; - //let dataAbilityUri = ("dataability:///com.ohos.amsst.AppDataC.AmsStDataAbilityDataC1"); let dataAbilityUri = ("dataability:///com.ix.VerifyActDataAbility"); - + let dataAbilityUri2 = ("dataability:///com.ix.VerifyActDataAbility2"); let DAHelper; - let g_setTimeout = 100 + let g_setTimeout = 500 + + beforeAll(async (done) => { + console.debug('= ACTS_beforeAll ====: ' + DAHelper + " ,JSON. " + JSON.stringify(DAHelper)); + } catch (err) { + console.error('=ACTS_beforeAll acquireDataAbilityHelper catch(err)====>:' + err); + } + console.debug('= ACTS_beforeAll ==== { + console.debug('= ACTS_afterAll ====" - + (" json data【") + JSON.stringify(data)+ (" 】;")); - //expect(data.abilityInfo.length).assertEqual(1); - done(); - }catch(err) { - console.error('=bms_installAbility_0100 install catch(err)====>:'+err); + it('ACTS_AcquireDataAbilityHelper_0100', 0, async function (done) { + console.log('ACTS_AcquireDataAbilityHelper_0100====" + dataAbilityUri) + try { + var abilityHelper = featureAbility.acquireDataAbilityHelper(dataAbilityUri) + console.log('ACTS_AcquireDataAbilityHelper_0100 abilityHelper ====>: ' + + abilityHelper + " ,JSON. " + JSON.stringify(abilityHelper)) + expect(typeof (DAHelper)).assertEqual("object"); + } catch (err) { + console.error('=ACTS_GetDataAbilityHelper_0100 acquireDataAbilityHelper catch(err)====>:' + err); expect(false).assertTrue(); - done(); } - setTimeout(function () { - console.info('=bms_installAbility_0100====> setTimeout'); - }, g_setTimeout) - console.log('bms_installAbility_0100====" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof err).assertEqual('object'); - expect(err.code).assertEqual(0); - expect(typeof data).assertEqual('object'); - expect(data.status).assertEqual(0); - expect(data.statusMessage).assertEqual('SUCCESS'); - } - }catch(err) { - console.error('=bms_installAbility_0100 getBundleInstaller catch(err)====>:'+err); + /* + * @tc.number: ACTS_AcquireDataAbilityHelper_0200 + * @tc.name: GetDataAbilityHelper : Connects an ability to a Service ability + * @tc.desc: Check the return value of the interface () + */ + it('ACTS_AcquireDataAbilityHelper_0200', 0, async function (done) { + console.log('ACTS_AcquireDataAbilityHelper_0200====: ' + + abilityHelper + " ,JSON. " + JSON.stringify(abilityHelper)) + if (JSON.stringify(abilityHelper) == 'undefined' || JSON.stringify(abilityHelper) == 'null') + expect(true).assertTrue(); + else + expect(false).assertTrue(); + } catch (err) { + console.error('=ACTS_GetDataAbilityHelper_0200 acquireDataAbilityHelper catch(err)====>:' + err); expect(false).assertTrue(); } - } - -/* -* @tc.number: ACTS_AcquireDataAbilityHelper_0100 -* @tc.name: GetDataAbilityHelper : Connects an ability to a Service ability -* @tc.desc: Check the return value of the interface () -*/ - it('ACTS_AcquireDataAbilityHelper_0100',0, async function (done) { - console.log('ACTS_AcquireDataAbilityHelper_0100====" - + (" json dataAbilityUri 【") + JSON.stringify(dataAbilityUri)+ (" 】; ====>")) - let ret = false; - try{ - var abilityHelper = featureAbility.acquireDataAbilityHelper(dataAbilityUri) -// .then(function (data) { -// console.debug("=ACTS_AcquireDataAbilityHelper_0100 then data====>" -// + (" json data 【") + JSON.stringify(data)+ (" 】; ====>")+data); -// expect(typeof(data)).assertEqual("object"); -// console.log('=ACTS_AcquireDataAbilityHelper_0100 promise JSON.stringify([object])====>:' + JSON.stringify(promise)+","+promise); -// ret = true; -// done() -// }).catch(function (err){ -// console.debug("=ACTS_AcquireDataAbilityHelper_0100 catch err====>" -// + ("json err 【") + JSON.stringify(err) + (" 】 ====>")+err); -// console.log('=ACTS_AcquireDataAbilityHelper_0100 promise====>:' + JSON.stringify(promise)) -// ret = false; -// done(); -// }); - DAHelper = abilityHelper; - ret = true; - done() - }catch(err) { - console.error('=ACTS_GetDataAbilityHelper_0100 acquireDataAbilityHelper catch(err)====>:'+err); - ret = false; - done(); - } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_AcquireDataAbilityHelper_0100====: ' + JSON.stringify(DAHelper)+","+ DAHelper) + expect(typeof (DAHelper)).assertEqual("object"); + console.log('Insert_0100 DAHelper ====>: ' + DAHelper) let valueBucket - try{ - DAHelper.insert(dataAbilityUri,valueBucket) - .then(function (data){ - console.debug("=ACTS_Insert_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number"); - expect(data).assertEqual(1); - ret = true; - done(); - }).catch(function (err){ - console.debug("=ACTS_Insert_0100 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false; - done(); - }); - }catch(err) { - console.error('=ACTS_Insert_0100 catch(err)====>:'+err); + try { + DAHelper.insert(dataAbilityUri, valueBucket) + .then(function (data) { + console.debug("=ACTS_Insert_0100 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(data).assertEqual(1); + ret = true; + done(); + }).catch(function (err) { + console.debug("=ACTS_Insert_0100 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + ret = false; + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_Insert_0100 catch(err)====>:' + err); ret = false; + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Insert_0100====: ' + DAHelper) let valueBucket - try{ - var asyncCallback = await DAHelper.insert(dataAbilityUri,valueBucket, - (err,data)=>{ + try { + await DAHelper.insert(dataAbilityUri, valueBucket, + (err, data) => { console.debug("=ACTS_Insert_0200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】data【") + data + (" 】;")); expect(data).assertEqual(1); - console.log('=ACTS_Insert_0200 asyncCallback ====>:' + JSON.stringify(asyncCallback)) ret = true; done(); } ); - }catch(err) { - console.error('=ACTS_Insert_0200 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Insert_0200 catch(err)====>:' + err); ret = false; + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Insert_0200==== { - console.debug("=ACTS_Insert_0300 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number"); - expect(data).assertEqual(1); - ret = true; - done(); - }).catch((err)=>{ - console.debug("=ACTS_Insert_0300 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - //debugAnsErrorCodePrint(err.code); - ret = false; - done(); - }); - }catch(err) { - console.error('=ACTS_Insert_0300 catch(err)====>:'+err); + console.debug("=ACTS_Insert_0300 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number"); + ret = true; + done(); + }).catch((err) => { + console.debug("=ACTS_Insert_0300 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + ret = false; + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_Insert_0300 catch(err)====>:' + err); ret = false; + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Insert_0300====: ' + DAHelper) const valueBucket = { "name": "ACTS_Insert_0400_rose1", @@ -251,169 +218,175 @@ describe('ActsDataAbilityHelperTest', function () { "salary": 20.5, "blobType": "u8", } - try{ - var asyncCallback = await DAHelper.insert(dataAbilityUri,valueBucket, - (err,data)=>{ + try { + await DAHelper.insert(dataAbilityUri, valueBucket, + (err, data) => { console.debug("=ACTS_Insert_0400 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); expect(data).assertEqual(1); ret = true; done(); } ); - }catch(err) { - console.error('=ACTS_Insert_0400 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Insert_0400 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Insert_0400====: ' + DAHelper) var valueBucket; - try{ + try { DAHelper.batchInsert( dataAbilityUri, valueBucket ).then((data) => { console.debug("=ACTS_BatchInsert_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】; ====>")); - expect(typeof(data)).assertEqual("number"); + + ("json data 【") + JSON.stringify(data) + (" 】; ====>")); + expect(data).assertEqual(0); ret = true; done(); - }).catch((err)=>{ + }).catch((err) => { console.debug("=ACTS_BatchInsert_0100 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_BatchInsert_0100 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_BatchInsert_0100 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_BatchInsert_0100====: ' + DAHelper) var valueBucket; - try{ + try { await DAHelper.batchInsert( dataAbilityUri, valueBucket, - (err,data) => { + (err, data) => { console.debug("=ACTS_BatchInsert_0200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(data).assertEqual(0); ret = true; done(); }, ); - }catch(err) { - console.error('=ACTS_BatchInsert_0200 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_BatchInsert_0200 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_BatchInsert_0200====: ' + DAHelper) - var valueBucketArray = new Array({},{},{}) - try{ + var valueBucketArray = new Array({}, {}, {}) + try { DAHelper.batchInsert( dataAbilityUri, valueBucketArray, ).then((data) => { console.debug("=ACTS_BatchInsert_0300 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】; ====>")); - expect(typeof(data)).assertEqual("number"); + + ("json data 【") + JSON.stringify(data) + (" 】; ====>")); + expect(data).assertEqual(3); ret = true; done(); - }).catch((err)=>{ + }).catch((err) => { console.debug("=ACTS_BatchInsert_0300 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_BatchInsert_0300 batchInsert AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_BatchInsert_0300 batchInsert AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_BatchInsert_0300====: ' + DAHelper) - var valueBucketArray = new Array({},{},{}) - try{ + var valueBucketArray = new Array({}, {}, {}) + try { await DAHelper.batchInsert( dataAbilityUri, valueBucketArray, - (err,data) => { + (err, data) => { console.debug("=ACTS_BatchInsert_0400 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(data).assertEqual(3); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_BatchInsert_0400 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_BatchInsert_0400 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_BatchInsert_0400====: ' + DAHelper) - try{ + try { const valueBucket = { "name": "ACTS_BatchInsert_0500_roe1", "age": 21, "salary": 20.5, } - var valueBucketArray = new Array({"name": "BatchInsert_0500_roe11", "age": 21, "salary": 20.5, }, - {"name": "BatchInsert_0500_roe12", "age": 21, "salary": 20.5, }, - {"name": "BatchInsert_0500_roe13", "age": 21, "salary": 20.5, }) + var valueBucketArray = new Array({ "name": "BatchInsert_0500_roe11", "age": 21, "salary": 20.5, }, + { "name": "BatchInsert_0500_roe12", "age": 21, "salary": 20.5, }, + { "name": "BatchInsert_0500_roe13", "age": 21, "salary": 20.5, }) DAHelper.batchInsert( dataAbilityUri, valueBucketArray, ).then((data) => { console.debug("=ACTS_BatchInsert_0500 BatchInsert Promise then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number"); + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(data).assertEqual(3); ret = true done(); - }).catch((err)=>{ + }).catch((err) => { console.debug("=ACTS_BatchInsert_0500 BatchInsert Promise catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_BatchInsert_0500 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_BatchInsert_0500 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_BatchInsert_0500====: ' + DAHelper) const valueBucket = { "name": "BatchInsert_0600_roe1", "age": 21, "salary": 20.5, } - var valueBucketArray = new Array({"name": "BatchInsert_0600_roe11", "age": 21, "salary": 20.5, }, - {"name": "BatchInsert_0600_roe12", "age": 21, "salary": 20.5, }, - {"name": "BatchInsert_0600_roe13", "age": 21, "salary": 20.5, }) - try{ + var valueBucketArray = new Array({ "name": "BatchInsert_0600_roe11", "age": 21, "salary": 20.5, }, + { "name": "BatchInsert_0600_roe12", "age": 21, "salary": 20.5, }, + { "name": "BatchInsert_0600_roe13", "age": 21, "salary": 20.5, }) + try { await DAHelper.batchInsert( dataAbilityUri, valueBucketArray, - (err,data) => { + (err, data) => { console.debug("=ACTS_BatchInsert_0600 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(data).assertEqual(3); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_BatchInsert_0600 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_BatchInsert_0600 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_BatchInsert_0600====:' -// + ("json columnsArray 【") + JSON.stringify(columnsArray) + (" 】 ")+","+columnsArray); -//// const valueBucket = { -//// "name": "ACTS_Query_0100_roe1", -//// } -// try{ -// //let predicates = new ohos_data_ability.DataAbilityPredicates() -// let predicates = null -// console.error('=ACTS_Query_0100 ====>:' -// + ("json predicates 【") + JSON.stringify(predicates) + (" 】 ")+","+predicates); -// DAHelper.query(dataAbilityUri,columnsArray,predicates -// ).then((data) => { -// console.debug("=ACTS_Query_0100 then data====>" -// + ("json data 【") + JSON.stringify(data)+ (" 】")); -// expect(typeof(data)).assertEqual("number"); -// ret = true -// expect(ret).assertTrue(); -// done(); -// }).catch((err)=>{ -// console.debug("=ACTS_Query_0100 catch err ====>" -// + ("json err 【") + JSON.stringify(err) + (" 】 ")); -// ret = false -// expect(ret).assertTrue(); -// done(); -// }); -// }catch(err) { -// console.error('=ACTS_Query_0100 insert query AsyncCallback catch(err)====>:'+err); -// ret = false -// expect(ret).assertTrue(); -// done(); -// } -// setTimeout(function(){ -// console.error('=ACTS_Query_0100 setTimeout ret====>:'+ret); -// }, g_setTimeout); -// console.log('ACTS_Query_0100====: ' + DAHelper) -// try{ -// await DAHelper.query( -// dataAbilityUri, -// columnsArray, -// predicates, -// (err,data) => { -// console.debug("=ACTS_Query_0200 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// expect(typeof(data)).assertEqual("object"); -// ret = true -// done(); -// }, -// ); -// }catch(err) { -// console.error('=ACTS_Query_0200 catch(err)====>:'+err); -// ret = false -// done(); -// } -// setTimeout(function(){ -// expect(ret).assertTrue(); -// }, g_setTimeout); -// console.log('ACTS_Query_0200==== { - console.debug("=ACTS_Query_0300 Query then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】") +" , " + data); - expect(typeof(data)).assertEqual("object"); - ret = true - done(); - }).catch((err)=>{ - console.debug("=ACTS_Query_0300 Query catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false - done(); - }); + ); console.debug("=ACTS_Query_0300 queryPromise ====>" - + ("json queryPromise 【") + JSON.stringify(queryPromise) + (" 】 ")); - }catch(err) { - console.error('=ACTS_Query_0300 query catch(err)====>:'+err); + + ("json queryPromise 【") + JSON.stringify(queryPromise) + (" 】 ") + " , " + queryPromise); + expect(typeof (queryPromise)).assertEqual("object"); + done(); + } catch (err) { + console.error('=ACTS_Query_0300 query catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Query_0300==== { + (err, data) => { console.debug("=ACTS_Query_0400 query err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;") + " , " +data); - expect(typeof(data)).assertEqual("object"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + + JSON.stringify(data) + (" 】;") + " , " + data); + expect(typeof (data)).assertEqual("object"); ret = true done(); - },); - }catch(err) { - console.error('=ACTS_Query_0400 catch(err)====>:'+err); + }); + } catch (err) { + console.error('=ACTS_Query_0400 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Query_0400====: ' + DAHelper) -//// const valueBucket = { -//// "name": "ACTS_Update_0100_roe1", -//// } -//// try{ -//// //let predicates = new ohos_data_ability.DataAbilityPredicates() -//// let valueBucketNull = null -//// let predicates = null -//// DAHelper.update( -//// dataAbilityUri, -//// valueBucketNull, -//// predicates -//// ).then((data) => { -//// console.debug("=ACTS_Update_0100 then data====>" -//// + ("json data 【") + JSON.stringify(data)+ (" 】")); -//// expect(typeof(data)).assertEqual("number"); -//// ret = true -//// done(); -//// }).catch((err)=>{ -//// console.debug("=ACTS_Update_0100 catch err ====>" -//// + ("json err 【") + JSON.stringify(err) + (" 】 ")); -//// ret = false -//// done(); -//// }); -//// }catch(err) { -//// console.error('=ACTS_Update_0100 catch(err)====>:'+err); -//// ret = false -//// done(); -//// } -//// setTimeout(function(){ -//// expect(ret).assertTrue(); -//// }, g_setTimeout); -//// console.log('ACTS_Update_0100====: ' + DAHelper) -//// const valueBucket = { -//// "name": "ACTS_Update_0200_roe1", -//// "age": 21, -//// "salary": 20.5, -//// -//// } -//// try{ -//// //let predicates = new ohos_data_ability.DataAbilityPredicates() -//// let valueBucketNull = null -//// let predicates = null -//// await DAHelper.update( -//// dataAbilityUri, -//// valueBucketNull, -//// predicates, -//// (err,data) => { -//// console.debug("=ACTS_Update_0200 err,data=======>" -//// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -//// expect(typeof(data)).assertEqual("number"); -//// ret = true -//// done(); -//// }, -//// ); -//// }catch(err) { -//// console.error('=ACTS_Update_0200 catch(err)====>:'+err); -//// ret = false -//// done(); -//// } -//// setTimeout(function(){ -//// expect(ret).assertTrue(); -//// }, g_setTimeout); -//// console.log('ACTS_Update_0200====: ' + DAHelper) -// const valueBucket = {"name": "ACTS_Update_0300_roe1","age": 21,"salary": 20.5,} -// try{ -// let predicates = new ohos_data_ability.DataAbilityPredicates() -// DAHelper.update( -// dataAbilityUri, -// valueBucket, -// predicates -// ).then((data) => { -// console.debug("=ACTS_Update_0300 then data====>" -// + ("json data 【") + JSON.stringify(data)+ (" 】")); -// expect(typeof(data)).assertEqual("number"); -// ret = true -// done(); -// }).catch((err)=>{ -// console.debug("=ACTS_Update_0300 catch err ====>" -// + ("json err 【") + JSON.stringify(err) + (" 】 ")); -// ret = false -// done(); -// }); -// }catch(err) { -// console.error('=ACTS_Update_0300 update catch(err)====>:'+err); -// ret = false -// done(); -// } -// setTimeout(function(){ -// expect(ret).assertTrue(); -// }, g_setTimeout); -// console.log('ACTS_Update_0300====: ' + DAHelper) -// const valueBucket = {"name": "ACTS_Update_0400_roe1","age": 21,"salary": 20.5,} -// try{ -// let predicates = new ohos_data_ability.DataAbilityPredicates() -// await DAHelper.update( -// dataAbilityUri, -// valueBucket, -// predicates, -// (err,data) => { -// console.debug("=ACTS_Update_0400 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// expect(typeof(data)).assertEqual("number"); -// ret = true -// done(); -// }, -// ); -// }catch(err) { -// console.error('=ACTS_Update_0400 catch(err)====>:'+err); -// ret = false -// done(); -// } -// setTimeout(function(){ -// expect(ret).assertTrue(); -// }, g_setTimeout); -// console.log('ACTS_Update_0400====: ' + DAHelper) -// try{ -// let predicates = null -// DAHelper.delete( -// dataAbilityUri, -// predicates -// ).then((data) => { -// console.debug("=ACTS_Delete_0100 then data====>" -// + ("json data 【") + JSON.stringify(data)+ (" 】")); -// expect(typeof(data)).assertEqual("number"); -// ret = true -// done(); -// }).catch((err)=>{ -// console.debug("=ACTS_Delete_0100 catch err ====>" -// + ("json err 【") + JSON.stringify(err) + (" 】 ")); -// ret = false -// done(); -// }); -// }catch(err) { -// console.error('=ACTS_Delete_0100 catch(err)====>:'+err); -// ret = false -// done(); -// } -// setTimeout(function(){ -// expect(ret).assertTrue(); -// }, g_setTimeout); -// console.log('ACTS_Delete_0100====: ' + DAHelper) -// try{ -// let predicates = null -// await DAHelper.delete( -// dataAbilityUri, -// predicates, -// (err,data) => { -// console.debug("=ACTS_Delete_0200 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// expect(typeof(data)).assertEqual("number"); -// expect(data).assertEqual(0); -// ret = true -// done(); -// }, -// ); -// }catch(err) { -// console.error('=ACTS_Delete_0200 catch(err)====>:'+err); -// ret = false -// done(); -// } -// setTimeout(function(){ -// expect(ret).assertTrue(); -// }, g_setTimeout); -// console.log('ACTS_Delete_0200====: ' + DAHelper) + try { + let valueBucketNull = {}; + let predicates = new ohos_data_ability.DataAbilityPredicates(); + console.debug("=ACTS_Update_0100 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + DAHelper.update( dataAbilityUri, + valueBucketNull, predicates ).then((data) => { - console.debug("=ACTS_Delete_0300 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number"); + console.debug("=ACTS_Update_0100 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number"); ret = true done(); - }).catch((err)=>{ - console.debug("=ACTS_Delete_0300 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false + }).catch((err) => { + console.debug("=ACTS_Update_0100 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); done(); }); - console.debug("=ACTS_Delete_0300 datadelete====>" - + ("json datadelete 【") + JSON.stringify(datadelete)+ (" 】")+" , " + datadelete); - }catch(err) { - console.error('=ACTS_Delete_0300 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Update_0100 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); - console.log('ACTS_Delete_0300====: ' + DAHelper) - try{ - let predicates = new ohos_data_ability.DataAbilityPredicates() - await DAHelper.delete( + expect(typeof (DAHelper)).assertEqual("object"); + try { + let valueBucketNull = {}; + let predicates = new ohos_data_ability.DataAbilityPredicates(); + console.debug("=ACTS_Update_0200 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + await DAHelper.update( dataAbilityUri, + valueBucketNull, predicates, - (err,data) => { - console.debug("=ACTS_Delete_0400 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + (err, data) => { + console.debug("=ACTS_Update_0200 err,data=======>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); ret = true done(); - }); - }catch(err) { - console.error('=ACTS_Delete_0400 catch(err)====>:'+err); - ret = false + }, + ); + } catch (err) { + console.error('=ACTS_Update_0200 catch(err)====>:' + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); - console.log('ACTS_Delete_0400====: ' + DAHelper) + const valueBucket = { "name": "ACTS_Update_0300_roe1", "age": 21, "salary": 20.5, } + try { + let predicates = new ohos_data_ability.DataAbilityPredicates(); + predicates.equalTo('contact_id', 1); + predicates.limitAs(10); + predicates.orderByAsc("order_by_class"); + predicates.offsetAs(1); + console.debug("=ACTS_Update_0300 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + DAHelper.update( dataAbilityUri, - mimeTypeFilter, - ).then((data) =>{ - console.debug("=ACTS_GetFileTypes_0100 getFileTypes then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); - for(var i = 0; i < data.length; i++) { - expect(typeof(data[i])).assertEqual("string"); - console.log('=ACTS_GetFileTypes_0100 for data[' + i + '] ====>: ' + data[i]) - expect(data[i]).assertEqual(""); - } + valueBucket, + predicates + ).then((data) => { + console.debug("=ACTS_Update_0300 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(data).assertEqual(1); ret = true done(); - }).catch(err => { - console.debug("=ACTS_GetFileTypes_0100 getFileTypes catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + }).catch((err) => { + console.debug("=ACTS_Update_0300 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - console.log('featureAbility getFileTypes promise ====>: ' + promise) - }catch(err) { - console.error('=ACTS_GetFileTypes_0100 getFileTypes AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Update_0300 update catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); - console.log('ACTS_GetFileTypes_0100====: ' + DAHelper) - let mimeTypeFilter='*/*' - try{ - await DAHelper.getFileTypes( + expect(typeof (DAHelper)).assertEqual("object"); + console.log('featureAbility Update getDataAbilityHelper ====>: ' + DAHelper) + const valueBucket = { "name": "ACTS_Update_0400_roe1", "age": 21, "salary": 20.5, } + try { + let predicates = new ohos_data_ability.DataAbilityPredicates(); + predicates.equalTo('contact_id', 1); + predicates.limitAs(10); + predicates.orderByAsc("order_by_class"); + predicates.offsetAs(1); + console.debug("=ACTS_Update_0400 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + await DAHelper.update( dataAbilityUri, - mimeTypeFilter, - (err,data) => { - console.debug("=ACTS_GetFileTypes_0200 getFileTypes err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - console.log('=ACTS_GetFileTypes_0200 data.length ====>: ' + data.length); - for(var i = 0; i < data.length; i++) { - expect(typeof(data[i])).assertEqual("string"); - console.log('=ACTS_GetFileTypes_0200 for data ====>: ' + err.code +" data[" + i + "]: " + data[i]); - expect(data[i]).assertEqual(""); - } + valueBucket, + predicates, + (err, data) => { + console.debug("=ACTS_Update_0400 err,data=======>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(data).assertEqual(1); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_GetFileTypes_0200 getFileTypes AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Update_0400 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); - console.log('ACTS_GetFileTypes_0200====: ' + DAHelper) + try { + let predicates = new ohos_data_ability.DataAbilityPredicates(); + console.debug("=ACTS_Delete_0100 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + DAHelper.delete( dataAbilityUri, - mimeTypeFilter, - ).then((data) =>{ - console.debug("=ACTS_GetFileTypes_0300 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); - for(var i = 0; i < data.length; i++) { - expect(typeof(data[i])).assertEqual("string"); - console.log('= =ACTS_GetFileTypes_0300 for data[' + i + '] ====>: ' + data[i]) - expect(data[i]).assertEqual(""); - } + predicates + ).then((data) => { + console.debug("=ACTS_Delete_0100 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number"); ret = true done(); - }).catch(err => { - console.debug("=ACTS_GetFileTypes_0300 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - console.log('DataAbilityHelper getFileTypes error ====>: ' + err) - ret = false + }).catch((err) => { + console.debug("=ACTS_Delete_0100 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); done(); }); - console.log('featureAbility getFileTypes promise ====>: ' + promise) - }catch(err) { - console.error('=ACTS_GetFileTypes_0300 getFileTypes AsyncCallback catch(err)====>:'+err); - ret = false + } catch (err) { + console.error('=ACTS_Delete_0100 catch(err)====>:' + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); - console.log('ACTS_GetFileTypes_0300====: ' + DAHelper) - let mimeTypeFilter='image/*' - try{ - await DAHelper.getFileTypes( + expect(typeof (DAHelper)).assertEqual("object"); + console.log('featureAbility getDataAbilityHelper ====>: ' + DAHelper) + try { + let predicates = new ohos_data_ability.DataAbilityPredicates(); + console.debug("=ACTS_Delete_0200 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + await DAHelper.delete( dataAbilityUri, - mimeTypeFilter, - (err,data) => { - console.debug("=ACTS_GetFileTypes_0400 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); - for(var i = 0; i < data.length; i++) { - expect(typeof(data[i])).assertEqual("string"); - console.log('=ACTS_GetFileTypes_0400 for ====>: ' + err.code +" data[" + i + "]: " + data[i]); - expect(data[i]).assertEqual(""); - } + predicates, + (err, data) => { + console.debug("=ACTS_Delete_0200 err,data=======>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); + expect(data).assertEqual(1); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_GetFileTypes_0400 getFileTypes AsyncCallback catch(err)====>:'+err); - ret = false + } catch (err) { + console.error('=ACTS_Delete_0200 catch(err)====>:' + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); - console.log('ACTS_GetFileTypes_0400====" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + var datadelete = DAHelper.delete( + dataAbilityUri, + predicates + ).then((data) => { + console.debug("=ACTS_Delete_0300 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(data).assertEqual(1); + ret = true + done(); + }).catch((err) => { + console.debug("=ACTS_Delete_0300 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + ret = false + expect(false).assertTrue(); + done(); + }); + console.debug("=ACTS_Delete_0300 datadelete====>" + + ("json datadelete 【") + JSON.stringify(datadelete) + (" 】") + " , " + datadelete); + } catch (err) { + console.error('=ACTS_Delete_0300 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); + } + setTimeout(function () { + console.log('setTimeout function====<'); + }, g_setTimeout); + console.log('ACTS_Delete_0300====: ' + DAHelper) + try { + let predicates = new ohos_data_ability.DataAbilityPredicates(); + predicates.equalTo('contact_id', 1); + predicates.limitAs(10); + predicates.orderByAsc("order_by_class"); + predicates.offsetAs(1); + console.debug("=ACTS_Delete_0400 predicates====>" + + ("json predicates 【") + JSON.stringify(predicates) + (" 】") + " , " + predicates); + await DAHelper.delete( + dataAbilityUri, + predicates, + (err, data) => { + console.debug("=ACTS_Delete_0400 err,data=======>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(data).assertEqual(1); + ret = true + done(); + }); + } catch (err) { + console.error('=ACTS_Delete_0400 catch(err)====>:' + err); + ret = false + expect(false).assertTrue(); + done(); + } + setTimeout(function () { + console.log('setTimeout function====<'); + }, g_setTimeout); + console.log('ACTS_Delete_0400==== { + console.debug("=ACTS_GetFileTypes_0100 getFileTypes then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); + for (var i = 0; i < data.length; i++) { + expect(typeof (data[i])).assertEqual("string"); + console.log('=ACTS_GetFileTypes_0100 for data[' + i + '] ====>: ' + data[i]) + expect(data[i]).assertEqual(""); + } + ret = true + done(); + }).catch(err => { + console.debug("=ACTS_GetFileTypes_0100 getFileTypes catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + ret = false + expect(false).assertTrue(); + done(); + }); + console.log('featureAbility getFileTypes promise ====>: ' + promise) + } catch (err) { + console.error('=ACTS_GetFileTypes_0100 getFileTypes AsyncCallback catch(err)====>:' + err); + ret = false + expect(false).assertTrue(); + done(); + } + setTimeout(function () { + console.log('setTimeout function====<'); + }, g_setTimeout); + console.log('ACTS_GetFileTypes_0100====: ' + DAHelper) + let mimeTypeFilter = '*/*' + try { + await DAHelper.getFileTypes( + dataAbilityUri, + mimeTypeFilter, + (err, data) => { + console.debug("=ACTS_GetFileTypes_0200 getFileTypes err,data=======>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + console.log('=ACTS_GetFileTypes_0200 data.length ====>: ' + data.length); + for (var i = 0; i < data.length; i++) { + expect(typeof (data[i])).assertEqual("string"); + console.log('=ACTS_GetFileTypes_0200 for data ====>: ' + err.code + " data[" + i + "]: " + data[i]); + expect(data[i]).assertEqual(""); + } + ret = true + done(); + }, + ); + } catch (err) { + console.error('=ACTS_GetFileTypes_0200 getFileTypes AsyncCallback catch(err)====>:' + err); + ret = false + expect(false).assertTrue(); + done(); + } + setTimeout(function () { + console.log('setTimeout function====<'); + }, g_setTimeout); + console.log('ACTS_GetFileTypes_0200==== { + console.debug("=ACTS_GetFileTypes_0300 then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】")); + console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); + for (var i = 0; i < data.length; i++) { + expect(typeof (data[i])).assertEqual("string"); + console.log('= =ACTS_GetFileTypes_0300 for data[' + i + '] ====>: ' + data[i]) + expect(data[i]).assertEqual(""); + } + ret = true + done(); + }).catch(err => { + console.debug("=ACTS_GetFileTypes_0300 catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + console.log('DataAbilityHelper getFileTypes error ====>: ' + err) + ret = false + expect(false).assertTrue(); + done(); + }); + console.log('featureAbility getFileTypes promise ====>: ' + promise) + } catch (err) { + console.error('=ACTS_GetFileTypes_0300 getFileTypes AsyncCallback catch(err)====>:' + err); + ret = false + expect(false).assertTrue(); + done(); + } + setTimeout(function () { + console.log('setTimeout function====<'); + }, g_setTimeout); + console.log('ACTS_GetFileTypes_0300====: ' + DAHelper) + let mimeTypeFilter = 'image/*' + try { + await DAHelper.getFileTypes( + dataAbilityUri, + mimeTypeFilter, + (err, data) => { + console.debug("=ACTS_GetFileTypes_0400 err,data=======>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); + for (var i = 0; i < data.length; i++) { + expect(typeof (data[i])).assertEqual("string"); + console.log('=ACTS_GetFileTypes_0400 for ====>: ' + err.code + " data[" + i + "]: " + data[i]); + expect(data[i]).assertEqual(""); + } + ret = true + done(); + }, + ); + } catch (err) { + console.error('=ACTS_GetFileTypes_0400 getFileTypes AsyncCallback catch(err)====>:' + err); + ret = false + expect(false).assertTrue(); + done(); + } + setTimeout(function () { + console.log('setTimeout function====<'); + }, g_setTimeout); + console.log('ACTS_GetFileTypes_0400===={ + ).then((data) => { console.debug("=ACTS_GetFileTypes_0500 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); + + ("json data 【") + JSON.stringify(data) + (" 】")); console.log('DataAbilityHelper getFileTypes data.length ====>: ' + data.length); - for(var i = 0; i < data.length; i++) { - expect(typeof(data[i])).assertEqual("string"); + for (var i = 0; i < data.length; i++) { + expect(typeof (data[i])).assertEqual("string"); console.log('=ACTS_GetFileTypes_0500 for data [' + i + '] ====>: ' + data[i]) expect(data[i]).assertEqual(""); } @@ -1158,939 +1084,1309 @@ describe('ActsDataAbilityHelperTest', function () { done(); }).catch(err => { console.debug("=ACTS_GetFileTypes_0500 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); console.log('DataAbilityHelper getFileTypes error ====>: ' + err) ret = false done(); }); console.log('=ACTS_GetFileTypes_0500 promise ====>: ' + promise) - }catch(err) { - console.error('=ACTS_GetFileTypes_0500 getFileTypes AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_GetFileTypes_0500 getFileTypes AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_GetFileTypes_0500====: ' + DAHelper) - let mimeTypeFilter='*/jpg' - try{ + let mimeTypeFilter = '*/jpg' + try { await DAHelper.getFileTypes( dataAbilityUri, mimeTypeFilter, - (err,data) => { + (err, data) => { console.debug("=ACTS_GetFileTypes_0600 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); console.log('=ACTS_GetFileTypes_0600 data.length ====>: ' + data.length); - for(var i = 0; i < data.length; i++) { - expect(typeof(data[i])).assertEqual("string"); - console.log('=ACTS_GetFileTypes_0600 for errCode ====>: ' + err.code +" data[" + i + "]: " + data[i]); + for (var i = 0; i < data.length; i++) { + expect(typeof (data[i])).assertEqual("string"); + console.log('=ACTS_GetFileTypes_0600 for errCode ====>: ' + err.code + " data[" + i + "]: " + data[i]); expect(data[i]).assertEqual(""); } ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_GetFileTypes_0600 catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_GetFileTypes_0600 catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_GetFileTypes_0600===={ + ).then(data => { console.debug("=ACTS_GetType_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("string") + + ("json data 【") + JSON.stringify(data) + (" 】")); + //expect(typeof(data)).assertEqual("string") + expect(data).assertEqual(dataAbilityUri); ret = true done(); }).catch(err => { console.debug("=ACTS_GetFileTypes_0500 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); console.log('featureAbility getType promise ====>: ' + promise) - }catch(err) { - console.error('=ACTS_GetType_0100 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_GetType_0100 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_GetType_0100====: ' + DAHelper) - try{ + try { await DAHelper.getType( dataAbilityUri, - (err,data) => { + (err, data) => { console.debug("=ACTS_GetType_0200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("string"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + //expect(typeof(data)).assertEqual("string"); + expect(data).assertEqual(dataAbilityUri); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_GetType_0200 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_GetType_0200 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_GetType_0200===={ + ).then((data) => { console.debug("=ACTS_OpenFile_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number") + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number") ret = true done(); }).catch(err => { console.debug("=ACTS_OpenFile_0100 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_OpenFile_0100 getType catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0100 getType catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0100===={ + ).then((data) => { console.debug("=ACTS_OpenFile_0200 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number") + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number") console.log('DataAbilityHelper ACTS_OpenFile_0200 OpenFile promise ====>: ' + data) ret = true done(); }).catch(err => { console.debug("=ACTS_OpenFile_0200 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false done(); }); - }catch(err) { - console.error('=ACTS_OpenFile_0200 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0200 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0200===={ + ).then((data) => { console.debug("=ACTS_OpenFile_0300 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number") + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number") console.log('DataAbilityHelper ACTS_OpenFile_0300 OpenFile promise ====>: ' + data) ret = true done(); }).catch(err => { console.debug("=ACTS_OpenFile_0300 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_OpenFile_0300 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0300 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0300===={ + ).then((data) => { console.debug("=ACTS_OpenFile_0400 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number") + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number") console.log('DataAbilityHelper ACTS_OpenFile_0400 OpenFile promise ====>: ' + data) ret = true done(); }).catch(err => { console.debug("=ACTS_OpenFile_0400 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_OpenFile_0400 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0400 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0400===={ + ).then((data) => { console.debug("=ACTS_OpenFile_0500 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number") + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number") console.log('DataAbilityHelper ACTS_OpenFile_0500 OpenFile promise ====>: ' + data) ret = true done(); }).catch(err => { console.debug("=ACTS_OpenFile_0500 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_OpenFile_0500 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0500 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0500===={ + ).then((data) => { console.debug("=ACTS_OpenFile_0600 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("number") + + ("json data 【") + JSON.stringify(data) + (" 】")); + expect(typeof (data)).assertEqual("number") console.log('DataAbilityHelper ACTS_OpenFile_0600 OpenFile promise ====>: ' + data) ret = true done(); }).catch(err => { console.debug("=ACTS_OpenFile_0600 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_OpenFile_0600 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0600 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0600====: ' + DAHelper) var mode = "r"; - try{ + try { DAHelper.openFile( dataAbilityUri, mode, - (err,data) => { + (err, data) => { console.debug("=ACTS_OpenFile_0700 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); - console.log('DataAbilityHelper ACTS_OpenFile_0700 OpenFile asyncCallback errCode ====>: ' + err.code +" data: " + data); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); + console.log('DataAbilityHelper ACTS_OpenFile_0700 OpenFile asyncCallback errCode ====>: ' + + err.code + " data: " + data); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_OpenFile_0700 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0700 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0700====: ' + DAHelper) var mode = "w"; - try{ + try { DAHelper.openFile( dataAbilityUri, mode, - (err,data) => { + (err, data) => { console.debug("=ACTS_OpenFile_0800 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); - console.log('DataAbilityHelper ACTS_OpenFile_0800 OpenFile asyncCallback errCode ====>: ' + err.code +" data: " + data); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); + console.log('DataAbilityHelper ACTS_OpenFile_0800 OpenFile asyncCallback errCode ====>: ' + + err.code + " data: " + data); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_OpenFile_0800 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0800 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0800====: ' + DAHelper) var mode = "wt"; - try{ + try { DAHelper.openFile( dataAbilityUri, mode, - (err,data) => { + (err, data) => { console.debug("=ACTS_OpenFile_0900 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); - console.log('DataAbilityHelper ACTS_OpenFile_0900 OpenFile asyncCallback errCode ====>: ' + err.code +" data: " + data); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); + console.log('DataAbilityHelper ACTS_OpenFile_0900 OpenFile asyncCallback errCode ====>: ' + + err.code + " data: " + data); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_OpenFile_0900 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_0900 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_0900====: ' + DAHelper) var mode = "wa"; - try{ + try { DAHelper.openFile( dataAbilityUri, mode, - (err,data) => { + (err, data) => { console.debug("=ACTS_OpenFile_1000 err,data====>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); - console.log('DataAbilityHelper ACTS_OpenFile_1000 OpenFile asyncCallback errCode ====>: ' + err.code +" data: " + data); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); + console.log('DataAbilityHelper ACTS_OpenFile_1000 OpenFile asyncCallback errCode ====>: ' + + err.code + " data: " + data); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_OpenFile_1000 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_1000 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_1000====: ' + DAHelper) var mode = "rw"; - try{ + try { DAHelper.openFile( dataAbilityUri, mode, - (err,data) => { + (err, data) => { console.debug("=ACTS_OpenFile_1100 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_OpenFile_1100 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_1100 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_1100====: ' + DAHelper) var mode = "rwt"; - try{ + try { DAHelper.openFile( dataAbilityUri, mode, - (err,data) => { + (err, data) => { console.debug("=ACTS_OpenFile_1200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("number"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("number"); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_OpenFile_1200 getType AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_OpenFile_1200 getType AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_OpenFile_1200====: ' + DAHelper) - try{ - var promise = DAHelper.release( + try { + DAHelper.release( dataAbilityUri, - ).then((data) =>{ + ).then((data) => { console.debug("=ACTS_Release_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("boolean") + + ("json data 【") + JSON.stringify(data) + (" 】") + " , " + data); + // expect(typeof(data)).assertEqual("boolean") + expect(data).assertEqual(true); ret = true done(); - }).catch(err =>{ + }).catch(err => { console.debug("=ACTS_Release_0100 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_Release_0100 release promise catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Release_0100 release promise catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Release_0100====: ' + DAHelper) - try{ + try { DAHelper.release( dataAbilityUri, - (err,data) => { + (err, data) => { console.debug("=ACTS_Release_0200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); console.log('featureAbility getDataAbilityHelper ACTS_Release_0100 data: ' + data) - expect(typeof(data)).assertEqual("boolean"); - console.log('DataAbilityHelper ACTS_Release_0200 asyncCallback errCode ====>: ' + err.code +" data: " + data); + //expect(typeof(data)).assertEqual("boolean"); + expect(data).assertEqual(false); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_Release_0200 release AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_Release_0200 release AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_Release_0200====: ' + DAHelper) - try{ - var promise = DAHelper.normalizeUri( + try { + DAHelper.normalizeUri( dataAbilityUri, - ).then((data) =>{ + ).then((data) => { console.debug("=ACTS_NormalizeUri_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("string") - //expect(data).assertEqual("dataability:///com.ix.VerifyActDataAbility"); + + ("json data 【") + JSON.stringify(data) + (" 】")); + //expect(typeof(data)).assertEqual("string") + expect(data).assertEqual(dataAbilityUri); ret = true done(); - }).catch(err =>{ + }).catch(err => { console.debug("=ACTS_NormalizeUri_0100 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_NormalizeUri_0100 normalizeUri promise catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_NormalizeUri_0100 normalizeUri promise catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_NormalizeUri_0100====: ' + DAHelper) - try{ + try { DAHelper.normalizeUri( dataAbilityUri, - (err,data) => { + (err, data) => { console.debug("=ACTS_NormalizeUri_0200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("string"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + expect(typeof (data)).assertEqual("string"); expect(data).assertEqual(dataAbilityUri); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_NormalizeUri_0200 normalizeUri AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_NormalizeUri_0200 normalizeUri AsyncCallback catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_NormalizeUri_0200====: ' + DAHelper) - try{ - var promise = DAHelper.denormalizeUri( + try { + DAHelper.denormalizeUri( dataAbilityUri, - ).then((data) =>{ + ).then((data) => { console.debug("=ACTS_DenormalizeUri_0100 then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - expect(typeof(data)).assertEqual("string") + + ("json data 【") + JSON.stringify(data) + (" 】")); + //expect(typeof(data)).assertEqual("string") expect(data).assertEqual(dataAbilityUri); ret = true done(); - }).catch(err =>{ + }).catch(err => { console.debug("=ACTS_DenormalizeUri_0100 catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); + + ("json err 【") + JSON.stringify(err) + (" 】 ")); ret = false + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_DenormalizeUri_0100 denormalizeUri promise catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_DenormalizeUri_0100 denormalizeUri promise catch(err)====>:' + err); ret = false + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_DenormalizeUri_0100====: ' + DAHelper) - try{ + try { DAHelper.denormalizeUri( dataAbilityUri, - (err,data) => { + (err, data) => { console.debug("=ACTS_DenormalizeUri_0200 err,data=======>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); - expect(typeof(data)).assertEqual("string"); + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + (" 】;")); + //expect(typeof(data)).assertEqual("string"); expect(data).assertEqual(dataAbilityUri); ret = true done(); }, ); - }catch(err) { - console.error('=ACTS_DenormalizeUri_0200 denormalizeUri AsyncCallback catch(err)====>:'+err); + } catch (err) { + console.error('=ACTS_DenormalizeUri_0200 denormalizeUri AsyncCallback catch(err)====>:' + err); ret = true + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); + setTimeout(function () { + console.log('setTimeout function====<'); }, g_setTimeout); console.log('ACTS_DenormalizeUri_0200====" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// isFlagCallback01++; -// console.debug("=ACTS_OnOff_ asyncCallback01 isFlagCallback01=======>" -// + ("json isFlagCallback01【") + JSON.stringify(isFlagCallback01) + (" 】")+" , "+isFlagCallback01); -// } -// function asyncCallback02(err,data){ -// console.debug("=ACTS_OnOff_ asyncCallback02 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// isFlagCallback02++; -// console.debug("=ACTS_OnOff_ asyncCallback02 isFlagCallback02=======>" -// + ("json isFlagCallback02【") + JSON.stringify(isFlagCallback02) + (" 】")+" , "+isFlagCallback02); -// } -// function asyncCallback03(err,data){ -// console.debug("=ACTS_OnOff_ asyncCallback03 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// isFlagCallback02++; -// console.debug("=ACTS_OnOff_ asyncCallback03 isFlagCallback03=======>" -// + ("json isFlagCallback03【") + JSON.stringify(isFlagCallback03) + (" 】")+" , "+isFlagCallback03); -// } -///* -//* @tc.number: ACTS_OnOff_0100 -//* @tc.name: On/Off : Registers an observer to observe data specified by the given Uri -//* @tc.desc: Check the return value of the interface () -//*/ -// it('ACTS_OnOff_0100', 0, async function (done) { -// console.log('ACTS_OnOff_0100==== { -// console.debug("=ACTS_OnOff_0100 notifyChange 1 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// },); -// setTimeout(function(){console.log('ACTS_OnOff_0100====" -// + ("json isFlagCallback01【") + JSON.stringify(isFlagCallback01) + (" 】")+" , "+isFlagCallback01); -// expect(isFlagCallback01).assertEqual(1); -// await DAHelper.off("dataChange",dataAbilityUri,asyncCallback01); -// await DAHelper.notifyChange( -// dataAbilityUri, -// (err,data) => { -// console.debug("=ACTS_OnOff_0100 notifyChange 2 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// },); -// setTimeout(function(){console.log('ACTS_OnOff_0100====" -// + ("json isFlagCallback01【") + JSON.stringify(isFlagCallback01) + (" 】")+" , "+isFlagCallback01); -// expect(isFlagCallback01).assertEqual(1); -// }catch(err) {console.error('=ACTS_OnOff_0100 catch(err)====>:'+err); } -// setTimeout(function(){console.log('ACTS_OnOff_0100==== { -// console.debug("=ACTS_OnOff_0200 notifyChange 1 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// }); -// setTimeout(function(){console.log('ACTS_OnOff_0100====" -// + ("json isFlagCallback01【") + JSON.stringify(isFlagCallback01) + (" 】")+" , "+isFlagCallback01); -// expect(isFlagCallback01).assertEqual(1); -// console.debug("=ACTS_OnOff_0200 isFlagCallback02=======>" -// + ("json isFlagCallback02【") + JSON.stringify(isFlagCallback02) + (" 】")+" , "+isFlagCallback02); -// expect(isFlagCallback02).assertEqual(1); -// console.debug("=ACTS_OnOff_0200 isFlagCallback03=======>" -// + ("json isFlagCallback03【") + JSON.stringify(isFlagCallback03) + (" 】")+" , "+isFlagCallback03); -// expect(isFlagCallback03).assertEqual(1); -// await DAHelper.off("dataChange",dataAbilityUri,asyncCallback02); -// await DAHelper.notifyChange(dataAbilityUri, -// (err,data) => { -// console.debug("=ACTS_OnOff_0200 notifyChange 2 err,data=======>" -// + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")); -// },); -// setTimeout(function(){console.log('ACTS_OnOff_0200====" -// + ("json isFlagCallback01【") + JSON.stringify(isFlagCallback01) + (" 】")+" , "+isFlagCallback01); -// expect(isFlagCallback01).assertEqual(2); -// console.debug("=ACTS_OnOff_0200 isFlagCallback02=======>" -// + ("json isFlagCallback02【") + JSON.stringify(isFlagCallback02) + (" 】")+" , "+isFlagCallback02); -// expect(isFlagCallback02).assertEqual(1); -// console.debug("=ACTS_OnOff_0200 isFlagCallback03=======>" -// + ("json isFlagCallback03【") + JSON.stringify(isFlagCallback03) + (" 】")+" , "+isFlagCallback03); -// expect(isFlagCallback03).assertEqual(2); -// }catch(err) { -// console.error('=ACTS_OnOff_0200 AsyncCallback catch(err)====>:'+err); -// } -// setTimeout(function(){console.log('ACTS_OnOff_0100==== { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0100 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0100); + done(); + } else { + currentAlertTimeout = setTimeout(() => { + console.debug('ACTS_OnOff_0100====< else true'); + done(); + }, g_setTimeout); + } + } + ); + } + } catch (err) { + console.error('=ACTS_OnOff_0100 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0100===="); + expect(false).assertTrue(); + clearTimeout(currentAlertTimeout); + done(); + } + DAHelper.on("dataChange", dataAbilityUri, onAsyncCallback_0200); + + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0200); + + setTimeout(mySetTimeout, g_setTimeout); + function mySetTimeout() { + DAHelper.notifyChange( + dataAbilityUri, + (err) => { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0200 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + done(); + } else { + currentAlertTimeout = setTimeout(() => { + console.debug('ACTS_OnOff_0200====:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0200====" + caller); + if (flagCallback01 == 1 && flagCallback02 == 1 && flagCallback03 == 1) { + clearTimeout(currentAlertTimeout); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback0301); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback0302); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback0303); + done(); + } else { + if (caller == "notifyChange") { + currentAlertTimeout = setTimeout(() => { + console.debug('ACTS_OnOff_0300==== { + expect(err.code).assertEqual(0); + waitDone("notifyChange"); + } + ); + } + } catch (err) { + console.error('=ACTS_OnOff_0300 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0300====" + + ("json flagCallback02【") + JSON.stringify(flagCallback02) + (" 】") + " , " + flagCallback02); + expect(false).assertTrue(); + clearTimeout(currentAlertTimeout); + done(); + } + function onAsyncCallback0403(err) { + expect(err.code).assertEqual(0); + flagCallback03++; + waitDone("onAsyncCallback0403"); + } + function waitDone(caller) { + console.debug("=ACTS_OnOff_0400 caller ====>" + caller); + if (flagCallback01 == 1 && flagCallback02 == 0 && flagCallback03 == 1) { + clearTimeout(currentAlertTimeout); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback0401); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback0403); + done(); + } else { + if (caller == "notifyChange") { + currentAlertTimeout = setTimeout(() => { + console.debug('ACTS_OnOff_0400==== { + expect(err.code).assertEqual(0); + waitDone("notifyChange"); + } + ); + } + } catch (err) { + console.error('=ACTS_OnOff_0400 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0400====" + + ("json err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + clearTimeout(currentAlertTimeout); + done(); + } + function onAsyncCallback0502(err) { + console.debug("=ACTS_OnOff_0500 err ====>" + + ("json err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + clearTimeout(currentAlertTimeout); + done(); + } + function onAsyncCallback0503(err) { + console.debug("=ACTS_OnOff_0500 err ====>" + + ("json err") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + clearTimeout(currentAlertTimeout); + done(); + } + try { + expect(typeof (DAHelper)).assertEqual("object"); + + DAHelper.on("dataChange", dataAbilityUri, onAsyncCallback0501); + DAHelper.on("dataChange", dataAbilityUri, onAsyncCallback0502); + DAHelper.on("dataChange", dataAbilityUri, onAsyncCallback0503); + + DAHelper.off("dataChange", dataAbilityUri); + + setTimeout(mySetTimeout, g_setTimeout); + function mySetTimeout() { + DAHelper.notifyChange( + dataAbilityUri, + (err) => { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0500 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + clearTimeout(currentAlertTimeout); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0100); + done(); + } else { + currentAlertTimeout = setTimeout(() => { + console.debug('ACTS_OnOff_0500====:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0500====" + caller); + if (flagCallback01 == 2) { + clearTimeout(currentAlertTimeout); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0600); + DAHelper2.off("dataChange", dataAbilityUri2, onAsyncCallback_0600); + done(); + } else { + if (caller == "notifyChange") { + currentAlertTimeout = setTimeout(() => { + console.debug('ACTS_OnOff_0600==== { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0600 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0600); + DAHelper2.off("dataChange", dataAbilityUri2, onAsyncCallback_0600); + done(); + } else { + DAHelper2.notifyChange( + dataAbilityUri2, + (err) => { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0600 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0600); + DAHelper2.off("dataChange", dataAbilityUri2, onAsyncCallback_0600); + done(); + } else { + waitDone("notifyChange"); + } + } + ); + } + } + ); + } + } catch (err) { + console.error('=ACTS_OnOff_0600 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0600==== { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0700 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0700); + DAHelper2.off("dataChange", dataAbilityUri2, onAsyncCallback_0700); + done(); + } else { + DAHelper2.notifyChange( + dataAbilityUri2, + (err) => { + if (err.code != 0) { + console.debug("=ACTS_OnOff_0700 err=======>" + + ("err【") + JSON.stringify(err) + (" 】") + " , " + err); + expect(false).assertTrue(); + DAHelper.off("dataChange", dataAbilityUri, onAsyncCallback_0700); + DAHelper2.off("dataChange", dataAbilityUri2, onAsyncCallback_0700); + done(); + } else { + currentAlertTimeout = setTimeout(() => { + done(); + }, g_setTimeout); + } + } + ); + } + } + ); + } + } catch (err) { + console.error('=ACTS_OnOff_0700 catch(err)====>:' + err); + expect(false).assertTrue(); + done(); + } + console.log('ACTS_OnOff_0700==== { - console.debug("=ACTS_ExecuteBatch_0100 executeBatch then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - ret = true + console.debug("=ACTS_ExecuteBatch_Insert_0100 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + " , " + data.length); + expect(true).assertTrue(); done(); - }).catch((err)=>{ - console.debug("=ACTS_ExecuteBatch_0100 executeBatch catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Insert_0100 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ") + " , " + err); + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0100 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + } catch (err) { + console.error('=ACTS_ExecuteBatch_Insert_0100 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0100===={ - console.debug("=ACTS_ExecuteBatch_0200 executeBatch err,data====>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")+ data.length); - ret = true - done(); - } - ); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0200 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + ).then((data) => { + console.debug("=ACTS_ExecuteBatch_Insert_0200 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + " , " + data.length); + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Insert_0200 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ") + " , " + err); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Insert_0200 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0200==== { - console.debug("=ACTS_ExecuteBatch_0300 executeBatch then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - ret = true + console.debug("=ACTS_ExecuteBatch_Insert_0300 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + " , " + data.length); + expect(true).assertTrue(); done(); - }).catch((err)=>{ - console.debug("=ACTS_ExecuteBatch_0300 executeBatch catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Insert_0300 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ") + " , " + err); + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0300 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + } catch (err) { + console.error('=ACTS_ExecuteBatch_Insert_0300 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0300===={ - console.debug("=ACTS_ExecuteBatch_0400 executeBatch err,data====>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")+ data.length); - ret = true + (err, data) => { + console.debug("=ACTS_ExecuteBatch_Insert_0400 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(err.code).assertEqual(0); done(); } ); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0400 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + } catch (err) { + console.error('=ACTS_ExecuteBatch_Insert_0400 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0400==== { + console.debug("=ACTS_ExecuteBatch_Insert_0500 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(err.code).assertEqual(0); + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Insert_0500 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Insert_0500==== { + console.debug("=ACTS_ExecuteBatch_Insert_0600 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(err.code).assertEqual(0); + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Insert_0600 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Insert_0600==== { - console.debug("=ACTS_ExecuteBatch_0500 executeBatch then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - ret = true + console.debug("=ACTS_ExecuteBatch_Update_0100 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Update_0100 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } done(); - }).catch((err)=>{ - console.debug("=ACTS_ExecuteBatch_0500 executeBatch catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Update_0100 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0500 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + } catch (err) { + console.error('=ACTS_ExecuteBatch_Update_0100 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0500===={ - console.debug("=ACTS_ExecuteBatch_0600 executeBatch err,data====>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")+ data.length); - ret = true - done(); + ).then((data) => { + console.debug("=ACTS_ExecuteBatch_Update_0200 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Update_0200 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); } - ); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0600 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Update_0200 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Update_0200 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0600==== { - console.debug("=ACTS_ExecuteBatch_0700 executeBatch then data====>" - + ("json data 【") + JSON.stringify(data)+ (" 】")); - ret = true + console.debug("=ACTS_ExecuteBatch_Update_0300 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Update_0300 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } done(); - }).catch((err)=>{ - console.debug("=ACTS_ExecuteBatch_0700 executeBatch catch err ====>" - + ("json err 【") + JSON.stringify(err) + (" 】 ")); - ret = false + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Update_0300 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); done(); }); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0700 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + } catch (err) { + console.error('=ACTS_ExecuteBatch_Update_0300 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0700===={ - console.debug("=ACTS_ExecuteBatch_0800 executeBatch err,data====>" - + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data)+ (" 】;")+ data.length); - ret = true + (err, data) => { + console.debug("=ACTS_ExecuteBatch_Update_0400 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + + JSON.stringify(data) + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Update_0400 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } done(); } ); - }catch(err) { - console.error('=ACTS_ExecuteBatch_0800 catch(err)====>:' - + ("json err 【") + JSON.stringify(err) + (" 】 ,")+err); - ret = false; + } catch (err) { + console.error('=ACTS_ExecuteBatch_Update_0400 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); } - setTimeout(function(){ - expect(ret).assertTrue(); - }, g_setTimeout); - console.log('ACTS_ExecuteBatch_0800==== { + console.debug("=ACTS_ExecuteBatch_Update_0500 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Update_0300 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); } - }, onReceiveUninstallEvent); + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Update_0500 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Update_0500====:'+err); + let predicates = new ohos_data_ability.DataAbilityPredicates(); + predicates.equalTo('contact_id', 1); + predicates.limitAs(10); + predicates.orderByAsc("order_by_class"); + predicates.offsetAs(1); + + DAHelper.executeBatch(dataAbilityUri, + [ + { + uri: dataAbilityUri, + type: featureAbility.DataAbilityOperationType.TYPE_UPDATE, + valuesBucket: valuesBucket, + predicates: predicates, + expectedCount: 1, + PredicatesBackReferences: {}, + interrupted: true, + }, + { + uri: dataAbilityUri2, + type: featureAbility.DataAbilityOperationType.TYPE_UPDATE, + valuesBucket: valuesBucket, + predicates: predicates, + expectedCount: 1, + PredicatesBackReferences: {}, + interrupted: true, + } + ], + (err, data) => { + console.debug("=ACTS_ExecuteBatch_Update_0600 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Update_0300 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Update_0600 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); expect(false).assertTrue(); + done(); } - } + console.debug('ACTS_ExecuteBatch_Update_0600==== { + console.debug("=ACTS_ExecuteBatch_Assert_0100 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Assert_0100 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Assert_0100 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Assert_0100 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); done(); - }catch(err) { - console.error('=bms_uninstallAbility_0100 uninstall catch(err)====>:'+err); + } + console.debug('ACTS_ExecuteBatch_Assert_0100==== { + console.debug("=ACTS_ExecuteBatch_Assert_0200 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Assert_0200 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Assert_0200 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Assert_0200 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); expect(false).assertTrue(); done(); } - setTimeout(function () { - console.info('bms_uninstallAbility_0100====< setTimeout'); - }, g_setTimeout) - console.info('bms_uninstallAbility_0100====< end'); + console.debug('ACTS_ExecuteBatch_Assert_0200==== { + console.debug("=ACTS_ExecuteBatch_Assert_0300 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Assert_0300 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Assert_0300 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Assert_0300 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Assert_0300==== { + console.debug("=ACTS_ExecuteBatch_Assert_0400 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Assert_0400 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Assert_0400 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Assert_0400==== { + console.debug("=ACTS_ExecuteBatch_Assert_0500 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Assert_0500 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Assert_0500 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Assert_0500==== { + console.debug("=ACTS_ExecuteBatch_Assert_0600 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Assert_0600 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Assert_0600 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Assert_0600==== { + console.debug("=ACTS_ExecuteBatch_Delete_0100 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Delete_0100 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Delete_0100 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Delete_0100 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Delete_0100==== { + console.debug("=ACTS_ExecuteBatch_Delete_0200 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Delete_0200 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Delete_0200 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Delete_0200 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Delete_0200==== { + console.debug("=ACTS_ExecuteBatch_Delete_0300 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Delete_0300 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_Delete_0300 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Delete_0300 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Delete_0300==== { + console.debug("=ACTS_ExecuteBatch_Delete_0400 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Delete_0400 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Delete_0400 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Delete_0400==== { + console.debug("=ACTS_ExecuteBatch_Delete_0500 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Delete_0500 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Delete_0500 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Delete_0500==== { + console.debug("=ACTS_ExecuteBatch_Delete_0600 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_Delete_0600 for data[' + i + '].count ====>: ' + + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_Delete_0600 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_Delete_0600==== { + console.debug("=ACTS_ExecuteBatch_0100 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_0100 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_0100 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_0100 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_0100==== { + console.debug("=ACTS_ExecuteBatch_0200 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_0200 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_0200 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_0200==== { + console.debug("=ACTS_ExecuteBatch_0300 executeBatch then data====>" + + ("json data 【") + JSON.stringify(data) + (" 】") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_0300 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + }).catch((err) => { + console.debug("=ACTS_ExecuteBatch_0300 executeBatch catch err ====>" + + ("json err 【") + JSON.stringify(err) + (" 】 ")); + expect(false).assertTrue(); + done(); + }); + } catch (err) { + console.error('=ACTS_ExecuteBatch_0300 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_0300==== { + console.debug("=ACTS_ExecuteBatch_0400 executeBatch err,data====>" + + ("json err【") + JSON.stringify(err) + (" 】json data【") + JSON.stringify(data) + + (" 】;") + data.length); + expect(true).assertTrue(); + for (var i = 0; i < data.length; i++) { + console.debug('=ACTS_ExecuteBatch_0400 for data[' + i + '].count ====>: ' + data[i].count) + expect(data[i].count).assertEqual(1); + } + done(); + } + ); + } catch (err) { + console.error('=ACTS_ExecuteBatch_0400 catch(err)====>:' + + ("json err 【") + JSON.stringify(err) + (" 】 ,") + err); + expect(false).assertTrue(); + done(); + } + console.debug('ACTS_ExecuteBatch_0400====i3J4Z@LKBeQ zQCjF75<&@tl<#?O{=0uJ=3>^Gwe~rC?>T2?jfnw(_Bs^<0|ONmm59oJ)BhVxRJ2sC ze!ed~++{t3{Cvp+R8-RzhFxptD^i%y36a5l#^>+eKT16xKBdqrm zZC!|H)h}#1KrSB<_T6l?gI5!|&^_x&JMDRu}ipc^9%M_fOq^8n>>HIvc}&(_S9^;52#_2nO5Rw^Lu)W!RCJ78&{h{q7sf;PW+1> z)Yxi$w3m1b5%s**;d8f~P#xushzKnCb~6b-bNz>4P|%l{s_rHgbyVY>2W5#81{ucR zHatbwM+o~Rrh%f}w2g}9z_e7 zX0nYG-_-|4c}(^1KxT~A8lhCU=zE(Xx@E;h zL|UQ(`E8;wzC^6B=Z#XN1+ACg{-{ zcKv>4joAk$&BwpLyAN+yVM1IS&!U*ta}czZk#bqn-(8Sdob8tmlq+{4==INZtCCD zO*TR{$ZtxWF^cmszOdX`Gwx<$%*~A_pw3(Emfx(eZg}p%-#F`L`xIu~645hYdb4qz z`o^_3cG??{9?Mc|Qd4U-U(eycc3rs#u)$?YL^Y}w78Pwu|He>G`@V&%D)`mnm)ew$ zU!E~WBZ71Ef9t{cYB>|fPS6(i%xXdN@c|#+f4R~9I50${R&qA(3k$}zDx;hOP=5V& ziXkzQkgw0c)A#tz(Ij>6J$dQ9uUuL(cR`i2eFO>MVuHu!hh8|oOlHqdJsJY4<)f57g|Y+sqnaoE?9 z&3i6KhphX>G2*^#!`zk%ue<9%YsVACOr!x|oR{~Q1q5s3l6k^d0hEpof{K3Fb%31v zGLW~)(m`A;299{S{Dt{zyCoyH0+ydSDh^&a<=UGEhsgW?_0exq1>`AUuhM}AJAR+$ zV72H#BOSk4^2sljUo(gkZvlYr%l!#YNxbI(I^=1nxLPV4?7sZ^iT<<2{1Q1j-`Piu zqc4_an4>b`^NN;T&CF_U9P-g3IH@rX%a+7&V?5?nswF5V-GU*&qe5D-Iiy0 z&v^joX5weSCo;Fafg3Aei}1Hsp3*J#bmZ}#gNt&oCUlOS z9eF(GofLWEKu09+L!6_yS_T~9zD#g<=Wk3W)Yq}c`*+Tg5%#-76l30X%yVu>=X<>( zF7ocTY`BxlavkrvF`aLjWmh|I7zY40)M3r@P`_`8joCZ-<=kM$>ny!a#sK|?$#AgC ze>oPoQ5WarwmieAAEpBM!ja=oPj@)n0am~s;1v$sm*bg| z>}bz^hfQXVN`cScQaI)YP%_JB;PA+K&g02I}RH-S7Sn(Yn02xBIf* z|1kUqZJzhsfR6loV8~cp|8IXs`#}l_Y|oh3$`j$ftV?&;-+{m9e;)wu=+I;SFwzmt z(*y>vxj0J!T6zD|ud&PWf4nKuId*gy@Pvs2>RkU58BrO4abNc1Jr@H|{&bu!q_nv$ zKchSR)1l4Nln?Kd$7VAV)c~l0|7{Tjzy>;;?qW6RKm#2TJm=hW$e-^D5WHbx06#g) zfmlrb`4?t;RLV+aU;={YVeRWo9p<(ocwve~7cVpM;r|Tu-?Ha*g(YSp7XabB{Gg2Y zG7j$KyzIan^&Vabs*U^3drnV>?CQugzIVn6pmcZWWfz=2q$B@F8|e4C`*J03m=xeY zJ;<8#gb#Pr-NU-j`QFQ^hwz*;(m5(y>W!l1kMejQdh%%lncFh{m*_8*yd*f>klEYC z`9E9U#jY`{!Qp7<m)=Xde7Obmpm@U6 z0LE_1^h?f!JUCtf%f=i9hi~~=c3tv3JC$^$+`~fY$Z2qx+wvguke@qF0b45f&cAyx zCCX(P9?2UGhjX&YpNRp$ogG2EVY`|yqgMo65qJH|l7|S_06O>lyTrx8Ub0eacJlsW z0LY7FN9F|toc^vq2*Bp*ECGN-(7c#Ic)Fx-g&tZR9^#dKS05`j(uK1u13ywE&ZZd# z`FJRMq5^mlyP{G-2TH9sphn_zGu-nUh@P;Y4F234B1WDU7s#ueV31$E3F~Pkca;F2P62+34JGSWx7=(T7g3vN%D?I_X00 zL!5F+neE@o?(=9=42wa|)(5I+V%jsI-a0C%6Y9}$yZ(UF`K`Xi27}>gaV+__K;tc| zAv8Me?9kbR=U zlb$8%d8kSQfs=2O^oCi4cOW(EO*Y(93-`>H9`c|i6cp`&S*4PicsC)Z_>=3U%}k zx`;F}f8xuHFvG&0fV=X=dgbce(AcBB+qsEHPJrk=IV$x`qWBo_)^@t481!$l0KVT$ z5ig$Pbd|(eEIhlVu#J)BTL#~QMmBbYP0cc#B>StJ;3Ha}Jmb=Oh!IJf)Vi>GO;P@q zhoWe1&Jt(gLcaz#4yd4hVUC{?|BQiwab8WcjA|=9eLsP;Yue|nGGmv68W=MYtd-Ln z`zeq@X2GrBA2T+lsnno6Tj4R?8K;` z?NKXF7qmSO_#@`6#B?z^U!88XZUDE+J0<~^oA#e%B#zT-U}Bth<&Ljx1K*$uJHVrG zf_K*5@uAWf(1x!7R!9vq-N@qtL?7hMM`F~{T2J5tlu^}>=7-#a-2@#>jIz9u(5U@# z-lfrJ^^M9X8q%~zt#Qr87-DaFfolT2@kK+Z^ZcvW`Kk!zr@3dXf*zU=Y%v~Y z5y$33$`k$7EzCn`C#wn0QWwoIdAM`#ysT_ zBX%C*Iik0mtkGXa|CTh)PFMqea~dhK3NjTVuLKC>Mc5uWV^u)2Wj&2ta|I#DTvFr|Dq6=u3ZO!mJy3Zyp5`8C~@@g42JsL=5$d} zh$PBStGNW=^JOY&98@i7W99R`+iA^!laaGtt45>8C^=)4I}?;In#Dz}w;CI(IM$W7 z6*%naNHFHjym>}7=FQ|&o%IV7mN=5s$>?J}P!#Rab(kS7In_sa6t7xB@+urSiGs3i zE2zH+M_(ss=aj8D-o)<7f6INM0W3$!HRa$GsrL&L?4}o-Xp2#NoAZO7huk!cbVTiY zFD?`=*|*z1vgsZqsZpOwa_uFa>i`zhK5cIGf(~600F&nF?Ol`)1AD3Qsf7F58{Gwtmd$33|pr{O6xH*A2TNY`hs0 zomMK|{3E40A%<+cZr8r0 z>}%WhRn9w}yv;@u`GdKi@6-sZIooaxkzINJUJbx3h+2?q#j68M41zMWA#Dw(JDSuU6g4oA& z`g?BVMY_|-3(0U0l6J$=?5t06jG}MVe>PDhY&>(AdpfV`f<$YNLtJ?<@V0Y?lL9U?Qg#l(BQaG!e35#$bvd#C#7%=#-kW+|CfxN? zGc%=<5TrbYuL#FQ1=C|OgU9PfNHSeNr3e>>N{;-he2-*Es}=G2=bY&1gVT*Be9OSv zcjk2&<3H&VCB&JasRh{yBpbZm@omoO7g!A1!1&LxL1YHLaL!AO2xKHIM&uiNa-JWV zfAqVaL`>Nj21GyLIw`rS2aLUlLgzK8o7{_C3+;Q=R3H{D_l^50{geQ@N|(^d^oq?l#3Tn`vzRE<(L(ga`qRm-} z^FS4yiP;2dlF~!*QKb+~{}(^<`XF>;K@E5}3K{ZLXw}FG-V{SSt zi_KP2omWUa9(^)qjJr*G#CE#(%is|4G(&=5Ip-L0;Ukwe)@h%pa3x}X6%Mz@LIxD`&ixvA#{i@M-D+2Si8zlCQ?JN4r> zQjNzGwLjHyjX8Cj-+v8_Cz*B(a}x8z7*wy{3J zOPkR6&-)wdc^7Sj2H_v$*<;Qzm^h&daJDic+JMBW^`mToaFQ7UD~CmgE~DDT$ihQT z5|X50>LavL?9r{YqfXljGFJ5jz2E&Vn)xKmt~lY#yOV(1nB$|H>LLpqbFIY_sASV? z6`Ol28g)M(3?93P{7oLVj#YcN3Fw8|h9;~XO26AVr5VFpE%ya`Koc+8+~RMK(ni1u zPb>B-Tv|ntg}n-7(~l1wCC3e9cmImP34pHBPB-4`c_j_oOb-CGDB2QnSAelRjUA+Oua_=ry4g>Tf+pgVy?ckYoQ4b?% zB7q*!?E8CU`WK`T*0aZv1IQ-&b@;BF4dO8F#9#B5F(0bp2R;q1rZTBL<$jI4RQdxf zR}>qedVfK-)JcXa>bqpPDhu;bq%*QeW5A9HcR6IRN)+t}f1Irg+#tU6xx@uR4WSqze*B`H_S+NrJ;9_{k)c-vKC)ICx2 zZWIRC3`*8OMn~FrSFrz0z;U09_lZRdu48CECbH5ZZ|tX9b>CkQzM1|*15u;%XD`I| z8wOn{omWQ_>BEZcX7nK4xMRDgVB;9C-4}044C303x?6#g&?F68kk(w(2$<~Cyh{*0 z=|=D9)00YL=O_eSc(93Rm$uQJzAfgd#*6DLc-22B!8tJEJ*DooumMN{Kboj^p`QKiw(NJl<29V9c*OhC(S>CWYP!s7WpzDTcK6z$Cs94 zkiC<@3Fy zN*>iktf`n;OX+~=RFP;{p59NbK8h41xL>P4&7iNI?+p^q#7-J>cQGOlHVF1&Cln%j zdO?i_#)8}GQuTyG<4&Ev^%+Q#)`@l7qIZtxgBEix`OOowVP@3GtI5ok#~7y9Y%c)P*#kmVe?{l|n(itIYLaXJdmGT$_EY`attv?(U0aqbZosp` zq3n@{x#{9;-BH;5He}Ou=~qfUM@C-WRPlwOyY;St9h`FK(;xxCa`I(8$I}p z1NJrx0%x7qX@KzRl9OwhEc%y6k3V8sS6_rz5>nPqWbQ9$+%%?7g&z^EYK^%wwqziK zC#`JPe_|+H2QtzWo#jM>c)rnyKs)^yah)H6$#H*8h#{Il&xRx)%aJaY_JKa?HgZUklzqOQzQ zbOlr0DgN~Rdu_MFK`IQ#m^$TBQv4AL02^r>B$6L)d!0UaBM_L^(ak;$M1`2>=Yqm@ zvoy{AUbiFfkzGIbbvKYzS!hqy@m1<)2La#M&?+L6eZ6%#dlxdA>`nujr$y>i2m$F) z$gL{O+Jn@@;#O_S;se{mx&SJ_BI)Bj=r^TbuiI}PB(}9{HG@4|_HS$n=c9zOPuJwQ zv@RiogbUNDL}>QLfuubUT)xSwkE6STJKOVgL9wjpb%1Nws?>0Ym8VV7C+zh(r$0!U^-tENw3I;iC|P@rfc2H4cWO@o z5zCPSmyGH~!fdz6(oxpR6g9e&(-Wn8(Z64R&@DZw{zs)_iftc*8E*~XHh~@JtWwN) z2dq2o&)$k)jLF4+%{2I%o*v4nJ1T3|X~x)&hBQMHk+W&ePO|5+B!BW9Af)SVHX&L+ ztDh0@CeSMqbwH(Or3+3x%qL!IVxzNr&d&4Zd#Mhcj=Nerh{})AXqe=lS0vhOBoPx! zc09`H{a$Rre^PHc72%9)93U9QUr2_ezgN{?wT}6?lGuOJ1d;Bi_f+3x`v%sZ`K-Q2 z?^;3*w;-8!LW_f1n^02w_!#1_DuBRK?RRzA-1L&<<3xAKylvgUZH4R#ka%8odM|(5 zs5W<};`-^DK?BsD=It|dwP!l{1q~sx7T)WMmWe;}!&Dw^yQAQwF=SpF5@LPpM`P@q ztDFzbquIA^kz2g4{EB|!qE4u>k*nqnZT)JcQ%d^K*JRnOogKOS(R9J-urqU3IOyJj z@FmlSI~Hk)tSY4jDPQY8bw^F%w3op*QFSp<4c7(@v+!j{|=)Cc$6jre(ZTTF6Kise_3J!Xb)lz=fFlV5vMK)zG5>J)t|9ip7a_U33)oe?*YFe>B^jROy3^KUSBpX>O>_*2(qM1u9k={u0H z6YxKqPHMbFMXmeEgF?eWJ`87FJ{5eUWOK;J%AVwV>Lfszk{L1DnWvm$Kl5KdtgiZQ zV(X^$omsn~6lgg6`O(NBUoGMXIhbJ`mfHpjkwmP~v1J{#w*$7-uWouxfJ2kC zdqKTiO-nL^vH#u49k28T{3;*S=pJ>*JN?cUQ#|*3kbEsic+?U-K!U6)RJ1ExJ%`== z>GUrUK0(GXl9Y0@+`BtLa+PPUg$l&uhqnpbWnHv{8$_RvL?zZi!aM;WfVTq|p#12` zJ6bg`C7R0}t^sJE{GQ9HCc2$vfB3!!h5EepqEG{6*nb`aBG9{`q14C6&3V)I^rQ|n-NciQyWvs$V-$19;F-5*2Byw*Pc^+ON@!kN^lP68 zaReVjzdo)pfsiNxKM}~iq~E~a)ED|$@U^_J_9OV6fLY{z<5sWa8U)o5pzUZHIWr#t zfCU4{&%|o*fasxJ**Xlm?`t|avA%AAHyY!fL668AB=WG3E+1B)WFn~6{d7!`&X=;U zNk{g@`@mC`ZLi4C!IRR23kgxJU-;t^qV_eubTX2a?$A&lO2j>!!el$ybT#TAJ&G=91 zQC4xTwBnT9b*Y1Tk+J$ORpdj48_k|^7isJNRiof#NgLEq457B=_B_T3PQI?UB1c0L zPPLx&qxh8ZoqNT4N#uvXX!)z>?t77*>6GOaNY3#*!^`%_yHl8Qy|sUsMHXDE;54P6 zB0@0US(6HY%HGOsuh-%gY`Id&jAv+OHBHo;CG;2h)F& zQG)MMATgP?n4Hi<6*MCTaw&40=j-Jg9Hndq5w7 z)c%A&mamuglin451C!Vu?KT>~)eINvM>^lf?tNfrMj4urZO6DPF3!}|IAfmDkp60g zy-^x?HT4xU9GNG+@xu`3ghk-z{u#Z@ zRb!1Ohf)Qsil2u=v>G&Z_<#>sg3d1|Gv+@6c*qPtqe+axo_IZn75lb^~zP;nwPi4%ACcJi>&Dt zycVv%{M(G{^w@qt=1s#PbH?1}C|w%|w!rQ$t#S9>2kbKVdh^_--rX7a5}C!%bd%`~ z+~D^XQU5N8#+K*Fb`9%nEoX|=GoEURP{`D?sK9D|)2=GfPfYLTgUa~k?z5HO;c(eF z=o4*dPRJ}qS~9t|#EUbxWK zVzNU;SMi#~%GBR4wqLR`?p=|(&eZj3<})*Q#nOwzTzy|A-lIP`U4x8#``#z%>DQm` z={r{%nV|3At&3|kYg2cRm!zDkx2!hnyMW-due3}RA>z3uR*Gv` zb8$gF4@Am7mwq&ntu`+=F%grvn)$|Um3r0YwprP&AeWCkX`DA7B$wsIX@BBih*W7D z4~o=$^ekUrkyVAK@>cMOQE8k;{%xt7T}?YR-Q9bScbh}Avs52{iqm=Wx%>XljAT>W zrJMD6x-ULFLgjoI%Da{m2D8-u`t`Pi#rDqa^!WE}TU`=yB^ILttEFZ)Kj9x8ai`t< ze9u11<|>V0LEqzBFv+K`_O|N#1M)B8#IEaoE|;%2xBUCqG=n>i-J&6!_8TC@k+$=O z(6w7jxfZ;V1Ey8VCKe7xH+tRD#edM=_C=^E6N?!Fm`j8*O=%9a+xc|F47nyAU(H!~ z##^Ap#|f|UAJs7EO;Tt~j>}tFF^zjR&EYqS5{$RWCs?g)e)!hk@`m@0&A)smeu;^X zEfYas%-caP7DRI&e;P99M0S(n%}&n2&E6-ge>-5=dn-JaXH(e?F&x=9>zTUmnD;yw`f|Oz>FQ-YXf}w@ zrqZwaSu8w7)K)Ytz}af*-#CAQ*#1m}%lIF?zj=E7H7@hCD>c0;&eyb?u?h0+)+5Q+ zb-$ZgD&K9Bs9aWj#WRw1?H=X_GU%&k#3M6_61JONha!T~8IR3gW((X5y9u(NvVB|%Iu(w2->aD5Pd|5^UBhQnMT6=z>yj-lQZX#|^_oWe`l^T;1GNRj zh^<6|)?2wa*;ekv zp%hCStogMZ7+8d3SbG%{{gr6j=#Cs2R2b^nJKDAm6S2Z^i6(k+8COLBT5=3FIho>m zSDX%gPNz>3@wOkd$#0VW-8kOc^gaAtlx7br9o($WykY=)x)j+KwNo2HZ#R8$6gv^G z@GDsFa}Ds)<~Pthkb|<@hO(f%ja7lbfexS3*+%iJJrO42-%m2 za54@bl!zRwx_IXRR>MD|4Ez%W3S<}KM@Ci`^1-!F=jLRZf4|-bN!HokoV7*g|McqD z;fFrs#*gagIl#gr`a7+=dPz%x|0;uK@*_|xEjsOWNYCiINB{cfps3qHTPcSUOT453 zFSg*YgXda#)$#veP_o73FL2KdN&)e=0)O%+@m!e6Oq9U^c7V0poazgB zKYRZH32Bf11^4O=gcMC5S-(tO3Z0Mhp|?|qp51|5#9Hy@bt6a{q$HMvB^V{`xbo9a zLz`gvk~YU7xzW)UuIj>ttXHU~mn|dB z1qx4kgvc-aVlDfOE27nVe!|>)!J=stn~QkSl7a{<{cyTb)QQk(z2e*up>=Y1+Rk}c z1sr_zkH9h#So2^ZAmDwAM`Nf|YGq#(VRC}Sx^JKNS_zA){6xKr?s;@;F^M=$_&y5C zd{-LTv{6F}eVhVaFWE!I6{v(Xrr7=}G1oj%*8@DkT&z_e0_xs#odzOLddxq;5`0@I z#F_Xl{#p;5|9;JEUF9ufq4v!^JE0Wakf()9`@29r9l5DJo4xc;{I`q>+di31uTE8c zVvP1=L9~<}Rp~t*7IjZ)xhx~a&N*O~y(N;^V-M{3V zkl0{6qr(Gq(d^kJdaij&C#{V{#!NP*Rpqw?;0u3APNH}&c7byK-PDXZyWiG^?dPw{j#0J@={4F>C?l*{@ zh6Ka+a4AT=FOJW0Y+#YqB7u5E#iY5$e<+u^0X@JVYr)pmgEt2Su!Hd<2s1i7f{4fGbLDv_{)9a^u-}EYo=pvomXBU$wyL@v#@H3};|T9q5lbb9i^Muk#9_akbF0^+ zfrGmu24^|b4pDN-iXwd3heQ?;YnSu(?Vxj$?MvuUL+?qi^-nB8>7NH}YvlXdkUh{@OiXoRCK|MQMioX962Fc|vOUT736+ z7$IQ032)<0cUUM>t0MlQIBypDV`UHn@*VSc_|AG408|b?nF1o3=TnpxC=2Z&d1tnQ z1zAg7O|=hol$<*dFd1dfC>SxnJ9ge@fWO%rciMi4J8zKy@=th_g zOqGifisX8C3J6koR4_UrhdS06X^f{ZZ-@I8t{J29Y_mu&E|n_3QdVE#&XQvr?Zd){ zlW!frqlqQ!uI}IP30Zp@0JOe7e16h>IdJd6e)G3zufB2#zCG2{!jM;+Iu86oVXlLf zTXqny=xe>t*Rwy3XB$p-SNeh@YtH-(lOTbjPik)Z6%b}m4$ z#%1r*W)H&M7vB1TQXWQalMeC5k>SCu-|KRW(@D-DW?Ol4QwNdW8wJHbpPvGM>;~S8 z?mXRTEt?_Ub?r;ID9cKBY=#^c3F^0$gTuFRCB{z>JXl_e&HPzmN;jYxHLy zXD%gYF2tqqQ&C~1F)?yFNdl%8aM`tn7x+8YR2L34ecWj0i<*h*RqBSYIEJ52YD*m6 z4g<{}8EW`@R9q_LIe z5xf=5s~A>)G3EnigZ=FLF*B=E94I?4zp|VK(-%ddPe;tb?w@2)7~-iOBj6S>_ij7! zdC%q1-PoB=!A)wVVXltdu$E$&>YdG+$C1_xz%GSUlw?KP_ji=$Q z{`N8&6P*rT2VP!Wd3dM09#zMI_%a9R$O!UVz+7vsW)6DZFT8|;C9TyxGUN;X^(Az@ zq4g!!nC}p=usb{#SrJCaj)XpeU}o-O>!Kkarrif@c^9Ry(P zmK?qv3=HX+!q^0-z1Eym(RRcFvhDl{@Q_DoWhME0@f^x^p%y!p~_;Zw8v9lO&a8vGQRyJ$)CggsdTS(w($M)iKU!h-h9M^UrGbZy5^`}cHrOUASqWSi2_0L| z=@LpYsL27Z*Dpm1J$xU$UI=vbYWa1>B;bR(ONgJ{_3bAUBB}5dzua8>sgCe$kN;U#u!fgWEtcu-xyjA z_4r?Hr)uM<-$Q?_?sU0j5c*H(!u!@H?XoT@nOl!jnp?;w-&qPytwANQ7q1q-*ZKHf zkUuPXjoBoL^MmdlQ356T)l9)>r3A*b*)|dl%nZ@ zpxhicBI87XO2QG6f35d|)SB}yT0+fEV=gMSjU2J4Ly`Ho8+T@Nt$NfP+sc0f|2q9% zneKbE2!aJ;NX--dtW~2R;xn>oH85s*Y2*r7+wSWXOAsNPnCL;_`D7R(*~CBh!{Wmr zeNoiVau}nv;{7f@L5Obml~bif1N5&rVog5bWkhG<9^L3F-xavwt9gK0?%&c0;1ZL6 z+@Csla8Xr*pUB2f;k_H_8BIv+WjUJ)|3I7HqXCUV!c+ExK2kZ;b)w92w*rT{Fh-ie zFH1$NRHl}-7CdQDnu<=}K|%DQ=Quu8wy(D*zk`P&)7DX4DaKwgPU1VeW+7K4c0OgD z#za=(bS|p)M8ojBf2?2c8I-4uH{H@WbxKM{rZ_L5p6q_-o;9k%1w`)}f1)IGv{pZz zZ^=@FX_5~upbH9@f0&BMhAY8lr~t-5iR$@zF|_X;ipHDP)iPtFFTWKtXg>S=lw6RZ z9(8_mNq_O)WAd1`_vbsmswR}MagDs}Hfl)Tb1;d>5_=EfOb}k6H?rqceLM};ywUX3 zv(fk&8=-I@ea{fg-t?Eg)-0!qD*@K@Yx-UF{BJ7an?1*3hX?0JnF&lgY`oPKbX8DK%$LKGGGB1i3RuN5k6le|;<`op{U08b1}s|dJ!YlAsDi@lUn-};`3WOn zal!hA-v~D(?)7d0=qT4J6+`^Twj-B)zll{jb^ylzqk?m~_{A=M>v|fmXMnK+%hsj* z!n61`DuikL1Fk0W!^|BynOar)j-XVvNR8&aDxw}}g7W+1&-E<&*#}!D7bu3(5lV@_ zLmWDqmvE4>R|(xke9c06z25r-Guc1^&N)_!u1whDGr`4QMc2?m4M=HHJN1P`cnRvp z)5~R}?z?!CeCBF8!DM;-ya z1*qg&LO+IbXKf)Iag>f9^$$8&ELV|QN*&|b%YD(Y2V$t?0nUvIqMb0=mBqI>Xqw!b zaLiL_8NUa>G6gYIWSND@}ZtP z1}*EynlRx%jgd?IDF?BKv&*1sH}F!DuE|dpg0TCN9QIaVqH9cBvaZTP_qhZ^IDg-d zYjxB7B^>xihm`{=DUoW91JI;9-5R7PO4*Coqo|-TevQz@B*M)fD|d66&=z_Xql~X# zCTJ6CvsmJ`D5{r*bfhXhLqzcP&vLH1Zp&q(c0ZuM}2vYZ|I{TxxAh&9> zxd|6B)!I`1K}v0QS3Ts+FYEwFckSg$31L6p9Iy}`%-EI^fr|Ol$VQs7SVdZy-*GUC zX~4K0c*H~|#`hi@-NpyJb{CtQxNfw7l3^?*73#j{)YW-fq{1GSh#(H@76l+MY@gc* z=OEqatE0C`bRKozceC8zC$MxWTICqI}B9XX5}2PyO|U-ao(=-3Q&&t zIc2RVn)5M`XXE{~T_1tH?;E6a!b0NmcTh3$iF<*SY87>_CQiEU*Uw@c@IDW;d zNl1yGW@^<%XlO{tswpKPzj%pV{?$<*cY=LRe|U2G7$LoD&Mpu!sf+OR*FA11|Dw_1 zl`yVzs{EtA|5EfdTB82DM`VXV0a`mhHB<#&?G+LK{f6ee?G&bYy}5-??PnZ8JwHiX zt_^IuZxS?Q6gtA(@S%JC;#Xc1Vtgs*gqtBuu{qPxT+2_IA&kp_DWp@u3L?zX<+rQg zwh-P4(I=)t*S0mq9F9@cTl)4o;_^$~GY%7}V)IM~I$@N8`$}bf>>cMG8O-+CzfVDa z5u5}nM#s1h{!q(6v4ge8;Aav?pY?-FPE>w5E`g0nLX1bL9)euXoPUl}e>iFsOPD^% zY?A12-P}gS1v8Jzh)fJ>(^^O3h(-YKgW7u>Cp9^9(RM~D|ZgmZY)`9@BE_zU!}%ub{b@E}$w5M?EhZiym2T4C3;z#Mp1HTRMaJ-@WWm}rWr zpCEdkh_Mj9HNHk8*m*`DJ?h2;u@_eyxJ_lhspE~vS^bwK^l+3~I{I*3_{i>f+Y1}X zdIixHV!F9VLG70C)uJW;}S9Z0g^+1fi zNsNPHu&T6eb(J#LUh?6lIwRHc?g@1%v15%`+YSXu`(v&VLId^-lO{=^pv&bXJgY<} zX3}DQsSCRH2%)@l94%q_TB&8Lj*B>Aodkk(A@omLFWHXhd;TlV7ZPemZM+145!^&0 zXZi+i-83xZRgfzmjurE>xQ>HFdC7_Hc*fADt_0^ zX@5W^M2(8fY>425X`a|c(anCFDn+k2hvjx2i|T$a<|Lk6L4jSO=|_i`ir5WLHQ1=O9bM#8b55) zCm~agMbtDWq~Tjn%s>RtQYgV?Sg=7xquAZOkKHwy1;dPr{6mXu?Y4AolsJUm0gCt>{-PZkvt)gR(HvO7& z8-%2ZBU9r9w4-FzH%bT_* zuaxuZCB~H-427@eU!P}9z=Ebr{i=ncy>{9)aQvjO`O?wbJ(v#CU9(MftStPzEaI#h z+d97D(Yq%3`}CS>{B39^-dX;d07l0*;q=xyrUhAxidoq}SMy-;XdS+Ev`)Imcer^LDjG}7tRzbIC3RYB4 zl9n{0{`;)5mBED(djbnTk4`DuN6(l?RWdfshrD>ETs2VnL&XKk zb5$=AwVg%^Cv=!6pSYF3n;Wu1`jwdT+jX_3dbAC$|9H3%TB(VVGWULxHoq+!;&yy% z$*eaqLm};Yo=Z@3s+HGm8%_nYnzr#=&-*uysxy?(ulTrveT#ChOIxX(5L;3#T8Dk= zbNCjyT4m^Won=`n2rcJN?YJ<~^-cB};Gg}kq}GQ;tVLC1MGF&IAxDm0*&9FJ@f6)q zjF&BhJd?Rq1`DnqtG{yP*{?-=&#P0SNgiBz^B#ZXLXKZn3;0CQT|NjFQ<1skxMSg1 zl6vph3OUxl`o_@c$@__yYTiGZgTe}xHGb<6UWr7Tyf6;zc`3GK_mvCs*r{yz8IOH& zn541)izk8Ny3NkgK5dLT6JEbO8K~uKO7&c#_n+*m`mim@V1Eqv>MoyM8+^13Y-Ob9 zMsHtXR?*hdtTucFeG*}X`fyvj%|e4$?8s6vu`InE>ry$s67%`-=^aIGTy%`$SDKOA zw;i8~AepY}2?XoCo$TT+xBD6ec4e#^-Sxp0D?AZWR&qL=c~U_=-V#3a4A9Q;qQJ!A z%}9;^xqybBO+Ut@p_~`qAw6Q!@PchA4qudB(owSFXJ(e_T6*yRf_#l9$iwH~SY;p$W1i@Zl$|Gt*6*)ZR$ zIlt3w<;*6|A1K1`&g2dE_s*}Ls}8j$?-Tw7(w5xdVC*vybz5<05KfVb{l^l=uMnKF zJ(#3OD@S~OWkTt=q#@{oFwIx1SA`GPOJ3}I1XGdnO795}$9}stO~@E=GsLm$iPzS( zr$~ec9z+z{Ab>A=?Jewlo+!x$7-j%?lwu&ZSMR*2X{6h{XOQ96H<+S%z0Ubka;Y1s z%Puc|Jw7YjOiNq1EDT;BHdY!whR`bD=Mbqx3b@OZDO#*n97k-H@56NFI~p$knRlE? zhQz4=pD(qg*q3?noc!wEPOzd!D2=|94&mNVmQmEt?NZ}lc^13Q;$ZQ4Ja?E)Zo}b_ zuSPecBKbo>w;dCislrQLAa}TRzrx7;w*9U3-hf6vse78OznZTUD!yBYPUW)uS*24s zoS7q-@o$8q-uwAYv9P48taWKO>c{R@%s7Ye33>{se?5yT%kki<&S!OUSC$Et(8mY| zycN^B)kvYqG5KuB^@fpsrKEtbrO85qP5nLK06TYAY2;{nf3E3H3Pv9?XMnSBlZLtp z((jrts+X;k-$D+`i zgIRXMqUOOB<*RqPR2SdjmWO-v_URS$co9A$v%7RWHNp?g^bNbien6hzI5T?f7ugpn z^ZYUoH*%HoyDuUWRKK*XI+J{&N4JyhiQU!-Gzhl+%=hv9y-Wt%(>C@yKndB*yFcqz z?zORIV6HJ<2`TROKCzCbQ|#^K^ZaP|%9Ft>>i;;p%BVP+B^o?9EH1&_-CY-Vx8MW_ z9xS*o?(PH)PH=a3cXxMZAK&}4)7vv$Q@5sSPM@jnTTY)#<|h8ZYkJHFC!obrnDM!1 zSpG~PZMROycti-QK6ehx5HhSoyh}iI7UWu1^YpTA5aQLcA5u^}h60~DJBf?O#{R%4 z{-KUTlP=>I3w6IOE}oM5W7HXwFUn%`$t!g|&)(W&IWYX@42t4+0XFgM0P|ASlnoEI9%#h=|2&d zi3-(H+TJHsOb`*!#i!$d^up$udc?v60FqkNi^U@Cq|x$1C0 zDh7@O_+-cjBHVVdbLoe+9kCpQeHn`mlxkHa@k*=aC~$*4?m1g~Pd|-IA581AA}R*Q zKsF2O8YZ*0jO2mI{_~imA1IS&IZ>a|bChz;rCQ4s?ukL-7TvTF`;+>r*;>4Y$-`~u zDk}%8R~Aa??zmYF`yN=u;fWMGH$VBUeJOptp>(wjZu<5UK9!H4$ZN~*WRjV6*uuHC zy3|lD5otlxj|@Z{I7y^|hM0KL4?#vU-uLIa;pA%-ZY+YLTwZmRAGEqpoeqDp6_wYx zha5Bw%j^Jyl&;vHA6>Dqy4L75vrwv>e{lHJbR7^9J5C1F{gAG2F!M?1V!E!+WiYB+ zcm6VH!Imo&Rd5@TI(XHNug%(VMzl_D?8TBo#D^zhSCgeR2nig;&qd;tkeMmrI3+4u z&a+y(6DG7p7GaivlyV9w`tZUo2nbSp7LU@jD zJEWxjWOrs%sT>$FEfjV~8K^ctNS%mGu4h6-(L7+a^|8go^ED`LZCpUpaVmDA(UCP` zjh2a8#!93U#{YQOJyZ1VUi`+&5(FFtiXx^s%^}##SNfhg*X4G*fPR&RPl?Fj&7un{_)VX|g$fIS5O#q&Ol+vm=U$ z5D~w&ayDYL%uw@`Uuo4fEbhm_G zYGwUVNEw|W7{rRl6`^-&!-mzyOIu8ErCE&AwgvPkC6VS<{igQS-zU?O0q)o z5t5_o=oqt<9H)rnu7hh0Kcup>K9_wx!Fc2|@t;hL`AC6KAXFk5I*k?$V!LVswDB#~ z)fyCrhZ75;>71;k)xF5P+7dAhYGSmNz{hOf0SQ9w7c520pkJWrRX*_!N{5A$a(fB{ z@=Ob2W5l14q(;I%LAJ6mMkHV9b*rC7()w=|=WIMI%b1{rKnjj4q1O`}!;VHk;(*Cc zL)8AHd5R7W%8u`f0ewR`7kXhqF0`&M`|sRv>zC54it9W$@Y zC|Tl1E5BvpV+{)CMJaSw5I0Y|BIZek)sQwoV$)3oy!=kP)Y4-7+<=qPxT(oV^~1g) z7AZ2=9rX^eZJC?DdSahyN625p)t0~tn`^-@MKbR{cV`5eR` zlRsIi(`AtQ+=f3?R3ytupn?Jc&qC6u_(#t;67OCdu2RLDIMsJ^8$J zV^`@LiVK#AnCtw1ZlP-ty)L&h4~P9ZR~q@lGU0bfsbv~b3)Q=SC64^Pk~%xL94`ya zWq|joG%Sla@e-@difzFq)nSAUXRKJF0U*%^oIM2N(P z7UvFrT9{Hd@CXngKCqVP^mB*HrCK?gAajR@{z%b!h-Ssj>{=n23u=U5r*R}R8uhky zSYl-H=3%cblb?qley$`W&9gE&{F=?n@|yk(N!}&VVYVkhP!iERHsxpl`d7ft4iJHWMr0>4K6tR{-n<#M zzbU~bf7P#BIYc%CqL7)?GEL{r?j|lt=u)4&oB$VzQVOmcHDDD2Sv(usPMlq9X$oCi zJ@&wM@T*)A5d;~BvK%KG#`oI*drhwx!s%#qfO_cNdjmZ_mTa@Zw0f%p43ADOcZrsN zzXjJ-uUwQSt4c#oO(1U8oK?d5ffE6PolAVrhYXkdF~*ejZwSSRAg<)T05nqC7ZDdl zBXQSD{aq9hdi4JFE7bYSOK+-YU&IwUxX-Y0~>X&oA~Q%a^xP^*8KhQ90KtRQ+d zRLv%%e~S?Hs-HJfR_ejfSk%kriL9@D5}|;aM(f8+dU2C1gS+;tjcQx1%(Z%gi8rg} z8`yW?#ppuF*ZWF%8N$C%PJrBC2iz%>0#;hrVFwI2sY(2yq!z90kkomGW*+-q+Cd?6 zB?Sc^l9~NM36GGTxgjbS4_4)dF~f@pFlK-(d@{o!Ho$^z74fwQo?rqOD&7v_!i%y? zc_h6<`zFza?g%E)J?8x!ge^0${aQcD>dqS9&JS5&pJ>Uce%Xl!@1KG0MSa+``_t9< z{;S{G+7x#?noQ-R4dgY4NSOnEmsa`_QVcQG^6!WANFA;FG^S_@W%r8Ta>wt9X_Iq8 zilWc5#FxlMM+PsQ&5D0YKIw5>NHF!xBBB@Z#O|3n3w%@-dniEE^x(x#fc=+0ozh2fiPmq&cy)8q`mcaLFGz<2S-$8 z5fWl)*58~Dy<-auUQ1G#5n#ksYBMhOCf>mAA%a`R+}J1)&V@Y(T*3*O%c}aT6?Hof zk#D1nc959K_*oW#(;RJcJ9}7{LuE`Jhcv%#Lf9f^kv-YkAd|U}*;B(q@DL)g_Yq0C zEyo)9*Y)9zOz0fHqDlwH6bx-x(5`p-VEH{-zg4ZlY_&gddg1xSh*|G(eIafF2cLdv zOCh}T{vuQx>Q3tC#sEHu`ZB#SFKlpCeB*6ga#7=D^i<}{B&>T1mTzxj-`C)O5E2ne z`eF2|_>x)??F=H*_N+O8+E#AEe z;&=<@rvU5MH}^UY&C58u5KgkEpk&9>1J3sT3YCa783;}k;Z|`{O=a4+*;28P0YwrD( zoTv1*BkGUM))i`@zEQ6oa8`yJT8{6cbOm>$?j|lJ*eDpvhvrtM-V%dXPToj;Di4CU zmqGI{J?XM-@^XC$3hOh2!gkULyGHt>I=uQNnwlI=l3IGq`1oNdP&gq%QLgZI@0Vv) zTO;HzkA@8GKQaII+Tgdsud%BHrU<{Lx$WFWrB#3N9HR@BAx6L^7HSdNgHF^j?Zd5R zDYb4-+qR@GcX#^hDxy`2+xD^+lLASPozftW0sPib$={ww4S8yq+h?(B^!G)bV9L~Uf ziraVfd=P1)0AWo-^YlQCG&(SP`fy39Pi&4~G0y4Ve& zYuvHV;Urwv&IOTMvsUU2D7V(vP!@jA&_H+CIc-wSc>F5U6MhL;cUAqCn<2JwUY+V# zINjfBz7s*Zn;CwS=w^)}Bm63$+kXJWTriKrw~7!&OzYo;U*YjZP)cl648IW^1gaA= zD!048bSuHn^P}kO=Pvb16^|2h-Y3HZSiOB^LhpV)JluV$D&BOkBwIAWr*f&p(a9}b zF-SnD3lh%m5f-ru=k8UsDRBk$ER(zD>BP&4ZPU88CK>upAxKb6sRnHNN8j*GseDYd z4{T|sFRkeRZrLHrBB0VZK_a_yokM<2CvY~)`L+M%x1&!6!Y}@c-4qB@HVAPfC%7;-Mop@vy4!4}KJ6j4EHK+Y|oRlER;n?SZKw#Y6Qm*wa zRREDaiXH|A#8e5$5{Z$&^8VbGf4}&?A`$!rRdjAn8_Nu#q|70#4OW0&F$FfIT3l;y z4~eGnr)!{cWWU|6yjYw*1QMYZ*@x>*c5xbk|M(t*Yr^X1g3sIs2tK&xE~4tRipp?6 z;HqlRV84UK-(hRF>nluEd?XmA#%acW1idh#AuBOB$O(0I6K-cQuDbr=B&1$2E4NS$ zg6(5^6bY+g|TH}2&Fyt%8|-t z$tX5gO!XR>h|b8(Dk1ue4(6Kn-<4^Yr@NZ{=xr|`zjOKqFtw)EW&~jkJ4KA1m&ssZ zjEYx&y~FB{y`~Cp6y1(HB)YUl3fA+C(2F zzOVM}magD$n3ad8yffC~7a{#{8VOGR&Yti8@)AP&V4gw?p{G=9ZHD5HyvfH10)-Y| z2!s!D5BF4rP9yA>loebOTf&h7YO1D8CG<)1{r6lWC9$i=ESglKbJW(LzM`FVm4lO{`pK)T~tMzzJu}uff{V zHL(RIs{y|m!$9%@ol;6qvffj$UN^9uA__WUoziNFwPf+A?uZiuotWY(hPIJmjs|*$USJJ)^Bv zZD`ih8{?WVEwk-#wVD{rKX+xpgJ^Y(-Jyb}W@h!%e~keV+CkV)B5GZ^v{zA5R%NIh zOt4X-%;{EHs2td^QT@#6O}NBXBX}J99n*Wugx|SAz3OMCyy^JCbX*1wy=c@J=`nN} zcmfue?q=b48hKl=9EwziMqvR2Gdv!=n>hJfu$+p9zpsO7nvA20pGI(say|J)cSO7! zrcd+3Y4AR0)D=y+ANx00csK=JNez5J|ycE~;*t%F-vWr>W+b&duTB z!eb(a&*1af!=a3hH<0`;Wm8|;L`Vs_k$-DTDHS?tm1T9D;4bq`ivrzk#OXYn!#tS| z@KgvPehE#=OR;XegOH#@QDUTeq2$Q{H;Y9DC7Sk|v2KD?~3$53+5&xY71;gL-C zh`-wLTFFps>4&z*gX*8=Z%pIH5xlDnhlbYL=5=vBDce?0ldYFdlar441eU>GqIz-AWVfp-KxMTI7P>`m9r>3qn!|kzGYUgO=^HTWBh5`Qs+P|MIt4M z7Uy!`mh)6q-c*wdeI4snS6;D|dl302lFuKZMHKcTjVFC?WQM0+=zb8vAX$6Z9@zz? zljb&Z1s%F3O|`biCZd^Va5fdXqrVZErnOo3A$+MxsUbBy*kh(Fj=Ia*PMOE5pJk3t zI@r)$l+|I$pd^0)vnvLvFtPa8{T7R7V`jjp-mhzH*WcyMYu+!Tol| zj1P2#CRMPZOE#(ExTnps3Fmnn%_n3q%@$<6NoQ<24E_d_V(T~xUlN-izPRPX(c>S( zLtESa!o;(&O3ED2OZa=qu^|w;OSLtQ-6&!+W(B}upa|_p((0T6Z2VxIcWL+Eaf+n$ zVlpyxejwsxEWX}ve#rLXCAC7_cMN+BI!rtemq)lH>b`BjKjrp)pej@bW=zk#Z*cBC zrbZz|yVr`BTSWSwyQuy;fXB3PM$qHsKuxNO??*K~U9EY=;JK|_j;wgW*xr3{Ce);(>{ zUzc6UVzPe1RFUGAxcS$z77^rRm42)8Wii0p#8s`TGr2hpM;3vYnIoR#Mo4iJ+)u|O zGAIYT)~7_l-rF@8lF}_-G_|9>WJ#~EA?SDn^E|YE%YZXuiGHfEI0}ABSeQ)6lOUmh zPN59JY`WEi04aa#sPVm$-1bEnLLDJhk7zmdA0Q@#aL~ebToXf^fLwWs&|jMI9twbs z1f_GnY6|DEdCv1sJG(#gB)}-? zXQ1jaVfq(@6j}>E&!|hl*j`;*Pklj6&t;_0zOG;p&9)Nr`h*n?1G>QhvU`!J_C@|y zyzxvL)JWJJA^Kd=H5I%%!{N-2J~jW3*)QfW@(EC9ThAiuXrrC#hOy&2-F*;JfBVn= z2I0niMzFaCMMSXFEF5u?B^eg&bw-YhtkH4qbGLD1v2ZXBO~nyBWVS!2p*Rg^|dU7N_-F=lX(x}hL-eEeqVU_ zVv5Or+>LW76y6gCn{578M6N;CsG*_hzEwSaC(KsQ?!4^U|C$q3 zw={<5o%DRqBYZak`M2x!eyQhfdl$-uR@BR{G6VtTPO_SSzDSo?wY57L=Cz`ZfPTQt zoQdKO1^Rn-9JNbkahu=b&rNNO`;Lp(+{LWfzTcGzg>N-I%p;>M)_^JGpdHNkM(Z+L zr81LCp?9HgEk9zwY@3$14tY!G+$%~JcV`t>1n1?Aub<6McpiFd6lz2NsML0cPOfhTiD3>` zPNQEeR(bXn4gOw-iA{u zuT~8)nK8fi`si7$;TNVRh)Cta@(^y9-Ye}Kaku+^^9zNc>7ut#pKVS^4~x2f+kEl!QY_r#f2+p?ZURawXt7nqYsvB$=ji z_L^&#RH+yg8lm)=alF&GRS9(;eaqZtymkIwPS;L-fK1;Zy2XpKCtEBXgTGIj48-D18BWc4YYtS|FBxOofalBAc|QK~c2k2l zsJ15DPp%W05#2~|KOAS;FJphgfpkJ?X>o#Bq*5aXQG3&0fg0uop;d=*S+=b zpUU>Xumfj)^JaG5kE1b9QQ9v9Zh3Wq=avF*HXIqjMY!?^k{XVl+(k=vHP6ZfG63w( z1?Byo7zhpc@a%wKZ|&-zY_{CHW-*cNA#WBCg7tC)^qFet25f3{S2GUQyY(>!wXo9x z06WYoQ8<~l3jKfAPUoBl81k*k8A0|rhwPG`Ou$aO^)x>NDlXZhT6}BGc}-SH)dF>K z$r-pv=s_QS7@W%DcHYF2S=!c0BV^C;*JGg??ermd^Esr_P?tSiYMb^O&)uyF&i=0f z@{R{fv--?9AIizn5cbSyb}?LWdgUJMocVI4p{=m-O#Dpq5PprOXWSVB5?67|$N(Ze9fgX9 zk`|qLz!C!s8s48z;^yCv{l7$8vUZO7%SxMqto99<9H}1pngex7Hmq!EATs6xfY-7n z+a|u-;jAZYHMoIW!li{5?>L4%gm!UEAD2Ixc(EuO+v_LTEwv&js`oL1RcdI$Jt1)XBt8#=Jyx76Ub=JKjFsle15ER7Fhg7quMt@ z8*gBk(06xJqJ4L&{Tz|cU38=t+VjR@gHDPP!zH5N*pTw zG?YxzB!s?o&LV+K@RZf8y39*Xq)kz(sksLO?xjMdBU+ei@@GxUKfY~tN5Lqrx+FL2 zUpuJV-`c(80TG+2a=S2wF51sd0@%5OF%VlV?bW*&`b6=%)O*NGsBwHQza&xB%rWjn zx5+kPD7f-~ zwyxk)l~-+daI|c2`Z-{uT9K-Lr-m4-DQ%4=Zvw)4FAnh6yegw;db6AfjtBK=>W$IV zSgA#EVK8UzIBS}FnXgz)ilxV{oWe8D1&7y_B7QDOZcpFQ^zUzUP@}q~EyWxLT=mom zx&F>|*)U6E^Jfx)w7-!{BT+{GVHh5U11H(d`I&uPHTmc1DhBmuaetYCbRUh|>+jT0 zN1v_ok-u5((F7$FJ?`28Z#$)vwbn2EHF;QjkH7yyd7(O86eq*+#^i^)#YwYqd0o4^UDL*YOqtyeOs%m!YU-rwTX|E$M$Y#I>}LnSSTV^~*?=e>KE1AASuZPE(56f?b>#@egh_v95sf%B>* zB~}|>TA9IRZ1eYTjZsWjY#(t`zy2l{RqQlk$a{71K5#KN6TD z9>E#nysFjfZ0;+~f2`A0fjjUK%sc9-(%$T=!2>~$uX}pq~YK@oQoQ1>WI>Epu)sEMVbR?&lT;zm=kMQnz{<)4Im#!+s zf<+h1nM)e~yohtASITT+-weh*)co$khh(v+KPF3j`g@L-l1aEP+kWovIhU-wnqJ+` zR-QnSm|pg0_G3}z^`?o-LIO$3CjzSXV0LD&!-0JPY@OSR-)wNA;Q5r6FFj%-HpLO%~F?*S?Ow1!n46_ezvitl=eMdGDjK5x2qS(|+xNJIosXR9v z7Cdshczs-R^jUO$?d;gwT%`JtW%vNtE?a*T{kndw?!dhMc=)h?EW!~58A%X7!4!jB zP&;40=A2_2I9Qf`>+G3II)3b+RfGJq7qKW;8eDdChGyTucGD?eWN$}Lhrd&=IaO(8 zv6WyBMp|lnH({h;`WCz0L-k|?*tO>YH5w!5^)p;=eEQi=Sw#CEn}_@k9Crg{h!5Mt z9*J2r5R|Vz^9&#ah*4EMP7uqtr9}1??{!&;mtUB7X&fQBzptpRwZy00zTAS~C5qQU zU49w0<)gyqJbYvORw=$)3)qVlw!Ph#$rTU>Z^@ggo*r?g-(#L zO8=$6gXTIf40|v{y+WzmKO@GtV8-qdu z1Z_$96j+Vgw$9{z0pUFcx=oSo-UyMNkN_vGp8@g>vTZ=y6Umm{t zPX=~PUB1n7uk)^zVo-@{z3$z50TJ;Xf8skhti1!7GoO;a7ItWcN8BJ@yOBiP(05_) zKbbDv+?$6)h1{sNX?@RGLI3=@$*ke4ciaj~3$^%rObZBU%ZlUKnIZ(Vl@|y&_QZvg$|sL=$DAGX^N})fB)euQiV6O}1qFlp800$`rS<%~5eK`A~;ke2gCopY8#>XOvFw&3l3)H7CpM!MX zhapInk8_TV{4#)HBj0B-CJeJfmW`VUwC%eq-BKc-P6tMI-~C|O*a1n)_wmTb_%}sT z6LF#^uz2%5k!QP)NeK8K*PwAr?G#Cva1~AZd0qFRU`&S}JEAFFOC$s3yYFmBiFQHM z@)GPt1R|g4WH7EtiUxbV$sNtfYG7ugzH52*KJW#p?+Dt2@?a9~eFv0B zwIeIf?B{4llC4D2U?Ld&-5$!(268&^*tKL*q+F52uHRELPGRZdtsM$9iFRmZ41qi>iXJ(UitG(cMfvS;y$FCF(#; zkh6=T0{CGY&^wN2TJTS^BIWWVc7tyYsz@N}fwV9wdA9%`SQBT+&%nR*^C1X(#R%in z_Qe|`fHiS~bi^r23G_zlON2HdU)T+30#WNK^xdX*LcZCOT*#788GqcP!NKm-K<5+O z+WUEoil_s^no~OgFF#2<0b$fEzF1GaB5R2vYXQ&PV*33U1quPFKGc1G{oQ%|m;CQ- z0~}3B?373bj6Yhtm|%CNp-mVMItg|LMC27n7K~qFx;J1=NR!>f-(m9?By9V<9{t*p zBy1pSaBsoTJN+U^Ty}%rI)OXD{KrcR{68 zJ2K^N^#5!~>|{s=zJKJ1wc&?J1E5*KT%X>01SBEqyUP(>!w;j!2=gqrOmqoSX zI(Mt}pNs25P6wYpR^@d_m^c7fdDEKoraan{qkf~jL_Oz(`cPuH8NV1>!97F%3-m(2 z6YYS$MXn{fA%7Ho)&4N2v81?AqJTAhp;wNHYvPV88N7Q}-T;;>Q4AQr{QYbRqysrj zUTj!4qWTUbOxTLR)Jv;Cf$aZYR8Y!QaqbjxsX@n8fxc0Frl7uEt4(eayIoKcRX)-C z9l;cPwzfT)-QZo|ls!2sQ(O~Z7FCpR0An&EY(DjaYOG2spEYhN@)((g86Pwuk&iM< zkf$$DGa*qf{k|FO$mDKkKADMbxrmk@E4{q&IxP9LX^;kD@+JGD{hT z-=C8A%|5&I{cmiCgd?mZJSzKKCn>ll$UcD!faWJCh%zMwBCgw&O}gvCh!X24i!vky z{BEKEt1lj(X_YOS@S4a=~#6eG@ zTsPq)+h7Wdg=XIJIYga_!D^_|`dZgiAQuHT6- zZN4D8*SrA-kD*R~j9b-0YL6!ETi4w*o6W$>VAuO{pKTj4SsiAZu%gB1Hd*VmioVyy zp)opl+*^p#nm03=n1`^0G`vv*`nq?ks#7yp%yV`%i@{i0Wt7|TBptSc4C*?H@y4h66n$&z*OIJfZSKsK)=O*uWxh$XCQS?prR-#$~(?X)VD@zYFsd#wjn{{Up`Jz+F|h9Z;wD zq}m`VV{(}Dp{CxF!>Lot% zU-Y%UU8UXzllE==5cfHs&BW8a%RBlpfPC*s%v>&m|TOA6J1 z+s#Vj3M=Z+kZ*%d{rC%E=ZV&-J-Y_I(KqkhbAjh}b1cjUtI)?Zo5-#?3S<2)+@CuA z&J$Sh75=2mL`06*eHBHH==Su5?Ypx^*7JYxzD%QL1exnx4-k9^L76wd3I3?PP4 zx@v-J&F{>C5`6MP@hl*E<&=+kHk_|En>*wL4!**P_?{gSeD_WCh5C>pnq$E^asFyH z_o{$QC@*67rM>!Xb<20`Q5snfblw5yx_`^l2XUi>j~((1E;F{+gAYR-1Je%iRDEzi z1y8P`p&kt;wl59(qUS0{FlsG@P4P;067|JrNdQZRA6o=pHpJaCm%CaD`jgB*z0{E ztCx>Cp4N56<<%ICuWA3G>xzA=uvnXviu!^b@@RbNk~z7miyir#YsbApd^3k|fo@nZ}dz$zmOUsn@Myi@gu@(+rE-gDG(No4)vCg7uM4du+_2 zGJnp(SMOji&7nidj#O%3^zVQb!B^-);`iXIO{SenY7l=8nFUz2PnvO<8rn@r;h1(Z z)=Ts1tt!l;Rr1*g5iBIP_CYM+{Ot;#r;!lw!6We@>@D z@COTzT2!d>FP?+h=6ZBMKRMv7-W+he$_5&-*QnMH%TSPlZEjB(wtFp>-3u*M-w;4P z2b@PolM2S00%J_}xoURfv!~3?*(F&Z78eA zuEi4+%K`~zw+!)GV`RRIlliV$!-+m_Y{MRPGKPW~d%I#>6M0U-&OsYPhom2s)V%wi zH{yf$f0P^$3ajKvb=;tma#&K%%Et;{GY(9ADcl|e;t>y3Ixuc&a#)jgjz#E>Z-3CO zYs~-^6)>(-q>d{&&S%Ku(FZ^aS@o#{N(v~$dED`5x?-Ld%ve4K zvd0GkbiQOUGfD?4FAwGvm-G557* z-sgzpGVjSrH>vhkfs?ml3zdKm9Z9EMx)I+g*&E}(u|LHcR6a($;@6)ksIkI$=+Hg@ zpR#@<4x?IXB?zLdDc*{dLCuEtcEHRUISp1~?JrIXq^gIXEB(53jR#Ng_dm4;zG-^E z^)I`Amc0$Ua6{xRioC!fdjwv*u!S!sWa7K2^6neyDBf$eQgj#%m65dKFD7&>6ZE;S zinvZzQh2CQ&UY5ZA2hGg&G1{0H{cv?)W#h=x9|@W*{{j$r^o#cZB1&G@LH36G4$q6 zig~HQwG^iER$LQz^{{4NZ~TCsO;{&=RP}D|+BL;pbs@h0yDK!~41Q0YJTkmi8)>{P zo>QFRDtp|TjAdWXAQDMmyGK=R4UJ=lX-x_p21lVL2{_$K;1I4Ckh!n$4L=cnN=yak zZeh9pyq0_U@046gmigXBsDIFs!nISpJp$$% z_bF=>=hdFWJXw7aJRaE=0|H?7Z@5i*uuwqxOC%T>L&c z>qRjw(oKpQ|#Jx5(J~So&+OyE!=eF9y1UW83`kf|hOZ7IzBaxvVO| zqxoF~)-!1Q&+D?t*`OtGN-Is$>6$Px$1S5WrP-%`QO#2Zq5e=I&(p*%*HiP$=_%xT z>)}Wn@kVo^@Q>`V!E2o@IdtY$ai=36I>17~3tRh}?pf}{ zFHKoi+zX7HzjEcU#j!WCs2}3QZy@kU8as(~uvm}y7l0aPYTiKnEMN*3+Zk9#=>#_h z1>~_IlImH${aPDbQ!u22XCsyU{S22awq|#z(;pn?3j-z>h5(cMB7I2PeI93VZ%J_2 zT(O(KzQw%pn;ynFSXemwJ3P#jDFuMz92!uhKC87#_oVSdKMQa9?oluzihoY}h@Vjh z^5d!>L83iG{3y#%pI7Mc!oyqsH8cCyryA=33zY0h>yBiI)5c~~8Lj;kIwaYX&HZVQ zU@YKLZ-qop_DXmrS&i793y3$?VSrAmhiGYdb&&<9_S>f()KA3lmcrbChXB3U>c-XZ zp!O|Sv!oCWa)T{jim?h#AkXZ%m@B(xL{J^r&MY!{p0x7|nEV>=iz?!WboP8T)DR0J zf0+Is<0v5Nf1<9**NEBp!-MKP*#Q$LgRu@&!qMgP)fhwIxoT{R%xfjG?Xl&N)lYMT z%8Uhm3e~Ah>1zWn5#&h2cKM}-I#RMS*2-G&?EyhBUr|spuZCpD^M=D9OPvyTm%B#-&3rZ0zI;Y@=d63^lfUDJ&nK z)*BXIF>8SIfc(5vaO@el#E(g~xyS-n3-=b|C2pZeadxjigwFO?LaHl0AgF$I{66qH zh7kEfnrOQEd`Rj0&z%?RCB;1`e9gd2)Lmk{zvlHr%w`P)&qjd1pS&Y=?QKN3;30GT zhMZH>59tquUKFQx^Mx?^q-EnhGi3e%FM_w2pmtMsz(exjCkVdiHHtcnp<>E~fXKvU znGK^W;h7TSZ@{Hn_gK;`U&ELXkGNvvH|N(tu$upF7kJ368w|wwH1BVDLBIq8DUe4z zh>ZKw#W1?SpFS@^UiE3u?J@Mw&w}*m9tfZJVwYp9h5GNPKnIv;voK?d^!@Xn4s|k2 zRYtuxu?`J-{y}w*vS!p{;GqP3&9F8di_d8J77?e_{Up884IZMz*93VX|2L$7fR|`M z7%-8j7sp<2%RfU~XKhCQM2tsYhfk5|?MAxIU=*QGQnRkljQgq0?4_jZr-%mD&tS2< z5@!1xTB~gmHFW#=96Do{(f3R~zhwBp+zPY(r(gSs;~q9BOQc7q0)`iUK$uN`R5ygpqOKKD{5$AT+4Xg9R|L=Sh+IF8&DxRdT=&9C!O^ zBOX&}a%0qQfnM+nzI!fdcyUsUa$;PcCr!V9j$CHL;>CW8nF|ERRrd}{Nqt6Lt66er z5R4ZLU?P`3&Y0!Xif1}uLF^q+%X!BAK%NM`I0wyNq^r zJm1@;Sn&$(lut`>cZUK63Y1dZ-Q6`f6sN^4xVyU+DHhyGaQC1Al3)5g??3N3Ff4bU zJI}Qlmh8^X{^B4k^NI>Ah_kI43M~8~Sy#LFZ&=#sSu+Z7@xDdZm#lw-EoaPYy zj+`14HUNdl+2*z%hD^Ob&%ZI6!OMdGz*~tJ(fav;t|v*G>x%9|yq^3iUJuDrkNmej z!SgQ*MHw%Ih5V%j8P`j@h!Yfq>oYQvt7aa^ z#q`L|%vgoTpI<=5&q>A+om6Rv#5d#~xamda!-6cw)!W&0cDe z@6oa0t3S3akejY2m`p%dtYOc8m-YNc%f4RA?9Vg6d|SMC2nDL5T@2r%ig634t<(#O zg_R223dOO7Dki4J)Yd3Hbx2Z8?@$ky-#2*Xy`g6@QLBr6%j)dGxiIJYdA!{IpW$JW zq-t(Lb#j=?wj#%~%i}!vfpSjQTGLVRTI$TKx#2zwYeTZC##gQ-Y#coF`;XWHwo6P3 z7mg0xU(CXYj?0tQxO|P@!0lZGK|STcfb}aTimuekaZOP96?REOtBtzq-=i7Fg@VS) zSGeW_?3}G;-BMQhg;_2?J?zjue-I`wYv$3eFf#2!nCt#@w~rf~1vY%wKJ>Zxyj(s% z*u2Vq+JgNge3l=38-1*6L1M_!hj9x8prRsNX!jaZlSz_0aCg;r!{?7jz30Eh*_vu; z{xFeH+=O7`C&wQ_%{LKzOA9Nhf>7A^e7wPC7frr9+s^i>`!qdwmL0 zmh$Vr;2_-NZeFWj%4+aa2T!!6S2&FRHE90isy?Zdu2?_oQ2YeHBPpsPrL9;NwDvyf z_e&XU8@tkA9UUJV<*d=kNY74BOl>fW^jo$bBeq07dP|no&BM;>xICkNXsw7*%&y$= zSE?-Jx;c&8HM~@uRoMP-zPciJikSr)HOE=jz0j@;rEvI%bbhu5mZ0t(7Hyu^CzCIV zW8JmjB7XLXF}+5c^xfbmZ{qo1i7A$UwL5LBH8KRDTOOB((tD~VMDFsF@6p%uSulT_ zF_DUl;*E+VvVZt1pvK6kesUlC)%DUbIaW4lG02k>Wd|)mAA6Fw$h^9(8~K|2eB}Lg z;c?O}Wrgp-KW7x9IIxcR`)_=nf{6z;JbckDSb>VCQ#gi6Gr_@8Twws;;2NJ!VByB% zvfh)}!f~)s6Vc=P_USe*rvTvXT*M_#`A-fFy&{D+`}I?i*}*ecy#3o7obzO98W_{< zayIWit`cD$c%vnJD*W>u?w+^)`LZA_eM%F7dwkBuFoRhpmo9 zLD!|Bo&##}!Cu=S&YUy!DSv#>+nG?tJDvH8@RhRpW&O#C0QyHl!)XByJ5Cnw(O=^{ zt-lTRGJp|c@}Nn1;N)uAry#O{FrgGpLc-ps!q2e1M7r-}At|$0T*;k{*C$^G^RFzp zHMLUqSc^6+JcY)h76vKfizOsoy26Ca2M2bDFovw}U;`3NO7uTCKiqO+d% zPF*!z5R0%yNyt{AfZcAwtUjuIzLJB=h{;Kdkm* zD-uCG3ua40B-BfD0#0RG2PHK$WwhlH+1Lw^bwTXz&Im+FKBX{iFtyZB6E?9xR@M`C zJEccaTFav(%1Bm~RwcBlhC2n2cFRvh0Wqo)J(C`IR4IM;|fo1$++C_aGes=&RM( zPUXLQqI531{N7ciTT>&wI)+cf4)dSS-?KWPg|!$u)=~HjKn$E;8(bmeM3L9PCeff4&#NBy?%(6jft+HE2DK?=%na;Fob zOyh{s3=0~q8U3lSZtX~m&M%!qvVY$Gpxz%l0FI2F-Zr(U34Q_+K&^iQ(A)S@O(g>S zbc=)8zwNbIk$2GkW}ha>eA1Z{a>Mc?+k0^uF)2%R3&IpG|Mgv5cW9Hk!Vq4Z;onxB z@aW1pl+66C<}jk%>syz(6JOOQ57w}zT)=v_i4K8&$1FS7J+HrI5w%G1Uo8rlnutoCtxq8c?3ll%-)+VAtakFxQ#^cYbT?Kz-Yy=+We@R3`HQ{P? z{?gXVIs!+;ZKK=zwO4~A{mycfMcZRz*jvxt|BYik>OlCz$gr~}nZYlVuMo``UpvvW z(iF4dy73CWLH#|Y(*V?M;rI)7MNNe<|F+p#3 ztH@~9ZKS1tz^}X}GKQpf}?(Vbga#boo^#86G>s7zg*xtNaC8F!uy{J?5 zy8P}066eCO%#I%x(bVq$3Q1I_j12pM#(Tdz$td4KRN2*qyYKz_ht^o=#i^d)ly3m_ znW4b5@_=TsOOK3qGGI4g*garP2ha7eMXbiqNiQPmv1c!RS{Lx}TR>AAoq9hs8&gR( zfZ!tx!g??^N>ZqfUTuP~>&A2}`T#GZMLu_EX?R~6ax<*N*R@4eqN%|017|thPa_3n z_h2`G+Zr5?CvK-MgQfgcz_F&GDqo45G)O$XUleyd%}kD(s|A+*6tHvW_K{U|AgiqU zK0uha=l6SuvhMwb6NUL9<_;4bea0}W&CN0>5eDwL7`NnAnn>rEkA-_z$Oa9 zqs1b!2Y>@xzxoKIF!olDVO6~toUz+&Qf`aAOl)5K&XB606jCb&)Q$}qEZ04~S_jgl z_NLMiqq^LelaPD85k!ub>AeMq@i!Yz0ozH+Cu_cDa_(&Q)Ll69*MQ`)I8k)VUK`Aa zTr<=x+@9Sl(YYFFqlTw8O3~mWkl)}Dn>(CV{SKHFkb5*6Ff#hc?<@Wd^_gOXX1tD+ z=k`}W%}29pzd__ylF~nNZU@v)Nm#@`-vs1c`IpnU34NoyHDNGRR48t{cX2r-svsxe z##kaWOCnw|Ztg^ZKTIS)SJ|bZJlZW;aKoXFiryZF7{c99slJw-KR+3?cLT(U;;wh~ z_S_6CCL2vk20XL{Nw#aS35l-vskpcy2m&S?nJWd>`)l0Mz75@A zw!W%GZN2rf(6IO7(fcts0w?Jm!Ax`yBmJ@mm8f`;9AEdoS0yRHjQ3il(x}6lxe!v? zi&<=w=OTPV0kBvAob;GES)*Mm({d~d0|-}5abog^gtKE5B8BXI?cc3!;&{TDX- z_$*)+ZZbZ7SMvrU7j&K*sKWk?+TYX~-&0y1rb64%2^hFQJn`%E4lHq`Tci3RVD$%S z$|VEXsAU>d&m}eJRB)WR%MPc$jSTc7Hr)`KdzwZ3A1Mde?d9_}-q^ENZYWPuDZD5s zN$=Urw2MUs?!|dNA?^@(Fyt3tJ(qFIlIDs3EURY7Qaz&yzo>o_;OJk<$OYc#IrCKF%2$Cb%OaL0tIwki&FkD;q9yLtwH#_Z%S z+A=*w$5`PoPSVJ@t92b#Tz*;X`f-GL&Y1RV!QJNImkB2W@3G$(!<%E*ueogt<*e1_ zq^l->49?=RHed)>n0aXQYBb>4v2xdb-wRX`)LTw_2X9Gg+ZY{WqP54`8Q1yL@cRCT zk_C$b!rk$?;%5j<4fN=m-;{AzQpEcL#(i_R6t+}SyCOUxNc~~S$fb6Ue^vuHeO3`FeirewW#80LX;H9=W8i+b7>Q@LqV6KtP;FCeP|3 zmMSzsa3<>W!xy~ye7Dx9cO_h*;tb9J<*}%?Q1JpU$K@SE-wD|xDDLzuW@XfV*KBtH z_<2v_Jirye?WJNrWqD$ZvetBWLqwC#Z}GPhLre+V^jOXWP(xGSld0U0<~^ZtaJgPW zpTqZr?O!fJHSmlB1`kaZ+Dr}no&w=mXj$X}7juE8)1Xxj@=##kcCXgiA-Z4=+0q@a zEraEf{n{8hd8}w2Xe`Ro+3?(#V4jA_Qf5m0BsS#kC=&)m^>*=QsR{YDd*ac`cHPi> z`M|Y`0_;%=)*={!gGlQU`yG@V0Yn7CR9zffhcDdqSZ|@q+^~1{fnWkjmEmy9u!0hj z+|;m$5Eqd}BX-lVkDyPHC(vU{{qCGofgR{^(U$w0#Q-CK?vL~?6d>R;hlc3ZF*t8u zZLp!DBK+8JmG{9qE9jf=oIl27spLDG0w>wnu2o7bZYCShdsW2Y9djbt{!H+ zZlIW3GTM&jC8)Db8XSVx6t=8yD3}aw-!x%apT0~kjqFVirl3ia=RR|?% zqP1|Zi-grIW^=_SBoE^6>7Enknv(Ar+L$ej39k<_=$_t;KEFvP5)2jphz+P@{S@B4 z#0w8-YX`BPQ&Nh6!;e7UkuR3$(+qhu4eK5c0$n+!eGOrwHk1?A>@*35^LPfd+>;~g zU&)Z>))NN%CXh=IawA8xBni4P>1KFNh1Tr`6IBnfG;rOo(F~)*xC(&AjTG;P_kZ!}M6hvto*F^@Wun#@M**!{pcBTF{xgQrw8^4o%q(9zg^ zc40q02sATqsDa&p*xBCRkB1;G)ojY2#cwDC9vf7O=%l-WK>AF+KlnZA$j!}u6r+(7 zr}FIc6G;aRU#8r5KP+9~L7iEE@y@)H+$#?;dIDCm-8D5pZe$Vrks6U0?{Qb*Y?Xa^ z;-`@fkB(2EOhE@0O<9iaihDT49fRaO*A6)XHe9#S1k~`QeGeiU<@Drkx@lYAZAjov zP_&Ke@3s{s2d(>@>}r>^0H$jVq>ozDt( zgtDOKK<={EE%wOr?4XVyUe65E1`|$?=1qg%mLt>9P14tOXvDxFR&Wm(;5J%v>hFl# z?1&Djn<9@SX4>PceyNyG6pdL4AXLNPgqW25LTMhlq{id3l22X+N*h1pNIY8LcEN$c zWo^qpj}c|1C6-ZM+^}2EIyEOyOGNhH!BSlgq5=n{;K5MU7QBMVNYxh1f*BHbS!(z9 zFye~?-QU~tpLOjjGP3G2JW$QaCytf_>Qd(|DbA0rG6NL9fndH0DX`*al(S9iGv<9^ zdZ4+B_gb~7vr%S>H`n8_*ASo0v=}s^QAJKTT6^Slc3$k}P;gC*Q-$GX*%J2R@sG=+ zo@M&7C9u%3mLN_pV%oCkKZg%%j4M23713=)Q5f1syB@$IY=iUo_lTvut__K3|KD9K zAuJ0tifLzNbVe2QuI9Iy6=WSUu9pw|HQ5UtM5me-U5bat_QNO$PBna3vZSM(Up9BI zJL6)T#Gjt9^I8pP^6M_JbI3S22xPiVs+in!*3~@m+g0VcDf8Bj1NFUIs z!d&mMdvrmGhR<+W9Hrv$XY}YbiaaSpF|+MVk{@ne3sBFwN+JLU=1uerB{>wL0ppF7 zppnhP1nP>6u@)WI`RRqQTu()c1-Hu6q@vMI)+hf@{wiMZwya)NRqKR18e$e*bMSZk z=ka*;I?5A;6|pgLiktMJ89j4{Gc$TOCa3~8cEOIXiTVglr1ve<=XhoAY*3S`rE|8+ z;V`mP)-ktk^l4hE{8$;fSzomP^sEQgxfYxcbEz~ke%tG7zGJD+*#0?pSfZY8zYk|V zh)=n8r4K0|r<>HeX))M?+h^|ldCK&L-`GdciSIsTk38V+1b5n>h|RR7?T*lG_EP>(ib3@)L(*`6?mTLud1&0wXjh zb~Y3p+LvBB^Evs#)lo2gm7n$j@$|2KmzPe{Zr>?>nwy*RxUo1vUVUJv;CmQANyqQ1 zJh5=_2f%|-;K6V?z9ywP%z(P-^Z;dS>^1f;Ra{JOtUVO-R1M|2FFfsL` z)o)M7=d?1?*-XsjhZ!H%mTRRdGEtA!rBBw-VCvy3@01~jMIQQ=6yt=Zw-NN~=8uqpoeBWpT5=y9Ne+HK%Klxp^X_ zuifYuEq@{R^)ygCNO}-$*Y^HaT=)3ILvj83C=-RbaBi-7$ABp!@$HMmdR!PK4s6w4 zfLNc8GJ+_DsIx1R@9}*g%&)=9^yKhuWJ0nCi1ki2XD&yB`a|scuS>ZE_7Ty)Q1{ez zuB)#z7yVgG4Nc@X_jTSu?cZ*!xiv+tKG^?KpRbspi+wxSwou%>dNz1906N$;Qy_4{85eytV4?Nkc zPZ@Iz)|)WLOEpAoOBv%zHAHL68GD-wL~m1#aB0s#xl*I$hdz4UsV3;a3T+ZZ{AU)b zHw|0I{AMf?ns4PPB+Ji!>(S0%%Ma4d-^y2XxJ)jzRok>-4GnxHC1K?t4%uv=+WEFo zo$Bjbb>aO+%+|%6?-6z>7Z<`kR`))o= zm2|}&f6suJN-#Npb?tY`M|*0DpLNJORET#y8(Cv{Rr~twoe~Fj{8s4hpVuq zgZuIN)wg_^iTUiFpk?3jNb7k))il7U4mtY3z295ngK1@6X+vi<`Akl5`K(Z2m^K=h%wtUOS+j>th>Ye)N`g zZ)e5%akmx5G->Raxv#!mNtDK+xbBFq7>}?Qm^3O#e&DFjTyZERknI`*X{c4i9SML`er@+LyYNd`HORy2vARQu$A7Vk z$^~*`N%b9a^Ao=_e;TGb{2Sa*`DUoUGebUyo;G`D=7yFx*eyn}LBa>Ma6nH1?a(~o z)|HXEu#5I|Zw5EPBc$=S;;e)Zb|I@?2JTD&ZCfi37P7*y+j!m-R?+S{TZ??jl;m%S!*h2o41MHMAFGDj^XQYK7R(iu^}D$F3|Ut zA2mxvzk`z-%UNOCzK&K4LLj3qB-(tz^{fJ%YIt;-yg3Uuadaf{liFNC(|Z9V*l0Kn z0~?6?e@ni|x}NGBP5wY}5{AERVF` zBKs<2lER>}2hnOyRn-~dSXlB0sV>P*9j=`-Hu(lilfsBa2iR`U9EfidHcw! zR%~!!Jtx87A+_lz)^kZz(Lv-#+*0%^9aeYbi2vcST90;_lTy z@Z{?aw_I7g$>v(rv9i=QAA0xkY(iG1Z@HR!OFO;5fpPe|aBKBl(<<9rCFY2j;+xJN z&W}ndnZz3k%)n{eZ_t-VB_B~?=>%QlB?hCqRb^AsQ${P4>c@Y`9c<*zSzb_(tdnxx z+^ye!(N4BYRO9-C&*T3kbKJTIrLxXJK3S0YYxh13y&#KXLT+qBM9d^kfJo))&qW6P zN==BmL!(1yq{n(-m!+R!WqhNovZU`$xc~yKNu|ZCx6DNuQucPw*1(V;t6p)4L*?VR z;0Ms{Z3;_*w%8QfocQ8u1!}kI;;L`|`-X;uZVD~bE7=X-p0iW+!~|+=7POr4U)ofK z=O|}^AhuSI7a_IEMudL1CT;5+o)f9d!WYgVe#AScPF+}Hq?yMKNp_17`$q2tzc9BFVt>c^qOFIGawzcSuii|^wd8S^_MOg|Zm8{n{+?E8 zSv3(W?8osQx@oa}bAo8ac;dzfK6`z_xIc-KTz~lX)~DM!nKjl&fLxrISs1$0zs?r$ zqUAo@2VM@id1kJI-<&Z)h3zZt0$SEX7yK)R)iGQXe&sIcnm!KcbFybb+AaEIp#z%- zm#VGZXkZ6tU%57G{FhXt7g&oN1vPWOG;EveTz)?k@L9Kk>E$CX2A8 zSmV%9^QH5%RB$mTG}rUmN>-DXZMAJ2X=L>T>v9irrw6&_%y@Er`6jC&oP0U?N(FRy z%!;n6GlF-yAXLxxoi%c0i?#Q_wret2<)D0=p6X5@r=c5fG1lI0;90{?-Qg5+`Pr*m zL=@F64PWT9S6p`UJTAbmRhnPYW~4@Zjt=p)Tzu}x`_)#FyNkw$#&2)T>6B>S&tcUV#cq zh|~cGD}11*(;Ej~VcW#W+`Fzyo${yXR7QG_P6~k&|HkN5I!%6*)D|A!rY1qr9N_@S ztnYC1_$a}dXQ%T=qw5g@mlcv){>j>D0xvSx(i2>(m8T)H^@BQ^{~FPe zlVgZKqwhtAW|i!}SCN^7iN>^j^e6SQ32NjOEeb-RQJ_H>S2A!2jJ*5QaL}u^Ozy#? zt5XGbigl=_0=5BXFswiaP3cblx6dFh-t%Lf|J;B2bY&bQpC|2o?gxOnK<|mp(fmXA zQ)ahWS4iCAfAo#KRQX^~Idd^=Pbct(ji0%{URjJuNjzp)x#{>YzHkYDuh6+_t2zs-2EwYn(37f0NUt zpIIzrr#!f%=xRmh4j_?TpPI4ND+lnt`|q(k&FM-0vjcNxBklX9WF-sk&U4ez3;!q` zz$c6$>zH=;0NfWZw8f7*(Yn2 z3BSWsotxpu9R`A;I+F)%9Hmb-ZKM1U26LYC*&S2+NMp0*J!#RTib?wh{1}3f@g{kEms}z zcJrYV8f%r_MX;aUUt!jaF$9Nfg!to6{4&@QS0y6&)MabHsHhnpnG> z_95C6bAtU&?oPfb2(!;$H!$(FT9~yzQwh`KHS|r0@E9x0N)rq6O3^ijNk+zt*ezx6Y3XU7kCE#lhUb0T+m#tB3I~l@cT#4? zYyo^nFF5t^yl*gd_fcE1@_Hl|d%vC|*kpc@x2f(WUt5_{+?;4hRb06)6;X3TnSJmB z`uXx4NhkBhZ#>}K+$$CL{omjp4h?li+yq%a8`^mA3vc7#$>J|3AD{POuLLetN{u<4 zMyumC7y`l|Si!>QK|lU}Krf`Hg4XBfbR2mzmd~RKVPmLDYvX;f8&L>^{!ZT#lT zZk(oUr3dA;aP7+4s%6HR_vGuDjsMqK-Rq@FJ4sY4`ECC~zvEWl0Ng;;F6YLcyXzyQ zg$q4#vn;C#A$b{WGWQKfR+Il6J^Cfhai4~&vG9=Be`F%3us;-P6{s})Qd#I(iNRWx z)pT;2j8EA;-k-U#v?%EmiKt13`tRmqgvs_@)dJ`eG8aEn4sZ0N{>oCt%A=tkGO_Xpi5?tBAe zZJ)(^9&e8~L=q})?I;&^s!W8?xh-bYg_UTcZNEj6g`)ishu-oIouz2c`saF&gV*q0*g zh5Y^J=})z&0?8|^G7ioPXOQqPQ4wQ;&vBumF&8m66m)wiU1`2dwc&!~hQ^6+d~*># zO{?zP=N)6SZXoG(AF7s`oqP7-c@R}vjry}9Q;F7E)x;a$yj`1^kR!F&8W9K8`;*q~ zq^nT-qXO;tz7ws(N*-}0i(!Mv6~8npaRJ`C4<e zAqpwDQ}9`j;wO~+D*}$i{B=VSB6P$$pd2AcGY&s3GZCHVE4|mykPAxTca*Ph zN6>1|i`CxI{9Gy!_$WeCHfdN;Bg_Hlua5J7XKOQCE z7SFTr!m)MgBX@FY98c*Jx&X8L`VzTsDPI6O5PB``>ph5;reoV9gTs~`-_zl{A}mF| z7G{;oOd)>ToZ6i=$rKT;++x8~n7&Wrhd+i+zQ4j`@{}sZVN|U>A*!OybxLuQaJily z+uW*8(+lsWG^Xd|wWF+TXL6gxsHakh8!Zw6R;H#}G4M@q%L0So=X}%SrwhR6z`Oia zhF(CyiZ&_&&u@2c4iGHb92+VMss@8I7<_%-8O4g>)}tNL1XhZGS2Hnu;imLv#2CJJ zpn&Ps$Co2zeYJNrr>FY3yTlP=Cnm=}-+dA7Vh#Gx(Brqq?Ro0}eL%VWMLXPr!nQX2 zuN`WZVz2~|#1Ks%*ma+iUsBa$@0hvwvs|(9)Eerz>La=8VD-53IsF;O?!qWxJSQNp zg&%9>7NV(cSX;9KS?HVMH~qpT}-po;E;7D8=p6tdmZ z-HN9dz^6q(Zr2uyr+{H~VO;^j_`0-VD?riwHDOtNbG+HUbv#94HMwVxFAYF*Qufi} zFMA$dK)DT76#Waggf{$-4(KyXD-%qW{L+_iot~6H z8rTi1N}d-AKJRV9>$_2|O-8l5x#Z<~+{i=TcY7lsc2>4n?r5%r^7tjr)IcVsn>p?izVT>}p|K%Q4#A+JjY(-{Lr;3MF&(wO|9}3D6%rPZ<;XOR6is$#e zSRKBt_~Eu>)ux-U&QRtlWA@+l8`psGroJ}7%lwW{^e6c-wbA{p z6JbI+GE|n2NB5N9RSZ0+Fh=~h>RltG&I+3O@2H@BiZ_P^8L0D@0S(@*C41MIhkrRT zrP+Qqkt4%kkdQS@HsL#z5q-dNn=PH^y7@jBqs^9G z*pqChy6t3*na=aZe4kJHtSU8o^+ntI>-0Rl&78DZP9`X6R}@p9UO%}*P~B!g(;aZv zkjBQnB;1z^-}<*NLi?%sQN2*Q@FUGkkXgu&o%qj3O%XOd0tYA0`&?g2D)gM?f@WJa zV*d*5u~LTgsFiRtX`GVWC^z0KJLZHI+@yIH5uQ1FoL*aC36hv$jxb8`h1i|WjX@{J+{}5JHLZsmgx+xb^&59RH2_*I`Nba_!gHLtd|!&$wO98E_Q2RN>*sy-wg?Yl79v-%>vkcuJVQc>pX)57^l{B+mp=k zE6kDnd8Fj>+4&D)000whbM!xX7VryvwameP5Ie1?xS-YArS+1>x)YgZ91z6u1DDzQb}AHhGirT5sOAtRMA5g@_F?<5!9)EXq z8ZFIYT&P~7$uzAJps*mEa1{XxuSaFHMpL#0SyI}y@q3wM&%Yrr8`2#Rm22l1{hr5a z`UEY+1B&`qwEvI}@u&1?CQpMb<9idtfU92&Yt~@)E4(>NM_pOlnU9OCL(jr8 zE>-a%iB7Twhl{Fb-(Xa1z33VKYW1zMfofL0f_@G9RkKQ(Ye9#XcX+U&h}5UqjXlw7+D;6X zYwq-pk{7?k;6Hmr?!GB_${*)FMN!!!y^j0*#R{Ho+MmtB*C+`%kgloTRbyAn`9fgD z*TuC!ku|UdU!cUY)-mrF`-PaHJX*@gS?%nn6Le^2h;Jec^PL1<#ZCcx`hfnI&K#T-;qjx8$j(Tk$VPu4lKZV`-Blc#dtABgCv4$-xXd$p^)1!ayOwgm4?x92 z`KZ|8C5*cZx}#EUZ9Pc|?PCBZtPC<`>8;a*+%#}G+K4%Y$HqA*t4I8NL%QC-mC7&8 z>;pEatj_yy{1t00S*Hvmu8vogY5l0l_=J}05W|2?qe_rx1tbUr(y5<&q{NEzor&f6 z{?41ACZBpwiXcQ&&B7+z;8Y8T5zgG%YC&Q_MSMx{)k*7lnO1jw8|;IgWiqi zu%~vn$ZZU>w5r%!Yl5S~19_vtm^WJ8POxRSY8>KMOKMp&{r9nvXvgR54<&Q#eaIl<;WFYz?7DsS?Wrs0qrPeF+mBYo*&Htu)4zP29 zV2sYP_m4C{U#Q3L;t&2Rvw_x(9|%L6^EEc2?Y}sxndQ|UReRSR}%lQ`>ZEHn~YAPZ9Myu?N#e^4YRz1K{1PwU(lnttK&?uL>~I}oiE%! z=WxxJn|nXYThMh6{E$Tk)2Y&eymurxe%wy%BM;)Wrd;Vk(8Pl z4%m!nX(5^Uu4Myj5*k&cP2-V|xvG82< zmt=)f%|t{6*UcKgMtloLTeYOXCl#B)mggV8ISlK^5M!%}_L_|%>OQb% z!H#^s$Pcd}!erTCl;f7cbR*2~9Z!nIv|7WbSL|K>nsXfHuRH#v22UN*xlSE!-gM+c zzkAA@CMCw^eR=&hOL&U2=L2+(ryZx??UgC*0d3aflhHn8@UrFkl9T4r^2O=yBj+<& zZ_LI!=T;xPj`siz52D!d*9-oCp=xmNW=sIa^QA~1P!eE=c=JSdJ*;Lr5+ItQZwkO* zRUqe;Sh_<8fgpfpOg{jCh3Fq(TxAa=5icJ7r^vu#;)#sX!sz+srY<{(|LhpKoV^nG zs#`TaTfAKyRWxUw(Q<+J&Qd~5{v5d+5+Z_tFv1vdciI-!ZsB z^qzYP`6mL2VtZ75B9lP88ooKGw%6PS8Ih0tBG@Du_NG1+T@673;Q!6hj%;J;+X66r zI_U@WXp6mZ_w4Z)7uZu{VM zIs}a}>YP;4JOTA$bY{~2KtbFW{IfgoHueE&{7>;Zq;b?!jQj8^@n-Q5V(cM;P#HNd zFzsB#Uj9v8^zjvvX1Mh;0ApuSV7Lc0F0)TaAH|q4l(PeL+YdxJ04QgjQ?${n0)wc< zr~aM>(yRmfew3o(p$!_RAw05A`;eHsG;!241cDv8q}$Yy)_{K!_y^eMmLo;}N*=NG za03wjUx*CeLXljG2;e{ewuNnv9w)@J#ZkE{e->CW{-N4>FcihyK$U}43WY1 zaR>5;!$E^M>eQY8wPkL^O@QGu*}-Kg^FMpT#U8j{Jl25VxGv5DGrj(au_@Ik_Ke)z_=M`8asH1m*I2o!sjXt4D5C>yEUDKtldG{MWc=9z3~YZ>X|i_=90 z0LD~6*R|z~szn^+Nr8&Rf0i8;An{M`waCP}T*8gc|0zuLDgKL44Q9>IKi9-bu$dvr+z^nwBbNp;%Cw0gHCdp1H}YD zNId)({q_yVBC>cO=lkAG;j&@6lUIgfz0ji9Zm%&UY9-PhbaM<}1ce`0H5dm(a1fnw z)82wX&^|Nr=PMc!!;<1e|5dh!5sV`RBarF#xB%n$O+5wS* zM=W05Ik|s9d)bs!@h=$#C{n_t2hrlFwHPl$U3@o2k;&S!e>v}o>VJbgoryNeTr&kk ziP54%bp9)v=n_nxZ=*>DFz&!<=0ckJe;J@hGr+w53q-lbq)WXyHwuLP~CL>a&kbS1Q&M!TE1-)PpwxGnq569i(Vhs=BnM1(~|A8vt7+ zg8d(i=30LZX(o7^{zuCLYzryr*?qKrBI}KsT{LH{ymZ&bVSi|^4BJOmcdrdHjgoB5 z$TW`(-XLqhNKEiw9@$82u8R$jxt~T3ACyXru#7o_AY=()BxpwTL|+dAgYYrmYwm+2 zB6R8ZAGxPCxf78!esEFtWes`CF_I9q#+JSdIlm96cp|6FP0>U)JC&XW}ctUkp;N@WrSKFUW#$ox+$ z*nzSV*K^qX@WR)4C+9_@XOKN?#2C8?p0h7(_wwT*L%;X2Q^37nRtvrgj_0uV@dedp zjx$)u4$BY+DeECTLjo=c^4PNYV-CKh%Fb;%mD+X{40L~^94sF&3~zS=3q5I<;uw|= zU`mT_cDj3M+}j{!Swv^7le!VAT7SHcIjFixk;kC0YNAQsbHJw^zqEbFeCx&=X6#rx zh>j)0R;T;YYayC_JXY$XIOxJ=Szh#JXWospW-v7Ta;nOHC+|$a(F$SYnbi`vv7J{$ z{*Otr$AcNFb#a6w6XBoZWghUt`^5WiMnD((qMo+| z9I2=iIHYXa?EAjW$^lZ zvPIYX0coa}Ee8#}9@>#0Y%kJkn4Ae^LVG;aB&#fJ3VnAOuei(g9x zc?xNfYwEw~FRoizw<42bgy$r5FP?SW@4YzSr{@+ZRn)WhK>X@>6K>Fopqf*AaW)o! zb31|}r6KT`t?ZzC%9IkFINa4+%yQUb`{$~v-d0w(m=ip! zn?G>v78FFh^zB%bP$7K)I&3Gp`p)g8J)=cPX1{A6#D6PTmB-I;@hcIAi8nO|lU9?J_cWhvdx8x`y-6tN3OpK4UO z+zNbROeA&qB_uW^utyk~AN6mT)22p>FHhg+K2uM5!1rAKC5a+(yE9K5?SEF*OOQ-b zRJ!*>LNV}258|NVuxk*eL9kItPd89XZNzujFk0aJNf~Kp%!@u`xZDtdM`l_D(E^U` zP-d@5ugh%lWnLG?O8$e8-l95WwG09yZ!r9~(@JS9gC2`JLu5`8VU^x_icPs z{FJdNE=^(x!FlUjzdt-${6rF7YlG0Dn(NT`kv>D2S7PrmAKx!hBO#uH9#i`pkki)Y z`&SH=6Lzn`4x10c24`682_gIc1Fq7G6Cv^O=Si@R(?x8Wx(7o-ofn%U!Xl1j|PfUK!yA3IiCXuy=E|AnzECXG}ZW4eUm<8m9deuALrP+ z`zb8v;!Q3h#3Kmcd!e(1?6r|p?4_(h&BYtilUDoJ_*L5v51>0e2rO412d~eTKj&~# z2;g~~yhYE_>nj%8*W0t-hU{XhJ1Y`twQwtt7#VEf-j++;^YrB#<=U2E>9px_=)pfw zuKU}IH-cVL{C;Q;ypxxJ=0-cmz@}-vR}HiWnztAV>kGN*IFmMth68Dh6u~^s8c%3ZEYFyYmN+ ziBtP)%pDl>nat}r=Da>4Fj^$w;*JX>uWx9yI@Bb)i5$6rlQrnd)iJ=HcKL(jLBC@~ z-$L|e_aKRn_thI;wj{TKtkw|^ctGlqq~0x!Rwl|RjxV^gVr$I{I^7rThTDH)L*4^` zi;nDp47tI5ox?Tew;wmjJ3tB5H;4a8fYyWSu75Lv`Lw4wX{n)lfcib3i+M)vo_)bU z$#MIk5!Qs1(%XP{$V>2o7`#9`?FVw(EUm#IGSOpqPnZqvk3W3xMR*{hC^RGT0yjov zauxhy0kz%x*mgI*tKRr4)H4wH`9^tNd+LquW~B^3)pQBY_ zgimk=4HqT#I&iAT z8U;84A6{sFD&-S@%m26-c#0r~<)uVeoOeFoCMdNVT@5o8nS^$t$Kp$fhk zuaB{lRCnLEZi6Wu&y;C`{(C2h`wtzYtB{!=29uQ8+c3Rg%iEiM_XtolyS~%|5Ku-j zDkp>Dl1@p&8JIbTR%1JEtzAe!^GHAkd$O49$zIUS8Hie_?Ok5bYau=gGiyG94iS8R zm72VIe1`7^xuj5B-|2SzhyV!wFuzUw>e^B7!A7E-e$>MP+EfCoTJrK90raY)|DEJ_ z@~*o60L&}Phx&iF9f9}2694Hro-ep~P23lYp56`342gHpGG3QCV&`c$=A|4?&~GcB zyt5f};5xn?lB$LkH-6v4hQHvR2l+0{%WjN6yXSn7fnL)NPPo4DafJRDlfWFT>G7Od z_QdxEe`r$NvM1=R`Gf8sYWLNFcJVY#xqxshABM+q=S?yohBO`WvW4UBOF96zQ9+0g zd&TccZuQO^{@=EVL*J+}f%e7G8U z5^e3xnD77Fi$p<9V9`ocn!WN{sv16CY%$U+SaNho4#aI*!dI^f>*ZaBP`Um#G5#%* z82Cy8vgi@Nc8^5WK<_U(8uIvEm=soi?rA9vU&l1}pX87cd)U_{6p2FPee=Hy=8U|~-djC+Sz$@40g_agF+dKz5QdnD zk)gK{kU71)*iKj>#N}(u{x#I<>py>F+`n|8JX--GrT*s>-{3wNdud1t{`RI|(>O%7 z0cKEpPW>KV6$(_W1beZBzOa1_;~u&%_+Oz7-Wa?B-jV~P9jnAf1Pzklvcld1zVV67 zlD+w3L!iW=IzTiaXHnnRvyA`=TE9wPuJW=LAR1u%Fd)K<==iLm4#QH0WFZCD(n_=S zJH)Ww_b#6MpUjE}gPW@!NyT~5x$zXQe+q_`clhgh-<;c94Nc&&n6uT3WJ!iqq?NQ?EJXZ}tEZQlVy*x0FyR!W=cKrL4`rKjLGtDNxD$1sm z8kA}|1X1YB$5%SLN$ix&!ND&fl-i%yqLgw?oXu>%ANehLE2};(8Z*eG2YmEV>3}oI zjZ!Oa=-&Yz9N%E5ZILbG>&&FNXk+wi^kHv!_iStZ?S%ccOb${pdssVe!|lM0!Lmyo zMme+$02A$@<$=NrE-(1uxG9coH>%6JgUi^MCKt>}1IC*^?7@zFzrEB+;a1UL+KBy& zl=aL92K*cHqM3uL(E?=p8|H$=^VjOLWZpDk6y*EWxeHqTN7S)EtL93gMqQ)W7(nBs zrM-hH(hDV8@K*Jt*2=j_Y3Ef|@}K9(jy7#e9A7w~y)EkIqmN)>`^U6P4~vlKz%yyz z3j$tHI&S@~{(@xUXMhR4g~M}7zEDI!*umjeR%cwa9^$Os@T(<6m!qL~6=YX6!$h+& zYF93O1B&YxO4pL}J`J5Q;hO+$q=$RVWzugjY_gyYJ)6Rrd;Q}SVLTtk?Bk5wt||Yj z_J3GIoC_2zQ>z) zklMCAQ$hOCj6DN|(FwQxgz)(`>_Xm&|fAS%K*Qg2N@7W8=lawmj9CL6G`qm3ApvTrnwFfntM8aoLAHlP9I}r zGqj;E+1e9)!UnqrdT*?}@b8OVJYsl)j+E4A;AqruYe8t4>m^x?4Z+>8a~6lI3Y}Uy z3Hh5ST9-HoMYSl(qR#dX%(BE5aKtf(@xP~&phOhC=pX86BH;wG>7WeB+&YFAE!blS z<;X#e8n!nNZjPU~FUv4psh*@-pDJuBYVSopQCP zww(DbEws)*ZNUyZ)ltG91|E#2Jj|2^tX)%L^ZAmrUdG#7 z>B2|3taw1NzIs5jzc`TZO)y{?QCS!I20(n%%+h1+O+K_<{U^9{S4~nAfkpBr{I&(r zGyg4o9U~6A{FWNZHPYc*w+8v*>=`ti3`1D{FHvAp-9%v2p?i420bQWt+l=_(Kkrs- zoFu!rdi`q{)l`U%>Q|<6_@AbaI)V806M@*X!qL3W88hT6?Pmi&8yi9BAj}Q?pzAO} z5<3US^&T)fMTiWou5YHxQ@F&mwUy=`5u!Stg*^!P7Z58;R09Vz=V&!kqo;-FDuPi= z6!-82cI%D#9_Z=g$K!hr4}PTr3wM`<5@{0+f6I6L88_H$^%mQ?W2shN!O{aguddoI zLkQG;T8abIM%DU)EW>F9ern z&n!s^ugTLSSQI|Y#FH+(5uJb4GUWXpjlQc=u;y@q><|%0l=D`WZ-`g0mqA#QBxQXe;#{jKcw7E7N|Ga_~L@ydb3`(w%^xjI|4K7D2Oq3 zuY6ijx9xwKn(bn=;*h5}`eE3H@E|*Esip=m2kjrv81JU`g@6m=xBBv1>$9yx1Ej~u zwUx_9HPaC@EY^EVL8)wHshE$nMPZI=MA>(mTAAOB6VR*~zA{*|CDqq7 zMQEDQg|ZFmyrnQ)5MQSQf@vtUxNt=3Bs=eSDaPd?y=d#4PW#i_odv;Zt zwRWlZv1t390Nws6BUBDCV!;Y;1b^}RzE0oMFT@uczz6{Z_}bN)Gu7n$m4D%dUeDg3 zJ0_RXX_C-H=E3Jnz0Xg_wL7gp-KRo406L*3JKLOcNh_ql8VV#oL$JsE|Fbc|s-m#7U>GA^F+H>X?2*V_}3Vm7Pc zs$>Vv$gUPX)4#Jv!}1xk&rWNT>SGsqs)o}BzJ$~(eZ)5^scb$qPLZiTLW)~#k*TnD ziJV}E75yB8b!c35#?hk|1;vV(&_b!ZA&B!(;}RW`PHBro_l8=o0oEgE*BE8@&~)&M za}TSq&E(Mlwg8EcyUT`$!{%jci@q`wHn@FygGe39@9IKPc6;0HLJsXxbY?(3 zZ<|O(d2K28f)x7VK#kPvOX%c4B%DzqUxpElRtz^>(m&2|a<_8sF{PzD9!-x>p|MKU z4nh~xT`~j8mS0Oc6a3wEx?4;rvs1LktQu-ocoSo^9gN|pZH+55TQjZuTIeC6OQp`zvbypE(|n6QT=?Rg6x>J(@g&!YcGH_m@$$;TZ(sN# zk(kpI7KUuQtFGlG=k+SrrV!Lvm980J?=eBK6g#93Ge~LM=JQ5neQ3dV15PBosJFyK z4j=_0nbWhbi^cER2xyqs_`OpXKv3CNN;6RJ@gEe)2(;Y(A~gMs4WweghU**%5szbq zaI#XpM6MLu9Gn zHE<%5Y2*XhU3^XP^`MmSR2Tw!)wl*>7LOs6t{K?#f8S+=d3oD4nP=XEtOCz9e z_9r|Y*fxz}d&dm17ofMx$U;9>0&j|T_w(OIxV7e#tafzOYSKY`Jr;Bqp8gZ!$Dpyk zLQ@f2tg)TJXt+;zgEVi*2kiz@zP|I+KK5u@+UtSL*luZ~Z;k+&UV||1ZQ?Ihklp>5 zZr^7O38IW!=6NBh^5oD0*+gfLwSUl_d*^1zV4h_A_yaMx{X z4T}q&j_pQl4+K~e6j-b5Gr|ZT*##iR*6;}&XgIiuLIt!aSCKkn2r!+aM4lC+-$qHy%8q`H`OvP73>qKC3q&Aa*bK3b>OjCJ_Rc$IPyxrWI-Eys!bYlY5sB5gn!GRdn!V76gBMP?Aly5S<9$eKOu+C(Qi4|L?{HW2TkUdiIn6544MOw zAeXfD%L!ONn65@A`f-+5@fQ+RQ0xq_c&M$*#mB2jzAwTC-`X&xu1EQ?3aNKtoq1x1hP0A&vX)PP#aP=+}N`yR|4i>11 zEMBVK67OkG?5tEbmIiem>1VwoZ^+Qjt@t$93w&zcb{<)W@z@gc|1$R?qslPcXkqDg zp{vUic5E)x+}uiMdP(b@b&wTBkQUGqb1l{K@(m2OAr z2Z&)sEe;cVmm4yqW2VEtmJJC5Il_Vd%R_7GlOohhvYEgm@VHxwVqAyR-U7} z^JRZ|Eu%et9%tc3GJHFaq%2x<8)$RAp)_j>CxeU}Ll*yrf`H?m)d^7{5g3X>W-OfE zE-PXek*Pf$mDlzH{cU(-&g47OcjM+vH4w<>mTln+qFk@ zRCU^5UjQv6mhz>tQ+rOi9C~G5I2=62Zo2eSkG|`Yct~P?*3o0!vdLRcK}C-**!rQV z<>0>H`H(A&b%fJbNc3W@IB}9<&sF{D;6mOsgqPG>jvB&)V#RkKQ>pN`gSOxGWil6j ztIEn_TJ~()+!2rexR268La@!xH?lw-4Zk(!+ler9SawY}e>zEM6Q*bsA z?N(8ipk8(Ty`h9^62{l?7ie0sPjTXE2o4JBF)gTiSy(pn~^SvS_79-+&B zzzZxr9YP=Y-g#(DlbZvW*Z*XfMw~CBZxf47q3|C;Y$}Rvg79TvsQmHW5|#fk)mW;b zYR<7-KadzZQ0AX3kS^B$VV}Ca$Bn=jYfGvypeqSPJVX-W>lXI?!A-VZnf5H~P5}6==v_@Y7mcV@|YaIWH!@ z7JS+2JWZd)bnjW%I6LE1rV-2REeeF02X(s*zO6gtt~=l+TacnXz1csc(?(jA z?*h@Z$R?b9S=^=cP{yhh0o1Y{qyB(yju0@{J451M?I}v5NE55%C7KI3P$5;sS(2jj zTQ|(Tg#u$IM}6&DRp;SEjfJF6RQmGlG{|0xI{zHfxx;X{Fh>84EapaE7--IR+5t4xu8`x_r;lF@SXop8=`r1fS>@5 zUr9H!^d#8OBg z=C$z3y|L###UjdUd&1!2M`g0YJ#H*^db6wIrywF+&c*9Ma-XRfyx#%3C5OxWyo(iA zo1=1%-8Rg580+*Bg4T<|BhLKOx!~A`FC@iMSK|7#48Uo?ia`q9I?x4>x4{DqfJCv& z$oY!qdH&t3?FC7ZcaLDZi-y7@A@d-i!btKh_9ulg8*N#@+RycqyY?IZ4QY1I&oOTo zbVFf9JVW3?Mm*t|{Mn|dU{YaXWvIBJZ^IE(J zwsgshw%j5(o_khXti`;Uq58AdmP@kJ$&~s$3Ik^jZA`@ZlG$B&Qn9Xzo#Ho9RT(JD=7&X?ue$8}H}3EZ+I;{Aqj;_;E{ znNjyPS1vjr2LM1R;&-qP)lwSH;cSi!lftr^Wyu!t_2^9JJ18OWgS%K3+??F{>vK2Z zG;6p(or+I-7_MN92f;PQgEnbSWr`>k%4V{MzIzcYdF5yt^A)EjrIZXE%8r%};4pQfJVM&6!fw+rqETpUbR=V` zD>Kl0GEH67j)q6}8eYGKp;&asEgp7$alornP7hj;Q>~3D+&N(nHDzW4s$FD)(BPMo z{ax1oNX8Z!kjcMAE=7mrvJbnaS4awlKr*EhJ}ZL~z?b%pSvXrwzJ?wH#MkC=NJ}sP zt?~*PNej)t1xgYu)Y%pL5>FFP*e%MOcl_jMiemEga95zb6)zup_9;k9E=Y$tbNO%P zQ4RGlt@o)dB|m5H5+$QsVHO3ZS>=F@I??ix{}}Ozjj?q@Cb8Q1&28(ZZSYqLd0G;^ z^D8PhmbHn6G?kR7Gw#n=NQB3`z{NMJ1PU-7HmiH+2x`vB_v?szwYkBja)(=t!!jyU zR=~LbIhK8wtX2GN$cNV9&(8?YBZwKxEF&?3Xk4#AL-5D-r&oFR01a0BV#;W7?RC7F z=FLS*O?(Ah>sy*9wR5k=Ck8`v7_ruB ztQ4W{694&$eX~kBs08u?NEDwrBq2pMw|9Qs4*GXTxCp$wKo3%RE$SIL`g!I{D;y>Z zDTwAVrvh^?PBN>reV@&!rS|90%pewCpzBTYK z?TV1Q(5rG~f0hR^Evu(pBxUjXp!upRR=M6{Li0+o$#f)j;%4hf#Pc5di=}%CSw+vI z*vP?S`8X>+lJfp|yYa!`5}JS;yP0aBsTIEM(uuH39=ol&Yf9qE{lzuck+L>qB0KkQ z`5Z^ikv$P_#v$ zyfkUis02Qj{~eATOl-%SK?ANc_{zNRoxHY)^9=EUJYL^@LoR8@;7uLk70A zA92&VsW%JBBSr>};B*c9>pHrt%Z^_C?)Iqsc&+Hu zpRa9xtYVX~hY!k6$SbhjO68nGHqbzwUKL7UvA93nHZ|(G{$G!lFL=wp zH_kV$-Px`io(DZRC3qaB4boR_0li9Z&FXSEYc}6LE;E-17N<+7F>(v$wLP3k5?r|J zqny$q$!_GfhlR9tUn()$kIuT}u8#0C?Sl-Sh0Cn4T*@8NGW-=$k4Y^2Y3c?_16Q?( z=n(}-Z4&&_d7KsBVl6?DTcvcJy$yOJf5F@B?}|szX|PSzjc%&6#L;n5B=E3*c|Q*PF|> zkehpJQ?xnti%!jXsLXJkx}z)G;s+$VijIm7kNjET)GzV8f|5W@r2pneJ*m33auCoc zn^(qtgs3^8?xu#%y=>AjSQ(S$FWe+pb`L@=8k@iu&`4=&6mIvG0?E z2ge3UB45uy?J~ldB91G=CKUc0kCL|~8BSG`zPf+&jxg_Cw?S&@jQ{c7Y=gT#QIsHZ3$SbWaT!jQ(Jtkf5GuC`1kG63@ zu^es;=gnq41;IifyyWj>PeVUd&0GbRyuYHZl4=1{f7lxI($*B^JgF~J9f`S1Eu^i; zf;4()A+v2j&>s1pY(Vbws%Acz(PRMFf(#3dif-2QmBqRnF{l6%hINF4U5@KVgm)sg zr4;{V>wC*VyM*qbRD^i2vHJNJW#EYW`YuB)oB>6aqb$)H3INo4++w&USpp6tkntb$ z&9Z@mOZG8aJx;Odo@QSch*5i#9JBQLU?Sf@12ijB_XF08zIhBj5c^HD$eK>($<0Jx z?H5*M3#u+ZDN?tCdg?V!4GO;{5a=frP)w%m(#yCr4NnIt6I@E4T}^nI922WHH1Y{YfZ z-<>wG5r`f#m-yrvIzGpy2dsP;Bv^ttR3nDqKBW7)p5Z>c!@@6{)B*q#J=dWaw8)=I zGMb&io;*eKG%UM=81!|1XC-jzW8rKDC1McS7-x4=vgYd|dVFgvm&Ea|Os@!JF53`| z0t?C_$r3IXl*`Jw+2}>4vA^(3s%Pb9k=MxmUCF1e#Wnr#51EJ#n)#?F(m<|=wi9p* z=$tTCD{Lm&Z^!S9hl)!=%wy6U&3AmO*6zzvu;oq=2)^WSu(^9Si%p!<5u~d@s*LTO z*9SW&L0R$+5JIr}QUY0dM8v(Qyt-`&ZlMbF1-r3VVBEU|5>~jq0*2+mFcTj?_EHXO zJ#Fq)zAG>fa?t)}J7(zi6_vX6XlZ*m(=YVND8gbXS@wk)%(CMx^vOQ`u{AvmLD+4_ zs|?FwW3u59R3GJ~B%qt_iAJu!o9uxVAtkSu(Hufxy_$hyrA`Zfd&52RJe(z_^f3~K zO%*<6ZC_~&NtF4T6Y83dyCYzeT9+iq!A3FT{6$ncN}c@@znyKI)N77CLCrm^VtG-R z3CBxYiX=a#x#tC+41I3_k&Tt4P7?U(x;LCPM)AD&2Gb~GZ&U1!G3rEz;@WfweWJaG zSpa7i(>Y7-Tl1koS~OW-ZO4Bg=(8sXt#X{ zWqP0R%=mnXQ3ANTF#r|erZSO^7VT!c@IRh)vN!~tZ?qc|n|6-s3N(|rJLKB*r`I&> zcHLc4pQwdPuS`~IE0ivuH>}%*D9oZO+@%2|`K`T_6@Kd*QH#I{T@$;vJ<*T1+j5UR+_=Lzk~7V1$xoTo14F- z@3V|qCC=nY9W_bq(;$A&)fBtlSw!Cgw>tA+{A5i0QgX8U1NVFjp!os@Wqgul8%jHts{knEG{QIP7w z7EbiY5&8rASyABp@rMZ}Hma|yBkR6l7;KZ4=YskATGKcIp(b!eMN`;gxskeIkT zR?~%F;KoVeDiO-Q7G^dO?c9rVDU^}X$cM})V$RP-k@pF%copxR;Rg*F(j)YeED|T1gNM$Y7!tve+Nm;0xk>zWE_z!(mslNWNujQ zFt-wUQo7qU4&_~u>*;a5WLDN{g)MnPpdF-Q-SXMjFwk}~#*NxbCp~CyF1by*n?tP1 zuAwsw08F=SS`=6o>i!br*kKc-v9D&E6 zr@Y(s;lQ7=&`W-wWhib;(&Jghkd(_?WT8q#HA!4Vy7k}&V*Ssm=EK#(aiwhISAKzH z>8kObs@{D@x39sb(IgPS&7`$!Uv&oDN0D87Sri{xCWoo<=`r(-L5}JSM^ZbNI<3x9 zUu!s@<5=j%J7$>GOLybOZ#mc4JRn}5O+H{2jkd<541tEv{*d1~IiO3Lg2 zM+<6%1q)TCEUS3M`r2C+tJ?J)<}*0eA48MH#<7``XXK~W+j???gcjNM^;%!BSTDMI zLKoVEhvZKyxqsy@esEoD2|hJTUr4VTt}B7Rj+G#r`qhaKJa(rST`-%MKt7hnHA<$< zC=cmRrVxAKYnWa3HNaUTJJv}%L^JrN>Mas$%Qu|UnKNQjYC*64O_6^8>2sAE0Z0qkDcAy8#t%&S_?s7eJCD|5eh-fxH=aphMe=-bK%eicDe zgKN9cO_-9JHHg66`-O9UJBe!3RnTKLE?UNz(F$kOi~Us6_CZVuFRcn;i)TB* z5Yk46U6ZD=tSGdw=GH~lgj=ItO#@q#zO3}ea^mIvq!d2NnXIHPxAwqt1UC1W0Z3)7 zQRCS~(q8g+`~6re55AZi1+ih%A-P(V8iv=8#DHD1Qol^b&6c9A#YBB`$DGif^N^3X zu8hf^lelpG5rKFkE4okBMV5kGOHs)x=_Reeax2g6PLd$IIJs|BSMZc+D%X>>GXW#j zbxe(!M)F|&Tq<#$*De8xiu9%0lxf8`l9b!w4ldB6b~4d!1erc{mjL^jS}4EQbnDV; z^{vAF#akI2?O{R!LYGQ%QsVrfqXEC51lHDssB$8tK@j6#Ym5*~ZJzzSpmIVbz40!* z)Oi4_R91VXHoQdj-n&%V08jMpsKh^oVd~ZoxR`=EleJ1i7m1L4~{a__sW5Xmd2G3v&iOYZE=oO6`3@gimHwU~O zQTaqcAaj46NEeYwGlx{~qhglhwnjYmBsIMfn4luj!*2KE^3;2AWL0``BsClUmy%A7 zm*Pb0nCpxSN5sHP*-HI}q!D4ahSc(R>rw)~-9VRgJ1VdK7ThW9U`SNQkVRW2(0&uuT0)IwOGb$T1o^osID$l=83-VEIUCI@v%eq z*A|JAYR(c&_Ur)|P9ph=Mz_&}^GO!sCv)GQ!7kJ0y zlhmp);FL`(WZ;Dd9b`*fxK(NH;!h?xF!_HT<)m0Jr@2zf#2MHD?MFFc+} z$m1pSY9#pNEF)fd5i9JldiwjsB?2o`)^O%Crl54v){=1*w!pw?C25gR$H8o}$Gt>E zK|quUc42%vPdA`}>H)t09<%uoiy&`0Tl68+?2C=eNFV!)Xs)wL0Fn54qwV&S>eH}P zEZiyYyru8GKmnW%`({@DUs@$rAAheea~wZ|rW$o7jM!6N;r?WAywm7=DrR0LGREV2 zzUeG9_p?r35+A=|_{F^yvSvHH0fGK_Z^8@?b(f7=Jl>^aZ_BKJ8X2ue!n|xYJke9B z!jNS~IKIcWMBRyJDV1oK2=$tCg*Y_sL7#V4%%u?9!Z(Uu3}JhJYQtFJGI!I}0zw3! zk<8_Z(*+8vi?jE{mZz=#U_a4HnZhr2Ce#A$xQs)Cs=pWY=S;@^HKb2I(mCsC4RlFnI%N)m6gSSZl0AO?B9Rk+m&TDpi6pA*Q%rd~ex7SehfU zHA-tC#Z$9^O+ckmZ<%{3KXVfVL6wsPfB0`O0h&!X+!YnuFkGN#%@OmYvv7R|=`Q#b z@#uF(VPJgE25<4ALP>m0_gTUyKWhMWRao8x)YdWDfl|(~KtWf;j<2zGeQitE>QE9~ z9k&j_S}D3@zvg2_u2zRkEZ6pyzxCCODn6529qJdX%Iu< z=@f=RiB&JGIkZk>a{Au9&p-?PVj6zRu`OthIp^8tPBBa3NOoL($GAh79vE7dzMTvq z03V36+ldCL=SQ1)9#Ml;k!#sU8Gx2%aSyg@G%8MA~4x>ma=qI0yz`Pg> zw{P9MGi2X%xXWk^MHI!Pr;#uNoO57LyKG2)XPpA{4weHUu^bi`dS?*(VNS8o$3oGE zWaCUC+$~A51kQ!No7c`NwAk4i<2H@5xuXRS4iR) zM;sWG5AbOlS`^zLm^G+~7nZ)Ax!RpR2F#qlB4(7K-?hYsmXa0$OM2cw zR02}QQ%OptNN6<6JZ<$P;|qU>-^^aCVhUZ!;1IO$r2V@GyEQftm$}^rzn@V@auqfY znpwTe6%bqfqF^_x$YQZx5Kr1hIww0$wP||H)dW{i)k#lY7&pwRYxvf#!X)^KxfIzI z`^bD6ac)vKtt63W3PqX{Edh%8civi->W0m}W74=&uBU<7WuRK>XGM1(z)ss3`=BlV ztqoZxM?>I|y#n17i>6m4{9Zk!Xo);`i|3bdW3g^P$mCM{Dm<1o;C5j!L@R)ZF9*T} z-aL%O9J_i|=?CkW4JHmBU4|^Xs_J=s9UJ3a1A??nNzY%r5{^M>5+iOY!AgbjXs;Ks zfRKp&t||7h!6a8t-t!3}3zjw4wWvx|_o~vOkPXL&k2<(%8+s)@I3>KxbSG35+InQZ z*r^@(In1dq(W@++@P&XN z{5w-YE$mdMjX$ldN%14X%MtaWI_lGj6x24GOa5<%UY+xU2MGBiRz2~4F1aT8ezHhs*a+ouVfkQK2GNw(qdbObF$aHOeBvs8-eSO zQrhZRTb5mA+`a~Xo1!+dv3{y#oBDNTl3T-af#hx*#>cUQZTeeapZix0ziUkuF%cv+ zE`MO*nw5-fEcX41@JQV}K%Ug9&~kh=q&xs?vm2=-o&nqT(`Rp^nyGNNIIiQ3(0n&^ zQg6*wE4dlaO1|P}2)g4HzJ=CQJa*=wSWG+D`x}YyIUN z#Ubh@+dY1u+Nq}v`F=7;D5{9mq8!U0zNBU_)-dB~Qju}0p7`Y*O`J<{o*&l)U;bu2 z(o4E)4JE;-4(?o334~=(n&rIVHiJ|>O*q^Q###Y6 zUMWIQbGy9^;LZzlOl6bi>YE^4ACb)(cL0dDq^rK0Z)4FkMIGNVW|yOkRkfv6bDk?; zamTGvP7z$xnITJNop2me%8Dgk9NH{pN90n-RI*#i$iG{K=d8e;eNLj+7%nQuq@8%O z^SyBCbhz0)mE@Y{C?ArW$$fX^H^XP~qM?YJ=yi?!>bfA;PQK9`vbS-@-Bz`IwUQJw z|FQ0a@Rvs1=O(YJqxrWwd1Zs(x{Gf6$h+Wkp~}G8JT8?$|FlmdJA)vJ^BU9ZbP1kH zCV7aBy_IIbfPuy@J5ZMkhFRwMXGn}i%N3Ji2zTkB!Vt1GH>MS~DRZp)_Ks#ROP3(= zFXs6b*Tj?#H(5(i?v`$AYVO}hWc)`1YM=PqbX%;#ZC_1mA3unbO1fRw9K0G%`ExUA zlY9x@>&v!xzqampL#o8(bHB8JM~)Z={Zf0csU)&l$`Dx>x$@}ER!Q_Mmwi|& z0b_!JV$~?Ft9j^%8Idc_AFK;#9@H(A<=16onIF%hz0NSvJ5#sUUkSqSdYSv`BAK7v z$L^}ydW%|-cRlQ7f!KfA2b;!a`}4jqCJEn)eO2%$xMH~3?47epFpf|h*(usb892eK^uZkO=jdS!ltS%e9GK%m4 zi&f(=3kffBVZ&F|fNe=>a42nIGLgFG8TXE*7GKK3DrDAiO~e5`sRp3S?EeZ!D}Y=snN?_-GB{gk&@%)Lp!jVyZmf0@rB#K6?puj7 zmeMApkC20H@Oy9o<57mP+&*m8d<$ItAlx+3vXAqG0(O%7e!*O~Zj6_VI*YM(11&k` z_Js^o?FiSYLN7tWx#BVNCFZw#An9^Di>9jRQzk4=iDu5$A2L}dvQ7FcvdiHFJ`9Ui z#sC;8Z4DcdRR$XtOSYq7mjXj?rWxs+mLgRSCuXpYO-2IINs@Mt8Uu#@sVSTcv1OW(J&_zy5Inyn z@|7RBDOB*n%i$&RvC?xIf=ax1PBA1KNGctY`_sAO%{R(T-+eIBJ?6|T>Rv7@K*^3lCmi7)yQQ;&v=9~FhMDD zqm`@*Fo*0xR=)x3n9XC@bB=Q;7EBf`?y)4Nlth~y?*GbwiF8HG!h&GuCHH?+q+QCWI@J7{*2@A5&s4{rhMGo|KFv}uZXiFQ9!O=`S!jdjbwx}}8 zuw2xEgU^Y$#?P_}XutdeSY_)*>`SadE@jqL*vd@DJ#eAFY^blCr8Gk>Ay2pWsUPQD zfye6bsh)WjGHmddL35*v zJS<+46>r5WY^uLtaoFN6m+Hmexp8i36e}>9Jj-5cY?-DLkSq}EQNLj`PCK>;mzILj zIcXdQfa)14ufYY5-- z&M`A^S59BP|9WBG6qj2&cwZloa!JjT1_zMQ#XbDA@CXi7M5=?oBu5JZ$$$C9H#nS0 zZ0TZ}nLi~93k8m6BUZ=A53^seQ}NS<5=ux6GHrLOF}Gi&WA?mBN}hlsY7hCd*RRSc zp_%Z$wflSG`SZ=k!f|TV?7C@5*NgAThz@5Rk7MP2?Ra=>#MY%V4JkgpH6|(8b=bp8 zh{q&y1 zg;put@*sP-F2ee4k{8F@;Lmjl+vp~%rFo)JrHCvGZ` z%|!|~%5^JgxC~DvCf1R3svnakKiR{@N0UmXljkX<(F>j|Mlj+_DuG^iN2u$o4ic9xb+x^yc+$KmkfaQ*wK`_O^R=4n(PHuW1HKhL*`f2@YfjAGr^$cbtF`ci z=B`z%avR= zxbm^m!eFgH!_f?=hdEfw-j$-h@^@%y=RBg8SntCURkPAc@V_o$kH9;wzALaE((sxB zT}b6BC$7vD2K9^^RS1~)#eqW~5o(qs*I#NyeD8VmvfX@9)hwSlCu@~ZeiL#OO%8k+=@rfxzR|yN3l<)X^PaQk(oIkC61fSBvV2b**7$8_BtXqN}$Hg%6qoxPZ z7M~+xq}4iMQ%2*G+2Y@8BlLG6sNaFUFFs$W`YT+)jNtQKCX1unVL@E6RCz`{Xi)8r z7C)|5+~4CM$#?hyBh&{TsvgVY{?rAX-jqvm0XND5C9QD|N`n7JXm)~zRmc;UDsQ@| zyjBu>eS_~A)rUh)Tm(ImrRWG>MP2`7JvEnZQI{yGgOU^eZplm3DO|cFpTL?=lw4Y} zP<%H^bTs=Pm)A*HGtv~J$!WOv=NEny2mGQ_%W52>$(JJWWs$f?RFXWRVP(>x4iQ59B?BI|lp_HkTqgJc6 zPE4sJ*~6jNFJs)eyd(2O)6mC-%a^03xi9c9(Vh)ER&?Oy$fUcvw#s` zfRSx90JVT)M&P*K?A!>RL|NrV7}M(oWB5RnWN#I)t+N^Hg$%{unh>ZH;O?If0EN_( zV`DCHHpNs3Sgq+?(R(&U+ee)yztf3lQ}8`)Pu#;TR#q~bj8u0NVnh`O*H8<5bOT^B zjd2BeKy%yBHNxTqHqR%p`6=5A*xZu^IM`4!oe1b8qorVIwyf8owAw0}OelZ$05(1q zo0Wi#tNJyCt0GTZ!V^kX3QoW#7N`}}yZa9-WWN?6CQU8}DEBIygKT!y98h$w&uajO zO(zrkkJU(=kEh9Zbf%0kwd1aM%|@Z-yIRwd6yS>hTdouL@zQcUQ9$bbY=KIHX;8aa zF_2_Lnlw41Q;XNp1QHRWbsX&A7i#;OYg--{IcBRQuG1isbwCmCkv4^^xdNo&62;WA z2dFaglrCF#>ZCb3pp6ZrCA*U|dI^(WL`=fm203GK|hUNY;}3zL;hQW$s~d%hcbKCC@M>kVzURi*RV z_ki7IXy+8&pYRk~TH96O6wU53w*rjCr*H=$Sd7wau)3g@OymkYspewWvz#L)X$~nW z;k->g!*NbMtG34HVwW8mC7X13QVs1gpOuq*WFXpQSD;5=F*we~%OR?PHJoC{WuYn`}H#oaC6Kc~&CLqxZA_ zlflo>tYE!CA9v_AYRjcR1!_;hvw_px>e)a7R&a)+51-d#7xMIm4iWm`Xe>>R#Ypgp z`4{u|Uo%mY>PJmF-jBbV5EsuWo$DJX*vmxY?_aR;(lN)IeWQTCi8;aF^|_(9C9@T< zHWUU?Mv$irmm`NmkEFaJ5wf~8wcTG?3%yV$q=2RPo5dMEij1vK|$#rZe*9LuYI zO6mM|^ihoMq!B$7;P@2ecFQHWor@*7-HF`3TjllzDz}&QeD@o1_kg3C%eyr#C9ML%RF<}v4g!IijwKpMEZ)e*}N3~l( zk{KnlswHxE>Lnv@0S$rL;SZ9{@O#OOk~MEH*xz$1p96Y6BG^!3O#Ho|&QGY6)g%aB zPb_%^^oGSd@j|_^c6U6*jwMaKz8>ljYnuZo*{4Hpi>f-rnbaW*;ojybadC=;U@bgc zm+r#ZP5i}nRn3BL_%&hq-2>hGT0F#a{Nh|r2YUyjeoQ%P8E~d@5VI-3_@ThFg z;-ly*fVAxj@6={z`g;n;qU5Lhe1k$RM%|ZJr^(B@{7{Nc{#^WnFEKL|2YCUoVri)j z%kR##&HhW)ts+9WqGUHf=qOpBWIM{$8IB@thJ&VQGaR)4$#N3B3E)fig+pEwJW!VG zi}kElh1lx!A4Pw@5qcy|&W8RdLZ99tIB@Q*?gD@QM3l_AsdQk-EQuywrUsz@n5wU;2k(1z){pU>(+}S|iFjuIgFYL4sXhbET*wx6dPgPuP5zhm+ihQ+JFmsfNXn+^ z3E4DO+O@On%q#8|$DuRZ-Cv0QnH3k!n0&0tDN6|V{ew3lDFN%`Klr|F!~0=zcV_DU zN+PMTHq`%z{^xJO^kwXS2UE$v45rBmm`L8|0o-MT>!Cg;dWT%Wpd+`6mZ4h(GV&)& z$e8Po);KZd)Lx(Y_-KCt8$J69HHN=K{;->jEDL+p6YgYWntU!+B{uttkNjjOYWMjv zwUO-9@Dx!e57(EQO;U}?c2@t_La}isolqz|<-08OvY1nO66~;B!48WZFC5w=2x{r^ zB9`2L{dHz4tu+zPm!U#2W9EN%G>Ps?i_;L-Q}kJJ)?s$$dY=KjRXS4hS9M{&1T3tP zg^5@vcV9)x-VaoL1va>miT?iC6n-f_?i=3TA|B3sODY=vOz;D#XyEg{jN>FH0CtLg z1K6??i~jm%&HOXxem0A~f9Cwpp7#wnHhjEW9!>*N&G5!xEwzU46&k}{(IgM&?-f>< ziBy~N@t()S_sFD}Hj^jPi_zT(PhZ&>X&|;g5s&Rdx~<{ejG#mI zc9G3w%;J!5=PorC9n@h$oBj+s-~qWPWCT7;7B(4{O9#>%KY()cI?*&Xgb3=~hdQAY5;@ zM$PMR$Y(meKo4icR?=SOY4GLl2`?+Mx1O5oTH40+ZQ90=TV+3^z~H7r99 zDZFcuLhDHm`bsybysKxMN@pG)>n~&4PD+O?cG-b1(W1Im;q3b}CozBN>Yzz76R(gf zhBN)8w4LN!5q{a17P3g95oOp7stogr3Uy!`w1o8f!qnOIUM0hY>Ie|+G=g7?KsA=MXYP0Q^a>W_!1~XXikO}G4AmZ zEYLxMZ%(H~dcVIsU$`gTm!ye$>N>wFlnQdXR(t|z(#UWm-vA?d$PrxeOBwo+!h5mY z!X>2O#-sazCab__HyuLu z<0`G@1D&WeN2L|gYzzEe?=!X^PtXgXcHnr1Z{Qx9vLr#3rYk7<%X|Il5!%fcYq1p zNPW00n@Y)+{rz!q?5@7*Up;o$OaE_;U5ETd&)*)qN+BiVE}+Syt>TP-_1GoS-y6FQ zxvA&>m9hKf6iPCK{pn$8z3Iw-*VuK)lY0KOV|Q+>kKZ4dOi5sGe_XcjdUE=|YwUuA z?*7+~-LIm3xV(NjCI9nIe_YCT{rQT2U%%9K|7-iDrXMa}Orm5+KV0l`EXZB)@9UQd z|Kfge_QPc`;BxgIZ7TJmvT`A1iReXqeVbCgzFw*6FZ?0VOJ)eRW{4bK9J0LgTniK144JH zu{j;`3ti|xIOJVY-;M;ke6R<-oUS&S*S9Mn5!r679po(umVvH$X(A={yZdM}>qoR% z@poyn>~GL!GSFsnf;QIxZLa-?wDJE_w7K~o(#8$683we`Vy7pm;ZvzGAf!>u+4YvM zCxp*+o9JdWf>Cf=mXAkG^k(dfj!VTJKx@i3bN^)DZ`8zxT-OVS?xnb-$yWH4qXm-f^q9izJvL%jwi3_Y}o7N$RI z`es*f0$b;N+nIBg#&g7c@Y8Z)l=3rOLTCt)hntGc9MqT^1_~`TZ3Fy^XtQCv{*}W~ z)6?LON!ejCQod|9GfJV`U2J~rcIW)qdYwbgkn#WuPFl}-oz#;4 z5`1?P8&b4+X4*`*06z3Ab8lu_OM)K>o@cmRvx5M?4*|RTUY4vTo%BcD6PdJN|LG$& zWb6&0592QGNR({e>N^A;XdY&=DBKks#9n7_fR(Y2y)4;Gw`G2+kp28w;~CFc)A#&Y z%eN^plLb%Jd(LuSFU%YnvzR`Dt4T%kMQe<+LVfHd$z60a%%NQIH2DaM;dVrxG)0)!*Z z+Rj`lmc}^4mBMgwD_{)u7={YJ60?~hW;Xl^?p`Ufn87%sUmJhxVHh^HSjqCu(YZ8!e2FM=<$k$v1x$TmWujz$+GC)51N05Jh0pwADoZOOxys8*& zz{cRij{OP91r>5~%jEV5K>lO`^3w^(=K|y(UI2NNoCe7ECm^2=kbeM>e|Qn(Ez+eR z&+mo&ST|@lNz1o{TCzw)-M>Xd?QcnF|LwlK_H3~RBw`bf76kvj`8u>B*80fll{M>} z$@nW|#5xE4-W#|THn2i2>y22BRRt_2GDlEi2Y-+A6fQ<5hx?%-RI4p2kT3@U9-TgH4<4`r|TR!0nulu%Z09G69^P4ji^MPClsG-CpZ zEC(~~^24nfbV$ibK*@r{9*CD)boC1pd7`L@8KY?Zhz5szC^CO8_u72FAzo;CsATL= z)XeZ~JQ00yqC23T*TpQ90~)ycayA}n^>>x{G4e=W194ZE|d3jUAj6l@64YT&OOt!=s(YVy7W(HKAY)~*GKXh&34H5N2r*dt!1b@Bv298qws2R z*339D(Gr0CI`7E;yv-q3MQ9_I*ENoZIvJotcFkdI7$lOQwR4}>^pbcUjmBK^@nj8VM#AF4-%j~j6h2-tdzC1S$*%Lv^yrZ7p(m}m-V<>4K zqn+yLmldg8_)e8M7bjE9Pq2X<D2``MR6NU@SGt(iCo7JCyWi?T4qI_9SDe zIn*4_f4|-j`_)^Q$SiM{hwb7L@N;Ys&iz1nF$>GQ-s7n*a?k(z2baKoSc)p_IJ)*d^~i zdcj>hGmAT`2PAA`S}#;K24Lh&u4H7RU4E#CY(iMZGgoD;&v-%r_#a5rK-AsM1&Q6w zRbb_g0Q)v$6w+d4i*+_e7Ftn~D&~u{p{TMj05v{om#7<&qvjBp!@bRw0-^<>D?vx1s-ok%1in+K46kGDu;q zpGHWqPOTSumBX0yb~(F86fs&ofqE*1PlE=i$1acU(Xvw8uiS{5jqJUmE(odC~$@OiV~;(Vz8-1sX~ zTR0Ol_iI7y#_{(<%#~>8$UYKW3H9^vSy+(FZFSlI1wI4R*7je}npbV@!`{}O*_Q=v zY|W?S%Y4mdU#rF+U$5rG9mJB^>5TRIX1lyn&4{*tr%SX*2J>Py^XNXG280srsw+1s{BDd6du01}L}pM(YT4Ijk(b77Lp^^Q10 z0_(Xw=SC*a8t`|%XEYrpri`P>_|)h}*H!+~^tSST`%i81fo?vo?mtua;Qql^9CC~qaO6#>Ul_91 zmwF^mw(FWQS~CW+pMIBWaa>UX|G#V7?$fnR4o?OA(-b<2z~?dFcWq-XsJZc?n$w}? z^xm57f1_s1*k=v{7yPJp%*?FKBiQ8kx-k|8<`~OM=%-S}k>VO^lb83Pow+63E@#BF z9O{t~c)lO4!pZ(8l@>>zK6y95#T^D5H(zuT*J`B&q?!lhj-?ClMLLg0v#)*2X9(dH z-^E@2IzYk2pEPLKN24Qtit}REf(LJt{oQ|nr*IFf;NihyCpYz;SOW$7j${N6D9;d& zh*H}I*40s^uKeM^QRPw6>@$V9Lc1L6eAsuk4ek>>bA3R0wA?1Uy1DogfaS|h4W=-B zJJjo>#eAfs~o;nip^Z~%SoP3v9|&I6+JB;Rf9uE599rl5uXef#EZxixfL@0cuH|G0*$i4YJlLh%G(gpK z`ozd-=`ze-Q34vWlLVj0rDRDSCG!o0Y}k1&k%txR0kK9TnE~)vgyS|A0RQTi_7-vv z(6XqDNNe~RnM5+`=7z=(AIMVjM;~{~di`IW`V#JnJw9VQ^r+q>tl1&r5*4tLCf`JX`S`uxPxw$*6AIEm?LB!tN8Bm0&Yg}cWW(0->oh9w(UPkf67cD z;sP6f=uG&$<0}*t+#OQ%L6l5r@?j)LPUVZwq}9L|Hw9b?JKZJ+_CT3zEI~&9wN10x zZSumds@|ATcoxf44}4C-fxDO?5v2vMn*ul+3HHClsi&OQsnKs926@!k0o>w?hA_@M z#&-Ft!=y&Q!I)50du?FNewm%jd5m+m>sa56t*#zM3G`D*2<-xnAeR!b3ks#9%B!Rb zM%WVLJ?yB`?5Opbj(FKrfMA09jClTv}em5 zV-2|X1qq*HNoPr|Z&+yV>38X$Pw%H&zo!F_o44oC?+0d=D{caQ6pXibjkfS{#R0ku zG1P57rp7WH*QRpGOnw#_flobw+S2|Jv%D3?@Z<`7g3&O>v-(*8F`?cA@LwB$k(ib> zJ}XGTra2MQ_0Es!6TMK?N#tYSk>Eo>tB~@lOSKNwTxe~8J^GMpCNvzS22S-_UW$2; zGGMXpP-T@m_KMd7pDtAG^CXSU^%`wyg0|~p2%XppkO6J6Z;N(nlwG4fA)c>8N0k>G zKq(VY%5+p|BwM~W<(vR&>AoL0kht?JFmsz;nhBogdpbv@H?Y!YPSC?xZw?z9Oh6S+ z#k{a?n=uhbO!s;|=>6}%edYfc8`u0O4iL6?Q9Eha2A=(cUZH&Dk7EZxzfwAtdRxBP z{+k2v+kOOVATS!YO85)w$|d(+Zd-{qku)^1*+q~9~FflM)UO{UB13;J4m|4 zE>}hJ+@D>}jgf4(m@N?SW=6!q;K9-X{o|%!JU`-g3mE~Vk4?2dZSvU|dMC-*k##>> zL%9DRtRc)$*AVUiS!t7BjZw^9=-%x(u8?vnt<-;{ts|HyNYG7ew!+=G);Bpc!^zFC zj?FuAPi&*1paja%Rv)fqKTJ3IoJX+jjn>h!-iC4$B&F_U=`q9arN^k_3ddFVgH3=^ zbJlk&Ei=Dc2~zXxQXSX@L)ev!WCM+_EQU|BuK*+`v|LW%iGela`oxd}z4CKL6!mJ~ zJcmtA>z(JY$@{x(^4qbRw`?%_lJ@ay{=U4;#`^5a?F9u#fWiy5Ps^?di_q>XwZ7Yh zBKh*#5#n3EqSLR`G-uLmozz4~HjzSATP1-na+GDhDAgF}$F`ce5U!QkrqdaM6vz;ZGT&X zZNGP{CUbsFF!4b;@(<8AHS*b-U1W=7;OEDlHrwQ5Q6jCg5oxVeJp&?#YUan9^)`v8 zwm7GIj{FQGxID@a0U!CrV*--h@5yiyf>OBR_zxx7Vj{NDa}~xht`6 z?egl#PsP2yZ`)2qY4fS5KJ!KK3%GWPz>CcXqPk3|#dJ8TUpPD%&D5+ygH%g1g8ByH zIRz9(tFR#I2;a+G!U2T~Z-M{T{lfxY;G1F5E#kXiM>UC@w@EPeX6sJ+NRy*B`5N%? zw+>CLVW}~vb)ah(;<&hfpD**cdSNGJE24`CrxZ`0vwdAhxuL5^9-Ip1$5J60xuzvoPnve=BHub9^~j zz}^v`2AOJkN>`8a_F8r3^l)_Y0?l`E8A#lkQqFRpI;`Zj*yOUF%*LjGxeT>_(>N>kkZiU}c$R2$7TztKm9NOy7`7I`butph)NMyxO~4~stbRCUy(%A0%G z5K4-il<@HRb$YQ4zsQq`CxgL zmPO7cKNr(-$T^OC{2sO6Qso0ZFbeBXOWwU_TsS$iPyn8%LD7Nio*u>A4&J|$Q!Z8B z-rbi|j@yPgX#sA{ME`K(2B`E6b(RS$LN@Lck4+6>k^)`7;)P=ut$kR6YU>EhK zhrHDVETBe8xi<^>=0I1o&(Wss^T!hds`MyImG9r1;m;6m^>PR}+C2nX*2(}qBLf>)pCIa^BL}>vB}=9WL@MThitG93vCrg zR8OzoBj)+PHRa9bgEs&bI!r4-4vqrOE9$m{F(*W(KPw>}Z(s=7q;B2oB$tF~E@{lF z_cIN{U7dpxqaE9NK%yXBY!PqciQak3@d@d&yo&@6fgE|%PRWNm&YgdI5G5Po^NS7V z&OZ+Qa>ho|LtNK<^%jLJ(H!zgpAENe4 zR@mWpGDo71UhhJ$A=Ph7T;JS<>l~@_i5^ZwIM#IP8Sm$3XD7IFqgp^Y*ZXy^t%o=B8O~W4>oH@ij&Su@^U}^x;8}%tEzjZ_ z7tYr5mmpt!ChZT@GP=OvWj%wL!)i=D>axWA@EU#{saI!*cgr-=uAJ%v7aNZ}mVnlsV*FyPZ* z+paj}Cx=c%DcD_78*oI+7AeKBJPV@--Ac)CTD1Q7Lkn#%vD^Hn zS8tom#g~IL;NrYtMF|;!QiDe;%`v$_lMmSqCKwg@jNb?x(S3cwHknkB;9Yf17guTP zz!%7>K@W6DV`0G5*f;af(E;IU)w{$wYR^_@Vb97j;u%seg-nfB_wdAscL83Hb`NQ6 z4wzomtP)iw%U{GWJA_UCD#ktcHb~~Nr>^i%V47s%!)Wnb?$>q$VveQqXf>jHa_@NdvMC83SS`H`{W$p4X93cu7v!c`5+hC83%8a}_IA)`z%F+bIa_>&_VG^S^>oQC>cXpobwdQf^ak#fvB?7@ zI^yLH5_|?^`9{!9%i;3~$okwAN+C+1X-bC4Q9l zs5vLpk%BO0hpB&RH5*pRDKVQ$W@aYgoW^^`LXQrmDR;z5%o3d7ny_ zBK5e6PaB3c0JJf0^`P8kjQGOm&2BW;$Ha6z@d4f#Ob z=B`1FHG#hX_S|beC)zF7#%S)K@DRTm<7 zjl=3mBSHfl6HQC>AlB6qK|Rm9^v_P{)$|h+J-9XYDahPvGbKA-1zQi~?soVrh3oSm zhj}}$L+h$*Rn1kL#e*f5DwlUBS7ni|82P-xKbWPmzO!i73-l=e2FfpFN3Rj*3@$=*H#5j!+!=dm!{;CAcK8=yQk5s9*+<#X;sR#N2p1c)Kji+0t zGL!`2STdt4NbnfKWrBKCkbjG)B z`PC>d0f(Qed2OHJg7f%$viLYPfW>EB6Tp~Kd~h_oOnuMO$tB*yx437p4Aibhp3*;e zO37+T59Tq(Yk9Gbu$u$MO&G6r0iOai2>7y3T*sz`Y2G6E;5#$hW`{4YE@I})vaI0O zRc|0qom2C0Eqh};@Sdsn`qnq9v$jiwZt+D<+}LqAN~SMiPk}$R4&Jo27el!(r1Ah} zV#jyBlso~ge8ATQZJvVi8s$@dM0te67(%&S9z{w4PI@v5a}}q`{wUHEwTT6;ilWxU zX*t}}o0{Ono55FK3G%mur{uHs=gyCX@1HklGPt%SrTS`dpo|%Cf5LyTQ(ukteJDyd zKZbWrm`8V!nLwXeBy);3w>&SayaZ2-Z1Z_ePN|*^_~o`w1?cXR$WF{m3s!~vbHGo? z(n@umNDtpsniYHj@N>i|O$~WUp#S*V(i82bu+eW!aMg||wq3-MXLP#_Fn;Q^ecL!c zJ;#3;yKsiOZ!FXXjIZNZFcQArqs}e(BGrM8fKip%Z$>zFdw9D4%0x>KMR8Zct>IDC z+r_E=sR<5VrgHGz>a%&k!&b|9m4|;Fje^~evbs8oSwT(D^3QABTgv}3>lXoB#Wp;L z+>7hG8XtZcGa?^e`E8r4`lyyKSS^2tTAmQyGg#gnr`%w*{GVf7qP)Jj5-kjXxW6xP zO+;NQhbseI&5iVBCk6QvG57A|b}>uB(^(q1ALR6Epy4o};d1!i@fi9!RJ4^nP=fo9 zN-_qBy10wvG4L|&E~W$954}vFPmi(J@&o*Pv^e@!`M|!(Q0HKaW;@#crk|QB-_*nR ztKp^|v>kWET#0(>_H}|BJZi>zsOb2I@Jza(w#jO3>w9af*hhjdL0xOi8eD_?dCU9O zTkldWo_ExD>Uz|9>f6BU&3<3RmGLJPLCs3zT1Gsna!b#XN`-pebSGXn_axi68rl%e zD6>=L?rvPSw90w=wDn*jrn1^foF5pW?oGg!u89e^QSnJ-Y57N$b+aD!tyY$TWek?H z8)u#mM2%@+>*%0$2j-n<43PXJ40rb&joK){;aaT-p!*L*QwMx;t83|MxYM$?I3U~^ zzBN_8t%tgsZiRb}mc8y}7)!9$7Z2fjas?6YJP@@x&>y94d{2NfU-P}bCivb)b=?qg zPh|iH9Sk-+?t4qZF!~}o;Vw(^_w`GebE`kr@@96aqu#u~pjSv|{1 z!?9o)n;-k?mj{EU@A>yr<@WBXz=0^)qzh{ijgooE4n%cSn?Lg`PnAFH{x~`y2lLUL z?l|{t!4I00)Ex_}*gat9xkF9Ec8}z=iJ5ZwE@H zxhoDt&A=&Kzq2apu9a0*`E*zOGLkoeeGL6{?e`?O)u7FN;i~i@u1b&pu9)xQlR$7~3HuI5&Vx2482bqlfpO1Ha$cw%i^MJ~@(xzeeV+V5NB!1$1hfi7RP zHHot`(XVBvhJN%f! zc^|>O6U%OJf_{xb4-Cv+w!{hJi;iH95@G3jUwZJUGHL&OnYUi6_@CEFR(fqz|KFb| zToY4VS+7e5o!R+eRJXaoR~WP~Z13(a?@r2u<-34~_#Cj+%qbQ;XM%yqn~k*u<_>)f|1&ywIgjuPGS_X44)Zo&p%di$KLL7{qOiT9+DKRQ66({DLj z`@^kZFJP@zvlb0|U*MTep;=Y4v^xuiy(s|-8!S(&(HGl=6j-B7tJO%x} zp6xeg92M`xQTRbrx5w=HKykDTJn|H90?AJgeyq4!K91U2mXv&;q_>m|`#{NP>8#+x zAH!8=B}l8>52A)WAAsfPa7Au^rP3Lv#2y;eni?OjUy=pSCPpe&fxr53)Zm(#^-9GC zpS~?Ed;{CyvxT4yQWJR2Icm8BC_e#spsBOPH?IwA?5x-wKkv;5mNS1if0?+Pdy;sJ z4Rb>#pks#h?mG=}KW}*TylBIID285GUd(pQGBL5zu&LHJI;0;rJVeKNju|(3mW^6& zb87WhLH)zp=s0JaVe>1M;__t`QiWruNi@8gzwGWileHPQ={D*cKIzz2+4tr`c$2nq z&$M(PmHAD_6S3aRs;sig(>l+6`}^;1)@eHXQZ|IxtFt-K**8f2ZHTN`(uUZ&`y2&3 zlwQh)=s*9IDo>O8YyGoP53|bk-ARpn$L=?wj%VoKwjnNrXTSxu9aU=+duzLDHwoSi zbh}Hwz z4rsUF?7C*P=z6Vu7t<%C;WDtUVO#z3L5voX5m$J~>Fa97 z0JZ)rLgZnK7Aj>51K>XmUk3j%9$KpGjS-LQwyVB= z<&ABo7jIAbn7DP>WCU1z;6I@LX^D-v4Kcv|+2A{S z1W%@O-ZLHJhl=3a5!t3-$zf4lA`1=X*s;oQ$4Ic`93h&uVr32N8il(jmDR9~0pyj@ zL-pbD;=O@M%*Mu7*7=kpwLZRm5|$e74vb)@J4P@Pp2S9q_5g9^gfm=Ld3wymjz@{( zk5SH17~n3-Dnwj=j1sa>7%6x}7%LuU&?C6TsZ12D@^ezNNWIMhb=4^xIjE2-&6ZK4 z_QV|~13-cNw>`30;pe{)m>_zF=d%%&Icy_n1a4xc=n1+R_>=7GwrxHxlv26b=Lx3D z55x)+>jGB!w${EKM5*$c$TbQ-+%+7eO^moo6mBlA<|N1Wyw-ZfL;CMIN|l#KJnTym z{HKUId+fH#vszWz4fc-##+f1RFs7>O0aj*?bEZCPNSmMaGWv9?To!o>Y8H2ThSruE zLY1NcENI%CD$j`FzC#Z|8`B@5&*9lvZ)G-EkB^A?Fj}faSHQ@SZr``b9bQ%r&|AbE zJ{yaMsL12>Jrl(BKBevR4yjkTNus~7(#QzI|ELZDUwm& zx3wqoY#G`xJ|)IlGK4K`gNPBA{;crc4Put~Bxv#Xq1*=17+&dnA8I1<(={7JiQ6MJqkW+)n2W2YTYbmJvdl=&Zi6I0*u4L%Xd22tnezux__l&4R02&5%YR$-6*~! zJSC3B_3+FFpw?J6NyrwS6o!a(zA}*yX0U!DuD1@$g~daY1z!_H)_w$P9VD*~HD z3tOmgbDjZuSfKQV4w54E5Mx;X2M)>WO&jvhylY7Bm6VYEo&31D{)4D10>V2AbRm*C`dXQ6SwS8K1h@p17 zLE-Eq`y;TdRtg^}yz3CyBW()TvPYfodqiEK7#KRK@T4(7#p_E4gowLXfa|J4F%mE( z#(TAhndH*Ken#A{hRH}r7-REescMk^7na(i?pb=Y<|f8UiM+1n6OhGwSYbdnv^T$> zn&s~HN_T}&@y}tKB7fC`t0O|dU8xKE#2W$*hPvjvcAco^i(~q5Ia>hwfDR?uBrjVy z5T!1wfO-UB%L;ykv%Vr`Z*T+cnj;ung^a@}m>;QYGrORasf~=R5}SIZ+@=mHwt~-6 zDg;6E;eNmiF^yax1+V&g3#Ft4wCC<2*dq7^8>rY44__(`ozzs z!rf&(tn``?NNMnxv^TvC6|#icl|7qrarzdjXDbUnJ>Y@96Wv z9|0?2q@TW450HV`DnAr82=vuYq9jLDDR@&Cc;4{M_e^fZT|l^(^dRmu z$g}jDzfDnfPKx~NZW45!A>>A)*&OQt-m!i%HW|lYX2|d=LIL$Ry4WAY6oA(IAkGd} zRi=PF=>;yF)QuSlrZFH7s)#v(O9tSw{2M~b z;)Fc9?%erg23GrQ5--uiJJZ!XtnrLwPU5&nr+pXd%%YZ~l^~-nd06Zs!t$6je zL|mVC;IFL`1-t1QjJW3&1+<|S6N5^z1CsU}v#wy=4D^Pay>|5NV0Hev3(vq>&@qgAewk{K*L zY6i;`+1T~NX+pF%hh5O-6NxrALYtmF{o9-_t%lygHtH{ExA1~?i97EuDCcmss&kO| zn;;Bhe+0vU&bre?J1eMKuvXa$w8HY9gyuTAr~lI*z`K1?xdyCXUP3PG|EybmwiuqB zP3*VFJ=H0GjZ0m^{I3bv|C73SH|~Js;#PuJ#N}qiipL&a>S7g39eY0kc#`i?Q4leI zV{sN2vdSa6u>S;M%Q7yWOYmB&qo4~|N3Y{Jd6M z)2ZEwtM)6|I#vX9I?;I@05w3$zv}(+>lDvDzuq~Wfz4mJ%}3d;AUEDDHU~M(UI;$Q zJ77P$Dj)U@KVgY`O!}}_EZ;eW89~cD>{CuQ`*KfAVb`JUuyY1@TFJdXFq%43R2Wjc zI2$#CIl`zvcI^}@{iRogCio{N%H7?Wk_+Xy-0&1uC?0D?xxZYZY=4xyp1434k;jCo z!U-iep^FZ|uc_h*@IO-IW1T0I(V&YC!T)m58)c|1J2@4<2RdD9tfmTaYJg9833kx^ zdbiY}`U-Yke_z3_SA7L&$AR7gwt{uL!HdV*(F-^Pyp|#}shsKDA9ax6(N01NA3k^f zRrt<)ED?LV#l(jC>lmJBAI!Ae?Yd?dF`f5`8lGGM*Pa1fP_AS#84-fSZOTb(&4bB6c42iw>s~!-u18HmkSX$_jO#{1~AD$xa z0V)p^o$6Jp_$*NQzGb_C#`i9bFQZfAOHpfQNrgb$##lfsWAd^(-#ft~zD4i?rLFQ~ zl7a09ddo3Fu33dSC3TGRaP4M|ilk<*p_lXhlE!s4dr9zSDDPN#?tJXG$vCsC*bKjo z^`HGGF0f6D^!10MlzbX^GhTCx*gldXECn$&N&(Z=6Nz(x$4m>DzMeis;|{&!D&Kei zX|b>&?Atb7Jq?pQ;wsL>$ng`IB`qKDxklm`_2z~i-APA#PJ-ub@}1V3=gT_F2xbU# zfK{2~m_lbbLufC47rIX2v#6Y=a}>xSi^+I2EoQb`gO=C=O5KqT-u+canm;Xp<0mm= z813-YJ}xMbKcRg(W>`@76k5MZ^dcV`^xEJUZBCJ=b-e(x-~kvq76tD!0VY`>@Kd#*!Yzjk`$Bsyp* zD+SDo1fI5wcziO|l?fTa6xr5_cWczsktwpNwSO61qRbDw`tD};-i_}{yqQfr+MUQQ zgb1U5_)Uh7U3Y1DOmV%$1J_M=_gzO!!`1aQyvhjH&1yC+3AXHQy7R*9*qVN@`YDW9 z_r02q@PZ5~h+5^kSd*Yh!;3u8}ZN8j-|LwW2rv0Ef#zX@GxCW7SSy^glNxrh|` z{^);o@G4BFqsOrC-3KwNcW*XVHEK$2HNaN$mR0t~aP8D0uMKK_xn5l9BcZBU$-bBc z)U0_cEuh`6*;}LLFRuZ;l^r9VGalK(8zbSb@911_1h{ zCb$!K!)m!}wd-F;2dg8pWiQEfvC;PeQ+@@O_ixUfSKxbM4dy-s$)uiXwaWF;*O%p9 zj^}Y(zygt@_ls}&zH8IYyIbTRf?B&mz{>Jhps(Jt7w!8mqn;IfYqO|yw15^&Lfisx zoC=cQ-O$cYKn_wjy|-@-gKRJ|KUkzz^AqaMSt8PU=>2*>)HgR;gd7m5VMYD{zvJT$ zuDS%*GfMH4tGJK>#annU_OpwXDqIjoM6|Hd8(8Zz^`5UYg%2wkEnNSzb#L%-56Bkf z+aJC&Hm?2ANjVLF6L`S6{)H?zLBG!;L&9X!F|ho3!QryVpY<4l6Zc1T{>7?qSDN6J z`ml4$LCn8$eIE?LfEbFz%AML}K z6u8G>5W~Fm*(`_oz^f(VOeOsu-uqI;fvEo015u*m;#pvkxFTMV5teH$vIYFm{Snk5 zT)c>Wbt|q`pp990&w(hexg3b5-%+*qxd{3i7z<>GKbd2ZgI@0JHlQ@`!XE#sTh9jg z2bSU9><0ky_oJj-Wba3H>BOBPcXw5{lE%-Mg_nwqG^EIHchSTSSIi<^wbvpK?!hzD zDe@QK-&kS%W<#5&{&@cUE%zhcux*EuH5_-aV?31NtcqpeyVl!b1l07n?galTlF_PhIo4GnLU5Qv=Dp#o9QXw$CarjWjKzUUM5@Z$!D3-4zza0R9@= zh5HqT2DGvT`?T-T`^*V%)*@%A*&3~~KjKY{{FBfpMgL96wA;^}|KSTlZn{U)>5sP< z8dkC$eoMTF{~b$D?1{A1BX7q#i%wh3ILid`$E**boo%W&f(?i=BRgWMr`~aG>e-|> zPRzcMohSote%e_1KnX9VfyUvzhn3Myhoj~JQyE`xY9{r#`>_SQJnJP!@3nzH`Lo%d zW=~`q4!WLgamqdL`N4UbMN-CoT{2!ozQ&c@vaEDm9nJ<{_Tdo2yAuSJ=hYHRl=NH7 z;fwFW$SuEo=S()PvVc8~YY7tuh@RjmMhXUjr8cuPBjl`X@C`bGWv^A&Gg!ZoU&fNH zxA(Q);c3kc|9mc&h8$ zZ>!E*@vQnqlsy$SI&_=YD=t?mL%V#j!av`to=BtU^@VZvs48$Zt7Uk$yUBOv7~g(1 z&N$m$fo}&n`G--i*!awcQ2U1<dbrCm6-j}I>HQcDm-#H11RV>_FNd>Fcu|}2B-prOL-0-P^Qh>6Q>BA&=5ad}igLjKMTeG0WNT;@g zh>#Zrz4?PQRY!p7pjC!n?Rbrx4!F?ZWXl zO|tcRDfWa;33Za-hoFxSz^4$#@$I*rJKyvJAzJ}&@xKW9%`Y`Sss`r{=abP3a90wH zx`CCi_y)4%`dJ!yCr;q`T3>O9uWa_sIL3p8jpxZmGCx=&F1V*0V`s2Q;+NnJgZ!5?9^lH64_+1~3CER530OaZU*knLaDE}cTHbYB znXb;wPA5X8IbLJ|o5qzI&q^_a>^dAZ?Mabuj?IIX_}@Go0F4i06CtTeKmxcNsq^)R z<#aDBR+WBD01F2+pqo{Q+y{VyeNb_|P;m*Ukb=gp<0=I|g8%TYZbK;-+ENMfGzaJ7 z%7IgIW2Y2X6LA^qkCYyca^#`VVW8RJsP1|`jFiI@xrT-l3fFX`^e3Sc3J>(mCC$EX z+Kww;LRR>}s>vX@n(=gvX8U8AM#Tm9{yTIkYH-y0PPB2)A7_8g#B<6or0h{o9Ivd| zpNVJT_o!##=f{MU-qY}N)OC*#mb#NXxCdu2w{#;O+tfDXzMBVc$fm3)Zfu zsPqz`C$&I8rQhc{Cn=z~yYKt`eLlZGe!upUWX?G=&&)jY+-J_rw2o(>9~oi!Esk0< z@|!yBQK`ev=;<)900$_WaBqeTp#7V}3O^Zvw%^Bqapm1!#%)XwAXnsuH?}qd_j9hLMurp!IQr1z_;uJBs@UuVIh6 zzjc%0XM(nW;Wb>&&2z$Ewd#63Lw$@J`S1_t7DknIpnXqc|487v7SM)FZv~A-S30?X zLDF3nB^b@Zoh{^8E{QmlUZ8EXnyzb~!e)Xkw5k3N5hb4r7P784?J=#c$hQ5F?rZK?B7-N$8cuX%JD_$J$mL=nD z9dWLxor@Isnrpo4Xl%v;d6)nXBL$|w$h{Xn2K0dxm`WPkRlBaQPaXJ^8UGh@+1sUm znuMpX$u0Xd{1LkiEWIreB~kh|)uVT>m88r__hY~rm)06+<@OEEsmBP|t?XAoC1cq5 z7{{nPB#z;lq=+cAH1RbTw3-9Xu_~*_yZD&K;ay{UIp)6bC62*5m623}Z>Sw^SFOi2 zmmrBf7(d6kjFh0-Kb|?r2kyBsGBCSC-3))u1vfURY zUAVg)q@f>Wn!^opuo`rr2jn6JxtOM`&c3W|R*;9P4X6(Xg=KvRrO51JBJTHKEP}fA zfTuT{^`Uwg-TK(*+Qay)IcoO!q82mBnGjTMCm7Z)zAHv;^I_$-Iwf{!Im_o3^NMMLkAAx5*4dTCaI0Q7Y^?bfyZ&uQ1#afxWL^soS z9nfye7Kx*#gJxfH70o`qSQXTj`${7lB z#tbFvLAs(%upxjp$m|ZXkqn>E{mEOuEGZXv?|eGrHooY4}=geqjkr$rH z(IvZUd_9iU>rOsMEN{;<_zc1aQJW9%sReZ;mDbO*xZic-dSrut(8d+cq_sb_sGC4* zCPWIfwAu+i<0O^`nEI%Fgj>lP_WUK%GoerO?O;C_Jn(tFK2o4UdAz&+S}Eqg0;p%V zGx5`FCHvZ4pAXbC1pJ;MvD3$N;_|j3LO$@#wQQJVzi7qfoiRyWAr*a!+rN*b$+Y6Doh0CbF?$8*{YLmWJ|krL zeA&O%foH9BTfnpC%gLJA0BcowIj+|BTcuTI+z#`8tytCh{kiZDJO4qXb^9gv60p+# z;toYvODrb5i**&v3C)5wT(o@001qYcOFtn;|$Gv!d{du)-}1dZm0HK|lBf=U;>U2F`HLC?3b6p~J1tnB1ROd`a$` z+?#P$;a+DkA6Pg)0#ZLRzYy>%o^~*;c>n3o+KJ{6v?A445{o|l8Ym7W@5k`{pT?lH z;_lNn_-3aOqx>d+eIdx88O1-BL50OAgQ|*U>D9Ll>ms(r-LCC)b8|bVyx#pn{aDt& z{1s>a-m+;>HW|w9aVkObz2fu-p#7b8;0*iPnvM|PMyAn#RT!WeDSim$&T&*H88 z$*RY~*s4co@y}O178YN*>Jd4@ed-F#X|IMk#6aW8so-a11Ln@T$%r$-f`5UzOP;@0 zv`LuLif^Bc&k6qDuG9pJ;?!&9|0##Ifj^-YA3ljIHF4au(tLaE0-SFLEBdM!#_{8h z$gyGFe~@1uk$>*}^iv}3KWzuvNI97_NfqG@N>;bvv7!xa1~ZJOQR{vlQn-(>)m2ch zlHh4Bi-Oh8!?_Zy=jC~FBn+>8pJH1KEOF9fMOta4K(L)ldJjId+&b60U{XD<*I5Pn zpLbV*rty{3&cmIl@mq%FS%A>6o#qk}U;vLY&w^Au=RJt?I~66^BfbQC#Ft>dJq!MI zZ-2Yj^Cv|))N6#cysPNli*82L(4ccKWGE?IB{Gc`OKS_2Y_)S#Xbjuxye(*P=fvnN z2k1;CAf>z#Mm!a@9xmoeh;8y2H!Oz<{ z^A&3c$B+@x&>OB!cbkihX#W=!+;jy6e-J*>S^}+pHB?eODu{fa9rl9#f@|P*xN+5+ z=tkT2=c~q_a?`A7Oes{l=(QTxqwdAfwiF41GFj_t_+g21im41nQPOalCp=ze6Xz1c8wWI)Vm`{xys9_@yRzNME zc8q1Y62B0ueQy0cyR>htylMorLl{?4)h?L(OLSch8e?v1JrVny2mbFszQDCeFYHjV z*|E8aB%cc`2HcmH*b+lCOJ_-bo>qJ|9AE2^R6R<12Pqk9)`~|v0IIDch;e1EuAE^^ z8CRGCJwkiAPHJ}rYu!a>k4!(F~^+SxK^7ZjuM~ zw1N*nneP-Yqy};rw}o3xtt1n?v6IxE9ki9Ix8t5k8Rd@^@h=g#;VrHEaJ#mIw`*2& z5i@N*rO~T>2A_?YUpjm$L2r8T?74wInElI~Nx@nPf9Bpb912J!$1tLdVdT+P8N0fx z&G(h-#L|<*a#t$}RQ#QgeIFBY`&}1%-u{S?HS;d^Y=PhIUtR1u4$tr-@6kS>cgG}` zyD)uFkXZQ)z-VGQjJ&U%x2c01&Q`_R(a=%5z*axk4ZQ}dmwUrka``^(20^~!L-F}q zJeLafZ{Z%Tc%hvHzWD^~;SUM1LwhoyJ-J|0lX9Fp){4L0Qz6Ta`<0Q|SEH!k;mp_1 z@7IErV!K*?kU{2OkkD}*>}vmI9c(}R%R0F4VZ@)Ql(SZXkFp``s5eehG4xk9g_X=! zk8+ovM26t5PiSFm2x~z4;*6qJ92DE{t991Jp1trn@tcc1+$|S-3?IsC8{g_0c2gB= zEPduutk)bWJsh>AVCn46|Gw$Tq8#_gdR!lfyNr}T zl-XSEt?!q9AdQDwiu%n8|F!hJ*oc1KPAoRpLA3oUQF=Ap{8UkchKRep@%QmZR)U<; zfRs<4)=jKB@y4)*QM)Rn6~!=dD{ZHP69qD&uu=C`0h9I+o2L^WZsTHk{wd{&1oH)& zJFH2)RrdyJ)RS!(!K{?~z@I3hL|8-i~@SE`ex&LMR$c`#~E_xz)*9066GhR1;?-?_8{WxlduIbyKn~NUfa=7|Hmn>O?qweB7j7Ej~At~nW(|q zu=kUM8`(?HhL>Rc~@`FXos9rDdnWiH?kCAap`Z^;z^!ZZ5pAnbSA5u^q6!_)?)pyN~68A ztvPB_9_`&LCjsajy=@-+i+m|E_TT{Zw(I9zPktk@uL;ADQi#=~bdJR0=^a053TQBzf7nHL=x)|_f zg0vmdCm^2{(gz^D0q(ywQ(oIq(xrM7BOX9aYFyKc7`w3@`3x}Hvt#gGsRsB=a?gnxK5+o%aRyb9*Z}?zuEnYNlbWU2Q&f%sYm_2fMEcoB{- z?tvihGU6i^ow&3OR};V2t|+4x)a>!Kz`S?>YQ{SxPzH7Fx=G%95ou391O?y@O!m-XyQvA?23( zm%&2KZ37(5B^Cj+IgU-STc*ZKv7!*Adv3Z3*S}Tm zPyrSi>bJSmnI6|&H?DQ6n@Fy*ag&p43a0LGCN$&v&!njc8LYi|PZVVU#{^HwYkb_X ze!Dx>QlEg{I^}+6J5L4M+!hD!afCUafO>UM@6s94-ZYsh!0X^Icbe;M<(49Oyj8vJ zuLbx!_Vh&r@mzZ9=Jg;3FhH(!F*>kr~S+rY)6WT^30gYP$i7mu6jYj0=1_Gq!@s-7DsT&y>D!++JO;p{Z!?eCyIu+ zGu)~d=o;k~vPLUbou<_p;H%MqyrK)JqXa1SBnfPT@&4s<_g}T#H(?TZv_XC+h**B8 zPhd1By~$jfBdx6D+^CUnJ6#KQHb~x674>ya!>6=B*GQ}xa}sh>1G-#g$U2J_p!7ZS zrDShgP}ZzHh_T3L*=T9sF-0T3FG*|(p?wi*N^g?zk=s91w~JWkG1R|nEuQ`Ji#w0{ zoZPWcs@JJJR^@Cvb})6d^V_4y&%F3l7*F8Jkn*XH$>q9FzXI1jXL4|9086QlRyo0Q zq)P*eq89*$oa^}MKU;a`+27X^Kilg+ZP$CJ|6RL?I3)V>cGdky?OOYjb`|E@0&sWl zM6ht~>?nMQh(%sHZbI(LKt;({ZAs!1T0pO%b~=pO=nxQ1=`@w5P%|}9o+>G!KaeQt zCP)fx`x2I40#g6MyitRzc`hde$g~_C_y^>{wPwRgG?lhOd&Uu znLrtq|*MfL){9RSJ;kt5_Y@(*&1G?8ZVHBjdd#6XR7 z5KwRi(D8LZ)#K=RdLwmECoQ74(g)~D`V4)QzD~E$x9B1IG5tFY(MI|Y`UP#K+DcmS z=T_}X>ZvHvt$e!DTfspJ>^snAI=A*Qx{#AnPp|ZPd8@1?6yR0E|n=1X^;c6(iyu2ds2t+E>gyi!Y7YP(9h(nwbtJEnU}=pd!T zRDw=h>40xq5xZI`T|qBQ8R&gz-S-I6eYbQU+M1BT3C0W}$j<@RPzU@1yrD7#`A$OY zjy6Ll=rVXgpP?2E8A{=2rE`BL#7gDHO669RSTgVp8O$*sy&OnmD>)tdJlN8!JYU)S z9NIn@YPd=s_e7}{PU^=%Xw4vK&6Rnf9VL*L&X46RlzvSm6(wmI2BAOnW&rdi9eVSN z<#S`@CqvoEG2B3(AP1*s(?q+$G7@r4#@%z~pEu~{!PEYgh0+}}b-*30ldJeQC072d zga`Lp8ezblo$LlZ!_t|Rs#IV_?F4DY(V|L)|2+| zztfXF=X^i>Tu-Ki{}VmQg@3BQX^tM+@GM$(xqPUuUe0&AV{NPkVx3>CJcjqa>5yxH zoOy~+9ExmF+;NgfaIuGIyBE|$%VO5Xp$@DGd#h`j4fi($h*S<-kNuPLPfp+^g$90?GLSXzh1FZyx|jx)*f!pFw-?1pU1YH24Ah!oB0J+_hlM^I44)JEs^g)Aj&VmF_6u%_L zAx9^atA+Bf0-QGi>YvFwo?inJ{RWWcMYNROM9b(bI-A~3UGy&MroW>V^kG^_pQIkT z6y*GKw8uI_z@ASyTetnIHcq^0%A}IwiG>qxxPI)IYe$b9F+4A4XjZ0m@W26S{rV&) znpd}C-~QkD(284IiS>^HvDU%oP5AU_!M!w~YY$eG#8TdP3Ux<3?R8zcs|Bs1GGDsZ z!L|CbYrR=6iE}Tq#*kA9I%3`5dMS-E7q3iK$9bw#2$wx^$xnziF{2@xU``U`-837b zMsrezzW2&xP6l}@U(vZK8F49%*IH{|38K!LB>n2GM(NjJ)k(hzR<-nNv~t3wR$SR$ z`D)tPo`qDBlRYE774Z~x#eNsYQ(jLzg}OSPzDtmDJ?N5uy>kRPhsOLXDK%5R|Ijq) z*Xx}Ud#*P#Ddm)(KYXM7TQx5B++@C1N{y87KQde{UzHPko@^c>r7ZIEN7LosC8@FJ z{mjWy$|T?ay^|w=iGCRFX+(1pn@A?- zrsFu5z9|@03UqX}(-@(g)Af9mG(}74oYP6GiA~)|$I{h`Ca!vNI=4nE)Ppa`HDer1CAiWG2R$HCLNas}ir5^Za!18} zjriKhY^iNDXLrD}pGK%5(M`uDy39?VLff{&HR1%?N2g=^NSYh+&@@;0OV56Uo$A6< zsIj#9veJo7)7@Cs9Hn6_4^Nb{T;3=V;^jNOG{?%DrS&*VcZ{7vauyXG0UUf8C3bF& z;)Oedx=NBeCzzE>gLGuHl?<7Z{u)aLTlkfTo$7MVANlp5o+0ks?}EPvy?9?Pn5RQd zwc>70nvhd8)0sIbxGN*>=45n=cBNCa(1(Vl1{URv3Zd?NC?_wpC?`3zC^t8lhUcj2 z?|{2$jAzj9yxRdL&uC>!{p~qWzx{kGS7T;nQRQIjn-S&pbWLSF%}Hn?8C=D*3(t4a zTuqZQXGj1!pA*1|vju|+|Cg~f^h(Nbkj(y=U?Lv(l#N9`VB!9A{UpI2$GEuLf= z*CqJI3Ao?6g;DYRg~If#;IA)uBC4G3BL{a{aw5SN_hgN+F;Uc-_+Vo@<$O+WAj1u6 zX4HG_#IjP8@R>@mmh)oz=@$1&jry}%H?a*4n5%in!@K%MsR`R*v7HYpbIu(jw)zki z5AC^wsn{-NV*{de1dgjVC*kPivnlf$x=NCK#q_&zReX3Qhhs>?PQJDEl}Iif!^(0< zSDqKkqV~HDQ1QR{pCy&MUHZO-#IOHn|9gmBc7Jc#Tcp%<>HCvddYZ@?o^D;$I!#m< zXx1HUSu3?BtoF3-sU%sW#}-3x-uIZg4BQ>;Q|Qm+9fV8*o1=l;BYpqh{g?jR`=$Rf zcPYtly%8|oH>wysDrZ8sZTkR8GW29xTKh%0!PvL^a$tmLQb5n%Vbp@>;VBG>tu)gF zC21CvG+kqx(5>H2vdRRcuMf}T2_C>_1OCfdC>lLTcVpFDqZ;hCW{|zcbtyi~_b13# zQMm&0^!NNJofprZRM>Kk82v;Ph+rEM>L+@LHE3Z-(^TAa-ouFHx#+zlrLO-Q&qd2C zjGNUN&qWt_o{PFGcu_b>Z4F&BygMpA#f9Q#kK(#!v88PGy1339}a4XHG6)RdS4Dmt5SEITb z#E#KNhLTKozUs?K`Kf`~`Kq95O|DQ0>GJ&ZAu}t_G>MxWkqtKS__n05!~(7Fi6S6WD>$|sFM4G~D@-Ss#x|1?NZq#v!1 zSYVU@Yef8fpY+5FrhRsj51$%0EByFwRn&``&>_yLO7fS3Zn+Ek{l_H>oqvvyX)B@U zq>$L)8|NBWl7GY3sS(iE;>0S!U8o@uIJDikS>sFcZ-G)s z(*(4JCDsmImD~;$5noZ$V)qe#4uvf0>)K>JX%CN+(R>sz7KXP{gt+i zkev+%`z1YmJ+5(X&~HXOz2xQBBRwWB*7|YY#aONN0e2DmSY3_{G}%yfDotAdTExyd zI+7Qr(kTL#g=?bUtObgF#H;c@U`q-aYYK8bUEeN2>b8$V`j+7(t=IYv5l6?&g-6M7 zA*osiV`yo>wFD0he))Ss?}-r35Pnuo!;E@6IJKuk!Ht@zUC*sC)(m3yaVqc*X?Amz z7Y<0Lx(s4T>yJdLM^8FioqP~J4}}ei0?46V>q$-W6-EdlBY5A0?x(gR^)K#zd^^p= z@xxZ-yCZpB*Ie-91?2Ys)N<7B50ARKunN1--vhm!ta>OCkiM)PLezoCVF% z(pqZ4wV6r2f3)z}-iT>Aw*T{QWy+8#0-qcGNS)fXGF=?JNHcXcNEtj(h9yQB=8o%` z%-zHW)FFJHG=9Ocgc_bNPRM`7Rt3hQHYBpR`6e7A!%JnS`YHh_k=SZ)XHxrj8jdwypB@&5Txnii-x^1cJoS)wu(c6uc`5{#SnGF6n` zJBIOo$S>tN6++6}^`l0TYA<<^7KRDh_49KF1{dX;f+(+^^SmC>l76<7qp}_yY;EZB zP~K?>E*Adw-Fqbc4StTM`oo>24vnaxha3%>hk^-y<2s-_4YA!ElBiVdSwe;*rco#E zX_{b3@u3}2PKU;5;;2$@ z-27OpJAE%x`;40r8;iT|+5Tv&wcG)?UeG4Eam0U)XS8Fk{~Fg?UE3nlQJz<(qha2k z(~-3WJ%OHrB;P84>S`lyQkf4FxphhY@Ujq&5XzRDf;bMHKWJF0Ki?|L39lq4`o1Ac zin1ROi>sHQw1M$dAC4ByCn)CT;R17`H9Ky7oX_P%|k5 zcsd*ZDZK&Zggdy1#_y51I(wm0rc!kX=N1#bbm5s~+0BBa zU4hdvAL=F}bG4ukg?9*8jr$@TNOL1Q1hxlqRVC<4k5|&~o8}#lQ~oZ`WjtK7HNw&Q z3*HF6w}SF$l9qQM7p3Frbq=s)!RD|tlmojVe~qB`%QhTxdTKpN3_NxB0Sg7|qUT)W zJNR^3i#nzU5F3A7V%&@^Yv{`NHbhD7q~jp>GYmokORxKgr$Es(d&wO21sX}4=$)0z zwCgv3#|eI?O={eW=4syLl%P z=Ngf6d7;*gzn9aa+F$1+;?k-Fe-4XT+dy9@yx2zTlKHtr{HIs8M2~{yfhR5TuFqSN z{5W2C;s9V#vL&7ta8zWf*VPni5*m@JQ-W8Mjau+S2Qknv;^(JF$27>*WRk+q?~+G$ zd?*PlPQDsw;pWB8d%~1F6{ZxU;GoN`xK|R|W}tl_cLl?1ur?t*h9#}LUXWqr0t^`U zoB0}&{g+6O{lTyiWiSB<7Hu`s3DO52c#uhF76dd<*38m{B*@SEXE?Rh_k_V($UzFl z-I|luU$!H*5PWt8h?2h3z7%A)0$t0!gt%Q32oe!>es(?ch<67D$)-}NrM3_7w7j#$@hCD>emzx zLjL~nLY~d&O9Ic}?hxAah8jtx%#tO_j`Y+mSTaj0X{#c`rw1kbTtmdI7xdN74Voet z*Zm4cSiO!BbbGfh0-(|IM4=e;w${Tn{+SS}UN``a5_V z#Ol4J|7wu@;uoh1Pulewzi~5XP++V5#3g#2YR^uY3pr%Ok#Ywy%z?YE^qC3+jr} zSWoUd^~*F}DM=H%#RwAR%{_+A_qA@3WRBgVVTdQ0Z~9!7Z*&6k^dR8sai>P3W}6qU zW$~E}Z(LbV&$$=&0KZmX-xK{HWz^K3=&MXuh3u7CHf5lq@_yTBNE0jCAz&lfp6cGS z?Y5R$psN$DsC5X&sq|9xX=svfI%p#NC1~y9Qy!lt`U+br(@oL{FO*t7C@|OkihH&5 zfn##ZGhB0B<$|Qe#w7W$jI9MF23}7VD$_ACuuv-RlFHA!O3!Btvv(3J%AjSQxb&6I zL9!V)gKZq3u8RUlO1k(vg4*w@2d_hx;W@VkNd^HM z5ub7uU-agbW#OlS;Ffb5Hx~kypWiM^)yGdF)(d_zwst{&df&;bjl6MlW%}j35XY46 zGE6CB5GG$0LUSxK2;=2jCR`O06_3R*Q6Zq+j}ql;sm}L5L(3#2jV#so6;P(D{U||W zFhKtoNj*1i-U=9{6^Myjg?N23J}{4Q^OV@#Nik?Z6JSTU+0^8u&Q_W3PI^@JHbr7{<8N;`ozf#0YjcI;S=@5M;An*7H<&dmeU+<(<_k6Ql3~uGBo0aHmvoJ zb8Fpd(Qp!1u2rUMf=T|e4n5d74~Ud^Fs_4e|M&4OmExyuL@u!1sB`eh=H?Gvs&n#~9uEdz6Ae0tZTw4QtB|@Sj=ei1k&u2(2 zy(3(hep9f;{j^5WSg{}UwC4NIUUuUNanS0KbLUp^RB{K?XKd~<9xQ^M7)C++nX_;rSH?J8pS!zgil3?GfO)0SGiE(~`( zaL0ptTRF%_xWiQ}FRlr`{%7+bcLjCO`?=CQh!W>PvOqr=`H{oe^r&*YjwN?5o~8`l zabd}s#DTiu-A57!_hh;AP6vOVmm0V)kA`SgTkAy8tdeHxhJ(dv%~GcZtZbraS4|Wx z%7=!h1{Mt)DbI-v%MC3WmK<7?mlKpuRFLLGl36Owd`NR5sf=@fQGYwO1?NQ8OHW2n z-%Oknd7+}7<{FwN?If8rM^T|^Qs(x~hyZ_uu9y+ov0o+L)9LWX-vc^%yOJ#{H8E)w z`-u3?_I=kJj<%`N>-tD@A&1+O%xF`ktUeqq@KN!cM~{0n#bQm!d&s$3-{GjE_8*{W zwt#P_vW@xF!tP*Hy#E5OTFwgEU<{Kw)De(lwnzx&hEb9m{AF@OIaVpj4UZ<_Gc`y} zEJHd_R;VOdF(}|FR~ESD{wk{6F4uDY$li#>bT+t){k0WS?*;MA7ApS1vp13jmR75$ z8Cr$A#@$3_VF;>jHQ1zWQ&xG?K^BcNKlKoEl z-6$^!dlVQY<-!xWS0Z-uRcr3JvRu;jo(JLJx`o-~;Q#7>ru6+A>3df1_5bXDZLDlf z@10rF_jKv|^;nwATH3m-Rgp!rOPIHnW|-DI(RvK`^3NVUt{D1qC(ec_O4yM$P9y=x zIzootcH6|;{@q{pPt(~~-p-!VIt_62tEgebsN4zN#oPM}^akJy!ws#!j`Ab8tow2S zvs_Z(MRtf$D<4o~*;_HjHXO>)Y$!MQnw$yUIonBgf)raVK3~NO+-1cMao-BCf%Ln< zqT2voqzNr@t48QsowQmvu&_0tT(qH6 z19!9gZ3dvluf_Y+=^OeE7fM53_`IeKa4U{DZSb1_PpS)Mo0 z5%D>xMIhxGngQCr%VrFgt#I#D_)LBu_{N$VrSE#FFJDEgq&Uk1E6Ny_)QBF`LZNqB zOGG=-)I4NM4;cK5Yy(0`emb!4YT{P;(01LrqOU*6hj*x3Da|erv2KOJPi@*JWo&MN z4-)aO0b)`5RDx293;t~d1)eqd=NI5SL$x%|Fp8vsM8yAfGz~uT{}xEUBc(?5-j}~e z5t*YjYxYL+OiJLl;UwRnn~E&A_i_UqL8twQFso zjvB&x9p*>7m<)BN6H&XokH60rb9MTgzh#bSj#(R_+LXFv@ODZ8_gkZg$@f>_I1Gr& z5FKLovV9l@q2QSq5Hhxc-axOTL$$WXV?-cB^DW0&qE9VWb*jJ;aCdSnu`UPn&w@_y zvcG%Aljt{ZI=C|*yuy_pBEAG8Kz$f@MM!tUIDOl*l~pnD$ur#}G+#~{ks6piLK8G> zR;(*v>yB5#b@_;MA;aeK5d{qAPxeOaCWUW6$ijXLr9bGYVh*6%N?Sn)VRCvR?t^=3 z$)|d#Y9CXK*bUVEdW18O%u36B$4TaW#~&I2Sk^ei_hAe)KEq~|k~og4O>aW0A`IuK z<;c~rSmes?{kdGuYEekB(+)45akvlTQ?a<|m}PRQvCFWOVe^&ch?u`W-(udB=!@)J z>2!!ky;y%4ln;5)Go90;W_|pL)qS?4zxmT~BH~dgB0gg|;E#e|Mf$=>ImD0$Mv0qo zVR@GpWYbduM5f1 zujO4(6TqPq#yt1vF*=k0^?JQT{9zyNqhhYcJ`7o|_tOGBa5TnN(w8Oq`}(LfAJuoi zd@pI4$}jN>)YQ3*%Wde|vlKl19pIhsry0LFfv_-EymC3nLDL;ltPD?lR%&JIF=3;| zcf+1(-K0z{rnIS~vyV0}w=sNYlguF5DzWP{YU|r=G+?o`J%}Z5&yLHUgqQS!nl*g) z2~Ai}L=B-?x6M(Z-?^)M)6)(Q{TgRTnhpCU$5Pqi1!6NVb`&go?+IGAkCESzktm zHncv2bPl-t8u;Ljeb(|ab~o@z-_w6*TiMUGy3#*?1V*cszSkp*NJ2HrUyS-tt3%5> zbl|zG*4C4o(^Y~AeP2Dkmpe8n&$y_9ax`U670!}d81mW3i?VEetIFWt%Kpyg+l~hf z{)cRa&=x6r-Sm^_^^xEmg3gZ~$w$!7glddo4-Q}yTPH=aQv-K)G*nCt23jR)Dt-v# zE5)&wqTJ=1R2!8TLw*x`P{8up>#b^W_9JzVXz^DD{rbF**PeH3}iYBGMs+e>& zF54TSCVkW1NTP{9ihC{g+cJ}>#FM9yg5F=I+N2Uxo2E-XO%;?>`jK-E1!}`OqVydK z+*(w?kjAio542uACKKmE^h3+gUY24qj!0(J<=7u^TrFXBA4{!ANsbzlWUAVDm!8s$p;BgB}qEauO&a~s-GVeI$mi3>657d zNp^ER;`gRqF*{TXUR_Pnaf~H3dSdYoqo#&RBUR|7xejrv*WfP)3;Ql;!TsL9M+iO8 zJFkMf=EY}(?*VBSgP?=HHQ-zt=RI~uJ5@Vd^Xu+&`t(fq&d&7d1F0{IDNueq zLrm`1Nb%0`tjOl*Mc{e*89DdDc#TzTesWR`({sYl9}qBWusB)>_?U&nNPT}-M)$TiI4xy5i<Trw@??p@)3%%hEk`)}UR+~#Z|FE?kjSFfCKxg;lUgCOP0Id?&OqV&R z3dxQAce#nyP&u(fAh!)FXApl$9>R`x)JALzGGC*Bk;Bc&?};G?W^>VfoXv))Or>`z zD!f0gKk^RD8wu^lLJgUuiWZ4gRFhba*oAr>esIp2%bN7C3tb_uCMlTJD0Y;?vprhw zj-VEgD46iHRe&Cy+)x%eC%L=w7WBxt;K08n4sp+PndYFDDqRl6D2zje*iuv6oF>@5 zc%LumkW-MenxokBqO-RNd0f`~E6%U|d|*FuD;PgeeZ(07BtNa<6&%NHf1tk_QMpgM zJ+v}MBEZQE(E|d3k&37CRk7$sC&buxaXxDO1B;B=bj?=BQKBCmlv>G7zE^A*a z7eCU|qPbu<=2I#OqN*7~N!^9qyCmW0;cutwV>n_oyjSu~EA+wFNt;+ivgzWFJr^k( zo;gIWcd_gKXX)${XQ#s!$O* zSynmeNjnJQEz0uLm}B8hP5P8S%N2R{Rc?g<%kaTx#?AV)Ernxw`0V;d$``pkbt_;P zQO*}flaDgIRpe%4(%3++iLXM4^W~cMjJzIP)hcS)_|{9w$?_Z#_rr|?fSpBdW4&E% ziFmx5APqtz#yfBAtE&3oX4M50?L!cwp|o~5g*XxMJkDN)xUM`IvQ6JIYBAL;KV}1 z_>(IynK-B9ZpGMCcP)i(-X(B2rbY6JozUJ>zxV2$MZkO5b?yYX+PQ6dCTekw(5+m8?e%&#O)DSa?>{PtV>YZ-Us!WLc%zq&G^iLf&<&_WlJG9J>a6Zzl2mc9kl>A|G@NE10vR*VU+V)yd`lN7tZF9)VHLhTabdPZuBd(5aYf%B zhac$iM~NfKE7Gr1j@;04AV5F#!6IKYZzM-R-6i!eLtc=S80#3B_SC+ zXKW+0?7fn_XnI=i%P=!}nl6&GXcRK+n9E@ok-U_%YLVEwNu?4w2@0&agP}%#`Tu!2Cf{`OK%jA8DhOwOdOaSECG&%7}s zqFgk2v$t*N*TwoV@YS%-MA@M@cEK)9PPE%wB14fCX<^EFT|Ij^g%Y|Og__n`v+|@T zB#a+CY^cQxfwU@@({Dz`*KA2^B5juw=%<(xDv-8oNZt;yCXm!px0hj$)}mqO5DK)# zK7_hpEEwUA8ESv*tDSTr>tdPeJ_7`<&r`3uo?YuUa(fRr5?rm(yDGn)fg>@f;<}#4!_&Z}miZxs_33XQq2UbhpKQ{Z<6(uWnfmPKpG5y;c?u>W@S&;@T`=LPSTkzOVlo z)m#;b7Uj76>|J5rTD(4eB#QdFbeh(hrjw@IN!F5-L^hVbf;9s zK@wsqh(>2l59cRMebA-rzi`Jg-n24rDBL=(1DIIXFeh7Oq+B?vi6j!UK5KLH=q3L zJK2{3xq^!&e!W|LMJ-d7b4lcG?mh^s^b?i5rgh~0WM?0Gd*WiVDJC>lk3uS0!JXrq zA}s2mYy|ndP(vo+z%oL5*!XR@!xq5P!c zzhtpSxYiaIk0iLrZpBSMwv+9MuaKWVSFcd%0DSj+yIS3NkVNWFD{hvfD8mxQN3`8z z$ZcGmV-E7G6CdNj9052AK6U9G(tKnYK+8MvF0rBU21i>Zs$eC?8kGaQm(Ep_1l1Yk z53G(JHiNbpl)&v!;ifHPC6*r*quG+AYM~b*pp_As(YL)&JF-bq6n})AQSKJeF0R7y z&zR+1C=s;wx(5wmckYH^Bnk^u!ueb=#a$ARlsKUnd(#T6z-)!>D)dV`P8Cd(y_2 zl%MkMrL7gbz+-02Ari32gP-_uXWFn~Rkc7hIv2w7%p$n2Kd6Z_mG9>)RZzjCS|sT- z-`hXGPUu$`NN;gp=SSidc4yB}PKBtK#rwp0grGrdV8V!yDZ^+;MM%DD4w!rQ^@6 zb%2Xe+w`hFnAd z7A@(aiS^hrX{bwThi{b3A*jQUU5}YTyF@y3mCo&*pPa+1cv>||IYtIX15VCpMRM}q z)9xm3OnFIls({ECb2k7`)GfKVq9mslCFoOpp`8j9*va!M^J%j>&mR_yV(YHYf)P z9Jlrc>fD!QRug?7eR@qc)|c*LU*1rY9l?<-gn_GC-xD>$urTw0nhP^$V$lkd%b7mD z`L$uU&3@p8Yb_%J#uWbcTk+_W5CK`5j=<%vZxa3ThKzOmp#U@W(d|zfDFVTaW$niq z8YEYF$z`X^xx5f_Yac%hbx?Y!B4w&%eb1r4SNM+}K|v9RA-G1ST%-ND&KTtfFURW` zS#e@-Ic)yjvqIUfBeah)T`gURE4)my=4Rhp!a$;{8wMqi+IcJocRNFyCv6Xr`*e>m z(kvYbw4lgXF^-9QZr3Ijr_tc^8|#_HylJn%*PE$xm7Ol|sQ67Fvh1+|Cl`07(LHf= zF(kDlm9!7n=)K`Aa;zpn;xv$KvTUtQm8UuLW@$c)a+_GBjr}5d4ZyJ;kBPBtSKRw< z<-{$P#DyPP@k1H@W&UQK2HQYhX4W<^g0>5;L`{a@0F_`I>dvB<`yt~34y9ou=M z3pouSrHx45DG&D@BO{ZeiA*h3&eS+iLQoXbOUQahA3Dl3d)z;Yh zT(+y3t>5R_l%lhpv9v``y`O`PE(W-$b>C4td?8Zt;PIk}JVb;yyV75EO6(I{Yw^G1 zpMAC>^&YmKCT(ces6S)DH*y<^Wbrrs*!4PPX6)X^i2gUc6Z(tL&n^4_?$qQY?OP<( z(Uqhsjlcq!;Ea@YOi_BIvt&)PFuesCJEI_}4p3_s@;u*kVD&)q5i(3}RyA0vBVxp2 zxjc;d5#PZ&Vl7rer99;vx)PQqb14?O_gxfZb8im7d{#h zPd1lM5&}L5A>Fu5!}4jL82b-qCM36~^+HU8U_^_{Z&bL%L~6V`oTDn+pSso~>;;Rb zG5sdOL~0Gol`!4JgN}MVW7G!TeHt8>a5Ea2j&(MC5xdsE1u}GPCS@|uy>)MlBYG;J zXV6Zqf};zWA9}VM8vAqp&4_f*vXJe;x%li*)W`o%hIUouvkd~_ZT4nRbHTg#${?7L zk?R>kW4Ibg7Mq9dk?_J*dTp)&sULBP#V!XANZZztsAdgUZb8ySDp|-d`dX(MU%3jE zQ979=`l>Qbvot@Pu=%*2khxB8tJ>bK+SbFFZLjT;>V-?j-Dx_LNq;L#Y8U;)mFUbm z8Hl$()1mHCx5VXb8H_$^&Cz&}n#UTwQmyUy`jkLYIV5|2E4jTg1zp5HQags`y&U(i zjAQUFq$u-xZ#-paLjMo7In=Sn$@6~Hr+igAEQ#mU=`~mm{pBcB&Oy_ozV@1?P^Vb3g*zx7Oxf6_SGfw2;n&)*;2g9Gx z?A#jf0HfiL*VYVjK?77|O_J7Hw+IH?oa;Jj_p>A(w=9~DL!lBF9PHb|A5C5t)A&vM zb24%IQs+rM9b?~%-QFHuCifIjZhmX!dnDSpy30Ez8wl1Vr1Ztn9s=2Q9e z?9ApCMNP{(zHtXT`q(H^lR#6rq# z3o>Ow4=2;&mE545;+?ez5(Ye2(Fwu}&W!jc1-qfqNxzIe*MNKV-X{e}h5R`uoS2uh zwS_42hjTMM{;n`GHMIL!@1j5XzhIS|nB9_34tc>njl)L_PG>EJ=J0MQg7H=zj5H9= zZ7b_P6MB@3_!`NktP_X4Z$CF#_~-Yp3~-g42?*C(b(D-3%I;bvKe-_=FQzSd|Kyc! z4{K(oIfl(ra#cPIB`;B+v;YK>1E#qEuS-eSmkL%vT%Q|L$-jjpoU8Ken^&XqSfM>orW~mb$t~pvr zkKBWB*V5sJ?v$hV@HOk8sC_!VX^2pY=7eL!VVIruB6!m*xk%o3-Rz^pi&b^RK+{L5 zq>)}^3biWd77heLQoeKs`plptRlC_sM{Vi)gq|IR12-KLaH)b;u#yZd>BpKeOr*H>57l5#e1x(gt9rxH1W@;BKxWHNA4YH>DfgA+K4TZ9CcGx5FvtQ zk|#1_6TLuHFXkV`s1;q!!>fqRv4ovMaycu%-SQ(BeQZ^*$O(rm!@)~Uba%~_rq|s^ zG&ds@q*cA{A`%?&9N;k5t2E~R3e5}d-5??Z``6$8E@5_C)Cw*n}#(3zVB(nkDM4Q^w=@F zlA^fI-0e6I9E@IT*OihnKCODe`qG)ss&A>oLqb7Juj@ayEV#FXu!3Hb<*cZ+DA8k| zNLh{B|oj!dgtu~P?+^-O?ItO&c~q5)T_jL#y+YkCFacl7dPilg-o zD;qx&rh^Q^+Y`t>z}Z}ume&gKZ*S1}N5r(Pd-FD%9$LDi2$Mb`bgc=%6e68c%zc+3 z#~BG;xJ|x1=GNik4KI%&{==I@`lf~BFsv7gYzAc`9@A02H$s@VUHZ~^Gh!cnq>Lp} zo*IT6y;kRnM~#Bv_D2iq;le*LTRt{f6%>jgE}zF)5qH7&h4Cz7go7ExOsrL+SK95a@z)xfwh86Nr*i56e0WjWdcH0Vy(ARZ@NQLAR z@q0AR*^D_)h2P;Q4KDX+gpfBsCiim_#eLgE3#%7m0jFY8SOxMs6QzK?n8V*wsPDM( z9CfzOUM80BdU-XL!d_B6A@elAnCeUVZ;lhHc3GbWSOH0Sl+BuE7#i(}coyFa)}my; zt?!$1O2+Pw!80WKeL}SDY`?9=2xnC+mvo3&7^79b7DHJ;i^~AWV$pn<-*Gx_w(3N5 z_PoA&m=RyS^jY3X_w?}^iAXi%=WUcFx!b!9e`F4)8XVxbt?gUskn&l@5tSjj!TYe$ z0(fwW$B0bg8MzNTy%8Q8HMP=rtBg%-EKrwPd)TADSGU7$Ijj?qGd)7&u1f7&glG>A zT!PGg^?_u0K$H3}fJX;H#%CUp1RTGfFN#SE@wA;Fs=@IF%OXk)sqixC;nX#a14eiw zflUM}Q~HCK8VLf>IXZ|I#E~=c;cJ)%;fuws&2F`4mLM0)lF1Fqmg{I*?Ylj$hbu?- za4-K@T9RbguF7p>Xx2>t%p4iWVAt%(jPeJ)V4R`M7jl}$e&U?t-;IU2PqzN!3taNd ze-fDCFt%;IVCO^OnGn#YgRsG{H{q0NlFQFz0+oG(P*ks|d^RrCpBp>#?SeL&`-ls>-{KrK4JW>${92vAHJ};y5SYOGXRnB%REX z4HKEBr6+SWQjr(O(N#6?AE959eGyabs<v*Ly8MfBp3R z=#8cCO=7a=Lbh)W&7=B`RxN4DqG01swR3JklSIm>vQ`mI7GXEJla%t8b~TNbGt%ie z=f2sIZ-MwA$JqA_2Zw_guayQItU%ycd8OGQY-TMd8bhA9^cf(_kC(~W-#~tW&rhX& zQHB!0Z&qEzObG)Q!FnuaZ_yZwmw$?vo^X|p_)Ti{)A8GB_(B5nTeS%1R-77{%Z`v2 zR-XlU85&Q@iS&kS@r@Z3?Xf*m0x?lL61{JYPIZSM*x@u zHuvOFj*;0{G$=`&xLLygvXNi>8Pq+;|HY~g6F0Olr4Nrq6|~%bZgJ})@Kd3fIh0uk zv1)n@s~e?LJER${QtfhF*Rpx;{a*S^V`2O8Q#l8gU`@EG z%$nD=*EBK9Ej2^g)LXmB3;M(Pp=e!n`S`deO{Fi>FGDADNXvwe>l>AXqi1DHRvWqR z_b9K?oSoK5EPr34O={l_)eG|8i5?$N3OV`on_v8agY#t3b3^UvsU)_!E`jnHBqXHI z%Dg=?Hdf15`+ zU+={%SU=l7A({w~X?C5aNTJ;gj&WV$Sjxj#zjtj=2zH=n5w(e|y#)t=pz~)Xqh}RL zqk2d6F8LeWD_&q>azVH40e57UY5U~rX8q2QlKfnTdG~6u+b3S9uK2Wo&#^ap9KDvg^VMrBfl9v1rad&s+igf;Wh*CAD0XjYEK7P9<~icx45xRfa>Yn?bhRww zW*ap@KKZGJy2dCI<7Xfcq;7~6U-ehayF0E+lwGd?E_wbXp8!*&C6#iqkHHiD7`VS& z9Xw^{l=sBkU}SIF+YSJo8NFD3rYx*AO6bO|l)IMzlPXUq|mlVc}+I zrM=sVQR=zTG>dMI(g$_dPq%jOk(9UYiP&2_P~U?GL9}w3=NWdM@Id<|H>Ql^X>d6C zDU8>D_nasgO^?n__(4STciTlnBR)W0^T`TB5WNH36=&_N#RrS-N;MnL6NVFZySXIr zj%ig|Ur`FtK>hY)f!gA*jKEfEJ$D<@u;t94)iv&%DZwUVI_b|eSwR}CP@?&eot^OB z%%w3X-9D`#AbBdAu$r_YP1mT4h7`R{!E;73tB0VG+#a%|r-Sv=!~ojeNguKEg@k9u zGAyMyR5yz*DWl*=5C%EDN|n{bba;r9Vv@@qxE*+SqtMFD$_>6=Y`UVIX&b|yp|F(q zL9pw_{;lu2<2!v1=4D^udDFrl$|LiTpR#`Wyj22Z@wQAGL@N2tKY&_on>R_yGhkhe zJu!fy*KQjbT=%vG&3GVWR*ISXe(<#t#-(;V)q;@^qYbI+2aDB`Anl1L-Aue&`0CJ$ zk7_sLs`^NBJ72i58A`sgg{0MQiXDElrFHfcQ!QO(^t3=CoiD4Zh>Hga`Yy_S_uZD8 z(|!8%pebOEQ(X*~tKxVCH&M&c?2W||7snTG<-nx2{^7gaLH9fXe(z%ELoMh4-PSuZ zbN*Vp{Rloq&$?;WDh!U&fC#&~ii#w+gE#K6Arym?T-#=0H+gKkAES=rrbJBa-f@FEpSM1&%0o`XJl0)k7NcIi83PSEad3A#OJtlA2UpUY>I_5_hw}F zHCQ*b41gr%R}a#;?TdZ5tDki+<`pN_{b~N3#us%l?Qds}-l$&g=moklEL zvDN~4P;^OenTPJLC`Q)4)I~I76lCSTkRF=O_Or)?#0nkNx`#Fu4wA*t87!Klx}ELV zVjO(9mLl=y({LvcoQbF3)BQE(IqN|66rR5X*96xz+Auzw+*uH7ruPSt-aUxGLnd!x zMD4sOB1<$HhKpxF-d9j@et=?V@8+d7;NWH29z!CgQ@9}Dp{Mzq*RNb?h(s>a7T4l0 zK^d#G2P@vQ`KBhV%RGc8>^&X_7Nm@{fI-j6v|Uq6YZ*)n8Luw^V?$!6xgSAz^OJmG z@ZP0wUwW5{TTDU@=oI%qU$7?yX@{xocPOjvvTbguYTZji=kFN>MQ*hzKoHKrxT;)I zu>(5@2ugR%^u2OtMQfRe=03K$OBrK=wjd-Izr-~+U^a#DZgwMCw}27ddsg>Nb2gO?o1H=mUqQyEz)>!k#pfl+CJ&d7OZy#GoM7zT-%9X?R(i)?4D!HjrOBfr!Ak& zs;Eybn*oV`q(ok4aB)Rpm->g(%R8Y*kHb8K%nE7nt1PT73!Ii5m`)ub()Z(vxTdWO zNIDEd$MY8KF7aX$D?&Q(!Y z$XB8P6ucw-l7VT>as}I+oLWQ>^YYZcp@}xOC|2%FS5tc+A}V^w^QCUtGGHMsVnk4r!{I4XGQn$!DjKz@ za-r)*i?Xdf-rO_|NSlN4=FNyVrms*FTsGSQ=%%wc^njk=ASrZvsN_-Uj-x^MmoqW8 z=&U6o7`A8uO7(ZMWZij9KB1R^ldRfgI{77PXk*ib=T;)zV~>N+x&HmiIkw5euT?P# zDD9kH(jrlNTlcM6Z#71{n+>m={fJ;`*O7fSade>rp!uJ_)B_%qzIt;sZX7gcm&yz$ z%(!TcVXW&M@y141ZQviZm^cnudVq97{3`7}=W9ezqqlz|^=o+E#4NpryamdrF|_cK zrB{q!%!f3guX&Y`FA2~$106*1pPz%MmVn(+Pkz;#$M*OsD_|{G09G?KqkUfJUUR)i zxho`stMHVs zoWjesuCX-sh_3s6*}rJ%}lzoU$0VMqO8_hxT`$lxT`Q;vsh=aynj=M1$Ua}Gjg__YkYB2 zcEG$4G>7N!e#S>--KLl74v)swamkPENF-adzn*EFC5ARftM=9@BTx zbgUJ>)A%aApI`GS2^4Cop-8z$q;y2|wHp(A(A#3@HGy3DSeM$#ho?UMyKnTbu@N2E zQ9r@rO4!cv4AMU9eF6n?8TnFFGek54_B^GU^lT@YUsWQ_jhZhxo2DD>oVfRCIk+9i z*Q|>OCGOL$zV_p(1fhCMtQNMG-qVhG%}&ylDRjM;bSMG^d|UZ*@{;atq_*&Zb2u9l zU;%bdhB&9S6d^$w)!XoX_F@L_q{;|LpZu6B=g7qM*^&|;ySI)Mg=d&};`H@up(r0@ zJ|p+II{UZh$&Z69^Glnbxqxe?E;E7bHq(X1i z81F08GS^7znZ=_=?lOi{t~YgPIMmCA3o!Oi0opU&mke`^_vVvMTlim{^Cy4jL>{N? zn+WZ-Xs>ikpp&Ore6Bj$W6V#Nqa^~~^L#X8A|;`sCPO>foz|7H zm3s;YGwKQ3bAx8@+Aw5uZI7EfidQb~(owMW6@Bh#hZPJ5%@n27pB~yE-g<9 ze^BlRcO{++_X4xBa{_t1xw_53e$7j#w* zy{{uwnJ`iv2N>U7F?n0}HFgMCA}Usr`d*YwFvgMkHt{qzT=5kHZArN(Li$8Ti`qcHi@Me{~{2J?s`y zh!;EqW0{at3biL6>OMb6U;{ZTChtvrFRJQ&e1MuX#UZ%nmi#Y6cfV_Ipmn zPfTcS>hzc#I}N^zN(8$0cw|5#o(3|;oguUfRS%d94y>*<;-Eoe{8GuH+Nhsp7i3?t zu7ljCRT%Z7D{X#Ps79w&&^~9TPN|m$NHr`x<&-}YGW+Pv!Ry#?!_S8EYp&RRjeB%H}-2Lc0W)5`_EUYQ`yqghgOsw=h3s| z(b@*JQa8H4Cfv=?y+!}X?sWL_PeWH=Z>kV!k6-g-pK494bv{Go=UAk2Y0C9~ghZEb zCHmkAhAe$V%*D1lp)rCehTYd+YP70vU(?I2ddxn9;ciU1;wEJA_qs%`Q6bwmgS`bv z9yvW9)(RHZz~OmVJT{V~xX%WQ7CPO><|SJ*>RVN5#4)BmXbb-Oajmo5j^vhUtxG+f zAL`*jjVXA;JDWPBqt?m3Xj~8sjD#tth{9XLC<&l1{moMLrszt)ov0kGe-m3qk!K57 z@$k+#S8-}PyV5aUHBxFg6-&xTgf_gt5mhzRii64+>aVuSB`igB@NHs={TKk{=w;9s+C&-Z^Fc#C?$qox zT+uL6d`ndo5S)05QSC1(kpjUbwOc8RaljD)E>vr0utCcdjpm5YH0)_rB2uDTy3z3p zXrTt;{fUYZP`|W$p=A`^uwIL@v7Gwm@m~ge{RV}3T17{3WXEw}gpf3pgvRK25^eGr z$3xuEFDlP!8pm}0&6xL(7i+p7-IBXaLnX4BZcxAFYB*4Be{8+*E=s@3L6@-_&&VVI zJ(3u95f9l2zq>Qirk1Rn`5r(7bYZCOtQ?@y)$Dd*AU&ImJ-t@1y}1ynfSl}jf14i$ zyrk6cJdRvq>i&_}@1DLW4bqg+|1*JC#Vt&gqGf^LWI`9}?(U>6%@NNdT_~bd$~*1pd^f#FJyX4xbc;Bt=~VJ3*2|rgp4Hy)-WOy`%}r=;gq+|s z*8^>#mAhG|yu6WrOm!sXL)(8NBr_wt6wbZ1F`QEd(Lp4+wcYqSX{x%ae2L@ow_j>YcuL>UAsw?Y4@obE30; zF&-7jn+a0=`g(B9Ns4#1U%)C_?BVjZ#zG^EceKQMmp_5{K7ef+E7W&-zoG;^q^4~m zcIUUO^#Q5oz20ENmaMH=zXwwVhWh0u!Zghh9BIxW9BoCFh3Z^kdoH^f#x8wtLdKn( zyYKIFd||U53T_%PrjxxiUF9c|#pIQF-odtQBm+y?C*x;B5eHT zRCojnaVtDpdXM!{!)!T$SM#@vZOiFo3ywXMW&jX+MUal=*A`e^=i!Vks~~qMlp0wPSa*%InP81Kx#@&p_-n9i)Slj}jy#f6>hl8hI zo>yHjQxo%5gG&i`8ozn#9d@c6-j!}}wJj^J$Mtcr)b8S@6yEQ;t(B~FH{lYb_@Io+ zw-er|jrV*tNTJ0?*mWdJfkW^f@hovv(ak~v$0nJwG@T8<&-^l2cjLYXIV8}~-O)rx z{d2YrZhv&=lf=)VIsukAH;pkP5zL_^S_Jehmr5!y<}|LGq4OqMGU~b)7Y?CUAN9C~hCd)f}oo!Y6>CqZwf!}$|} zPklA5&VM3aAMT8FS(|tk6Bj{trorbFtxDcK3EG~x1+mB8pASMyUuWkq$4*qDu9@^Y zt%}HdyDVBV zMNWfq``b3jX|44f{N4#R`1uYxHf?b=3Gb$5NBwyaJt^qP8D|@^Dv`z;mNih^`3(g~ zMvM;d$%Iq-1Knm5mroEACUzJvR^u_#B5{oAH7cU9zG&0+0ufzr<_w&X?Yf?gQnjI^ z7CeVxX+OMHM3heSSBQ_(@_8{7h9;E0o=&;n@7LLP3pHmBO}xB0UUk3kaM7V}X|5Q%-M}-Z1@C_{B=Pl{Op&mBt-7 zLHiiLQl;MMlJI!UEO~y61?_KyxNGs?U@r;(`g&xVwtISmI=VyiEcrHL=iKNgVryBE<^7L|^oXSv6Qj@f-1FLU^f z%Xy^VB8gr*1(Vc~=GLW6b0-BzgGI$;Ui#opgM=aF*auE_EBYe|>OS-xsMTX)ouC*Z z?W9FqML$Yv1|IoZ8cfIOiHJJ0CMveM%@Vb^WaeKkDeaW-wcsxAhD*AoZ1=OZ*2fEs z@u6`H2hoqW8on&31jiU}Zxr(3xY9U$4>1ugT50Bdb*_Bh)sfS9g#S31dEdX2OzqA| zq2H9Tx2EnW@Ix~m`r6xQ3)~(iSJK?d$awcTzr9&H&CUr$-%7Wzu(-Bci1Us`<>{x0 zr^#|o3OywI;141>T_N?9m^YhsdpcxyZOe0u8gGu%Ry8kyLLG}gJSWMCGEl$~ZB?s* zV*GZ297jQJPXp@_lez>_!D@l*rSD~(cm|{#(jG_rt z!5o7c9!HGmbpb0rFC#ct@%uCQ;8uzw6veTb?6CLi>+ZEV zwa5dtb|0bHe7}E@yisOXkggd%V{pJH`RSFxJ*2c5AYQ++G4x%*&MLj}g!#AB-G1;2 z%(c+0|KZzL#!(Gv3G>mf!hM?N7>>dv;k!w~@Sc(Ie-AdXdJmCbwMY`~6WV0l)cv-# zb0pU|HAH`oyR(yfok4Eo-hUpor3*>7x|>ST0*PF0N5zXayJv67L((np{-h9qL@u|# z=Dip!*?62x)#sfU=-YT4PgUft7%W+P0C%~vM!&J(cqr_$WwjbCwby)N7#tqUxlT2% zys$0*^~A)k@8}73NneVhLCm}9KZf^qEFXP#iYXj5ICi?Y3qQ{?C z(_1l3zcf)uKK?sdpoLnjDnRMP2?R-(kAH}V>WSQ_tGM9OF8?8S96+5<)SfYw;&%F zd`axQM|(Vv&Z9^To4l*xy!*&kmowtu&z*LMXZOFCXnI>g?!au! zy1o}&jMa!0A+8swEs+|a9dSF}J;)z;Ytn^?c>-7rzeVdJ!DSx>k??h3*T!aR{`B0V$j8V)AG;-xV7GW%KwV%;j3p3;?y zEUfNr1zH7O#TP!GHAj&!ZK=htx87ZXn7=8OzwiaSAsdUXgSrg5Ca|=qU8%`}>fTiZ z^PyIdo#l?IJV`&Yufql3P=KW$5!S`#U7rgU4$h}26%&G~fIIu#0f5Qy0NVbb zY!_S-4BvGIR)4`73>L&}jc`L;$L}J+M8skR97^kj&W5@PtXp@1yEZTrDDkl@D5t4g zaK*34&w7I~D3<-}NY6-ud8vHR9NwH!b-4svP+wD|`_-YGz3oEp^2getHl6^Lkmzvu!3?}Y) zed4`J_8IObGUtY2nxA&bcfqq)@3UrJOrFTdM!XL$2-bXhkV+GdsOtt76 zaRjgIvjMV_>vCTV#W$?UjwFme5*7f@OVdiQ6O6{m9qIkykNItD8RIE>6GqW}C!Y#OfQ`#D619L$z zlprkZG~4`+4b?|Nmace|N9^9}ruEB%sJ{(M;vUHdBlhW(NiQTIW~|WX(Y*2oB(mK0 zseyZ>&mf;7+ah}3Z>J-^OPu*CR1%-diZT>sL_&AmzP|f%Fl3`2XhW_E=37gyH!n@H z*-pMQwAMDv**v?evPkH_+w9fx)jfFNR7<|}KGSb3t_wl)A}dW|4;^#lq33g~GZB(y z&(qv3{K|PwXHAE1olB&b7b#gK%aS2|VdYyIX&~KysuM9<P=s)Yo2NHuSk=uJ~S~gCotA^$)b^S&9q_W4c9McPm!UlRz@69#I_|E`}}-s1G z`r@|s2|~`Sj1Mu6mz%yfz91;eBO5 z#^v>x%@0in0r_K~OyCU~3?gi%ADY}NBn1lt!;Zm*hJgGzPzJ^f?ky|~{449*oBw2m z$@F`>`_}L6rYDuFnWK{x1k4OJvNNL+pkilXV_~CW`VZIyV)_cRGf^4Y+cTS5IXOF8 z8M`?D6>xU9|0@7-GPD9an^`y-{Y76TU0ke8UvX|W4qjt^eluon^Vc0054R~ZKQ|j6 zvk|`;8#^bLxw#oT-`{?WY^_YKoZYDeJgLACXJ%tFbBN>L9(maLIl1^b*!h|M!HvwF z%^Y9hSCE(OFYL`k^=}Ov&1}t#oXlPuGj;)++L|$2fz2U*+cPzDHM51-n>jN7qY=as z;`ATTEBF638WS@|XDf3n6C>xpgJS->iAhS!DpH6`s;bLM$%+HiCI3P7z(849aiE8| zIKbG<0sxg216asP8YzjhdPo3(Vipz-mNwQ($|@=n0H_84C=GNI_W;O=Stx3X0d&*> zHi}BGEvTwMB`tI$G*wjOC85sBCeoTNYSL2f##;O?X6lk4pqPm?fL%jU+zqIr&M9VV zY-4F@V#n@k47Rb*l-9J=0~@PLS_8!;|KS3-0ge7Emx{I+)L7cqT1Q*e-k5{SLWNBd zDr0G)2(*@j0<8h=uR5s9x+$px-Lzg&MF|@>pf%9#KQL=C2vEfdDz5U6j?$7)ISF-Z zNe!Tw?7#G~1S;r(|4W~4(&_;1e~r^gT~d-C3ew`1)zOx7Hs;{wmX%Vq)zM;ela~P4 z{fh^vt_PN3`!8IQQcx3VH+vlpDK?{5TgXbu*&4r&*Mvg@s-+H47qc+=w{>O3{#sfO z{4ZMr#l)bB;sAiUv5u0sii*7!x4Ef}j*KD~w=0`ACqTx?jh(|P=~O~LNz1+ z=6^MpQ3Fa!O8~Si#MF%~9ZjtCz*5c{3J?t!PEIvVUKevoDRU!PXH^e?(m&iPd}07| zK1neEP+W`)0G0V`QB^i2F)5dZ)MsmQtkbd~ zc3UJ39RD44V6(+ww2Hk<5F_g@KDl`du_%9;_N61mUENykan_U z)dT&A8>@eUk|Ws2 zmdZQR58;T-4_1iH52iH}4i*L$_API|T?^Yg1fHRny{m?AtS(PyhXr) z6<1`(WyAh^fP#anWN!wRF>0yGYGHV!rpc8=F?ZV&+)7eD*|nvt;~lxt8xp(6|o^dOE<$K{BC zqWrYXoK%G%NTF#EX&}tT4h{w;Mre32GqN)~F|dT6XL`MJ*``O1h5JNLPSTjQ*3G<` zcZNLUi?v!udhP-5F7#bt{+0RC$76X++9CGx`%f$goX9D5c(Tbk=DhA>60;Tu83Y)} z1DzwQ%pzeR)*y1bZM%}#Rqln}+wZDY@BGMGyGYmFfDfdApONuD3kx$7dxL>2h|k9& z#v*b$@#Ws-Reo2_Pu<+|hV}2acwWXJ)Hq|#WH3l$GGtiOw~n(ZsdAl%ilEb*38_0X z*ft5x6)1PJ`}=0mjO~w{`cv+teSNt6%fntavxI-E<^r`WXv?a)|BuJY@r_EX536F= z!DS8p26tQ@bgA79k~+ZXyyB(G=EbH06)XQ0*FAm0zZsZ*T!884BsBf-KeXsZb&Ej; zg;A$rpazLLd0bH!l%HRMmWT{Z3@wln5tvIymy{U@AQBI&b|VXe5_1v*i?7+;%8A*$ z&2!%KdL8?xk^e5)G1t3#r!M!Lvc0b&BQHkJUgXg9Yun{W7WZyn_ZbD#oR+Rx@MUNG z?~r9Ye0P&O`fs=kE^g($w`1v|-|?cq)#SU2?kZ@?1{Ozp)|s=re^~5f;9$THN+`mh zgu`mU45Uy~5+fT@N)opcSh!lU<|%{!nu{~kH_eDD=R1oUd(7z!1}RJi?ES{1W&p^WalD@XHLlrtmMOJ*|}sH|3L&yQWB z%pN4Nr1#5$9s@7?N|&Fdu1^b=l+B&<#bA1&|HR5`%f+u~FFWTh(Z&i)M~T36^c0$o zO`8JZd!A*Uk{mp&yTjwGZw@7?ja>%~picAZ)h|NNz+syfSKsrjET zmoz)CTfz2i?R#~p)7K{R?%H9#q^=;M^LU+f!KSih+s*_Tgm1YuUBfJ3>-P1BW=qXk z`nj`H;Pb^9ik&~|6Sio}|9ExsVc##^(8b9Hi715=)-*yw8pB$+q0}(U84L!gOa{4k z;w+kHmb|au@WU!2e&unqd5`xA9KR;~xHe6||EWjl{mur-jP0JEuDseVdg;|QL11BZ zj3d8%rB%_wpzUh9zqdxLIXZ2cz@Z%LyJAf;e>?8^^%gztOMF}qS<;(+%4ELvEj_~~ zMkin*vjg@646^AGjnEnuwac*}(*U^Z9NIhKWH#i6bJ!UTWZ)c5RzrSpwP<2wYG`O^ zY-|~2ppTGcF;rqvNP8=~zxCFR*x$F87z>9bx_o=`Q;N-O?F;w5hdx{PPwz9}g4g9t zEN%uaObVOjJpJIe@Zt7MrB6F6AM%PV*z9J|#4!)<3{dBaqaP^L4GdJw&XqGlA>#rw7878H zje!w}H9$0|_Xeb+^0vM|za;I5t{C&P+6~JX!|wd>cB$3*{w-qXCGl9*NC&1#t z7#MTgp~XYSgZ*dFiU)c(Q-B>VL*$YH#HB|WMX-5tJK@0ur>Ve=`VuntEcd&9XDHiv zJ>xvT zj#Ey^cIVvxRB5|u+Gar}`-{Z|OMllmFd4{dH{48L8m9l^45#bm1J842owK^U+-Y5b z%;TrL4HZ^bjV+r}z8%-twozSOs95Sm{b=h1xt$GbC*i1CMq4MNtrKGVYdDh7XzPTs z)(Nm~Wptuv>jYepQq(#D_S(&W9d|QRV8a-_brNvAIq-Esqi*SW!4n~`>P6qh{r%GU zTI$Jh?yT<@_H8Ldsuq}78CX0F+?W&@CU*#{ox0_`q2cR`nSZADT4-0jc2~c*_w|QA zCPGiUe^mjM9B4<%b)EoW;p`SUAfRlT6(o136khPfD!00Ixk z0EOVpbOooJ{N!u}6C;pZfHxzP2!jX%2M2Jxm_gC%vNFf#!@y>VI6DIaHv { + bundle.getModuleUsageRecords(RECORD_COUNT + NUM_TEN, (err, data) => { expect(err.code).assertEqual(0); checkModuleUsageRecord(data); var result = checkIsExist(data, BUNDLE_NAME); @@ -208,7 +208,7 @@ describe('ActsBmsModuleUsageRecordTest', function () { */ it('bms_getModuleUsageRecordTest_0400', 0, async function (done) { console.debug('=====================bms_getModuleUsageRecordTest_0400=================='); - var records = await bundle.getModuleUsageRecords(RECORD_COUNT + NUM_TWO); + var records = await bundle.getModuleUsageRecords(RECORD_COUNT + NUM_TEN); checkModuleUsageRecord(records); var result = checkIsExist(records, BUNDLE_NAME); expect(result).assertTrue(); -- GitLab