From ac93756801b545747e2cf03f370f8dc8c32f400f Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Mon, 17 Jun 2019 15:19:46 +0800 Subject: [PATCH] v1.9.88.2 --- card/extra.js | 44 +++- card/standard.js | 112 +++++---- character/extra.js | 186 ++++++++++++++- character/old.js | 1 + character/shenhua.js | 34 ++- character/sp.js | 393 +++++++++++++++++++++++++++++++- character/xinghuoliaoyuan.js | 425 ++--------------------------------- character/yijiang.js | 112 ++++++--- game/asset.js | 129 +++++------ game/update.js | 24 +- image/character/re_yujin.jpg | Bin 0 -> 33700 bytes 11 files changed, 867 insertions(+), 593 deletions(-) create mode 100644 image/character/re_yujin.jpg diff --git a/card/extra.js b/card/extra.js index 43904a2fe..60e4f1587 100644 --- a/card/extra.js +++ b/card/extra.js @@ -10,7 +10,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ type:"basic", toself:true, enable:function(event,player){ - return !player.hasSkill('jiu'); + //return !player.hasSkill('jiu'); + return true; }, lianheng:true, logv:false, @@ -34,6 +35,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(cards&&cards.length){ card=cards[0]; } + if(!player.storage.jiu) player.storage.jiu=0; + player.storage.jiu++; game.broadcastAll(function(target,card,gain2){ target.addSkill('jiu'); if(!target.node.jiu&&lib.config.jiu_effect){ @@ -43,8 +46,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(gain2&&card.clone&&(card.clone.parentNode==target.parentNode||card.clone.parentNode==ui.arena)){ card.clone.moveDelete(target); } - },target,card,target==targets[0]); - if(target==targets[0]){ + },target,card,target==targets[0]&&cards.length==1); + if(target==targets[0]&&cards.length==1){ if(card.clone&&(card.clone.parentNode==target.parentNode||card.clone.parentNode==ui.arena)){ game.addVideo('gain2',target,get.cardsInfo([card])); } @@ -347,7 +350,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ equipValue:3 }, }, - skills:['tengjia1','tengjia2'] + skills:['tengjia1','tengjia2','tengjia3'] }, baiyin:{ fullskin:true, @@ -379,16 +382,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ skill:{ huogong2:{}, jiu:{ - trigger:{source:'damageBegin'}, + trigger:{player:'useCard'}, filter:function(event){ - return event.card&&event.card.name=='sha'&&event.notLink(); + return event.card&&event.card.name=='sha'; }, forced:true, content:function(){ - trigger.num++; + if(!trigger.baseDamage) trigger.baseDamage=1; + trigger.baseDamage+=player.storage.jiu; + game.broadcastAll(function(player){ + player.removeSkill('jiu'); + },player); }, temp:true, vanish:true, + silent:true, + popup:false, onremove:function(player){ if(player.node.jiu){ player.node.jiu.delete(); @@ -396,6 +405,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ delete player.node.jiu; delete player.node.jiu2; } + delete player.storage.jiu; }, ai:{ damageBonus:true @@ -441,7 +451,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, tengjia1:{ - trigger:{target:'useCardToBefore'}, + trigger:{target:['useCardToBefore']}, forced:true, priority:6, audio:true, @@ -453,7 +463,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){ })) return false; if(event.card.name=='nanman') return true; if(event.card.name=='wanjian') return true; - if(event.card.name=='sha'&&!event.card.nature) return true; }, content:function(){ trigger.cancel(); @@ -498,6 +507,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } } }, + tengjia3:{ + audio:'tengjia1', + trigger:{target:'shaBegin'}, + filter:function(event,player){ + if(event.player.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; + if(event.card.name=='sha'&&!event.card.nature) return true; + return false; + }, + content:function(){ + trigger.cancel(); + }, + }, baiyin_skill:{ trigger:{player:'damageBegin'}, forced:true, @@ -572,6 +597,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ tengjia_info:'锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。', tengjia1:'藤甲', tengjia2:'藤甲', + tengjia3:'藤甲', baiyin:'白银狮子', baiyin_info:'锁定技,你每次受到伤害时,最多承受1点伤害(防止多余的伤害);当你失去装备区里的【白银狮子】时,你回复1点体力。', baiyin_skill:'白银狮子', diff --git a/card/standard.js b/card/standard.js index a9d78d0f2..21f18f526 100644 --- a/card/standard.js +++ b/card/standard.js @@ -75,6 +75,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(typeof event.shanRequired!='number'||!event.shanRequired||event.shanRequired<0){ event.shanRequired=1; } + var evt=event.getParent('useCard') + if(evt&&(typeof evt.baseDamage=='number'&&evt.baseDamage>0)){ + event.baseDamage=evt.baseDamage; + } + else event.baseDamage=1; + if(typeof event.extraDamage!='number'){ + event.extraDamage=0; + } "step 1" if(event.directHit){ event._result={bool:false}; @@ -120,7 +128,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } "step 3" if(result.bool==false&&!event.unhurt){ - target.damage(get.nature(event.card)); + target.damage(get.nature(event.card),event.baseDamage+event.extraDamage); event.result={bool:true} event.trigger('shaDamage'); } @@ -652,7 +660,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ cardcolor:'red', reverseOrder:true, filterTarget:function(card,player,target){ - return target.hp0; + return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('he').length>0; }, + check:function(event,player){ + var target=event.player; + var eff=get.damageEffect(target,player,player); + if(get.attitude(player,target)>0){ + if(eff>=0) return false; + return true; + } + if(eff<=0) return true; + if(target.hp==1) return false; + if(player.hasSkill('jiu')||player.hasSkill('tianxianjiu')|| + player.hasSkill('luoyi2')||player.hasSkill('reluoyi2')) return false; + if(target.countCards('he')<2) return -1; + var num=0; + var cards=target.getCards('he'); + for(var i=0;i6) num++; + } + if(num>=2) return true; + return false; + }, + logTarget:"player", content:function(){ "step 0" - player.discardPlayerCard(get.prompt('hanbing'),'he',trigger.target,Math.min(2,trigger.target.countCards('he')),function(button){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var eff=get.damageEffect(trigger.target,player,player); - if(get.attitude(player,trigger.target)>0){ - if(eff>=0) return false; - return 10-get.buttonValue(button); - } - if(eff<=0) return get.buttonValue(button); - if(trigger.target.hp==1) return false; - if(player.hasSkill('jiu')||player.hasSkill('tianxianjiu')|| - player.hasSkill('luoyi2')||player.hasSkill('reluoyi2')) return -1; - if(_status.event.dialog.buttons.length<2) return -1; - var num=0; - for(var i=0;i<_status.event.dialog.buttons.length;i++){ - if(get.buttonValue(_status.event.dialog.buttons[i])>1.5) num++; - } - if(num>=2) return get.buttonValue(button)-1.5; - }).set('logSkill','hanbing_skill'); + trigger.cancel(); "step 1" - if(result.bool){ - trigger.untrigger(); - trigger.unhurt=true; + if(trigger.player.countDiscardableCards(player,'he')){ + player.line(trigger.player); + player.discardPlayerCard('he',trigger.player,true); + } + "step 2" + if(trigger.player.countDiscardableCards(player,'he')){ + player.line(trigger.player); + player.discardPlayerCard('he',trigger.player,true); } } }, renwang_skill:{ - trigger:{target:'shaBefore'}, + trigger:{target:'shaBegin'}, forced:true, priority:6, audio:true, @@ -1430,7 +1454,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, cixiong_skill:{ trigger:{player:'shaBegin'}, - priority:5, + priority:7, audio:true, logTarget:'target', filter:function(event,player){ @@ -1599,26 +1623,26 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, qilin_skill:{ - trigger:{player:'shaHit'}, + trigger:{source:'damageBegin'}, filter:function(event,player){ - return event.target.getCards('e',{subtype:['equip3','equip4']}).length>0 + return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('e',{subtype:['equip3','equip4']}).length>0 }, direct:true, audio:true, content:function(){ "step 0" - var att=(get.attitude(player,trigger.target)<=0); + var att=(get.attitude(player,trigger.player)<=0); var next=player.chooseButton(); next.set('att',att); - next.set('createDialog',['选择要弃置的马',trigger.target.getCards('e',{subtype:['equip3','equip4']})]); + next.set('createDialog',['是否发动【麒麟弓】,弃置'+get.translation(trigger.player)+'的一张坐骑牌?',trigger.player.getCards('e',{subtype:['equip3','equip4']})]); next.set('ai',function(button){ if(_status.event.att) return get.buttonValue(button); return 0; }); "step 1" if(result.bool){ - player.logSkill('qilin_skill'); - trigger.target.discard(result.links[0]); + player.logSkill('qilin_skill',trigger.player); + trigger.player.discard(result.links[0]); } } }, @@ -2033,8 +2057,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ renwang_bg:'盾', hanbing_skill:'寒冰剑', renwang_skill:'仁王盾', - hanbing_info:'每当你使用杀命中目标后,你可以防止伤害,改为弃置目标两张牌', - hanbing_skill_info:'每当你使用杀命中目标后,你可以防止伤害,改为弃置目标两张牌', + hanbing_info:'当你使用杀造成伤害时,你可以防止此伤害,改为依次弃置目标两张牌', + hanbing_skill_info:'当你使用杀造成伤害时,你可以防止此伤害,改为依次弃置目标两张牌', renwang_info:'黑色的杀对你无效', renwang_skill_info:'黑色的杀对你无效', sha_info:'出牌阶段,对攻击范围内的一名角色使用,令其打出一张【闪】或受到一点伤害。', diff --git a/character/extra.js b/character/extra.js index 19ad6e43e..e7971ffce 100755 --- a/character/extra.js +++ b/character/extra.js @@ -3,13 +3,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return { name:'extra', character:{ - shen_guanyu:['male','shen',5,['wuhun','wushen'],['shu']], + shen_guanyu:['male','shen',5,['new_wuhun','wushen'],['shu']], shen_zhaoyun:['male','shen',2,['xinjuejing','xinlonghun'],['shu']], shen_zhugeliang:['male','shen',3,['qixing','kuangfeng','dawu'],['shu']], shen_lvmeng:['male','shen',3,['shelie','gongxin'],['wu']], shen_zhouyu:['male','shen',4,['yeyan','qinyin'],['wu']], shen_simayi:['male','shen',4,['renjie','sbaiyin','lianpo'],['wei']], - shen_caocao:['male','shen',3,['guixin','feiying'],['wei']], + shen_caocao:['male','shen',3,['new_guixin','feiying'],['wei']], shen_lvbu:['male','shen',5,['baonu','wumou','ol_wuqian','ol_shenfen'],['qun']], "shen_liubei":["male","shen",6,["nzry_longnu","nzry_jieying"],["shu"]], @@ -27,6 +27,183 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shen_ganning:"体力上限:6", }, skill:{ + "new_wuhun":{ + audio:"wuhun", + group:["new_wuhun_mark","new_wuhun_die"], + trigger:{ + player:"damageEnd", + }, + forced:true, + filter:function (event,player){ + return event.source!=undefined; + }, + content:function (){ + var source=trigger.source + if(!source.storage.new_wuhun_mark){ + source.storage.new_wuhun_mark=0; + } + source.storage.new_wuhun_mark+=trigger.num; + source.markSkill('new_wuhun_mark'); + }, + contentx:function (){ + "step 0" + source.line(player,{color:[255, 255, 0]}); + source.logSkill('new_wuhun_die',player); + game.delay(2); + "step 1" + player.judge(function(card){ + if(['tao','taoyuan'].contains(card.name)) return 10; + return -10; + }); + "step 2" + if(!result.bool){ + lib.element.player.die.apply(player,[]); + } + }, + subSkill:{ + die:{ + audio:"wuhun", + skillAnimation:true, + trigger:{ + player:"dieBegin", + }, + forced:true, + popup:false, + filter:function (event,player){ + return game.hasPlayer(function(current){ + return current!=player&¤t.storage.new_wuhun_mark!=undefined; + }); + }, + content:function (){ + "step 0" + var num=0; + for(var i=0;inum){ + num=current.storage.new_wuhun_mark; + } + } + player.chooseTarget(true,'请选择【武魂】的目标',function(card,player,target){ + return target!=player&&target.storage.new_wuhun_mark==num; + }).ai=function(target){ + return -get.attitude(_status.event.player,target); + }; + "step 1" + if(result.bool&&result.targets&&result.targets.length){ + var next=game.createEvent('new_wuhun',null,trigger.parent); + next.player=result.targets[0]; + next.source=player; + next.setContent(lib.skill.new_wuhun.contentx); + } + }, + sub:true, + }, + mark:{ + marktext:"魇", + intro:{ + name:"梦魇", + content:"mark", + }, + sub:true, + }, + }, + }, + "new_guixin":{ + audio:"ext:无名扩展:2", + trigger:{ + player:"damageEnd", + }, + check:function (event,player){ + if(player.isTurnedOver()||event.num>1) return true; + var num=game.countPlayer(function(current){ + if(current.countCards('he')&¤t!=player&&get.attitude(player,current)<=0){ + return true; + } + if(current.countCards('j')&¤t!=player&&get.attitude(player,current)>0){ + return true; + } + }); + return num>=2; + }, + content:function (){ + "step 0" + var targets=game.filterPlayer(); + targets.remove(player); + targets.sort(lib.sort.seat); + event.targets=targets; + event.count=trigger.num; + "step 1" + event.num=0; + player.line(targets,'green'); + player.chooseControl('手牌区','装备区','判定区').set('ai',function(){ + return Math.floor(Math.random()*3); + }).set('prompt','请选择优先获得的区域'); + "step 2" + event.range={ + 手牌区:['h','e','j'], + 装备区:['e','h','j'], + 判定区:['j','e','h'], + }[result.control||'手牌区']; + "step 3" + if(num0){ + return true; + } + }); + if(num>2) return [0,1]; + if(num==2) return [0.5,1]; + } + }, + }, + }, + }, ol_shenfen:{ audio:2, enable:'phaseUse', @@ -1973,7 +2150,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player!=event.player&&event.player.isAlive()&&_status.currentPhase==player; }, check:function(event,player){ - var trigger=event.getTrigger(); var list=[]; var skills=trigger.player.skills.slice(0); for(var i=0;itarget.countCards('h')) return get.attitude(player,target); - if(player.countCards('h')0) num1=num-player.countCards('h'); if(num-player.countCards('h')<0) num1=num-player.countCards('h'); @@ -354,8 +356,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(pl.isAlive()){ var num=pl.countCards('h'); var num1=0; - if(player.countCards('h')-num>0) num1=player.countCards('h')-num; - if(player.countCards('h')-num<0) num1=player.countCards('h')-num; + var num2=Math.min(5,player.countCards('h')); + if(num2-num>0) num1=num2-num; + if(num2-num<0) num1=num2-num; if(num1<0) pl.chooseToDiscard('h',-num1,true); if(num1>0) pl.draw(num1); } @@ -2012,6 +2015,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.target.countCards('he')>0; }, direct:true, + priority:8, content:function(){ 'step 0' player.discardPlayerCard(trigger.target,get.prompt('jianchu',trigger.target)).set('ai',function(button){ @@ -2478,23 +2482,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ if(trigger.target.countCards('h')<=player.countCards('h')) trigger.directHit=true; - if(trigger.target.hp>=player.hp) player.addTempSkill('xinliegong2','shaAfter'); + if(trigger.target.hp>=player.hp){ + if(typeof trigger.extraDamage!='number'){ + trigger.extraDamage=0; + } + trigger.extraDamage++; + }; }, ai:{ threaten:0.5 } }, - xinliegong2:{ - trigger:{source:'damageBegin'}, - filter:function(event){ - return event.card&&event.card.name=='sha'&&event.notLink(); - }, - forced:true, - audio:false, - content:function(){ - trigger.num++; - } - }, tiaoxin:{ audio:4, enable:'phaseUse', @@ -6375,7 +6373,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "drlt_huairou":"怀柔", "drlt_huairou_info":"出牌阶段,你可以重铸装备牌", "drlt_zhenggu":"镇骨", - "drlt_zhenggu_info":"结束阶段,你可以选择一名其他角色,你的回合结束后和该角色的下个回合结束时,其将手牌摸至或弃至与你手牌数相同", + "drlt_zhenggu_info":"结束阶段,你可以选择一名其他角色,你的回合结束后和该角色的下个回合结束时,其将手牌摸至或弃至X张。(X为你的手牌数且至多为5)", "drlt_zhenrong":"徵荣", "drlt_zhenrong_info":"当你对其他角色造成伤害后,若其手牌比你多,你可以将其一张牌置于你的武将牌上,称为“荣”", "drlt_hongju":"鸿举", diff --git a/character/sp.js b/character/sp.js index 01249af11..66fc4e791 100755 --- a/character/sp.js +++ b/character/sp.js @@ -376,7 +376,394 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } } - } + }, + "wolong_card":{ + type:"takaramono", + fullskin:true, + derivation:"pangdegong", + }, + "fengchu_card":{ + type:"takaramono", + fullskin:true, + derivation:"pangdegong", + }, + "xuanjian_card":{ + fullskin:true, + type:"takaramono", + derivation:"pangdegong", + }, + "shuijing_card":{ + fullskin:true, + type:"takaramono", + derivation:"pangdegong", + }, + "rewrite_bagua":{ + derivation:"majun", + cardimage:"bagua", + fullskin:true, + type:"equip", + subtype:"equip2", + ai:{ + basic:{ + equipValue:7.5, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + skills:["rw_bagua_skill"], + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, + "rewrite_baiyin":{ + derivation:"majun", + fullskin:true, + cardimage:"baiyin", + type:"equip", + subtype:"equip2", + onLose:function (){ + player.recover(); + player.draw(2); + }, + skills:["rw_baiyin_skill"], + tag:{ + recover:1, + }, + ai:{ + order:9.5, + equipValue:function (card,player){ + if(player.hp==player.maxHp) return 5; + if(player.countCards('h','baiyin')) return 6; + return 0; + }, + basic:{ + equipValue:5, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, + "rewrite_lanyinjia":{ + derivation:"majun", + cardimage:"lanyinjia", + fullskin:true, + type:"equip", + subtype:"equip2", + skills:["rw_lanyinjia","lanyinjia2"], + ai:{ + equipValue:6, + basic:{ + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + equipValue:1, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, + "rewrite_renwang":{ + derivation:"majun", + cardimage:"renwang", + fullskin:true, + type:"equip", + subtype:"equip2", + skills:["rw_renwang_skill"], + ai:{ + basic:{ + equipValue:7.5, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, + "rewrite_tengjia":{ + derivation:"majun", + cardimage:"tengjia", + fullskin:true, + type:"equip", + subtype:"equip2", + cardnature:"fire", + ai:{ + equipValue:function (card,player){ + if(player.hasSkillTag('maixie')&&player.hp>1) return 0; + if(player.hasSkillTag('noDirectDamage')) return 10; + if(get.damageEffect(player,player,player,'fire')>=0) return 10; + var num=3-game.countPlayer(function(current){ + return get.attitude(current,player)<0; + }); + if(player.hp==1) num+=4; + if(player.hp==2) num+=1; + if(player.hp==3) num--; + if(player.hp>3) num-=4; + return num; + }, + basic:{ + equipValue:3, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + skills:["rw_tengjia1","rw_tengjia2","rw_tengjia3","rw_tengjia4"], + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, + "rewrite_zhuge":{ + derivation:"majun", + cardimage:"zhuge", + distance:{ + attackFrom:-2, + }, + fullskin:true, + type:"equip", + subtype:"equip1", + ai:{ + equipValue:function (card,player){ + if(!game.hasPlayer(function(current){ + return player.canUse('sha',current)&&get.effect(current,{name:'sha'},player,player)<0; + })){ + return 1; + } + if(player.hasSha()&&_status.currentPhase==player){ + if(player.getEquip('zhuge')||player.getCardUsable('sha')==0){ + return 10; + } + } + var num=player.countCards('h','sha'); + if(num>1) return 6+num; + return 3+num; + }, + basic:{ + equipValue:5, + order:function (card,player){ + if(player&&player.hasSkillTag('reverseEquip')){ + return 8.5-get.equipValue(card,player)/20; + } + else{ + return 8+get.equipValue(card,player)/20; + } + }, + useful:2, + value:function (card,player){ + var value=0; + var info=get.info(card); + var current=player.getEquip(info.subtype); + if(current&&card!=current){ + value=get.value(current,player); + } + var equipValue=info.ai.equipValue; + if(equipValue==undefined){ + equipValue=info.ai.basic.equipValue; + } + if(typeof equipValue=='function') return equipValue(card,player)-value; + if(typeof equipValue!='number') equipValue=0; + return equipValue-value; + }, + }, + tag:{ + valueswap:1, + }, + result:{ + target:function (player,target){ + return get.equipResult(player,target,name); + }, + }, + }, + skills:["zhuge_skill"], + enable:true, + selectTarget:-1, + filterTarget:function (card,player,target){ + return target==player; + }, + modTarget:true, + allowMultiple:false, + content:function (){ + target.equip(card); + }, + toself:true, + }, }, skill:{ //OL马超 @@ -7445,7 +7832,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'useCard'}, frequent:true, - usable:3, + //usable:3, filter:function(event,player){ if(!event.cards||event.cards.length!=1) return false; if(_status.currentPhase!=player) return false; @@ -11674,7 +12061,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yingjian_info:'准备阶段,你可以视为使用一张无视距离的杀', xunzhi_info:'准备阶段开始时,若你的上家和下家与你的体力值均不相等,你可以失去1点体力。若如此做,你的手牌上限+2', yawang_info:'锁定技,摸牌阶段开始时,你改为摸x张牌,然后你于出牌阶段内至多使用x张牌(x为与你体力值相等的角色数)', - fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌颜色不同,则你可以摸一张牌,每回合最多发动3次', + fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌颜色不同,则你可以摸一张牌。', fuji_info:'当一名角色造成雷电伤害时,你可以令其进行一次判定,若结果为黑色,此伤害+1;若结果为红色,该角色获得此牌。', fulu_info:'你可以将【杀】当雷【杀】使用。', jilei_info:'每当你受到有来源的伤害时,你可以选择一种牌的类别,令伤害来源不能使用、打出或弃置其此类别的手牌,直到回合结束', diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 8990c911f..6465125dd 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -3928,37 +3928,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, "kannan_eff":{ - subSkill:{ - remove:{ - sub:true, - trigger:{ - player:"useCardAfter", - }, - priority:2, - filter:function (event){ - return (event.card&&(event.card.name=='sha')); - }, - forced:true, - popup:false, - audio:false, - content:function (){ - player.removeSkill('kannan_eff'); - }, - }, - }, mark:true, intro:{ content:"下一张杀的伤害基数+#", }, trigger:{ - source:"damageBegin", + player:"useCard", }, filter:function (event){ - return event.card&&event.card.name=='sha'&&event.notLink(); + return event.card&&event.card.name=='sha'; }, forced:true, content:function (){ - trigger.num+=player.storage.kannan_eff; + "step 0" + if(!trigger.baseDamage) trigger.baseDamage=1; + trigger.baseDamage+=player.storage.kannan_eff; + "step 1" player.removeSkill('kannan_eff'); }, init:function (player){ @@ -3970,7 +3955,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ damageBonus:true, }, - group:"kannan_eff_remove", }, "xinfu_tushe":{ audio:2, @@ -5470,7 +5454,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "rw_renwang_skill":{ inherit:"renwang_skill", trigger:{ - target:"shaBefore", + target:"shaBegin", }, forced:true, priority:6, @@ -5515,7 +5499,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ })) return false; if(event.card.name=='nanman') return true; if(event.card.name=='wanjian') return true; - if(event.card.name=='sha'&&!event.card.nature) return true; }, content:function (){ trigger.cancel(); @@ -5586,6 +5569,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + "rw_tengjia4":{ + inherit:"tengjia3", + }, }, translate:{ xinghuoliaoyuan:'星火燎原', @@ -5855,11 +5841,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "rw_renwang_skill":"仁王金刚盾", "rw_renwang_skill_info":"有花色且不为方片的杀对你无效。", "rw_tengjia1":"桐油百炼甲", - "rw_tengjia1_info":"定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", + "rw_tengjia1_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", "rw_tengjia2":"桐油百炼甲", - "rw_tengjia2_info":"定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", + "rw_tengjia2_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", "rw_tengjia3":"桐油百炼甲", - "rw_tengjia3_info":"定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", + "rw_tengjia3_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", + "rw_tengjia4":"桐油百炼甲", "rewrite_bagua":"先天八卦阵", "rewrite_bagua_info":"每当你需要使用或打出一张【闪】时,你可以进行一次判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。", "rewrite_baiyin":"玉照狮子盔", @@ -5874,10 +5861,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "rewrite_tengjia_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。", "rewrite_zhuge":"元戎精械弩", "rewrite_zhuge_info":"你于出牌阶段内使用【杀】无次数限制。", - "rewrite_huxinjing":"大号护心镜", - "rewrite_huxinjing_info":"当你受到伤害时,若伤害值大于或等于你的体力值,则你可以将【大号护心镜】置入弃牌堆,然后防止此伤害。当你将【大号护心镜】连横时,你多摸一张牌。", - "rewrite_taipingyaoshu":"太平全术", - "rewrite_taipingyaoshu_info":"锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,所有此势力角色的手牌上限便+1;当你失去装备区里的【太平全术】时,你摸两张牌。", takaramono:"宝物", "wolong_card":"卧龙", "wolong_card_info":"对1名角色造成1点火焰伤害。若场上有存活的诸葛亮(火),则改为对至多2名角色各造成1点火焰伤害。", @@ -5888,385 +5871,5 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "shuijing_card":"水镜", "shuijing_card_info":"将1名角色装备区内的防具移动到另1角色对应区域。若场上有存活的司马徽,则改为将1名角色装备区内的1件装备移动到另1角色对应区域。", }, - //部分武将用到的衍生卡牌 - card:{ - "wolong_card":{ - type:"takaramono", - fullskin:true, - }, - "fengchu_card":{ - type:"takaramono", - fullskin:true, - }, - "xuanjian_card":{ - fullskin:true, - type:"takaramono", - }, - "shuijing_card":{ - fullskin:true, - type:"takaramono", - }, - "rewrite_bagua":{ - cardimage:"bagua", - fullskin:true, - type:"equip", - subtype:"equip2", - ai:{ - basic:{ - equipValue:7.5, - order:function (card,player){ - if(player&&player.hasSkillTag('reverseEquip')){ - return 8.5-get.equipValue(card,player)/20; - } - else{ - return 8+get.equipValue(card,player)/20; - } - }, - useful:2, - value:function (card,player){ - var value=0; - var info=get.info(card); - var current=player.getEquip(info.subtype); - if(current&&card!=current){ - value=get.value(current,player); - } - var equipValue=info.ai.equipValue; - if(equipValue==undefined){ - equipValue=info.ai.basic.equipValue; - } - if(typeof equipValue=='function') return equipValue(card,player)-value; - if(typeof equipValue!='number') equipValue=0; - return equipValue-value; - }, - }, - result:{ - target:function (player,target){ - return get.equipResult(player,target,name); - }, - }, - }, - skills:["rw_bagua_skill"], - enable:true, - selectTarget:-1, - filterTarget:function (card,player,target){ - return target==player; - }, - modTarget:true, - allowMultiple:false, - content:function (){ - target.equip(card); - }, - toself:true, - }, - "rewrite_baiyin":{ - fullskin:true, - cardimage:"baiyin", - type:"equip", - subtype:"equip2", - onLose:function (){ - player.recover(); - player.draw(2); - }, - skills:["rw_baiyin_skill"], - tag:{ - recover:1, - }, - ai:{ - order:9.5, - equipValue:function (card,player){ - if(player.hp==player.maxHp) return 5; - if(player.countCards('h','baiyin')) return 6; - return 0; - }, - basic:{ - equipValue:5, - order:function (card,player){ - if(player&&player.hasSkillTag('reverseEquip')){ - return 8.5-get.equipValue(card,player)/20; - } - else{ - return 8+get.equipValue(card,player)/20; - } - }, - useful:2, - value:function (card,player){ - var value=0; - var info=get.info(card); - var current=player.getEquip(info.subtype); - if(current&&card!=current){ - value=get.value(current,player); - } - var equipValue=info.ai.equipValue; - if(equipValue==undefined){ - equipValue=info.ai.basic.equipValue; - } - if(typeof equipValue=='function') return equipValue(card,player)-value; - if(typeof equipValue!='number') equipValue=0; - return equipValue-value; - }, - }, - result:{ - target:function (player,target){ - return get.equipResult(player,target,name); - }, - }, - }, - enable:true, - selectTarget:-1, - filterTarget:function (card,player,target){ - return target==player; - }, - modTarget:true, - allowMultiple:false, - content:function (){ - target.equip(card); - }, - toself:true, - }, - "rewrite_lanyinjia":{ - cardimage:"lanyinjia", - fullskin:true, - type:"equip", - subtype:"equip2", - skills:["rw_lanyinjia","lanyinjia2"], - ai:{ - equipValue:6, - basic:{ - order:function (card,player){ - if(player&&player.hasSkillTag('reverseEquip')){ - return 8.5-get.equipValue(card,player)/20; - } - else{ - return 8+get.equipValue(card,player)/20; - } - }, - useful:2, - equipValue:1, - value:function (card,player){ - var value=0; - var info=get.info(card); - var current=player.getEquip(info.subtype); - if(current&&card!=current){ - value=get.value(current,player); - } - var equipValue=info.ai.equipValue; - if(equipValue==undefined){ - equipValue=info.ai.basic.equipValue; - } - if(typeof equipValue=='function') return equipValue(card,player)-value; - if(typeof equipValue!='number') equipValue=0; - return equipValue-value; - }, - }, - result:{ - target:function (player,target){ - return get.equipResult(player,target,name); - }, - }, - }, - enable:true, - selectTarget:-1, - filterTarget:function (card,player,target){ - return target==player; - }, - modTarget:true, - allowMultiple:false, - content:function (){ - target.equip(card); - }, - toself:true, - }, - "rewrite_renwang":{ - cardimage:"renwang", - fullskin:true, - type:"equip", - subtype:"equip2", - skills:["rw_renwang_skill"], - ai:{ - basic:{ - equipValue:7.5, - order:function (card,player){ - if(player&&player.hasSkillTag('reverseEquip')){ - return 8.5-get.equipValue(card,player)/20; - } - else{ - return 8+get.equipValue(card,player)/20; - } - }, - useful:2, - value:function (card,player){ - var value=0; - var info=get.info(card); - var current=player.getEquip(info.subtype); - if(current&&card!=current){ - value=get.value(current,player); - } - var equipValue=info.ai.equipValue; - if(equipValue==undefined){ - equipValue=info.ai.basic.equipValue; - } - if(typeof equipValue=='function') return equipValue(card,player)-value; - if(typeof equipValue!='number') equipValue=0; - return equipValue-value; - }, - }, - result:{ - target:function (player,target){ - return get.equipResult(player,target,name); - }, - }, - }, - enable:true, - selectTarget:-1, - filterTarget:function (card,player,target){ - return target==player; - }, - modTarget:true, - allowMultiple:false, - content:function (){ - target.equip(card); - }, - toself:true, - }, - "rewrite_tengjia":{ - cardimage:"tengjia", - fullskin:true, - type:"equip", - subtype:"equip2", - cardnature:"fire", - ai:{ - equipValue:function (card,player){ - if(player.hasSkillTag('maixie')&&player.hp>1) return 0; - if(player.hasSkillTag('noDirectDamage')) return 10; - if(get.damageEffect(player,player,player,'fire')>=0) return 10; - var num=3-game.countPlayer(function(current){ - return get.attitude(current,player)<0; - }); - if(player.hp==1) num+=4; - if(player.hp==2) num+=1; - if(player.hp==3) num--; - if(player.hp>3) num-=4; - return num; - }, - basic:{ - equipValue:3, - order:function (card,player){ - if(player&&player.hasSkillTag('reverseEquip')){ - return 8.5-get.equipValue(card,player)/20; - } - else{ - return 8+get.equipValue(card,player)/20; - } - }, - useful:2, - value:function (card,player){ - var value=0; - var info=get.info(card); - var current=player.getEquip(info.subtype); - if(current&&card!=current){ - value=get.value(current,player); - } - var equipValue=info.ai.equipValue; - if(equipValue==undefined){ - equipValue=info.ai.basic.equipValue; - } - if(typeof equipValue=='function') return equipValue(card,player)-value; - if(typeof equipValue!='number') equipValue=0; - return equipValue-value; - }, - }, - result:{ - target:function (player,target){ - return get.equipResult(player,target,name); - }, - }, - }, - skills:["rw_tengjia1","rw_tengjia2","rw_tengjia3"], - enable:true, - selectTarget:-1, - filterTarget:function (card,player,target){ - return target==player; - }, - modTarget:true, - allowMultiple:false, - content:function (){ - target.equip(card); - }, - toself:true, - }, - "rewrite_zhuge":{ - cardimage:"zhuge", - distance:{ - attackFrom:-2, - }, - fullskin:true, - type:"equip", - subtype:"equip1", - ai:{ - equipValue:function (card,player){ - if(!game.hasPlayer(function(current){ - return player.canUse('sha',current)&&get.effect(current,{name:'sha'},player,player)<0; - })){ - return 1; - } - if(player.hasSha()&&_status.currentPhase==player){ - if(player.getEquip('zhuge')||player.getCardUsable('sha')==0){ - return 10; - } - } - var num=player.countCards('h','sha'); - if(num>1) return 6+num; - return 3+num; - }, - basic:{ - equipValue:5, - order:function (card,player){ - if(player&&player.hasSkillTag('reverseEquip')){ - return 8.5-get.equipValue(card,player)/20; - } - else{ - return 8+get.equipValue(card,player)/20; - } - }, - useful:2, - value:function (card,player){ - var value=0; - var info=get.info(card); - var current=player.getEquip(info.subtype); - if(current&&card!=current){ - value=get.value(current,player); - } - var equipValue=info.ai.equipValue; - if(equipValue==undefined){ - equipValue=info.ai.basic.equipValue; - } - if(typeof equipValue=='function') return equipValue(card,player)-value; - if(typeof equipValue!='number') equipValue=0; - return equipValue-value; - }, - }, - tag:{ - valueswap:1, - }, - result:{ - target:function (player,target){ - return get.equipResult(player,target,name); - }, - }, - }, - skills:["zhuge_skill"], - enable:true, - selectTarget:-1, - filterTarget:function (card,player,target){ - return target==player; - }, - modTarget:true, - allowMultiple:false, - content:function (){ - target.equip(card); - }, - toself:true, - }, - }, }; }); diff --git a/character/yijiang.js b/character/yijiang.js index 5c6c819ef..e4bae7d2f 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -60,7 +60,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gongsunyuan:['male','qun',4,['huaiyi']], guotufengji:['male','qun',3,['jigong','shifei']], - xin_yujin:['male','wei',4,['jieyue']], xin_liru:['male','qun',3,['xinjuece','xinmieji','xinfencheng']], guohuanghou:['female','wei',3,['jiaozhao','danxin']], @@ -84,6 +83,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xuezong:['male','wu',3,['funan','jiexun']], old_huaxiong:['male','qun',6,['shiyong']], + "re_yujin":["male","wei",4,["zhenjun"],[]], }, characterIntro:{ caozhi:'字子建,沛国谯人,三国曹魏著名文学家,建安文学代表人物。魏武帝曹操之子,魏文帝曹丕之弟,生前曾为陈王,去世后谥号“思”,因此又称陈思王。南朝宋文学家谢灵运更有“天下才有一石,曹子建独占八斗”的评价。王士祯尝论汉魏以来二千年间诗家堪称“仙才”者,曹植、李白、苏轼三人耳。', @@ -178,6 +178,56 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liuchen:['liushan'], }, skill:{ + zhenjun:{ + audio:"jieyue", + trigger:{ + player:"phaseBegin", + }, + filter:function (event,player){ + return game.hasPlayer(function(current){ + return current.countCards('h')>current.hp; + }); + }, + direct:true, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt2('zhenjun'),function(card,player,target){ + return target.countCards('h')>target.hp; + }).ai=function(target){ + return -get.attitude(_status.event.player,target)*(target.countCards('e')+1); + }; + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + var num=target.countCards('h')-target.hp; + player.line(target,'thunder'); + player.logSkill('zhenjun',target); + player.discardPlayerCard(num,target,true); + } + 'step 2' + if(result.cards&&result.cards.length){ + event.num=0; + for(var i=0;i0){ + var prompt='弃置'+get.cnNumber(event.num)+'张牌,或令'+get.translation(event.target)+'摸等量的牌'; + player.chooseToDiscard(event.num,prompt,'he').ai=function(){ + return 5-get.value(card); + } + } + else event.finish(); + } + else event.finish(); + 'step 3' + if(!result.bool){ + event.target.draw(event.num); + } + }, + }, fenli:{ group:['fenli_draw','fenli_use','fenli_discard'], subSkill:{ @@ -562,7 +612,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return get.effect(player,event.card,event.player,player)<0; }, filter:function(event,player){ - return player.canCompare(event.target); + return player.canCompare(event.player); }, logTarget:'player', content:function(){ @@ -1486,7 +1536,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } "step 3" if(event.target.getCards('h').contains(event.card)){ - event.target.chooseControlList('问卦','将'+get.translation(event.card)+'置于牌堆顶','将'+get.translation(event.card)+'置于牌堆底',true,function(){ + event.target.chooseControlList('问卦','将'+get.translation(event.card)+'置于牌堆顶','将'+get.translation(event.card)+'置于牌堆底',event.target==player,function(){ + if(get.attitude(event.target,player)<0) return 2; return 1; }); } @@ -1494,14 +1545,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.finish(); } "step 4" - event.target.lose(event.card,ui.special); event.index=result.index; + if(event.index==0||event.index==1){ + event.target.lose(event.card,ui.special); game.broadcastAll(function(player){ var cardx=ui.create.card(); cardx.classList.add('infohidden'); cardx.classList.add('infoflip'); player.$throw(cardx,1000,'nobroadcast'); },event.target); + } + else event.finish(); "step 5" game.delay(); "step 6" @@ -1510,34 +1564,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.log(event.target,'将获得的牌置于牌堆底'); ui.cardPile.appendChild(event.card); if(ui.cardPile.childElementCount==1||player==event.target){ - event.togain=[ui.cardPile.firstChild]; - ui.cardPile.firstChild.remove(); + player.draw(); } else{ - event.togain=get.cards(2); + player.draw(); + target.draw(); } } - else{ + else if(event.index==0){ game.log(player,'将获得的牌置于牌堆顶'); ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild); if(ui.cardPile.childElementCount==1||player==event.target){ - event.togain=[ui.cardPile.lastChild]; - ui.cardPile.lastChild.remove(); + player.draw('bottom'); } else{ - event.togain=[ui.cardPile.lastChild,ui.cardPile.lastChild.previousSibling]; - ui.cardPile.lastChild.remove(); - ui.cardPile.lastChild.remove(); + player.draw('bottom'); + target.draw('bottom'); } } - if(event.togain.length){ - player.gain(event.togain.shift()); - player.$draw(); - } - if(event.togain.length){ - event.target.gain(event.togain.shift()); - event.target.$draw(); - } }, ai:{ order:2, @@ -7781,12 +7825,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shangshi:{ audio:2, trigger:{player:['loseEnd','changeHp']}, - forced:true, + frequent:true, filter:function(event,player){ - return (player.countCards('h')KWmQv%+rZy@od|ON)78o5F9vu@DCmkRl9V8eP z8Ym$pCnYQ;85?<7OD-WJEgc>(CMY~EFF-0Ll5bp&YFITQA}kmdfnHG=5fO%AR6Hdi zoOohEGBP0>9uyH4ie^?KASo9YCM+s25e^bG92uj3W|wnbNH8nm$)WM*%tkdeCKVK< zd09mx9ULAmS~)RGIXF%!AZb1`-NT(QEjIG&*6-rQP&F<`DULB zM0-p>V?;VxG%M%VyKYZF_we28+`eZ?Jz_d9>esQ-ww6sjJvcKt*SwmYfN^F~Om0?D zw3mKzMmyfgtj4K|K{`Ioua2sWb;7KgTSrE|qlNtDb-bK@aY8eyX;86!ajtn;;?J^m zR7O-fG~BU|`o2`3VNm?|<+-Gmym(l3TvzPo)l)GjJ02O8U`YP*i*z|E&X;iZ!CdOkaTC6S32X`&f3nx_Mkz7X<)FLjUg&Nj6pAbV_ek4waSfX zu7_x&fWy+w0rH+S< zPd9{1IHGG}Su7%ydTz98QIS?roN!Rs!KT@)ec-y5;h$sGr;D_ba$zU~9c?NAr(6L|&0ZX@!Dpbm){%i@ew%3=Ikg3ut4^G>@0@V46`gDC?8m&3o)c2^#ddg z-}D0?eBM(q;_Yb<9i?HvJ?D9!_y4XAx;!{F<(u;RAiv#jcRG8a&+zE&gz)7+XK%05 zKb+ahK=bp9i{aI!rB!GN&zdf1`dTl{T-f-1_l>310zNZe)2eGT?rYO+L`cuHcfQQxdr6o#c4hGqer)9GZzYT~WDlJv-% zMWt9Om5SC%QDjYWX{935qG%Sy>Y)>vt>5bEu9zYbKn6PhWc*W4?0=`T*QciE=jPxq zv=rWp!3KG3Y<&Io&^3jxVY!A2EiD0e9K7S1&nt?X5oy}U(1#DW>IF^^D2eC9s+pGH zIb`K|CC4kJXpZp0-;zi(xs^9_v@Fm7W~I&gxwv)ArKXf?3E z!#;uMpBCHI?{?P@v>S=9dsQzKnfBOhwupCatvplK44w#w=QGQ*$KRdqaVRYOGBMmO z!5 zSHIaz2-}~1|B2^4RgpDf?b9TeyTl^7xPBx-DHd}w%|NVJD$xwhOLzd5g_t_B)FMGN zgf|ihL;_y)#Jr5tEq>Bn(NJS7} zQWIC#wG6g2x3o2n>0LHWk%-T}my6E*vCytwyU!a@$H&LhpdEtj*2a$>f-yL(3e+6!;J^{%^WHcC7%m`2}Ud;WzK%bU<CZZfKZlNfkb z0~T5Gj*-S)hx1&js3?-T$}5sY=SrJCd(vux=~$(8y}rnF3juCybp;5n8uZ!G7k{m_ zeW~b0f&dIu0t*FI`05MB<9;=pEklGD_6~FpbVri9>Ccizkt}~+V3dJV4?q8~L8L*( z66#t<0GOy+HA5m}EtcFxD{VHT86>H+xfY)PBB`|R>@eK5b>y!5U9E$IeS^)B0I?Um zwX*mRIsHD|eRVesg+kUF$ohPqQLmrSA`Szbp-3N19q=P-#Dnp zqC*m~B@^O(x!rHEJs4EI{sNHILVC*YRsAt`%;^R1?8w5vz==c|FS8@>HIKQiW7E3& z8n0OzULFpA`PLybazI#Qf#>jK*gaT07(=n-abwM~xCK0)la-b5;+a!FW%6s^AKhWV zyBEyB;GiW)CJ77?n#2DH?_Y^w>UMg2ySzO{Xa~Yuo;^Wu2g)PwjhvXh_sQ&x ze#jd0a2!ph1!gBce`0Flt9P$6o9pFbw8zQ;i8Pl<3oZ*_qY`zyqp6$>Tof9kR1|Bm z96FQPI+MwS=DK$Fc*z#0HuiO>KEms(ZPEKl_wOS1Y$Ce`-txA(onB{{V19f1(uswI z6SHf9fXy`>pG*$94?c5Ho*Xj6Ln~IeqF$Umu=LfvSDUF+PEk0TCLY3E*pJ=-)|0Br$Y@nRQ z0vlFcDSBt@W$b2WE}d9YT`_l0Dn(H}{XJc}+fMexj-^kMYgpv5(btmT%T3L|FASyz<0Mi?E6mprL!DP51@Fl9J! zXNuM-iZ$vVd1ibg|7B#fGE^!WBp?e7EL*QNgi)Ym*ahE zZUfKKO7Ltrd?qw8*C!Zh!{o|JGI<&rGQdHKf4uXDCrvvh&UWgV;f+H6`OU6LPb{u9 z(C98B%MjdJo3UUe^qAAF633T{pk_rzUJfr`%w#Z&VD^T;dtKYPd%#e=HcL}mlim_Q zxB2|w`>VCRq&mMRsp2TbR;$&hjjD>ZJr2@Z4!aw}O9(TKY9QaR?QSFu3X@?kqw#ju z9M+~ZRYkYjI-1*>I|wkD+5XzZIDU}3KtAa5q;Lwex-HrHFqD}Q+Bu_C*<8_Rlcxjg z21*b(`mRrgZ@w_`vTGf@h5TddH?4p5E`?Lu2d;-Ffh$70?TfKZ(!^tk%qcn!n6Y`+NRy+5QKLI0>_4>Rn@HWHYY{cu;<_Y|RAlSPH>~p0Qg%YA2)UDCCDd)S<}p&&LnladP~tSXDG) ziifi`i;)DJH1JzY46j%vLBxhpbxeRaj7t;z{Sz24cFZyX#5SmJYin!P2e70fB*of2 z=!Hngop{=(-6?~WcPGjg%Qk-9_Nb2H`3A=(vTK>0Esxlew#j}SMRD!a;YUBZt^TFQ zU-|T8Q|luJ?&$cJZ=JiZd1@nxA(J-ZA&N9EK%=~{>7nEBN(n3uOUzF8Y-lkIW{r5U zmS4~i3&HCp3Iv@#eOqg5E6PH%SVgsgw`MNn^he?zPfC~S#=zk9%`KKkKmHg;Z(Rw^ zVC(L%B+3CBQta-DQv9=b-~GUikLU-^pFHyZJN_*(e6OL(()C)45s~466%0LHJ&u$+?zS>`gO>RAnNVo?5-~SKa6@%9 zzX&i{`#y{h@Df+AGtk=D(n>-M$H5!)lTF%B6ts=S<8ikmI+kedFS?_nJxALd5EnhCD7(}k8izdR8Ng+mjXznWh_CIQ7^2LcvJD1ZkWTU(K05{Mv7 zuZ==J9Q17QA-B8VpeUm_d`BIQXw+ch0W7;CQ^Thc9Zh4dKm_i-X?yPECnIX$(K{CA zmM<+d4ZgX$@Uh{=Bjc-Q&sCM2B8g)CE-%ND1qYE*gSn(Dte8M2CeF{m-U9sHlQ1Iz2TB z2ICod2(T8SIl?MofG|5YOA=dt>g+_Qa|r<^7T1x(SR`Pvpl~}Zn#=0$0a-f>>jxV( zWPELNVG^?GBTr(baU7-7<=hpQ#bOD(`J|^oqvZgHV>>xpHZ(K{Xne^Er)7%V?`yBS z;fBHGnFnq^*><`@IZ|CiMJ45EKoD4MPsWJ$2Uq42;z$*R;o0B5UAI$K->RA>86aKGJC#A3Z1`K0sTWl#c|WfpMa!iM=UkMaMyxx)4Rhoj4mo zW;H12fPx?{+_>;RH<>7&m{clh@XKHS`R}&0nG&`qO-?VrY-z=XUkm%tpx3C z2kGh9eCx2ZZb?tD=mC5u#EQ<$legc!d)-qf&qdU)!iwzWc|l*KEsd8n@XQ=-l>WXJ z(LjZEo7ItR>>Z(7I-T)zAj{?bbh%#NLB>(Y-MdlP1?rM2KafT^N(< zsI^&}x&gEmblqWOfvLw6*iz!vOQm$w{7c(q?5bq^sRuHJIhm zj|8uNnWYO4FW$;!9_Jn!;LdMh1yC-Ec(IY7`J9NMp1-t;%3)dC#?pZ`_`&UR4xcFI z)eD${PMvBCHfc$guq)n=uJW_0Gw#?G))pw5wqa(_=zW; zI5(($enJ;+yP-o%+Kpniho^*&lD5sRx;a`se+d$vpu#rp<0EIPBa$|qP8ZTXfOASo zzfz@CzW;`MxA!V}5Q7%dXZ*n(wSCs?cY9G7GNBh`b)(a@EXl#C+kuS>sWJSR-b62= zxVo-JRxHyS4>H>~UvuZd01NlHw;}`!CJd}7+z&<`N*%VhqO&KjJ$d0<#W*Kbu*6$H zrJ-Biuh0?eSx!k@QOhuvkDapbFD*6cLqDIs@2=W(nlvMqxe)~BsiZYwOlZQkrHxD$ z8sUO>-_}Y+P*~ti!4PC&&M9Zzr>+cP>TNLM zF%y<>Uq&5CS29r5Cs4f2<3JLxQs5SyCNF^B zLnoX(TtENSTvdgOTJWY}Tj0{XO9f;Q=hXGj<0}f~^wO+$_wKsqjs&~k>X4yqGO#Bt zzHEm!3&PL^xz%ecUe_?BkU`W7I9H+xLA-(@BkI0&G;Frdo)83SJ#b=fT)IK>zyqJI zfAts|jS7fRc2SBq1Mm76#4^OI*hyvlN27y}j|vr7MB)1P-Sg;H+wBdj;|2tVZ4IFt zoMYckUT~o|3&RQgFbQ=-a8Fnm4=o%eyUa5@*au;NsB@dcwmWHjdd!2u;>6h-k4bjp zu@gZwIp};k0xYrquYUXZWdI)`Ktd&6XpJXfLv0ERmB(P8^JX5sP%tTzH%XfyGlCMi$6dN>)J1?5D zsKKCh{$sN4qW;yF{Gb4du|mL9>OEx7&y_{vsRI(@)KI!M(*+9|si$L=2y8c;gsvM+ zq7X)4Hf*9x0p)eeFmSZE#=(vlK~WBqBY3e}jnju0zD(DXI2l9P8kKtOB>v%f$hp8> zuq)mLA_0>X)EP8~0rKg*TH7Eny_RbYosm!}tOP~rS_V$-C{oP55Mf|3jBZ(JffIxV zU3_Vv&7^*b*Mq<`U+B|hxV~PgqYg-25_nGBIoD|99{TL-1@r%TL8>4Nb6ll!o)9x> zL>rDX-s&KdjFC4DzU;OGTx>{9&UJhHxVISEV3e5B8F*#DJY7m_#w(et`~ZPD_CJPR z4C>RuBZV=xrGrkVGuYc3kjke{DdL0rw4cd5a(<3^alt#&mc|`Lt#}o+4^Cpt5O+=? zueRzoVnL;X)0^(Qq2=MK3-GzUsNF=Y*}{NfLP`$1$Am-)@N$v0TuF|`e8Y`p@Os5& zwLWSkz@@_8r8Tanr{fMZCS?48xVv=WFQUEpUtUtRfCE7T8;1fx`}0i5&89YD-%a;z zM!=wH$8mQUXc%cUL(t?9?8C%%mNOR_Y=JXs+vq!8!mOHRN){?!oNI$IHXlsYFzjY;)3_$g14Xwq{O{mD3s@IN6uBi8N8#8L%290*=*J8n+?w?LOKhxm97WCb(vuS_wK;7q}$wg$;MKkGaZw$Q0D^rN-W9-n5D`4 zgUy|Tas6O$(5iwviTkUxSsWffU*+Zc>Tctqi~kmQ(P2v3xq-_lyrrV_o$uZ7#9)Dg z->Me6-PNEwXeHa#NGk~oy(O5(?Et`NDOlp}w?Jt%;|Tg18nJ05iM*2TzN`>9&!cj?OL6SiJF4mS#z{O~KmXTXfBp2+oEI)2UIj~49s!te30Unc z=FA!V4Q^54W6YY}>8VZjdoXNRSY$x}7a({w#{jR%9d6o&VbQpL|$1puj z>O~C>fxu8a%8kZj&|<>MsR z@R78tK%TC|88`yK)7|maTk`iw{w*CrrF)vlBCn+8a3gCO97hqpbyPE?;&q7E2Cr}o zGP87)z$uJ!ZtCv!LVbLYuo>lbwxs@4Xj0g`H1MpFVvCw`SvE=4;|rz&{-U z9IQ|P@4^yz6vz)aOaBKrUxoFqvdtK8sVu<`DF_ieOVp8yyCVqV6> z&wcY>-gz8Qr1`kLN1-uc}<7;LpaMxLGPeSU0c*a19DA z!*LuVi>!qm_*yn=P@fUJ3dxdx( zoF@10oc?fxe<^+F@y8Dz$33A-4u-z#N@2U>fd@G2;Pdj`OHMN6P@OcCd2rn1Dj zZ1w|5`guZT$qa^-&6=Rqw6(0EgyrOA!gg#M%;06r^gPWec@oy)_M{sw59>Q0ytBP` zFxc97_uY4Em?Ea154N^kk3=Y24@j<%c;i^qo6G(fT<&kpzAkt{9Cz9JQ*g z^1>2+62r#*exw;rwjW2L-v~ssvS`6q>yV z+_g2%pMT?Wb4>#-ieqd5`9EBoc~IMF8OQmXfYbvB1d^1%7PWzpgiIhv4sxG>Bq2c( z7?P5Nfe;{5Oag?&FeR`gh0qLV%T)wKTb&NBbr;c9#{+iN)x~Yys;ldGwCcLv|i@TbpqR;AR%c2;z5ANkj`&$^U)z`n@?;pz=0Rxjbf3@Eo3-OhL#9pg+-STHsD84({Unl zIHuTpFJM*&MMoh@?F$u{*D#yS^wR2D!oVNLVBSZG?%Q{s`_1>i1mY}w!)uBB9KcW^ z9+lBS{0=Zta+Z{3Sn-C?ffW)}kbsMQk06`zg+d$`7axD(6J*8+8Gmq*OUr{#=RHQe zkoDj6E67g(o8g6h@izqTdoJW(xGYBk;69BSIk8fch{8gl0Hab-$HBN4 zs3a<5C^hl#0Gn;+WB^y<<4<3vXF8rxaee&a<{N|TF{|e&o zELJ%-9HB!!f)VNe<|Twmr0xG=pQcxpiWp)>MR6X1TTB8jYDy{<;g|8*G><_g4ms*D zweSnifA`ac#TB3a%U}Nb>z{VzGZ{?mLBdNQq9B;P3%vQcmvT9zT-10zqr}A72+Xfa zqw#3ewbQY(a{Z=)FXBKQ=rT>0mLCib4!-(FVtwh$H?nH6;1Vc-pyUv=j|eAzCxjue z0Tm0sq}vYoR0e~>K};xw8kLU?2P?y5+>m0TPM@QSreT#?!$%};k zA;jIA&doR9{2dl}pDs8t0venF$QdtwO8hVIOx7>imyOVvj5-{xq^@G*W7z13|70#r zY*EN89N^}s#s!A8$+@|?VJgkgzWVo<-g^GKe|h^Y=F<@ImqW&_6%$=!*nao#FDxuf{_uxSd3%W;O3Scd-be7D(o#RY z;6IT9%Vb=UGiW0r5$D1sl6eW487&u5R53Z1ELJM~3KC2xUiT|-bUJ@9xklmM+8fXw zHnbaG`s=UF+zjsfzEOltN1Wl8QF&e>*L4*`&m>K6Os{%lrd6xU>T+e{N35NO4oP{b z#>3)pJf6B%Jqq+ka{1)=WENmSn_1PMr4!o@AKSI1h-dH6!nzx~y#^{(loAzR;J?6KZX&co$ZM(O($3>U9Gz5%q{Nd#% z=(!@^5&P|OQQg?Yh0E_P99y37Nv(nDc`10Y2;!X`d&f#odCpimomOh}X{9@-K%+R( z$TPh7cnX|RQn64B)%F7TKarxOA-OK5hLmX$sZe4pCez6I?_pUin*4kgpGBckDJlgr zlm0hnc6IF08!E1&^NcM7?q1*C;96cjgLd)a<8QtGxhLphzW+n-K{SL@ak`cYk(btm zyG-_)X6w}aRAL9VjmLMuo7l-n`(~v_=`N#dly1zWYLqAc@&_>g%fywLRk~e!Fk1pA z&J=FQi@V?G4Hb$lX??nALsCql0k}|QC=*>~GN^^D@&112reE$HOg6K1$w^hHtgpG* zrM6mKZO4O~A+AV8yO_x@FN62xpL`BU-KE^(F4I!c<$Mxp**xamX}~8Wh#EeT$WYhp zpx`{7tt?0Z7%CHJ_4*}w)^>*T9Sak2B9r;xB@p=>oj5a=!~qW$s)m zBop?fj30$Ba>@BrOMh?>d6eHdvzOi6H#ny{IofS$vs$xVZ0qrrh4m4^2_FX{5rHqk zeLwV#mofhIB%kBM#K+}}ref2^n9+*WtZs%UShI;=!^8<`ch78fC0*~)R~iGQZjDl@ zT*x9!`9BN9+ju8_iAtGXii&!g-g1~!Q1u7>aRKy+G~WWj&#h1>1u&z{Qm3 z!RYPL-u0_<+sWNsqNS_W>YkO4H;wSd`z?6{FHy_EeV=(ZdfAuWI}tOraxPr1n;u&p zGuh#^ST0x@9=t;=tJFS4WV@AmWsb4kSm{=#l{d0rzik-zzt?sxs;2Tl zEKjY@hfN;kn^{C!@P8&I=x5t8eB5J0FT*#sEcz`o#(>ZQ1D0&YzXGV|r_V(I#cSqMpXe0IY^~1MRBbSJ1jVOl167mBP)kxF6 zu?Z;KmpN0v_^D}m!`9J}89as?5xn+}9&gWVm9YxIbY;x$^#%$!npd-OGOera|KUZc zw_@$C-7Z0Kw7l$F;@eM$_>7*QbFCo z7e%i=O^j%EM+Z0iD}B>-6ylAVjV2MICS;SB(1+C4w_ZvmeyTRZK38 zQQtH-xfwjD^;5V^7?`N~2}56e^4{(T7T>aYVxkafMP1lrTDDC|Y*KsG(~+$GV-(F8 zWC@^A0_5tL6sd*OO}X*2EF=pV6Jy_1gBY~Ls_kT}ZIxx;@srEUVamuF3YUJl)9Lp+gUQikvQ`0FX8mx}qF{Yta3=XcK^8ME z=F)J+WTdDk7rW1bH*PNb>RO*cXe%z8O1#oUpg@ls78o!j<{@VT?NFqy*xD1|wbz}Xz96#5 zjL!SCYYYQptK-_l=_#Ae*XvD6jYd3ws;)OQYt=_>Rc>GF1&$B8ZgFd2!A4zM2?A6e zO*J{WHu-RJQXrB|o`@fFnY@tUs%&n~u`athHzzPK@_57bwA_sBi!hwCn|vrx-Y@SW z)m?aoRFPY;yb-WXCE8(QX?)5UE+~m6P>tc3#YKts>pkt#s7@V;CLVydvh*DTV?iC; zMl>tU$w{0J49v5XX$=Hqk@wU-q7bt8oU^E->+&mnq{kH|k4RHGrk2oh0W5aNCLgXn zTu^a&Baic#BSchCH4XC(hI$^};2rh1Mz|>Qkg?}Ilis_n8163}FCksvycZ$_sW4{5 zRJYW=+}>@M;(AG-D%xm#6j)Xmm_waTfS$OHfh1lQ}+`Jjp4U zpK=Xo2O?cG54y5$e&RI1+rB%xx!GUcxlDSdD@@{++)R54Y?g39HFA;5C6B1UyY}$b zOV+9H#uSc4_= zD+=>3<1C|5$XpOJX*^XEk4q)f5Fv8){esZqVw1yCR+L*&ls9G!SC|6x#*IXLm1FFl z!W2Uy(s&wwWS2$;v=O^E9*GLsL-EK!RPo!dW)a~QZ)HRiv$87e9nua6T@5=e`)aMW z(b`=O16S(KFtmFwi7erGnS;53+`8=M0t#*8G$2U3l@ylX)?(9VWY-?b78lo@mXZ3$ zr9F&c+GQ>`q{6=A@tTI~n-+OAF#|h}T%k`f7^=lvDrITKdvFcTH$PwJo05c=6N!Lm zBW}mJW{+x5qg9d90c~S6&TbrPY{bt)171g;FpEeYYYz@e(fz5;W`nj-h{US1W44XW z*6O;Agln=qn9}h0)cGqGuN*D;M!-_7S^b| z`qcGfjYCDHQpHVkR~K(B%H|A);Sria#f9LLRs!B8tq}n0S3U$H(t*d1}plck` z)kvzV>6H!V1-$j-d2*(2XPScfoK|bLM#L9SH9F@67MX)@v8-QvxYDrlgU>8XUga&y z1Qxf3&*!Tw{>im#pZUS&jmdQbkI57WxEINy6raVSutZ{&;wC4T^h}*EY&6HFY%$;b z)JBeS1H94b5S(!UxI5~`A*{wmyM3rJE@clzvZ|4>xrr8#MuNW>U<=v!x2FTbmeLkB zGH$!%O8IQf`APNBBHBW`d)8>VX0F?%?E{K+HABR2OqaFuYhyp`@HgrMVC~E0CrYw}#CVt<&LxsYtBS zi@*g}#O`Tn&6w1c1V~gc!Vgiqt-PG z*@rcn65;7tP0c=wf^wpyp_;GMdnobFtK(b!gTV(g{;S*Cfgzo`x%oJ_hySmpa}?@V z-)@br5&s!`ck|)8EW|ae^Yin>A(05UEX%<$2mSpE6(+NZQ(+n#>+14tv`4%rQxQ02 zqjqS>TGQz2RKvLRN?W%JPMnB?_YT(KVN3V97WWp}>LK6)x>1;zPVJoObUL-JQP^B# zXiEHRT4xUNs>^?a87NG8AkEJP!x?5gy%k*#jVMBwgjvrwm2<8x}%LZKF` zvAH2Amn(+3eAzICO!n{@OhziD3YK1=LZ9L+`OFm+X5=Xx^vL3I92Jph1fJ@$>e^;I zA}&cPRbuPZ35DKpd`JymVx8T&b4p_-U?5^AWN@>02iFu919Mm)7O|)) zF_&!V=gVg?t^^sjc+7`651-jQVTwlsiD+CKiSNYK5PGEhwX*?9j$U6-)xD#RODYrK z0q;{_t0k+9Dq|0aqyO-Z{w;Vm!iU<(hMvw({Cv$JlEIHa+ko@%?R zF?5D&dlHRaeFk23V^7Z^ePsX6;rYFN)(E4{On1Y)=@2vABkOlMom=vCnMu0^NY7w2c4J`wFl<;kJghnIs2>q`735f8UJr}1^z8T+!Rw!^9AXQbF^}EX2k#wX zHv&`07UBaT@%-M$2PfC(1Su6WBo>QAqG1Y!s<`b#XOUb4*{}{Hq%rf@m=u<^B_eTR zfcgPkqx5ME7m1X5cMiSWR$h*NX9sw7ZFogJtM-W2>Z5s9)jOH{DaMilO%J}w*fhrd z=A->P;63c9=drrX1%!E7i2AXut$w`u1?^h6PEB@mLmPnESQ%KI4xy#FX7tS;uC2)g z0@a9E%n(sji(;~9Fo#6uULZpsD@xnqaohA#EDqlGXhho6v;Uwo?zKtKx;$Zt^?DYC zBBDR-yc)~1&TATWTx#JE^4;uCABjeZwM(ic_}8WGlIuIdh+3zUNSc!{?_tAXH+YxK zbb?nTs-x)r@~wwke);`u_8GhFsI$4IZMUyM2iVL~<8zzu-W~)lcnvIum?Gv=SQIfi zWP#)Y#f8&a!N{=>MH7;x`DhdwZZz6GI~!c-FvidWggh`?a7jDZm@h+7@EU)}Vtt;^;FDhhb{{186T;~^Cn(h9+w z7V)n~!COwZgBKR|ZXX;R?bG=hg@a#<+G-SP!Aj3;rO7mnI}+W}EW~r|fL4v-UuTuX zVlhrW$rM=4^apZEB;Kf6-Q0a*KV4}%JnTE{9vPubl;kLtX%9=};jqSE^bb0>?)NSf zPe{0G5V4a4A2sg|ex2M066O76Dp>lqY}ITpyuL>?g_3A%Q?(w(+&S1V~^ z!&r)@A?CLN2_(ZUsg2Wy+lS4!&)cD)n^!a*CHz-ZC!$!!dpEbXHU}T+Rf-cHQ@$u? z59s=c6AnjRHbfJo4ru?%!7B(+7yxDpyXp}hR&`K(-Q>IzrD1jSopOwZtq(hNXe{E%&p%SPx8)Yd&YJ1;S zRa#0IIoVdzS)EGzvJi12ZIC92X*EI@bR}APOr*5iU4|VQklNdJIyyBX>j2W2gY$OY zNLm`Bh*AYFir|IRg2QS@Z!#!g@Z?+LsZgk$O(Z>#qcZo?+S+!L!Oea-{9(=^7^YB} zOjwvNLYt0D;$WgyBhn{^2;Ri(tW-KH9k4&DE>lwY0+l}OHW&;l2c(cHpSd(Ril+-S z)O66(Sy69QyS>dNWJh-FQmh84x5aKMHW!SQO4_}IzG-dO^8y3by_tn(2}LYvON%|q z7hmLHWSi>l@k}1%h%Y{=Q}3)8xJ)M9b;efjBGIXVb@9-RfxYqc=~r;R4AUzZ;DOCuX4^t7077}iMKDkAuv5XD+=72RAio5b@4 zYO-xvW=&;}I&;vgiIFdFch7N8XHP4{PE%RCw84dq*g+RPVh=o+>^rlGQ&u~RA`-m_ zf8dKK$kvo%?#S@m%IVpiQU>?Q3G-9X_RR5{mkRD6|+FOV1L3m(-H^`*&FmAu{O5@u<9 zR}u&iI6sj}&Lk`ZvlsOYk%)yIPo~^g2xN=( zBa5GTcwEy_CgMJ>*Vy{@YIghfU|wvue(=iXQWOf4#sx2lL?Vj}9!5eSfUXVFf4p%*zbcK>nSeeB{14d9!Q#o(Q1ar5V)((!Z zTfoHIM>4Uy*VcCc1@>XayetOtGVoGa1TV+zHe$MSHDZU>fN4ZxpIqOT3G~|s{Rhc$ zl|f)g8Sq1BU0@J}|Nc&wYQgf6Ie##GoM0dT~oB?|=0bC_lY>HQDDKH_PsCU9DFQr&@4n z{dWJ>`kZWiO?Hc!N4NrXAO-`t`E_W(n_^yRG!b6)me{64xDGn_ zP%(#t!lDpE5~MNnF2cOvEiCM!mznC)8}?{|9-g900`!88&T_q`Dml6bTt7}2g<{Si zvp6OV0tYB)K?Y?BM-0#dBi3-Pw z%rfqnb2w68_|^xW|J&dG{0}u7ym#L?->9qTGMl;p&6zOyh`CnZ*jQ^ZI@udIKy0>Z zcbU7qrRSvQF7a3+Jksbp&uv3f;t;&7l%W63%}r;2+4$U?GdS9ZqgZ%m4L<1Wdu3Cx zzAjsLu&9v!GIJ4BEYz3Cl|=D zQ5|#2FMRNWpZn{t{`|K;N6)lb-}(4+$x0Gu8C@$Ms#ITWgSa*9Gf%)lxOHBu)!wsG zsc{F;xnT=y?tT21pZw0(@80{(BNYYl44a1~=qGUdkJ>tJ_Vp2rnw!7Dpv6gRL9~A(aOYdeJJyZE%5n zeGVFO>*qfBp$}0ip8vxiUi(KR>$z86ef6e~R2K_}!`NxD7;ZeTuD&#FULsoW%V^+h2b2x$oTG)}%Zv28F?;TDJO~_s2sP=-J0;2jFOHsOcMhb#h^0 zO=Vb@i7AZCGz=FzjsaY1S$Ci^y)i{Bdw{M?6=(z&jiI3J&SBfp3_3SxgWeiAtk- zb!dt~1CZ#1C?8Rwt7{it{o^;kzwOqbqR;Tk`{gI&4BE43#jXTr_V#cZ_q}p0wC<>{ zPZ`8CCX?_605e$>8ciA40VLIzm_kQQ67wmQ!v>2(W$3wcCp&OFI&-@@ZreW|bT0UB z$mvett_wc>g-?IbB53m8y%YV_+gZQ--4AcPx#srdFHM_GCKK_n39Of1!ZW=%RBB$A z3k}ESwt`ZZP?%BPw06ao^UW_U%*iZ-aF@qWSkTB)j8F|p=sHO_0+HstYM?FFGl%&+ zE+QG6frw{J3XM4}m6mH#xJ}@Vuf_@#%2-%0LI|iYIlOZicrZHJXMO4C-}q^K#kt@N zj+gh&A-*WT_Vbr3#sz{!e>OCvtQ)`m;k8AcSkJ;Z0&Xq&UV6HI@xo^b15>#hkXK#S z5_g+U*NBBe*hsJL@0BfDWJ-@ne35ZtNm(om8bdXRB=YX)=;+?wN^nzv2*waGxOq>v z8a!u&`&ea@+R$dl4S7~9ZcK|*dSe(#v}0Ja1Kj=F$-d@ay!?~D{N&eh4EBx6t7;Lw zuXR2D`pX_U;zUzPv-UKr=~@#HJqAyjN-pML{=^)9ii>AYnK(sMW<`RS3)pw}=-|FO z;gImGgDyF`lHv&zdcKF1M^%g~5Ma4X733cTB%&I?`LW2QahVKShBl8(39(?@9Ivzr z1LgXOC6jS=-XuaRXADKCAmwg3ywkq1+t+ru`ttYQ{@bs9E=~3hK6o_iT$8U|`|Rtl zf7$>?K)AmnmpKIdrk*?6tXt@Z5Nnu)QEp7-6q}ZTI}Ki3U@fLnANvLx)vlJxXQ8<1 ztkD11R)1CJaRHa1R6?b~g8!J@4OUss4?ew_VI#)Mjq0SzRZ|vP< zAg{#KHw;Md64WCpxik2~$+dMyrWr)bcy0(8ONgQDKn56%+j~mVtO@hH*B-MVj`ZcXU&DI)t>eDi_xdtw_YH#gYla&OenN6NNoGynf`xB2HQiE) z3js{<788%9gLOZ#^bt-)F@w4x)U|c1XFD6!aVeh9b9`Jym$a<7Dd}__1!q^ria2qR z&u|&TDwPVfz{MZK>LG!{ARaDP4}cfI?fT&{I77G59i|Vn7&H-DWucM|qw!D&A@rxu zzecR@{bXgA;0-#_99?+fyWjo!7-o$YCUMv~v#wpM2QB(bDmVm{1YU?lOE0_tTs+B% z;AQ0;HFS2WXJ>_Mt5sTFVq2-Ahr3&j_@X)lG%}ayv|+)-%n@2%1~mf@pJs}Y#H#3> zX9Gh+u&=s9pO!?uKD}UgL}fs_&uc#&uu=4S_fB&&`%L-;z+yfBi`~BD?Y0NW;AC&_ zjTgT1`s=Sh|JGa6avA!i|77ZHW7;aCINr~I?-6mgw3QZ9WBNiZO;?ciGN7fUrDZUI z%9~}-mW+Y4qk*~&4HE}!FbY*GgCUghmb7zNH^53Zbg0xh5mDmMu$WA(i&OW-#Q1+o zd^suI$Nf0>+~=Nq&iNl0?|e7NZEbz$oz_7F1QB}>OD#HZ;Em^J-#fPV8SwJ?=1^E- zc1~nzQG^$jl=AqZHgmBMZ4&^q1nk}X0Ff*cNC6D@0+pg2E%~GQ861ng0JP+V;P5sR zWt@|5$^?!UPm9>CsI{&&o}qO#&!{huDDUECBjIqnCfMNbn+&^L0|%SN-dp-|X=&-h z50`Gg=WRX3==%0sy0z;a02fl=MJB#~&oj@b?u8)w`D!?L55?7`OowU;s`5&e5)50F zGAl(XLb6IR+smb&NsY(RN@&@Rn4bkC7|@)@+oD2N$Zs=ivk2^qFDtb*%o7;OLD`^^ z(^{4ZL1XcE7nXC-2Z{2}*e7B4#!-JGLaka+M;{ zlgh>Dlay{j!iZBrz(%(_A1~uA^5zrhOd)WIZ}qRdCBgtTS@$&UGo7?n$_vZ(9Y;<7 zT)w7l)0j0GcL&i+Y~!=E$;`?5$WmB-cpEz%w&FO6Hmz#)#xC!N zZ|$UIA_*~#r%$47<3ddUJqJu9s&C!6$2dFOH8}bXc;6YM*^jb_NV^EU&qMyaC+Qie z`U&qsxV*8->9n1MgN-@IZJcRyF{XoZe7H( z=8TyQ^O>9Thh(G7^uFLcfRW2DuH-RrXS5Wait*A(==N8?vG?(KX!d7`Ap_onUL;4C zT~MG*&+yPXt9GISvPzvsuH%{0^pb#icS@gMSz5_!vsCtCc7Fs7ol?tTOb_Llq5tS? zehn3v` zNay&XP(_8WrnH|&baO=H1J&P~sBM+tbr7{Dysn)&j>V_^9-%>n>XajTF3Zx& zV`J%)6EWUT&wstx?mAD*DUc1FcQqX>V{j=&i<>Kxab+|GTsEYE$Qqz>#SbwScs*s7 zNF=jNuCa3kw&`h+POVF{q@~q#iUkfCOogK=K~&eJ~6f-eWGMkStF^h$HxMg!BU^0~Hyp)6D@KS6B zT|!T>(K=z_v^X3xx7T3UEB00!(9uZZdTj|1bL`riC?S?2jIlx_F-6!v-Lq}ya!Fkk z{`HzGw%WI}6H~q(W2F4n#s<A21P3h z!Ar@wkWxL$25&4ui-+MKa{O|oUQtyfP@{1=y_AghVibkaERTdItZ8x98jhQy?KkYdy`MR%@c~YHOL_a(pbvL(pkbY?OXbZ@T5^6sagdo0ls-_ z^^dH%O{E_F$(e zMM{Kr6$`mMo`EsFjlN&jm`p_^*nh_05+D~vZb(Sb#{fs814_x*eUU{ftKUC)0&jJa9wYI7#om8 z29L+aSr{4Vt;5kP0_|=<#FR1|qF5wz0e0eB1Orz^n$Ie`myeCR?Gxo=Q*)8PkE>DWs}sWDzc zOS9QxOzDUj|rn`MgIWy)D#35I_iL4yB7;jJp3L=q!adOLv zb#E!@Tk}DGUdN(B;2c{y$Z*IC6}3)O)>_0Yy85N7FC8m_px>>+fzG|kPqFEcOjcG@ zNaChLArYpU!bX!9&nFd(AMWRHgkcL#+60Z=t4T~r9$`XH4Nw>qmAySs)V>7Avd}8z zqTb-49S(ss>ds3Ss=UnfbTZ_F^mb8rVTru-tbXzte2s9x>FFBl7-i!ek&PCn&wqSn zC6|4;p<`u?LCb0@$A_Uvkx31v9L}+;FJbM3-7aP&Y2Y7BBieeyZ4;&}Ee_UgiZXyJhvu!yuKT$ZC*#-c=G4FyughO(d@W>7#iM(V-GDm439cpmsT9! z#^ST%uI~-HU?8xWNY>}r;as+diP$3%$XsZ%7H4Uve4zx2D(u%w;&kXlz+vntwNQsg z1KH05PJCX%x8Z7HGsei1lhF_>dIrzHSX)Swn4w0!jZ?}yt1e44_!7Ljl<}GFrm^n& zJm{^OKLIds1Cls0dba-Sz^PG(Z18NyP_7Ijpu(Zi;g7n9I}pFaLPX3*7cXAixk&7z z@dSgMg;GLxh(p$_aQF+!Z)aO4B-W{^kd2}};FV-^$!|_lT~OdJW^vL zT0_nVo>@W^Q!&@zQ&Xz4eyt>8q1n5h|(Rm`Kz{l2e{LCZvy4}-UbXQT5_C3=T!S+@p6J}9hKAt5G96zyp`i^UEAUJBV%X0@B;Auvl#D@kLI-c@JO$S|MtR2iUE6=vXn^9r^-}vb-xjX z_ScA)1W5o+N>TyVV8_W!vM#i<$;|A1Qf^_cx@R6Ej6rl!&OP(!{U6+&z5MFs{f|KD z8$GvX${0_#7WdSX-qQNwGG90`haBB{c)ai9FI)=QzEh_J(~X#io5KvA|ECV*f%zGE z=)hSRufGdmaQ?#!ewb0OH`n#|F1+2#geppRvVcs^O_k+)ZT(g}kD8-W7T!BNZd3p; zcHvEZ9H4A`5TQg;%3ZD>7~0AVqC0?kaOdMs-gn{d?EcG_;om18{)L`cGpj?>N>hF4 zAcTWWUmesXltScG^;wBO=o&zM_f&<}E}LA-(vuO#VAG%jHG+J!XgzZ9!lVE2!mbhC zk1)4W+%OgHuN%P$Y%rWI0It%c_Gp&tOyGSjDwVdV#LG_AqX113*u_t<2r+0O>W$h> zJKY0*oY2q$D?d1vSH1kgL0^h*(#q;`~+~>a5v@pl6C1@nQ>-M-ef&WkXPn|o5jadM+=>ozF6#ne8;qgSeX0z zN}7IdCrzZ_I?yrAZHXfEqu_l#c8eXsSIoUJ{~A%q(ONSnM~)uV+0>e5!+ zGh&I;8|#wT0#=#VbExSM=Jn_|O`AUVFArc;fOK0G!$V`;!C+?Ej=!lP=e<4g&whU4 zI(TCS-XtEgHjx>^7VPExlH&HSzWT}^h%`nv#|EG_Udfk@o{C$;&}pP^Wo&WASxXCK z8P2?;_3hhoj17Y~2E1$k@>;ce@WxH$EvwbbiDf4mO*j|KYMq+j+h1&q>!;Wbw#ShF zHj2}3wxTo;H&w4=KR~*H59SXK3~Wu#Pc>}zjRE(u`280yT)%$#^7RYX!Tah{_dj4r zP#ZMqAzxp;!FyPLetrGYWWC z81IsRfL(jx+BI_gzPsyR66kShA@oJnN8di$)@bgXAiPJBgZU;hLn^l5QL0SkIn;ho z#*SJdb4JUI)A2yk14*^R!vjtJ$p$i2?YAJ)+kflUh3laGFXK|HZcyO{Ds)P`;IK3f7as!sn2I4Hr9)C$2f9clhcedXos#`dHI2N zUjOhn9}T;s)X1ODIN zd_7T1N)}YRS|W3;x2PXHt))@5-z`vq7xj?!;7!lSuHjenk&ygxcicbNC=?&ur!lu; z7g>3vueI~VJGgAy^77P_)8_N~2(8TlLDs507VDPW`rSs8f5*QP}@N0Z}0Poj`hlbi!L$pP5 zQlkDPU%hJ!L))!GyPFfdcFO=d$k?d^GJbbXarYl7^7jAjr z4sM1s5(`dEd7V?>B~c9N`n1%Z8fi~XrdV~z-12>N4XXTA?Omvnoi&^@YK(2q9?%Dn zIN)Iuw8vUo_3iBjxwt-x;>7vs=_HadT;l~f91LE}5BF72Dz&V}C3d;QZ``M1DEp|o zMnxxhr5IT0so8Y{-PzUMx$lD(1&*VEfLUX}3fo6YpgjrP`K2kZ7cM5ej6X%#?Wq0osF$K0)QIe;0Jtp3Z{+1W{F z(zRfSPZGe5^G-B0z`cy5xmluixm+*R>Qq`vcU`k3&Z}dt%TCDzaHX`kxLZ_oCzb~C zJlol-N7WOnJkE3O;ARVFW3hR{I|XE?bF4RwW%Cyn-jKbnj!2`q_KfLun?>AR@??dz=90XDc!&od> zivg<3m%12C5O!*PUS&!qL@qfBl(R%dk_lLe^58+YMsH{(rtRURpl4xzetvvBh|LEO zk2wl^Z8k?)VcPZiFK)v;ovrCQf;YWSA2w+8rlMz!a|;WBkOn;yNOZ$tc=*^ccT20A zI9MfbF#}wzNg~Se7-OIR$D6<<<84%{70ZyOYAF?iJWmVWHTz{a5I|8>{$9l8Q-pSJV8IK3VQ)CK8M3j{k7T&h`?nl`WjVMQ{ z>D!S9MXiDGT<1#<{Bgh#3N3^TXcqqL+=aOiQCh+GY5^yJRdVvTIEl#B0+KlSs(a)9 zt)RgxkT&P*bToygIhv*^Mp`Ga&=jT3-}`7L|p^7qy*50lzb_uYJ&H1hJWU zAvNP7`au@KyR;Mx0@#O1jYKeuRaRJV{hIY0oYWfV3Zl5bLYI%6KK;~FTaLtWG2X;# zF_7c9lB6e}11@;udC%YEmbp`3|BX~fOzW^(xF{Wf@4c&H=SH!LX6mG}-3&$1d3zpU zr{eNC9w(JuFKDYiWK|9y?ECqi<|>I%Z{gmY9$i_4MIt{D;2^@+IhI)7%3x_J?7c7i zdE52kaO=oK&n6R=19w*_yzuGiqX(YV7~J6x8zyRNPjBgKg~{c>j9Y^DljlA^1!TxW zlfeBPH~qm%O0*^|Wl@W@z>V`hu|bWwft-e5kQVRVlV6+xL3a)W1-WRIrT6t&5B7c5 zTveqO*Z9+g%PWxxad3p}w$BGW(_p=d+gp}akn%#^&9|*J8;+eC+ElK=tZN)D3C;cZ z+r(gz(T$N7KvTj<$q`KBt%>FsG)w_ltOoB_L?jw=r2zi=Z)o(R18QX0u2uodLU8ft zgWI>)>eP7F*gYUUN$a#KNEa(IQdtlz2eC+yy}Q+niM`)sGD@~J3T?}=*dmC*3tWWo zB(et|;-R;!7gkodIwiR-_qIB-{@77jw^?p7nfanF2!1p?Q(UA8n`BiIDPJIy?tbz4 zjq=t*AO(>^Db3m-Sb)hbbDLY_Z8euvo|`+q?li1^qg5tDd`3j!y!YJvLk46Y|U zqSPT0hU{1xU>IKaZrQ%2mPSC(Xx3pU8u=izCo>Zo^c+?)F4jOBsaY=X@91dD;_#eN zj4)sVmkhX-$mH?hv@gM%urkQsC#Q(ydWlL^mM9BVx$W?EnsyBh|w)OahezY)#7WwtCkI{ zp|fyj69yc1-cWf(PnT-2yp+r1IHOB3ENgN9!oe#s?@}a)3<9`_Ul?4R2G3;*-Zm zmC7NC@RIn|qUC5y0|iuz4A3fdP1~L~Ur5CbkNCy}IJIXNb+TBLoNS9mJ)Wi565@g2 zuBiIe z_@r(xBz=i52r!%bCX`CKekZa=@M6Y|5eFj{rXoL$6JEF%Mpy|nMEf_dcggDNAOG&D z*9UWQWUU&6uPh@~2w`sCm~T3`ygWW1nI8{&vBn5lQ1(x|HCdvT36h?KgJ+15#XA(j z3vv^b*gCAFm}|VFTH?uP0Zyd3v!$J-^QleL)(;h6pLAW>q z+?a2Aab;QsnM;avbPK}G`^ZLLsJ1UJFE?j_Pmu!^RK81T}Pla&hX zgF7-f#J_Q3n{(U6E6Z1+PH&tyI8Mgf`7tsNN5(x~9|?!6;|;__s6S zd0#^gd}iN}xykQ2GY(#CBLnxZ@iRe8-jg=J5WEmaW-F3f-amoh1u%$1bD>Z;6z)@6 zhqjg|DebihqUNz$JRog(h_N!wzmRpBUrFmOC3F6Bu!CodU6~p`@AM%vC+-c#;NK|+ zaPi5!hq(9u=|RXVyY<#v3m~A%-H+OaKp^i!H?+QQBTm-~vF`$00=x+Co`HK4xwD@~ zqB=D#X=H=(*UPX4SSSpen+xx=DoYwFbcC0DP_ELKU)y;f8Yy){+WKb7ZjtfVGIpwm z4Ool|m@Tq2H3cp&931p`&cq@y@7OYEV@t6!o+$zxcWfB~!odUXYAC+4IUFu2!%BD8 znDEqBd`kw)iG4WuH$glf$DQ^PUNW_%BV|c)xtcEn7#6w=?}GQjT&r~$JLaQWh9(ZC z>)P6yAG~*!a(L%&3l~WAosh0xgDH0@v3&yA)X>z{fp^ zU*MAAhG7rhH1Gl#qWJ7A#s1BT{fe5F&KqyYNO#2Fo`i?7KTB}E30(B30yr%->Dj>n zBcYuGX9&RNIsLi00677)UCR&$uOFxuG+XSuP@h7ZiqaxdJW??_kW-m|H&vV-j|VdM zEI+gCopL&l6WrxkWXa~3bxtoufP3EKnI^bSADPXrUXKO$LaUoxu$8qLic4DijhQJ0 z7zX&Q(OeYYm<|4i>jW-%;b0d0Ti!OnpZk^IUNE>x0;ktN2CK7T=MyD5ji%HHRz>2r?HuPM7Lq_44&*}9N;vgacmcaGJc^!n8#m0VC z{eWx^b^*W!H!fo`lE)GI_9se)P%l^GAg;+?fv(!SsUc*IN~N~E+CDMF&#l?GEfet-pK|Rtt@VbXqO>CuA z7K@fq+Z$jN>n!#mL<9!g+6NvUw&W@-H{FzdGj4({LQhxx((R^RVAfJYoYb zSx^0VW^;fTVRPvcH>*aja=qPDfZGJ1g^pWb*bo{lDB$4oMV5o`5(j$`6EN@+T3ftW z2wWHoyyaDpnJ5=wPom?T$q3Wv-R?QFb!!)+qUjAZvmKS>Rl_<7Z6CE(45`)i*=v+K zQIUn-sQ6=30U>6s_D9c0XPqcLIT{`QFUcivyPm%E^13y9wsCkYp?}N)=Un_=n8j5P z8Lu6jxZWz9%WcFdWFj~Y_mZL&zJ+%Z)YCwQd%+45!gvXb^H!B&m#Z6MMEz(OM^nFs z#08%37>3%g(L(KPXxO=Z*veQ?*|C=B)Dltl2CF(}w@xd~$$@HHDn59#z$GPKKZFC{ zynh!azmJ~Se)jCyL+hJ_4u{{*OZ)Q8&BCTeuGoxb`s`HfZxEqzBnKI=)#QR<{6Fx* zoG>rUH1LE#U_>kLC9>hK68=p_Bsf#bJA&pA-|uU{SxmKZnuJ77&H^H zNy<%5x~F_FjCx8-eL42^%1s&*&d>Ct8T6dSpd!}Zg;FChMb5k=9Up&lXZQFyE{TI>v@^tNK97rx1g2Zjt>+4?L^F`wqPw!1e zI5+Y*GVo@l!?(nUXrg!~aN>P#8d-T7{Xj({j^ELH@fGx1u0m#rTItraT{qQ8>v4iD zNz`TtiR=3%lBxqJ4OVN~^%|2=W74?YZqzcxGD(Yl6kQ{*QJvO8+wDWEhAe`$Yb_L$ z_xz{?%@dVtAzIGfhMp9~jyAv!9WkjO5C#9>fonUh*camcZhDQRREBc@K-BvVP( zdfZ+3gQgD;&-*){=lk3_^R9zbDAa5rn`e8@_VsF;ji(&7?S#IJ5PuKu zBm}#B7IQSRdYN>g+Q_nZc$f|;*}9BfuW&;@=apI5ZFihlz1(V)t0$G-Q0wH@Q)^1C zZq;+sQCLeTG^I8X!d*+-Wh>p*S#|K>!2<^l9yr*-2DGa2lNzgIMpDZXgoazR4iowl zlO}R;5tm?aX6CP7v*ZcVib&Cdu*+rtok>=fTEZjaIEBOG@^4oY6puXod);(SSRV ztv*DgvgL%WCu?J_g|_WH=?o?S`vfVxsNGLOTP%qp{H~RmH{)TZzUYATl^=)<>1!{~ z;+UO!!TYyd(`U6hlS;_lRW((ln&6eR4VOdfNJ%ZSD`OgxyTA^Oa7b8NW@Y6IaZ61L zd$`W3ox7-a3UOC8HZD5g2xoghc^lrPLe%U`LV&|xSzt?#q>1RbYRWA;=5Dz*I~xZ_ z$>mLDz^8PqwDUTW=%+*AwpT)NQtS^ zn(eLN3U7+=>d8Yd;H$X_(yrAboVg8lRis#=O~FVpR~b?asb&sf5vU@5OVA-A)k-ea3%Z5~4Vde? z&@D}O7~0a>SWlK!0bEtnQbKw}3#}QK)PG$di5SU3n*=V-^%%T<04sD6Vb^A|la7oM zUQFgUUvFqJ7M6;G)6^Q{@__*sFkO^^6}P7#rAJ~Bm!@*>d()r1ge>3(KPjXt*3u~&ZZA$>|Tv8S~$yjwC+vjN^UZIjit9W;k2Nx!^tyl5?q25ROzwHH<8lio=-1zUPMe{0Jww#``svCA78>7JwHzV zLJARvUo2WE%iC8T*l^06tSxbnQ4W8FEj-jkn3+7o)oNu2Zj-T_ z{>=gK8e9q|uGPw{+SX+nO_0XQxOUl4?TTNvx@V0fjL&7tw<}RpN zkgu7Ju34y>2P->3>D(T(kE5bhK|Y5?=ThV09n3 zi&w5*T$rj))+@A5(tcvz+$S49R%eRw+pA30RI8zt=Pg-&jzExb;F2n3bo3;^T?2S{ zV1$8fgb9g4W5H23i*1iYj0M@J95Hd(P=@-Xqi zVk^Kq%c9oNp*6_MFWT4FBg0J;YmBoSPb_Zlb0kY{8KUAPO!MA}N8Z7DWpkmdfBpQT zRa%qD;Slc{tYvM5dUy-;1t1sU-loyY%0WUH_aZ4ibg+>lR=3;fu$E0OE1T@phm@GY z0A8}D-V0#5$Z%pw`(inepu3MolNjJ15ak1}H@uPFHxCc{##=OjYA$I?LMBa=UU5o8 z)``f+E^4IzVTM4@Tfi()wwaBYjPI`p^TOa$@F=kkF7g2kvDB#Y2i_>6@%5 z_t`X>EDMRFR8La;+Nfg1OZIPSQ<~V~Q4Z}eK2ivVlP3kZf(LGBPye3&;+m?K<$dXH zr-^aGVmW)Ro6Uq}0Uq9=y9xDr0hV@_{v?qbtGET7d_Akc2ua7s@5IE^2#YQloo>;S zrkfe_G0lAxO>3_VV_;x16D8Vcq0(oPKN9nIPkLVd_676Ujj{h-c*~vlHmb_XQYo9| z-AwTzgBz|DLlCY~B0_*qGXD1C-|;1#tk~=Xm$Qv~aChmxbKTvapWOlRCOR{CJWOMY z$UxHnGCNx)SaJ|oA#0S0*xwf+&(NIsKv9rp4rDKcOsEg@90o6?Y#Pad3<-=RexeAe zVOw@!ddpG@M$L$2_<^ZmF*Q1OzU|$@o`npslRA39UG1 zNqVO{J>8mO>+L@G`Pi`?JMPPuh8;XP@&^tMk&=vDG=R#(`BpJezz=GO5UNn6G8_d~ zssjPWc;?tDlfEk|-bA&3qO3JS;*6bDAOA!}=*(I3_i_b(_=VLksaS`Ro7O5%oL;`9 z@P^m*J!PFm&|(5SA`b2!8f>Dn-EJsJV&9BZTXID2=jXmVc5KIjx#d%W6kraOG%$wJ zHAhS;{4o*O49%kFye6E4T{21ap2=46u$O39`qTQIl?P2+B@_}h@y5R8UvRzk6F14P zefHV$;@RzJwT7#j=$v~ZgSib}!7WOm77kvv_Z3A&uqw8{4%+@l`k(F}s6|_eZG|D7 zNH&CP_Vr3c97E(V=q5%}JS8P*fv}6Wp%Dr6Wcdv=8cv~k`ozaf2;!oWWHPEE{XD&z zY4{Krq7GCuNUKdIdtu$j#m{r7$0=mpV7pb4sVSIORSb^wA6{W<#jlE!g;%c)PpKS* zm^z0`Ry#yjLFKZppRsu4OrOC{2vag-+xPhxxO4LZZ$ge3k#)Qo%J!F7Rz@<2B|Det zlu?O;Q8tj|7MF-yQW!`>LKTr{rTMW>oH5NFt`0F(%O<^c<-%Fdf8S&w;jL!ju&iAm%TNnjj(;4}Ku;$9vg;!xQyh?6BKz}2XI12)Q;Uoif4P}As=za^U!WNW93 zdG*!RvKeE;i@qu6Ow|rOPbMA_DIA)tV5)(Ep@F)4pE3(7|2;9mcSZYQl?nOe$%f67(X_MXVFt_?T={>}n3u9Xu-(jOusI)aDDBzC1IR;oUVnUud za8I7D9qeM!T2YD0jQxY>XKt-cHJ6kmC7A7YQwaTjMtoT_0#)w{M6-#l|5xHU>2ah71U?&I0ZSfrT}oOTNGd;(ee?rvzv zvPEb(D`rkn)d5^lUGd;fImIbHh(C-1+#V+x-YVF4b zSa}~WJ6&zUN*qZV8pXK9;#l{HF)b$sOr09-F>YA!uJFp6RWWDQ#00{mDX#q$gJgi+ zLaD_q_uT(td%8hz&B>wuF*;gFST-S|fdtI8!kpWn8W`%T8)SnvSXaDLh;cF>;3Beh z%gz(0C44c3mI!8SHjk4~rMw;+AANR|fJkyAa4m1kEzJQ~P3S5OXZ#ayp6UlAZ;$zc z3b^nFK+D?GKQvs+l-e{nQ2hMfPd@wPu6yo|ZSS+AeM{L&1EpfT7=}U1jDDQPiIl_9&@nvR z(U9w=WZ7#v)0|jjG#i4y4OqqC^+bgv)G*0vTV0iGX}7+1crUzjW785sy@KVJ$M`Ij zS4L^aCQB(@it#V|2gbBV_KXY-ZN;k#7v8d~Q2~C4tht3dR|~F7{>fO0FY^vpP?4$r?B zdu>KisHPlUol%f2nW!~vL+w< z$^ES^WpKD;rq+VA!>=m1k6l0=#u@HN*xh@Mdq{Y58*(+U%IY0lf&H5ppDGbd@IuU| zzdz?IL6fKk&p0*v%=q!A`^V4BK9yOYm1WBk+^p<|hSF^a>{27X`I&qgE2{>0-u8@) zJpT9)Yuu+FdE=J((jnoNUAqY1g9%6wvOU9@7?Abe?R9fO-C)#)m z7s<1=>o%y^`?A{^!no6`gUyo!kG`0|>!`0e)f+tRZXLr`5 zhv<6GQ4F>(+m?%!#^c}VgzrC%IQXYs@-L%Alw1~h(?YjEPomuET8^KM^$oe(S4cg( zB91BVTd}p9RYMA|xb_iNi_a8z<ft?g%=<5MUkm~N=4*$F}?9tu+gF(=_Y-kAC?sJ5(**=Np12{>#6D`wtVpM)}LZD{b^ytkY~F z$cJ8X!MXKLr@@f6cxlanMVnWFNX*VdA?g?v%*ZZnSM}rIK{V5#+Zg5}eCXQ!?+E@Utz3%w z^O6RaY=x-g;_`(}vJD}JJST~I(y?RnBARNUDzgI#amhjo&dyRjy=MeodETIv&CYSb z#hyO=$tpl0MmP%bs9OP^b%Rz9F!~|DDvRUR)};z>8@zA9`{{Qba>$^g=`_nqfaUdX z+GuD!V?zLME{>R<${P`3i?GoUoG$MTS>^eg z#*S^BEdnq4sqDtn6&z*~x)Yui5dDFOWRFUPiLs5ui+Cu(Bw9nSMs3`&T33$P%A8|A}X zOi0L4h}Snha;<42?}aT%x#bzeQMaKTH#Ro54T<2*p0VOx)#Hr0Ljz}Sy!KR1>267} zph`{3JC5{n&~*Q6ufO^Vz{t+>;tK=eyR%}ot&G4D5Z`|cFwo6bs!Y$G|CE6E<^0&R zObsVX!7=IpfF-dgQcih6g%n(c7G8Xe`3DAxP5fqRWTHCJ7Vod-wAYqv*|3VC0Y#(@ z$JUQM!-|JBkCey zg5ON}X~o0h;yE|4DX1hKNMN)kWxCzz*jXGbBSg=pY1d54(J*fjw{nH4TpM~~*vB7I z3|dUV1^7DeHPW~E`pNKGQL;=Z38CTO*{4LYW!|C{$ByyP!OKf!Mi~f$m&@@#DKB2U z$l${l`6lY-jYobV+6CC-VIjWlfD7Q$NRb-ytm)vA0G+Qm7;UPv`Sd5=R30R)r=S#O zh6%poa@HrngX-ax_SCF2zR9|Kt|BF}3}A!HWiXiYl9D1io_TKbJbM2lcOesp#Dpp# zFE0TJ8!qGgWsjYxtIwH0tD-Y!9(?f3>_6}lqt9T20K=rJ~=LC!+h~As3_R3!&D(j<&)dbjLVrApw#Srg6hKCB;8-2 zTubUCFT|=ZvK2q_!zw8G2Qb6}e0z%kJMjgz^9eLY%;`B#GU12aXM5nauw2%^Jgs<=Kh|u$XKG?!VMhbu*|@J5({#$+}}rBd*d>r*=QuugE|=}-3=1> zy)%qSCOe5*?XfSun4xLdApyKdX+_R@9a8bF$6lTD^2~ddk|33mQtc}EdWv)Qaiywr zZuG@yza#JeNHZ1m&)2O(F!3S8iRR2Rq9Et2&->GKo<-${vhid;UW!T*yCalXqnMew z_4e>W%i*1T7ZeuDjTf2*W~U+3Xcy7n1R{eTSP2e8bu%6Q9^ARcH|L2J^vT{V5e%;f z6bJJr!KYD8J2FrSU?%*K<;9t|&@Evvjdi^W>xboNI8V*$ZRQoX;gUtVnNwad`EcN&aF z!U?Hgj?E-AuAQ4f6TxsH0=Rxc} zeX8gBQ=AO0pU?F5cV5GAAbCGYYRLu8u$#^HR4ez9_uqLE%u&;_nb<5sqr~>3rFcBx?=${1I_%+hDA?-I}iT?jJ-|e_hN7> zY1>w0x5MiJHftx|R4@f~Z>@IH)FbG9y`=y%dP#gQ;G=4_VcXLSoEx) z06g0wq5%as2F+wSDEDNRu!{7XTE1q2Q5~FRlhwe!-d?V?1HAkq%ftGt&1r>n(!BqU z=L#w7oG;`3{B7j5ZCJ60sZMoRfjtE7-de#0lAc!v;gvTss|AR#k(tCj_>`O90=QdW zpm!w5@WW$bwOie7*N0)WmqW5-{g~olMhJH<=ghh+f>(os<(@|}M3hO5(PHu)M^B{X zXW2M+>ph2cbDTBoJJnB}5ti02ZO-psc=YPn_SN^!k>%m$ZI;qC?B6y#qq>rSID~+L z;O-aaDx~&m-gvp%UR2cTk)}XAp&;lz$=*Llf{|8>WRFAQ!D%!)%}H`6090OSPY>C~ zGRNWF+$>C|i%@IgNFECWm_zcYXg{^H_JvR8_FbQwW$XA59UGF=Kko&6IGaY^@tYXN zUVQM*hh`nUW6RPfXUZ05?L13v?wV(|ufJTSlHdjR#LD8;70`kTa5K2D+PPRRa!Gzc zL3pUhfBGLGJN=_!0mfiX!c2K04XqAWl7q5`djbCRoqgpBYdP? zb=jfATW-0dU7K?1MgpB%dMm2CWdO@fG4Wt9>&fS#n+XaPp)=llhaA!);g|x9PX$J& z6N#ia0gkW@A2~~EhYIZkAH;^R<+BN}{3 z!U(S>bGzBhU8k*K_`M^ae+n)yY61Y3I&g?-?mlV4Ex@jVcTVGK#OGKQ-nJ<2ipydB Y16X6zpA=ID{{R3007*qoM6N<$f|QHz4FCWD literal 0 HcmV?d00001