Files
DS-LLM-TEMPLATE-FINETUNING/unsloth_compiled_cache/__pycache__/UnslothGKDTrainer.cpython-311.pyc
T

189 lines
38 KiB
Plaintext
Raw Normal View History

2025-08-13 23:50:20 +00:00
§
3$h¦œãóüdZddlmZddlZddlmZddlmZddlmZm Z m
Z
m Z m Z m
Z
mZmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZm
Z
mZmZmZmZmZm Z m Z m!Z!m"Z"m#Z#m$Z$m%Z%mZm&Z&m'Z'm(Z(m)Z)mZm*Z*ddl&Z&ddlTddl+m,Z,m-Z-dd l.m/Z/ddlZddl0Z1dd
l2m3Z3ddlmZdd l4m5Z5m6Z7d d
d d
d
dœZ8ej9d d e8¬¦«d¦«Z:e,Gdde¦«¦«Z; Gdde¦«Z<Gdde<¦«Z=dS)z8
2025.8.4
2025.8.5
4.55.1
0.21.0
__UNSLOTH_VERSIONING__
é)ÚTensorN)Ú
functional)ÚAnyÚListÚOptionalÚTupleÚUnionÚDictÚSetÚCallable)!rÚAutoModelForCausalLMÚBaseImageProcessorr Ú DataCollatorÚDataCollatorForChatMLÚDatasetÚEvalPredictionÚFeatureExtractionMixinÚ GKDConfigÚ
GKDTrainerÚGenerationConfigrÚ
PeftConfigÚPreTrainedModelÚPreTrainedTokenizerBaseÚProcessorMixinÚ
SFTTrainerÚTrainerCallbackr Údisable_dropout_in_modelÚ empty_cacheÚgenerate_model_cardÚget_comet_experiment_urlÚis_wandb_availableÚnnÚosÚprepare_deepspeedÚrandomÚtextwrapÚtorchÚunwrap_model_for_generation)Ú*)Ú dataclassÚfield)ÚVersion)Ú nullcontext)ÚDataCollatorForSeq2SeqÚDataCollatorForLanguageModelingTF)Úepilogue_fusionÚ max_autotuneÚ
shape_paddingz
trace.enabledztriton.cudagraphs)ÚdynamicÚ fullgraphÚoptionscó’tj| d|jd¦«dd¬¦«}tj| d¦«dd¬¦«}g}t ||¦«D]\}}| tj¦«}tj|d| d¦«¬¦«  d¦«}tj
|d¬¦«}||z
} |  | ¦«Œ’ tj |¦«}| |jd|jdf¦«}|S)Néÿÿÿÿér)ÚchunksÚdim)r;Úindex©r;é)
r(ÚchunkÚreshapeÚshapeÚzipÚtoÚfloat32ÚgatherÚ unsqueezeÚsqueezeÚ logsumexpÚappendÚconcat)
Úlogitsr<Úchunked_logitsÚ
chunked_indexÚall_per_token_logpsÚ chunk_logitsÚ chunk_indexÚselected_logitsÚlogsumexp_valuesÚper_token_logpss
ú]/workspace/Fine-tuning/DS-LLM-TEMPLATE-FINETUNING/unsloth_compiled_cache/UnslothGKDTrainer.pyÚchunked_selective_log_softmaxrU"s5õ”[ §¢°°F´LÀÔ4DÑ!EÔ!EÐPQÐYZÐ[€NÝ”[ §¢¨rÑ!2Ô!2¸QÀaÐH€MØÐå%(¨¸Ñ%GÔ%Gð #—¥u¤}Ñ Ýœ, |¸2À{×G\ÒG\Ð]_ÑG`ÔG`Ða×iÐjlÑmˆÝ œ?¨<¸Ø)Ð,<Ñ<ˆØ×" Ýœ,Ð':ÑØ-×5°v´|ÀA´ÈÌ ÐUVÌÐ6XÑØ ÐócóÂeZdZUdZedddi¬¦«Zeeed<edddi¬¦«Z ee
ed < d/ˆfd.„ Z ˆxZ S)0ÚUnslothGKDConfigaB
Configuration class for [`GKDTrainer`].
This class includes only the parameters that are specific to GKD training. For a full list of training arguments,
please refer to the [`~transformers.TrainingArguments`] and [`SFTConfig`] documentation.
Args:
temperature (`float`, *optional*, defaults to `0.9`):
Temperature for sampling. The higher the temperature, the more random the completions.
lmbda (`float`, *optional*, defaults to `0.5`):
Lambda parameter that controls the student data fraction (i.e., the proportion of on-policy
student-generated outputs).
beta (`float`, *optional*, defaults to `0.5`):
Interpolation coefficient between `0.0` and `1.0` of the Generalized Jensen-Shannon Divergence loss. When
beta is `0.0`, the loss is the KL divergence. When beta is `1.0`, the loss is the Inverse KL Divergence.
max_new_tokens (`int`, *optional*, defaults to `128`):
Maximum number of tokens to generate per completion.
teacher_model_name_or_path (`str` or `None`, *optional*, defaults to `None`):
Model name or path of the teacher model. If `None`, the teacher model will be the same as the model being
trained.
teacher_model_init_kwargs (`dict[str, Any]]` or `None`, *optional*, defaults to `None`):
Keyword arguments to pass to `AutoModelForCausalLM.from_pretrained` when instantiating the teacher model
from a string.
disable_dropout (`bool`, *optional*, defaults to `True`):
Whether to disable dropout in the model.
seq_kd (`bool`, *optional*, defaults to `False`):
Seq_kd parameter that controls whether to perform Sequence-Level KD (can be viewed as supervised FT on
teacher-generated output).
helpzvLLM SamplingParams)ÚdefaultÚmetadataÚvllm_sampling_paramsr8z8Chunk size to reduce memory usage. -1 is most efficient.Úunsloth_num_chunksFÚnor9éréúç-Cëâ6
?ç{®Gáz„?çÍÌÌÌÌÌì?ç+‡ÙÎ÷ï?ç:Œ0âŽyE>çð?çlinearçš™™™™™¹?ÚpassiveÚwarningTÚstepsr>éôéO
ÚO1ÚautoÚçÚ
adamw_8bitÚlengthÚ
every_saveÚlastéÚtextéÚbfdçà?é€c› ó|dkrtd|d¦«|dkrtd|d¦«||#dkr
|$dkrd}d }#|…€!d
d lmt |œ¦«d zd ¦«}…|d
krt d
¦«|dkrt d¦«t
¦«jd¨id|d|d|d|d|d|d|d|d| “d|
d| d| d|
d|d|d|d |d!|d"|d#|d$|d%|d&|d'|d(|d)|d*|d+|d,|d-|d.|d/| “d0|!“d1|"“d2|#“d3|$“d4|%“d5|&“d6|'“d7|(“d8|)“d9|*“d:|+“d;|,“d<|-“d=|.“d>|/“d?|0“d@|1“dA|2“dB|3“dC|4“dD|5“dE|6“dF|7“dG|8“dH|9“dI|:“dJ|;“dK|<“dL|=“dM|>“dN|?“dO|@“dP|A“dQ|B“dR|C“dS|D“dT|E“dU|F“dV|G“dW|H“dX|I“dY|J“dZ|K“d[|L“d\|M“d]|N“d^|O“d_|P“d`|Q“da|R“db|S“dc|T“dd|U“de|V“df|W“dg|X“dh|Y“di|Z“dj|[“dk|\“dl|]“dm|^“dn|_“do|`“dp|a“dq|b“dr|c“ds|d“dt|e“du|f“dv|g“dw|h“dx|i“dy|j“dz|k“d{|l“d||m“d}|n“d~|o“d|p“d€|q“d|r“d|s“dƒ|t“d„|u“d…|v“d†|w“d‡|x“dˆ|y“d‰|z“dŠ|{“d||“dŒ|}“d|~“dŽ|d|€“d|d‘|‚“d’|ƒ“d“|„“d”|…“d•|†“d–|‡“d—|ˆ“d˜|‰“d™|Š“dš|‹“d›|Œ“dœ|d|Ž“dž|dŸ|d |‘“d¡|’“d¢|““d£|”“d¤|•“d¥|–“d¦|—“d§|˜“|›¤Ž|™|_|š|_ dS)©NgH¯¼šò×z>z Unsloth: Your learning rate of `zi` is too small and less than 1e-7! Consider increasing it, otherwise gradient updates will be close to 0!r>za` is way too larger > 1! Consider decreasing it to 1e-1, otherwise gradient updates will explode!rlrmÚunsloth_training_checkpointsr^r)Ú cpu_countr_zUUnsloth: Please set a positive non-zero temperature since your results will be wrong.é
zgUnsloth: Please set a positive non-zero temperature less than 10, since sampling will be quite erratic.Ú
output_dirÚoverwrite_output_dirÚdo_trainÚdo_evalÚ
do_predictÚ
eval_strategyÚprediction_loss_onlyÚper_device_train_batch_sizeÚper_device_eval_batch_sizeÚper_gpu_train_batch_sizeÚper_gpu_eval_batch_sizeÚgradient_accumulation_stepsÚeval_accumulation_stepsÚ
eval_delayÚtorch_empty_cache_stepsÚ
learning_rateÚ weight_decayÚ
adam_beta1Ú
adam_beta2Ú adam_epsilonÚ
max_grad_normÚnum_train_epochsÚ max_stepsÚlr_scheduler_typeÚ warmup_ratioÚ warmup_stepsÚ log_levelÚlog_level_replicaÚlog_on_each_nodeÚ logging_dirÚlogging_strategyÚlogging_first_stepÚ
logging_stepsÚlogging_nan_inf_filterÚ
save_strategyÚ
save_stepsÚsave_total_limitÚsave_safetensorsÚsave_on_each_nodeÚsave_only_modelÚ'restore_callback_states_from_checkpointÚno_cudaÚuse_cpuÚuse_mps_deviceÚseedÚ data_seedÚ
jit_mode_evalÚuse_ipexÚbf16Úfp16Úfp16_opt_levelÚhalf_precision_backendÚbf16_full_evalÚfp16_full_evalÚtf32Ú
local_rankÚ ddp_backendÚ
tpu_num_coresÚtpu_metrics_debugÚdebugÚdataloader_drop_lastÚ
eval_stepsÚdataloader_num_workersÚdataloader_prefetch_factorÚ
past_indexÚrun_nameÚ disable_tqdmÚremove_unused_columnsÚ label_namesÚload_best_model_at_endÚmetric_for_best_modelÚgreater_is_betterÚignore_data_skipÚfsdpÚfsdp_min_num_paramsÚ fsdp_configÚ"fsdp_transformer_layer_cls_to_wrapÚaccelerator_configÚ deepspeedÚlabel_smoothing_factorÚoptimÚ
optim_argsÚ adafactorÚgroup_by_lengthÚlength_column_nameÚ report_toÚddp_find_unused_parametersÚddp_bucket_cap_mbÚddp_broadcast_buffersÚdataloader_pin_memoryÚdataloader_persistent_workersÚskip_memory_metricsÚuse_legacy_prediction_loopÚ push_to_hubÚresume_from_checkpointÚ hub_model_idÚ hub_strategyÚ hub_tokenÚhub_private_repoÚhub_always_pushÚ hub_revisionÚgradient_checkpointingÚgradient_checkpointing_kwargsÚinclude_inputs_for_metricsÚeval_do_concat_batchesÚ fp16_backendÚpush_to_hub_model_idÚpush_to_hub_organizationÚpush_to_hub_tokenÚ
mp_parametersÚauto_find_batch_sizeÚfull_determinismÚ torchdynamoÚ ray_scopeÚ ddp_timeoutÚ
torch_compileÚtorch_compile_backendÚtorch_compile_modeÚinclude_tokens_per_secondÚinclude_num_input_tokens_seenÚneftune_noise_alphaÚoptim_target_modulesÚbatch_eval_metricsÚ
eval_on_startÚuse_liger_kernelÚliger_kernel_configÚeval_use_gather_objectÚaverage_tokens_across_devicesÚmodel_init_kwargsÚchat_template_pathÚdataset_text_fieldÚdataset_kwargsÚdataset_num_procÚ eos_tokenÚ pad_tokenÚ
max_lengthÚpackingÚpacking_strategyÚ padding_freeÚpad_to_multiple_ofÚ eval_packingÚcompletion_only_lossÚassistant_only_lossÚactivation_offloadingÚ temperatureÚlmbdaÚbetaÚmax_new_tokensÚteacher_model_name_or_pathÚteacher_model_init_kwargsÚdisable_dropoutÚseq_kd©)
ÚFloatingPointErrorÚ
OverflowErrorÚmultiprocessingrÚminÚ MathErrorÚsuperÚ__init__r\r])žÚselfrrr„r…r†r‡r‰rrrrrrr“r”r•r–r—r™rrr r­r¿rÿrrrrrrrrrr r
r r r
rrrrrrrrrrrr\r]ÚkwargsrÚ __class__sž €rTr zUnslothGKDConfig.__init__\s[
ø€ð| ˜ Ð Õ'9ð;VÐ]jð;Vð;Vð;Vñ(Wô(Wð"WØ ˜ Ð ¥Mð3FÐUbð3Fð3Fð3Fñ%Gô%GðGØ Ð  -°7Ò":Ð":¸zÈSÒ?PÐ?PØ7ˆ ˆ Ð " 9 9¡;¤;¨q¡=°!Ñ Ø ˜!Ò Ð ÝÐ
˜
Ð
ÝðFñGôGð
Gð ŒÔðXXX#˜ðX &à#7Ð#7ðX Xgð X
$˜ð X *˜
X$8Ð#7ðX+FÐ*EðX*DÐ)CðX(@Ð'?ðX'>Ð&=ðX+FÐ*EðX'>Ð&=ðX$˜ðX'>Ð&=ðX*˜Mð!X &ð"(˜<ð#X &ð$$˜ð%X &ð&$˜ð'X &ð((˜<ð)X &ð**˜Mð+X &ð,/ð-X &ð."˜ ð/X &ð0!2Ð 1ð1X &ð2(˜<ð3X &ð4(˜<ð5X &ð6"˜ ð7X &ð8!2Ð 1ð9X &ð:/ð;X &ð<&˜+ð=X &ð>/ð?X &ð@"4Ð!3ðAX &ðB*˜MðCX &ðD&<Ð%;ðEX &ðF*˜MðGX &ðH$˜ðIX &ðJ/ðKX &ðL/ðMX &ðN!2Ð 1ðOX &ðP.˜oðQX &ðR7^Ð6]ðSX &ðTgðUX &ðVgðWX &ðX,˜^ðYX &ðZ4ð[X &ð\"˜ ð]X &ð^*˜Mð_X &ð` xðaX &ðb4ðcX &ðd4ðeX &ðf,˜^ðgX &ðh&<Ð%;ðiX &ðj,˜^ðkX &ðl,˜^ðmX &ðn4ðoX &ðp$˜ðqX &ðr&˜+ðsX &ðt*˜MðuX &ðv!2Ð 1ðwX &ðxEðyX &ðz$8Ð#7ð{X &ð|$˜ð}X &ð~&<Ð%;ðX &ð@*DÐ)CðAX &ðB$˜ðCX &ðD xðEX &ðF(˜<ðGX &ðH%:Ð$9ðIX &ðJ&˜+ðKX &ðL&<Ð%;ðMX &ðN%:Ð$9ðOX &ðP!2Ð 1ðQX &ðR/ðSX &ðT4ðUX &ðV#6Ð"5ðWX &ðX&˜+ðYX &ðZ2TÐ1Sð[X &ð\"4Ð!3ð]X &ð^"˜ ð_X &ð`&<Ð%;ðaX &ðbEðcX &ðd$˜ðeX &ðf"˜ ðgX &ðh.˜oðiX &ðj"4Ð!3ðkX &ðl"˜ ðmX &ðn*DÐ)CðoX &ðp!2Ð 1ðqX &ðr%:Ð$9ðsX &ðt%:Ð$9ðuX &ðv-JÐ,IðwX &ðx#6Ð"5ðyX &ðz*DÐ)Cð{X &ð|&˜+ð}X &ð~&<Ð%;ðX &ð@(˜<ðAX &ðB(˜<ðCX &ðD"˜ ðEX &ðF/ðGX &ðH.˜oðIX &ðJ(˜<ðKX &ðL&<Ð%;ðMX &ðN-JÐ,IðOX &ðP*DÐ)CðQX &ðR&<Ð%;ðSX &ðT(˜<ðUX &ðV$8Ð#7ðWX &ðX(@Ð'?ðYX &ðZ!2Ð 1ð[X &ð\*˜Mð]X &ð^$8Ð#7ð_X &ð`/ðaX &ðb&˜+ðcX &ðd"˜ ðeX &ðf&˜+ðgX &ðh*˜MðiX &ðj%:Ð$9ðkX &ðl"4Ð!3ðmX &ðn)BÐ(AðoX &ðp-JÐ,IðqX &ðr#6Ð"5ðsX &ðt$8Ð#7ðuX &ðv"4Ð!3ðwX &ðx*˜MðyX &ðz/ð{X &ð|#6Ð"5ð}X &ð~&<Ð%;ðX &ð@-JÐ,IðAX &ðB!2Ð 1ðCX &ðD"4Ð!3ðEX &ðF"4Ð!3ðGX &ðH,˜^ðIX &ðJ/ðKX &ðL"˜ ðMX &ðN"˜ ðOX &ðP$˜ðQX &ðRgðSX &ðT/ðUX &ðV(˜<ðWX &ðX"4Ð!3ðYX &ðZ(˜<ð[X &ð\$8Ð#7ð]X &ð^#6Ð"5ð_X &ð`%:Ð$9ðaX &ðb&˜+ðcX &ðdEðeX &ðf4ðgX &ðh,˜^ðiX &ðj*DÐ)CðkX &ðl)BÐ(AðmX &ðn.˜oðoX &ðpV˜fðqXXX &ðr%9ˆÔ!Ø"4ˆÔÐÐrV)šNNFFFr^Fr9r9NNr_r_rr`rarbrcrdrerfrgr8rhrirrjrkTNrlFr>FrlrmNTFFFFFFrnrnFFFFrorpFFNr8NNFrqFNrNr8NNTNFNNFrqrNNNNrrrsNFFrtNNNNTFTFFNNruNNFNFNFTrpNNNrqTFNrvrwFNNFFNNFFFNFTNNrxNNNNryFrzFNNNFFrcr{r{r|NNTFNr8)
Ú__name__Ú
__module__Ú __qualname__Ú__doc__r,r\rrÚ__annotations__r]Úintr Ú
__classcell__©r#s@rTrXrX3ø€ððð>+0¨%ØØÐ+ñ+ô+И( 3œ-ððñð*/¨ØØÐ*ñ*ô*И #œððñð ØØØØØ$Ø&'Ø%&Ø#'Ø"&Ø&'Ø"#ØØ"%ØØØØØØØØØØØØØØØ!&ØØØØØØ27ØØØØØØØØØØØ!'ØØØØØØØØØ!"Ø%)ØØØØ $ØØ!&Ø $Ø Ø ØØØØ-1ØØ!$ØØØØØØ%)Ø Ø $Ø $Ø(-Ø"Ø%*ØØ!%ØØØØØØ!&Ø(,Ø%*Ø!%ØØ#Ø#'Ø ØØ ØØØØØ $Ø!Ø$)Ø(-ØØ Ø"Ø!&Ø(,Ø ØØØØØØØ ØØØ#Ø %ØØØØØ%)Ø$(ØØØðwFFFFFFFFFF5rVrXcóðeZdZddgZ d#deeeeje fdeeeje fdee
dee d ee d
eee e
e e ffd eeeeeefd eeege
fd
eeedeejjejjjfdeeejejgejfdeddeefˆfd
Ze d$d¦«Zd%dZ ed&d¦«Z! d&dejde
e eeje"ffdee#dejfˆfd
Z$ d'dee d ee d!ee ee dffd"„Z%ˆxZ&S)(Ú_UnslothGKDTrainerÚtrlÚgkdN©NNÚmodelÚ
teacher_modelÚargsÚ
data_collatorÚ
train_datasetÚ eval_datasetÚprocessing_classÚcompute_metricsÚ callbacksÚ
optimizersÚpreprocess_logits_for_metricsÚ peft_configrÚformatting_funccóÒd|_t||j¬¦«}t¦« |||||||| |
| | |
¬¦ « |ji}n[t
|t¦«std¦«|j}|ddvr|dntt|d¦«|d<t
|t¦«rtj |fi|¤Ž}|j
rt|j¦«|jrt#||j¦«|_n!|j |d¬¦«|_|j|_|j|_|j|_|j|_t3|j|jdd |jrdnd|jj¬
¦«|_t?|jjd ¦«r.|jjj |jjj |j_ dSdSdS) NF)Ú tokenizerr) r3r4r5r6r7r8r9r:r;r<r=zfYou passed teacher_model_init_kwargs to the GKDConfig, but your teacher_model is already instantiated.Ú torch_dtype)rpNT)Úevaluation_moder)rrÚ do_sampleÚtop_kÚ use_cacheÚ pad_token_idÚ eos_token_id)!rÄrrrr rÚ
isinstanceÚstrÚ
ValueErrorÚgetattrr(r
Úfrom_pretrainedrrr1Úis_deepspeed_enabledr%Ú acceleratorr2Ú
prepare_modelrrrrrrr7rEÚgeneration_configÚhasattrrF)r!r1r2r3r4r5r6r7r8r9r:r;r<r=rr#s €rTr z_UnslothGKDTrainer.__init__¨s3ø€ð&&+ˆÔ-Ð8HÐUYÔUdÐeˆ
å
Œ×ÒØ ØØØ!Ø*GØ ñ
ô
ð
ð Ô 1Ø(*Ð ˜M­
ÝØôð
ð)-Ô(FÐ -¨]Ô;¸*¨-ÔUÐ$=¸mÔ$LÑ
&  m¥SÑ  mÝÐlÐRkÐlˆMð Ô ð $ T¤ZÑ Ô  eÝ!2°=À$ÔBRÑ!SÔ!Sˆ Ð à!%Ô!1×!?Ò!?À
Ð_cÐ!?Ñ!dÔ!dˆ à”ZˆŒ
Ø”IˆŒ ØÔÔØ”kˆŒ å!1ØÔÔØØDeØÔ
"
ñ"
ô"
ˆÔõ
D”JÔ0°.Ñ  \à
ÔEà26´*Ô2NÔ2[ˆ  \ð \àErVr{rfÚ batchmeanc ó¸||z }||z }tj|d¬¦«}tj|d¬¦«}|dkrtj||dd¬¦«}nÏ|dkrtj||dd¬¦«}n°tj||j¬¦«}tjtj|tjd|z
¦«z|tj|¦«zg¦«d¬¦«} tj| |dd¬¦«}
tj| |dd¬¦«} ||
zd|z
| zz}||d
k} || }|d krk|)|  ¦«|   ¦«z n?|  ¦«| 
d¦«| 
d¦«zz S|d kr|  ¦«S|d
kr|  ¦«S|S)
Compute the generalized Jensen-Shannon Divergence loss for knowledge distillation using F.kl_div. See Eq. (1)
of https://huggingface.co/papers/2306.13649 for the definition.
Args:
student_logits:
Tensor of shape (batch_size, sequence_length, vocab_size)
teacher_logits:
Tensor of shape (batch_size, sequence_length, vocab_size)
labels:
Tensor of shape (batch_size, sequence_length) with -100 for padding tokens to ignore when computing
loss
beta:
Interpolation coefficient between 0 and 1 (default: 0.5)
temperature:
Softmax temperature (default: 1.0)
reduction:
Specifies the reduction to apply to the output (default: 'batchmean')
Returns:
loss: Scalar tensor with the generalized JSD loss
r8r=rÚnoneT)Ú reductionÚ
log_targetr>)ÚdtypeNéœÿÿÿrQÚsumÚmean) rÚ log_softmaxÚkl_divr(ÚtensorrVrHÚstackÚlogrXÚsizerY)
Ústudent_logitsÚteacher_logitsÚlabelsrrrTÚstudent_log_probsÚteacher_log_probsÚjsdÚmixture_log_probsÚ
kl_teacherÚ
kl_studentÚmasks
rTÚgeneralized_jsd_lossz'_UnslothGKDTrainer.generalized_jsd_lossþsð8(¨+Ñ5ˆØ'¨+Ñ5ˆõœM¨.¸bÐÝœM¨.¸bÐà 1Š9ˆ9Ý”(Ð,Ð.?È6Ð^bÐcˆCˆ
QŠYˆ”(Ð,Ð.?È6Ð^bÐcˆCˆ”< Ð,=Ô,CÐDˆDÝ %¤Ý д¸1¸t¹8Ñ1DÔ1DÑDÐFWÕZ_ÔZcÐdhÑZiÔZiÑFiÐð!ñ!ô!Ð õœÐ"3Ð5FÐRXÐeiÐjˆœÐ"3Ð5FÐRXÐeiÐjˆ˜Ñ# q¨4¡x°:Ñ&=Ñ=ˆ РؘT>ˆDØd”)ˆ ˜ Ò #Ø-3Ð-?3—779”9˜tŸxšx™zœzÑ)ÀSÇWÂWÁYÄYÐRU×RZÒRZÐ[\ÑR]ÔR]Ð`c×`hÒ`hÐijÑ`kÔ`kÑRkÑElÐ
˜
Ð
Ø—779”9Ð Ø
˜
Ð